@nanolink/mirrors 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/DelegateMap.d.ts +23 -0
- package/dist/DelegateMap.js +21 -0
- package/dist/DelegateMap.js.map +1 -0
- package/dist/MirrorSync.d.ts +100 -0
- package/dist/MirrorSync.js +221 -0
- package/dist/MirrorSync.js.map +1 -0
- package/dist/SubscriptionClient.d.ts +77 -0
- package/dist/SubscriptionClient.js +201 -0
- package/dist/SubscriptionClient.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/mirrors.d.ts +38 -0
- package/dist/mirrors.js +1044 -0
- package/dist/mirrors.js.map +1 -0
- package/dist/proxy.d.ts +1 -0
- package/dist/proxy.js +18 -0
- package/dist/proxy.js.map +1 -0
- package/dist/test.d.ts +1 -0
- package/dist/test.js +73 -0
- package/dist/test.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../src/mirrors.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function enableGlobalProxy(proxyUrl?: string): void;
|
package/dist/proxy.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Simple helper to enable global proxy support using global-agent without modifying SubscriptionClient.
|
|
3
|
+
// Usage: set environment variable GLOBAL_AGENT_HTTP_PROXY (or HTTPS) before importing this file, or call enableGlobalProxy with a URL.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.enableGlobalProxy = enableGlobalProxy;
|
|
6
|
+
// We lazy require to avoid adding types; global-agent patches http(s) & ws fetches.
|
|
7
|
+
function enableGlobalProxy(proxyUrl) {
|
|
8
|
+
if (proxyUrl) {
|
|
9
|
+
process.env.GLOBAL_AGENT_HTTP_PROXY = proxyUrl;
|
|
10
|
+
}
|
|
11
|
+
if (global.__GLOBAL_AGENT_INITIALIZED__)
|
|
12
|
+
return;
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
14
|
+
const { bootstrap } = require('global-agent');
|
|
15
|
+
global.__GLOBAL_AGENT_INITIALIZED__ = true;
|
|
16
|
+
bootstrap();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":";AAAA,wGAAwG;AACxG,uIAAuI;;AAGvI,8CASC;AAVD,oFAAoF;AACpF,SAAgB,iBAAiB,CAAC,QAAiB;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,QAAQ,CAAC;IACjD,CAAC;IACD,IAAK,MAAc,CAAC,4BAA4B;QAAE,OAAO;IACzD,8DAA8D;IAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAc,CAAC,4BAA4B,GAAG,IAAI,CAAC;IACpD,SAAS,EAAE,CAAC;AACd,CAAC"}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
/**
|
|
7
|
+
* Entry point for the mirrors TypeScript project.
|
|
8
|
+
* Replace this placeholder logic with real application code.
|
|
9
|
+
*/
|
|
10
|
+
const proxy_1 = require("./proxy");
|
|
11
|
+
const SubscriptionClient_1 = require("./SubscriptionClient");
|
|
12
|
+
const MirrorSync_1 = require("./MirrorSync");
|
|
13
|
+
const mirrors_1 = require("./mirrors");
|
|
14
|
+
const axios_1 = __importDefault(require("axios"));
|
|
15
|
+
const server = process.env.SERVER_URL ?? "";
|
|
16
|
+
const accessToken = process.env.ACCESS_TOKEN ?? "";
|
|
17
|
+
const loginQuery = `{
|
|
18
|
+
auth_externallogin(logintoken: "${accessToken}") {
|
|
19
|
+
result
|
|
20
|
+
groupVersion
|
|
21
|
+
errors {
|
|
22
|
+
stackTrace
|
|
23
|
+
message
|
|
24
|
+
errorKey
|
|
25
|
+
detailDescription
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}`;
|
|
29
|
+
function performquery(url, query, variables, timeout, token) {
|
|
30
|
+
return axios_1.default.post(url, {
|
|
31
|
+
query: query,
|
|
32
|
+
variables: variables
|
|
33
|
+
}, {
|
|
34
|
+
timeout: timeout ?? 20000,
|
|
35
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
36
|
+
validateStatus: function (status) {
|
|
37
|
+
return (status >= 200 && status < 300) || status == 400 || status == 500;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async function main() {
|
|
42
|
+
// Enable proxy if GLOBAL_AGENT_HTTP_PROXY env var or CLI arg provided
|
|
43
|
+
const proxyArg = process.env.GLOBAL_AGENT_HTTP_PROXY || process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
|
|
44
|
+
if (proxyArg)
|
|
45
|
+
(0, proxy_1.enableGlobalProxy)(proxyArg);
|
|
46
|
+
let loginResult = await performquery(server, loginQuery, {});
|
|
47
|
+
if (loginResult.data.errors || !loginResult.data.data || !loginResult.data.data.auth_externallogin) {
|
|
48
|
+
console.error('Login failed', loginResult.data.errors ?? loginResult.data.data.auth_externallogin.errors);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
let token = loginResult.data.data.auth_externallogin.result;
|
|
52
|
+
let subClient = new SubscriptionClient_1.SubscriptionClient({
|
|
53
|
+
url: server,
|
|
54
|
+
connectionParams: { authToken: token },
|
|
55
|
+
maxReconnectAttempts: Infinity,
|
|
56
|
+
});
|
|
57
|
+
subClient.on('connecting', () => console.log('[events] connecting'));
|
|
58
|
+
subClient.on('connected', () => console.log('[events] connected'));
|
|
59
|
+
subClient.on('reconnected', () => console.log('[events] reconnected'));
|
|
60
|
+
subClient.on('retry', (i) => console.log('[events] retry', i));
|
|
61
|
+
subClient.on('disconnected', (i) => console.log('[events] disconnected', i));
|
|
62
|
+
subClient.on('error', (e) => console.error('[events] error', e));
|
|
63
|
+
subClient.connect();
|
|
64
|
+
const mirrorSync = new MirrorSync_1.MirrorSync(subClient, { subscription: mirrors_1.Subscriptions.references });
|
|
65
|
+
mirrorSync.on('updated', (info) => { if (info.__typename === 'QMUser')
|
|
66
|
+
console.log('MirrorSync update', info); });
|
|
67
|
+
await mirrorSync.load();
|
|
68
|
+
console.log('MirrorSync loaded');
|
|
69
|
+
}
|
|
70
|
+
if (require.main === module) {
|
|
71
|
+
main();
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;;;AAAA;;;GAGG;AACH,mCAA4C;AAC5C,6DAA0D;AAC1D,6CAA0C;AAC1C,uCAA0C;AAC1C,kDAA0B;AAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAA;AAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAA;AAGlD,MAAM,UAAU,GAAG;sCACmB,WAAW;;;;;;;;;;EAU/C,CAAA;AAEF,SAAS,YAAY,CAAC,GAAW,EAAE,KAAa,EAAE,SAAc,EAAE,OAAgB,EAAE,KAAc;IAC9F,OAAO,eAAK,CAAC,IAAI,CACb,GAAG,EACH;QACI,KAAK,EAAE,KAAK;QACZ,SAAS,EAAE,SAAS;KACvB,EACD;QACI,OAAO,EAAE,OAAO,IAAI,KAAK;QACzB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;QAC7C,cAAc,EAAE,UAAU,MAAM;YAC5B,OAAO,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,CAAA;QAC5E,CAAC;KACJ,CACJ,CAAA;AACL,CAAC;AAED,KAAK,UAAU,IAAI;IACf,sEAAsE;IACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IAC1G,IAAI,QAAQ;QAAE,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,WAAW,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAG,CAAC;QAClG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1G,OAAO;IACX,CAAC;IACD,IAAI,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;IAE5D,IAAI,SAAS,GAAG,IAAI,uCAAkB,CAAC;QACnC,GAAG,EAAE,MAAM;QACX,gBAAgB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;QACtC,oBAAoB,EAAE,QAAQ;KACjC,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACrE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACnE,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACvE,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAsB,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAsD,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC;IAClI,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,uBAAa,CAAC,UAAU,EAAE,CAAC,CAAC;IACzF,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElH,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;AACrC,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC1B,IAAI,EAAE,CAAC;AACX,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nanolink/mirrors",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "GraphQL subscription client + mirror synchronization utilities.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Nanolink ApS, Mogens Bak Nielsen",
|
|
7
|
+
"type": "commonjs",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"clean": "rimraf dist",
|
|
12
|
+
"build": "npm run clean && tsc -p .",
|
|
13
|
+
"dev": "tsx watch src/index.ts",
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"typecheck": "tsc -p . --noEmit",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"publish:dry": "npm publish --dry-run",
|
|
18
|
+
"release": "npm run build && npm publish --access public",
|
|
19
|
+
"test": "echo \"No tests\""
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/node": "^24.4.0",
|
|
23
|
+
"tsx": "^4.20.5",
|
|
24
|
+
"typescript": "^5.9.2",
|
|
25
|
+
"rimraf": "^5.0.5"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@types/ws": "^8.18.1",
|
|
29
|
+
"axios": "^1.12.2",
|
|
30
|
+
"graphql-ws": "^6.0.6",
|
|
31
|
+
"ws": "^8.18.3",
|
|
32
|
+
"global-agent": "^3.0.0",
|
|
33
|
+
"eventemitter3": "^5.0.1"
|
|
34
|
+
},
|
|
35
|
+
"files": [
|
|
36
|
+
"dist",
|
|
37
|
+
"README.md",
|
|
38
|
+
"LICENSE"
|
|
39
|
+
],
|
|
40
|
+
"exports": {
|
|
41
|
+
".": {
|
|
42
|
+
"require": "./dist/index.js",
|
|
43
|
+
"import": "./dist/index.js",
|
|
44
|
+
"types": "./dist/index.d.ts"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"sideEffects": false,
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": ""
|
|
51
|
+
},
|
|
52
|
+
"keywords": [
|
|
53
|
+
"graphql",
|
|
54
|
+
"subscriptions",
|
|
55
|
+
"cache",
|
|
56
|
+
"mirror",
|
|
57
|
+
"client"
|
|
58
|
+
]
|
|
59
|
+
}
|