@aws-amplify/api-graphql 4.0.2-unstable.51ed7b4.0 → 4.0.2-unstable.a5eb335.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/cjs/GraphQLAPI.js +1 -1
  2. package/dist/cjs/GraphQLAPI.js.map +1 -1
  3. package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js +1 -1
  4. package/dist/cjs/Providers/AWSAppSyncRealTimeProvider/index.js.map +1 -1
  5. package/dist/cjs/internals/APIClient.js +70 -45
  6. package/dist/cjs/internals/APIClient.js.map +1 -1
  7. package/dist/cjs/internals/InternalGraphQLAPI.js +13 -22
  8. package/dist/cjs/internals/InternalGraphQLAPI.js.map +1 -1
  9. package/dist/cjs/internals/generateModelsProperty.js +1 -1
  10. package/dist/cjs/internals/generateModelsProperty.js.map +1 -1
  11. package/dist/cjs/internals/operations/get.js +5 -5
  12. package/dist/cjs/internals/operations/get.js.map +1 -1
  13. package/dist/cjs/internals/operations/list.js +5 -5
  14. package/dist/cjs/internals/operations/list.js.map +1 -1
  15. package/dist/cjs/internals/operations/observeQuery.js +2 -2
  16. package/dist/cjs/internals/operations/observeQuery.js.map +1 -1
  17. package/dist/cjs/internals/operations/subscription.js +2 -1
  18. package/dist/cjs/internals/operations/subscription.js.map +1 -1
  19. package/dist/cjs/internals/server/generateModelsProperty.js +4 -4
  20. package/dist/cjs/internals/server/generateModelsProperty.js.map +1 -1
  21. package/dist/esm/GraphQLAPI.mjs +1 -1
  22. package/dist/esm/GraphQLAPI.mjs.map +1 -1
  23. package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs +1 -1
  24. package/dist/esm/Providers/AWSAppSyncRealTimeProvider/index.mjs.map +1 -1
  25. package/dist/esm/internals/APIClient.d.ts +10 -19
  26. package/dist/esm/internals/APIClient.mjs +70 -45
  27. package/dist/esm/internals/APIClient.mjs.map +1 -1
  28. package/dist/esm/internals/InternalGraphQLAPI.d.ts +0 -11
  29. package/dist/esm/internals/InternalGraphQLAPI.mjs +13 -21
  30. package/dist/esm/internals/InternalGraphQLAPI.mjs.map +1 -1
  31. package/dist/esm/internals/generateModelsProperty.d.ts +1 -1
  32. package/dist/esm/internals/generateModelsProperty.mjs +1 -1
  33. package/dist/esm/internals/generateModelsProperty.mjs.map +1 -1
  34. package/dist/esm/internals/operations/get.d.ts +4 -1
  35. package/dist/esm/internals/operations/get.mjs +5 -5
  36. package/dist/esm/internals/operations/get.mjs.map +1 -1
  37. package/dist/esm/internals/operations/list.d.ts +3 -1
  38. package/dist/esm/internals/operations/list.mjs +5 -5
  39. package/dist/esm/internals/operations/list.mjs.map +1 -1
  40. package/dist/esm/internals/operations/observeQuery.d.ts +2 -1
  41. package/dist/esm/internals/operations/subscription.d.ts +3 -1
  42. package/dist/esm/internals/operations/subscription.mjs +2 -1
  43. package/dist/esm/internals/operations/subscription.mjs.map +1 -1
  44. package/dist/esm/internals/server/generateModelsProperty.d.ts +1 -1
  45. package/dist/esm/internals/server/generateModelsProperty.mjs +4 -4
  46. package/dist/esm/internals/server/generateModelsProperty.mjs.map +1 -1
  47. package/dist/esm/types/index.d.ts +10 -0
  48. package/package.json +8 -12
  49. package/src/GraphQLAPI.ts +2 -2
  50. package/src/Providers/AWSAppSyncRealTimeProvider/index.ts +9 -4
  51. package/src/internals/APIClient.ts +160 -104
  52. package/src/internals/InternalGraphQLAPI.ts +20 -30
  53. package/src/internals/generateModelsProperty.ts +8 -5
  54. package/src/internals/operations/get.ts +44 -34
  55. package/src/internals/operations/list.ts +38 -17
  56. package/src/internals/operations/observeQuery.ts +14 -10
  57. package/src/internals/operations/subscription.ts +13 -7
  58. package/src/internals/server/generateClient.ts +1 -1
  59. package/src/internals/server/generateModelsProperty.ts +18 -8
  60. package/src/types/index.ts +14 -0
  61. package/src/utils/ConnectionStateMonitor.ts +3 -1
  62. package/src/utils/findIndexByFields.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"observeQuery.js","sources":["../../../../src/internals/operations/observeQuery.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeQueryFactory = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst utils_1 = require(\"../../utils\");\nfunction observeQueryFactory(models, model) {\n const { name } = model;\n const observeQuery = (arg) => new rxjs_1.Observable(subscriber => {\n // what we'll be sending to our subscribers\n const items = [];\n // To enqueue subscription messages while we collect our initial\n // result set.\n const messageQueue = [];\n // operation to take when message(s) arrive.\n // this operation will be swapped out once initial \"sync\" is complete\n // to immediately ingest messsages.\n let receiveMessages = (...messages) => {\n return messageQueue.push(...messages);\n };\n // start subscriptions\n const onCreateSub = models[name].onCreate(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'create' });\n },\n error(error) {\n subscriber.error({ type: 'onCreate', error });\n },\n });\n const onUpdateSub = models[name].onUpdate(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'update' });\n },\n error(error) {\n subscriber.error({ type: 'onUpdate', error });\n },\n });\n const onDeleteSub = models[name].onDelete(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'delete' });\n },\n error(error) {\n subscriber.error({ type: 'onDelete', error });\n },\n });\n // consumes a list of messages and sends a snapshot\n function ingestMessages(messages) {\n for (const message of messages) {\n const idx = (0, utils_1.findIndexByFields)(message.item, items, pkFields);\n switch (message.type) {\n case 'create':\n if (idx < 0)\n items.push(message.item);\n break;\n case 'update':\n if (idx >= 0)\n items[idx] = message.item;\n break;\n case 'delete':\n if (idx >= 0)\n items.splice(idx, 1);\n break;\n default:\n console.error('Unrecognized message in observeQuery.', message);\n }\n }\n subscriber.next({\n items,\n isSynced: true,\n });\n }\n const pkFields = (0, utils_1.resolvePKFields)(model);\n // initial results\n (async () => {\n let firstPage = true;\n let nextToken = null;\n while (!subscriber.closed && (firstPage || nextToken)) {\n firstPage = false;\n const { data: page, errors, nextToken: _nextToken, } = await models[name].list({ ...arg, nextToken });\n nextToken = _nextToken;\n items.push(...page);\n // if there are no more pages and no items we already know about\n // that need to be merged in from sub, we're \"synced\"\n const isSynced = messageQueue.length === 0 &&\n (nextToken === null || nextToken === undefined);\n subscriber.next({\n items,\n isSynced,\n });\n if (Array.isArray(errors)) {\n for (const error of errors) {\n subscriber.error(error);\n }\n }\n }\n // play through the queue\n if (messageQueue.length > 0) {\n ingestMessages(messageQueue);\n }\n // switch the queue to write directly to the items collection\n receiveMessages = (...messages) => {\n ingestMessages(messages);\n return items.length;\n };\n })();\n // when subscriber unsubscribes, tear down internal subs\n return () => {\n // 1. tear down internal subs\n onCreateSub.unsubscribe();\n onUpdateSub.unsubscribe();\n onDeleteSub.unsubscribe();\n // 2. there is no need to explicitly stop paging. instead, we\n // just check `subscriber.closed` above before fetching each page.\n };\n });\n return observeQuery;\n}\nexports.observeQueryFactory = observeQueryFactory;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observeQuery.js","sources":["../../../../src/internals/operations/observeQuery.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observeQueryFactory = void 0;\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nconst rxjs_1 = require(\"rxjs\");\nconst utils_1 = require(\"../../utils\");\nfunction observeQueryFactory(models, model) {\n const { name } = model;\n const observeQuery = (arg) => new rxjs_1.Observable(subscriber => {\n // what we'll be sending to our subscribers\n const items = [];\n // To enqueue subscription messages while we collect our initial\n // result set.\n const messageQueue = [];\n // operation to take when message(s) arrive.\n // this operation will be swapped out once initial \"sync\" is complete\n // to immediately ingest messsages.\n let receiveMessages = (...messages) => {\n return messageQueue.push(...messages);\n };\n // start subscriptions\n const onCreateSub = models[name].onCreate(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'create' });\n },\n error(error) {\n subscriber.error({ type: 'onCreate', error });\n },\n });\n const onUpdateSub = models[name].onUpdate(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'update' });\n },\n error(error) {\n subscriber.error({ type: 'onUpdate', error });\n },\n });\n const onDeleteSub = models[name].onDelete(arg).subscribe({\n next(item) {\n receiveMessages({ item, type: 'delete' });\n },\n error(error) {\n subscriber.error({ type: 'onDelete', error });\n },\n });\n // consumes a list of messages and sends a snapshot\n function ingestMessages(messages) {\n for (const message of messages) {\n const idx = (0, utils_1.findIndexByFields)(message.item, items, pkFields);\n switch (message.type) {\n case 'create':\n if (idx < 0)\n items.push(message.item);\n break;\n case 'update':\n if (idx >= 0)\n items[idx] = message.item;\n break;\n case 'delete':\n if (idx >= 0)\n items.splice(idx, 1);\n break;\n default:\n console.error('Unrecognized message in observeQuery.', message);\n }\n }\n subscriber.next({\n items,\n isSynced: true,\n });\n }\n const pkFields = (0, utils_1.resolvePKFields)(model);\n // initial results\n (async () => {\n let firstPage = true;\n let nextToken = null;\n while (!subscriber.closed && (firstPage || nextToken)) {\n firstPage = false;\n const { data: page, errors, nextToken: _nextToken, } = await models[name].list({ ...arg, nextToken });\n nextToken = _nextToken;\n items.push(...page);\n // if there are no more pages and no items we already know about\n // that need to be merged in from sub, we're \"synced\"\n const isSynced = messageQueue.length === 0 &&\n (nextToken === null || nextToken === undefined);\n subscriber.next({\n items,\n isSynced,\n });\n if (Array.isArray(errors)) {\n for (const error of errors) {\n subscriber.error(error);\n }\n }\n }\n // play through the queue\n if (messageQueue.length > 0) {\n ingestMessages(messageQueue);\n }\n // switch the queue to write directly to the items collection\n receiveMessages = (...messages) => {\n ingestMessages(messages);\n return items.length;\n };\n })();\n // when subscriber unsubscribes, tear down internal subs\n return () => {\n // 1. tear down internal subs\n onCreateSub.unsubscribe();\n onUpdateSub.unsubscribe();\n onDeleteSub.unsubscribe();\n // 2. there is no need to explicitly stop paging. instead, we\n // just check `subscriber.closed` above before fetching each page.\n };\n });\n return observeQuery;\n}\nexports.observeQueryFactory = observeQueryFactory;\n"],"names":[],"mappings":"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"}
@@ -19,7 +19,8 @@ function subscriptionFactory(client, modelIntrospection, model, operation) {
19
19
  });
20
20
  return observable.pipe((0, rxjs_1.map)(value => {
21
21
  const [key] = Object.keys(value.data);
22
- const [initialized] = (0, APIClient_1.initializeModel)(client, name, [value.data[key]], modelIntrospection, auth.authMode, auth.authToken);
22
+ const data = value.data[key];
23
+ const [initialized] = (0, APIClient_1.initializeModel)(client, name, [data], modelIntrospection, auth.authMode, auth.authToken);
23
24
  return initialized;
24
25
  }));
