@warp-drive/core 5.8.0-alpha.4 → 5.8.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -38
- package/declarations/build-config.d.ts +18 -1
- package/declarations/configure.d.ts +1 -1
- package/declarations/graph/-private/-edge-definition.d.ts +12 -2
- package/declarations/index.d.ts +90 -8
- package/declarations/reactive/-private/default-mode.d.ts +1 -1
- package/declarations/reactive/-private/document.d.ts +58 -46
- package/declarations/reactive/-private/fields/extension.d.ts +1 -1
- package/declarations/reactive/-private/fields/managed-array.d.ts +2 -2
- package/declarations/reactive/-private/fields/managed-object.d.ts +1 -1
- package/declarations/reactive/-private/record.d.ts +10 -1
- package/declarations/reactive/-private/schema.d.ts +77 -4
- package/declarations/reactive/-private.d.ts +1 -0
- package/declarations/reactive.d.ts +13 -8
- package/declarations/request/-private/types.d.ts +1 -1
- package/declarations/request.d.ts +47 -0
- package/declarations/signals/-leaked.d.ts +2 -0
- package/declarations/signals/-private.d.ts +6 -0
- package/declarations/{store/-private/new-core-tmp → signals}/promise-state.d.ts +2 -1
- package/declarations/{store/-private/new-core-tmp → signals}/request-state.d.ts +6 -6
- package/declarations/{store/-private/new-core-tmp → signals}/request-subscription.d.ts +4 -4
- package/declarations/store/-private/cache-handler/types.d.ts +2 -16
- package/declarations/store/-private/caches/instance-cache.d.ts +5 -6
- package/declarations/store/-private/default-cache-policy.d.ts +147 -129
- package/declarations/store/-private/managers/cache-capabilities-manager.d.ts +1 -1
- package/declarations/store/-private/managers/cache-key-manager.d.ts +26 -8
- package/declarations/store/-private/managers/cache-manager.d.ts +7 -18
- package/declarations/store/-private/managers/notification-manager.d.ts +1 -1
- package/declarations/store/-private/record-arrays/legacy-many-array.d.ts +1 -1
- package/declarations/store/-private/record-arrays/resource-array.d.ts +1 -1
- package/declarations/store/-private/store-service.d.ts +43 -64
- package/declarations/store/-private.d.ts +0 -6
- package/declarations/store/-types/q/cache-capabilities-manager.d.ts +1 -1
- package/declarations/store/deprecated/-private.d.ts +2 -2
- package/declarations/store/deprecated/store.d.ts +33 -32
- package/declarations/store.d.ts +1 -0
- package/declarations/types/cache.d.ts +8 -6
- package/declarations/types/record.d.ts +132 -0
- package/declarations/types/request.d.ts +26 -14
- package/declarations/types/schema/fields.d.ts +37 -13
- package/declarations/{store/-types/q → types/schema}/schema-service.d.ts +15 -13
- package/declarations/types/spec/document.d.ts +34 -0
- package/declarations/types/symbols.d.ts +2 -2
- package/declarations/types.d.ts +1 -1
- package/dist/build-config.js +1 -1
- package/dist/configure-DPUFCemT.js +1940 -0
- package/dist/configure.js +2 -1
- package/dist/default-cache-policy-D7_u4YRH.js +572 -0
- package/dist/{context-C_7OLieY.js → future-BKkJJkj7.js} +174 -174
- package/dist/graph/-private.js +16 -6
- package/dist/{request-state-CUuZzgvE.js → index-CQP2NSqg.js} +8835 -9432
- package/dist/index.js +6 -382
- package/dist/reactive/-private.js +1 -1
- package/dist/reactive.js +4 -903
- package/dist/request.js +49 -1
- package/dist/signals/-leaked.js +1 -0
- package/dist/store/-private.js +1 -2
- package/dist/store.js +1 -533
- package/dist/symbols-3C1OkYtZ.js +39 -0
- package/dist/types/-private.js +1 -1
- package/dist/types/record.js +127 -0
- package/dist/types/request.js +14 -12
- package/dist/types/schema/fields.js +14 -0
- package/dist/types/schema/schema-service.js +0 -0
- package/dist/types/symbols.js +2 -2
- package/dist/unpkg/dev/-leaked-Co0EI6Go.js +1939 -0
- package/dist/unpkg/dev/build-config/babel-macros.js +1 -0
- package/dist/unpkg/dev/build-config/canary-features.js +1 -0
- package/dist/unpkg/dev/build-config/debugging.js +1 -0
- package/dist/unpkg/dev/build-config/deprecations.js +1 -0
- package/dist/unpkg/dev/build-config/env.js +1 -0
- package/dist/unpkg/dev/build-config/macros.js +1 -0
- package/dist/unpkg/dev/build-config.js +1 -0
- package/dist/unpkg/dev/configure.js +1 -0
- package/dist/unpkg/dev/future-DFfOzSoe.js +672 -0
- package/dist/unpkg/dev/graph/-private.js +3132 -0
- package/dist/unpkg/dev/index-CepUPZlc.js +9392 -0
- package/dist/unpkg/dev/index.js +6 -0
- package/dist/unpkg/dev/reactive/-private.js +1 -0
- package/dist/unpkg/dev/reactive.js +3 -0
- package/dist/unpkg/dev/request.js +49 -0
- package/dist/unpkg/dev/runtime-DGG4CvlW.js +135 -0
- package/dist/unpkg/dev/signals/-leaked.js +1 -0
- package/dist/unpkg/dev/store/-private.js +55 -0
- package/dist/unpkg/dev/store.js +558 -0
- package/dist/unpkg/dev/types/-private.js +69 -0
- package/dist/unpkg/dev/types/cache/aliases.js +0 -0
- package/dist/unpkg/dev/types/cache/change.js +0 -0
- package/dist/unpkg/dev/types/cache/mutations.js +0 -0
- package/dist/unpkg/dev/types/cache/operations.js +0 -0
- package/dist/unpkg/dev/types/cache/relationship.js +0 -0
- package/dist/unpkg/dev/types/cache.js +0 -0
- package/dist/unpkg/dev/types/graph.js +0 -0
- package/dist/unpkg/dev/types/identifier.js +61 -0
- package/dist/unpkg/dev/types/json/raw.js +0 -0
- package/dist/unpkg/dev/types/params.js +0 -0
- package/dist/unpkg/dev/types/record.js +191 -0
- package/dist/unpkg/dev/types/request.js +77 -0
- package/dist/unpkg/dev/types/runtime.js +34 -0
- package/dist/unpkg/dev/types/schema/concepts.js +0 -0
- package/dist/unpkg/dev/types/schema/fields.js +505 -0
- package/dist/unpkg/dev/types/schema/fields.type-test.js +0 -0
- package/dist/unpkg/dev/types/schema/schema-service.js +0 -0
- package/dist/unpkg/dev/types/spec/document.js +0 -0
- package/dist/unpkg/dev/types/spec/error.js +0 -0
- package/dist/unpkg/dev/types/spec/json-api-raw.js +0 -0
- package/dist/unpkg/dev/types/symbols.js +84 -0
- package/dist/unpkg/dev/types/utils.js +0 -0
- package/dist/unpkg/dev/types.js +0 -0
- package/dist/unpkg/dev/utils/string.js +91 -0
- package/dist/unpkg/dev-deprecated/-leaked-DjMeRqdU.js +1939 -0
- package/dist/unpkg/dev-deprecated/-private-3C1OkYtZ.js +39 -0
- package/dist/unpkg/dev-deprecated/build-config/babel-macros.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config/canary-features.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config/debugging.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config/deprecations.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config/env.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config/macros.js +1 -0
- package/dist/unpkg/dev-deprecated/build-config.js +1 -0
- package/dist/unpkg/dev-deprecated/configure.js +1 -0
- package/dist/unpkg/dev-deprecated/future-DFfOzSoe.js +672 -0
- package/dist/unpkg/dev-deprecated/graph/-private.js +3327 -0
- package/dist/unpkg/dev-deprecated/index-C_EEmn_3.js +10007 -0
- package/dist/unpkg/dev-deprecated/index.js +5 -0
- package/dist/unpkg/dev-deprecated/reactive/-private.js +1 -0
- package/dist/unpkg/dev-deprecated/reactive.js +3 -0
- package/dist/unpkg/dev-deprecated/request.js +49 -0
- package/dist/unpkg/dev-deprecated/runtime-DfhJzpZH.js +135 -0
- package/dist/unpkg/dev-deprecated/signals/-leaked.js +1 -0
- package/dist/unpkg/dev-deprecated/store/-private.js +1 -0
- package/dist/unpkg/dev-deprecated/store.js +558 -0
- package/dist/unpkg/dev-deprecated/types/-private.js +69 -0
- package/dist/unpkg/dev-deprecated/types/cache/aliases.js +0 -0
- package/dist/unpkg/dev-deprecated/types/cache/change.js +0 -0
- package/dist/unpkg/dev-deprecated/types/cache/mutations.js +0 -0
- package/dist/unpkg/dev-deprecated/types/cache/operations.js +0 -0
- package/dist/unpkg/dev-deprecated/types/cache/relationship.js +0 -0
- package/dist/unpkg/dev-deprecated/types/cache.js +0 -0
- package/dist/unpkg/dev-deprecated/types/graph.js +0 -0
- package/dist/unpkg/dev-deprecated/types/identifier.js +61 -0
- package/dist/unpkg/dev-deprecated/types/json/raw.js +0 -0
- package/dist/unpkg/dev-deprecated/types/params.js +0 -0
- package/dist/unpkg/dev-deprecated/types/record.js +191 -0
- package/dist/unpkg/dev-deprecated/types/request.js +77 -0
- package/dist/unpkg/dev-deprecated/types/runtime.js +34 -0
- package/dist/unpkg/dev-deprecated/types/schema/concepts.js +0 -0
- package/dist/unpkg/dev-deprecated/types/schema/fields.js +505 -0
- package/dist/unpkg/dev-deprecated/types/schema/fields.type-test.js +0 -0
- package/dist/unpkg/dev-deprecated/types/schema/schema-service.js +0 -0
- package/dist/unpkg/dev-deprecated/types/spec/document.js +0 -0
- package/dist/unpkg/dev-deprecated/types/spec/error.js +0 -0
- package/dist/unpkg/dev-deprecated/types/spec/json-api-raw.js +0 -0
- package/dist/unpkg/dev-deprecated/types/symbols.js +84 -0
- package/dist/unpkg/dev-deprecated/types/utils.js +0 -0
- package/dist/unpkg/dev-deprecated/types.js +0 -0
- package/dist/unpkg/dev-deprecated/utils/string.js +91 -0
- package/dist/unpkg/prod/-leaked-DUONXQDB.js +1676 -0
- package/dist/unpkg/prod/-private-sql1_mdx.js +39 -0
- package/dist/unpkg/prod/build-config/babel-macros.js +1 -0
- package/dist/unpkg/prod/build-config/canary-features.js +1 -0
- package/dist/unpkg/prod/build-config/debugging.js +1 -0
- package/dist/unpkg/prod/build-config/deprecations.js +1 -0
- package/dist/unpkg/prod/build-config/env.js +1 -0
- package/dist/unpkg/prod/build-config/macros.js +1 -0
- package/dist/unpkg/prod/build-config.js +1 -0
- package/dist/unpkg/prod/configure.js +2 -0
- package/dist/unpkg/prod/graph/-private.js +2235 -0
- package/dist/unpkg/prod/handler-EU_8ncB2.js +1619 -0
- package/dist/unpkg/prod/index.js +483 -0
- package/dist/unpkg/prod/promise-cache-DIT8Ypjq.js +19 -0
- package/dist/unpkg/prod/reactive/-private.js +1 -0
- package/dist/unpkg/prod/reactive.js +30 -0
- package/dist/unpkg/prod/request-BrJSCG6r.js +421 -0
- package/dist/unpkg/prod/request.js +2 -0
- package/dist/unpkg/prod/schema-BSkHyoWz.js +5219 -0
- package/dist/unpkg/prod/signals/-leaked.js +1 -0
- package/dist/unpkg/prod/store/-private.js +126 -0
- package/dist/unpkg/prod/store.js +437 -0
- package/dist/unpkg/prod/types/-private.js +49 -0
- package/dist/unpkg/prod/types/cache/aliases.js +0 -0
- package/dist/unpkg/prod/types/cache/change.js +0 -0
- package/dist/unpkg/prod/types/cache/mutations.js +0 -0
- package/dist/unpkg/prod/types/cache/operations.js +0 -0
- package/dist/unpkg/prod/types/cache/relationship.js +0 -0
- package/dist/unpkg/prod/types/cache.js +0 -0
- package/dist/unpkg/prod/types/graph.js +0 -0
- package/dist/unpkg/prod/types/identifier.js +61 -0
- package/dist/unpkg/prod/types/json/raw.js +0 -0
- package/dist/unpkg/prod/types/params.js +0 -0
- package/dist/unpkg/prod/types/record.js +191 -0
- package/dist/unpkg/prod/types/request.js +77 -0
- package/dist/unpkg/prod/types/runtime.js +34 -0
- package/dist/unpkg/prod/types/schema/concepts.js +0 -0
- package/dist/unpkg/prod/types/schema/fields.js +505 -0
- package/dist/unpkg/prod/types/schema/fields.type-test.js +0 -0
- package/dist/unpkg/prod/types/schema/schema-service.js +0 -0
- package/dist/unpkg/prod/types/spec/document.js +0 -0
- package/dist/unpkg/prod/types/spec/error.js +0 -0
- package/dist/unpkg/prod/types/spec/json-api-raw.js +0 -0
- package/dist/unpkg/prod/types/symbols.js +84 -0
- package/dist/unpkg/prod/types/utils.js +0 -0
- package/dist/unpkg/prod/types.js +0 -0
- package/dist/unpkg/prod/utils/string.js +72 -0
- package/dist/unpkg/prod-deprecated/-leaked-DRNv9VIX.js +1676 -0
- package/dist/unpkg/prod-deprecated/-private-3C1OkYtZ.js +39 -0
- package/dist/unpkg/prod-deprecated/build-config/babel-macros.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config/canary-features.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config/debugging.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config/deprecations.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config/env.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config/macros.js +1 -0
- package/dist/unpkg/prod-deprecated/build-config.js +1 -0
- package/dist/unpkg/prod-deprecated/configure.js +2 -0
- package/dist/unpkg/prod-deprecated/graph/-private.js +2408 -0
- package/dist/unpkg/prod-deprecated/handler-CCIu4sQ3.js +334 -0
- package/dist/unpkg/prod-deprecated/hooks-Dv4Np0MY.js +26 -0
- package/dist/unpkg/prod-deprecated/index.js +483 -0
- package/dist/unpkg/prod-deprecated/promise-cache-DIT8Ypjq.js +19 -0
- package/dist/unpkg/prod-deprecated/reactive/-private.js +1 -0
- package/dist/unpkg/prod-deprecated/reactive.js +5 -0
- package/dist/unpkg/prod-deprecated/request-BrJSCG6r.js +421 -0
- package/dist/unpkg/prod-deprecated/request.js +2 -0
- package/dist/unpkg/prod-deprecated/schema-CJcjHv0E.js +6939 -0
- package/dist/unpkg/prod-deprecated/signals/-leaked.js +1 -0
- package/dist/unpkg/prod-deprecated/store/-private.js +88 -0
- package/dist/unpkg/prod-deprecated/store.js +437 -0
- package/dist/unpkg/prod-deprecated/types/-private.js +49 -0
- package/dist/unpkg/prod-deprecated/types/cache/aliases.js +0 -0
- package/dist/unpkg/prod-deprecated/types/cache/change.js +0 -0
- package/dist/unpkg/prod-deprecated/types/cache/mutations.js +0 -0
- package/dist/unpkg/prod-deprecated/types/cache/operations.js +0 -0
- package/dist/unpkg/prod-deprecated/types/cache/relationship.js +0 -0
- package/dist/unpkg/prod-deprecated/types/cache.js +0 -0
- package/dist/unpkg/prod-deprecated/types/graph.js +0 -0
- package/dist/unpkg/prod-deprecated/types/identifier.js +61 -0
- package/dist/unpkg/prod-deprecated/types/json/raw.js +0 -0
- package/dist/unpkg/prod-deprecated/types/params.js +0 -0
- package/dist/unpkg/prod-deprecated/types/record.js +191 -0
- package/dist/unpkg/prod-deprecated/types/request.js +77 -0
- package/dist/unpkg/prod-deprecated/types/runtime.js +34 -0
- package/dist/unpkg/prod-deprecated/types/schema/concepts.js +0 -0
- package/dist/unpkg/prod-deprecated/types/schema/fields.js +505 -0
- package/dist/unpkg/prod-deprecated/types/schema/fields.type-test.js +0 -0
- package/dist/unpkg/prod-deprecated/types/schema/schema-service.js +0 -0
- package/dist/unpkg/prod-deprecated/types/spec/document.js +0 -0
- package/dist/unpkg/prod-deprecated/types/spec/error.js +0 -0
- package/dist/unpkg/prod-deprecated/types/spec/json-api-raw.js +0 -0
- package/dist/unpkg/prod-deprecated/types/symbols.js +84 -0
- package/dist/unpkg/prod-deprecated/types/utils.js +0 -0
- package/dist/unpkg/prod-deprecated/types.js +0 -0
- package/dist/unpkg/prod-deprecated/utils/string.js +72 -0
- package/logos/README.md +2 -2
- package/logos/logo-yellow-slab.svg +1 -0
- package/logos/word-mark-black.svg +1 -0
- package/logos/word-mark-white.svg +1 -0
- package/package.json +11 -3
- package/declarations/store/-private/new-core-tmp/expensive-subscription.d.ts +0 -24
- package/dist/configure-C3x8YXzL.js +0 -181
- package/logos/NCC-1701-a-blue.svg +0 -4
- package/logos/NCC-1701-a-gold.svg +0 -4
- package/logos/NCC-1701-a-gold_100.svg +0 -1
- package/logos/NCC-1701-a-gold_base-64.txt +0 -1
- package/logos/NCC-1701-a.svg +0 -4
- package/logos/docs-badge.svg +0 -2
- package/logos/ember-data-logo-dark.svg +0 -12
- package/logos/ember-data-logo-light.svg +0 -12
- package/logos/social1.png +0 -0
- package/logos/social2.png +0 -0
- package/logos/warp-drive-logo-dark.svg +0 -4
- package/logos/warp-drive-logo-gold.svg +0 -4
- /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/configure.d.ts +0 -0
- /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/internal.d.ts +0 -0
- /package/declarations/{store/-private/new-core-tmp → signals}/reactivity/signal.d.ts +0 -0
- /package/dist/{symbols-sql1_mdx.js → unpkg/dev/-private-sql1_mdx.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { STRUCTURED, IS_FUTURE
|
|
1
|
+
import { SkipCache, STRUCTURED, IS_FUTURE } from './types/request.js';
|
|
2
2
|
import { getOrSetGlobal, getOrSetUniversal } from './types/-private.js';
|
|
3
3
|
import { macroCondition, getGlobalConfig } from '@embroider/macros';
|
|
4
4
|
const BODY_TYPES = {
|
|
@@ -233,6 +233,179 @@ function assertValidRequest(request, isTopLevel) {
|
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
|
+
function upgradeHeaders(headers) {
|
|
237
|
+
headers.clone = () => {
|
|
238
|
+
return new Headers(headers);
|
|
239
|
+
};
|
|
240
|
+
headers.toJSON = () => {
|
|
241
|
+
return Array.from(headers);
|
|
242
|
+
};
|
|
243
|
+
return headers;
|
|
244
|
+
}
|
|
245
|
+
function cloneResponseProperties(response) {
|
|
246
|
+
const {
|
|
247
|
+
headers,
|
|
248
|
+
ok,
|
|
249
|
+
redirected,
|
|
250
|
+
status,
|
|
251
|
+
statusText,
|
|
252
|
+
type,
|
|
253
|
+
url
|
|
254
|
+
} = response;
|
|
255
|
+
upgradeHeaders(headers);
|
|
256
|
+
return {
|
|
257
|
+
headers: headers,
|
|
258
|
+
ok,
|
|
259
|
+
redirected,
|
|
260
|
+
status,
|
|
261
|
+
statusText,
|
|
262
|
+
type,
|
|
263
|
+
url
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
class ContextOwner {
|
|
267
|
+
hasSetStream = false;
|
|
268
|
+
hasSetResponse = false;
|
|
269
|
+
hasSubscribers = false;
|
|
270
|
+
stream = createDeferred();
|
|
271
|
+
response = null;
|
|
272
|
+
nextCalled = 0;
|
|
273
|
+
constructor(request, god, isRoot = false) {
|
|
274
|
+
this.isRoot = isRoot;
|
|
275
|
+
this.requestId = god.id;
|
|
276
|
+
this.controller = request.controller || god.controller;
|
|
277
|
+
this.stream.promise.sizeHint = 0;
|
|
278
|
+
if (request.controller) {
|
|
279
|
+
if (request.controller !== god.controller) {
|
|
280
|
+
god.controller.signal.addEventListener('abort', () => {
|
|
281
|
+
this.controller.abort(god.controller.signal.reason);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
delete request.controller;
|
|
285
|
+
}
|
|
286
|
+
let enhancedRequest = Object.assign({
|
|
287
|
+
signal: this.controller.signal
|
|
288
|
+
}, request);
|
|
289
|
+
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
290
|
+
if (!request?.cacheOptions?.[SkipCache]) {
|
|
291
|
+
request = deepFreeze(request);
|
|
292
|
+
enhancedRequest = deepFreeze(enhancedRequest);
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
if (request.headers) {
|
|
296
|
+
upgradeHeaders(request.headers);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
this.enhancedRequest = enhancedRequest;
|
|
300
|
+
this.request = request;
|
|
301
|
+
this.god = god;
|
|
302
|
+
this.stream.promise = this.stream.promise.then(stream => {
|
|
303
|
+
if (this.god.stream === stream && this.hasSubscribers) {
|
|
304
|
+
this.god.stream = null;
|
|
305
|
+
}
|
|
306
|
+
return stream;
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
get hasRequestedStream() {
|
|
310
|
+
return this.god.hasRequestedStream;
|
|
311
|
+
}
|
|
312
|
+
getResponse() {
|
|
313
|
+
if (this.hasSetResponse) {
|
|
314
|
+
return this.response;
|
|
315
|
+
}
|
|
316
|
+
if (this.nextCalled === 1) {
|
|
317
|
+
return this.god.response;
|
|
318
|
+
}
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
getStream() {
|
|
322
|
+
if (this.isRoot) {
|
|
323
|
+
this.god.hasRequestedStream = true;
|
|
324
|
+
}
|
|
325
|
+
if (!this.hasSetResponse) {
|
|
326
|
+
const hint = this.god.response?.headers?.get('content-length');
|
|
327
|
+
this.stream.promise.sizeHint = hint ? parseInt(hint, 10) : 0;
|
|
328
|
+
}
|
|
329
|
+
this.hasSubscribers = true;
|
|
330
|
+
return this.stream.promise;
|
|
331
|
+
}
|
|
332
|
+
abort(reason) {
|
|
333
|
+
this.controller.abort(reason);
|
|
334
|
+
}
|
|
335
|
+
setStream(stream) {
|
|
336
|
+
if (!this.hasSetStream) {
|
|
337
|
+
this.hasSetStream = true;
|
|
338
|
+
if (!(stream instanceof Promise)) {
|
|
339
|
+
this.god.stream = stream;
|
|
340
|
+
}
|
|
341
|
+
// @ts-expect-error
|
|
342
|
+
this.stream.resolve(stream);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
resolveStream() {
|
|
346
|
+
this.setStream(this.nextCalled === 1 ? this.god.stream : null);
|
|
347
|
+
}
|
|
348
|
+
setResponse(response) {
|
|
349
|
+
if (this.hasSetResponse) {
|
|
350
|
+
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
351
|
+
throw new Error(`Cannot setResponse when a response has already been set`);
|
|
352
|
+
}
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
this.hasSetResponse = true;
|
|
356
|
+
if (response instanceof Response) {
|
|
357
|
+
// TODO potentially avoid cloning in prod
|
|
358
|
+
let responseData = cloneResponseProperties(response);
|
|
359
|
+
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
360
|
+
responseData = deepFreeze(responseData);
|
|
361
|
+
}
|
|
362
|
+
this.response = responseData;
|
|
363
|
+
this.god.response = responseData;
|
|
364
|
+
const sizeHint = response.headers?.get('content-length');
|
|
365
|
+
this.stream.promise.sizeHint = sizeHint ? parseInt(sizeHint, 10) : 0;
|
|
366
|
+
} else {
|
|
367
|
+
this.response = response;
|
|
368
|
+
this.god.response = response;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
class Context {
|
|
373
|
+
/** @internal */
|
|
374
|
+
|
|
375
|
+
/** @internal */
|
|
376
|
+
|
|
377
|
+
/** @internal */
|
|
378
|
+
|
|
379
|
+
constructor(owner, isCacheHandler) {
|
|
380
|
+
this.id = owner.requestId;
|
|
381
|
+
this.___owner = owner;
|
|
382
|
+
this.request = owner.enhancedRequest;
|
|
383
|
+
this._isCacheHandler = isCacheHandler;
|
|
384
|
+
this._finalized = false;
|
|
385
|
+
}
|
|
386
|
+
setStream(stream) {
|
|
387
|
+
this.___owner.setStream(stream);
|
|
388
|
+
}
|
|
389
|
+
setResponse(response) {
|
|
390
|
+
this.___owner.setResponse(response);
|
|
391
|
+
}
|
|
392
|
+
setIdentifier(identifier) {
|
|
393
|
+
macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
|
|
394
|
+
if (!test) {
|
|
395
|
+
throw new Error(`setIdentifier may only be used synchronously from a CacheHandler`);
|
|
396
|
+
}
|
|
397
|
+
})(identifier && this._isCacheHandler && !this._finalized) : {};
|
|
398
|
+
this.___owner.god.identifier = identifier;
|
|
399
|
+
}
|
|
400
|
+
get hasRequestedStream() {
|
|
401
|
+
return this.___owner.hasRequestedStream;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
/** @private */
|
|
405
|
+
_finalize() {
|
|
406
|
+
this._finalized = true;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
236
409
|
const PromiseCache = getOrSetUniversal('PromiseCache', new WeakMap());
|
|
237
410
|
const RequestMap = getOrSetUniversal('RequestMap', new Map());
|
|
238
411
|
function setRequestResult(requestId, result) {
|
|
@@ -502,177 +675,4 @@ function createFuture(owner) {
|
|
|
502
675
|
deferred.promise = promise;
|
|
503
676
|
return deferred;
|
|
504
677
|
}
|
|
505
|
-
function upgradeHeaders(headers) {
|
|
506
|
-
headers.clone = () => {
|
|
507
|
-
return new Headers(headers);
|
|
508
|
-
};
|
|
509
|
-
headers.toJSON = () => {
|
|
510
|
-
return Array.from(headers);
|
|
511
|
-
};
|
|
512
|
-
return headers;
|
|
513
|
-
}
|
|
514
|
-
function cloneResponseProperties(response) {
|
|
515
|
-
const {
|
|
516
|
-
headers,
|
|
517
|
-
ok,
|
|
518
|
-
redirected,
|
|
519
|
-
status,
|
|
520
|
-
statusText,
|
|
521
|
-
type,
|
|
522
|
-
url
|
|
523
|
-
} = response;
|
|
524
|
-
upgradeHeaders(headers);
|
|
525
|
-
return {
|
|
526
|
-
headers: headers,
|
|
527
|
-
ok,
|
|
528
|
-
redirected,
|
|
529
|
-
status,
|
|
530
|
-
statusText,
|
|
531
|
-
type,
|
|
532
|
-
url
|
|
533
|
-
};
|
|
534
|
-
}
|
|
535
|
-
class ContextOwner {
|
|
536
|
-
hasSetStream = false;
|
|
537
|
-
hasSetResponse = false;
|
|
538
|
-
hasSubscribers = false;
|
|
539
|
-
stream = createDeferred();
|
|
540
|
-
response = null;
|
|
541
|
-
nextCalled = 0;
|
|
542
|
-
constructor(request, god, isRoot = false) {
|
|
543
|
-
this.isRoot = isRoot;
|
|
544
|
-
this.requestId = god.id;
|
|
545
|
-
this.controller = request.controller || god.controller;
|
|
546
|
-
this.stream.promise.sizeHint = 0;
|
|
547
|
-
if (request.controller) {
|
|
548
|
-
if (request.controller !== god.controller) {
|
|
549
|
-
god.controller.signal.addEventListener('abort', () => {
|
|
550
|
-
this.controller.abort(god.controller.signal.reason);
|
|
551
|
-
});
|
|
552
|
-
}
|
|
553
|
-
delete request.controller;
|
|
554
|
-
}
|
|
555
|
-
let enhancedRequest = Object.assign({
|
|
556
|
-
signal: this.controller.signal
|
|
557
|
-
}, request);
|
|
558
|
-
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
559
|
-
if (!request?.cacheOptions?.[SkipCache]) {
|
|
560
|
-
request = deepFreeze(request);
|
|
561
|
-
enhancedRequest = deepFreeze(enhancedRequest);
|
|
562
|
-
}
|
|
563
|
-
} else {
|
|
564
|
-
if (request.headers) {
|
|
565
|
-
upgradeHeaders(request.headers);
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
this.enhancedRequest = enhancedRequest;
|
|
569
|
-
this.request = request;
|
|
570
|
-
this.god = god;
|
|
571
|
-
this.stream.promise = this.stream.promise.then(stream => {
|
|
572
|
-
if (this.god.stream === stream && this.hasSubscribers) {
|
|
573
|
-
this.god.stream = null;
|
|
574
|
-
}
|
|
575
|
-
return stream;
|
|
576
|
-
});
|
|
577
|
-
}
|
|
578
|
-
get hasRequestedStream() {
|
|
579
|
-
return this.god.hasRequestedStream;
|
|
580
|
-
}
|
|
581
|
-
getResponse() {
|
|
582
|
-
if (this.hasSetResponse) {
|
|
583
|
-
return this.response;
|
|
584
|
-
}
|
|
585
|
-
if (this.nextCalled === 1) {
|
|
586
|
-
return this.god.response;
|
|
587
|
-
}
|
|
588
|
-
return null;
|
|
589
|
-
}
|
|
590
|
-
getStream() {
|
|
591
|
-
if (this.isRoot) {
|
|
592
|
-
this.god.hasRequestedStream = true;
|
|
593
|
-
}
|
|
594
|
-
if (!this.hasSetResponse) {
|
|
595
|
-
const hint = this.god.response?.headers?.get('content-length');
|
|
596
|
-
this.stream.promise.sizeHint = hint ? parseInt(hint, 10) : 0;
|
|
597
|
-
}
|
|
598
|
-
this.hasSubscribers = true;
|
|
599
|
-
return this.stream.promise;
|
|
600
|
-
}
|
|
601
|
-
abort(reason) {
|
|
602
|
-
this.controller.abort(reason);
|
|
603
|
-
}
|
|
604
|
-
setStream(stream) {
|
|
605
|
-
if (!this.hasSetStream) {
|
|
606
|
-
this.hasSetStream = true;
|
|
607
|
-
if (!(stream instanceof Promise)) {
|
|
608
|
-
this.god.stream = stream;
|
|
609
|
-
}
|
|
610
|
-
// @ts-expect-error
|
|
611
|
-
this.stream.resolve(stream);
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
resolveStream() {
|
|
615
|
-
this.setStream(this.nextCalled === 1 ? this.god.stream : null);
|
|
616
|
-
}
|
|
617
|
-
setResponse(response) {
|
|
618
|
-
if (this.hasSetResponse) {
|
|
619
|
-
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
620
|
-
throw new Error(`Cannot setResponse when a response has already been set`);
|
|
621
|
-
}
|
|
622
|
-
return;
|
|
623
|
-
}
|
|
624
|
-
this.hasSetResponse = true;
|
|
625
|
-
if (response instanceof Response) {
|
|
626
|
-
// TODO potentially avoid cloning in prod
|
|
627
|
-
let responseData = cloneResponseProperties(response);
|
|
628
|
-
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
629
|
-
responseData = deepFreeze(responseData);
|
|
630
|
-
}
|
|
631
|
-
this.response = responseData;
|
|
632
|
-
this.god.response = responseData;
|
|
633
|
-
const sizeHint = response.headers?.get('content-length');
|
|
634
|
-
this.stream.promise.sizeHint = sizeHint ? parseInt(sizeHint, 10) : 0;
|
|
635
|
-
} else {
|
|
636
|
-
this.response = response;
|
|
637
|
-
this.god.response = response;
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
class Context {
|
|
642
|
-
/** @internal */
|
|
643
|
-
|
|
644
|
-
/** @internal */
|
|
645
|
-
|
|
646
|
-
/** @internal */
|
|
647
|
-
|
|
648
|
-
constructor(owner, isCacheHandler) {
|
|
649
|
-
this.id = owner.requestId;
|
|
650
|
-
this.___owner = owner;
|
|
651
|
-
this.request = owner.enhancedRequest;
|
|
652
|
-
this._isCacheHandler = isCacheHandler;
|
|
653
|
-
this._finalized = false;
|
|
654
|
-
}
|
|
655
|
-
setStream(stream) {
|
|
656
|
-
this.___owner.setStream(stream);
|
|
657
|
-
}
|
|
658
|
-
setResponse(response) {
|
|
659
|
-
this.___owner.setResponse(response);
|
|
660
|
-
}
|
|
661
|
-
setIdentifier(identifier) {
|
|
662
|
-
macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
|
|
663
|
-
if (!test) {
|
|
664
|
-
throw new Error(`setIdentifier may only be used synchronously from a CacheHandler`);
|
|
665
|
-
}
|
|
666
|
-
})(identifier && this._isCacheHandler && !this._finalized) : {};
|
|
667
|
-
this.___owner.god.identifier = identifier;
|
|
668
|
-
}
|
|
669
|
-
get hasRequestedStream() {
|
|
670
|
-
return this.___owner.hasRequestedStream;
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
/** @private */
|
|
674
|
-
_finalize() {
|
|
675
|
-
this._finalized = true;
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
678
|
export { IS_CACHE_HANDLER as I, cloneResponseProperties as a, assertValidRequest as b, createDeferred as c, getRequestResult as d, executeNextHandler as e, clearRequestResult as f, getPromiseResult as g, setPromiseResult as s, upgradePromise as u };
|
package/dist/graph/-private.js
CHANGED
|
@@ -349,6 +349,7 @@ function implicitKeyFor(type, key) {
|
|
|
349
349
|
function syncMeta(definition, inverseDefinition) {
|
|
350
350
|
definition.inverseKind = inverseDefinition.kind;
|
|
351
351
|
definition.inverseKey = inverseDefinition.key;
|
|
352
|
+
definition.inverseName = inverseDefinition.name;
|
|
352
353
|
definition.inverseType = inverseDefinition.type;
|
|
353
354
|
definition.inverseIsAsync = inverseDefinition.isAsync;
|
|
354
355
|
definition.inverseIsCollection = inverseDefinition.isCollection;
|
|
@@ -366,7 +367,8 @@ function upgradeMeta(meta) {
|
|
|
366
367
|
const niceMeta = {};
|
|
367
368
|
const options = meta.options;
|
|
368
369
|
niceMeta.kind = meta.kind;
|
|
369
|
-
niceMeta.key = meta.name;
|
|
370
|
+
niceMeta.key = meta.sourceKey ?? meta.name;
|
|
371
|
+
niceMeta.name = meta.name;
|
|
370
372
|
niceMeta.type = meta.type;
|
|
371
373
|
macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
|
|
372
374
|
if (!test) {
|
|
@@ -379,6 +381,7 @@ function upgradeMeta(meta) {
|
|
|
379
381
|
niceMeta.isPolymorphic = options && !!options.polymorphic;
|
|
380
382
|
niceMeta.isLinksMode = options.linksMode ?? false;
|
|
381
383
|
niceMeta.inverseKey = options && options.inverse || STR_LATER;
|
|
384
|
+
niceMeta.inverseName = options && options.inverse || STR_LATER;
|
|
382
385
|
niceMeta.inverseType = STR_LATER;
|
|
383
386
|
niceMeta.inverseIsAsync = BOOL_LATER;
|
|
384
387
|
niceMeta.inverseIsImplicit = options && options.inverse === null || BOOL_LATER;
|
|
@@ -502,12 +505,13 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
502
505
|
}
|
|
503
506
|
})(!isImplicit) : {};
|
|
504
507
|
const relationships = storeWrapper.schema.fields(key);
|
|
508
|
+
const relationshipsBySourceKey = storeWrapper.schema.cacheFields?.(key) ?? relationships;
|
|
505
509
|
macroCondition(getGlobalConfig().WarpDrive.env.DEBUG) ? (test => {
|
|
506
510
|
if (!test) {
|
|
507
511
|
throw new Error(`Expected to have a relationship definition for ${type} but none was found.`);
|
|
508
512
|
}
|
|
509
513
|
})(relationships) : {};
|
|
510
|
-
const meta =
|
|
514
|
+
const meta = relationshipsBySourceKey.get(propertyName);
|
|
511
515
|
if (!meta) {
|
|
512
516
|
// TODO potentially we should just be permissive here since this is an implicit relationship
|
|
513
517
|
// and not require the lookup table to be populated
|
|
@@ -564,6 +568,7 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
564
568
|
kind: 'belongsTo',
|
|
565
569
|
// this must be updated when we find the first belongsTo or hasMany definition that matches
|
|
566
570
|
key: definition.inverseKey,
|
|
571
|
+
name: definition.inverseName,
|
|
567
572
|
type: type,
|
|
568
573
|
isAsync: false,
|
|
569
574
|
// this must be updated when we find the first belongsTo or hasMany definition that matches
|
|
@@ -578,6 +583,7 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
578
583
|
inverseDefinition = null;
|
|
579
584
|
} else {
|
|
580
585
|
// CASE: We have an explicit inverse or were able to resolve one
|
|
586
|
+
// for the inverse we use "name" for lookup not "sourceKey"
|
|
581
587
|
const inverseDefinitions = storeWrapper.schema.fields({
|
|
582
588
|
type: inverseType
|
|
583
589
|
});
|
|
@@ -710,7 +716,8 @@ function upgradeDefinition(graph, key, propertyName, isImplicit = false) {
|
|
|
710
716
|
return info;
|
|
711
717
|
}
|
|
712
718
|
function inverseForRelationship(store, resourceKey, key) {
|
|
713
|
-
const
|
|
719
|
+
const fields = store.schema.fields(resourceKey);
|
|
720
|
+
const definition = fields.get(key);
|
|
714
721
|
if (!definition) {
|
|
715
722
|
return null;
|
|
716
723
|
}
|
|
@@ -819,6 +826,7 @@ if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
|
819
826
|
function inverseDefinition(definition) {
|
|
820
827
|
return {
|
|
821
828
|
key: definition.inverseKey,
|
|
829
|
+
name: definition.inverseName,
|
|
822
830
|
type: definition.inverseType,
|
|
823
831
|
kind: definition.inverseKind,
|
|
824
832
|
isAsync: definition.inverseIsAsync,
|
|
@@ -827,6 +835,7 @@ if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
|
827
835
|
isCollection: definition.inverseIsCollection,
|
|
828
836
|
isImplicit: definition.inverseIsImplicit,
|
|
829
837
|
inverseKey: definition.key,
|
|
838
|
+
inverseName: definition.name,
|
|
830
839
|
inverseType: definition.type,
|
|
831
840
|
inverseKind: definition.kind,
|
|
832
841
|
inverseIsAsync: definition.isAsync,
|
|
@@ -2151,6 +2160,7 @@ function createCollectionEdge(definition, identifier) {
|
|
|
2151
2160
|
_diff: undefined
|
|
2152
2161
|
};
|
|
2153
2162
|
}
|
|
2163
|
+
const cp = structuredClone;
|
|
2154
2164
|
function legacyGetCollectionRelationshipData(source, getRemoteState) {
|
|
2155
2165
|
source.accessed = true;
|
|
2156
2166
|
const payload = {};
|
|
@@ -2158,10 +2168,10 @@ function legacyGetCollectionRelationshipData(source, getRemoteState) {
|
|
|
2158
2168
|
payload.data = getRemoteState ? source.remoteState.slice() : computeLocalState(source);
|
|
2159
2169
|
}
|
|
2160
2170
|
if (source.links) {
|
|
2161
|
-
payload.links = source.links;
|
|
2171
|
+
payload.links = cp(source.links);
|
|
2162
2172
|
}
|
|
2163
2173
|
if (source.meta) {
|
|
2164
|
-
payload.meta = source.meta;
|
|
2174
|
+
payload.meta = cp(source.meta);
|
|
2165
2175
|
}
|
|
2166
2176
|
return payload;
|
|
2167
2177
|
}
|
|
@@ -3331,7 +3341,7 @@ function isReordered(relationship) {
|
|
|
3331
3341
|
/**
|
|
3332
3342
|
Provides a performance tuned normalized graph for intelligently managing relationships between resources based on identity
|
|
3333
3343
|
|
|
3334
|
-
While this Graph is abstract, it currently is a private implementation required as a peer-dependency by the {
|
|
3344
|
+
While this Graph is abstract, it currently is a private implementation required as a peer-dependency by the {json:api} Cache Implementation.
|
|
3335
3345
|
|
|
3336
3346
|
We intend to make this Graph public API after some additional iteration during the 5.x timeframe, until then all APIs should be considered experimental and unstable, not fit for direct application or 3rd party library usage.
|
|
3337
3347
|
|