@junando/core 0.11.0 → 0.11.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 (44) hide show
  1. package/dist/index.d.ts +729 -1928
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +1866 -10363
  4. package/dist/index.js.map +1 -0
  5. package/dist/rolldown-runtime-D7D4PA-g.js +13 -0
  6. package/dist/shared/metrics/index.d.ts +29 -0
  7. package/dist/shared/metrics/index.d.ts.map +1 -0
  8. package/dist/shared/metrics/index.js +131 -0
  9. package/dist/shared/metrics/index.js.map +1 -0
  10. package/package.json +11 -11
  11. package/dist/chunk-3OJNTHWB.js +0 -225
  12. package/dist/chunk-5LNMHOUT.js +0 -229
  13. package/dist/chunk-72FU6SG6.js +0 -236
  14. package/dist/chunk-7SYJ764U.js +0 -579
  15. package/dist/chunk-AZU6S4RC.js +0 -11
  16. package/dist/chunk-BGPI5BQ5.js +0 -27
  17. package/dist/chunk-DKQSWD3S.js +0 -46
  18. package/dist/chunk-H4ND7Z4R.js +0 -504
  19. package/dist/chunk-HVICRLMN.js +0 -742
  20. package/dist/chunk-ID7PWYSN.js +0 -12
  21. package/dist/chunk-KU245W3C.js +0 -16
  22. package/dist/chunk-L67CO4EG.js +0 -1038
  23. package/dist/chunk-MLKGABMK.js +0 -9
  24. package/dist/chunk-MQ4JUE6V.js +0 -447
  25. package/dist/chunk-N5AJP37P.js +0 -385
  26. package/dist/chunk-SIDCDO4Q.js +0 -1315
  27. package/dist/chunk-TDZF3WAT.js +0 -3824
  28. package/dist/chunk-VMBT3R2K.js +0 -0
  29. package/dist/chunk-WWHXKECU.js +0 -100
  30. package/dist/chunk-ZKH7AMP3.js +0 -42
  31. package/dist/chunk-ZOU3QHNL.js +0 -28
  32. package/dist/dist-es-CBFEDVZZ.js +0 -493
  33. package/dist/dist-es-ROXOWRKX.js +0 -22
  34. package/dist/dist-es-S3QCFNII.js +0 -327
  35. package/dist/dist-es-SQCUDQ4Y.js +0 -90
  36. package/dist/dist-es-UWOSB3KA.js +0 -72
  37. package/dist/dist-es-VXERFT35.js +0 -172
  38. package/dist/dist-es-Y44CAW7E.js +0 -385
  39. package/dist/event-streams-2IMLK3TK.js +0 -252
  40. package/dist/event-streams-NLZW3NHF.js +0 -1376
  41. package/dist/loadSso-T6VCDGCZ.js +0 -558
  42. package/dist/signin-BC6ZNJCV.js +0 -653
  43. package/dist/sso-oidc-PTS5E3NX.js +0 -793
  44. package/dist/sts-JSJ57UXB.js +0 -6108