25
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.js","sources":["../../../../src/internals/operations/subscription.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscriptionFactory = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst APIClient_1 = require(\"../APIClient\");\nfunction subscriptionFactory(client, modelIntrospection, model, operation) {\n const { name } = model;\n const subscription = (args) => {\n const query = (0, APIClient_1.generateGraphQLDocument)(modelIntrospection.models, name, operation);\n const variables = (0, APIClient_1.buildGraphQLVariables)(model, operation, args, modelIntrospection);\n const auth = (0, APIClient_1.authModeParams)(client, args);\n const observable = client.graphql({\n ...auth,\n query,\n variables,\n });\n return observable.pipe((0, rxjs_1.map)(value => {\n const [key] = Object.keys(value.data);\n const [initialized] = (0, APIClient_1.initializeModel)(client, name, [value.data[key]], modelIntrospection, auth.authMode, auth.authToken);\n return initialized;\n }));\n };\n return subscription;\n}\nexports.subscriptionFactory = subscriptionFactory;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,SAAS,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;AAC3E,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,YAAY,GAAG,CAAC,IAAI,KAAK;AACnC,QAAQ,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3G,QAAQ,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAC7G,QAAQ,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnE,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1C,YAAY,GAAG,IAAI;AACnB,YAAY,KAAK;AACjB,YAAY,SAAS;AACrB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI;AACxD,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACvJ,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC;AACD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB;;"}
1
+ {"version":3,"file":"subscription.js","sources":["../../../../src/internals/operations/subscription.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subscriptionFactory = void 0;\nconst rxjs_1 = require(\"rxjs\");\nconst APIClient_1 = require(\"../APIClient\");\nfunction subscriptionFactory(client, modelIntrospection, model, operation) {\n const { name } = model;\n const subscription = (args) => {\n const query = (0, APIClient_1.generateGraphQLDocument)(modelIntrospection.models, name, operation);\n const variables = (0, APIClient_1.buildGraphQLVariables)(model, operation, args, modelIntrospection);\n const auth = (0, APIClient_1.authModeParams)(client, args);\n const observable = client.graphql({\n ...auth,\n query,\n variables,\n });\n return observable.pipe((0, rxjs_1.map)(value => {\n const [key] = Object.keys(value.data);\n const data = value.data[key];\n const [initialized] = (0, APIClient_1.initializeModel)(client, name, [data], modelIntrospection, auth.authMode, auth.authToken);\n return initialized;\n }));\n };\n return subscription;\n}\nexports.subscriptionFactory = subscriptionFactory;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC;AACrC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,SAAS,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;AAC3E,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC3B,IAAI,MAAM,YAAY,GAAG,CAAC,IAAI,KAAK;AACnC,QAAQ,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC3G,QAAQ,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;AAC7G,QAAQ,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACnE,QAAQ,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1C,YAAY,GAAG,IAAI;AACnB,YAAY,KAAK;AACjB,YAAY,SAAS;AACrB,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI;AACxD,YAAY,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClD,YAAY,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,YAAY,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,WAAW,CAAC,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC5I,YAAY,OAAO,WAAW,CAAC;AAC/B,SAAS,CAAC,CAAC,CAAC;AACZ,KAAK,CAAC;AACN,IAAI,OAAO,YAAY,CAAC;AACxB,CAAC;AACD,OAAO,CAAC,mBAAmB,GAAG,mBAAmB;;"}
@@ -1,7 +1,5 @@
1
1
  'use strict';
2
2
 
3
- // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
- // SPDX-License-Identifier: Apache-2.0
5
3
  Object.defineProperty(exports, "__esModule", { value: true });
6
4
  exports.generateModelsProperty = void 0;
7
5
  const APIClient_1 = require("../APIClient");
@@ -12,10 +10,12 @@ function generateModelsProperty(client, params) {
12
10
  const config = params.config;
13
11
  const useContext = client === null;
14
12
  if (!config) {
15
- // TODO: improve
16
13
  throw new Error('generateModelsProperty cannot retrieve Amplify config');
17
14
  }
18
- const modelIntrospection = config.API?.GraphQL?.modelIntrospection;
15
+ if (!config.API?.GraphQL) {
16
+ throw new Error('The API configuration is missing. This is likely due to Amplify.configure() not being called prior to generateClient().');
17
+ }
18
+ const modelIntrospection = config.API.GraphQL.modelIntrospection;
19
19
  if (!modelIntrospection) {
20
20
  return {};
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateModelsProperty.js","sources":["../../../../src/internals/server/generateModelsProperty.ts"],"sourcesContent":["\"use strict\";\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateModelsProperty = void 0;\nconst APIClient_1 = require(\"../APIClient\");\nconst list_1 = require(\"../operations/list\");\nconst get_1 = require(\"../operations/get\");\nfunction generateModelsProperty(client, params) {\n const models = {};\n const config = params.config;\n const useContext = client === null;\n if (!config) {\n // TODO: improve\n throw new Error('generateModelsProperty cannot retrieve Amplify config');\n }\n const modelIntrospection = config.API?.GraphQL?.modelIntrospection;\n if (!modelIntrospection) {\n return {};\n }\n const SSR_UNSUPORTED_OPS = [\n 'ONCREATE',\n 'ONUPDATE',\n 'ONDELETE',\n 'OBSERVE_QUERY',\n ];\n for (const model of Object.values(modelIntrospection.models)) {\n const { name } = model;\n models[name] = {};\n Object.entries(APIClient_1.graphQLOperationsInfo).forEach(([key, { operationPrefix }]) => {\n const operation = key;\n // subscriptions are not supported in SSR\n if (SSR_UNSUPORTED_OPS.includes(operation))\n return;\n if (operation === 'LIST') {\n models[name][operationPrefix] = (0, list_1.listFactory)(client, modelIntrospection, model, useContext);\n }\n else {\n models[name][operationPrefix] = (0, get_1.getFactory)(client, modelIntrospection, model, operation, useContext);\n }\n });\n }\n return models;\n}\nexports.generateModelsProperty = generateModelsProperty;\n"],"names":[],"mappings":";;AACA;AACA;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC3C,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB;AACA,QAAQ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,kBAAkB,CAAC;AACvE,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,eAAe;AACvB,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAClE,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC,KAAK;AAClG,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC;AAClC;AACA,YAAY,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD,gBAAgB,OAAO;AACvB,YAAY,IAAI,SAAS,KAAK,MAAM,EAAE;AACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACvH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChI,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;;"}
1
+ {"version":3,"file":"generateModelsProperty.js","sources":["../../../../src/internals/server/generateModelsProperty.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generateModelsProperty = void 0;\nconst APIClient_1 = require(\"../APIClient\");\nconst list_1 = require(\"../operations/list\");\nconst get_1 = require(\"../operations/get\");\nfunction generateModelsProperty(client, params) {\n const models = {};\n const config = params.config;\n const useContext = client === null;\n if (!config) {\n throw new Error('generateModelsProperty cannot retrieve Amplify config');\n }\n if (!config.API?.GraphQL) {\n throw new Error('The API configuration is missing. This is likely due to Amplify.configure() not being called prior to generateClient().');\n }\n const modelIntrospection = config.API.GraphQL.modelIntrospection;\n if (!modelIntrospection) {\n return {};\n }\n const SSR_UNSUPORTED_OPS = [\n 'ONCREATE',\n 'ONUPDATE',\n 'ONDELETE',\n 'OBSERVE_QUERY',\n ];\n for (const model of Object.values(modelIntrospection.models)) {\n const { name } = model;\n models[name] = {};\n Object.entries(APIClient_1.graphQLOperationsInfo).forEach(([key, { operationPrefix }]) => {\n const operation = key;\n // subscriptions are not supported in SSR\n if (SSR_UNSUPORTED_OPS.includes(operation))\n return;\n if (operation === 'LIST') {\n models[name][operationPrefix] = (0, list_1.listFactory)(client, modelIntrospection, model, useContext);\n }\n else {\n models[name][operationPrefix] = (0, get_1.getFactory)(client, modelIntrospection, model, operation, useContext);\n }\n });\n }\n return models;\n}\nexports.generateModelsProperty = generateModelsProperty;\n"],"names":[],"mappings":";;AACA,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,CAAC;AACxC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC3C,SAAS,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE;AAChD,IAAI,MAAM,MAAM,GAAG,EAAE,CAAC;AACtB,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,MAAM,KAAK,IAAI,CAAC;AACvC,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,QAAQ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;AACjF,KAAK;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE;AAC9B,QAAQ,MAAM,IAAI,KAAK,CAAC,yHAAyH,CAAC,CAAC;AACnJ,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;AACrE,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC7B,QAAQ,OAAO,EAAE,CAAC;AAClB,KAAK;AACL,IAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,UAAU;AAClB,QAAQ,eAAe;AACvB,KAAK,CAAC;AACN,IAAI,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAClE,QAAQ,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;AAC/B,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAC1B,QAAQ,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,CAAC,KAAK;AAClG,YAAY,MAAM,SAAS,GAAG,GAAG,CAAC;AAClC;AACA,YAAY,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD,gBAAgB,OAAO;AACvB,YAAY,IAAI,SAAS,KAAK,MAAM,EAAE;AACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AACvH,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAChI,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,OAAO,CAAC,sBAAsB,GAAG,sBAAsB;;"}
@@ -43,7 +43,7 @@ class GraphQLAPIClass extends InternalGraphQLAPIClass {
43
43
  return super.cancel(request, message);
44
44
  }
45
45
  }
46
- const GraphQLAPI = new GraphQLAPIClass(null);
46
+ const GraphQLAPI = new GraphQLAPIClass();
47
47
 
48
48
  export { GraphQLAPI, GraphQLAPIClass, graphqlOperation };
49
49
  //# sourceMappingURL=GraphQLAPI.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"GraphQLAPI.mjs","sources":["../../src/GraphQLAPI.ts"],"sourcesContent":["import { Category, ApiAction } from '@aws-amplify/core/internals/utils';\nimport { InternalGraphQLAPIClass } from './internals/InternalGraphQLAPI';\nexport const graphqlOperation = (query, variables = {}, authToken) => ({\n query,\n variables,\n authToken,\n});\n/**\n * Export Cloud Logic APIs\n */\nexport class GraphQLAPIClass extends InternalGraphQLAPIClass {\n getModuleName() {\n return 'GraphQLAPI';\n }\n /**\n * Executes a GraphQL operation\n *\n * @param options - GraphQL Options\n * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n */\n graphql(amplify, options, additionalHeaders) {\n return super.graphql(amplify, options, additionalHeaders, {\n category: Category.API,\n action: ApiAction.GraphQl,\n });\n }\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param error - Any error\n * @returns A boolean indicating if the error was from an api request cancellation\n */\n isCancelError(error) {\n return super.isCancelError(error);\n }\n /**\n * Cancels an inflight request. Only applicable for graphql queries and mutations\n * @param {any} request - request to cancel\n * @returns A boolean indicating if the request was cancelled\n */\n cancel(request, message) {\n return super.cancel(request, message);\n }\n}\nexport const GraphQLAPI = new GraphQLAPIClass(null);\n"],"names":[],"mappings":";;;AAEY,MAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,MAAM;AACvE,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,SAAS;AACb,CAAC,EAAE;AACH;AACA;AACA;AACO,MAAM,eAAe,SAAS,uBAAuB,CAAC;AAC7D,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAClE,YAAY,QAAQ,EAAE,QAAQ,CAAC,GAAG;AAClC,YAAY,MAAM,EAAE,SAAS,CAAC,OAAO;AACrC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,CAAC;AACW,MAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI;;;;"}
