@kaspernj/api-maker 1.0.2121 → 1.0.2123

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/README.md CHANGED
@@ -8,6 +8,10 @@ Client-side library for ApiMaker-powered Rails APIs. It provides model classes,
8
8
  npm install @kaspernj/api-maker
9
9
  ```
10
10
 
11
+ When working on this package locally, `npm install` uses the checked-in [`.npmrc`](/home/dev/Development/api_maker/npm-api-maker/.npmrc) with `legacy-peer-deps=true`. This keeps the ESLint 10 toolchain installable until `eslint-plugin-react` publishes an ESLint 10 peer range.
12
+
13
+ Peer-provided runtime packages that `npm-api-maker` imports in its own source, tests, or linked local/CI builds stay installed in this repo's `devDependencies` as well. For example, `react-native-vector-icons`, `flash-notifications`, `history`, and `i18n-on-steroids` are still peer-facing for consumers, but they must also exist locally when webpack, ESLint, or Jest resolves modules from the package directory itself.
14
+
11
15
  ## Quick start
12
16
 
13
17
  ApiMaker models are generated from `model-recipes.json` (usually emitted by the Rails gem). Import the models and set up the shared config before making requests.
@@ -98,6 +102,47 @@ The relationship name is stored in `snake_case`, so `preloadRelationship("Accoun
98
102
 
99
103
  `config` is a shared singleton. Some helpers (forms, routing, navigation, and money inputs) require config values like `history`, `linkTo`, `navigation`, and `currenciesCollection` to be set. If a required value is missing, the getter throws an error to avoid silent failures.
100
104
 
105
+ ### Websocket requests
106
+
107
+ ApiMaker can send commands and services over ActionCable instead of the HTTP commands endpoint:
108
+
109
+ ```js
110
+ import config from "@kaspernj/api-maker/build/config.js"
111
+
112
+ config.setWebsocketRequests(true)
113
+ ```
114
+
115
+ This keeps request/response traffic on the shared websocket connection and lets the client reuse websocket-side request deduping and response caching.
116
+
117
+ When a command runs over websocket, the returned value is an awaitable command handle. It behaves like a promise, so existing code still works:
118
+
119
+ ```js
120
+ const result = await User.customCommand({message: "Hello world"})
121
+ ```
122
+
123
+ The same handle also exposes progress and log hooks for long-running commands:
124
+
125
+ ```js
126
+ const command = User.customCommand({message: "Hello world"})
127
+
128
+ command.onReceived(() => console.log("received"))
129
+ command.onProgress(({progress, count, total}) => console.log(progress, count, total))
130
+ command.onLog((message) => console.log(message))
131
+
132
+ const result = await command
133
+ const latestProgress = await command.progress()
134
+ const logs = command.logs()
135
+ ```
136
+
137
+ On the Ruby side, websocket-backed commands and services can report progress through `current_command`:
138
+
139
+ ```ruby
140
+ current_command.total = 10
141
+ current_command.log("Starting")
142
+ current_command.increment!
143
+ current_command.progress = 0.5
144
+ ```
145
+
101
146
  ## Realtime model events
102
147
 
103
148
  For model-specific websocket events in React/ShapeComponent UI code, prefer `useModelEvent` over manual `ModelEvents.connect(...)` subscriptions. The hook handles subscription lifecycle automatically and avoids leaked listeners.
@@ -1,3 +1,4 @@
1
1
  declare function _default(): any;
2
2
  export default _default;
3
+ export function resetChannelsConsumer(): void;
3
4
  //# sourceMappingURL=channels-consumer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels-consumer.d.ts","sourceRoot":"/src/","sources":["channels-consumer.js"],"names":[],"mappings":"AAKe,6BADD,GAAG,CAQhB"}
1
+ {"version":3,"file":"channels-consumer.d.ts","sourceRoot":"/src/","sources":["channels-consumer.js"],"names":[],"mappings":"AAKe,6BADD,GAAG,CAOhB;;AAGM,yCADO,IAAI,CAQjB"}
@@ -4,9 +4,16 @@ import { createConsumer } from "@rails/actioncable"; // eslint-disable-line impo
4
4
  /** @returns {any} */
5
5
  export default () => {
6
6
  if (!globalThis.apiMakerChannelsConsumer) {
7
- // @ts-expect-error
8
7
  globalThis.apiMakerChannelsConsumer = createConsumer(Config.getCableUrl());
9
8
  }
10
9
  return globalThis.apiMakerChannelsConsumer;
11
10
  };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMtY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNoYW5uZWxzLWNvbnN1bWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxtQkFBbUI7QUFDbkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFBLENBQUMsMkNBQTJDO0FBRTdGLHFCQUFxQjtBQUNyQixlQUFlLEdBQUcsRUFBRTtJQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsbUJBQW1CO1FBQ25CLFVBQVUsQ0FBQyx3QkFBd0IsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDNUUsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUFBO0FBQzVDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb25maWcgZnJvbSBcIi4vY29uZmlnLmpzXCJcbi8vIEB0cy1leHBlY3QtZXJyb3JcbmltcG9ydCB7Y3JlYXRlQ29uc3VtZXJ9IGZyb20gXCJAcmFpbHMvYWN0aW9uY2FibGVcIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby11bnJlc29sdmVkXG5cbi8qKiBAcmV0dXJucyB7YW55fSAqL1xuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xuICBpZiAoIWdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIGdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyID0gY3JlYXRlQ29uc3VtZXIoQ29uZmlnLmdldENhYmxlVXJsKCkpXG4gIH1cblxuICByZXR1cm4gZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXJcbn1cbiJdfQ==
11
+ /** @returns {void} */
12
+ export const resetChannelsConsumer = () => {
13
+ if (!globalThis.apiMakerChannelsConsumer) {
14
+ return;
15
+ }
16
+ globalThis.apiMakerChannelsConsumer.disconnect();
17
+ delete globalThis.apiMakerChannelsConsumer;
18
+ };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbHMtY29uc3VtZXIuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNoYW5uZWxzLWNvbnN1bWVyLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxtQkFBbUI7QUFDbkIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG9CQUFvQixDQUFBLENBQUMsMkNBQTJDO0FBRTdGLHFCQUFxQjtBQUNyQixlQUFlLEdBQUcsRUFBRTtJQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsVUFBVSxDQUFDLHdCQUF3QixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM1RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUE7QUFDNUMsQ0FBQyxDQUFBO0FBRUQsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtJQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDekMsT0FBTTtJQUNSLENBQUM7SUFFRCxVQUFVLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDaEQsT0FBTyxVQUFVLENBQUMsd0JBQXdCLENBQUE7QUFDNUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbmZpZyBmcm9tIFwiLi9jb25maWcuanNcIlxuLy8gQHRzLWV4cGVjdC1lcnJvclxuaW1wb3J0IHtjcmVhdGVDb25zdW1lcn0gZnJvbSBcIkByYWlscy9hY3Rpb25jYWJsZVwiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgaW1wb3J0L25vLXVucmVzb2x2ZWRcblxuLyoqIEByZXR1cm5zIHthbnl9ICovXG5leHBvcnQgZGVmYXVsdCAoKSA9PiB7XG4gIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXIpIHtcbiAgICBnbG9iYWxUaGlzLmFwaU1ha2VyQ2hhbm5lbHNDb25zdW1lciA9IGNyZWF0ZUNvbnN1bWVyKENvbmZpZy5nZXRDYWJsZVVybCgpKVxuICB9XG5cbiAgcmV0dXJuIGdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyXG59XG5cbi8qKiBAcmV0dXJucyB7dm9pZH0gKi9cbmV4cG9ydCBjb25zdCByZXNldENoYW5uZWxzQ29uc3VtZXIgPSAoKSA9PiB7XG4gIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXIpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGdsb2JhbFRoaXMuYXBpTWFrZXJDaGFubmVsc0NvbnN1bWVyLmRpc2Nvbm5lY3QoKVxuICBkZWxldGUgZ2xvYmFsVGhpcy5hcGlNYWtlckNoYW5uZWxzQ29uc3VtZXJcbn1cbiJdfQ==
@@ -0,0 +1,71 @@
1
+ /** Shared thenable command handle with progress and log subscriptions. */
2
+ export default class ApiMakerCommandExecution {
3
+ logListeners: any[];
4
+ logsData: any[];
5
+ progressListeners: any[];
6
+ receivedListeners: any[];
7
+ progressPromise: Promise<any>;
8
+ resolveProgressPromise: (value: any) => void;
9
+ receivedPromise: Promise<any>;
10
+ resolveReceivedPromise: (value: any) => void;
11
+ resultPromise: Promise<any>;
12
+ resolveResultPromise: (value: any) => void;
13
+ rejectResultPromise: (reason?: any) => void;
14
+ /**
15
+ * @param {(value: Record<string, any>) => void} callback
16
+ * @returns {() => void}
17
+ */
18
+ onReceived(callback: (value: Record<string, any>) => void): () => void;
19
+ /**
20
+ * @param {(value: Record<string, any> | undefined) => void} callback
21
+ * @returns {() => void}
22
+ */
23
+ onProgress(callback: (value: Record<string, any> | undefined) => void): () => void;
24
+ /**
25
+ * @param {(value: string) => void} callback
26
+ * @returns {() => void}
27
+ */
28
+ onLog(callback: (value: string) => void): () => void;
29
+ /** @returns {Promise<Record<string, any> | undefined>} */
30
+ progress(): Promise<Record<string, any> | undefined>;
31
+ /** @returns {Promise<Record<string, any> | undefined>} */
32
+ received(): Promise<Record<string, any> | undefined>;
33
+ /** @returns {string[]} */
34
+ logs(): string[];
35
+ /** @returns {Promise<any>} */
36
+ result(): Promise<any>;
37
+ /** @returns {Promise<any>} */
38
+ then(...args: any[]): Promise<any>;
39
+ /** @returns {Promise<any>} */
40
+ catch(...args: any[]): Promise<any>;
41
+ /** @returns {Promise<any>} */
42
+ finally(...args: any[]): Promise<any>;
43
+ /**
44
+ * @param {Record<string, any>} data
45
+ * @returns {void}
46
+ */
47
+ setReceived(data: Record<string, any>): void;
48
+ receivedData: Record<string, any>;
49
+ /**
50
+ * @param {Record<string, any>} data
51
+ * @returns {void}
52
+ */
53
+ setProgress(data: Record<string, any>): void;
54
+ progressData: Record<string, any>;
55
+ /**
56
+ * @param {string} message
57
+ * @returns {void}
58
+ */
59
+ addLog(message: string): void;
60
+ /**
61
+ * @param {any} value
62
+ * @returns {void}
63
+ */
64
+ resolve(value: any): void;
65
+ /**
66
+ * @param {any} error
67
+ * @returns {void}
68
+ */
69
+ reject(error: any): void;
70
+ }
71
+ //# sourceMappingURL=command-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-execution.d.ts","sourceRoot":"/src/","sources":["command-execution.js"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E;IAGI,oBAAsB;IACtB,gBAAkB;IAClB,yBAA2B;IAC3B,yBAA2B;IAE3B,8BAEE;IADA,6CAAqC;IAEvC,8BAEE;IADA,6CAAqC;IAEvC,4BAGE;IAFA,2CAAmC;IACnC,4CAAiC;IAIrC;;;OAGG;IACH,qBAHW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAClC,MAAM,IAAI,CAYtB;IAED;;;OAGG;IACH,qBAHW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,KAAK,IAAI,GAC9C,MAAM,IAAI,CAYtB;IAED;;;OAGG;IACH,gBAHW,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACrB,MAAM,IAAI,CAYtB;IAED,0DAA0D;IAC1D,YADc,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAGrD;IAED,0DAA0D;IAC1D,YADc,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAGrD;IAED,0BAA0B;IAC1B,QADc,MAAM,EAAE,CAGrB;IAED,8BAA8B;IAC9B,UADc,OAAO,CAAC,GAAG,CAAC,CAGzB;IAED,8BAA8B;IAC9B,sBADc,OAAO,CAAC,GAAG,CAAC,CAGzB;IAED,8BAA8B;IAC9B,uBADc,OAAO,CAAC,GAAG,CAAC,CAGzB;IAED,8BAA8B;IAC9B,yBADc,OAAO,CAAC,GAAG,CAAC,CAGzB;IAED;;;OAGG;IACH,kBAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,IAAI,CAShB;IANC,kCAAwB;IAQ1B;;;OAGG;IACH,kBAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACjB,IAAI,CAShB;IANC,kCAAwB;IAQ1B;;;OAGG;IACH,gBAHW,MAAM,GACJ,IAAI,CAQhB;IAED;;;OAGG;IACH,eAHW,GAAG,GACD,IAAI,CAMhB;IAED;;;OAGG;IACH,cAHW,GAAG,GACD,IAAI,CAMhB;CACF"}
@@ -0,0 +1,138 @@
1
+ /** Shared thenable command handle with progress and log subscriptions. */
2
+ export default class ApiMakerCommandExecution {
3
+ /** Constructor. */
4
+ constructor() {
5
+ this.logListeners = [];
6
+ this.logsData = [];
7
+ this.progressListeners = [];
8
+ this.receivedListeners = [];
9
+ this.progressPromise = new Promise((resolve) => {
10
+ this.resolveProgressPromise = resolve;
11
+ });
12
+ this.receivedPromise = new Promise((resolve) => {
13
+ this.resolveReceivedPromise = resolve;
14
+ });
15
+ this.resultPromise = new Promise((resolve, reject) => {
16
+ this.resolveResultPromise = resolve;
17
+ this.rejectResultPromise = reject;
18
+ });
19
+ }
20
+ /**
21
+ * @param {(value: Record<string, any>) => void} callback
22
+ * @returns {() => void}
23
+ */
24
+ onReceived(callback) {
25
+ this.receivedListeners.push(callback);
26
+ if (this.receivedData) {
27
+ callback(this.receivedData);
28
+ }
29
+ return () => {
30
+ this.receivedListeners = this.receivedListeners.filter((listener) => listener !== callback);
31
+ };
32
+ }
33
+ /**
34
+ * @param {(value: Record<string, any> | undefined) => void} callback
35
+ * @returns {() => void}
36
+ */
37
+ onProgress(callback) {
38
+ this.progressListeners.push(callback);
39
+ if (this.progressData) {
40
+ callback(this.progressData);
41
+ }
42
+ return () => {
43
+ this.progressListeners = this.progressListeners.filter((listener) => listener !== callback);
44
+ };
45
+ }
46
+ /**
47
+ * @param {(value: string) => void} callback
48
+ * @returns {() => void}
49
+ */
50
+ onLog(callback) {
51
+ this.logListeners.push(callback);
52
+ for (const message of this.logsData) {
53
+ callback(message);
54
+ }
55
+ return () => {
56
+ this.logListeners = this.logListeners.filter((listener) => listener !== callback);
57
+ };
58
+ }
59
+ /** @returns {Promise<Record<string, any> | undefined>} */
60
+ progress() {
61
+ return this.progressData ? Promise.resolve(this.progressData) : this.progressPromise;
62
+ }
63
+ /** @returns {Promise<Record<string, any> | undefined>} */
64
+ received() {
65
+ return this.receivedData ? Promise.resolve(this.receivedData) : this.receivedPromise;
66
+ }
67
+ /** @returns {string[]} */
68
+ logs() {
69
+ return [...this.logsData];
70
+ }
71
+ /** @returns {Promise<any>} */
72
+ result() {
73
+ return this.resultPromise;
74
+ }
75
+ /** @returns {Promise<any>} */
76
+ then(...args) {
77
+ return this.resultPromise.then(...args);
78
+ }
79
+ /** @returns {Promise<any>} */
80
+ catch(...args) {
81
+ return this.resultPromise.catch(...args);
82
+ }
83
+ /** @returns {Promise<any>} */
84
+ finally(...args) {
85
+ return this.resultPromise.finally(...args);
86
+ }
87
+ /**
88
+ * @param {Record<string, any>} data
89
+ * @returns {void}
90
+ */
91
+ setReceived(data) {
92
+ this.receivedData = data;
93
+ this.resolveReceivedPromise?.(data);
94
+ for (const listener of this.receivedListeners) {
95
+ listener(data);
96
+ }
97
+ }
98
+ /**
99
+ * @param {Record<string, any>} data
100
+ * @returns {void}
101
+ */
102
+ setProgress(data) {
103
+ this.progressData = data;
104
+ this.resolveProgressPromise?.(data);
105
+ for (const listener of this.progressListeners) {
106
+ listener(data);
107
+ }
108
+ }
109
+ /**
110
+ * @param {string} message
111
+ * @returns {void}
112
+ */
113
+ addLog(message) {
114
+ this.logsData.push(message);
115
+ for (const listener of this.logListeners) {
116
+ listener(message);
117
+ }
118
+ }
119
+ /**
120
+ * @param {any} value
121
+ * @returns {void}
122
+ */
123
+ resolve(value) {
124
+ this.resolveProgressPromise?.(this.progressData);
125
+ this.resolveReceivedPromise?.(this.receivedData);
126
+ this.resolveResultPromise(value);
127
+ }
128
+ /**
129
+ * @param {any} error
130
+ * @returns {void}
131
+ */
132
+ reject(error) {
133
+ this.resolveProgressPromise?.(this.progressData);
134
+ this.resolveReceivedPromise?.(this.receivedData);
135
+ this.rejectResultPromise(error);
136
+ }
137
+ }
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImNvbW1hbmQtZXhlY3V0aW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsT0FBTyxPQUFPLHdCQUF3QjtJQUMzQyxtQkFBbUI7SUFDbkI7UUFDRSxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQTtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFBO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUE7UUFFM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxPQUFPLENBQUE7UUFDdkMsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FBQTtRQUN2QyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQTtZQUNuQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFBO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBRSxRQUFRO1FBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFckMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZ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Q2hCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxDQUFFLElBQUk7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVuQyxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzlDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBRSxPQUFPO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFM0IsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFFLEtBQUs7UUFDWixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFFLEtBQUs7UUFDWCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ2hELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2hhcmVkIHRoZW5hYmxlIGNvbW1hbmQgaGFuZGxlIHdpdGggcHJvZ3Jlc3MgYW5kIGxvZyBzdWJzY3JpcHRpb25zLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb21tYW5kRXhlY3V0aW9uIHtcbiAgLyoqIENvbnN0cnVjdG9yLiAqL1xuICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgdGhpcy5sb2dMaXN0ZW5lcnMgPSBbXVxuICAgIHRoaXMubG9nc0RhdGEgPSBbXVxuICAgIHRoaXMucHJvZ3Jlc3NMaXN0ZW5lcnMgPSBbXVxuICAgIHRoaXMucmVjZWl2ZWRMaXN0ZW5lcnMgPSBbXVxuXG4gICAgdGhpcy5wcm9ncmVzc1Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvZ3Jlc3NQcm9taXNlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgdGhpcy5yZWNlaXZlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlUmVjZWl2ZWRQcm9taXNlID0gcmVzb2x2ZVxuICAgIH0pXG4gICAgdGhpcy5yZXN1bHRQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdGhpcy5yZXNvbHZlUmVzdWx0UHJvbWlzZSA9IHJlc29sdmVcbiAgICAgIHRoaXMucmVqZWN0UmVzdWx0UHJvbWlzZSA9IHJlamVjdFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsodmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHZvaWR9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHsoKSA9PiB2b2lkfVxuICAgKi9cbiAgb25SZWNlaXZlZCAoY2FsbGJhY2spIHtcbiAgICB0aGlzLnJlY2VpdmVkTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spXG5cbiAgICBpZiAodGhpcy5yZWNlaXZlZERhdGEpIHtcbiAgICAgIGNhbGxiYWNrKHRoaXMucmVjZWl2ZWREYXRhKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLnJlY2VpdmVkTGlzdGVuZXJzID0gdGhpcy5yZWNlaXZlZExpc3RlbmVycy5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lciAhPT0gY2FsbGJhY2spXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7KHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkKSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7KCkgPT4gdm9pZH1cbiAgICovXG4gIG9uUHJvZ3Jlc3MgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5wcm9ncmVzc0xpc3RlbmVycy5wdXNoKGNhbGxiYWNrKVxuXG4gICAgaWYgKHRoaXMucHJvZ3Jlc3NEYXRhKSB7XG4gICAgICBjYWxsYmFjayh0aGlzLnByb2dyZXNzRGF0YSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9ncmVzc0xpc3RlbmVycyA9IHRoaXMucHJvZ3Jlc3NMaXN0ZW5lcnMuZmlsdGVyKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIgIT09IGNhbGxiYWNrKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7KCkgPT4gdm9pZH1cbiAgICovXG4gIG9uTG9nIChjYWxsYmFjaykge1xuICAgIHRoaXMubG9nTGlzdGVuZXJzLnB1c2goY2FsbGJhY2spXG5cbiAgICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgdGhpcy5sb2dzRGF0YSkge1xuICAgICAgY2FsbGJhY2sobWVzc2FnZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5sb2dMaXN0ZW5lcnMgPSB0aGlzLmxvZ0xpc3RlbmVycy5maWx0ZXIoKGxpc3RlbmVyKSA9PiBsaXN0ZW5lciAhPT0gY2FsbGJhY2spXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQ+fSAqL1xuICBwcm9ncmVzcyAoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3Jlc3NEYXRhID8gUHJvbWlzZS5yZXNvbHZlKHRoaXMucHJvZ3Jlc3NEYXRhKSA6IHRoaXMucHJvZ3Jlc3NQcm9taXNlXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8UmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZD59ICovXG4gIHJlY2VpdmVkICgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWNlaXZlZERhdGEgPyBQcm9taXNlLnJlc29sdmUodGhpcy5yZWNlaXZlZERhdGEpIDogdGhpcy5yZWNlaXZlZFByb21pc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nW119ICovXG4gIGxvZ3MgKCkge1xuICAgIHJldHVybiBbLi4udGhpcy5sb2dzRGF0YV1cbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSAqL1xuICByZXN1bHQgKCkge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFByb21pc2VcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fSAqL1xuICB0aGVuICguLi5hcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzdWx0UHJvbWlzZS50aGVuKC4uLmFyZ3MpXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8YW55Pn0gKi9cbiAgY2F0Y2ggKC4uLmFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5yZXN1bHRQcm9taXNlLmNhdGNoKC4uLmFyZ3MpXG4gIH1cblxuICAvKiogQHJldHVybnMge1Byb21pc2U8YW55Pn0gKi9cbiAgZmluYWxseSAoLi4uYXJncykge1xuICAgIHJldHVybiB0aGlzLnJlc3VsdFByb21pc2UuZmluYWxseSguLi5hcmdzKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gZGF0YVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNldFJlY2VpdmVkIChkYXRhKSB7XG4gICAgdGhpcy5yZWNlaXZlZERhdGEgPSBkYXRhXG4gICAgdGhpcy5yZXNvbHZlUmVjZWl2ZWRQcm9taXNlPy4oZGF0YSlcblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgdGhpcy5yZWNlaXZlZExpc3RlbmVycykge1xuICAgICAgbGlzdGVuZXIoZGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBkYXRhXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0UHJvZ3Jlc3MgKGRhdGEpIHtcbiAgICB0aGlzLnByb2dyZXNzRGF0YSA9IGRhdGFcbiAgICB0aGlzLnJlc29sdmVQcm9ncmVzc1Byb21pc2U/LihkYXRhKVxuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLnByb2dyZXNzTGlzdGVuZXJzKSB7XG4gICAgICBsaXN0ZW5lcihkYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIGFkZExvZyAobWVzc2FnZSkge1xuICAgIHRoaXMubG9nc0RhdGEucHVzaChtZXNzYWdlKVxuXG4gICAgZm9yIChjb25zdCBsaXN0ZW5lciBvZiB0aGlzLmxvZ0xpc3RlbmVycykge1xuICAgICAgbGlzdGVuZXIobWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IHZhbHVlXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgcmVzb2x2ZSAodmFsdWUpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9ncmVzc1Byb21pc2U/Lih0aGlzLnByb2dyZXNzRGF0YSlcbiAgICB0aGlzLnJlc29sdmVSZWNlaXZlZFByb21pc2U/Lih0aGlzLnJlY2VpdmVkRGF0YSlcbiAgICB0aGlzLnJlc29sdmVSZXN1bHRQcm9taXNlKHZhbHVlKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSBlcnJvclxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHJlamVjdCAoZXJyb3IpIHtcbiAgICB0aGlzLnJlc29sdmVQcm9ncmVzc1Byb21pc2U/Lih0aGlzLnByb2dyZXNzRGF0YSlcbiAgICB0aGlzLnJlc29sdmVSZWNlaXZlZFByb21pc2U/Lih0aGlzLnJlY2VpdmVkRGF0YSlcbiAgICB0aGlzLnJlamVjdFJlc3VsdFByb21pc2UoZXJyb3IpXG4gIH1cbn1cbiJdfQ==
@@ -14,19 +14,23 @@ export default class ApiMakerCommandsPool {
14
14
  currentId: number;
15
15
  /** @type {Record<string, any>} */
16
16
  globalRequestData: Record<string, any>;
17
+ /** @type {Record<string, any>} */
18
+ requestOptions: Record<string, any>;
17
19
  /** addCommand. */
18
- addCommand(data: any): Promise<any>;
20
+ addCommand(data: any): ApiMakerCommandExecution;
19
21
  /** @returns {number} */
20
22
  commandsCount(): number;
21
23
  /**
22
24
  * @param {object} args
23
25
  * @param {string} args.url
24
26
  * @param {CommandSubmitData} args.commandSubmitData
27
+ * @param {ApiMakerCommandExecution} [args.commandExecution]
25
28
  * @returns {Promise<Record<string, any>>}
26
29
  */
27
- sendRequest({ commandSubmitData, url }: {
30
+ sendRequest({ commandExecution, commandSubmitData, url }: {
28
31
  url: string;
29
32
  commandSubmitData: CommandSubmitData;
33
+ commandExecution?: ApiMakerCommandExecution;
30
34
  }): Promise<Record<string, any>>;
31
35
  /** flush. */
32
36
  flush: () => Promise<void>;
@@ -48,8 +52,7 @@ export default class ApiMakerCommandsPool {
48
52
  flushRunLast: RunLast;
49
53
  }
50
54
  export type CommandDataType = {
51
- resolve: Function;
52
- reject: Function;
55
+ commandExecution: ApiMakerCommandExecution;
53
56
  stack: string;
54
57
  };
55
58
  export type PoolDataType = {
@@ -65,6 +68,7 @@ export type PoolDataType = {
65
68
  };
66
69
  };
67
70
  };
71
+ import ApiMakerCommandExecution from "./command-execution.js";
68
72
  import CommandSubmitData from "./command-submit-data.js";
69
73
  import RunLast from "./run-last.js";
70
74
  //# sourceMappingURL=commands-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands-pool.d.ts","sourceRoot":"/src/","sources":["commands-pool.js"],"names":[],"mappings":"AA2BA,4BAA4B;AAC5B;IACE,kBAAkB;IAClB,6CAmBC;IAED,eAAe;IACf,sBAIC;IAED,aAAa;IACb,qBAEC;IAIC,mBAAmB;IAEnB,8CAA8C;IAC9C,MADW,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAC5B;IAEd,2BAA2B;IAC3B,UADW,YAAY,CACL;IAElB,kBAAkB;IAElB,kCAAkC;IAClC,mBADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACH;IAG7B,kBAAkB;IAClB,oCAmCC;IAED,wBAAwB;IACxB,iBADc,MAAM,CAGnB;IAED;;;;;OAKG;IACH,wCAJG;QAAqB,GAAG,EAAhB,MAAM;QACkB,iBAAiB,EAAzC,iBAAiB;KACzB,GAAU,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAsBxC;IAED,aAAa;IACb,2BAwDC;IAED;;;;;;;OAOG;IACH,kCAPW,eAAe,uBAEvB;QAAoC,UAAU,EAAtC,MAAM;QACwB,MAAM,EAApC,MAAM,EAAE;QACsB,iBAAiB,EAA/C,MAAM,EAAE;KAChB,GAAU,IAAI,CA0BhB;IAED,gBAAgB;IAChB,oBAUC;IAED,sBAAsC;CACvC;;;;WA7Oa,MAAM;;2BAGN;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG;gBAAC,CAAC,GAAG,EAAE,MAAM,GAAG;oBAAC,IAAI,EAAE,MAAM,CAAC;oBAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;oBAAC,EAAE,EAAE,MAAM,CAAA;iBAAC,CAAA;aAAC,CAAA;SAAC,CAAA;KAAC,CAAA;CAAC;8BApB5G,0BAA0B;oBAOpC,eAAe"}
1
+ {"version":3,"file":"commands-pool.d.ts","sourceRoot":"/src/","sources":["commands-pool.js"],"names":[],"mappings":"AA6BA,4BAA4B;AAC5B;IACE,kBAAkB;IAClB,6CAqBC;IAED,eAAe;IACf,sBAIC;IAED,aAAa;IACb,qBAEC;IAIC,mBAAmB;IAEnB,8CAA8C;IAC9C,MADW,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAC5B;IAEd,2BAA2B;IAC3B,UADW,YAAY,CACL;IAElB,kBAAkB;IAElB,kCAAkC;IAClC,mBADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACH;IAE3B,kCAAkC;IAClC,gBADW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CACN;IAG1B,kBAAkB;IAClB,gDAkCC;IAED,wBAAwB;IACxB,iBADc,MAAM,CAGnB;IAED;;;;;;OAMG;IACH,0DALG;QAAqB,GAAG,EAAhB,MAAM;QACkB,iBAAiB,EAAzC,iBAAiB;QACe,gBAAgB,GAAhD,wBAAwB;KAChC,GAAU,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAiCxC;IAED,aAAa;IACb,2BAyDC;IAED;;;;;;;OAOG;IACH,kCAPW,eAAe,uBAEvB;QAAoC,UAAU,EAAtC,MAAM;QACwB,MAAM,EAApC,MAAM,EAAE;QACsB,iBAAiB,EAA/C,MAAM,EAAE;KAChB,GAAU,IAAI,CA0BhB;IAED,gBAAgB;IAChB,oBAUC;IAED,sBAAsC;CACvC;;sBA/Pa,wBAAwB;WACxB,MAAM;;2BAGN;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG;gBAAC,CAAC,GAAG,EAAE,MAAM,GAAG;oBAAC,IAAI,EAAE,MAAM,CAAC;oBAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;oBAAC,EAAE,EAAE,MAAM,CAAA;iBAAC,CAAA;aAAC,CAAA;SAAC,CAAA;KAAC,CAAA;CAAC;qCAtBrG,wBAAwB;8BAC/B,0BAA0B;oBAQpC,eAAe"}