@taylordb/query-builder 0.9.1 → 0.9.3

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.
Files changed (32) hide show
  1. package/dist/cjs/__tests__/query-builder.spec.js +126 -23
  2. package/dist/cjs/__tests__/query-builder.spec.js.map +1 -1
  3. package/dist/cjs/executor.d.ts +4 -1
  4. package/dist/cjs/executor.js +20 -35
  5. package/dist/cjs/executor.js.map +1 -1
  6. package/dist/cjs/query-builder.d.ts +7 -5
  7. package/dist/cjs/query-builder.js +31 -5
  8. package/dist/cjs/query-builder.js.map +1 -1
  9. package/dist/cjs/{subscription-manager.d.ts → socket-connection.d.ts} +5 -4
  10. package/dist/cjs/{subscription-manager.js → socket-connection.js} +55 -9
  11. package/dist/cjs/socket-connection.js.map +1 -0
  12. package/dist/cjs/with-resolver.d.ts +5 -0
  13. package/dist/cjs/with-resolver.js +17 -0
  14. package/dist/cjs/with-resolver.js.map +1 -0
  15. package/dist/esm/__tests__/query-builder.spec.js +126 -23
  16. package/dist/esm/__tests__/query-builder.spec.js.map +1 -1
  17. package/dist/esm/executor.d.ts +4 -1
  18. package/dist/esm/executor.js +20 -35
  19. package/dist/esm/executor.js.map +1 -1
  20. package/dist/esm/query-builder.d.ts +7 -5
  21. package/dist/esm/query-builder.js +29 -4
  22. package/dist/esm/query-builder.js.map +1 -1
  23. package/dist/esm/{subscription-manager.d.ts → socket-connection.d.ts} +5 -4
  24. package/dist/esm/{subscription-manager.js → socket-connection.js} +53 -7
  25. package/dist/esm/socket-connection.js.map +1 -0
  26. package/dist/esm/with-resolver.d.ts +5 -0
  27. package/dist/esm/with-resolver.js +14 -0
  28. package/dist/esm/with-resolver.js.map +1 -0
  29. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  30. package/package.json +3 -1
  31. package/dist/cjs/subscription-manager.js.map +0 -1
  32. package/dist/esm/subscription-manager.js.map +0 -1
@@ -1,13 +1,25 @@
1
+ import EventEmitter from 'eventemitter3';
1
2
  import jsonpatch from 'fast-json-patch';
2
3
  import { io } from 'socket.io-client';
3
- export class SubscriptionManager {
4
- executor;
4
+ import { withResolver } from './with-resolver.js';
5
+ const generateUUID = () => {
6
+ if (globalThis.crypto && globalThis.crypto.randomUUID) {
7
+ return globalThis.crypto.randomUUID();
8
+ }
9
+ // A simple fallback for environments without crypto.randomUUID
10
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
11
+ const r = (Math.random() * 16) | 0;
12
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
13
+ return v.toString(16);
14
+ });
15
+ };
16
+ export class SocketConnection extends EventEmitter {
5
17
  config;
6
18
  #socket = null;
7
19
  #subscriptions = new Map();
8
20
  #isConnecting = false;
9
- constructor(executor, config) {
10
- this.executor = executor;
21
+ constructor(config) {
22
+ super();
11
23
  this.config = config;
12
24
  }
13
25
  async #connect() {
@@ -23,6 +35,7 @@ export class SubscriptionManager {
23
35
  auth: {
24
36
  token: this.config.apiKey,
25
37
  'time-zone': this.config.timeZone || 'UTC',
38
+ schema: 'readable',
26
39
  'client-id': this.config.clientId,
27
40
  },
28
41
  query: {},
@@ -38,6 +51,9 @@ export class SubscriptionManager {
38
51
  this.#socket.on('connect_error', err => {
39
52
  reject(err);
40
53
  });
54
+ this.#socket.on('query-response', (response) => {
55
+ this.emit(response.queryId, response.data);
56
+ });
41
57
  });
42
58
  this.#socket.emit('subscribe', { clientId: this.config.clientId });
43
59
  }
@@ -45,6 +61,29 @@ export class SubscriptionManager {
45
61
  this.#isConnecting = false;
46
62
  }
47
63
  }
64
+ async rawRequest(query, variables, headers, transactionId) {
65
+ await this.#connect();
66
+ const queryId = generateUUID();
67
+ const { promise, resolve } = withResolver();
68
+ this.once(queryId, (response) => {
69
+ resolve(response);
70
+ });
71
+ if (!headers) {
72
+ headers = {};
73
+ }
74
+ headers = {
75
+ ...headers,
76
+ schema: 'readable',
77
+ };
78
+ this.emit('query', {
79
+ query,
80
+ variables,
81
+ queryId,
82
+ ...(transactionId ? { transactionId } : {}),
83
+ ...(headers ? { options: { ...headers } } : {}),
84
+ });
85
+ return promise;
86
+ }
48
87
  async subscribe(metadatas, callback) {
49
88
  await this.#connect();
50
89
  const param = metadatas.map(metadata => ({
@@ -53,7 +92,7 @@ export class SubscriptionManager {
53
92
  returns: ['patch', 'affectedFields'],
54
93
  },
55
94
  }));
56
- const result = await this.executor.rawRequest(`
95
+ const result = await this.rawRequest(`
57
96
  query ($param: [SubscriptionMetadataInput]!) {
58
97
  plugins {
59
98
  subscriptions {
@@ -88,7 +127,7 @@ export class SubscriptionManager {
88
127
  for (const id of subscriptionIds) {
89
128
  this.#subscriptions.delete(id);
90
129
  }
91
- await this.executor.rawRequest(`query RemoveSubscription ($subscriptionIds: [String]) {
130
+ await this.rawRequest(`query RemoveSubscription ($subscriptionIds: [String]) {
92
131
  plugins {
93
132
  subscriptions {
94
133
  unsubscribe(subscriptionIds: $subscriptionIds)
@@ -98,6 +137,13 @@ export class SubscriptionManager {
98
137
  },
99
138
  };
100
139
  }
140
+ emit(event, ...args) {
141
+ if (event === 'query') {
142
+ this.#socket?.emit('query', ...args);
143
+ return true;
144
+ }
145
+ return super.emit(event, ...args);
146
+ }
101
147
  #handlePatch(response) {
102
148
  for (const patch of response.patches) {
103
149
  const sub = this.#subscriptions.get(patch.subscriptionId);
@@ -110,4 +156,4 @@ export class SubscriptionManager {
110
156
  }
111
157
  }
112
158
  }
113
- //# sourceMappingURL=subscription-manager.js.map
159
+ //# sourceMappingURL=socket-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-connection.js","sourceRoot":"","sources":["../../src/socket-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function withResolver<T>(): {
2
+ promise: Promise<T>;
3
+ resolve: (value: T) => void;
4
+ reject: (reason?: any) => void;
5
+ };
@@ -0,0 +1,14 @@
1
+ export function withResolver() {
2
+ let resolve;
3
+ let reject;
4
+ const promise = new Promise((res, rej) => {
5
+ resolve = res;
6
+ reject = rej;
7
+ });
8
+ return {
9
+ promise,
10
+ resolve,
11
+ reject,
12
+ };
13
+ }
14
+ //# sourceMappingURL=with-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-resolver.js","sourceRoot":"","sources":["../../src/with-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,IAAI,OAA2B,CAAC;IAChC,IAAI,MAA8B,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,OAAO,GAAG,GAAG,CAAC;QACd,MAAM,GAAG,GAAG,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}