@salesforce/lds-worker-api 0.131.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 (129) hide show
  1. package/LICENSE.txt +82 -0
  2. package/README.md +9 -0
  3. package/dist/sfdc/es/draftQueueImplementation.d.ts +2 -0
  4. package/dist/sfdc/es/executeAdapter.d.ts +89 -0
  5. package/dist/sfdc/es/language.d.ts +13 -0
  6. package/dist/sfdc/es/ldsWorkerApi.js +761 -0
  7. package/dist/sfdc/es/lightningAdapterApi.d.ts +11 -0
  8. package/dist/sfdc/es/main.d.ts +8 -0
  9. package/dist/sfdc/es/nimbusDraftQueue.d.ts +6 -0
  10. package/dist/sfdc/es/primingApi.d.ts +23 -0
  11. package/dist/sfdc/es/responses.d.ts +44 -0
  12. package/dist/sfdc/es/standalone-stubs/instrumentation.d.ts +21 -0
  13. package/dist/sfdc/es/standalone-stubs/o11y.d.ts +18 -0
  14. package/dist/sfdc/es/standalone-stubs/unwrap.d.ts +1 -0
  15. package/dist/sfdc/es/standalone.d.ts +1 -0
  16. package/dist/sfdc/es/ttl.d.ts +2 -0
  17. package/dist/standalone/es/draftQueueImplementation.d.ts +2 -0
  18. package/dist/standalone/es/executeAdapter.d.ts +89 -0
  19. package/dist/standalone/es/language.d.ts +13 -0
  20. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/currency.d.ts +2 -0
  21. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortDateFormat.d.ts +2 -0
  22. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortDateTimeFormat.d.ts +2 -0
  23. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortTimeFormat.d.ts +2 -0
  24. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/locale.d.ts +2 -0
  25. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/timeZone.d.ts +2 -0
  26. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/@salesforce/user/Id.d.ts +2 -0
  27. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/lightning/i18nCldrOptions.d.ts +2 -0
  28. package/dist/standalone/es/lds-runtime-mobile/src/__mocks__/lightning/i18nService.d.ts +10 -0
  29. package/dist/standalone/es/lds-worker-api/src/standalone-stubs/unwrap.d.ts +1 -0
  30. package/dist/standalone/es/lds-worker-api.js +77826 -0
  31. package/dist/standalone/es/lightningAdapterApi.d.ts +11 -0
  32. package/dist/standalone/es/main.d.ts +8 -0
  33. package/dist/standalone/es/nimbusDraftQueue.d.ts +6 -0
  34. package/dist/standalone/es/primingApi.d.ts +23 -0
  35. package/dist/standalone/es/responses.d.ts +44 -0
  36. package/dist/standalone/es/standalone-stubs/instrumentation.d.ts +21 -0
  37. package/dist/standalone/es/standalone-stubs/o11y.d.ts +18 -0
  38. package/dist/standalone/es/standalone.d.ts +1 -0
  39. package/dist/standalone/es/ttl.d.ts +2 -0
  40. package/dist/standalone/umd/draftQueueImplementation.d.ts +2 -0
  41. package/dist/standalone/umd/executeAdapter.d.ts +89 -0
  42. package/dist/standalone/umd/language.d.ts +13 -0
  43. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/currency.d.ts +2 -0
  44. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortDateFormat.d.ts +2 -0
  45. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortDateTimeFormat.d.ts +2 -0
  46. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/dateTime.shortTimeFormat.d.ts +2 -0
  47. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/locale.d.ts +2 -0
  48. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/i18n/timeZone.d.ts +2 -0
  49. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/@salesforce/user/Id.d.ts +2 -0
  50. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/lightning/i18nCldrOptions.d.ts +2 -0
  51. package/dist/standalone/umd/lds-runtime-mobile/src/__mocks__/lightning/i18nService.d.ts +10 -0
  52. package/dist/standalone/umd/lds-worker-api/src/standalone-stubs/unwrap.d.ts +1 -0
  53. package/dist/standalone/umd/lds-worker-api.js +77849 -0
  54. package/dist/standalone/umd/lightningAdapterApi.d.ts +11 -0
  55. package/dist/standalone/umd/main.d.ts +8 -0
  56. package/dist/standalone/umd/nimbusDraftQueue.d.ts +6 -0
  57. package/dist/standalone/umd/primingApi.d.ts +23 -0
  58. package/dist/standalone/umd/responses.d.ts +44 -0
  59. package/dist/standalone/umd/standalone-stubs/instrumentation.d.ts +21 -0
  60. package/dist/standalone/umd/standalone-stubs/o11y.d.ts +18 -0
  61. package/dist/standalone/umd/standalone.d.ts +1 -0
  62. package/dist/standalone/umd/ttl.d.ts +2 -0
  63. package/package.json +74 -0
  64. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/adapter-testcase.schema.json +83 -0
  65. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/name-displayValue-response.adapter-snapshot.result.json +61 -0
  66. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/name-displayValue.adapter-testcase.json +67 -0
  67. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/objectInfos/Aircraft-objectInfo.network-mock.json +550 -0
  68. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/objectInfos/Pilot-objectInfo.network-mock.json +347 -0
  69. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/scalar-displayValue-nonIntl-fallback-response.adapter-snapshot.result.json +86 -0
  70. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/scalar-displayValue-nonIntl-fallback.adapter-testcase.json +25 -0
  71. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/scalar-displayValue-response.adapter-snapshot.result.json +86 -0
  72. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/createRecord/scalar-displayValue.adapter-testcase.json +24 -0
  73. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/adapter-forward-assignedtome.adapter-testcase.json +34 -0
  74. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/adapter-forward-baseline.adapter-testcase.json +24 -0
  75. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/adapter-forward-child-relationship.adapter-testcase.json +29 -0
  76. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/adapter-forward-parent-relationship.adapter-testcase.json +29 -0
  77. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/adapter-forward-reserved-entity-name.adapter-testcase.json +25 -0
  78. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/assignedtome.adapter-testcase.json +33 -0
  79. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/date-predicate.adapter-testcase.json +23 -0
  80. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/graphql-get-errors.adapter-testcase.json +23 -0
  81. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/l2DataSet.js +252 -0
  82. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-baseline.adapter-testcase.json +21 -0
  83. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-where-orderby-allfields-spanningfield-500records.adapter-testcase.json +28 -0
  84. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-where-orderby-allfields-spanningfield.adapter-testcase.json +28 -0
  85. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-where-orderby-allfields.adapter-testcase.json +21 -0
  86. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-where-orderby.adapter-testcase.json +21 -0
  87. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/legacy/getTimeSheetEntry-where.adapter-testcase.json +21 -0
  88. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/multiple-recordquery.adapter-testcase.json +28 -0
  89. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/Account.network-mock.json +2784 -0
  90. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/AssignedResource.network-mock.json +863 -0
  91. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/Case.network-mock.json +1856 -0
  92. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/ServiceAppointment.network-mock.json +2888 -0
  93. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/ServiceResource.network-mock.json +1316 -0
  94. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/TimeSheetEntry.network-mock.json +977 -0
  95. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/User.network-mock.json +6604 -0
  96. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/WorkOrder.network-mock.json +3058 -0
  97. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectInfos/WorkType.network-mock.json +940 -0
  98. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/objectinfo.adapter-testcase.json +18 -0
  99. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/polyfield.adapter-testcase.json +43 -0
  100. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/polyquery-and-operator.adapter-testcase.json +28 -0
  101. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/adapter-forward-baseline.server-response.network-mock.json +416 -0
  102. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/adapter-forward-child-relationship.server-response.network-mock.json +103 -0
  103. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/adapter-forward-parent-relationship.server-response.network-mock.json +93 -0
  104. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/adapter-forward-reserved-entity-name.server-response.network-mock.json +97 -0
  105. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/assignedtome.server-response.network-mock.json +666 -0
  106. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/date-predicate.server-response.network-mock.json +56 -0
  107. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/graphql-get-errors.server-response.network-mock.json +19 -0
  108. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/multiple-recordquery.server-response.network-mock.json +201 -0
  109. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/objectinfos.server-response.network-mock.json +210 -0
  110. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/polyfield.server-response.network-mock.json +724 -0
  111. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/serverresponse/polyquery-and-operator.server-response.network-mock.json +103 -0
  112. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/adapter-forward-assignedtome.adapter-snapshot.result.json +72 -0
  113. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/adapter-forward-baseline.adapter-snapshot.result.json +245 -0
  114. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/adapter-forward-child-relationship.adapter-snapshot.result.json +30 -0
  115. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/adapter-forward-parent-relationship.adapter-snapshot.result.json +26 -0
  116. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/adapter-forward-reserved-entity-name.adapter-snapshot.result.json +32 -0
  117. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/assignedtome.adapter-snapshot.result.json +70 -0
  118. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/date-predicate.adapter-snapshot.result.json +18 -0
  119. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/graphql-get-errors.adapter-snapshot.result.json +16 -0
  120. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/multiple-recordquery.adapter-snapshot.result.json +53 -0
  121. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/objectinfos.adapter-snapshot.result.json +170 -0
  122. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/polyfield.adapter-snapshot.result.json +29 -0
  123. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/graphQL/snapshotdata/polyquery-and-operator.adapter-snapshot.result.json +23 -0
  124. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/metadataVersion/adapter-snapshot.result.json +9 -0
  125. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/metadataVersion/old-metadata-fails-cache-only-adapter-call.adapter-testcase.json +16 -0
  126. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/metadataVersion/old-metadata-fails-cache-only-adapter-call.l2DataSet.tsv +2 -0
  127. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/metadataVersion/old-version-fails-cache-only-adapter-call.adapter-testcase.json +16 -0
  128. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/metadataVersion/old-version-fails-cache-only-adapter-call.l2DataSet.tsv +2 -0
  129. package/src/__tests__/data-driven-tests/fixtures/adapter-testcases/network-mock.schema.json +14 -0
