monorise 1.0.0 → 1.1.0-dev.1

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 (100) hide show
  1. package/dist/base/index.d.ts +110 -3
  2. package/dist/base/index.js +3 -1
  3. package/dist/base/index.js.map +1 -1
  4. package/dist/cli/cli.js +6 -0
  5. package/dist/cli/cli.js.map +1 -1
  6. package/dist/core/chunk-QV4Q5377.js +76 -0
  7. package/dist/core/chunk-QV4Q5377.js.map +1 -0
  8. package/dist/core/index.d.ts +191 -38
  9. package/dist/core/index.js +1539 -122
  10. package/dist/core/index.js.map +1 -1
  11. package/dist/core/service.config-ZJEZ6EKA.js +13 -0
  12. package/dist/core/service.config-ZJEZ6EKA.js.map +1 -0
  13. package/dist/proxy/index.d.ts +35 -0
  14. package/dist/proxy/index.js +75 -0
  15. package/dist/proxy/index.js.map +1 -0
  16. package/dist/react/actions/websocket.action.d.ts +71 -0
  17. package/dist/react/actions/websocket.action.d.ts.map +1 -0
  18. package/dist/react/chunk-2QOYO3GF.js +182 -0
  19. package/dist/react/chunk-2QOYO3GF.js.map +1 -0
  20. package/dist/react/chunk-4WSYM746.js +383 -0
  21. package/dist/react/chunk-4WSYM746.js.map +1 -0
  22. package/dist/react/chunk-5XIRNUBL.js +43 -0
  23. package/dist/react/chunk-5XIRNUBL.js.map +1 -0
  24. package/dist/react/chunk-7JDOKZGQ.js +172 -0
  25. package/dist/react/chunk-7JDOKZGQ.js.map +1 -0
  26. package/dist/react/chunk-A5TI2FW3.js +13 -0
  27. package/dist/react/chunk-A5TI2FW3.js.map +1 -0
  28. package/dist/react/chunk-BJXCFDMF.js +15 -0
  29. package/dist/react/chunk-BJXCFDMF.js.map +1 -0
  30. package/dist/react/chunk-BUTF5RJU.js +29 -0
  31. package/dist/react/chunk-BUTF5RJU.js.map +1 -0
  32. package/dist/react/chunk-DTRWUIDH.js +402 -0
  33. package/dist/react/chunk-DTRWUIDH.js.map +1 -0
  34. package/dist/react/chunk-GFVCNWVT.js +54 -0
  35. package/dist/react/chunk-GFVCNWVT.js.map +1 -0
  36. package/dist/react/chunk-JT5EZZSL.js +489 -0
  37. package/dist/react/chunk-JT5EZZSL.js.map +1 -0
  38. package/dist/react/chunk-KJX5LOMN.js +43 -0
  39. package/dist/react/chunk-KJX5LOMN.js.map +1 -0
  40. package/dist/react/chunk-KLXK4V6G.js +65 -0
  41. package/dist/react/chunk-KLXK4V6G.js.map +1 -0
  42. package/dist/react/chunk-LJLMKEKI.js +245 -0
  43. package/dist/react/chunk-LJLMKEKI.js.map +1 -0
  44. package/dist/react/chunk-MIXAYX55.js +147 -0
  45. package/dist/react/chunk-MIXAYX55.js.map +1 -0
  46. package/dist/react/chunk-RPNCWADG.js +248 -0
  47. package/dist/react/chunk-RPNCWADG.js.map +1 -0
  48. package/dist/react/chunk-S6RDMHHH.js +47 -0
  49. package/dist/react/chunk-S6RDMHHH.js.map +1 -0
  50. package/dist/react/chunk-U6RIOMF4.js +893 -0
  51. package/dist/react/chunk-U6RIOMF4.js.map +1 -0
  52. package/dist/react/chunk-WCRLJFBW.js +5568 -0
  53. package/dist/react/chunk-WCRLJFBW.js.map +1 -0
  54. package/dist/react/chunk-YF6S7S36.js +588 -0
  55. package/dist/react/chunk-YF6S7S36.js.map +1 -0
  56. package/dist/react/dist-es-5WYA7CWK.js +379 -0
  57. package/dist/react/dist-es-5WYA7CWK.js.map +1 -0
  58. package/dist/react/dist-es-CR5AOOCO.js +333 -0
  59. package/dist/react/dist-es-CR5AOOCO.js.map +1 -0
  60. package/dist/react/dist-es-KZ3GLAJI.js +494 -0
  61. package/dist/react/dist-es-KZ3GLAJI.js.map +1 -0
  62. package/dist/react/dist-es-R4TRTT45.js +22 -0
  63. package/dist/react/dist-es-R4TRTT45.js.map +1 -0
  64. package/dist/react/dist-es-SKDPAJEW.js +169 -0
  65. package/dist/react/dist-es-SKDPAJEW.js.map +1 -0
  66. package/dist/react/dist-es-TOHBZNTZ.js +71 -0
  67. package/dist/react/dist-es-TOHBZNTZ.js.map +1 -0
  68. package/dist/react/dist-es-XNAC47MK.js +90 -0
  69. package/dist/react/dist-es-XNAC47MK.js.map +1 -0
  70. package/dist/react/event-streams-WAZW4P3K.js +277 -0
  71. package/dist/react/event-streams-WAZW4P3K.js.map +1 -0
  72. package/dist/react/index.d.ts +53 -4
  73. package/dist/react/index.d.ts.map +1 -1
  74. package/dist/react/index.js +10991 -190
  75. package/dist/react/index.js.map +1 -1
  76. package/dist/react/loadSso-KXVD6CBM.js +556 -0
  77. package/dist/react/loadSso-KXVD6CBM.js.map +1 -0
  78. package/dist/react/service.config-I7RKP6FE.js +14 -0
  79. package/dist/react/service.config-I7RKP6FE.js.map +1 -0
  80. package/dist/react/services/core.service.d.ts +11 -1
  81. package/dist/react/services/core.service.d.ts.map +1 -1
  82. package/dist/react/signin-SEY3FDQ5.js +653 -0
  83. package/dist/react/signin-SEY3FDQ5.js.map +1 -0
  84. package/dist/react/sso-oidc-REODVHH5.js +786 -0
  85. package/dist/react/sso-oidc-REODVHH5.js.map +1 -0
  86. package/dist/react/sts-I3M4QP37.js +3948 -0
  87. package/dist/react/sts-I3M4QP37.js.map +1 -0
  88. package/dist/react/websocket/WebSocketManager.d.ts +68 -0
  89. package/dist/react/websocket/WebSocketManager.d.ts.map +1 -0
  90. package/dist/react/websocket/index.d.ts +3 -0
  91. package/dist/react/websocket/index.d.ts.map +1 -0
  92. package/dist/react/websocket/optimistic.d.ts +51 -0
  93. package/dist/react/websocket/optimistic.d.ts.map +1 -0
  94. package/dist/react/websocket-OSLLJSNO.js +10 -0
  95. package/dist/react/websocket-OSLLJSNO.js.map +1 -0
  96. package/dist/sst/components/monorise-core.d.ts +10 -0
  97. package/dist/sst/components/monorise-core.d.ts.map +1 -1
  98. package/dist/sst/index.js +75 -12
  99. package/dist/sst/index.js.map +1 -1
  100. package/package.json +9 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@smithy/querystring-parser/dist-es/index.js","../../../node_modules/@smithy/url-parser/dist-es/index.js","../../../node_modules/@smithy/property-provider/dist-es/fromStatic.js","../../../node_modules/@smithy/property-provider/dist-es/memoize.js","../../../node_modules/@smithy/node-config-provider/dist-es/getSelectorName.js","../../../node_modules/@smithy/node-config-provider/dist-es/fromEnv.js","../../../node_modules/@smithy/node-config-provider/dist-es/fromSharedConfigFiles.js","../../../node_modules/@smithy/node-config-provider/dist-es/fromStatic.js","../../../node_modules/@smithy/node-config-provider/dist-es/configLoader.js"],"sourcesContent":["export function parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n }\n else if (Array.isArray(query[key])) {\n query[key].push(value);\n }\n else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n","import { parseQueryString } from \"@smithy/querystring-parser\";\nexport const parseUrl = (url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = parseQueryString(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : undefined,\n protocol,\n path: pathname,\n query,\n };\n};\n","export const fromStatic = (staticValue) => () => Promise.resolve(staticValue);\n","export const memoize = (provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n};\n","export function getSelectorName(functionString) {\n try {\n const constants = new Set(Array.from(functionString.match(/([A-Z_]){3,}/g) ?? []));\n constants.delete(\"CONFIG\");\n constants.delete(\"CONFIG_PREFIX_SEPARATOR\");\n constants.delete(\"ENV\");\n return [...constants].join(\", \");\n }\n catch (e) {\n return functionString;\n }\n}\n","import { CredentialsProviderError } from \"@smithy/property-provider\";\nimport { getSelectorName } from \"./getSelectorName\";\nexport const fromEnv = (envVarSelector, options) => async () => {\n try {\n const config = envVarSelector(process.env, options);\n if (config === undefined) {\n throw new Error();\n }\n return config;\n }\n catch (e) {\n throw new CredentialsProviderError(e.message || `Not found in ENV: ${getSelectorName(envVarSelector.toString())}`, { logger: options?.logger });\n }\n};\n","import { CredentialsProviderError } from \"@smithy/property-provider\";\nimport { getProfileName, loadSharedConfigFiles } from \"@smithy/shared-ini-file-loader\";\nimport { getSelectorName } from \"./getSelectorName\";\nexport const fromSharedConfigFiles = (configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = getProfileName(init);\n const { configFile, credentialsFile } = await loadSharedConfigFiles(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\"\n ? { ...profileFromCredentials, ...profileFromConfig }\n : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === undefined) {\n throw new Error();\n }\n return configValue;\n }\n catch (e) {\n throw new CredentialsProviderError(e.message || `Not found in config files w/ profile [${profile}]: ${getSelectorName(configSelector.toString())}`, { logger: init.logger });\n }\n};\n","import { fromStatic as convertToProvider } from \"@smithy/property-provider\";\nconst isFunction = (func) => typeof func === \"function\";\nexport const fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : convertToProvider(defaultValue);\n","import { chain, memoize } from \"@smithy/property-provider\";\nimport { fromEnv } from \"./fromEnv\";\nimport { fromSharedConfigFiles } from \"./fromSharedConfigFiles\";\nimport { fromStatic } from \"./fromStatic\";\nexport const loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => {\n const { signingName, logger } = configuration;\n const envOptions = { signingName, logger };\n return memoize(chain(fromEnv(environmentVariableSelector, envOptions), fromSharedConfigFiles(configFileSelector, configuration), fromStatic(defaultValue)));\n};\n"],"mappings":"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","names":["fromStatic","fromStatic"]}