1
+ {"version":3,"file":"GraphQLAPI.mjs","sources":["../../src/GraphQLAPI.ts"],"sourcesContent":["import { Category, ApiAction } from '@aws-amplify/core/internals/utils';\nimport { InternalGraphQLAPIClass } from './internals/InternalGraphQLAPI';\nexport const graphqlOperation = (query, variables = {}, authToken) => ({\n query,\n variables,\n authToken,\n});\n/**\n * Export Cloud Logic APIs\n */\nexport class GraphQLAPIClass extends InternalGraphQLAPIClass {\n getModuleName() {\n return 'GraphQLAPI';\n }\n /**\n * Executes a GraphQL operation\n *\n * @param options - GraphQL Options\n * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n */\n graphql(amplify, options, additionalHeaders) {\n return super.graphql(amplify, options, additionalHeaders, {\n category: Category.API,\n action: ApiAction.GraphQl,\n });\n }\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param error - Any error\n * @returns A boolean indicating if the error was from an api request cancellation\n */\n isCancelError(error) {\n return super.isCancelError(error);\n }\n /**\n * Cancels an inflight request. Only applicable for graphql queries and mutations\n * @param {any} request - request to cancel\n * @returns A boolean indicating if the request was cancelled\n */\n cancel(request, message) {\n return super.cancel(request, message);\n }\n}\nexport const GraphQLAPI = new GraphQLAPIClass();\n"],"names":[],"mappings":";;;AAEY,MAAC,gBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,MAAM;AACvE,IAAI,KAAK;AACT,IAAI,SAAS;AACb,IAAI,SAAS;AACb,CAAC,EAAE;AACH;AACA;AACA;AACO,MAAM,eAAe,SAAS,uBAAuB,CAAC;AAC7D,IAAI,aAAa,GAAG;AACpB,QAAQ,OAAO,YAAY,CAAC;AAC5B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;AACjD,QAAQ,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE;AAClE,YAAY,QAAQ,EAAE,QAAQ,CAAC,GAAG;AAClC,YAAY,MAAM,EAAE,SAAS,CAAC,OAAO;AACrC,SAAS,CAAC,CAAC;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,KAAK,EAAE;AACzB,QAAQ,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC1C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE;AAC7B,QAAQ,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,KAAK;AACL,CAAC;AACW,MAAC,UAAU,GAAG,IAAI,eAAe;;;;"}
@@ -11,7 +11,7 @@ import { ReconnectionMonitor, ReconnectEvent } from '../../utils/ReconnectionMon
11
11
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
12
12
  // SPDX-License-Identifier: Apache-2.0
13
13
  const logger = new ConsoleLogger('AWSAppSyncRealTimeProvider');
