@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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mirrors.js","sourceRoot":"","sources":["../src/mirrors.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
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
+ }