@@ -0,0 +1,13 @@
1
+ // ../../node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js
2
+ function setCredentialFeature(credentials, feature, value) {
3
+ if (!credentials.$source) {
4
+ credentials.$source = {};
5
+ }
6
+ credentials.$source[feature] = value;
7
+ return credentials;
8
+ }
9
+
10
+ export {
11
+ setCredentialFeature
12
+ };
13
+ //# sourceMappingURL=chunk-A5TI2FW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js"],"sourcesContent":["export function setCredentialFeature(credentials, feature, value) {\n if (!credentials.$source) {\n credentials.$source = {};\n }\n credentials.$source[feature] = value;\n return credentials;\n}\n"],"mappings":";AAAO,SAAS,qBAAqB,aAAa,SAAS,OAAO;AAC9D,MAAI,CAAC,YAAY,SAAS;AACtB,gBAAY,UAAU,CAAC;AAAA,EAC3B;AACA,cAAY,QAAQ,OAAO,IAAI;AAC/B,SAAO;AACX;","names":[]}
@@ -0,0 +1,15 @@
1
+ // ../core/constants/table.ts
2
+ var ENTITY_REPLICATION_INDEX = "ENTITY_REPLICATION_INDEX";
3
+ var MUTUAL_REPLICATION_INDEX = "MUTUAL_REPLICATION_INDEX";
4
+
5
+ // ../core/configs/service.config.ts
6
+ var CORE_TABLE = process.env.CORE_TABLE || "";
7
+ var CORE_EVENT_BUS = process.env.CORE_EVENT_BUS || "";
8
+
9
+ export {
10
+ ENTITY_REPLICATION_INDEX,
11
+ MUTUAL_REPLICATION_INDEX,
12
+ CORE_TABLE,
13
+ CORE_EVENT_BUS
14
+ };
15
+ //# sourceMappingURL=chunk-BJXCFDMF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../core/constants/table.ts","../../core/configs/service.config.ts"],"sourcesContent":["export const ENTITY_REPLICATION_INDEX = 'ENTITY_REPLICATION_INDEX';\nexport const MUTUAL_REPLICATION_INDEX = 'MUTUAL_REPLICATION_INDEX';\n","import {\n ENTITY_REPLICATION_INDEX,\n MUTUAL_REPLICATION_INDEX,\n} from '../constants/table';\n\nconst CORE_TABLE = process.env.CORE_TABLE || '';\nconst CORE_EVENT_BUS = process.env.CORE_EVENT_BUS || '';\n\nexport {\n CORE_TABLE,\n CORE_EVENT_BUS,\n ENTITY_REPLICATION_INDEX,\n MUTUAL_REPLICATION_INDEX,\n};\n"],"mappings":";AAAO,IAAM,2BAA2B;AACjC,IAAM,2BAA2B;;;ACIxC,IAAM,aAAa,QAAQ,IAAI,cAAc;AAC7C,IAAM,iBAAiB,QAAQ,IAAI,kBAAkB;","names":[]}
@@ -0,0 +1,29 @@
1
+ import {
2
+ ProviderError
3
+ } from "./chunk-5XIRNUBL.js";
4
+
5
+ // ../../node_modules/@smithy/property-provider/dist-es/chain.js
6
+ var chain = (...providers) => async () => {
7
+ if (providers.length === 0) {
8
+ throw new ProviderError("No providers in chain");
9
+ }
10
+ let lastProviderError;
11
+ for (const provider of providers) {
12
+ try {
13
+ const credentials = await provider();
14
+ return credentials;
15
+ } catch (err) {
16
+ lastProviderError = err;
17
+ if (err == null ? void 0 : err.tryNextLink) {
18
+ continue;
19
+ }
20
+ throw err;
21
+ }
22
+ }
23
+ throw lastProviderError;
24
+ };
25
+
26
+ export {
27
+ chain
28
+ };
29
+ //# sourceMappingURL=chunk-BUTF5RJU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@smithy/property-provider/dist-es/chain.js"],"sourcesContent":["import { ProviderError } from \"./ProviderError\";\nexport const chain = (...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n"],"mappings":";;;;;AACO,IAAM,QAAQ,IAAI,cAAc,YAAY;AAC/C,MAAI,UAAU,WAAW,GAAG;AACxB,UAAM,IAAI,cAAc,uBAAuB;AAAA,EACnD;AACA,MAAI;AACJ,aAAW,YAAY,WAAW;AAC9B,QAAI;AACA,YAAM,cAAc,MAAM,SAAS;AACnC,aAAO;AAAA,IACX,SACO,KAAK;AACR,0BAAoB;AACpB,UAAI,2BAAK,aAAa;AAClB;AAAA,MACJ;AACA,YAAM;AAAA,IACV;AAAA,EACJ;AACA,QAAM;AACV;","names":[]}
@@ -0,0 +1,402 @@
1
+ import {
2
+ __spreadProps,
3
+ __spreadValues
4
+ } from "./chunk-MIXAYX55.js";
5
+
6
+ // websocket/WebSocketManager.ts
7
+ import { nanoid } from "nanoid";
8
+ var WebSocketManager = class {
9
+ constructor(url, token) {
10
+ this.ws = null;
11
+ this.state = "disconnected";
12
+ this.reconnectAttempts = 0;
13
+ this.maxReconnectAttempts = 10;
14
+ this.reconnectDelay = 1e3;
15
+ this.maxReconnectDelay = 3e4;
16
+ this.heartbeatInterval = null;
17
+ this.heartbeatTimeout = null;
18
+ this.heartbeatIntervalMs = 3e4;
19
+ this.heartbeatTimeoutMs = 1e4;
20
+ this.messageHandlers = /* @__PURE__ */ new Set();
21
+ this.stateHandlers = /* @__PURE__ */ new Set();
22
+ this.entitySubscriptions = /* @__PURE__ */ new Map();
23
+ this.mutualSubscriptions = /* @__PURE__ */ new Map();
24
+ this.ephemeralSubscriptions = /* @__PURE__ */ new Map();
25
+ this.pendingMessages = [];
26
+ this.disableAutoReconnect = false;
27
+ this.url = url;
28
+ this.token = token;
29
+ }
30
+ connect() {
31
+ var _a;
32
+ if (((_a = this.ws) == null ? void 0 : _a.readyState) === WebSocket.OPEN) return;
33
+ this.setState("connecting");
34
+ try {
35
+ const connectUrl = this.token ? `${this.url}?token=${encodeURIComponent(this.token)}` : this.url;
36
+ this.ws = new WebSocket(connectUrl);
37
+ this.ws.onopen = this.handleOpen.bind(this);
38
+ this.ws.onclose = this.handleClose.bind(this);
39
+ this.ws.onerror = this.handleError.bind(this);
40
+ this.ws.onmessage = this.handleMessage.bind(this);
41
+ } catch (error) {
42
+ console.error("WebSocket connection error:", error);
43
+ this.scheduleReconnect();
44
+ }
45
+ }
46
+ disconnect() {
47
+ this.stopHeartbeat();
48
+ this.reconnectAttempts = 0;
49
+ if (this.ws) {
50
+ this.ws.close();
51
+ this.ws = null;
52
+ }
53
+ this.setState("disconnected");
54
+ }
55
+ // Subscribe to ALL changes of an entity type
56
+ subscribeEntityType(entityType) {
57
+ const subKey = `entity:${entityType}`;
58
+ if (!this.entitySubscriptions.has(subKey)) {
59
+ this.entitySubscriptions.set(subKey, { entityType });
60
+ }
61
+ if (this.state === "connected") {
62
+ const message = {
63
+ action: "subscribe",
64
+ id: nanoid(),
65
+ payload: { entityType }
66
+ };
67
+ this.send(message);
68
+ }
69
+ return subKey;
70
+ }
71
+ unsubscribeEntityType(subKey) {
72
+ const subscription = this.entitySubscriptions.get(subKey);
73
+ if (!subscription) return;
74
+ this.entitySubscriptions.delete(subKey);
75
+ if (this.state === "connected") {
76
+ const message = {
77
+ action: "unsubscribe",
78
+ id: nanoid(),
79
+ payload: { entityType: subscription.entityType }
80
+ };
81
+ this.send(message);
82
+ }
83
+ }
84
+ // Subscribe to ALL mutuals of a type for a specific byEntity
85
+ subscribeMutualType(byEntityType, byEntityId, mutualEntityType) {
86
+ const subKey = `mutual:${byEntityType}:${byEntityId}:${mutualEntityType}`;
87
+ if (!this.mutualSubscriptions.has(subKey)) {
88
+ this.mutualSubscriptions.set(subKey, {
89
+ byEntityType,
90
+ byEntityId,
91
+ mutualEntityType
92
+ });
93
+ }
94
+ if (this.state === "connected") {
95
+ const message = {
96
+ action: "subscribe",
97
+ id: nanoid(),
98
+ payload: { byEntityType, byEntityId, mutualEntityType }
99
+ };
100
+ this.send(message);
101
+ }
102
+ return subKey;
103
+ }
104
+ unsubscribeMutualType(subKey) {
105
+ const subscription = this.mutualSubscriptions.get(subKey);
106
+ if (!subscription) return;
107
+ this.mutualSubscriptions.delete(subKey);
108
+ if (this.state === "connected") {
109
+ const message = {
110
+ action: "unsubscribe",
111
+ id: nanoid(),
112
+ payload: {
113
+ byEntityType: subscription.byEntityType,
114
+ byEntityId: subscription.byEntityId,
115
+ mutualEntityType: subscription.mutualEntityType
116
+ }
117
+ };
118
+ this.send(message);
119
+ }
120
+ }
121
+ // Subscribe to ephemeral messages on a channel
122
+ subscribeEphemeral(channel) {
123
+ const subKey = `ephemeral:${channel}`;
124
+ if (!this.ephemeralSubscriptions.has(subKey)) {
125
+ this.ephemeralSubscriptions.set(subKey, { channel });
126
+ }
127
+ if (this.state === "connected") {
128
+ const message = {
129
+ action: "subscribe",
130
+ id: nanoid(),
131
+ payload: { channel }
132
+ };
133
+ this.send(message);
134
+ }
135
+ return subKey;
136
+ }
137
+ unsubscribeEphemeral(subKey) {
138
+ const subscription = this.ephemeralSubscriptions.get(subKey);
139
+ if (!subscription) return;
140
+ this.ephemeralSubscriptions.delete(subKey);
141
+ if (this.state === "connected") {
142
+ const message = {
143
+ action: "unsubscribe",
144
+ id: nanoid(),
145
+ payload: { channel: subscription.channel }
146
+ };
147
+ this.send(message);
148
+ }
149
+ }
150
+ // Send an ephemeral message to a channel
151
+ sendEphemeral(channel, data) {
152
+ const message = {
153
+ action: "ephemeral",
154
+ id: nanoid(),
155
+ payload: { channel, data }
156
+ };
157
+ this.send(message);
158
+ }
159
+ send(message) {
160
+ var _a;
161
+ if (((_a = this.ws) == null ? void 0 : _a.readyState) === WebSocket.OPEN) {
162
+ this.ws.send(JSON.stringify(message));
163
+ } else {
164
+ this.pendingMessages.push(message);
165
+ }
166
+ }
167
+ onMessage(handler) {
168
+ this.messageHandlers.add(handler);
169
+ return () => this.messageHandlers.delete(handler);
170
+ }
171
+ onStateChange(handler) {
172
+ this.stateHandlers.add(handler);
173
+ handler(this.state);
174
+ return () => this.stateHandlers.delete(handler);
175
+ }
176
+ getState() {
177
+ return this.state;
178
+ }
179
+ setState(newState) {
180
+ if (this.state !== newState) {
181
+ this.state = newState;
182
+ this.stateHandlers.forEach((handler) => handler(newState));
183
+ }
184
+ }
185
+ handleOpen() {
186
+ this.setState("connected");
187
+ this.reconnectAttempts = 0;
188
+ this.reconnectDelay = 1e3;
189
+ this.startHeartbeat();
190
+ this.resubscribeAll();
191
+ this.flushPendingMessages();
192
+ }
193
+ handleClose(event) {
194
+ this.stopHeartbeat();
195
+ this.ws = null;
196
+ if (this.disableAutoReconnect) {
197
+ this.setState("disconnected");
198
+ return;
199
+ }
200
+ if (this.reconnectAttempts < this.maxReconnectAttempts) {
201
+ this.setState("reconnecting");
202
+ this.scheduleReconnect();
203
+ } else {
204
+ this.setState("disconnected");
205
+ }
206
+ }
207
+ handleError(error) {
208
+ console.error("WebSocket error:", error);
209
+ }
210
+ handleMessage(event) {
211
+ try {
212
+ const message = JSON.parse(event.data);
213
+ if (message.type === "pong") {
214
+ this.handlePong();
215
+ return;
216
+ }
217
+ this.messageHandlers.forEach((handler) => handler(message));
218
+ } catch (error) {
219
+ console.error("Failed to parse WebSocket message:", error);
220
+ }
221
+ }
222
+ scheduleReconnect() {
223
+ setTimeout(() => {
224
+ this.reconnectAttempts++;
225
+ this.reconnectDelay = Math.min(
226
+ this.reconnectDelay * 2,
227
+ this.maxReconnectDelay
228
+ );
229
+ this.connect();
230
+ }, this.reconnectDelay);
231
+ }
232
+ resubscribeAll() {
233
+ for (const { entityType } of this.entitySubscriptions.values()) {
234
+ const message = {
235
+ action: "subscribe",
236
+ id: nanoid(),
237
+ payload: { entityType }
238
+ };
239
+ this.send(message);
240
+ }
241
+ for (const {
242
+ byEntityType,
243
+ byEntityId,
244
+ mutualEntityType
245
+ } of this.mutualSubscriptions.values()) {
246
+ const message = {
247
+ action: "subscribe",
248
+ id: nanoid(),
249
+ payload: { byEntityType, byEntityId, mutualEntityType }
250
+ };
251
+ this.send(message);
252
+ }
253
+ for (const { channel } of this.ephemeralSubscriptions.values()) {
254
+ const message = {
255
+ action: "subscribe",
256
+ id: nanoid(),
257
+ payload: { channel }
258
+ };
259
+ this.send(message);
260
+ }
261
+ }
262
+ flushPendingMessages() {
263
+ while (this.pendingMessages.length > 0) {
264
+ const message = this.pendingMessages.shift();
265
+ if (message) {
266
+ this.send(message);
267
+ }
268
+ }
269
+ }
270
+ startHeartbeat() {
271
+ this.heartbeatInterval = setInterval(() => {
272
+ const pingMessage = {
273
+ action: "ping",
274
+ id: nanoid(),
275
+ payload: {}
276
+ };
277
+ this.send(pingMessage);
278
+ this.heartbeatTimeout = setTimeout(() => {
279
+ var _a;
280
+ (_a = this.ws) == null ? void 0 : _a.close();
281
+ }, this.heartbeatTimeoutMs);
282
+ }, this.heartbeatIntervalMs);
283
+ }
284
+ stopHeartbeat() {
285
+ if (this.heartbeatInterval) {
286
+ clearInterval(this.heartbeatInterval);
287
+ this.heartbeatInterval = null;
288
+ }
289
+ if (this.heartbeatTimeout) {
290
+ clearTimeout(this.heartbeatTimeout);
291
+ this.heartbeatTimeout = null;
292
+ }
293
+ }
294
+ handlePong() {
295
+ if (this.heartbeatTimeout) {
296
+ clearTimeout(this.heartbeatTimeout);
297
+ this.heartbeatTimeout = null;
298
+ }
299
+ }
300
+ };
301
+
302
+ // websocket/optimistic.ts
303
+ import { nanoid as nanoid2 } from "nanoid";
304
+ var OptimisticEngine = class {
305
+ constructor(options) {
306
+ this.operations = /* @__PURE__ */ new Map();
307
+ this.onRollback = options == null ? void 0 : options.onRollback;
308
+ this.onConfirm = options == null ? void 0 : options.onConfirm;
309
+ }
310
+ /**
311
+ * Register an optimistic operation
312
+ */
313
+ register(operation) {
314
+ const id = nanoid2();
315
+ const fullOperation = __spreadProps(__spreadValues({}, operation), {
316
+ id,
317
+ timestamp: Date.now()
318
+ });
319
+ this.operations.set(id, fullOperation);
320
+ return id;
321
+ }
322
+ /**
323
+ * Confirm an operation (server acknowledged)
324
+ */
325
+ confirm(mutationId) {
326
+ var _a;
327
+ const operation = this.operations.get(mutationId);
328
+ if (operation) {
329
+ this.operations.delete(mutationId);
330
+ (_a = this.onConfirm) == null ? void 0 : _a.call(this, operation);
331
+ }
332
+ }
333
+ /**
334
+ * Rollback an operation (server rejected or failed)
335
+ */
336
+ rollback(mutationId) {
337
+ var _a;
338
+ const operation = this.operations.get(mutationId);
339
+ if (operation) {
340
+ this.operations.delete(mutationId);
341
+ (_a = this.onRollback) == null ? void 0 : _a.call(this, operation);
342
+ return operation;
343
+ }
344
+ return void 0;
345
+ }
346
+ /**
347
+ * Check if an entity has pending optimistic operations
348
+ */
349
+ hasPendingOperation(entityType, entityId) {
350
+ for (const op of this.operations.values()) {
351
+ if (op.entityType === entityType && op.entityId === entityId) {
352
+ return true;
353
+ }
354
+ }
355
+ return false;
356
+ }
357
+ /**
358
+ * Get pending operation for an entity
359
+ */
360
+ getPendingOperation(entityType, entityId) {
361
+ for (const op of this.operations.values()) {
362
+ if (op.entityType === entityType && op.entityId === entityId) {
363
+ return op;
364
+ }
365
+ }
366
+ return void 0;
367
+ }
368
+ /**
369
+ * Clear all operations (e.g., on disconnect)
370
+ */
371
+ clear() {
372
+ const allOperations = Array.from(this.operations.values());
373
+ this.operations.clear();
374
+ return allOperations;
375
+ }
376
+ /**
377
+ * Get all pending operations
378
+ */
379
+ getAllPending() {
380
+ return Array.from(this.operations.values());
381
+ }
382
+ /**
383
+ * Clean up old operations (older than specified ms)
384
+ */
385
+ cleanup(maxAgeMs = 5 * 60 * 1e3) {
386
+ const now = Date.now();
387
+ let cleaned = 0;
388
+ for (const [id, operation] of this.operations) {
389
+ if (now - operation.timestamp > maxAgeMs) {
390
+ this.operations.delete(id);
391
+ cleaned++;
392
+ }
393
+ }
394
+ return cleaned;
395
+ }
396
+ };
397
+
398
+ export {
399
+ WebSocketManager,
400
+ OptimisticEngine
401
+ };
402
+ //# sourceMappingURL=chunk-DTRWUIDH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../websocket/WebSocketManager.ts","../websocket/optimistic.ts"],"sourcesContent":["import { nanoid } from 'nanoid';\n\nexport type ConnectionState =\n | 'connecting'\n | 'connected'\n | 'reconnecting'\n | 'disconnected';\n\nexport interface ClientMessage {\n action: 'subscribe' | 'unsubscribe' | 'ephemeral' | 'ping';\n id: string;\n payload: {\n // Entity subscription: subscribe to all changes of this entity type\n entityType?: string;\n // Mutual subscription: subscribe to all mutuals of this type for a byEntity\n byEntityType?: string;\n byEntityId?: string;\n mutualEntityType?: string;\n // Ephemeral channel\n channel?: string;\n // Ephemeral message data\n data?: unknown;\n };\n}\n\nexport interface ServerMessage {\n type:\n | 'entity.created'\n | 'entity.updated'\n | 'entity.deleted'\n | 'mutual.created'\n | 'mutual.updated'\n | 'mutual.deleted'\n | 'ephemeral'\n | 'ack'\n | 'error'\n | 'pong';\n id: string;\n payload: unknown;\n}\n\ntype MessageHandler = (message: ServerMessage) => void;\ntype ConnectionStateHandler = (state: ConnectionState) => void;\n\n// Entity type subscription: listen to ALL changes of this entity type\ninterface EntityTypeSubscription {\n entityType: string;\n}\n\n// Mutual type subscription: listen to ALL mutuals of this type for a byEntity\ninterface MutualTypeSubscription {\n byEntityType: string;\n byEntityId: string;\n mutualEntityType: string;\n}\n\n// Ephemeral channel subscription: listen to ephemeral messages on this channel\ninterface EphemeralSubscription {\n channel: string;\n}\n\nexport class WebSocketManager {\n private ws: WebSocket | null = null;\n private url: string;\n private token: string;\n private state: ConnectionState = 'disconnected';\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 10;\n private reconnectDelay = 1000;\n private maxReconnectDelay = 30000;\n private heartbeatInterval: NodeJS.Timeout | null = null;\n private heartbeatTimeout: NodeJS.Timeout | null = null;\n private readonly heartbeatIntervalMs = 30000;\n private readonly heartbeatTimeoutMs = 10000;\n\n private messageHandlers: Set<MessageHandler> = new Set();\n private stateHandlers: Set<ConnectionStateHandler> = new Set();\n private entitySubscriptions: Map<string, EntityTypeSubscription> = new Map();\n private mutualSubscriptions: Map<string, MutualTypeSubscription> = new Map();\n private ephemeralSubscriptions: Map<string, EphemeralSubscription> = new Map();\n private pendingMessages: ClientMessage[] = [];\n\n public disableAutoReconnect = false;\n\n constructor(url: string, token: string) {\n this.url = url;\n this.token = token;\n }\n\n connect(): void {\n if (this.ws?.readyState === WebSocket.OPEN) return;\n\n this.setState('connecting');\n\n try {\n const connectUrl = this.token\n ? `${this.url}?token=${encodeURIComponent(this.token)}`\n : this.url;\n this.ws = new WebSocket(connectUrl);\n\n this.ws.onopen = this.handleOpen.bind(this);\n this.ws.onclose = this.handleClose.bind(this);\n this.ws.onerror = this.handleError.bind(this);\n this.ws.onmessage = this.handleMessage.bind(this);\n } catch (error) {\n console.error('WebSocket connection error:', error);\n this.scheduleReconnect();\n }\n }\n\n disconnect(): void {\n this.stopHeartbeat();\n this.reconnectAttempts = 0;\n\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n\n this.setState('disconnected');\n }\n\n // Subscribe to ALL changes of an entity type\n subscribeEntityType(entityType: string): string {\n const subKey = `entity:${entityType}`;\n\n if (!this.entitySubscriptions.has(subKey)) {\n this.entitySubscriptions.set(subKey, { entityType });\n }\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { entityType },\n };\n this.send(message);\n }\n\n return subKey;\n }\n\n unsubscribeEntityType(subKey: string): void {\n const subscription = this.entitySubscriptions.get(subKey);\n if (!subscription) return;\n\n this.entitySubscriptions.delete(subKey);\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'unsubscribe',\n id: nanoid(),\n payload: { entityType: subscription.entityType },\n };\n this.send(message);\n }\n }\n\n // Subscribe to ALL mutuals of a type for a specific byEntity\n subscribeMutualType(\n byEntityType: string,\n byEntityId: string,\n mutualEntityType: string,\n ): string {\n const subKey = `mutual:${byEntityType}:${byEntityId}:${mutualEntityType}`;\n\n if (!this.mutualSubscriptions.has(subKey)) {\n this.mutualSubscriptions.set(subKey, {\n byEntityType,\n byEntityId,\n mutualEntityType,\n });\n }\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { byEntityType, byEntityId, mutualEntityType },\n };\n this.send(message);\n }\n\n return subKey;\n }\n\n unsubscribeMutualType(subKey: string): void {\n const subscription = this.mutualSubscriptions.get(subKey);\n if (!subscription) return;\n\n this.mutualSubscriptions.delete(subKey);\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'unsubscribe',\n id: nanoid(),\n payload: {\n byEntityType: subscription.byEntityType,\n byEntityId: subscription.byEntityId,\n mutualEntityType: subscription.mutualEntityType,\n },\n };\n this.send(message);\n }\n }\n\n // Subscribe to ephemeral messages on a channel\n subscribeEphemeral(channel: string): string {\n const subKey = `ephemeral:${channel}`;\n\n if (!this.ephemeralSubscriptions.has(subKey)) {\n this.ephemeralSubscriptions.set(subKey, { channel });\n }\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { channel },\n };\n this.send(message);\n }\n\n return subKey;\n }\n\n unsubscribeEphemeral(subKey: string): void {\n const subscription = this.ephemeralSubscriptions.get(subKey);\n if (!subscription) return;\n\n this.ephemeralSubscriptions.delete(subKey);\n\n if (this.state === 'connected') {\n const message: ClientMessage = {\n action: 'unsubscribe',\n id: nanoid(),\n payload: { channel: subscription.channel },\n };\n this.send(message);\n }\n }\n\n // Send an ephemeral message to a channel\n sendEphemeral(channel: string, data: unknown): void {\n const message: ClientMessage = {\n action: 'ephemeral',\n id: nanoid(),\n payload: { channel, data },\n };\n this.send(message);\n }\n\n send(message: ClientMessage): void {\n if (this.ws?.readyState === WebSocket.OPEN) {\n this.ws.send(JSON.stringify(message));\n } else {\n this.pendingMessages.push(message);\n }\n }\n\n onMessage(handler: MessageHandler): () => void {\n this.messageHandlers.add(handler);\n return () => this.messageHandlers.delete(handler);\n }\n\n onStateChange(handler: ConnectionStateHandler): () => void {\n this.stateHandlers.add(handler);\n handler(this.state);\n return () => this.stateHandlers.delete(handler);\n }\n\n getState(): ConnectionState {\n return this.state;\n }\n\n private setState(newState: ConnectionState): void {\n if (this.state !== newState) {\n this.state = newState;\n this.stateHandlers.forEach((handler) => handler(newState));\n }\n }\n\n private handleOpen(): void {\n this.setState('connected');\n this.reconnectAttempts = 0;\n this.reconnectDelay = 1000;\n\n this.startHeartbeat();\n this.resubscribeAll();\n this.flushPendingMessages();\n }\n\n private handleClose(event: CloseEvent): void {\n this.stopHeartbeat();\n this.ws = null;\n\n if (this.disableAutoReconnect) {\n this.setState('disconnected');\n return;\n }\n\n if (this.reconnectAttempts < this.maxReconnectAttempts) {\n this.setState('reconnecting');\n this.scheduleReconnect();\n } else {\n this.setState('disconnected');\n }\n }\n\n private handleError(error: Event): void {\n console.error('WebSocket error:', error);\n }\n\n private handleMessage(event: MessageEvent): void {\n try {\n const message = JSON.parse(event.data) as ServerMessage;\n\n if (message.type === 'pong') {\n this.handlePong();\n return;\n }\n\n this.messageHandlers.forEach((handler) => handler(message));\n } catch (error) {\n console.error('Failed to parse WebSocket message:', error);\n }\n }\n\n private scheduleReconnect(): void {\n setTimeout(() => {\n this.reconnectAttempts++;\n this.reconnectDelay = Math.min(\n this.reconnectDelay * 2,\n this.maxReconnectDelay,\n );\n this.connect();\n }, this.reconnectDelay);\n }\n\n private resubscribeAll(): void {\n // Re-subscribe entity types\n for (const { entityType } of this.entitySubscriptions.values()) {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { entityType },\n };\n this.send(message);\n }\n\n // Re-subscribe mutual types\n for (const {\n byEntityType,\n byEntityId,\n mutualEntityType,\n } of this.mutualSubscriptions.values()) {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { byEntityType, byEntityId, mutualEntityType },\n };\n this.send(message);\n }\n\n // Re-subscribe ephemeral channels\n for (const { channel } of this.ephemeralSubscriptions.values()) {\n const message: ClientMessage = {\n action: 'subscribe',\n id: nanoid(),\n payload: { channel },\n };\n this.send(message);\n }\n }\n\n private flushPendingMessages(): void {\n while (this.pendingMessages.length > 0) {\n const message = this.pendingMessages.shift();\n if (message) {\n this.send(message);\n }\n }\n }\n\n private startHeartbeat(): void {\n this.heartbeatInterval = setInterval(() => {\n const pingMessage: ClientMessage = {\n action: 'ping',\n id: nanoid(),\n payload: {},\n };\n this.send(pingMessage);\n\n this.heartbeatTimeout = setTimeout(() => {\n this.ws?.close();\n }, this.heartbeatTimeoutMs);\n }, this.heartbeatIntervalMs);\n }\n\n private stopHeartbeat(): void {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n }\n if (this.heartbeatTimeout) {\n clearTimeout(this.heartbeatTimeout);\n this.heartbeatTimeout = null;\n }\n }\n\n private handlePong(): void {\n if (this.heartbeatTimeout) {\n clearTimeout(this.heartbeatTimeout);\n this.heartbeatTimeout = null;\n }\n }\n}\n","import { nanoid } from 'nanoid';\n\nexport interface OptimisticOperation {\n id: string;\n type: 'create' | 'update' | 'delete';\n entityType: string;\n entityId: string;\n previousData?: unknown;\n optimisticData: unknown;\n timestamp: number;\n}\n\nexport class OptimisticEngine {\n private operations: Map<string, OptimisticOperation> = new Map();\n private onRollback?: (operation: OptimisticOperation) => void;\n private onConfirm?: (operation: OptimisticOperation) => void;\n\n constructor(options?: {\n onRollback?: (operation: OptimisticOperation) => void;\n onConfirm?: (operation: OptimisticOperation) => void;\n }) {\n this.onRollback = options?.onRollback;\n this.onConfirm = options?.onConfirm;\n }\n\n /**\n * Register an optimistic operation\n */\n register(operation: Omit<OptimisticOperation, 'id' | 'timestamp'>): string {\n const id = nanoid();\n const fullOperation: OptimisticOperation = {\n ...operation,\n id,\n timestamp: Date.now(),\n };\n\n this.operations.set(id, fullOperation);\n return id;\n }\n\n /**\n * Confirm an operation (server acknowledged)\n */\n confirm(mutationId: string): void {\n const operation = this.operations.get(mutationId);\n if (operation) {\n this.operations.delete(mutationId);\n this.onConfirm?.(operation);\n }\n }\n\n /**\n * Rollback an operation (server rejected or failed)\n */\n rollback(mutationId: string): OptimisticOperation | undefined {\n const operation = this.operations.get(mutationId);\n if (operation) {\n this.operations.delete(mutationId);\n this.onRollback?.(operation);\n return operation;\n }\n return undefined;\n }\n\n /**\n * Check if an entity has pending optimistic operations\n */\n hasPendingOperation(entityType: string, entityId: string): boolean {\n for (const op of this.operations.values()) {\n if (op.entityType === entityType && op.entityId === entityId) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get pending operation for an entity\n */\n getPendingOperation(\n entityType: string,\n entityId: string,\n ): OptimisticOperation | undefined {\n for (const op of this.operations.values()) {\n if (op.entityType === entityType && op.entityId === entityId) {\n return op;\n }\n }\n return undefined;\n }\n\n /**\n * Clear all operations (e.g., on disconnect)\n */\n clear(): OptimisticOperation[] {\n const allOperations = Array.from(this.operations.values());\n this.operations.clear();\n return allOperations;\n }\n\n /**\n * Get all pending operations\n */\n getAllPending(): OptimisticOperation[] {\n return Array.from(this.operations.values());\n }\n\n /**\n * Clean up old operations (older than specified ms)\n */\n cleanup(maxAgeMs: number = 5 * 60 * 1000): number {\n const now = Date.now();\n let cleaned = 0;\n\n for (const [id, operation] of this.operations) {\n if (now - operation.timestamp > maxAgeMs) {\n this.operations.delete(id);\n cleaned++;\n }\n }\n\n return cleaned;\n }\n}\n"],"mappings":"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","names":["nanoid","nanoid"]}
@@ -0,0 +1,54 @@
1
+ import {
2
+ __spreadProps,
3
+ __spreadValues
4
+ } from "./chunk-MIXAYX55.js";
5
+
6
+ // ../../node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js
7
+ var createAggregatedClient = (commands, Client, options) => {
8
+ for (const [command, CommandCtor] of Object.entries(commands)) {
9
+ const methodImpl = async function(args, optionsOrCb, cb) {
10
+ const command2 = new CommandCtor(args);
11
+ if (typeof optionsOrCb === "function") {
12
+ this.send(command2, optionsOrCb);
13
+ } else if (typeof cb === "function") {
14
+ if (typeof optionsOrCb !== "object")
15
+ throw new Error(`Expected http options but got ${typeof optionsOrCb}`);
16
+ this.send(command2, optionsOrCb || {}, cb);
17
+ } else {
18
+ return this.send(command2, optionsOrCb);
19
+ }
20
+ };
21
+ const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, "");
22
+ Client.prototype[methodName] = methodImpl;
23
+ }
24
+ const { paginators = {}, waiters = {} } = options != null ? options : {};
25
+ for (const [paginatorName, paginatorFn] of Object.entries(paginators)) {
26
+ if (Client.prototype[paginatorName] === void 0) {
27
+ Client.prototype[paginatorName] = function(commandInput = {}, paginationConfiguration, ...rest) {
28
+ return paginatorFn(__spreadProps(__spreadValues({}, paginationConfiguration), {
29
+ client: this
30
+ }), commandInput, ...rest);
31
+ };
32
+ }
33
+ }
34
+ for (const [waiterName, waiterFn] of Object.entries(waiters)) {
35
+ if (Client.prototype[waiterName] === void 0) {
36
+ Client.prototype[waiterName] = async function(commandInput = {}, waiterConfiguration, ...rest) {
37
+ let config = waiterConfiguration;
38
+ if (typeof waiterConfiguration === "number") {
39
+ config = {
40
+ maxWaitTime: waiterConfiguration
41
+ };
42
+ }
43
+ return waiterFn(__spreadProps(__spreadValues({}, config), {
44
+ client: this
45
+ }), commandInput, ...rest);
46
+ };
47
+ }
48
+ }
49
+ };
50
+
51
+ export {
52
+ createAggregatedClient
53
+ };
54
+ //# sourceMappingURL=chunk-GFVCNWVT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js"],"sourcesContent":["export const createAggregatedClient = (commands, Client, options) => {\n for (const [command, CommandCtor] of Object.entries(commands)) {\n const methodImpl = async function (args, optionsOrCb, cb) {\n const command = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n };\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client.prototype[methodName] = methodImpl;\n }\n const { paginators = {}, waiters = {} } = options ?? {};\n for (const [paginatorName, paginatorFn] of Object.entries(paginators)) {\n if (Client.prototype[paginatorName] === void 0) {\n Client.prototype[paginatorName] = function (commandInput = {}, paginationConfiguration, ...rest) {\n return paginatorFn({\n ...paginationConfiguration,\n client: this,\n }, commandInput, ...rest);\n };\n }\n }\n for (const [waiterName, waiterFn] of Object.entries(waiters)) {\n if (Client.prototype[waiterName] === void 0) {\n Client.prototype[waiterName] = async function (commandInput = {}, waiterConfiguration, ...rest) {\n let config = waiterConfiguration;\n if (typeof waiterConfiguration === \"number\") {\n config = {\n maxWaitTime: waiterConfiguration,\n };\n }\n return waiterFn({\n ...config,\n client: this,\n }, commandInput, ...rest);\n };\n }\n }\n};\n"],"mappings":";;;;;;AAAO,IAAM,yBAAyB,CAAC,UAAU,QAAQ,YAAY;AACjE,aAAW,CAAC,SAAS,WAAW,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC3D,UAAM,aAAa,eAAgB,MAAM,aAAa,IAAI;AACtD,YAAMA,WAAU,IAAI,YAAY,IAAI;AACpC,UAAI,OAAO,gBAAgB,YAAY;AACnC,aAAK,KAAKA,UAAS,WAAW;AAAA,MAClC,WACS,OAAO,OAAO,YAAY;AAC/B,YAAI,OAAO,gBAAgB;AACvB,gBAAM,IAAI,MAAM,iCAAiC,OAAO,WAAW,EAAE;AACzE,aAAK,KAAKA,UAAS,eAAe,CAAC,GAAG,EAAE;AAAA,MAC5C,OACK;AACD,eAAO,KAAK,KAAKA,UAAS,WAAW;AAAA,MACzC;AAAA,IACJ;AACA,UAAM,cAAc,QAAQ,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC,GAAG,QAAQ,YAAY,EAAE;AACvF,WAAO,UAAU,UAAU,IAAI;AAAA,EACnC;AACA,QAAM,EAAE,aAAa,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,4BAAW,CAAC;AACtD,aAAW,CAAC,eAAe,WAAW,KAAK,OAAO,QAAQ,UAAU,GAAG;AACnE,QAAI,OAAO,UAAU,aAAa,MAAM,QAAQ;AAC5C,aAAO,UAAU,aAAa,IAAI,SAAU,eAAe,CAAC,GAAG,4BAA4B,MAAM;AAC7F,eAAO,YAAY,iCACZ,0BADY;AAAA,UAEf,QAAQ;AAAA,QACZ,IAAG,cAAc,GAAG,IAAI;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACA,aAAW,CAAC,YAAY,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC1D,QAAI,OAAO,UAAU,UAAU,MAAM,QAAQ;AACzC,aAAO,UAAU,UAAU,IAAI,eAAgB,eAAe,CAAC,GAAG,wBAAwB,MAAM;AAC5F,YAAI,SAAS;AACb,YAAI,OAAO,wBAAwB,UAAU;AACzC,mBAAS;AAAA,YACL,aAAa;AAAA,UACjB;AAAA,QACJ;AACA,eAAO,SAAS,iCACT,SADS;AAAA,UAEZ,QAAQ;AAAA,QACZ,IAAG,cAAc,GAAG,IAAI;AAAA,MAC5B;AAAA,IACJ;AAAA,EACJ;AACJ;","names":["command"]}