@@ -1,385 +0,0 @@
1
- import {
2
- CredentialsProviderError
3
- } from "./chunk-KU245W3C.js";
4
- import {
5
- loadConfig
6
- } from "./chunk-SIDCDO4Q.js";
7
- import "./chunk-AZU6S4RC.js";
8
- import "./chunk-L67CO4EG.js";
9
- import {
10
- parseUrl
11
- } from "./chunk-5LNMHOUT.js";
12
- import "./chunk-MQ4JUE6V.js";
13
- import {
14
- ProviderError
15
- } from "./chunk-BGPI5BQ5.js";
16
- import "./chunk-MLKGABMK.js";
17
-
18
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js
19
- import { parse } from "url";
20
-
21
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/httpRequest.js
22
- import { Buffer } from "buffer";
23
- import { request } from "http";
24
- function httpRequest(options) {
25
- return new Promise((resolve, reject) => {
26
- const req = request({
27
- method: "GET",
28
- ...options,
29
- hostname: options.hostname?.replace(/^\[(.+)\]$/, "$1")
30
- });
31
- req.on("error", (err) => {
32
- reject(Object.assign(new ProviderError("Unable to connect to instance metadata service"), err));
33
- req.destroy();
34
- });
35
- req.on("timeout", () => {
36
- reject(new ProviderError("TimeoutError from instance metadata service"));
37
- req.destroy();
38
- });
39
- req.on("response", (res) => {
40
- const { statusCode = 400 } = res;
41
- if (statusCode < 200 || 300 <= statusCode) {
42
- reject(Object.assign(new ProviderError("Error response received from instance metadata service"), { statusCode }));
43
- req.destroy();
44
- }
45
- const chunks = [];
46
- res.on("data", (chunk) => {
47
- chunks.push(chunk);
48
- });
49
- res.on("end", () => {
50
- resolve(Buffer.concat(chunks));
51
- req.destroy();
52
- });
53
- });
54
- req.end();
55
- });
56
- }
57
-
58
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/ImdsCredentials.js
59
- var isImdsCredentials = (arg) => Boolean(arg) && typeof arg === "object" && typeof arg.AccessKeyId === "string" && typeof arg.SecretAccessKey === "string" && typeof arg.Token === "string" && typeof arg.Expiration === "string";
60
- var fromImdsCredentials = (creds) => ({
61
- accessKeyId: creds.AccessKeyId,
62
- secretAccessKey: creds.SecretAccessKey,
63
- sessionToken: creds.Token,
64
- expiration: new Date(creds.Expiration),
65
- ...creds.AccountId && { accountId: creds.AccountId }
66
- });
67
-
68
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/RemoteProviderInit.js
69
- var DEFAULT_TIMEOUT = 1e3;
70
- var DEFAULT_MAX_RETRIES = 0;
71
- var providerConfigFromInit = ({ maxRetries = DEFAULT_MAX_RETRIES, timeout = DEFAULT_TIMEOUT }) => ({ maxRetries, timeout });
72
-
73
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/remoteProvider/retry.js
74
- var retry = (toRetry, maxRetries) => {
75
- let promise = toRetry();
76
- for (let i = 0; i < maxRetries; i++) {
77
- promise = promise.catch(toRetry);
78
- }
79
- return promise;
80
- };
81
-
82
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/fromContainerMetadata.js
83
- var ENV_CMDS_FULL_URI = "AWS_CONTAINER_CREDENTIALS_FULL_URI";
84
- var ENV_CMDS_RELATIVE_URI = "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI";
85
- var ENV_CMDS_AUTH_TOKEN = "AWS_CONTAINER_AUTHORIZATION_TOKEN";
86
- var fromContainerMetadata = (init = {}) => {
87
- const { timeout, maxRetries } = providerConfigFromInit(init);
88
- return () => retry(async () => {
89
- const requestOptions = await getCmdsUri({ logger: init.logger });
90
- const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));
91
- if (!isImdsCredentials(credsResponse)) {
92
- throw new CredentialsProviderError("Invalid response received from instance metadata service.", {
93
- logger: init.logger
94
- });
95
- }
96
- return fromImdsCredentials(credsResponse);
97
- }, maxRetries);
98
- };
99
- var requestFromEcsImds = async (timeout, options) => {
100
- if (process.env[ENV_CMDS_AUTH_TOKEN]) {
101
- options.headers = {
102
- ...options.headers,
103
- Authorization: process.env[ENV_CMDS_AUTH_TOKEN]
104
- };
105
- }
106
- const buffer = await httpRequest({
107
- ...options,
108
- timeout
109
- });
110
- return buffer.toString();
111
- };
112
- var CMDS_IP = "169.254.170.2";
113
- var GREENGRASS_HOSTS = {
114
- localhost: true,
115
- "127.0.0.1": true
116
- };
117
- var GREENGRASS_PROTOCOLS = {
118
- "http:": true,
119
- "https:": true
120
- };
121
- var getCmdsUri = async ({ logger }) => {
122
- if (process.env[ENV_CMDS_RELATIVE_URI]) {
123
- return {
124
- hostname: CMDS_IP,
125
- path: process.env[ENV_CMDS_RELATIVE_URI]
126
- };
127
- }
128
- if (process.env[ENV_CMDS_FULL_URI]) {
129
- const parsed = parse(process.env[ENV_CMDS_FULL_URI]);
130
- if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {
131
- throw new CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, {
132
- tryNextLink: false,
133
- logger
134
- });
135
- }
136
- if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {
137
- throw new CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, {
138
- tryNextLink: false,
139
- logger
140
- });
141
- }
142
- return {
143
- ...parsed,
144
- port: parsed.port ? parseInt(parsed.port, 10) : void 0
145
- };
146
- }
147
- throw new CredentialsProviderError(`The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`, {
148
- tryNextLink: false,
149
- logger
150
- });
151
- };
152
-
153
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/error/InstanceMetadataV1FallbackError.js
154
- var InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends CredentialsProviderError {
155
- tryNextLink;
156
- name = "InstanceMetadataV1FallbackError";
157
- constructor(message, tryNextLink = true) {
158
- super(message, tryNextLink);
159
- this.tryNextLink = tryNextLink;
160
- Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype);
161
- }
162
- };
163
-
164
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/config/Endpoint.js
165
- var Endpoint;
166
- (function(Endpoint2) {
167
- Endpoint2["IPv4"] = "http://169.254.169.254";
168
- Endpoint2["IPv6"] = "http://[fd00:ec2::254]";
169
- })(Endpoint || (Endpoint = {}));
170
-
171
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointConfigOptions.js
172
- var ENV_ENDPOINT_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT";
173
- var CONFIG_ENDPOINT_NAME = "ec2_metadata_service_endpoint";
174
- var ENDPOINT_CONFIG_OPTIONS = {
175
- environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],
176
- configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],
177
- default: void 0
178
- };
179
-
180
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointMode.js
181
- var EndpointMode;
182
- (function(EndpointMode2) {
183
- EndpointMode2["IPv4"] = "IPv4";
184
- EndpointMode2["IPv6"] = "IPv6";
185
- })(EndpointMode || (EndpointMode = {}));
186
-
187
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/config/EndpointModeConfigOptions.js
188
- var ENV_ENDPOINT_MODE_NAME = "AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE";
189
- var CONFIG_ENDPOINT_MODE_NAME = "ec2_metadata_service_endpoint_mode";
190
- var ENDPOINT_MODE_CONFIG_OPTIONS = {
191
- environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],
192
- configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],
193
- default: EndpointMode.IPv4
194
- };
195
-
196
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/utils/getInstanceMetadataEndpoint.js
197
- var getInstanceMetadataEndpoint = async () => parseUrl(await getFromEndpointConfig() || await getFromEndpointModeConfig());
198
- var getFromEndpointConfig = async () => loadConfig(ENDPOINT_CONFIG_OPTIONS)();
199
- var getFromEndpointModeConfig = async () => {
200
- const endpointMode = await loadConfig(ENDPOINT_MODE_CONFIG_OPTIONS)();
201
- switch (endpointMode) {
202
- case EndpointMode.IPv4:
203
- return Endpoint.IPv4;
204
- case EndpointMode.IPv6:
205
- return Endpoint.IPv6;
206
- default:
207
- throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`);
208
- }
209
- };
210
-
211
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/utils/getExtendedInstanceMetadataCredentials.js
212
- var STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;
213
- var STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;
214
- var STATIC_STABILITY_DOC_URL = "https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html";
215
- var getExtendedInstanceMetadataCredentials = (credentials, logger) => {
216
- const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);
217
- const newExpiration = new Date(Date.now() + refreshInterval * 1e3);
218
- logger.warn(`Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.
219
- For more information, please visit: ` + STATIC_STABILITY_DOC_URL);
220
- const originalExpiration = credentials.originalExpiration ?? credentials.expiration;
221
- return {
222
- ...credentials,
223
- ...originalExpiration ? { originalExpiration } : {},
224
- expiration: newExpiration
225
- };
226
- };
227
-
228
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/utils/staticStabilityProvider.js
229
- var staticStabilityProvider = (provider, options = {}) => {
230
- const logger = options?.logger || console;
231
- let pastCredentials;
232
- return async () => {
233
- let credentials;
234
- try {
235
- credentials = await provider();
236
- if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {
237
- credentials = getExtendedInstanceMetadataCredentials(credentials, logger);
238
- }
239
- } catch (e) {
240
- if (pastCredentials) {
241
- logger.warn("Credential renew failed: ", e);
242
- credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);
243
- } else {
244
- throw e;
245
- }
246
- }
247
- pastCredentials = credentials;
248
- return credentials;
249
- };
250
- };
251
-
252
- // ../../node_modules/.pnpm/@smithy+credential-provider-imds@4.2.14/node_modules/@smithy/credential-provider-imds/dist-es/fromInstanceMetadata.js
253
- var IMDS_PATH = "/latest/meta-data/iam/security-credentials/";
254
- var IMDS_TOKEN_PATH = "/latest/api/token";
255
- var AWS_EC2_METADATA_V1_DISABLED = "AWS_EC2_METADATA_V1_DISABLED";
256
- var PROFILE_AWS_EC2_METADATA_V1_DISABLED = "ec2_metadata_v1_disabled";
257
- var X_AWS_EC2_METADATA_TOKEN = "x-aws-ec2-metadata-token";
258
- var fromInstanceMetadata = (init = {}) => staticStabilityProvider(getInstanceMetadataProvider(init), { logger: init.logger });
259
- var getInstanceMetadataProvider = (init = {}) => {
260
- let disableFetchToken = false;
261
- const { logger, profile } = init;
262
- const { timeout, maxRetries } = providerConfigFromInit(init);
263
- const getCredentials = async (maxRetries2, options) => {
264
- const isImdsV1Fallback = disableFetchToken || options.headers?.[X_AWS_EC2_METADATA_TOKEN] == null;
265
- if (isImdsV1Fallback) {
266
- let fallbackBlockedFromProfile = false;
267
- let fallbackBlockedFromProcessEnv = false;
268
- const configValue = await loadConfig({
269
- environmentVariableSelector: (env) => {
270
- const envValue = env[AWS_EC2_METADATA_V1_DISABLED];
271
- fallbackBlockedFromProcessEnv = !!envValue && envValue !== "false";
272
- if (envValue === void 0) {
273
- throw new CredentialsProviderError(`${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`, { logger: init.logger });
274
- }
275
- return fallbackBlockedFromProcessEnv;
276
- },
277
- configFileSelector: (profile2) => {
278
- const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED];
279
- fallbackBlockedFromProfile = !!profileValue && profileValue !== "false";
280
- return fallbackBlockedFromProfile;
281
- },
282
- default: false
283
- }, {
284
- profile
285
- })();
286
- if (init.ec2MetadataV1Disabled || configValue) {
287
- const causes = [];
288
- if (init.ec2MetadataV1Disabled)
289
- causes.push("credential provider initialization (runtime option ec2MetadataV1Disabled)");
290
- if (fallbackBlockedFromProfile)
291
- causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);
292
- if (fallbackBlockedFromProcessEnv)
293
- causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);
294
- throw new InstanceMetadataV1FallbackError(`AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(", ")}].`);
295
- }
296
- }
297
- const imdsProfile = (await retry(async () => {
298
- let profile2;
299
- try {
300
- profile2 = await getProfile(options);
301
- } catch (err) {
302
- if (err.statusCode === 401) {
303
- disableFetchToken = false;
304
- }
305
- throw err;
306
- }
307
- return profile2;
308
- }, maxRetries2)).trim();
309
- return retry(async () => {
310
- let creds;
311
- try {
312
- creds = await getCredentialsFromProfile(imdsProfile, options, init);
313
- } catch (err) {
314
- if (err.statusCode === 401) {
315
- disableFetchToken = false;
316
- }
317
- throw err;
318
- }
319
- return creds;
320
- }, maxRetries2);
321
- };
322
- return async () => {
323
- const endpoint = await getInstanceMetadataEndpoint();
324
- if (disableFetchToken) {
325
- logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (no token fetch)");
326
- return getCredentials(maxRetries, { ...endpoint, timeout });
327
- } else {
328
- let token;
329
- try {
330
- token = (await getMetadataToken({ ...endpoint, timeout })).toString();
331
- } catch (error) {
332
- if (error?.statusCode === 400) {
333
- throw Object.assign(error, {
334
- message: "EC2 Metadata token request returned error"
335
- });
336
- } else if (error.message === "TimeoutError" || [403, 404, 405].includes(error.statusCode)) {
337
- disableFetchToken = true;
338
- }
339
- logger?.debug("AWS SDK Instance Metadata", "using v1 fallback (initial)");
340
- return getCredentials(maxRetries, { ...endpoint, timeout });
341
- }
342
- return getCredentials(maxRetries, {
343
- ...endpoint,
344
- headers: {
345
- [X_AWS_EC2_METADATA_TOKEN]: token
346
- },
347
- timeout
348
- });
349
- }
350
- };
351
- };
352
- var getMetadataToken = async (options) => httpRequest({
353
- ...options,
354
- path: IMDS_TOKEN_PATH,
355
- method: "PUT",
356
- headers: {
357
- "x-aws-ec2-metadata-token-ttl-seconds": "21600"
358
- }
359
- });
360
- var getProfile = async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString();
361
- var getCredentialsFromProfile = async (profile, options, init) => {
362
- const credentialsResponse = JSON.parse((await httpRequest({
363
- ...options,
364
- path: IMDS_PATH + profile
365
- })).toString());
366
- if (!isImdsCredentials(credentialsResponse)) {
367
- throw new CredentialsProviderError("Invalid response received from instance metadata service.", {
368
- logger: init.logger
369
- });
370
- }
371
- return fromImdsCredentials(credentialsResponse);
372
- };
373
- export {
374
- DEFAULT_MAX_RETRIES,
375
- DEFAULT_TIMEOUT,
376
- ENV_CMDS_AUTH_TOKEN,
377
- ENV_CMDS_FULL_URI,
378
- ENV_CMDS_RELATIVE_URI,
379
- Endpoint,
380
- fromContainerMetadata,
381
- fromInstanceMetadata,
382
- getInstanceMetadataEndpoint,
383
- httpRequest,
384
- providerConfigFromInit
385
- };
@@ -1,252 +0,0 @@
1
- import {
2
- fromUtf8,
3
- toUtf8
4
- } from "./chunk-ZKH7AMP3.js";
5
- import "./chunk-MLKGABMK.js";
6
-
7
- // ../../node_modules/.pnpm/@smithy+core@3.23.17/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js
8
- var EventStreamSerde = class {
9
- marshaller;
10
- serializer;
11
- deserializer;
12
- serdeContext;
13
- defaultContentType;
14
- constructor({ marshaller, serializer, deserializer, serdeContext, defaultContentType }) {
15
- this.marshaller = marshaller;
16
- this.serializer = serializer;
17
- this.deserializer = deserializer;
18
- this.serdeContext = serdeContext;
19
- this.defaultContentType = defaultContentType;
20
- }
21
- async serializeEventStream({ eventStream, requestSchema, initialRequest }) {
22
- const marshaller = this.marshaller;
23
- const eventStreamMember = requestSchema.getEventStreamMember();
24
- const unionSchema = requestSchema.getMemberSchema(eventStreamMember);
25
- const serializer = this.serializer;
26
- const defaultContentType = this.defaultContentType;
27
- const initialRequestMarker = /* @__PURE__ */ Symbol("initialRequestMarker");
28
- const eventStreamIterable = {
29
- async *[Symbol.asyncIterator]() {
30
- if (initialRequest) {
31
- const headers = {
32
- ":event-type": { type: "string", value: "initial-request" },
33
- ":message-type": { type: "string", value: "event" },
34
- ":content-type": { type: "string", value: defaultContentType }
35
- };
36
- serializer.write(requestSchema, initialRequest);
37
- const body = serializer.flush();
38
- yield {
39
- [initialRequestMarker]: true,
40
- headers,
41
- body
42
- };
43
- }
44
- for await (const page of eventStream) {
45
- yield page;
46
- }
47
- }
48
- };
49
- return marshaller.serialize(eventStreamIterable, (event) => {
50
- if (event[initialRequestMarker]) {
51
- return {
52
- headers: event.headers,
53
- body: event.body
54
- };
55
- }
56
- let unionMember = "";
57
- for (const key in event) {
58
- if (key !== "__type") {
59
- unionMember = key;
60
- break;
61
- }
62
- }
63
- const { additionalHeaders, body, eventType, explicitPayloadContentType } = this.writeEventBody(unionMember, unionSchema, event);
64
- const headers = {
65
- ":event-type": { type: "string", value: eventType },
66
- ":message-type": { type: "string", value: "event" },
67
- ":content-type": { type: "string", value: explicitPayloadContentType ?? defaultContentType },
68
- ...additionalHeaders
69
- };
70
- return {
71
- headers,
72
- body
73
- };
74
- });
75
- }
76
- async deserializeEventStream({ response, responseSchema, initialResponseContainer }) {
77
- const marshaller = this.marshaller;
78
- const eventStreamMember = responseSchema.getEventStreamMember();
79
- const unionSchema = responseSchema.getMemberSchema(eventStreamMember);
80
- const memberSchemas = unionSchema.getMemberSchemas();
81
- const initialResponseMarker = /* @__PURE__ */ Symbol("initialResponseMarker");
82
- const asyncIterable = marshaller.deserialize(response.body, async (event) => {
83
- let unionMember = "";
84
- for (const key in event) {
85
- if (key !== "__type") {
86
- unionMember = key;
87
- break;
88
- }
89
- }
90
- const body = event[unionMember].body;
91
- if (unionMember === "initial-response") {
92
- const dataObject = await this.deserializer.read(responseSchema, body);
93
- delete dataObject[eventStreamMember];
94
- return {
95
- [initialResponseMarker]: true,
96
- ...dataObject
97
- };
98
- } else if (unionMember in memberSchemas) {
99
- const eventStreamSchema = memberSchemas[unionMember];
100
- if (eventStreamSchema.isStructSchema()) {
101
- const out = {};
102
- let hasBindings = false;
103
- for (const [name, member] of eventStreamSchema.structIterator()) {
104
- const { eventHeader, eventPayload } = member.getMergedTraits();
105
- hasBindings = hasBindings || Boolean(eventHeader || eventPayload);
106
- if (eventPayload) {
107
- if (member.isBlobSchema()) {
108
- out[name] = body;
109
- } else if (member.isStringSchema()) {
110
- out[name] = (this.serdeContext?.utf8Encoder ?? toUtf8)(body);
111
- } else if (member.isStructSchema()) {
112
- out[name] = await this.deserializer.read(member, body);
113
- }
114
- } else if (eventHeader) {
115
- const value = event[unionMember].headers[name]?.value;
116
- if (value != null) {
117
- if (member.isNumericSchema()) {
118
- if (value && typeof value === "object" && "bytes" in value) {
119
- out[name] = BigInt(value.toString());
120
- } else {
121
- out[name] = Number(value);
122
- }
123
- } else {
124
- out[name] = value;
125
- }
126
- }
127
- }
128
- }
129
- if (hasBindings) {
130
- return {
131
- [unionMember]: out
132
- };
133
- }
134
- if (body.byteLength === 0) {
135
- return {
136
- [unionMember]: {}
137
- };
138
- }
139
- }
140
- return {
141
- [unionMember]: await this.deserializer.read(eventStreamSchema, body)
142
- };
143
- } else {
144
- return {
145
- $unknown: event
146
- };
147
- }
148
- });
149
- const asyncIterator = asyncIterable[Symbol.asyncIterator]();
150
- const firstEvent = await asyncIterator.next();
151
- if (firstEvent.done) {
152
- return asyncIterable;
153
- }
154
- if (firstEvent.value?.[initialResponseMarker]) {
155
- if (!responseSchema) {
156
- throw new Error("@smithy::core/protocols - initial-response event encountered in event stream but no response schema given.");
157
- }
158
- for (const key in firstEvent.value) {
159
- initialResponseContainer[key] = firstEvent.value[key];
160
- }
161
- }
162
- return {
163
- async *[Symbol.asyncIterator]() {
164
- if (!firstEvent?.value?.[initialResponseMarker]) {
165
- yield firstEvent.value;
166
- }
167
- while (true) {
168
- const { done, value } = await asyncIterator.next();
169
- if (done) {
170
- break;
171
- }
172
- yield value;
173
- }
174
- }
175
- };
176
- }
177
- writeEventBody(unionMember, unionSchema, event) {
178
- const serializer = this.serializer;
179
- let eventType = unionMember;
180
- let explicitPayloadMember = null;
181
- let explicitPayloadContentType;
182
- const isKnownSchema = (() => {
183
- const struct = unionSchema.getSchema();
184
- return struct[4].includes(unionMember);
185
- })();
186
- const additionalHeaders = {};
187
- if (!isKnownSchema) {
188
- const [type, value] = event[unionMember];
189
- eventType = type;
190
- serializer.write(15, value);
191
- } else {
192
- const eventSchema = unionSchema.getMemberSchema(unionMember);
193
- if (eventSchema.isStructSchema()) {
194
- for (const [memberName, memberSchema] of eventSchema.structIterator()) {
195
- const { eventHeader, eventPayload } = memberSchema.getMergedTraits();
196
- if (eventPayload) {
197
- explicitPayloadMember = memberName;
198
- } else if (eventHeader) {
199
- const value = event[unionMember][memberName];
200
- let type = "binary";
201
- if (memberSchema.isNumericSchema()) {
202
- if ((-2) ** 31 <= value && value <= 2 ** 31 - 1) {
203
- type = "integer";
204
- } else {
205
- type = "long";
206
- }
207
- } else if (memberSchema.isTimestampSchema()) {
208
- type = "timestamp";
209
- } else if (memberSchema.isStringSchema()) {
210
- type = "string";
211
- } else if (memberSchema.isBooleanSchema()) {
212
- type = "boolean";
213
- }
214
- if (value != null) {
215
- additionalHeaders[memberName] = {
216
- type,
217
- value
218
- };
219
- delete event[unionMember][memberName];
220
- }
221
- }
222
- }
223
- if (explicitPayloadMember !== null) {
224
- const payloadSchema = eventSchema.getMemberSchema(explicitPayloadMember);
225
- if (payloadSchema.isBlobSchema()) {
226
- explicitPayloadContentType = "application/octet-stream";
227
- } else if (payloadSchema.isStringSchema()) {
228
- explicitPayloadContentType = "text/plain";
229
- }
230
- serializer.write(payloadSchema, event[unionMember][explicitPayloadMember]);
231
- } else {
232
- serializer.write(eventSchema, event[unionMember]);
233
- }
234
- } else if (eventSchema.isUnitSchema()) {
235
- serializer.write(eventSchema, {});
236
- } else {
237
- throw new Error("@smithy/core/event-streams - non-struct member not supported in event stream union.");
238
- }
239
- }
240
- const messageSerialization = serializer.flush() ?? new Uint8Array();
241
- const body = typeof messageSerialization === "string" ? (this.serdeContext?.utf8Decoder ?? fromUtf8)(messageSerialization) : messageSerialization;
242
- return {
243
- body,
244
- eventType,
245
- explicitPayloadContentType,
246
- additionalHeaders
247
- };
248
- }
249
- };
250
- export {
251
- EventStreamSerde
252
- };