14
- const dispatchApiEvent = payload => {
14
+ const dispatchApiEvent = (payload) => {
15
15
  Hub.dispatch('api', payload, 'PubSub', AMPLIFY_SYMBOL);
16
16
  };
17
17
  const standardDomainPattern = /^https:\/\/\w{26}\.appsync\-api\.\w{2}(?:(?:\-\w{2,})+)\-\d\.amazonaws.com(?:\.cn)?\/graphql$/i;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../src/Providers/AWSAppSyncRealTimeProvider/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observable } from 'rxjs';\nimport { GraphQLError } from 'graphql';\nimport { Hub, fetchAuthSession, ConsoleLogger } from '@aws-amplify/core';\nimport { signRequest } from '@aws-amplify/core/internals/aws-client-utils';\nimport { base64Encoder, NonRetryableError, USER_AGENT_HEADER, getAmplifyUserAgent, isNonRetryableError, jitteredExponentialRetry, amplifyUuid, AmplifyUrl, } from '@aws-amplify/core/internals/utils';\nimport { CONTROL_MSG, ConnectionState, } from '../../types/PubSub';\nimport { AMPLIFY_SYMBOL, AWS_APPSYNC_REALTIME_HEADERS, CONNECTION_INIT_TIMEOUT, DEFAULT_KEEP_ALIVE_TIMEOUT, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT, MAX_DELAY_MS, MESSAGE_TYPES, NON_RETRYABLE_CODES, SOCKET_STATUS, START_ACK_TIMEOUT, SUBSCRIPTION_STATUS, CONNECTION_STATE_CHANGE, } from '../constants';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../../utils/ConnectionStateMonitor';\nimport { ReconnectEvent, ReconnectionMonitor, } from '../../utils/ReconnectionMonitor';\nconst logger = new ConsoleLogger('AWSAppSyncRealTimeProvider');\nconst dispatchApiEvent = payload => {\n Hub.dispatch('api', payload, 'PubSub', AMPLIFY_SYMBOL);\n};\nconst standardDomainPattern = /^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com(?:\\.cn)?\\/graphql$/i;\nconst customDomainPath = '/realtime';\nexport class AWSAppSyncRealTimeProvider {\n constructor(options = {}) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n this.subscriptionObserverMap = new Map();\n this.promiseArray = [];\n this.connectionStateMonitor = new ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor();\n // Monitor the connection state and pass changes along to Hub\n this.connectionStateMonitorSubscription =\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionState => {\n dispatchApiEvent({\n event: CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState,\n },\n message: `Connection state is ${connectionState}`,\n });\n this.connectionState = connectionState;\n // Trigger START_RECONNECT when the connection is disrupted\n if (connectionState === ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectEvent.START_RECONNECT);\n }\n // Trigger HALT_RECONNECT to halt reconnection attempts when the state is anything other than\n // ConnectionDisrupted or Connecting\n if ([\n ConnectionState.Connected,\n ConnectionState.ConnectedPendingDisconnect,\n ConnectionState.ConnectedPendingKeepAlive,\n ConnectionState.ConnectedPendingNetwork,\n ConnectionState.ConnectionDisruptedPendingNetwork,\n ConnectionState.Disconnected,\n ].includes(connectionState)) {\n this.reconnectionMonitor.record(ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n /**\n * Mark the socket closed and release all active listeners\n */\n close() {\n // Mark the socket closed both in status and the connection monitor\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n // Turn off the subscription monitor Hub publishing\n this.connectionStateMonitorSubscription.unsubscribe();\n // Complete all reconnect observers\n this.reconnectionMonitor.close();\n }\n getNewWebSocket(url, protocol) {\n return new WebSocket(url, protocol);\n }\n getProviderName() {\n return 'AWSAppSyncRealTimeProvider';\n }\n // Check if url matches standard domain pattern\n isCustomDomain(url) {\n return url.match(standardDomainPattern) === null;\n }\n subscribe(options, customUserAgentDetails) {\n const { appSyncGraphqlEndpoint, region, query, variables, authenticationType, additionalHeaders, apiKey, } = options || {};\n return new Observable(observer => {\n if (!options || !appSyncGraphqlEndpoint) {\n observer.error({\n errors: [\n {\n ...new GraphQLError(`Subscribe only available for AWS AppSync endpoint`),\n },\n ],\n });\n observer.complete();\n }\n else {\n let subscriptionStartActive = false;\n const subscriptionId = amplifyUuid();\n const startSubscription = () => {\n if (!subscriptionStartActive) {\n subscriptionStartActive = true;\n const startSubscriptionPromise = this._startSubscriptionWithAWSAppSyncRealTime({\n options: {\n query,\n variables,\n region,\n authenticationType,\n appSyncGraphqlEndpoint,\n additionalHeaders,\n apiKey,\n },\n observer,\n subscriptionId,\n customUserAgentDetails,\n }).catch(err => {\n logger.debug(`${CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR}: ${err}`);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n });\n startSubscriptionPromise.finally(() => {\n subscriptionStartActive = false;\n });\n }\n };\n let reconnectSubscription;\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new Observable(observer => {\n this.reconnectionMonitor.addObserver(observer);\n }).subscribe(() => {\n startSubscription();\n });\n startSubscription();\n return async () => {\n // Cleanup reconnection subscription\n reconnectSubscription?.unsubscribe();\n // Cleanup after unsubscribing or observer.complete was called after _startSubscriptionWithAWSAppSyncRealTime\n try {\n // Waiting that subscription has been connected before trying to unsubscribe\n await this._waitForSubscriptionToBeConnected(subscriptionId);\n const { subscriptionState } = this.subscriptionObserverMap.get(subscriptionId) || {};\n if (!subscriptionState) {\n // subscription already unsubscribed\n return;\n }\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId);\n }\n else {\n throw new Error('Subscription never connected');\n }\n }\n catch (err) {\n logger.debug(`Error while unsubscribing ${err}`);\n }\n finally {\n this._removeSubscriptionObserver(subscriptionId);\n }\n };\n }\n });\n }\n async _startSubscriptionWithAWSAppSyncRealTime({ options, observer, subscriptionId, customUserAgentDetails, }) {\n const { appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, graphql_headers = () => ({}), additionalHeaders = {}, } = options;\n const subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n const data = {\n query,\n variables,\n };\n // Having a subscription id map will make it simple to forward messages received\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n query: query ?? '',\n variables: variables ?? {},\n subscriptionState,\n startAckTimeoutId: undefined,\n });\n // Preparing payload for subscription message\n const dataString = JSON.stringify(data);\n const headerObj = {\n ...(await this._awsRealTimeHeaderBasedAuth({\n apiKey,\n appSyncGraphqlEndpoint,\n authenticationType,\n payload: dataString,\n canonicalUri: '',\n region,\n additionalHeaders,\n })),\n ...(await graphql_headers()),\n ...additionalHeaders,\n [USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n };\n const subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: {\n ...headerObj,\n },\n },\n },\n type: MESSAGE_TYPES.GQL_START,\n };\n const stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n try {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n await this._initializeWebSocketConnection({\n apiKey,\n appSyncGraphqlEndpoint,\n authenticationType,\n region,\n additionalHeaders,\n });\n }\n catch (err) {\n this._logStartSubscriptionError(subscriptionId, observer, err);\n return;\n }\n // Potential race condition can occur when unsubscribe is called during _initializeWebSocketConnection.\n // E.g.unsubscribe gets invoked prior to finishing WebSocket handshake or START_ACK.\n // Both subscriptionFailedCallback and subscriptionReadyCallback are used to synchronized this.\n const { subscriptionFailedCallback, subscriptionReadyCallback } = this.subscriptionObserverMap.get(subscriptionId) ?? {};\n // This must be done before sending the message in order to be listening immediately\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n subscriptionState,\n query: query ?? '',\n variables: variables ?? {},\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(() => {\n this._timeoutStartSubscriptionAck.call(this, subscriptionId);\n }, START_ACK_TIMEOUT),\n });\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n // Log logic for start subscription failures\n _logStartSubscriptionError(subscriptionId, observer, err) {\n logger.debug({ err });\n const message = String(err.message ?? '');\n // Resolving to give the state observer time to propogate the update\n Promise.resolve(this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED));\n // Capture the error only when the network didn't cause disruption\n if (this.connectionState !== ConnectionState.ConnectionDisruptedPendingNetwork) {\n // When the error is non-retriable, error out the observable\n if (isNonRetryableError(err)) {\n observer.error({\n errors: [\n {\n ...new GraphQLError(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`),\n },\n ],\n });\n }\n else {\n logger.debug(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`);\n }\n const { subscriptionFailedCallback } = this.subscriptionObserverMap.get(subscriptionId) || {};\n // Notify concurrent unsubscription\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n }\n // Waiting that subscription has been connected before trying to unsubscribe\n async _waitForSubscriptionToBeConnected(subscriptionId) {\n const subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n const { subscriptionState } = subscriptionObserver;\n // This in case unsubscribe is invoked before sending start subscription message\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return new Promise((res, rej) => {\n const { observer, subscriptionState, variables, query } = subscriptionObserver;\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n subscriptionState,\n variables,\n query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej,\n });\n });\n }\n }\n }\n _sendUnsubscriptionMessage(subscriptionId) {\n try {\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n const unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP,\n };\n const stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({ err });\n }\n }\n _removeSubscriptionObserver(subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId);\n // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n _closeSocketIfRequired() {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n else {\n logger.debug('closing WebSocket...');\n if (this.keepAliveTimeoutId) {\n clearTimeout(this.keepAliveTimeoutId);\n }\n if (this.keepAliveAlertTimeoutId) {\n clearTimeout(this.keepAliveAlertTimeoutId);\n }\n const tempSocket = this.awsRealTimeSocket;\n // Cleaning callbacks to avoid race condition, socket still exists\n tempSocket.onclose = null;\n tempSocket.onerror = null;\n tempSocket.close(1000);\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n }\n _handleIncomingSubscriptionMessage(message) {\n if (typeof message.data !== 'string') {\n return;\n }\n logger.debug(`subscription message from AWS AppSync RealTime: ${message.data}`);\n const { id = '', payload, type, } = JSON.parse(String(message.data));\n const { observer = null, query = '', variables = {}, startAckTimeoutId, subscriptionReadyCallback, subscriptionFailedCallback, } = this.subscriptionObserverMap.get(id) || {};\n logger.debug({ id, observer, query, variables });\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n }\n else {\n logger.debug(`observer not found for id: ${id}`);\n }\n return;\n }\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(`subscription ready for ${JSON.stringify({ query, variables })}`);\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent({\n event: CONTROL_MSG.SUBSCRIPTION_ACK,\n data: { query, variables },\n message: 'Connection established for subscription',\n });\n const subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer,\n query,\n variables,\n startAckTimeoutId: undefined,\n subscriptionState,\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n });\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n if (this.keepAliveTimeoutId)\n clearTimeout(this.keepAliveTimeoutId);\n if (this.keepAliveAlertTimeoutId)\n clearTimeout(this.keepAliveAlertTimeoutId);\n this.keepAliveTimeoutId = setTimeout(() => this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n this.keepAliveAlertTimeoutId = setTimeout(() => {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n }, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n const subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer,\n query,\n variables,\n startAckTimeoutId,\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n subscriptionState,\n });\n logger.debug(`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`);\n observer.error({\n errors: [\n {\n ...new GraphQLError(`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`),\n },\n ],\n });\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n }\n }\n _errorDisconnect(msg) {\n logger.debug(`Disconnect error: ${msg}`);\n if (this.awsRealTimeSocket) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n this.awsRealTimeSocket.close();\n }\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n _timeoutStartSubscriptionAck(subscriptionId) {\n const subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n const { observer, query, variables } = subscriptionObserver;\n if (!observer) {\n return;\n }\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n query,\n variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED,\n });\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n logger.debug('timeoutStartSubscription', JSON.stringify({ query, variables }));\n }\n }\n _initializeWebSocketConnection({ appSyncGraphqlEndpoint, authenticationType, apiKey, region, additionalHeaders, }) {\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n return new Promise(async (res, rej) => {\n this.promiseArray.push({ res, rej });\n if (this.socketStatus === SOCKET_STATUS.CLOSED) {\n try {\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n const payloadString = '{}';\n const authHeader = await this._awsRealTimeHeaderBasedAuth({\n authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey,\n appSyncGraphqlEndpoint,\n region,\n additionalHeaders,\n });\n const headerString = authHeader ? JSON.stringify(authHeader) : '';\n const headerQs = base64Encoder.convert(headerString);\n const payloadQs = base64Encoder.convert(payloadString);\n let discoverableEndpoint = appSyncGraphqlEndpoint ?? '';\n if (this.isCustomDomain(discoverableEndpoint)) {\n discoverableEndpoint =\n discoverableEndpoint.concat(customDomainPath);\n }\n else {\n discoverableEndpoint = discoverableEndpoint\n .replace('appsync-api', 'appsync-realtime-api')\n .replace('gogi-beta', 'grt-beta');\n }\n // Creating websocket url with required query strings\n const protocol = 'wss://';\n discoverableEndpoint = discoverableEndpoint\n .replace('https://', protocol)\n .replace('http://', protocol);\n const awsRealTimeUrl = `${discoverableEndpoint}?header=${headerQs}&payload=${payloadQs}`;\n await this._initializeRetryableHandshake(awsRealTimeUrl);\n this.promiseArray.forEach(({ res }) => {\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n }\n catch (err) {\n logger.debug('Connection exited with', err);\n this.promiseArray.forEach(({ rej }) => rej(err));\n this.promiseArray = [];\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n }\n });\n }\n async _initializeRetryableHandshake(awsRealTimeUrl) {\n logger.debug(`Initializaling retryable Handshake`);\n await jitteredExponentialRetry(this._initializeHandshake.bind(this), [awsRealTimeUrl], MAX_DELAY_MS);\n }\n async _initializeHandshake(awsRealTimeUrl) {\n logger.debug(`Initializing handshake ${awsRealTimeUrl}`);\n // Because connecting the socket is async, is waiting until connection is open\n // Step 1: connect websocket\n try {\n await (() => {\n return new Promise((res, rej) => {\n const newSocket = this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');\n newSocket.onerror = () => {\n logger.debug(`WebSocket connection error`);\n };\n newSocket.onclose = () => {\n rej(new Error('Connection handshake error'));\n };\n newSocket.onopen = () => {\n this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n })();\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n await (() => {\n return new Promise((res, rej) => {\n if (this.awsRealTimeSocket) {\n let ackOk = false;\n this.awsRealTimeSocket.onerror = error => {\n logger.debug(`WebSocket error ${JSON.stringify(error)}`);\n };\n this.awsRealTimeSocket.onclose = event => {\n logger.debug(`WebSocket closed ${event.reason}`);\n rej(new Error(JSON.stringify(event)));\n };\n this.awsRealTimeSocket.onmessage = (message) => {\n if (typeof message.data !== 'string') {\n return;\n }\n logger.debug(`subscription message from AWS AppSyncRealTime: ${message.data} `);\n const data = JSON.parse(message.data);\n const { type, payload: { connectionTimeoutMs = DEFAULT_KEEP_ALIVE_TIMEOUT, } = {}, } = data;\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n if (this.awsRealTimeSocket) {\n this.keepAliveTimeout = connectionTimeoutMs;\n this.awsRealTimeSocket.onmessage =\n this._handleIncomingSubscriptionMessage.bind(this);\n this.awsRealTimeSocket.onerror = err => {\n logger.debug(err);\n this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n this.awsRealTimeSocket.onclose = event => {\n logger.debug(`WebSocket closed ${event.reason}`);\n this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n }\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n const { payload: { errors: [{ errorType = '', errorCode = 0 } = {}] = [], } = {}, } = data;\n rej({ errorType, errorCode });\n }\n };\n const gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n };\n this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n const checkAckOk = (ackOk) => {\n if (!ackOk) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error(`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`));\n }\n };\n setTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);\n }\n });\n })();\n }\n catch (err) {\n const { errorType, errorCode } = err;\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n }\n else if (errorType) {\n throw new Error(errorType);\n }\n else {\n throw err;\n }\n }\n }\n async _awsRealTimeHeaderBasedAuth({ apiKey, authenticationType, payload, canonicalUri, appSyncGraphqlEndpoint, region, additionalHeaders, }) {\n const headerHandler = {\n apiKey: this._awsRealTimeApiKeyHeader.bind(this),\n iam: this._awsRealTimeIAMHeader.bind(this),\n oidc: this._awsAuthTokenHeader.bind(this),\n userPool: this._awsAuthTokenHeader.bind(this),\n lambda: this._customAuthHeader,\n none: this._customAuthHeader,\n };\n if (!authenticationType || !headerHandler[authenticationType]) {\n logger.debug(`Authentication type ${authenticationType} not supported`);\n return undefined;\n }\n else {\n const handler = headerHandler[authenticationType];\n const host = appSyncGraphqlEndpoint\n ? new AmplifyUrl(appSyncGraphqlEndpoint).host\n : undefined;\n logger.debug(`Authenticating with ${JSON.stringify(authenticationType)}`);\n let resolvedApiKey;\n if (authenticationType === 'apiKey') {\n resolvedApiKey = apiKey;\n }\n const result = await handler({\n payload,\n canonicalUri,\n appSyncGraphqlEndpoint,\n apiKey: resolvedApiKey,\n region,\n host,\n additionalHeaders,\n });\n return result;\n }\n }\n async _awsAuthTokenHeader({ host }) {\n const session = await fetchAuthSession();\n return {\n Authorization: session?.tokens?.accessToken?.toString(),\n host,\n };\n }\n async _awsRealTimeApiKeyHeader({ apiKey, host, }) {\n const dt = new Date();\n const dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return {\n host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey,\n };\n }\n async _awsRealTimeIAMHeader({ payload, canonicalUri, appSyncGraphqlEndpoint, region, }) {\n const endpointInfo = {\n region,\n service: 'appsync',\n };\n const creds = (await fetchAuthSession()).credentials;\n const request = {\n url: `${appSyncGraphqlEndpoint}${canonicalUri}`,\n data: payload,\n method: 'POST',\n headers: { ...AWS_APPSYNC_REALTIME_HEADERS },\n };\n const signed_params = signRequest({\n headers: request.headers,\n method: request.method,\n url: new AmplifyUrl(request.url),\n body: request.data,\n }, {\n // TODO: What do we need to do to remove these !'s?\n credentials: creds,\n signingRegion: endpointInfo.region,\n signingService: endpointInfo.service,\n });\n return signed_params.headers;\n }\n _customAuthHeader({ host, additionalHeaders, }) {\n if (!additionalHeaders?.['Authorization']) {\n throw new Error('No auth token specified');\n }\n return {\n Authorization: additionalHeaders.Authorization,\n host,\n };\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAAA;AACA;AAUA,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,4BAA4B,CAAC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,OAAO,IAAI;AACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC,CAAC;AACF,MAAM,qBAAqB,GAAG,gGAAgG,CAAC;AAC/H,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAC9B,MAAM,0BAA0B,CAAC;AACxC,IAAI,WAAW,CAAC,OAAO,GAAG,EAAE,EAAE;AAC9B,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,CAAC;AAC3D,QAAQ,IAAI,CAAC,uBAAuB,GAAG,IAAI,GAAG,EAAE,CAAC;AACjD,QAAQ,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,QAAQ,IAAI,CAAC,sBAAsB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AACnE,QAAQ,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;AAC7D;AACA,QAAQ,IAAI,CAAC,kCAAkC;AAC/C,YAAY,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAAC,SAAS,CAAC,eAAe,IAAI;AAC/F,gBAAgB,gBAAgB,CAAC;AACjC,oBAAoB,KAAK,EAAE,uBAAuB;AAClD,oBAAoB,IAAI,EAAE;AAC1B,wBAAwB,QAAQ,EAAE,IAAI;AACtC,wBAAwB,eAAe;AACvC,qBAAqB;AACrB,oBAAoB,OAAO,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;AACrE,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;AACvD;AACA,gBAAgB,IAAI,eAAe,KAAK,eAAe,CAAC,mBAAmB,EAAE;AAC7E,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AACpF,iBAAiB;AACjB;AACA;AACA,gBAAgB,IAAI;AACpB,oBAAoB,eAAe,CAAC,SAAS;AAC7C,oBAAoB,eAAe,CAAC,0BAA0B;AAC9D,oBAAoB,eAAe,CAAC,yBAAyB;AAC7D,oBAAoB,eAAe,CAAC,uBAAuB;AAC3D,oBAAoB,eAAe,CAAC,iCAAiC;AACrE,oBAAoB,eAAe,CAAC,YAAY;AAChD,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAC7C,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AACnF,iBAAiB;AACjB,aAAa,CAAC,CAAC;AACf,KAAK;AACL;AACA;AACA;AACA,IAAI,KAAK,GAAG;AACZ;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,QAAQ,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AAChF;AACA,QAAQ,IAAI,CAAC,kCAAkC,CAAC,WAAW,EAAE,CAAC;AAC9D;AACA,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;AACzC,KAAK;AACL,IAAI,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE;AACnC,QAAQ,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC5C,KAAK;AACL,IAAI,eAAe,GAAG;AACtB,QAAQ,OAAO,4BAA4B,CAAC;AAC5C,KAAK;AACL;AACA,IAAI,cAAc,CAAC,GAAG,EAAE;AACxB,QAAQ,OAAO,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,IAAI,CAAC;AACzD,KAAK;AACL,IAAI,SAAS,CAAC,OAAO,EAAE,sBAAsB,EAAE;AAC/C,QAAQ,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;AACnI,QAAQ,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAI;AAC1C,YAAY,IAAI,CAAC,OAAO,IAAI,CAAC,sBAAsB,EAAE;AACrD,gBAAgB,QAAQ,CAAC,KAAK,CAAC;AAC/B,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB;AACxB,4BAA4B,GAAG,IAAI,YAAY,CAAC,CAAC,iDAAiD,CAAC,CAAC;AACpG,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACpC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,IAAI,uBAAuB,GAAG,KAAK,CAAC;AACpD,gBAAgB,MAAM,cAAc,GAAG,WAAW,EAAE,CAAC;AACrD,gBAAgB,MAAM,iBAAiB,GAAG,MAAM;AAChD,oBAAoB,IAAI,CAAC,uBAAuB,EAAE;AAClD,wBAAwB,uBAAuB,GAAG,IAAI,CAAC;AACvD,wBAAwB,MAAM,wBAAwB,GAAG,IAAI,CAAC,wCAAwC,CAAC;AACvG,4BAA4B,OAAO,EAAE;AACrC,gCAAgC,KAAK;AACrC,gCAAgC,SAAS;AACzC,gCAAgC,MAAM;AACtC,gCAAgC,kBAAkB;AAClD,gCAAgC,sBAAsB;AACtD,gCAAgC,iBAAiB;AACjD,gCAAgC,MAAM;AACtC,6BAA6B;AAC7B,4BAA4B,QAAQ;AACpC,4BAA4B,cAAc;AAC1C,4BAA4B,sBAAsB;AAClD,yBAAyB,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI;AACxC,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,gCAAgC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACpG,4BAA4B,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzF,yBAAyB,CAAC,CAAC;AAC3B,wBAAwB,wBAAwB,CAAC,OAAO,CAAC,MAAM;AAC/D,4BAA4B,uBAAuB,GAAG,KAAK,CAAC;AAC5D,yBAAyB,CAAC,CAAC;AAC3B,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,gBAAgB,IAAI,qBAAqB,CAAC;AAC1C;AACA,gBAAgB,qBAAqB,GAAG,IAAI,UAAU,CAAC,QAAQ,IAAI;AACnE,oBAAoB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnE,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAM;AACnC,oBAAoB,iBAAiB,EAAE,CAAC;AACxC,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,iBAAiB,EAAE,CAAC;AACpC,gBAAgB,OAAO,YAAY;AACnC;AACA,oBAAoB,qBAAqB,EAAE,WAAW,EAAE,CAAC;AACzD;AACA,oBAAoB,IAAI;AACxB;AACA,wBAAwB,MAAM,IAAI,CAAC,iCAAiC,CAAC,cAAc,CAAC,CAAC;AACrF,wBAAwB,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC7G,wBAAwB,IAAI,CAAC,iBAAiB,EAAE;AAChD;AACA,4BAA4B,OAAO;AACnC,yBAAyB;AACzB,wBAAwB,IAAI,iBAAiB,KAAK,mBAAmB,CAAC,SAAS,EAAE;AACjF,4BAA4B,IAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;AAC5E,yBAAyB;AACzB,6BAA6B;AAC7B,4BAA4B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC5E,yBAAyB;AACzB,qBAAqB;AACrB,oBAAoB,OAAO,GAAG,EAAE;AAChC,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACzE,qBAAqB;AACrB,4BAA4B;AAC5B,wBAAwB,IAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,CAAC;AACzE,qBAAqB;AACrB,iBAAiB,CAAC;AAClB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,wCAAwC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,sBAAsB,GAAG,EAAE;AACnH,QAAQ,MAAM,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CAAC,EAAE,iBAAiB,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;AAChK,QAAQ,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC9D,QAAQ,MAAM,IAAI,GAAG;AACrB,YAAY,KAAK;AACjB,YAAY,SAAS;AACrB,SAAS,CAAC;AACV;AACA,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE;AACzD,YAAY,QAAQ;AACpB,YAAY,KAAK,EAAE,KAAK,IAAI,EAAE;AAC9B,YAAY,SAAS,EAAE,SAAS,IAAI,EAAE;AACtC,YAAY,iBAAiB;AAC7B,YAAY,iBAAiB,EAAE,SAAS;AACxC,SAAS,CAAC,CAAC;AACX;AACA,QAAQ,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG;AAC1B,YAAY,IAAI,MAAM,IAAI,CAAC,2BAA2B,CAAC;AACvD,gBAAgB,MAAM;AACtB,gBAAgB,sBAAsB;AACtC,gBAAgB,kBAAkB;AAClC,gBAAgB,OAAO,EAAE,UAAU;AACnC,gBAAgB,YAAY,EAAE,EAAE;AAChC,gBAAgB,MAAM;AACtB,gBAAgB,iBAAiB;AACjC,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,MAAM,eAAe,EAAE,CAAC;AACxC,YAAY,GAAG,iBAAiB;AAChC,YAAY,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,sBAAsB,CAAC;AAC5E,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG;AACpC,YAAY,EAAE,EAAE,cAAc;AAC9B,YAAY,OAAO,EAAE;AACrB,gBAAgB,IAAI,EAAE,UAAU;AAChC,gBAAgB,UAAU,EAAE;AAC5B,oBAAoB,aAAa,EAAE;AACnC,wBAAwB,GAAG,SAAS;AACpC,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,IAAI,EAAE,aAAa,CAAC,SAAS;AACzC,SAAS,CAAC;AACV,QAAQ,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AACxE,QAAQ,IAAI;AACZ,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACrF,YAAY,MAAM,IAAI,CAAC,8BAA8B,CAAC;AACtD,gBAAgB,MAAM;AACtB,gBAAgB,sBAAsB;AACtC,gBAAgB,kBAAkB;AAClC,gBAAgB,MAAM;AACtB,gBAAgB,iBAAiB;AACjC,aAAa,CAAC,CAAC;AACf,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,IAAI,CAAC,0BAA0B,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC3E,YAAY,OAAO;AACnB,SAAS;AACT;AACA;AACA;AACA,QAAQ,MAAM,EAAE,0BAA0B,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AACjI;AACA,QAAQ,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE;AACzD,YAAY,QAAQ;AACpB,YAAY,iBAAiB;AAC7B,YAAY,KAAK,EAAE,KAAK,IAAI,EAAE;AAC9B,YAAY,SAAS,EAAE,SAAS,IAAI,EAAE;AACtC,YAAY,yBAAyB;AACrC,YAAY,0BAA0B;AACtC,YAAY,iBAAiB,EAAE,UAAU,CAAC,MAAM;AAChD,gBAAgB,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;AAC7E,aAAa,EAAE,iBAAiB,CAAC;AACjC,SAAS,CAAC,CAAC;AACX,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC7D,SAAS;AACT,KAAK;AACL;AACA,IAAI,0BAA0B,CAAC,cAAc,EAAE,QAAQ,EAAE,GAAG,EAAE;AAC9D,QAAQ,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9B,QAAQ,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAClD;AACA,QAAQ,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtF;AACA,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,iCAAiC,EAAE;AACxF;AACA,YAAY,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE;AAC1C,gBAAgB,QAAQ,CAAC,KAAK,CAAC;AAC/B,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB;AACxB,4BAA4B,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/F,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E,aAAa;AACb,YAAY,MAAM,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC1G;AACA,YAAY,IAAI,OAAO,0BAA0B,KAAK,UAAU,EAAE;AAClE,gBAAgB,0BAA0B,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA,IAAI,MAAM,iCAAiC,CAAC,cAAc,EAAE;AAC5D,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtF,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,MAAM,EAAE,iBAAiB,EAAE,GAAG,oBAAoB,CAAC;AAC/D;AACA,YAAY,IAAI,iBAAiB,KAAK,mBAAmB,CAAC,OAAO,EAAE;AACnE,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACjD,oBAAoB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC;AACnG,oBAAoB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE;AACrE,wBAAwB,QAAQ;AAChC,wBAAwB,iBAAiB;AACzC,wBAAwB,SAAS;AACjC,wBAAwB,KAAK;AAC7B,wBAAwB,yBAAyB,EAAE,GAAG;AACtD,wBAAwB,0BAA0B,EAAE,GAAG;AACvD,qBAAqB,CAAC,CAAC;AACvB,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,0BAA0B,CAAC,cAAc,EAAE;AAC/C,QAAQ,IAAI;AACZ,YAAY,IAAI,IAAI,CAAC,iBAAiB;AACtC,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;AACpE,gBAAgB,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,KAAK,EAAE;AAC3D;AACA,gBAAgB,MAAM,kBAAkB,GAAG;AAC3C,oBAAoB,EAAE,EAAE,cAAc;AACtC,oBAAoB,IAAI,EAAE,aAAa,CAAC,QAAQ;AAChD,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAC/E,gBAAgB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACjE,aAAa;AACb,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB;AACA,YAAY,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAClC,SAAS;AACT,KAAK;AACL,IAAI,2BAA2B,CAAC,cAAc,EAAE;AAChD,QAAQ,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5D;AACA,QAAQ,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACjE,KAAK;AACL,IAAI,sBAAsB,GAAG;AAC7B,QAAQ,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,EAAE;AACnD;AACA,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACrC,YAAY,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AACrD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AACjF,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,cAAc,GAAG,CAAC,EAAE;AACvD;AACA,YAAY,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AACrE,SAAS;AACT,aAAa;AACb,YAAY,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACjD,YAAY,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACzC,gBAAgB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACtD,aAAa;AACb,YAAY,IAAI,IAAI,CAAC,uBAAuB,EAAE;AAC9C,gBAAgB,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC3D,aAAa;AACb,YAAY,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACtD;AACA,YAAY,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAY,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAY,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACnC,YAAY,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAC/C,YAAY,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AACrD,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzE,SAAS;AACT,KAAK;AACL,IAAI,kCAAkC,CAAC,OAAO,EAAE;AAChD,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9C,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,gDAAgD,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxF,QAAQ,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7E,QAAQ,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,0BAA0B,GAAG,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AACtL,QAAQ,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACzD,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;AACxE,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,aAAa;AACb,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,aAAa,EAAE;AAClD,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3F,YAAY,IAAI,OAAO,yBAAyB,KAAK,UAAU,EAAE;AACjE,gBAAgB,yBAAyB,EAAE,CAAC;AAC5C,aAAa;AACb,YAAY,IAAI,iBAAiB;AACjC,gBAAgB,YAAY,CAAC,iBAAiB,CAAC,CAAC;AAChD,YAAY,gBAAgB,CAAC;AAC7B,gBAAgB,KAAK,EAAE,WAAW,CAAC,gBAAgB;AACnD,gBAAgB,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;AAC1C,gBAAgB,OAAO,EAAE,yCAAyC;AAClE,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACpE,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,EAAE;AACrD,oBAAoB,QAAQ;AAC5B,oBAAoB,KAAK;AACzB,oBAAoB,SAAS;AAC7B,oBAAoB,iBAAiB,EAAE,SAAS;AAChD,oBAAoB,iBAAiB;AACrC,oBAAoB,yBAAyB;AAC7C,oBAAoB,0BAA0B;AAC9C,iBAAiB,CAAC,CAAC;AACnB,aAAa;AACb,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC;AACzF,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,yBAAyB,EAAE;AAC9D,YAAY,IAAI,IAAI,CAAC,kBAAkB;AACvC,gBAAgB,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACtD,YAAY,IAAI,IAAI,CAAC,uBAAuB;AAC5C,gBAAgB,YAAY,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;AAC3D,YAAY,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrI,YAAY,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC,MAAM;AAC5D,gBAAgB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACxF,aAAa,EAAE,gCAAgC,CAAC,CAAC;AACjD,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;AAC7E,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,IAAI,IAAI,KAAK,aAAa,CAAC,SAAS,EAAE;AAC9C,YAAY,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC;AACjE,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,EAAE;AACrD,oBAAoB,QAAQ;AAC5B,oBAAoB,KAAK;AACzB,oBAAoB,SAAS;AAC7B,oBAAoB,iBAAiB;AACrC,oBAAoB,yBAAyB;AAC7C,oBAAoB,0BAA0B;AAC9C,oBAAoB,iBAAiB;AACrC,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7F,gBAAgB,QAAQ,CAAC,KAAK,CAAC;AAC/B,oBAAoB,MAAM,EAAE;AAC5B,wBAAwB;AACxB,4BAA4B,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,WAAW,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/G,yBAAyB;AACzB,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,gBAAgB,IAAI,iBAAiB;AACrC,oBAAoB,YAAY,CAAC,iBAAiB,CAAC,CAAC;AACpD,gBAAgB,IAAI,OAAO,0BAA0B,KAAK,UAAU,EAAE;AACtE,oBAAoB,0BAA0B,EAAE,CAAC;AACjD,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,gBAAgB,CAAC,GAAG,EAAE;AAC1B,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACpC,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzE,YAAY,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC3C,SAAS;AACT,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AACjD,KAAK;AACL,IAAI,4BAA4B,CAAC,cAAc,EAAE;AACjD,QAAQ,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACtF,QAAQ,IAAI,oBAAoB,EAAE;AAClC,YAAY,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAAC;AACxE,YAAY,IAAI,CAAC,QAAQ,EAAE;AAC3B,gBAAgB,OAAO;AACvB,aAAa;AACb,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE;AAC7D,gBAAgB,QAAQ;AACxB,gBAAgB,KAAK;AACrB,gBAAgB,SAAS;AACzB,gBAAgB,iBAAiB,EAAE,mBAAmB,CAAC,MAAM;AAC7D,aAAa,CAAC,CAAC;AACf,YAAY,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzE,YAAY,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC3F,SAAS;AACT,KAAK;AACL,IAAI,8BAA8B,CAAC,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,GAAG,EAAE;AACvH,QAAQ,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,KAAK,EAAE;AACvD,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,EAAE,GAAG,KAAK;AAC/C,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AACjD,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,CAAC,MAAM,EAAE;AAC5D,gBAAgB,IAAI;AACpB,oBAAoB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC;AACjE,oBAAoB,MAAM,aAAa,GAAG,IAAI,CAAC;AAC/C,oBAAoB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC;AAC9E,wBAAwB,kBAAkB;AAC1C,wBAAwB,OAAO,EAAE,aAAa;AAC9C,wBAAwB,YAAY,EAAE,UAAU;AAChD,wBAAwB,MAAM;AAC9B,wBAAwB,sBAAsB;AAC9C,wBAAwB,MAAM;AAC9B,wBAAwB,iBAAiB;AACzC,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;AACtF,oBAAoB,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACzE,oBAAoB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AAC3E,oBAAoB,IAAI,oBAAoB,GAAG,sBAAsB,IAAI,EAAE,CAAC;AAC5E,oBAAoB,IAAI,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAAE;AACnE,wBAAwB,oBAAoB;AAC5C,4BAA4B,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC1E,qBAAqB;AACrB,yBAAyB;AACzB,wBAAwB,oBAAoB,GAAG,oBAAoB;AACnE,6BAA6B,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC;AAC3E,6BAA6B,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC9D,qBAAqB;AACrB;AACA,oBAAoB,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC9C,oBAAoB,oBAAoB,GAAG,oBAAoB;AAC/D,yBAAyB,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC;AACtD,yBAAyB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,oBAAoB,MAAM,cAAc,GAAG,CAAC,EAAE,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7G,oBAAoB,MAAM,IAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC;AAC7E,oBAAoB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK;AAC3D,wBAAwB,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACxE,wBAAwB,GAAG,EAAE,CAAC;AAC9B,qBAAqB,CAAC,CAAC;AACvB,oBAAoB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC;AAC5D,oBAAoB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC3C,iBAAiB;AACjB,gBAAgB,OAAO,GAAG,EAAE;AAC5B,oBAAoB,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;AAChE,oBAAoB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACrE,oBAAoB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AAC3C,oBAAoB,IAAI,IAAI,CAAC,iBAAiB;AAC9C,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE;AAC9E,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3D,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AACvD,oBAAoB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC;AAC7D,iBAAiB;AACjB,aAAa;AACb,SAAS,CAAC,CAAC;AACX,KAAK;AACL,IAAI,MAAM,6BAA6B,CAAC,cAAc,EAAE;AACxD,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC;AAC3D,QAAQ,MAAM,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,CAAC;AAC7G,KAAK;AACL,IAAI,MAAM,oBAAoB,CAAC,cAAc,EAAE;AAC/C,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACjE;AACA;AACA,QAAQ,IAAI;AACZ,YAAY,MAAM,CAAC,MAAM;AACzB,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACjD,oBAAoB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;AACzF,oBAAoB,SAAS,CAAC,OAAO,GAAG,MAAM;AAC9C,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACnE,qBAAqB,CAAC;AACtB,oBAAoB,SAAS,CAAC,OAAO,GAAG,MAAM;AAC9C,wBAAwB,GAAG,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACrE,qBAAqB,CAAC;AACtB,oBAAoB,SAAS,CAAC,MAAM,GAAG,MAAM;AAC7C,wBAAwB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;AAC3D,wBAAwB,OAAO,GAAG,EAAE,CAAC;AACrC,qBAAqB,CAAC;AACtB,iBAAiB,CAAC,CAAC;AACnB,aAAa,GAAG,CAAC;AACjB;AACA,YAAY,MAAM,CAAC,MAAM;AACzB,gBAAgB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;AACjD,oBAAoB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAChD,wBAAwB,IAAI,KAAK,GAAG,KAAK,CAAC;AAC1C,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,IAAI;AAClE,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrF,yBAAyB,CAAC;AAC1B,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,IAAI;AAClE,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,4BAA4B,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,yBAAyB,CAAC;AAC1B,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,OAAO,KAAK;AACxE,4BAA4B,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClE,gCAAgC,OAAO;AACvC,6BAA6B;AAC7B,4BAA4B,MAAM,CAAC,KAAK,CAAC,CAAC,+CAA+C,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5G,4BAA4B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClE,4BAA4B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,mBAAmB,GAAG,0BAA0B,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AACxH,4BAA4B,IAAI,IAAI,KAAK,aAAa,CAAC,kBAAkB,EAAE;AAC3E,gCAAgC,KAAK,GAAG,IAAI,CAAC;AAC7C,gCAAgC,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5D,oCAAoC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;AAChF,oCAAoC,IAAI,CAAC,iBAAiB,CAAC,SAAS;AACpE,wCAAwC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,oCAAoC,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,GAAG,IAAI;AAC5E,wCAAwC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1D,wCAAwC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC7F,qCAAqC,CAAC;AACtC,oCAAoC,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,IAAI;AAC9E,wCAAwC,MAAM,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzF,wCAAwC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAC7F,qCAAqC,CAAC;AACtC,iCAAiC;AACjC,gCAAgC,GAAG,CAAC,wCAAwC,CAAC,CAAC;AAC9E,gCAAgC,OAAO;AACvC,6BAA6B;AAC7B,4BAA4B,IAAI,IAAI,KAAK,aAAa,CAAC,oBAAoB,EAAE;AAC7E,gCAAgC,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;AAC3H,gCAAgC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9D,6BAA6B;AAC7B,yBAAyB,CAAC;AAC1B,wBAAwB,MAAM,OAAO,GAAG;AACxC,4BAA4B,IAAI,EAAE,aAAa,CAAC,mBAAmB;AACnE,yBAAyB,CAAC;AAC1B,wBAAwB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AAC7E,wBAAwB,MAAM,UAAU,GAAG,CAAC,KAAK,KAAK;AACtD,4BAA4B,IAAI,CAAC,KAAK,EAAE;AACxC,gCAAgC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACxG,gCAAgC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,uEAAuE,EAAE,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvJ,6BAA6B;AAC7B,yBAAyB,CAAC;AAC1B,wBAAwB,UAAU,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACrF,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB,aAAa,GAAG,CAAC;AACjB,SAAS;AACT,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC;AACjD,YAAY,IAAI,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzD,gBAAgB,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACvD,aAAa;AACb,iBAAiB,IAAI,SAAS,EAAE;AAChC,gBAAgB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3C,aAAa;AACb,iBAAiB;AACjB,gBAAgB,MAAM,GAAG,CAAC;AAC1B,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,MAAM,2BAA2B,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,iBAAiB,GAAG,EAAE;AACjJ,QAAQ,MAAM,aAAa,GAAG;AAC9B,YAAY,MAAM,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5D,YAAY,GAAG,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACtD,YAAY,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrD,YAAY,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,YAAY,MAAM,EAAE,IAAI,CAAC,iBAAiB;AAC1C,YAAY,IAAI,EAAE,IAAI,CAAC,iBAAiB;AACxC,SAAS,CAAC;AACV,QAAQ,IAAI,CAAC,kBAAkB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,EAAE;AACvE,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;AACpF,YAAY,OAAO,SAAS,CAAC;AAC7B,SAAS;AACT,aAAa;AACb,YAAY,MAAM,OAAO,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAC9D,YAAY,MAAM,IAAI,GAAG,sBAAsB;AAC/C,kBAAkB,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC,IAAI;AAC7D,kBAAkB,SAAS,CAAC;AAC5B,YAAY,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,YAAY,IAAI,cAAc,CAAC;AAC/B,YAAY,IAAI,kBAAkB,KAAK,QAAQ,EAAE;AACjD,gBAAgB,cAAc,GAAG,MAAM,CAAC;AACxC,aAAa;AACb,YAAY,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;AACzC,gBAAgB,OAAO;AACvB,gBAAgB,YAAY;AAC5B,gBAAgB,sBAAsB;AACtC,gBAAgB,MAAM,EAAE,cAAc;AACtC,gBAAgB,MAAM;AACtB,gBAAgB,IAAI;AACpB,gBAAgB,iBAAiB;AACjC,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT,KAAK;AACL,IAAI,MAAM,mBAAmB,CAAC,EAAE,IAAI,EAAE,EAAE;AACxC,QAAQ,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;AACjD,QAAQ,OAAO;AACf,YAAY,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE;AACnE,YAAY,IAAI;AAChB,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,wBAAwB,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE;AACtD,QAAQ,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;AAC9B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACrE,QAAQ,OAAO;AACf,YAAY,IAAI;AAChB,YAAY,YAAY,EAAE,KAAK;AAC/B,YAAY,WAAW,EAAE,MAAM;AAC/B,SAAS,CAAC;AACV,KAAK;AACL,IAAI,MAAM,qBAAqB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,GAAG,EAAE;AAC5F,QAAQ,MAAM,YAAY,GAAG;AAC7B,YAAY,MAAM;AAClB,YAAY,OAAO,EAAE,SAAS;AAC9B,SAAS,CAAC;AACV,QAAQ,MAAM,KAAK,GAAG,CAAC,MAAM,gBAAgB,EAAE,EAAE,WAAW,CAAC;AAC7D,QAAQ,MAAM,OAAO,GAAG;AACxB,YAAY,GAAG,EAAE,CAAC,EAAE,sBAAsB,CAAC,EAAE,YAAY,CAAC,CAAC;AAC3D,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,MAAM,EAAE,MAAM;AAC1B,YAAY,OAAO,EAAE,EAAE,GAAG,4BAA4B,EAAE;AACxD,SAAS,CAAC;AACV,QAAQ,MAAM,aAAa,GAAG,WAAW,CAAC;AAC1C,YAAY,OAAO,EAAE,OAAO,CAAC,OAAO;AACpC,YAAY,MAAM,EAAE,OAAO,CAAC,MAAM;AAClC,YAAY,GAAG,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;AAC5C,YAAY,IAAI,EAAE,OAAO,CAAC,IAAI;AAC9B,SAAS,EAAE;AACX;AACA,YAAY,WAAW,EAAE,KAAK;AAC9B,YAAY,aAAa,EAAE,YAAY,CAAC,MAAM;AAC9C,YAAY,cAAc,EAAE,YAAY,CAAC,OAAO;AAChD,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,aAAa,CAAC,OAAO,CAAC;AACrC,KAAK;AACL,IAAI,iBAAiB,CAAC,EAAE,IAAI,EAAE,iBAAiB,GAAG,EAAE;AACpD,QAAQ,IAAI,CAAC,iBAAiB,GAAG,eAAe,CAAC,EAAE;AACnD,YAAY,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AACvD,SAAS;AACT,QAAQ,OAAO;AACf,YAAY,aAAa,EAAE,iBAAiB,CAAC,aAAa;AAC1D,YAAY,IAAI;AAChB,SAAS,CAAC;AACV,KAAK;AACL;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../src/Providers/AWSAppSyncRealTimeProvider/index.ts"],"sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { Observable } from 'rxjs';\nimport { GraphQLError } from 'graphql';\nimport { Hub, fetchAuthSession, ConsoleLogger, } from '@aws-amplify/core';\nimport { signRequest } from '@aws-amplify/core/internals/aws-client-utils';\nimport { base64Encoder, NonRetryableError, USER_AGENT_HEADER, getAmplifyUserAgent, isNonRetryableError, jitteredExponentialRetry, amplifyUuid, AmplifyUrl, } from '@aws-amplify/core/internals/utils';\nimport { CONTROL_MSG, ConnectionState, } from '../../types/PubSub';\nimport { AMPLIFY_SYMBOL, AWS_APPSYNC_REALTIME_HEADERS, CONNECTION_INIT_TIMEOUT, DEFAULT_KEEP_ALIVE_TIMEOUT, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT, MAX_DELAY_MS, MESSAGE_TYPES, NON_RETRYABLE_CODES, SOCKET_STATUS, START_ACK_TIMEOUT, SUBSCRIPTION_STATUS, CONNECTION_STATE_CHANGE, } from '../constants';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../../utils/ConnectionStateMonitor';\nimport { ReconnectEvent, ReconnectionMonitor, } from '../../utils/ReconnectionMonitor';\nconst logger = new ConsoleLogger('AWSAppSyncRealTimeProvider');\nconst dispatchApiEvent = (payload) => {\n Hub.dispatch('api', payload, 'PubSub', AMPLIFY_SYMBOL);\n};\nconst standardDomainPattern = /^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com(?:\\.cn)?\\/graphql$/i;\nconst customDomainPath = '/realtime';\nexport class AWSAppSyncRealTimeProvider {\n constructor(options = {}) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n this.subscriptionObserverMap = new Map();\n this.promiseArray = [];\n this.connectionStateMonitor = new ConnectionStateMonitor();\n this.reconnectionMonitor = new ReconnectionMonitor();\n // Monitor the connection state and pass changes along to Hub\n this.connectionStateMonitorSubscription =\n this.connectionStateMonitor.connectionStateObservable.subscribe(connectionState => {\n dispatchApiEvent({\n event: CONNECTION_STATE_CHANGE,\n data: {\n provider: this,\n connectionState,\n },\n message: `Connection state is ${connectionState}`,\n });\n this.connectionState = connectionState;\n // Trigger START_RECONNECT when the connection is disrupted\n if (connectionState === ConnectionState.ConnectionDisrupted) {\n this.reconnectionMonitor.record(ReconnectEvent.START_RECONNECT);\n }\n // Trigger HALT_RECONNECT to halt reconnection attempts when the state is anything other than\n // ConnectionDisrupted or Connecting\n if ([\n ConnectionState.Connected,\n ConnectionState.ConnectedPendingDisconnect,\n ConnectionState.ConnectedPendingKeepAlive,\n ConnectionState.ConnectedPendingNetwork,\n ConnectionState.ConnectionDisruptedPendingNetwork,\n ConnectionState.Disconnected,\n ].includes(connectionState)) {\n this.reconnectionMonitor.record(ReconnectEvent.HALT_RECONNECT);\n }\n });\n }\n /**\n * Mark the socket closed and release all active listeners\n */\n close() {\n // Mark the socket closed both in status and the connection monitor\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n // Turn off the subscription monitor Hub publishing\n this.connectionStateMonitorSubscription.unsubscribe();\n // Complete all reconnect observers\n this.reconnectionMonitor.close();\n }\n getNewWebSocket(url, protocol) {\n return new WebSocket(url, protocol);\n }\n getProviderName() {\n return 'AWSAppSyncRealTimeProvider';\n }\n // Check if url matches standard domain pattern\n isCustomDomain(url) {\n return url.match(standardDomainPattern) === null;\n }\n subscribe(options, customUserAgentDetails) {\n const { appSyncGraphqlEndpoint, region, query, variables, authenticationType, additionalHeaders, apiKey, } = options || {};\n return new Observable(observer => {\n if (!options || !appSyncGraphqlEndpoint) {\n observer.error({\n errors: [\n {\n ...new GraphQLError(`Subscribe only available for AWS AppSync endpoint`),\n },\n ],\n });\n observer.complete();\n }\n else {\n let subscriptionStartActive = false;\n const subscriptionId = amplifyUuid();\n const startSubscription = () => {\n if (!subscriptionStartActive) {\n subscriptionStartActive = true;\n const startSubscriptionPromise = this._startSubscriptionWithAWSAppSyncRealTime({\n options: {\n query,\n variables,\n region,\n authenticationType,\n appSyncGraphqlEndpoint,\n additionalHeaders,\n apiKey,\n },\n observer,\n subscriptionId,\n customUserAgentDetails,\n }).catch(err => {\n logger.debug(`${CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR}: ${err}`);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n });\n startSubscriptionPromise.finally(() => {\n subscriptionStartActive = false;\n });\n }\n };\n let reconnectSubscription;\n // Add an observable to the reconnection list to manage reconnection for this subscription\n reconnectSubscription = new Observable(observer => {\n this.reconnectionMonitor.addObserver(observer);\n }).subscribe(() => {\n startSubscription();\n });\n startSubscription();\n return async () => {\n // Cleanup reconnection subscription\n reconnectSubscription?.unsubscribe();\n // Cleanup after unsubscribing or observer.complete was called after _startSubscriptionWithAWSAppSyncRealTime\n try {\n // Waiting that subscription has been connected before trying to unsubscribe\n await this._waitForSubscriptionToBeConnected(subscriptionId);\n const { subscriptionState } = this.subscriptionObserverMap.get(subscriptionId) || {};\n if (!subscriptionState) {\n // subscription already unsubscribed\n return;\n }\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId);\n }\n else {\n throw new Error('Subscription never connected');\n }\n }\n catch (err) {\n logger.debug(`Error while unsubscribing ${err}`);\n }\n finally {\n this._removeSubscriptionObserver(subscriptionId);\n }\n };\n }\n });\n }\n async _startSubscriptionWithAWSAppSyncRealTime({ options, observer, subscriptionId, customUserAgentDetails, }) {\n const { appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, graphql_headers = () => ({}), additionalHeaders = {}, } = options;\n const subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n const data = {\n query,\n variables,\n };\n // Having a subscription id map will make it simple to forward messages received\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n query: query ?? '',\n variables: variables ?? {},\n subscriptionState,\n startAckTimeoutId: undefined,\n });\n // Preparing payload for subscription message\n const dataString = JSON.stringify(data);\n const headerObj = {\n ...(await this._awsRealTimeHeaderBasedAuth({\n apiKey,\n appSyncGraphqlEndpoint,\n authenticationType,\n payload: dataString,\n canonicalUri: '',\n region,\n additionalHeaders,\n })),\n ...(await graphql_headers()),\n ...additionalHeaders,\n [USER_AGENT_HEADER]: getAmplifyUserAgent(customUserAgentDetails),\n };\n const subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: {\n ...headerObj,\n },\n },\n },\n type: MESSAGE_TYPES.GQL_START,\n };\n const stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n try {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n await this._initializeWebSocketConnection({\n apiKey,\n appSyncGraphqlEndpoint,\n authenticationType,\n region,\n additionalHeaders,\n });\n }\n catch (err) {\n this._logStartSubscriptionError(subscriptionId, observer, err);\n return;\n }\n // Potential race condition can occur when unsubscribe is called during _initializeWebSocketConnection.\n // E.g.unsubscribe gets invoked prior to finishing WebSocket handshake or START_ACK.\n // Both subscriptionFailedCallback and subscriptionReadyCallback are used to synchronized this.\n const { subscriptionFailedCallback, subscriptionReadyCallback } = this.subscriptionObserverMap.get(subscriptionId) ?? {};\n // This must be done before sending the message in order to be listening immediately\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n subscriptionState,\n query: query ?? '',\n variables: variables ?? {},\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(() => {\n this._timeoutStartSubscriptionAck.call(this, subscriptionId);\n }, START_ACK_TIMEOUT),\n });\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n // Log logic for start subscription failures\n _logStartSubscriptionError(subscriptionId, observer, err) {\n logger.debug({ err });\n const message = String(err.message ?? '');\n // Resolving to give the state observer time to propogate the update\n Promise.resolve(this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED));\n // Capture the error only when the network didn't cause disruption\n if (this.connectionState !== ConnectionState.ConnectionDisruptedPendingNetwork) {\n // When the error is non-retriable, error out the observable\n if (isNonRetryableError(err)) {\n observer.error({\n errors: [\n {\n ...new GraphQLError(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`),\n },\n ],\n });\n }\n else {\n logger.debug(`${CONTROL_MSG.CONNECTION_FAILED}: ${message}`);\n }\n const { subscriptionFailedCallback } = this.subscriptionObserverMap.get(subscriptionId) || {};\n // Notify concurrent unsubscription\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n }\n // Waiting that subscription has been connected before trying to unsubscribe\n async _waitForSubscriptionToBeConnected(subscriptionId) {\n const subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n const { subscriptionState } = subscriptionObserver;\n // This in case unsubscribe is invoked before sending start subscription message\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return new Promise((res, rej) => {\n const { observer, subscriptionState, variables, query } = subscriptionObserver;\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n subscriptionState,\n variables,\n query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej,\n });\n });\n }\n }\n }\n _sendUnsubscriptionMessage(subscriptionId) {\n try {\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n const unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP,\n };\n const stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({ err });\n }\n }\n _removeSubscriptionObserver(subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId);\n // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n _closeSocketIfRequired() {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n else {\n logger.debug('closing WebSocket...');\n if (this.keepAliveTimeoutId) {\n clearTimeout(this.keepAliveTimeoutId);\n }\n if (this.keepAliveAlertTimeoutId) {\n clearTimeout(this.keepAliveAlertTimeoutId);\n }\n const tempSocket = this.awsRealTimeSocket;\n // Cleaning callbacks to avoid race condition, socket still exists\n tempSocket.onclose = null;\n tempSocket.onerror = null;\n tempSocket.close(1000);\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n }\n _handleIncomingSubscriptionMessage(message) {\n if (typeof message.data !== 'string') {\n return;\n }\n logger.debug(`subscription message from AWS AppSync RealTime: ${message.data}`);\n const { id = '', payload, type, } = JSON.parse(String(message.data));\n const { observer = null, query = '', variables = {}, startAckTimeoutId, subscriptionReadyCallback, subscriptionFailedCallback, } = this.subscriptionObserverMap.get(id) || {};\n logger.debug({ id, observer, query, variables });\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n }\n else {\n logger.debug(`observer not found for id: ${id}`);\n }\n return;\n }\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(`subscription ready for ${JSON.stringify({ query, variables })}`);\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent({\n event: CONTROL_MSG.SUBSCRIPTION_ACK,\n data: { query, variables },\n message: 'Connection established for subscription',\n });\n const subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer,\n query,\n variables,\n startAckTimeoutId: undefined,\n subscriptionState,\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n });\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n if (this.keepAliveTimeoutId)\n clearTimeout(this.keepAliveTimeoutId);\n if (this.keepAliveAlertTimeoutId)\n clearTimeout(this.keepAliveAlertTimeoutId);\n this.keepAliveTimeoutId = setTimeout(() => this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n this.keepAliveAlertTimeoutId = setTimeout(() => {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n }, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n const subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer,\n query,\n variables,\n startAckTimeoutId,\n subscriptionReadyCallback,\n subscriptionFailedCallback,\n subscriptionState,\n });\n logger.debug(`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`);\n observer.error({\n errors: [\n {\n ...new GraphQLError(`${CONTROL_MSG.CONNECTION_FAILED}: ${JSON.stringify(payload)}`),\n },\n ],\n });\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n }\n }\n _errorDisconnect(msg) {\n logger.debug(`Disconnect error: ${msg}`);\n if (this.awsRealTimeSocket) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n this.awsRealTimeSocket.close();\n }\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n _timeoutStartSubscriptionAck(subscriptionId) {\n const subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n const { observer, query, variables } = subscriptionObserver;\n if (!observer) {\n return;\n }\n this.subscriptionObserverMap.set(subscriptionId, {\n observer,\n query,\n variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED,\n });\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n logger.debug('timeoutStartSubscription', JSON.stringify({ query, variables }));\n }\n }\n _initializeWebSocketConnection({ appSyncGraphqlEndpoint, authenticationType, apiKey, region, additionalHeaders, }) {\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n return new Promise(async (res, rej) => {\n this.promiseArray.push({ res, rej });\n if (this.socketStatus === SOCKET_STATUS.CLOSED) {\n try {\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n const payloadString = '{}';\n const authHeader = await this._awsRealTimeHeaderBasedAuth({\n authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey,\n appSyncGraphqlEndpoint,\n region,\n additionalHeaders,\n });\n const headerString = authHeader ? JSON.stringify(authHeader) : '';\n const headerQs = base64Encoder.convert(headerString);\n const payloadQs = base64Encoder.convert(payloadString);\n let discoverableEndpoint = appSyncGraphqlEndpoint ?? '';\n if (this.isCustomDomain(discoverableEndpoint)) {\n discoverableEndpoint =\n discoverableEndpoint.concat(customDomainPath);\n }\n else {\n discoverableEndpoint = discoverableEndpoint\n .replace('appsync-api', 'appsync-realtime-api')\n .replace('gogi-beta', 'grt-beta');\n }\n // Creating websocket url with required query strings\n const protocol = 'wss://';\n discoverableEndpoint = discoverableEndpoint\n .replace('https://', protocol)\n .replace('http://', protocol);\n const awsRealTimeUrl = `${discoverableEndpoint}?header=${headerQs}&payload=${payloadQs}`;\n await this._initializeRetryableHandshake(awsRealTimeUrl);\n this.promiseArray.forEach(({ res }) => {\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n }\n catch (err) {\n logger.debug('Connection exited with', err);\n this.promiseArray.forEach(({ rej }) => rej(err));\n this.promiseArray = [];\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n }\n });\n }\n async _initializeRetryableHandshake(awsRealTimeUrl) {\n logger.debug(`Initializaling retryable Handshake`);\n await jitteredExponentialRetry(this._initializeHandshake.bind(this), [awsRealTimeUrl], MAX_DELAY_MS);\n }\n async _initializeHandshake(awsRealTimeUrl) {\n logger.debug(`Initializing handshake ${awsRealTimeUrl}`);\n // Because connecting the socket is async, is waiting until connection is open\n // Step 1: connect websocket\n try {\n await (() => {\n return new Promise((res, rej) => {\n const newSocket = this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');\n newSocket.onerror = () => {\n logger.debug(`WebSocket connection error`);\n };\n newSocket.onclose = () => {\n rej(new Error('Connection handshake error'));\n };\n newSocket.onopen = () => {\n this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n })();\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n await (() => {\n return new Promise((res, rej) => {\n if (this.awsRealTimeSocket) {\n let ackOk = false;\n this.awsRealTimeSocket.onerror = error => {\n logger.debug(`WebSocket error ${JSON.stringify(error)}`);\n };\n this.awsRealTimeSocket.onclose = event => {\n logger.debug(`WebSocket closed ${event.reason}`);\n rej(new Error(JSON.stringify(event)));\n };\n this.awsRealTimeSocket.onmessage = (message) => {\n if (typeof message.data !== 'string') {\n return;\n }\n logger.debug(`subscription message from AWS AppSyncRealTime: ${message.data} `);\n const data = JSON.parse(message.data);\n const { type, payload: { connectionTimeoutMs = DEFAULT_KEEP_ALIVE_TIMEOUT, } = {}, } = data;\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n if (this.awsRealTimeSocket) {\n this.keepAliveTimeout = connectionTimeoutMs;\n this.awsRealTimeSocket.onmessage =\n this._handleIncomingSubscriptionMessage.bind(this);\n this.awsRealTimeSocket.onerror = err => {\n logger.debug(err);\n this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n this.awsRealTimeSocket.onclose = event => {\n logger.debug(`WebSocket closed ${event.reason}`);\n this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n }\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n const { payload: { errors: [{ errorType = '', errorCode = 0 } = {}] = [], } = {}, } = data;\n rej({ errorType, errorCode });\n }\n };\n const gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n };\n this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n const checkAckOk = (ackOk) => {\n if (!ackOk) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error(`Connection timeout: ack from AWSAppSyncRealTime was not received after ${CONNECTION_INIT_TIMEOUT} ms`));\n }\n };\n setTimeout(() => checkAckOk(ackOk), CONNECTION_INIT_TIMEOUT);\n }\n });\n })();\n }\n catch (err) {\n const { errorType, errorCode } = err;\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n }\n else if (errorType) {\n throw new Error(errorType);\n }\n else {\n throw err;\n }\n }\n }\n async _awsRealTimeHeaderBasedAuth({ apiKey, authenticationType, payload, canonicalUri, appSyncGraphqlEndpoint, region, additionalHeaders, }) {\n const headerHandler = {\n apiKey: this._awsRealTimeApiKeyHeader.bind(this),\n iam: this._awsRealTimeIAMHeader.bind(this),\n oidc: this._awsAuthTokenHeader.bind(this),\n userPool: this._awsAuthTokenHeader.bind(this),\n lambda: this._customAuthHeader,\n none: this._customAuthHeader,\n };\n if (!authenticationType || !headerHandler[authenticationType]) {\n logger.debug(`Authentication type ${authenticationType} not supported`);\n return undefined;\n }\n else {\n const handler = headerHandler[authenticationType];\n const host = appSyncGraphqlEndpoint\n ? new AmplifyUrl(appSyncGraphqlEndpoint).host\n : undefined;\n logger.debug(`Authenticating with ${JSON.stringify(authenticationType)}`);\n let resolvedApiKey;\n if (authenticationType === 'apiKey') {\n resolvedApiKey = apiKey;\n }\n const result = await handler({\n payload,\n canonicalUri,\n appSyncGraphqlEndpoint,\n apiKey: resolvedApiKey,\n region,\n host,\n additionalHeaders,\n });\n return result;\n }\n }\n async _awsAuthTokenHeader({ host }) {\n const session = await fetchAuthSession();\n return {\n Authorization: session?.tokens?.accessToken?.toString(),\n host,\n };\n }\n async _awsRealTimeApiKeyHeader({ apiKey, host, }) {\n const dt = new Date();\n const dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return {\n host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey,\n };\n }\n async _awsRealTimeIAMHeader({ payload, canonicalUri, appSyncGraphqlEndpoint, region, }) {\n const endpointInfo = {\n region,\n service: 'appsync',\n };\n const creds = (await fetchAuthSession()).credentials;\n const request = {\n url: `${appSyncGraphqlEndpoint}${canonicalUri}`,\n data: payload,\n method: 'POST',\n headers: { ...AWS_APPSYNC_REALTIME_HEADERS },\n };\n const signed_params = signRequest({\n headers: request.headers,\n method: request.method,\n url: new AmplifyUrl(request.url),\n body: request.data,\n }, {\n // TODO: What do we need to do to remove these !'s?\n credentials: creds,\n signingRegion: endpointInfo.region,\n signingService: endpointInfo.service,\n });\n return signed_params.headers;\n }\n _customAuthHeader({ host, additionalHeaders, }) {\n if (!additionalHeaders?.['Authorization']) {\n throw new Error('No auth token specified');\n }\n return {\n Authorization: additionalHeaders.Authorization,\n host,\n };\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,16 +1,12 @@
1
- import { GraphQLAuthMode } from '@aws-amplify/core/internals/utils';
2
- import { V6Client } from '../types';
3
- type ListArgs = {
4
- selectionSet?: string[];
5
- filter?: {};
6
- };
1
+ import { GraphQLAuthMode, ModelIntrospectionSchema, SchemaModel, SchemaModels } from '@aws-amplify/core/internals/utils';
2
+ import { AuthModeParams, ClientWithModels, ListArgs, QueryArgs } from '../types';
7
3
  /**
8
4
  *
9
5
  * @param GraphQL response object
10
6
  * @returns response object with `items` properties flattened
11
7
  */
12
8
  export declare const flattenItems: (obj: Record<string, any>) => Record<string, any>;
13
- export declare function initializeModel(client: any, modelName: string, result: any[], modelIntrospection: any, authMode: GraphQLAuthMode | undefined, authToken: string | undefined, context?: boolean): any[];
9
+ export declare function initializeModel(client: ClientWithModels, modelName: string, result: any[], modelIntrospection: ModelIntrospectionSchema, authMode: GraphQLAuthMode | undefined, authToken: string | undefined, context?: boolean): any[];
14
10
  export declare const graphQLOperationsInfo: {
15
11
  CREATE: {
16
12
  operationPrefix: "create";
@@ -53,7 +49,7 @@ export type ModelOperation = keyof typeof graphQLOperationsInfo;
53
49
  /**
54
50
  * Generates nested Custom Selection Set IR from path
55
51
  *
56
- * @param modelIntrospection
52
+ * @param modelDefinitions
57
53
  * @param modelName
58
54
  * @param selectionSet - array of object paths
59
55
  * @example
@@ -69,7 +65,7 @@ export type ModelOperation = keyof typeof graphQLOperationsInfo;
69
65
  * }
70
66
  * ```
71
67
  */
72
- export declare function customSelectionSetToIR(modelIntrospection: any, modelName: string, selectionSet: string[]): Record<string, string | object>;
68
+ export declare function customSelectionSetToIR(modelDefinitions: SchemaModels, modelName: string, selectionSet: string[]): Record<string, string | object>;
73
69
  /**
74
70
  * Stringifies selection set IR
75
71
  * * @example
@@ -86,9 +82,9 @@ export declare function customSelectionSetToIR(modelIntrospection: any, modelNam
86
82
  * `'id comments { items { post { id } } }'`
87
83
  */
88
84
  export declare function selectionSetIRToString(obj: Record<string, string | any>): string;
89
- export declare function generateSelectionSet(modelIntrospection: any, modelName: string, selectionSet?: string[]): string;
90
- export declare function generateGraphQLDocument(modelIntrospection: any, modelName: string, modelOperation: ModelOperation, listArgs?: ListArgs): string;
91
- export declare function buildGraphQLVariables(modelDefinition: any, operation: ModelOperation, arg: any, modelIntrospection: any): object;
85
+ export declare function generateSelectionSet(modelDefinitions: SchemaModels, modelName: string, selectionSet?: string[]): string;
86
+ export declare function generateGraphQLDocument(modelDefinitions: SchemaModels, modelName: string, modelOperation: ModelOperation, listArgs?: ListArgs): string;
87
+ export declare function buildGraphQLVariables(modelDefinition: SchemaModel, operation: ModelOperation, arg: QueryArgs | undefined, modelIntrospection: ModelIntrospectionSchema): object;
92
88
  /**
93
89
  * Iterates over mutation input values and resolves any model inputs to their corresponding join fields/values
94
90
  *
@@ -103,11 +99,7 @@ export declare function buildGraphQLVariables(modelDefinition: any, operation: M
103
99
  * ```
104
100
  *
105
101
  */
106
- export declare function normalizeMutationInput(mutationInput: any, model: any, modelDefinition: any): Record<string, unknown>;
107
- type AuthModeParams = {
108
- authMode?: GraphQLAuthMode;
109
- authToken?: string;
110
- };
102
+ export declare function normalizeMutationInput(mutationInput: QueryArgs, model: SchemaModel, modelIntrospection: ModelIntrospectionSchema): QueryArgs;
111
103
  /**
112
104
  * Produces a parameter object that can contains auth mode/token overrides
113
105
  * only if present in either `options` (first) or configured on the `client`
@@ -117,5 +109,4 @@ type AuthModeParams = {
117
109
  * @param options Args/Options obect from call site.
118
110
  * @returns
119
111
  */
120
- export declare function authModeParams(client: V6Client, options?: AuthModeParams): AuthModeParams;
121
- export {};
112
+ export declare function authModeParams(client: ClientWithModels, options?: AuthModeParams): AuthModeParams;