@@ -0,0 +1,761 @@
1
+ /**
2
+ * Copyright (c) 2022, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ /* *******************************************************************************************
8
+ * ATTENTION!
9
+ * THIS IS A GENERATED FILE FROM https://github.com/salesforce-experience-platform-emu/lds-lightning-platform
10
+ * If you would like to contribute to LDS, please follow the steps outlined in the git repo.
11
+ * Any changes made to this file in p4 will be automatically overwritten.
12
+ * *******************************************************************************************
13
+ */
14
+ import { parseAndVisit, gql } from 'force/ldsGraphqlParser';
15
+ import * as lightningAppsApi from 'lightning/uiAppsApi';
16
+ import * as unstableLightningAppsApi from 'lightning/unstable_uiAppsApi';
17
+ import * as lightningLayoutApi from 'lightning/uiLayoutApi';
18
+ import * as unstableLightningLayoutApi from 'lightning/unstable_uiLayoutApi';
19
+ import * as lightningListApi from 'lightning/uiListApi';
20
+ import * as unstableLightningListApi from 'lightning/unstable_uiListApi';
21
+ import * as lightningLookupsApi from 'lightning/uiLookupsApi';
22
+ import * as unstableLightningLookupsApi from 'lightning/unstable_uiLookupsApi';
23
+ import * as lightningObjectApi from 'lightning/uiObjectInfoApi';
24
+ import * as unstableLightningObjectApi from 'lightning/unstable_uiObjectInfoApi';
25
+ import * as lightningRecordActionsApi from 'lightning/uiRecordActionsApi';
26
+ import * as unstableLightningRecordActionsApi from 'lightning/unstable_uiRecordActionsApi';
27
+ import * as lightningRecordApi from 'lightning/uiRecordApi';
28
+ import * as unstableLightningRecordApi from 'lightning/unstable_uiRecordApi';
29
+ import * as lightningRecordAvatarApi from 'lightning/uiRecordAvatarApi';
30
+ import * as unstableLightningRecordAvatarApi from 'lightning/unstable_uiRecordAvatarApi';
31
+ import * as lightningRelatedListApi from 'lightning/uiRelatedListApi';
32
+ import * as unstableLightningRelatedListApi from 'lightning/unstable_uiRelatedListApi';
33
+ import * as lightningGraphQLApi from 'lightning/uiGraphQLApi';
34
+ import { createContentDocumentAndVersion, createContentVersion } from 'force/ldsAdaptersUiapi';
35
+ import * as gqlApi from 'force/ldsAdaptersGraphql';
36
+ import { getRuntime, reportGraphqlQueryParseError } from 'native/ldsRuntimeMobile';
37
+ export { registerReportObserver } from 'native/ldsRuntimeMobile';
38
+ import { HttpStatusCode } from 'force/luvioEngine';
39
+ import { withDefaultLuvio } from 'native/ldsEngineMobile';
40
+
41
+ const { create, keys } = Object;
42
+ const { stringify, parse } = JSON;
43
+ const { isArray } = Array;
44
+
45
+ const IMPERATIVE_ADAPTER_SUFFIX = '_imperative';
46
+ const UNSTABLE_ADAPTER_PREFIX = 'unstable_';
47
+ function extractWireAdapterName(adapterName) {
48
+ const parts = adapterName.split(UNSTABLE_ADAPTER_PREFIX);
49
+ if (parts.length > 1) {
50
+ return parts[1].substr(0, parts[1].indexOf(IMPERATIVE_ADAPTER_SUFFIX));
51
+ }
52
+ return adapterName.substr(0, adapterName.indexOf(IMPERATIVE_ADAPTER_SUFFIX));
53
+ }
54
+ let lazyDMLAdapterMap = undefined;
55
+ let lazyImperativeAdapterMap = undefined;
56
+ // this function builds the adapter maps lazily
57
+ function getAdapterMaps() {
58
+ if (lazyDMLAdapterMap === undefined || lazyImperativeAdapterMap === undefined) {
59
+ const map = Object.assign({
60
+ // We should eventually move all adapter names into this explicit list,
61
+ // this is our API contract to native callers and should be explicit
62
+ ['createContentDocumentAndVersion']: createContentDocumentAndVersion,
63
+ ['createContentVersion']: createContentVersion,
64
+ }, gqlApi, lightningAppsApi, lightningLayoutApi, lightningListApi, lightningLookupsApi, lightningObjectApi, lightningRecordActionsApi, lightningRecordApi, lightningRecordAvatarApi, lightningRelatedListApi, lightningGraphQLApi, unstableLightningAppsApi, unstableLightningLayoutApi, unstableLightningListApi, unstableLightningLookupsApi, unstableLightningObjectApi, unstableLightningRecordActionsApi, unstableLightningRecordApi, unstableLightningRecordAvatarApi, unstableLightningRelatedListApi);
65
+ const imperativeAdapterNames = keys(map).filter((name) => name.endsWith(IMPERATIVE_ADAPTER_SUFFIX));
66
+ const imperativeMap = {};
67
+ for (const adapterName of imperativeAdapterNames) {
68
+ const adapter = map[adapterName];
69
+ imperativeMap[adapterName] = adapter;
70
+ delete map[adapterName];
71
+ // remove the corresponding wire adapter from the adapter map
72
+ const wireAdapterName = extractWireAdapterName(adapterName);
73
+ delete map[wireAdapterName];
74
+ }
75
+ lazyDMLAdapterMap = map;
76
+ lazyImperativeAdapterMap = imperativeMap;
77
+ }
78
+ return { dmlAdapterMap: lazyDMLAdapterMap, imperativeAdapterMap: lazyImperativeAdapterMap };
79
+ }
80
+ function getDMLAdapterFromName(name) {
81
+ const { dmlAdapterMap } = getAdapterMaps();
82
+ return dmlAdapterMap[name];
83
+ }
84
+ function getImperativeAdapterFromName(name) {
85
+ const { imperativeAdapterMap } = getAdapterMaps();
86
+ return imperativeAdapterMap[name];
87
+ }
88
+ function getImperativeAdapterNames() {
89
+ const { imperativeAdapterMap } = getAdapterMaps();
90
+ return keys(imperativeAdapterMap);
91
+ }
92
+
93
+ const { draftManager, draftQueue } = getRuntime();
94
+
95
+ const NATIVE_ERROR_CODE = 'NATIVE_ERROR';
96
+ const NON_MUTATING_ADAPTER_MESSAGE = 'adapterId must be a mutating adapter';
97
+ const NO_DRAFT_CREATED_MESSAGE = 'the adapter did not generate a draft';
98
+ const DRAFT_DOESNT_EXIST_MESSAGE = 'the specified draft does not exist';
99
+ /**
100
+ * Error objects don't serialize well over the js-native wire, so our class turns
101
+ * an Error into an object that serializes real nice
102
+ */
103
+ class NativeNetworkAdapterErrorResponse {
104
+ constructor(error) {
105
+ this.errorType = 'networkAdapterError';
106
+ this.message = error.message;
107
+ this.name = error.name;
108
+ }
109
+ }
110
+ class NativeFetchResponse {
111
+ constructor(status, body) {
112
+ this.headers = {};
113
+ this.status = status;
114
+ this.body = body;
115
+ }
116
+ get statusText() {
117
+ const { status } = this;
118
+ switch (status) {
119
+ case HttpStatusCode.Ok:
120
+ return 'OK';
121
+ case HttpStatusCode.Created:
122
+ return 'Created';
123
+ case HttpStatusCode.NoContent:
124
+ return 'No Content';
125
+ case HttpStatusCode.BadRequest:
126
+ return 'Bad Request';
127
+ case HttpStatusCode.ServerError:
128
+ return 'Server Error';
129
+ default:
130
+ return `Unexpected HTTP Status Code: ${status}`;
131
+ }
132
+ }
133
+ get ok() {
134
+ return this.status >= 200 && this.status < 300;
135
+ }
136
+ }
137
+ class NativeFetchErrorResponse extends NativeFetchResponse {
138
+ constructor() {
139
+ super(...arguments);
140
+ this.errorType = 'fetchResponse';
141
+ }
142
+ }
143
+ function createNativeFetchErrorResponse(message) {
144
+ return new NativeFetchErrorResponse(HttpStatusCode.BadRequest, {
145
+ errorCode: NATIVE_ERROR_CODE,
146
+ message: message,
147
+ });
148
+ }
149
+ /**
150
+ * This function takes an unknown error and normalizes it to an Error object
151
+ */
152
+ function normalizeError(error) {
153
+ if (typeof error === 'object' && error instanceof Error) {
154
+ return error;
155
+ }
156
+ else if (typeof error === 'string') {
157
+ return new Error(error);
158
+ }
159
+ return new Error(stringify(error));
160
+ }
161
+
162
+ /**
163
+ * Coerces a cache policy passed in from native to a luvio cache policy
164
+ * @param nativeCachePolicy The cache policy passed in from native
165
+ * @returns A coerced luvio cache policy
166
+ */
167
+ function buildCachePolicy(nativeCachePolicy) {
168
+ if (nativeCachePolicy === undefined) {
169
+ return undefined;
170
+ }
171
+ // currently the types match exactly, if we ever decide to deviate then we should coerce here
172
+ return nativeCachePolicy;
173
+ }
174
+ /**
175
+ * Coerces a request context passed in from native to a luvio request context
176
+ * @param nativeRequestContext request context passed in from native
177
+ * @returns Coerced luvio request context
178
+ */
179
+ function buildAdapterRequestContext(nativeRequestContext) {
180
+ if (nativeRequestContext === undefined) {
181
+ return undefined;
182
+ }
183
+ const { cachePolicy, priority, observabilityContext, luvioEventObserver } = nativeRequestContext;
184
+ const requestContext = {
185
+ cachePolicy: buildCachePolicy(cachePolicy),
186
+ priority,
187
+ };
188
+ if (observabilityContext !== undefined && observabilityContext !== null) {
189
+ requestContext.requestCorrelator = {
190
+ observabilityContext,
191
+ };
192
+ }
193
+ if (luvioEventObserver !== undefined) {
194
+ requestContext.eventObservers = [luvioEventObserver];
195
+ }
196
+ return requestContext;
197
+ }
198
+ function buildInvalidConfigError(error) {
199
+ return {
200
+ data: undefined,
201
+ error: {
202
+ ok: false,
203
+ status: 400,
204
+ statusText: 'INVALID_CONFIG',
205
+ body: error,
206
+ headers: {},
207
+ errorType: 'fetchResponse',
208
+ },
209
+ };
210
+ }
211
+ function buildNativeCallbackValue(adapterCallbackValue) {
212
+ const { error } = adapterCallbackValue;
213
+ // Luvio NetworkAdapterError objects (which are just Error objects) must be
214
+ // turned into NativeNetworkAdapterErrorResponse because it serializes well
215
+ if (error !== undefined && error.errorType === 'networkAdapterError') {
216
+ return {
217
+ data: undefined,
218
+ error: new NativeNetworkAdapterErrorResponse(error),
219
+ };
220
+ }
221
+ // any other callback value does not need coercion, just retype
222
+ return adapterCallbackValue;
223
+ }
224
+ /**
225
+ *
226
+ * @param adapterId
227
+ * @returns imperative adapter key
228
+ */
229
+ function imperativeAdapterKeyBuilder(adapterId) {
230
+ if (adapterId.startsWith(UNSTABLE_ADAPTER_PREFIX)) {
231
+ return `${adapterId}${IMPERATIVE_ADAPTER_SUFFIX}`;
232
+ }
233
+ return `${UNSTABLE_ADAPTER_PREFIX}${adapterId}${IMPERATIVE_ADAPTER_SUFFIX}`;
234
+ }
235
+ /**
236
+ * Executes the adapter with the given adapterId and config. Will call onSnapshot
237
+ * callback with data or error. Returns an unsubscribe function that should
238
+ * be called to stop receiving updated snapshots.
239
+ *
240
+ * This function throws an error if the given adapterId cannot be found or is not
241
+ * a GET wire adapter. It will also throw if it fails to parse the config string.
242
+ */
243
+ function subscribeToAdapter(adapterId, config, onSnapshot, nativeAdapterRequestContext) {
244
+ const imperativeAdapterIdentifier = imperativeAdapterKeyBuilder(adapterId);
245
+ const imperativeAdapter = getImperativeAdapterFromName(imperativeAdapterIdentifier);
246
+ const onResponseDelegate = (value) => {
247
+ onSnapshot(buildNativeCallbackValue(value));
248
+ };
249
+ if (imperativeAdapter === undefined) {
250
+ // This check is here for legacy purpose
251
+ // So the consumers still get the same errors
252
+ if (getDMLAdapterFromName(adapterId) === undefined) {
253
+ throw Error(`adapter ${adapterId} not recognized`);
254
+ }
255
+ throw Error(`${adapterId} is not a GET wire adapter.`);
256
+ }
257
+ const configObject = parse(config);
258
+ // Check if it's graphQl adapter
259
+ // Parse the query in that case
260
+ const isGql = isGqlAdapter(imperativeAdapterIdentifier);
261
+ if (isGql) {
262
+ try {
263
+ // gql config needs gql query string turned into AST object
264
+ configObject.query = parseAndVisit(configObject.query);
265
+ }
266
+ catch (err) {
267
+ const parseError = normalizeError(err);
268
+ reportGraphqlQueryParseError(parseError);
269
+ // call the callback with error
270
+ onResponseDelegate({
271
+ data: undefined,
272
+ error: createNativeFetchErrorResponse(parseError.message),
273
+ });
274
+ return () => { };
275
+ }
276
+ }
277
+ if (imperativeAdapterIdentifier.includes('graphql')) {
278
+ try {
279
+ //we need to use the gql literal to convert into a document node
280
+ //in order to get through the gql imperative adapter
281
+ configObject.query = gql `
282
+ ${configObject.query}
283
+ `;
284
+ }
285
+ catch (err) {
286
+ const parseError = normalizeError(err);
287
+ reportGraphqlQueryParseError(parseError);
288
+ // call the callback with error
289
+ onResponseDelegate({
290
+ data: undefined,
291
+ error: createNativeFetchErrorResponse(parseError.message),
292
+ });
293
+ return () => { };
294
+ }
295
+ }
296
+ try {
297
+ return imperativeAdapter.subscribe(configObject, buildAdapterRequestContext(nativeAdapterRequestContext), onResponseDelegate);
298
+ }
299
+ catch (err) {
300
+ if (isGql) {
301
+ reportGraphqlQueryParseError(err);
302
+ }
303
+ onResponseDelegate(buildInvalidConfigError(err));
304
+ return () => { };
305
+ }
306
+ }
307
+ /**
308
+ * Checks if the given adapter id is a graphQL adapter
309
+ *
310
+ * @param imperativeAdapterIdentifier The adapter id to check
311
+ * @returns true if the adapter is graphQL, false otherwise
312
+ */
313
+ function isGqlAdapter(imperativeAdapterIdentifier) {
314
+ return keys(gqlApi).indexOf(imperativeAdapterIdentifier) > -1;
315
+ }
316
+ /**
317
+ * Executes a DML adapter and calls the onResponse callback upon receiving a response.
318
+ *
319
+ * @param adapter : DML Adapter
320
+ * @param configObject : parsed config
321
+ * @param onResponse : OnResponse
322
+ * @param nativeAdapterRequestContext: Specify cache policy, priority and observability parameters
323
+ */
324
+ function invokeDmlAdapter(adapter, configObject, onResponse, nativeAdapterRequestContext) {
325
+ try {
326
+ adapter(configObject, buildAdapterRequestContext(nativeAdapterRequestContext)).then((data) => {
327
+ onResponse({ data, error: undefined });
328
+ }, (error) => {
329
+ onResponse({ data: undefined, error });
330
+ });
331
+ }
332
+ catch (err) {
333
+ // For catching the synchronous error in adapter
334
+ onResponse(buildInvalidConfigError(err));
335
+ }
336
+ }
337
+ /**
338
+ * Executes the specified adapter with the given adapterId and config. Then
339
+ * it replaces the draft with the given id with the draft generated
340
+ * by the mutating adapter. Will call onResult callback once with data or error.
341
+ *
342
+ * This function throws an error if the given adapterId cannot be found, or if the
343
+ * adapterId is not a mutating adapter, or if a draft isn't created, or if it
344
+ * fails to parse the given config string.
345
+ */
346
+ function invokeAdapterWithDraftToReplace(adapterId, config, draftIdToReplace, onResponse, nativeAdapterRequestContext) {
347
+ draftManager.getQueue().then((draftInfo) => {
348
+ const draftIds = draftInfo.items.map((draft) => draft.id);
349
+ if (draftIds.includes(draftIdToReplace) === false) {
350
+ onResponse({
351
+ data: undefined,
352
+ error: createNativeFetchErrorResponse(DRAFT_DOESNT_EXIST_MESSAGE),
353
+ });
354
+ return;
355
+ }
356
+ const adapter = getDMLAdapterFromName(adapterId);
357
+ if (adapter === undefined) {
358
+ // This check is here for legacy purpose
359
+ // So the consumers still get the same errors
360
+ if (getImperativeAdapterFromName(imperativeAdapterKeyBuilder(adapterId)) !== undefined) {
361
+ onResponse({
362
+ data: undefined,
363
+ error: createNativeFetchErrorResponse(NON_MUTATING_ADAPTER_MESSAGE),
364
+ });
365
+ return;
366
+ }
367
+ throw Error(`adapter ${adapterId} not recognized`);
368
+ }
369
+ if (adapterId === 'deleteRecord') {
370
+ invokeAdapterWithDraftToReplaceDeleteRecord(adapter, config, draftIdToReplace, onResponse, nativeAdapterRequestContext);
371
+ }
372
+ else {
373
+ invokeDmlAdapter(adapter, parse(config), (responseValue) => {
374
+ const draftIds = draftIdsForResponseValue(responseValue);
375
+ if (responseValue.error === undefined &&
376
+ draftIds !== undefined &&
377
+ draftIds.length > 0) {
378
+ const draftId = draftIds[draftIds.length - 1];
379
+ draftManager.replaceAction(draftIdToReplace, draftId).then(() => {
380
+ onResponse(responseValue);
381
+ });
382
+ }
383
+ else {
384
+ let response = responseValue;
385
+ response.error = createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE);
386
+ onResponse(response);
387
+ }
388
+ }, nativeAdapterRequestContext);
389
+ }
390
+ });
391
+ }
392
+ /**
393
+ * Executes the specified adapter with the given adapterId and config. Then
394
+ * it sets the given metadata on the draft created by the mutating adapter. Will call
395
+ * onResult callback once with data or error.
396
+ *
397
+ * This function throws an error if the given adapterId cannot be found, or if the
398
+ * adapterId is not a mutating adapter, or if a draft isn't created, or if it
399
+ * fails to parse the given config string.
400
+ */
401
+ function invokeAdapterWithMetadata(adapterId, config, metadata, onResponse, nativeAdapterRequestContext) {
402
+ const adapter = getDMLAdapterFromName(adapterId);
403
+ if (adapter === undefined) {
404
+ // This check is here for legacy purpose
405
+ // So the consumers still get the same errors
406
+ if (getImperativeAdapterFromName(imperativeAdapterKeyBuilder(adapterId)) !== undefined) {
407
+ onResponse({
408
+ data: undefined,
409
+ error: createNativeFetchErrorResponse(NON_MUTATING_ADAPTER_MESSAGE),
410
+ });
411
+ return;
412
+ }
413
+ throw Error(`adapter ${adapterId} not recognized`);
414
+ }
415
+ if (adapterId === 'deleteRecord') {
416
+ invokeAdapterWithMetadataDeleteRecord(adapter, config, metadata, onResponse, nativeAdapterRequestContext);
417
+ }
418
+ else {
419
+ invokeDmlAdapter(adapter, parse(config), async (responseValue) => {
420
+ const draftIds = draftIdsForResponseValue(responseValue);
421
+ if (responseValue.error === undefined &&
422
+ draftIds !== undefined &&
423
+ draftIds.length > 0) {
424
+ const draftId = draftIds[draftIds.length - 1];
425
+ const managerState = await draftManager.getQueue();
426
+ const existingMetadata = (managerState.items.find((i) => i.id === draftId) || {}).metadata || {};
427
+ draftManager
428
+ .setMetadata(draftId, { ...existingMetadata, ...metadata })
429
+ .then(() => {
430
+ onResponse(responseValue);
431
+ });
432
+ }
433
+ else {
434
+ let response = responseValue;
435
+ response.error = createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE);
436
+ onResponse(response);
437
+ }
438
+ }, nativeAdapterRequestContext);
439
+ }
440
+ }
441
+ /*
442
+ //TODO W-10284305: Remove this function in 238
443
+ This is a special case version of the invokeAdapterWithMetadata function
444
+ which should only be used for the deleteRecord wire adapter, since it does not
445
+ contain record data in the result and has to do special querying of the draft queue
446
+ */
447
+ function invokeAdapterWithMetadataDeleteRecord(adapter, config, metadata, onResponse, nativeAdapterRequestContext) {
448
+ const targetedRecordId = parse(config);
449
+ let priorDraftIds;
450
+ draftManager.getQueue().then((draftState) => {
451
+ priorDraftIds = draftState.items.map((item) => {
452
+ return item.id;
453
+ });
454
+ invokeDmlAdapter(adapter, parse(config), (responseValue) => {
455
+ if (responseValue.error === undefined &&
456
+ responseValue.errors === undefined &&
457
+ responseValue.data === undefined) {
458
+ draftManager.getQueue().then((newState) => {
459
+ const draftIdsToFilter = priorDraftIds ? priorDraftIds : [];
460
+ const newDrafts = newState.items;
461
+ const addedDrafts = newDrafts.filter((item) => {
462
+ const isNew = draftIdsToFilter.indexOf(item.id) < 0;
463
+ const targetIdMatches = item.targetId === targetedRecordId;
464
+ return isNew && targetIdMatches;
465
+ });
466
+ if (addedDrafts.length !== 1) {
467
+ let response = {
468
+ error: createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE),
469
+ };
470
+ onResponse(response);
471
+ }
472
+ else {
473
+ draftManager.setMetadata(addedDrafts[0].id, metadata).then(() => {
474
+ onResponse(responseValue);
475
+ });
476
+ }
477
+ });
478
+ }
479
+ else {
480
+ let response = responseValue;
481
+ response.error = createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE);
482
+ onResponse(response);
483
+ }
484
+ }, nativeAdapterRequestContext);
485
+ });
486
+ }
487
+ /*
488
+ //TODO W-10284305: Remove this function in 238
489
+ This is a special case version of the invokeAdapterWithDraftToReplace function
490
+ which should only be used for the deleteRecord wire adapter, since it does not
491
+ contain record data in the result and has to do special querying of the draft queue
492
+ */
493
+ function invokeAdapterWithDraftToReplaceDeleteRecord(adapter, config, draftIdToReplace, onResponse, nativeAdapterRequestContext) {
494
+ const targetedRecordId = parse(config);
495
+ let priorDraftIds;
496
+ draftManager.getQueue().then((draftState) => {
497
+ priorDraftIds = draftState.items.map((item) => {
498
+ return item.id;
499
+ });
500
+ invokeDmlAdapter(adapter, parse(config), (responseValue) => {
501
+ if (responseValue.error === undefined &&
502
+ responseValue.errors === undefined &&
503
+ responseValue.data === undefined) {
504
+ draftManager.getQueue().then((newState) => {
505
+ const draftIdsToFilter = priorDraftIds ? priorDraftIds : [];
506
+ const newDrafts = newState.items;
507
+ const addedDrafts = newDrafts.filter((item) => {
508
+ const isNew = draftIdsToFilter.indexOf(item.id) < 0;
509
+ const targetIdMatches = item.targetId === targetedRecordId;
510
+ return isNew && targetIdMatches;
511
+ });
512
+ if (addedDrafts.length !== 1) {
513
+ let response = {
514
+ error: createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE),
515
+ };
516
+ onResponse(response);
517
+ }
518
+ else {
519
+ draftManager
520
+ .replaceAction(draftIdToReplace, addedDrafts[0].id)
521
+ .then(() => {
522
+ onResponse(responseValue);
523
+ });
524
+ }
525
+ });
526
+ }
527
+ else {
528
+ let response = responseValue;
529
+ response.error = createNativeFetchErrorResponse(NO_DRAFT_CREATED_MESSAGE);
530
+ onResponse(response);
531
+ }
532
+ }, nativeAdapterRequestContext);
533
+ });
534
+ }
535
+ function draftIdsForResponseValue(response) {
536
+ if (response.data !== undefined &&
537
+ response.data.drafts !== undefined &&
538
+ response.data.drafts.draftActionIds !== undefined) {
539
+ return response.data.drafts.draftActionIds;
540
+ }
541
+ if (response.data !== undefined &&
542
+ response.data.contentVersion !== undefined &&
543
+ response.data.contentVersion.drafts !== undefined &&
544
+ response.data.contentVersion.drafts.draftActionIds !== undefined) {
545
+ return response.data.contentVersion.drafts.draftActionIds;
546
+ }
547
+ return undefined;
548
+ }
549
+ /**
550
+ * Executes the specified adapter with the given adapterId and config. Will call
551
+ * onResponse callback once with data or error.
552
+ *
553
+ * This function throws an error if the given adapterId cannot be found or if it
554
+ * fails to parse the given config string.
555
+ */
556
+ function invokeAdapter(adapterId, config, onResponse, nativeAdapterRequestContext) {
557
+ const onResponseDelegate = (value) => {
558
+ onResponse(buildNativeCallbackValue(value));
559
+ };
560
+ const imperativeAdapterIdentifier = imperativeAdapterKeyBuilder(adapterId);
561
+ const imperativeAdapter = getImperativeAdapterFromName(imperativeAdapterIdentifier);
562
+ const configObject = parse(config);
563
+ // currently all uiapi GET adapters have a corresponding imperative adapter
564
+ if (imperativeAdapter !== undefined) {
565
+ // Check if it's graphQl adapter
566
+ // Parse the query in that case
567
+ const isGql = isGqlAdapter(imperativeAdapterIdentifier);
568
+ if (isGql) {
569
+ try {
570
+ // gql config needs gql query string turned into AST object
571
+ configObject.query = parseAndVisit(configObject.query);
572
+ }
573
+ catch (err) {
574
+ const parseError = normalizeError(err);
575
+ reportGraphqlQueryParseError(parseError);
576
+ // call the callback with error
577
+ onResponseDelegate({
578
+ data: undefined,
579
+ error: createNativeFetchErrorResponse(parseError.message),
580
+ });
581
+ return;
582
+ }
583
+ }
584
+ //unstable_graphql_imperative
585
+ if (imperativeAdapterIdentifier.includes('graphql')) {
586
+ try {
587
+ //we need to use the gql literal to convert into a document node
588
+ //in order to get through the gql imperative adapter
589
+ configObject.query = gql `
590
+ ${configObject.query}
591
+ `;
592
+ }
593
+ catch (err) {
594
+ const parseError = normalizeError(err);
595
+ reportGraphqlQueryParseError(parseError);
596
+ // call the callback with error
597
+ onResponseDelegate({
598
+ data: undefined,
599
+ error: createNativeFetchErrorResponse(parseError.message),
600
+ });
601
+ return;
602
+ }
603
+ }
604
+ try {
605
+ imperativeAdapter.invoke(configObject, buildAdapterRequestContext(nativeAdapterRequestContext), onResponseDelegate);
606
+ }
607
+ catch (err) {
608
+ if (isGql) {
609
+ reportGraphqlQueryParseError(err);
610
+ }
611
+ onResponseDelegate(buildInvalidConfigError(err));
612
+ }
613
+ return;
614
+ }
615
+ const adapter = getDMLAdapterFromName(adapterId);
616
+ if (adapter === undefined) {
617
+ throw Error(`adapter ${adapterId} not recognized`);
618
+ }
619
+ invokeDmlAdapter(adapter, configObject, onResponseDelegate, nativeAdapterRequestContext);
620
+ }
621
+ /**
622
+ * @deprecated Use invokeAdapter or subscribeToAdapter instead
623
+ *
624
+ * W-9173084 Will remove this
625
+ */
626
+ function executeAdapter(adapterId, config, onSnapshot, nativeAdapterRequestContext) {
627
+ return subscribeToAdapter(adapterId, config, onSnapshot, nativeAdapterRequestContext);
628
+ }
629
+ /**
630
+ * @deprecated Use invokeAdapter instead
631
+ *
632
+ * W-9173084 Will remove this
633
+ */
634
+ function executeMutatingAdapter(adapterId, config, onResult, nativeAdapterRequestContext) {
635
+ invokeAdapter(adapterId, config, onResult, nativeAdapterRequestContext);
636
+ }
637
+
638
+ /* istanbul ignore file */
639
+ // A allowlist of methods that we allow to be proxied from another LDS instance
640
+ const allowList = ['enqueue', 'getQueueActions'];
641
+ /**
642
+ * Implements the DraftQueue interface from nimbus-plugin-lds by passing requests
643
+ * to the instance of the lds-drafts' DraftQueue implementation
644
+ */
645
+ const nimbusDraftQueue = {
646
+ callProxyMethod(methodName, serializedArgsArray, resultCallback,
647
+ // NOTE: the other side of the proxy is expecting an error message string
648
+ // (not a JSON serialized Error object)
649
+ errorCallback) {
650
+ const method = draftQueue[methodName];
651
+ if (method === undefined) {
652
+ return errorCallback('Method does not exist on the draft queue');
653
+ }
654
+ if (allowList.includes(methodName) === false) {
655
+ return errorCallback(`Method ${methodName} is not available for proxy invocation`);
656
+ }
657
+ const parsedArgs = parse(serializedArgsArray);
658
+ // TODO [W-9933226]: we should validate the argument list based on which method is being called
659
+ if (isArray(parsedArgs) === false) {
660
+ return errorCallback('expected array argument list');
661
+ }
662
+ let methodResult = undefined;
663
+ try {
664
+ if (parsedArgs === undefined) {
665
+ methodResult = method.call(draftQueue);
666
+ }
667
+ else {
668
+ methodResult = method.call(draftQueue, ...parsedArgs);
669
+ }
670
+ }
671
+ catch (err) {
672
+ return errorCallback(normalizeError(err).message);
673
+ }
674
+ if (methodResult.then === undefined) {
675
+ return resultCallback(stringify(methodResult));
676
+ }
677
+ methodResult
678
+ .then((result) => {
679
+ resultCallback(stringify(result));
680
+ })
681
+ .catch((err) => {
682
+ errorCallback(normalizeError(err).message);
683
+ });
684
+ },
685
+ };
686
+
687
+ /**
688
+ * Copyright (c) 2022, Salesforce, Inc.,
689
+ * All rights reserved.
690
+ * For full license text, see the LICENSE.txt file
691
+ */
692
+
693
+ const API_NAMESPACE = 'UiApi';
694
+ const RECORD_REPRESENTATION_NAME = 'RecordRepresentation';
695
+
696
+ let luvio = undefined;
697
+ let uiApiRecordTTL;
698
+ let metadataTTL;
699
+ withDefaultLuvio((_luvio) => {
700
+ luvio = _luvio;
701
+ if (uiApiRecordTTL !== undefined) {
702
+ // Note: This should rarely get hit and the durable store implementation
703
+ // should have read write synchronization to protect against race conditions
704
+ // Here since we are on a synchronous path we cannot await the Promise
705
+ setUiApiRecordTTL(uiApiRecordTTL);
706
+ }
707
+ if (metadataTTL !== undefined) {
708
+ // Note: This should rarely get hit and the durable store implementation
709
+ // should have read write synchronization to protect against race conditions
710
+ // Here since we are on a synchronous path we cannot await the Promise
711
+ setMetadataTTL(metadataTTL);
712
+ }
713
+ });
714
+ function setUiApiRecordTTL(ttl) {
715
+ uiApiRecordTTL = ttl;
716
+ if (luvio === undefined) {
717
+ return Promise.resolve();
718
+ }
719
+ return luvio.storeSetTTLOverride(API_NAMESPACE, RECORD_REPRESENTATION_NAME, ttl);
720
+ }
721
+ function setMetadataTTL(ttl) {
722
+ metadataTTL = ttl;
723
+ if (luvio === undefined) {
724
+ return Promise.resolve();
725
+ }
726
+ return luvio.storeSetDefaultTTLOverride(ttl);
727
+ }
728
+
729
+ function createPrimingSession(config) {
730
+ const { createPrimingSession } = getRuntime();
731
+ const { primingEventHandler, concurrency, batchSize } = config;
732
+ const session = createPrimingSession({ concurrency, batchSize });
733
+ if (primingEventHandler) {
734
+ const { onError, onPrimed } = primingEventHandler;
735
+ if (onError) {
736
+ session.on('error', onError.bind(primingEventHandler));
737
+ }
738
+ if (onPrimed) {
739
+ session.on('primed', onPrimed.bind(primingEventHandler));
740
+ }
741
+ }
742
+ return {
743
+ enqueue: session.enqueue.bind(session),
744
+ cancel: session.cancel.bind(session),
745
+ on: session.on.bind(session),
746
+ once: session.once.bind(session),
747
+ off: session.off.bind(session),
748
+ };
749
+ }
750
+
751
+ if (process.env.NODE_ENV !== 'production') {
752
+ // eslint-disable-next-line no-undef
753
+ withDefaultLuvio((luvio) => {
754
+ // eslint-disable-next-line no-undef
755
+ const global = typeof globalThis === 'undefined' ? {} : globalThis;
756
+ global.luvio = luvio;
757
+ });
758
+ }
759
+
760
+ export { createPrimingSession, draftManager, draftQueue, executeAdapter, executeMutatingAdapter, getImperativeAdapterNames, invokeAdapter, invokeAdapterWithDraftToReplace, invokeAdapterWithMetadata, nimbusDraftQueue, setMetadataTTL, setUiApiRecordTTL, subscribeToAdapter };
761
+ // version: 0.131.0-5e4201fa2