screepers / node-screeps-api Goto Github PK
View Code? Open in Web Editor NEWNode.js API For screeps
License: ISC License
Node.js API For screeps
License: ISC License
The current version of axios has a known moderate vulnerability, documented here. It's also grossly out of date, in general.
The link in the docs http://support.screeps.com/hc/en-us/articles/203022612 is broken.
(1) I am trying to get this library working on a React.js App. The first issue I was facing is the problem with it not getting resolved because the package.json contains this in a line: "module": "src/index.js"
. I solved that by downloading this repository as a zip and copying the src folder into the screeps-api folder in my projects node_modules folder.
(2) Now I am facing the issue that your script turns my React.js App white as soon I try to import ScreepsAPI from the package. This implies there is a syntax error. Could you perhaps make this compatible with React.js? It happens as soon I try to import ScreepsAPI using import { ScreepsAPI } from 'screeps-api';
.
I am using Vite.js for development. But should happen on React.js in general.
api.socket.connect()
Reconnect goes mental:
screepsapi:socket disconnected +695ms
screepsapi:socket error Error: connect ECONNREFUSED 192.168.8.2:21025 +112ms
screepsapi:socket disconnected +0ms
screepsapi:socket reconnect 1/10 +1ms
screepsapi:socket error Error: connect ECONNREFUSED 192.168.8.2:21025 +109ms
screepsapi:socket disconnected +0ms
screepsapi:socket reconnect 1/10 +0ms
screepsapi:socket error Error: connect ECONNREFUSED 192.168.8.2:21025 +99ms
screepsapi:socket disconnected +1ms
screepsapi:socket reconnect 2/10 +0ms
screepsapi:socket error Error: connect ECONNREFUSED 192.168.8.2:21025 +6ms
screepsapi:socket disconnected +1ms
screepsapi:socket reconnect 1/10 +0ms
screepsapi:socket error Error: WebSocket was closed before the connection was established +104ms
screepsapi:socket error Error: connect ECONNREFUSED 192.168.8.2:21025 +0ms
screepsapi:socket disconnected +0ms
screepsapi:socket disconnected +1ms
screepsapi:socket reconnect 1/10 +0ms
screepsapi:socket reconnect 1/10 +0ms
What's happening is that the socket close event is being fired immediately when the connection fails, which triggers another call to this.reconnect()
, but it never checks to see if it's currently reconnecting and so retries immediately each time. Additionally, the close
event fires before the disconnect
event which cleans up the event listeners so the original reconnection "thread" often makes at least one retry before its listeners are killed, with each retry guaranteeing at least one extra connection attempt. It's not quite a fork bomb, but it slowly accumulates more simultanous connection attempts as time goes on.
I'm working on a PR to fix this but welcome any comments about how this should be fixed.
forced dependency to get v1.0 because I wanted to play with it "screeps-api": "screepers/node-screeps-api#v1.0",
test console.js
const ScreepsAPI = require('screeps-api')
const creds = require('./creds')
const api = new ScreepsAPI(creds)
PS D:\Dropbox\git\screep.serfinity> node console
module.js:471
throw err;
^
Error: Cannot find module './build/'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (D:\Dropbox\git\screep.serfinity\node_modules\screeps-api\index.js:1:80)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
I understand it's not done, but just reporting
Maybe a change in the api means that the leaderboards.list() function returns an error. Needs parameters to be specified in the RAWapi possibly?
screepsApi.socket.subscribe('memory/stats',(event)=>{
console.log('stats', JSON.stringify(event))
})
Results in
stats {"channel":"memory/stats","id":"57909b057d880b5773e95d25","type":"user","data":"[object Object]"}
I double checked that my memory indeed contains an object at that memory path, not this string.
Is this how it's returned from the screeps server or is node-screeps-api doing something weird?
error: Error: Rate limit exceeded, retry after 7075614ms or disable rate limiting using this link: https://screeps.com/a/#!/account/auth-tokens/noratelimit?token=9700ca14
at ScreepsAPI.req (/Users/yanglei/Documents/GitHub/bubble-screeps/node_modules/screeps-api/dist/ScreepsAPI.js:609:13)
trying to integrate updating my badge into my deployment i ran into the following issue:
i wanted to integrate the badge update script in a way that it uses the screeps.json that is being used by the ts-starter rollup configuration. so my config looked something like this:
"pserver": {
"email": "qnz",
"password": "test",
"protocol": "http",
"hostname": "localhost",
"port": 21025,
"path": "/",
"branch": "default"
}}
i then authenticated using the pserver object that got parsed from json like so:
const api = new ScreepsAPI(cfg[dest]);
api.auth(cfg[dest].email, cfg[dest].password, cfg[dest]);
the auth would fail and everything else would be http401. api.__authed was undefined, api.opts were set correctly
__authed: undefined
opts: {"protocol":"http","hostname":"127.0.0.1","port":21025,"path":"/","email":"qnz","password":"test","branch":"default","secure":false,"pathname":"/","url":"http://127.0.0.1:21025/"}
(node:388524) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Not Authorized
i got it working like this though:
const api = new ScreepsAPI(cfg[dest]);
api.auth(cfg[dest].email, cfg[dest].password, cfg[dest]);
const res = await api.raw.auth.signin(cfg[dest].email, cfg[dest].password);
the raw call somehow worked perfectly fine, and subsequent calls would work fine too. (the "OK." is the end of my script)
__authed: undefined
opts: {"protocol":"http","hostname":"127.0.0.1","port":21025,"path":"/","email":"qnz","password":"test","branch":"default","secure":false,"pathname":"/","url":"http://127.0.0.1:21025/"}
OK.
im not quite sure whether this is a bug or whether i did something wrong, but i debugged this for a while and i suspect it is some weirdness in screeps-api (maybe its related to api.__authed staying undefined?). could not really find the cause sadly so im reporting it here
some version numbers:
if I manually update the lock file to use version 4 of the package, the install is successful. Please update utf-8-validate
I've been trying this library to push code to the PTR, but the path
option is being ignored.
I think I've located the bug in RawAPI.js
, line 300. The url
package is probably not working as intended since it is ignoring the relative path in the first parameter.
I think we can work around this issue appending the opts.path to the second parameter of the resolve function.
I'm planning to write a Google Function to:
Memory.events
periodicallyIs it possible to retrieve Memory.events
(it appears to be based on the docs) and then empty Memory.events
(did spot this in Endpoints.md)
Thanks for your help
Installing on node12 results in build errors from bufferutil -> nan
. Updating to [email protected]
should fix it.
In file included from ../../nan/nan_new.h:189,
from ../../nan/nan.h:203,
from ../src/bufferutil.cc:7:
../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::Function>::return_t Nan::imp::Factory<v8::Function>::New(Nan::FunctionCallback, v8::Local<v8::Value>)’:
../../nan/nan_implementation_12_inl.h:105:32: error: no matching function for call to ‘v8::Function::New(v8::Isolate*&, void (&)(const v8::FunctionCallbackInfo<v8::Value>&), v8::Local<v8::Object>&)’
, obj));
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.