@warp-drive/core 5.6.0-alpha.17 → 5.6.0-alpha.5
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 +7 -8
- package/declarations/index.d.ts +3 -14
- package/declarations/index.d.ts.map +1 -0
- package/declarations/request/-private/context.d.ts +35 -34
- package/declarations/request/-private/context.d.ts.map +1 -0
- package/declarations/request/-private/debug.d.ts +3 -2
- package/declarations/request/-private/debug.d.ts.map +1 -0
- package/declarations/request/-private/fetch.d.ts +36 -24
- package/declarations/request/-private/fetch.d.ts.map +1 -0
- package/declarations/request/-private/future.d.ts +4 -3
- package/declarations/request/-private/future.d.ts.map +1 -0
- package/declarations/request/-private/manager.d.ts +132 -159
- package/declarations/request/-private/manager.d.ts.map +1 -0
- package/declarations/request/-private/promise-cache.d.ts +13 -21
- package/declarations/request/-private/promise-cache.d.ts.map +1 -0
- package/declarations/request/-private/types.d.ts +123 -124
- package/declarations/request/-private/types.d.ts.map +1 -0
- package/declarations/request/-private/utils.d.ts +9 -8
- package/declarations/request/-private/utils.d.ts.map +1 -0
- package/declarations/request.d.ts +433 -5
- package/declarations/request.d.ts.map +1 -0
- package/declarations/types/-private.d.ts +8 -16
- package/declarations/types/-private.d.ts.map +1 -0
- package/declarations/types/cache/aliases.d.ts +1 -11
- package/declarations/types/cache/aliases.d.ts.map +1 -0
- package/declarations/types/cache/change.d.ts +5 -4
- package/declarations/types/cache/change.d.ts.map +1 -0
- package/declarations/types/cache/mutations.d.ts +28 -51
- package/declarations/types/cache/mutations.d.ts.map +1 -0
- package/declarations/types/cache/operations.d.ts +47 -60
- package/declarations/types/cache/operations.d.ts.map +1 -0
- package/declarations/types/cache/relationship.d.ts +9 -11
- package/declarations/types/cache/relationship.d.ts.map +1 -0
- package/declarations/types/cache.d.ts +484 -495
- package/declarations/types/cache.d.ts.map +1 -0
- package/declarations/types/graph.d.ts +40 -31
- package/declarations/types/graph.d.ts.map +1 -0
- package/declarations/types/identifier.d.ts +82 -83
- package/declarations/types/identifier.d.ts.map +1 -0
- package/declarations/types/json/raw.d.ts +2 -1
- package/declarations/types/json/raw.d.ts.map +1 -0
- package/declarations/types/params.d.ts +5 -4
- package/declarations/types/params.d.ts.map +1 -0
- package/declarations/types/record.d.ts +76 -117
- package/declarations/types/record.d.ts.map +1 -0
- package/declarations/types/record.type-test.d.ts +2 -0
- package/declarations/types/record.type-test.d.ts.map +1 -0
- package/declarations/types/request.d.ts +266 -289
- package/declarations/types/request.d.ts.map +1 -0
- package/declarations/types/request.type-test.d.ts +2 -0
- package/declarations/types/request.type-test.d.ts.map +1 -0
- package/declarations/types/runtime.d.ts +9 -8
- package/declarations/types/runtime.d.ts.map +1 -0
- package/declarations/types/schema/concepts.d.ts +13 -19
- package/declarations/types/schema/concepts.d.ts.map +1 -0
- package/declarations/types/schema/fields.d.ts +1741 -1712
- package/declarations/types/schema/fields.d.ts.map +1 -0
- package/declarations/types/schema/fields.type-test.d.ts +1 -0
- package/declarations/types/schema/fields.type-test.d.ts.map +1 -0
- package/declarations/types/spec/document.d.ts +22 -28
- package/declarations/types/spec/document.d.ts.map +1 -0
- package/declarations/types/spec/error.d.ts +17 -16
- package/declarations/types/spec/error.d.ts.map +1 -0
- package/declarations/types/spec/json-api-raw.d.ts +102 -102
- package/declarations/types/spec/json-api-raw.d.ts.map +1 -0
- package/declarations/types/symbols.d.ts +75 -74
- package/declarations/types/symbols.d.ts.map +1 -0
- package/declarations/types/utils.d.ts +5 -5
- package/declarations/types/utils.d.ts.map +1 -0
- package/declarations/types.d.ts +7 -10
- package/declarations/types.d.ts.map +1 -0
- package/dist/{context-COmAnXUQ.js → context-DE5sFezZ.js} +2 -2
- package/dist/context-DE5sFezZ.js.map +1 -0
- package/dist/index.js +104 -37
- package/dist/index.js.map +1 -0
- package/dist/request.js +1 -1
- package/dist/request.js.map +1 -0
- package/dist/types/-private.js +3 -3
- package/dist/types/-private.js.map +1 -0
- package/dist/types/cache/aliases.js.map +1 -0
- package/dist/types/cache/change.js.map +1 -0
- package/dist/types/cache/mutations.js.map +1 -0
- package/dist/types/cache/operations.js.map +1 -0
- package/dist/types/cache/relationship.js.map +1 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/identifier.js.map +1 -0
- package/dist/types/json/raw.js.map +1 -0
- package/dist/types/params.js.map +1 -0
- package/dist/types/record.js +1 -1
- package/dist/types/record.js.map +1 -0
- package/dist/types/request.js +2 -2
- package/dist/types/request.js.map +1 -0
- package/dist/types/runtime.js +1 -1
- package/dist/types/runtime.js.map +1 -0
- package/dist/types/schema/concepts.js.map +1 -0
- package/dist/types/schema/fields.js +41 -8
- package/dist/types/schema/fields.js.map +1 -0
- package/dist/types/schema/fields.type-test.js.map +1 -0
- package/dist/types/spec/document.js.map +1 -0
- package/dist/types/spec/error.js.map +1 -0
- package/dist/types/spec/json-api-raw.js.map +1 -0
- package/dist/types/symbols.js +3 -3
- package/dist/types/symbols.js.map +1 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +8 -11
- package/cjs-dist/addon-shim.cjs +0 -1
- package/cjs-dist/cjs-set-config.cjs +0 -1
- package/declarations/build-config/babel-macros.d.ts +0 -1
- package/declarations/build-config/canary-features.d.ts +0 -1
- package/declarations/build-config/debugging.d.ts +0 -1
- package/declarations/build-config/deprecations.d.ts +0 -1
- package/declarations/build-config/env.d.ts +0 -1
- package/declarations/build-config/macros.d.ts +0 -1
- package/declarations/build-config.d.ts +0 -1
- package/declarations/configure.d.ts +0 -7
- package/declarations/graph/-private/-diff.d.ts +0 -32
- package/declarations/graph/-private/-edge-definition.d.ts +0 -148
- package/declarations/graph/-private/-state.d.ts +0 -96
- package/declarations/graph/-private/-utils.d.ts +0 -31
- package/declarations/graph/-private/coerce-id.d.ts +0 -10
- package/declarations/graph/-private/debug/assert-polymorphic-type.d.ts +0 -18
- package/declarations/graph/-private/edges/collection.d.ts +0 -39
- package/declarations/graph/-private/edges/implicit.d.ts +0 -43
- package/declarations/graph/-private/edges/resource.d.ts +0 -24
- package/declarations/graph/-private/graph.d.ts +0 -90
- package/declarations/graph/-private/normalize-link.d.ts +0 -8
- package/declarations/graph/-private/operations/add-to-related-records.d.ts +0 -4
- package/declarations/graph/-private/operations/merge-identifier.d.ts +0 -3
- package/declarations/graph/-private/operations/remove-from-related-records.d.ts +0 -4
- package/declarations/graph/-private/operations/replace-related-record.d.ts +0 -3
- package/declarations/graph/-private/operations/replace-related-records.d.ts +0 -62
- package/declarations/graph/-private/operations/update-relationship.d.ts +0 -13
- package/declarations/graph/-private.d.ts +0 -13
- package/declarations/reactive/-private/document.d.ts +0 -146
- package/declarations/reactive/-private/fields/compute.d.ts +0 -43
- package/declarations/reactive/-private/fields/extension.d.ts +0 -8
- package/declarations/reactive/-private/fields/managed-array.d.ts +0 -22
- package/declarations/reactive/-private/fields/managed-object.d.ts +0 -21
- package/declarations/reactive/-private/fields/many-array-manager.d.ts +0 -19
- package/declarations/reactive/-private/hooks.d.ts +0 -5
- package/declarations/reactive/-private/record.d.ts +0 -64
- package/declarations/reactive/-private/schema.d.ts +0 -271
- package/declarations/reactive/-private/symbols.d.ts +0 -36
- package/declarations/reactive/-private.d.ts +0 -1
- package/declarations/reactive.d.ts +0 -4
- package/declarations/store/-private/cache-handler/handler.d.ts +0 -62
- package/declarations/store/-private/cache-handler/types.d.ts +0 -98
- package/declarations/store/-private/cache-handler/utils.d.ts +0 -32
- package/declarations/store/-private/caches/cache-utils.d.ts +0 -12
- package/declarations/store/-private/caches/identifier-cache.d.ts +0 -304
- package/declarations/store/-private/caches/instance-cache.d.ts +0 -65
- package/declarations/store/-private/caches/resource-utils.d.ts +0 -9
- package/declarations/store/-private/debug/utils.d.ts +0 -6
- package/declarations/store/-private/default-cache-policy.d.ts +0 -384
- package/declarations/store/-private/legacy-model-support/record-reference.d.ts +0 -159
- package/declarations/store/-private/legacy-model-support/shim-model-class.d.ts +0 -17
- package/declarations/store/-private/managers/cache-capabilities-manager.d.ts +0 -25
- package/declarations/store/-private/managers/cache-manager.d.ts +0 -443
- package/declarations/store/-private/managers/notification-manager.d.ts +0 -98
- package/declarations/store/-private/managers/record-array-manager.d.ts +0 -97
- package/declarations/store/-private/network/request-cache.d.ts +0 -107
- package/declarations/store/-private/new-core-tmp/promise-state.d.ts +0 -263
- package/declarations/store/-private/new-core-tmp/reactivity/configure.d.ts +0 -176
- package/declarations/store/-private/new-core-tmp/reactivity/internal.d.ts +0 -169
- package/declarations/store/-private/new-core-tmp/reactivity/signal.d.ts +0 -35
- package/declarations/store/-private/new-core-tmp/request-state.d.ts +0 -277
- package/declarations/store/-private/new-core-tmp/request-subscription.d.ts +0 -261
- package/declarations/store/-private/record-arrays/identifier-array.d.ts +0 -147
- package/declarations/store/-private/record-arrays/many-array.d.ts +0 -197
- package/declarations/store/-private/record-arrays/native-proxy-type-fix.d.ts +0 -126
- package/declarations/store/-private/store-service.d.ts +0 -1605
- package/declarations/store/-private/utils/coerce-id.d.ts +0 -10
- package/declarations/store/-private/utils/construct-resource.d.ts +0 -6
- package/declarations/store/-private/utils/is-non-empty-string.d.ts +0 -1
- package/declarations/store/-private/utils/normalize-model-name.d.ts +0 -1
- package/declarations/store/-private/utils/uuid-polyfill.d.ts +0 -1
- package/declarations/store/-private.d.ts +0 -31
- package/declarations/store/-types/q/cache-capabilities-manager.d.ts +0 -99
- package/declarations/store/-types/q/ds-model.d.ts +0 -21
- package/declarations/store/-types/q/identifier.d.ts +0 -20
- package/declarations/store/-types/q/record-instance.d.ts +0 -23
- package/declarations/store/-types/q/schema-service.d.ts +0 -354
- package/declarations/store/-types/q/store.d.ts +0 -32
- package/declarations/store.d.ts +0 -1
- package/declarations/utils/string.d.ts +0 -48
- package/dist/build-config/babel-macros.js +0 -1
- package/dist/build-config/canary-features.js +0 -1
- package/dist/build-config/debugging.js +0 -1
- package/dist/build-config/deprecations.js +0 -1
- package/dist/build-config/env.js +0 -1
- package/dist/build-config/macros.js +0 -1
- package/dist/build-config.js +0 -1
- package/dist/configure-B48bFHOl.js +0 -181
- package/dist/configure.js +0 -1
- package/dist/graph/-private.js +0 -3372
- package/dist/handler-C2T-IyJK.js +0 -339
- package/dist/reactive/-private.js +0 -1
- package/dist/reactive.js +0 -1988
- package/dist/request-state-CjLph1LP.js +0 -8139
- package/dist/store/-private.js +0 -3
- package/dist/store.js +0 -545
- package/dist/symbols-SIstXMLI.js +0 -44
- package/dist/utils/string.js +0 -92
- 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/README.md +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/github-header.svg +0 -444
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-DE5sFezZ.js","sources":["../src/request/-private/debug.ts","../src/request/-private/promise-cache.ts","../src/request/-private/utils.ts","../src/request/-private/future.ts","../src/request/-private/context.ts"],"sourcesContent":["import { DEBUG } from '@warp-drive/build-config/env';\n\nimport { getOrSetGlobal } from '../../types/-private';\nimport type { ImmutableHeaders, RequestInfo } from '../../types/request';\nimport { Context, upgradeHeaders } from './context';\n\nconst BODY_TYPES = {\n type: 'string',\n klass: ['Blob', 'ArrayBuffer', 'TypedArray', 'DataView', 'FormData', 'URLSearchParams', 'ReadableStream'],\n};\nconst ValidKeys = new Map<string, string | string[] | typeof BODY_TYPES>([\n ['duplex', ['half']],\n ['records', 'array'],\n ['data', 'json'],\n ['body', BODY_TYPES],\n ['disableTestWaiter', 'boolean'],\n ['options', 'object'],\n ['cacheOptions', 'object'],\n ['op', 'string'],\n ['store', 'object'],\n ['url', 'string'],\n ['cache', ['default', 'force-cache', 'no-cache', 'no-store', 'only-if-cached', 'reload']],\n ['credentials', ['include', 'omit', 'same-origin']],\n [\n 'destination',\n [\n '',\n 'object',\n 'audio',\n 'audioworklet',\n 'document',\n 'embed',\n 'font',\n 'frame',\n 'iframe',\n 'image',\n 'manifest',\n 'paintworklet',\n 'report',\n 'script',\n 'sharedworker',\n 'style',\n 'track',\n 'video',\n 'worker',\n 'xslt',\n ],\n ],\n ['headers', 'headers'],\n ['integrity', 'string'],\n ['keepalive', 'boolean'],\n ['method', ['QUERY', 'GET', 'PUT', 'PATCH', 'DELETE', 'POST', 'OPTIONS', 'HEAD', 'CONNECT', 'TRACE']],\n ['mode', ['same-origin', 'cors', 'navigate', 'no-cors']],\n ['redirect', ['error', 'follow', 'manual']],\n ['referrer', 'string'],\n ['signal', 'AbortSignal'],\n ['controller', 'AbortController'],\n [\n 'referrerPolicy',\n [\n '',\n 'same-origin',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'origin',\n 'origin-when-cross-origin',\n 'strict-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url',\n ],\n ],\n]);\n\nconst IS_FROZEN = getOrSetGlobal('IS_FROZEN', Symbol('FROZEN'));\nconst IS_COLLECTION = getOrSetGlobal('IS_COLLECTION', Symbol.for('Collection'));\n\nfunction freezeHeaders(headers: Headers | ImmutableHeaders): ImmutableHeaders {\n headers.delete =\n headers.set =\n headers.append =\n () => {\n throw new Error(`Cannot Mutate Immutatable Headers, use headers.clone to get a copy`);\n };\n upgradeHeaders(headers);\n return headers as ImmutableHeaders;\n}\n\nexport function deepFreeze<T = unknown>(value: T): T {\n if (value && (value as { [IS_FROZEN]?: true })[IS_FROZEN]) {\n return value;\n }\n const _type = typeof value;\n switch (_type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'undefined':\n case 'bigint':\n return value;\n case 'function':\n throw new Error(`Cannot deep-freeze a function`);\n case 'object': {\n const _niceType = niceTypeOf(value);\n switch (_niceType) {\n case 'array': {\n if ((value as unknown[] & { [IS_COLLECTION]?: true })[IS_COLLECTION]) {\n return value;\n }\n const arr = (value as unknown[]).map(deepFreeze);\n arr[IS_FROZEN as unknown as number] = true;\n return Object.freeze(arr) as T;\n }\n case 'null':\n return value;\n case 'object':\n Object.keys(value as Record<string, unknown>).forEach((key) => {\n try {\n (value as Record<string, unknown>)[key] = deepFreeze((value as Record<string, unknown>)[key]) as object;\n } catch {\n // continue\n }\n });\n (value as Record<string | symbol, unknown>)[IS_FROZEN] = true;\n return Object.freeze(value);\n case 'headers':\n return freezeHeaders(value as Headers) as T;\n case 'Collection':\n case 'Store':\n case 'AbortSignal':\n return value;\n case 'date':\n case 'map':\n case 'set':\n case 'error':\n case 'stream':\n default:\n // console.log(`Cannot deep-freeze ${_niceType}`);\n return value;\n }\n }\n }\n}\n\nfunction isMaybeContext(request: unknown) {\n if (request && typeof request === 'object') {\n const keys = Object.keys(request);\n if (keys.length === 1 && keys[0] === 'request') {\n return true;\n }\n }\n return false;\n}\n\nfunction niceTypeOf(v: unknown) {\n if (v === null) {\n return 'null';\n }\n if (typeof v === 'string') {\n return v ? 'non-empty-string' : 'empty-string';\n }\n if (!v) {\n return typeof v;\n }\n if (Array.isArray(v)) {\n return 'array';\n }\n if (v instanceof Date) {\n return 'date';\n }\n if (v instanceof Map) {\n return 'map';\n }\n if (v instanceof Set) {\n return 'set';\n }\n if (v instanceof Error) {\n return 'error';\n }\n if (v instanceof ReadableStream || v instanceof WritableStream || v instanceof TransformStream) {\n return 'stream';\n }\n if (v instanceof Headers) {\n return 'headers';\n }\n if (typeof v === 'object' && v.constructor && v.constructor.name !== 'Object') {\n return v.constructor.name;\n }\n return typeof v;\n}\n\nfunction validateKey(key: string, value: unknown, errors: string[]) {\n const schema = ValidKeys.get(key);\n if (!schema && !IgnoredKeys.has(key)) {\n errors.push(`InvalidKey: '${key}'`);\n return;\n }\n if (schema) {\n if (schema === BODY_TYPES) {\n if (typeof value === 'string' || value instanceof ReadableStream) {\n return;\n }\n const type = niceTypeOf(value);\n if (schema.klass.includes(type)) {\n return;\n }\n errors.push(\n `InvalidValue: key 'body' should be a string or one of '${schema.klass.join(\"', '\")}', received ${\n '<a value of type ' + niceTypeOf(value) + '>'\n }`\n );\n return;\n }\n if (Array.isArray(schema)) {\n if (!schema.includes(value as string)) {\n errors.push(\n `InvalidValue: key ${key} should be one of '${schema.join(\"', '\")}', received ${\n typeof value === 'string' ? value : '<a value of type ' + niceTypeOf(value) + '>'\n }`\n );\n }\n return;\n } else if (schema === 'json') {\n try {\n JSON.stringify(value);\n } catch (e) {\n errors.push(\n `InvalidValue: key ${key} should be a JSON serializable value, but failed to serialize with Error - ${\n (e as Error).message\n }`\n );\n }\n return;\n } else if (schema === 'headers') {\n if (!(value instanceof Headers)) {\n errors.push(`InvalidValue: key ${key} should be an instance of Headers, received ${niceTypeOf(value)}`);\n }\n return;\n } else if (schema === 'record') {\n const _type = typeof value;\n // record must extend plain object or Object.create(null)\n if (!value || _type !== 'object' || (value.constructor && value.constructor !== Object)) {\n errors.push(\n `InvalidValue: key ${key} should be a dictionary of string keys to string values, received ${niceTypeOf(\n value\n )}`\n );\n return;\n }\n const keys = Object.keys(value);\n keys.forEach((k) => {\n const v: unknown = (value as Record<string, unknown>)[k];\n if (typeof k !== 'string') {\n errors.push(`\\tThe key ${String(k)} on ${key} should be a string key`);\n } else if (typeof v !== 'string') {\n errors.push(`\\tThe value of ${key}.${k} should be a string not ${niceTypeOf(v)}`);\n }\n });\n return;\n } else if (schema === 'string') {\n if (typeof value !== 'string' || value.length === 0) {\n errors.push(\n `InvalidValue: key ${key} should be a non-empty string, received ${\n typeof value === 'string' ? \"''\" : typeof value\n }`\n );\n }\n return;\n } else if (schema === 'object') {\n if (!value || Array.isArray(value) || typeof value !== 'object') {\n errors.push(`InvalidValue: key ${key} should be an object`);\n }\n return;\n } else if (schema === 'boolean') {\n if (typeof value !== 'boolean') {\n errors.push(`InvalidValue: key ${key} should be a boolean, received ${typeof value}`);\n }\n return;\n } else if (schema === 'array') {\n if (!Array.isArray(value)) {\n errors.push(`InvalidValue: key ${key} should be an array, received ${typeof value}`);\n }\n return;\n }\n }\n}\n\nconst IgnoredKeys = new Set<string>([]);\n\nexport function assertValidRequest(\n request: RequestInfo | Context,\n isTopLevel: boolean\n): asserts request is RequestInfo {\n if (DEBUG) {\n // handle basic shape\n if (!request) {\n throw new Error(\n `Expected ${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>) to be called with a request, but none was provided.`\n );\n }\n if (Array.isArray(request) || typeof request !== 'object') {\n throw new Error(\n `The \\`request\\` passed to \\`${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>)\\` should be an object, received \\`${niceTypeOf(request)}\\``\n );\n }\n if (Object.keys(request).length === 0) {\n throw new Error(\n `The \\`request\\` passed to \\`${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>)\\` was empty (\\`{}\\`). Requests need at least one valid key.`\n );\n }\n\n // handle accidentally passing context entirely\n if (request instanceof Context) {\n throw new Error(\n `Expected a request passed to \\`${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>)\\` but received the previous handler's context instead`\n );\n }\n // handle Object.assign({}, context);\n if (isMaybeContext(request)) {\n throw new Error(\n `Expected a request passed to \\`${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>)\\` but received an object with a request key instead.`\n );\n }\n\n // handle schema\n const keys = Object.keys(request) as Array<keyof RequestInfo>;\n const validationErrors: string[] = [];\n const isLegacyRequest = Boolean('op' in request && !request.url);\n keys.forEach((key) => {\n if (isLegacyRequest && key === 'data') {\n return;\n }\n validateKey(key, request[key], validationErrors);\n });\n if (validationErrors.length) {\n const error: Error & { errors: string[] } = new Error(\n `Invalid Request passed to \\`${\n isTopLevel ? 'RequestManager.request' : 'next'\n }(<request>)\\`.\\n\\nThe following issues were found:\\n\\n\\t${validationErrors.join('\\n\\t')}`\n ) as Error & { errors: string[] };\n error.errors = validationErrors;\n throw error;\n }\n }\n}\n","import { getOrSetUniversal } from '../../types/-private';\n\nexport type CacheResult<T = unknown, E = unknown> = { isError: true; result: E } | { isError: false; result: T };\n\nexport type Awaitable<T = unknown, E = unknown> = {\n then: (onFulfilled: (value: T) => unknown, onRejected: (reason: E) => unknown) => unknown;\n catch: (onRejected: (reason: E) => unknown) => unknown;\n finally: (onFinally: () => unknown) => unknown;\n};\n\nexport const PromiseCache = getOrSetUniversal('PromiseCache', new WeakMap<Awaitable, CacheResult>());\nexport const RequestMap = getOrSetUniversal('RequestMap', new Map<number, CacheResult>());\n\nexport function setRequestResult(requestId: number, result: CacheResult) {\n RequestMap.set(requestId, result);\n}\nexport function clearRequestResult(requestId: number) {\n RequestMap.delete(requestId);\n}\nexport function getRequestResult(requestId: number): CacheResult | undefined {\n return RequestMap.get(requestId);\n}\n\nexport function setPromiseResult(promise: Promise<unknown> | Awaitable, result: CacheResult) {\n PromiseCache.set(promise, result);\n}\n\nexport function getPromiseResult<T, E>(promise: Promise<T> | Awaitable<T, E>): CacheResult<T, E> | undefined {\n return PromiseCache.get(promise) as CacheResult<T, E> | undefined;\n}\n","import { DEBUG } from '@warp-drive/build-config/env';\n\nimport { getOrSetGlobal } from '../../types/-private';\nimport type {\n RequestInfo,\n StructuredDataDocument,\n StructuredDocument,\n StructuredErrorDocument,\n} from '../../types/request';\nimport { STRUCTURED } from '../../types/request';\nimport { Context, ContextOwner } from './context';\nimport { assertValidRequest } from './debug';\nimport { createFuture, isFuture } from './future';\nimport { setRequestResult } from './promise-cache';\nimport type { DeferredFuture, Future, GodContext, Handler } from './types';\n\nexport const IS_CACHE_HANDLER = getOrSetGlobal('IS_CACHE_HANDLER', Symbol('IS_CACHE_HANDLER'));\nexport function curryFuture<T>(owner: ContextOwner, inbound: Future<T>, outbound: DeferredFuture<T>): Future<T> {\n owner.setStream(inbound.getStream());\n\n inbound.then(\n (doc: StructuredDataDocument<T>) => {\n const document = {\n [STRUCTURED]: true as const,\n request: owner.request,\n response: doc.response,\n content: doc.content,\n };\n outbound.resolve(document);\n },\n (error: Error & StructuredErrorDocument) => {\n if (isDoc(error)) {\n owner.setStream(owner.god.stream);\n }\n if (!error || !(error instanceof Error)) {\n try {\n throw new Error(error ? error : `Request Rejected with an Unknown Error`);\n } catch (e: unknown) {\n if (error && typeof error === 'object') {\n Object.assign(e as Error, error);\n (e as Error & StructuredErrorDocument).message =\n (error as Error).message || `Request Rejected with an Unknown Error`;\n }\n error = e as Error & StructuredErrorDocument;\n }\n }\n\n error[STRUCTURED] = true;\n error.request = owner.request;\n error.response = owner.getResponse();\n error.error = error.error || error.message;\n\n outbound.reject(error);\n }\n );\n return outbound.promise;\n}\n\nfunction isDoc<T>(doc: T | StructuredDataDocument<T>): doc is StructuredDataDocument<T> {\n return doc && (doc as StructuredDataDocument<T>)[STRUCTURED] === true;\n}\n\nfunction ensureDoc<T>(owner: ContextOwner, content: T | Error, isError: boolean): StructuredDocument<T> {\n if (isDoc(content)) {\n return content as StructuredDocument<T>;\n }\n\n if (isError) {\n return {\n [STRUCTURED]: true,\n request: owner.request,\n response: owner.getResponse(),\n error: content as Error,\n } as StructuredErrorDocument<T>;\n }\n\n return {\n [STRUCTURED]: true,\n request: owner.request,\n response: owner.getResponse(),\n content: content as T,\n };\n}\n\nexport interface HttpErrorProps extends DOMException {\n code: number;\n name: string;\n status: number;\n statusText: string;\n isRequestError: boolean;\n}\n\nexport function enhanceReason(reason?: string): DOMException {\n return new DOMException(reason || 'The user aborted a request.', 'AbortError');\n}\n\nexport function handleOutcome<T>(\n owner: ContextOwner,\n inbound: Promise<T | StructuredDataDocument<T>>,\n outbound: DeferredFuture<T>\n): Future<T> {\n inbound.then(\n (content: T | StructuredDataDocument<T>) => {\n if (owner.controller.signal.aborted) {\n // the next function did not respect the signal, we handle it here\n outbound.reject(enhanceReason(owner.controller.signal.reason as string));\n return;\n }\n if (isDoc(content)) {\n owner.setStream(owner.god.stream);\n content = content.content;\n }\n const document = {\n [STRUCTURED]: true as const,\n request: owner.request,\n response: owner.getResponse(),\n content,\n };\n outbound.resolve(document);\n },\n (error: Error & StructuredErrorDocument) => {\n if (isDoc(error)) {\n owner.setStream(owner.god.stream);\n }\n if (!error || !(error instanceof Error)) {\n try {\n throw new Error(error ? error : `Request Rejected with an Unknown Error`);\n } catch (e: unknown) {\n if (error && typeof error === 'object') {\n Object.assign(e as Error, error);\n (e as Error & StructuredErrorDocument).message =\n (error as Error).message || `Request Rejected with an Unknown Error`;\n }\n error = e as Error & StructuredErrorDocument;\n }\n }\n\n error[STRUCTURED] = true;\n error.request = owner.request;\n error.response = owner.getResponse();\n error.error = error.error || error.message;\n outbound.reject(error);\n }\n );\n return outbound.promise;\n}\n\nfunction isCacheHandler(handler: Handler & { [IS_CACHE_HANDLER]?: boolean }, index: number): boolean {\n return index === 0 && Boolean(handler[IS_CACHE_HANDLER]);\n}\n\nexport function executeNextHandler<T>(\n wares: Readonly<Handler[]>,\n request: RequestInfo,\n i: number,\n god: GodContext\n): Future<T> {\n if (DEBUG) {\n if (i === wares.length) {\n throw new Error(`No handler was able to handle this request.`);\n }\n assertValidRequest(request, false);\n }\n const owner = new ContextOwner(request, god, i === 0);\n\n function next(r: RequestInfo): Future<T> {\n owner.nextCalled++;\n return executeNextHandler(wares, r, i + 1, god);\n }\n\n const _isCacheHandler = isCacheHandler(wares[i], i);\n const context = new Context(owner, _isCacheHandler);\n let outcome: Promise<T | StructuredDataDocument<T>> | Future<T>;\n try {\n outcome = wares[i].request<T>(context, next);\n if (_isCacheHandler) {\n context._finalize();\n }\n if (!!outcome && _isCacheHandler) {\n if (!(outcome instanceof Promise)) {\n setRequestResult(owner.requestId, { isError: false, result: ensureDoc(owner, outcome, false) });\n outcome = Promise.resolve(outcome);\n }\n } else if (DEBUG) {\n if (!outcome || (!(outcome instanceof Promise) && !(typeof outcome === 'object' && 'then' in outcome))) {\n // eslint-disable-next-line no-console\n console.log({ request, handler: wares[i], outcome });\n if (outcome === undefined) {\n throw new Error(`Expected handler.request to return a promise, instead received undefined.`);\n }\n throw new Error(`Expected handler.request to return a promise, instead received a synchronous value.`);\n }\n }\n } catch (e) {\n if (_isCacheHandler) {\n setRequestResult(owner.requestId, { isError: true, result: ensureDoc(owner, e, true) });\n }\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n outcome = Promise.reject<StructuredDataDocument<T>>(e);\n }\n const future = createFuture<T>(owner);\n\n if (isFuture<T>(outcome)) {\n return curryFuture(owner, outcome, future);\n }\n\n return handleOutcome(owner, outcome, future);\n}\n","import { IS_FUTURE, type StructuredDocument } from '../../types/request';\nimport type { ContextOwner } from './context';\nimport type { Deferred, DeferredFuture, Future } from './types';\nimport { enhanceReason } from './utils';\n\nexport function isFuture<T>(maybe: unknown): maybe is Future<T> {\n return Boolean(maybe && maybe instanceof Promise && (maybe as Future<T>)[IS_FUTURE] === true);\n}\n\nexport function createDeferred<T>(): Deferred<T> {\n let resolve!: (v: T) => void;\n let reject!: (v: unknown) => void;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { resolve, reject, promise };\n}\n\nexport function upgradePromise<T>(promise: Promise<StructuredDocument<T>>, future: Future<T>): Future<T> {\n (promise as Future<T>)[IS_FUTURE] = true;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n (promise as Future<T>).getStream = future.getStream;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n (promise as Future<T>).abort = future.abort;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n (promise as Future<T>).onFinalize = future.onFinalize;\n (promise as Future<T>).id = future.id;\n (promise as Future<T>).lid = future.lid;\n\n return promise as Future<T>;\n}\n\nexport function createFuture<T>(owner: ContextOwner): DeferredFuture<T> {\n const deferred = createDeferred<T>() as unknown as DeferredFuture<T>;\n let { promise } = deferred;\n let cbs: Array<() => void> | undefined;\n promise = promise.finally(() => {\n owner.resolveStream();\n if (cbs) {\n cbs.forEach((cb) => cb());\n }\n }) as Future<T>;\n promise.onFinalize = (fn: () => void) => {\n cbs = cbs || [];\n cbs.push(fn);\n };\n promise[IS_FUTURE] = true;\n promise.getStream = () => {\n return owner.getStream();\n };\n promise.abort = (reason?: string) => {\n owner.abort(enhanceReason(reason));\n };\n promise.id = owner.requestId;\n promise.lid = owner.god.identifier;\n\n deferred.promise = promise;\n return deferred;\n}\n","import { DEBUG } from '@warp-drive/build-config/env';\nimport { assert } from '@warp-drive/build-config/macros';\n\nimport type { StableDocumentIdentifier } from '../../types/identifier';\nimport type { ImmutableHeaders, ImmutableRequestInfo, RequestInfo, ResponseInfo } from '../../types/request';\nimport { SkipCache } from '../../types/request';\nimport { deepFreeze } from './debug';\nimport { createDeferred } from './future';\nimport type { DeferredStream, GodContext } from './types';\n\nexport function upgradeHeaders(headers: Headers | ImmutableHeaders): ImmutableHeaders {\n (headers as ImmutableHeaders).clone = () => {\n return new Headers(headers);\n };\n (headers as ImmutableHeaders).toJSON = () => {\n return Array.from(headers as unknown as Iterable<[string, string]>);\n };\n return headers as ImmutableHeaders;\n}\n\nexport function cloneResponseProperties(response: Response): ResponseInfo {\n const { headers, ok, redirected, status, statusText, type, url } = response;\n upgradeHeaders(headers);\n return {\n headers: headers as ImmutableHeaders,\n ok,\n redirected,\n status,\n statusText,\n type,\n url,\n };\n}\n\nexport class ContextOwner {\n hasSetStream = false;\n hasSetResponse = false;\n hasSubscribers = false;\n stream: DeferredStream = createDeferred<ReadableStream | null>();\n response: ResponseInfo | null = null;\n declare request: ImmutableRequestInfo;\n declare enhancedRequest: ImmutableRequestInfo;\n nextCalled = 0;\n declare god: GodContext;\n declare controller: AbortController;\n declare requestId: number;\n declare isRoot: boolean;\n\n constructor(request: RequestInfo, god: GodContext, isRoot = false) {\n this.isRoot = isRoot;\n this.requestId = god.id;\n this.controller = request.controller || god.controller;\n this.stream.promise.sizeHint = 0;\n\n if (request.controller) {\n if (request.controller !== god.controller) {\n god.controller.signal.addEventListener('abort', () => {\n this.controller.abort(god.controller.signal.reason);\n });\n }\n delete request.controller;\n }\n let enhancedRequest: ImmutableRequestInfo = Object.assign(\n { signal: this.controller.signal },\n request\n ) as ImmutableRequestInfo;\n if (DEBUG) {\n if (!request?.cacheOptions?.[SkipCache]) {\n request = deepFreeze(request) as ImmutableRequestInfo;\n enhancedRequest = deepFreeze(enhancedRequest);\n }\n } else {\n if (request.headers) {\n upgradeHeaders(request.headers);\n }\n }\n this.enhancedRequest = enhancedRequest;\n this.request = request as ImmutableRequestInfo;\n this.god = god;\n this.stream.promise = this.stream.promise.then((stream: ReadableStream | null) => {\n if (this.god.stream === stream && this.hasSubscribers) {\n this.god.stream = null;\n }\n return stream;\n });\n }\n\n get hasRequestedStream(): boolean {\n return this.god.hasRequestedStream;\n }\n\n getResponse(): ResponseInfo | null {\n if (this.hasSetResponse) {\n return this.response;\n }\n if (this.nextCalled === 1) {\n return this.god.response;\n }\n return null;\n }\n getStream(): Promise<ReadableStream | null> {\n if (this.isRoot) {\n this.god.hasRequestedStream = true;\n }\n if (!this.hasSetResponse) {\n const hint = this.god.response?.headers?.get('content-length');\n this.stream.promise.sizeHint = hint ? parseInt(hint, 10) : 0;\n }\n this.hasSubscribers = true;\n return this.stream.promise;\n }\n abort(reason: DOMException) {\n this.controller.abort(reason);\n }\n\n setStream(stream: ReadableStream | Promise<ReadableStream | null> | null) {\n if (!this.hasSetStream) {\n this.hasSetStream = true;\n\n if (!(stream instanceof Promise)) {\n this.god.stream = stream;\n }\n // @ts-expect-error\n this.stream.resolve(stream);\n }\n }\n\n resolveStream() {\n this.setStream(this.nextCalled === 1 ? this.god.stream : null);\n }\n\n setResponse(response: ResponseInfo | Response | null) {\n if (this.hasSetResponse) {\n if (DEBUG) {\n throw new Error(`Cannot setResponse when a response has already been set`);\n }\n return;\n }\n this.hasSetResponse = true;\n if (response instanceof Response) {\n // TODO potentially avoid cloning in prod\n let responseData = cloneResponseProperties(response);\n\n if (DEBUG) {\n responseData = deepFreeze(responseData);\n }\n this.response = responseData;\n this.god.response = responseData;\n const sizeHint = response.headers?.get('content-length');\n this.stream.promise.sizeHint = sizeHint ? parseInt(sizeHint, 10) : 0;\n } else {\n this.response = response;\n this.god.response = response;\n }\n }\n}\n\nexport class Context {\n #owner: ContextOwner;\n declare request: ImmutableRequestInfo;\n declare id: number;\n declare private _isCacheHandler: boolean;\n declare private _finalized: boolean;\n\n constructor(owner: ContextOwner, isCacheHandler: boolean) {\n this.id = owner.requestId;\n this.#owner = owner;\n this.request = owner.enhancedRequest;\n this._isCacheHandler = isCacheHandler;\n this._finalized = false;\n }\n setStream(stream: ReadableStream | Promise<ReadableStream | null>) {\n this.#owner.setStream(stream);\n }\n setResponse(response: ResponseInfo | Response | null) {\n this.#owner.setResponse(response);\n }\n\n setIdentifier(identifier: StableDocumentIdentifier) {\n assert(\n `setIdentifier may only be used synchronously from a CacheHandler`,\n identifier && this._isCacheHandler && !this._finalized\n );\n this.#owner.god.identifier = identifier;\n }\n\n get hasRequestedStream() {\n return this.#owner.hasRequestedStream;\n }\n\n _finalize() {\n this._finalized = true;\n }\n}\nexport type HandlerRequestContext = Context;\n"],"names":["BODY_TYPES","type","klass","ValidKeys","Map","IS_FROZEN","getOrSetGlobal","Symbol","IS_COLLECTION","for","freezeHeaders","headers","delete","set","append","Error","upgradeHeaders","deepFreeze","value","_type","_niceType","niceTypeOf","arr","map","Object","freeze","keys","forEach","key","isMaybeContext","request","length","v","Array","isArray","Date","Set","ReadableStream","WritableStream","TransformStream","Headers","constructor","name","validateKey","errors","schema","get","IgnoredKeys","has","push","includes","join","JSON","stringify","e","message","k","String","assertValidRequest","isTopLevel","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","Context","validationErrors","isLegacyRequest","Boolean","url","error","PromiseCache","getOrSetUniversal","WeakMap","RequestMap","setRequestResult","requestId","result","clearRequestResult","getRequestResult","setPromiseResult","promise","getPromiseResult","IS_CACHE_HANDLER","curryFuture","owner","inbound","outbound","setStream","getStream","then","doc","document","STRUCTURED","response","content","resolve","isDoc","god","stream","assign","getResponse","reject","ensureDoc","isError","enhanceReason","reason","DOMException","handleOutcome","controller","signal","aborted","isCacheHandler","handler","index","executeNextHandler","wares","i","ContextOwner","next","r","nextCalled","_isCacheHandler","context","outcome","_finalize","Promise","console","log","undefined","future","createFuture","isFuture","maybe","IS_FUTURE","createDeferred","res","rej","upgradePromise","abort","onFinalize","id","lid","deferred","cbs","finally","resolveStream","cb","fn","identifier","clone","toJSON","from","cloneResponseProperties","ok","redirected","status","statusText","hasSetStream","hasSetResponse","hasSubscribers","isRoot","sizeHint","addEventListener","enhancedRequest","cacheOptions","SkipCache","hasRequestedStream","hint","parseInt","setResponse","Response","responseData","_finalized","setIdentifier","test"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import { setLogging, getRuntimeConfig } from
|
|
2
|
-
import { a as cloneResponseProperties, I as IS_CACHE_HANDLER, b as assertValidRequest, e as executeNextHandler, d as getRequestResult, u as upgradePromise, s as setPromiseResult, f as clearRequestResult } from "./context-
|
|
3
|
-
import { macroCondition, getGlobalConfig } from '@embroider/macros';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { setLogging, getRuntimeConfig } from "./types/runtime.js";
|
|
2
|
+
import { a as cloneResponseProperties, I as IS_CACHE_HANDLER, b as assertValidRequest, e as executeNextHandler, d as getRequestResult, u as upgradePromise, s as setPromiseResult, f as clearRequestResult } from "./context-DE5sFezZ.js";
|
|
3
|
+
import { macroCondition, getGlobalConfig, importSync } from '@embroider/macros';
|
|
4
|
+
import { peekUniversalTransient, setUniversalTransient } from "./types/-private.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A basic Fetch Handler which converts a request into a
|
|
8
|
+
* `fetch` call presuming the response to be `json`.
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* import Fetch from '@ember-data/request/fetch';
|
|
12
|
+
*
|
|
13
|
+
* manager.use([Fetch]);
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
10
18
|
|
|
11
19
|
// Lazily close over fetch to avoid breaking Mirage
|
|
12
20
|
const _fetch = typeof fetch !== 'undefined' ? (...args) => fetch(...args) : typeof FastBoot !== 'undefined' ? (...args) => FastBoot.require('node-fetch')(...args) : () => {
|
|
@@ -27,20 +35,16 @@ const MUTATION_OPS = new Set(['updateRecord', 'createRecord', 'deleteRecord']);
|
|
|
27
35
|
const ERROR_STATUS_CODE_FOR = new Map([[400, 'Bad Request'], [401, 'Unauthorized'], [402, 'Payment Required'], [403, 'Forbidden'], [404, 'Not Found'], [405, 'Method Not Allowed'], [406, 'Not Acceptable'], [407, 'Proxy Authentication Required'], [408, 'Request Timeout'], [409, 'Conflict'], [410, 'Gone'], [411, 'Length Required'], [412, 'Precondition Failed'], [413, 'Payload Too Large'], [414, 'URI Too Long'], [415, 'Unsupported Media Type'], [416, 'Range Not Satisfiable'], [417, 'Expectation Failed'], [419, 'Page Expired'], [420, 'Enhance Your Calm'], [421, 'Misdirected Request'], [422, 'Unprocessable Entity'], [423, 'Locked'], [424, 'Failed Dependency'], [425, 'Too Early'], [426, 'Upgrade Required'], [428, 'Precondition Required'], [429, 'Too Many Requests'], [430, 'Request Header Fields Too Large'], [431, 'Request Header Fields Too Large'], [450, 'Blocked By Windows Parental Controls'], [451, 'Unavailable For Legal Reasons'], [500, 'Internal Server Error'], [501, 'Not Implemented'], [502, 'Bad Gateway'], [503, 'Service Unavailable'], [504, 'Gateway Timeout'], [505, 'HTTP Version Not Supported'], [506, 'Variant Also Negotiates'], [507, 'Insufficient Storage'], [508, 'Loop Detected'], [509, 'Bandwidth Limit Exceeded'], [510, 'Not Extended'], [511, 'Network Authentication Required']]);
|
|
28
36
|
|
|
29
37
|
/**
|
|
30
|
-
*
|
|
31
|
-
* import { Fetch } from '@warp-drive/core';
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* A basic Fetch Handler which converts a request into a
|
|
38
|
+
* A basic handler which converts a request into a
|
|
35
39
|
* `fetch` call presuming the response to be `json`.
|
|
36
40
|
*
|
|
37
41
|
* ```ts
|
|
38
|
-
* import
|
|
42
|
+
* import Fetch from '@ember-data/request/fetch';
|
|
39
43
|
*
|
|
40
|
-
*
|
|
41
|
-
* .use([Fetch]);
|
|
44
|
+
* manager.use([Fetch]);
|
|
42
45
|
* ```
|
|
43
46
|
*
|
|
47
|
+
* @class Fetch
|
|
44
48
|
* @public
|
|
45
49
|
*/
|
|
46
50
|
const Fetch = {
|
|
@@ -183,9 +187,84 @@ const Fetch = {
|
|
|
183
187
|
function isDict(v) {
|
|
184
188
|
return v !== null && typeof v === 'object';
|
|
185
189
|
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* ```js
|
|
193
|
+
* import RequestManager from '@ember-data/request';
|
|
194
|
+
* ```
|
|
195
|
+
*
|
|
196
|
+
* A RequestManager provides a request/response flow in which configured
|
|
197
|
+
* handlers are successively given the opportunity to handle, modify, or
|
|
198
|
+
* pass-along a request.
|
|
199
|
+
*
|
|
200
|
+
* ```ts
|
|
201
|
+
* interface RequestManager {
|
|
202
|
+
* request<T>(req: RequestInfo): Future<T>;
|
|
203
|
+
* }
|
|
204
|
+
* ```
|
|
205
|
+
*
|
|
206
|
+
* For example:
|
|
207
|
+
*
|
|
208
|
+
* ```ts
|
|
209
|
+
* import RequestManager from '@ember-data/request';
|
|
210
|
+
* import Fetch from '@ember-data/request/fetch';
|
|
211
|
+
* import Auth from 'ember-simple-auth/ember-data-handler';
|
|
212
|
+
* import Config from './config';
|
|
213
|
+
*
|
|
214
|
+
* const { apiUrl } = Config;
|
|
215
|
+
*
|
|
216
|
+
* // ... create manager
|
|
217
|
+
* const manager = new RequestManager().use([Auth, Fetch]);
|
|
218
|
+
*
|
|
219
|
+
* // ... execute a request
|
|
220
|
+
* const response = await manager.request({
|
|
221
|
+
* url: `${apiUrl}/users`
|
|
222
|
+
* });
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* ### Futures
|
|
226
|
+
*
|
|
227
|
+
* The return value of `manager.request` is a `Future`, which allows
|
|
228
|
+
* access to limited information about the request while it is still
|
|
229
|
+
* pending and fulfills with the final state when the request completes.
|
|
230
|
+
*
|
|
231
|
+
* A `Future` is cancellable via `abort`.
|
|
232
|
+
*
|
|
233
|
+
* Handlers may optionally expose a `ReadableStream` to the `Future` for
|
|
234
|
+
* streaming data; however, when doing so the future should not resolve
|
|
235
|
+
* until the response stream is fully read.
|
|
236
|
+
*
|
|
237
|
+
* ```ts
|
|
238
|
+
* interface Future<T> extends Promise<StructuredDocument<T>> {
|
|
239
|
+
* abort(): void;
|
|
240
|
+
*
|
|
241
|
+
* async getStream(): ReadableStream | null;
|
|
242
|
+
* }
|
|
243
|
+
* ```
|
|
244
|
+
*
|
|
245
|
+
* ### StructuredDocuments
|
|
246
|
+
*
|
|
247
|
+
* A Future resolves with a `StructuredDataDocument` or rejects with a `StructuredErrorDocument`.
|
|
248
|
+
*
|
|
249
|
+
* ```ts
|
|
250
|
+
* interface StructuredDataDocument<T> {
|
|
251
|
+
* request: ImmutableRequestInfo;
|
|
252
|
+
* response: ImmutableResponseInfo;
|
|
253
|
+
* content: T;
|
|
254
|
+
* }
|
|
255
|
+
* interface StructuredErrorDocument extends Error {
|
|
256
|
+
* request: ImmutableRequestInfo;
|
|
257
|
+
* response: ImmutableResponseInfo;
|
|
258
|
+
* error: string | object;
|
|
259
|
+
* }
|
|
260
|
+
* type StructuredDocument<T> = StructuredDataDocument<T> | StructuredErrorDocument;
|
|
261
|
+
* ```
|
|
262
|
+
*
|
|
263
|
+
* @class RequestManager
|
|
264
|
+
* @public
|
|
265
|
+
*/
|
|
186
266
|
class RequestManager {
|
|
187
267
|
#handlers = [];
|
|
188
|
-
/** @internal */
|
|
189
268
|
|
|
190
269
|
/**
|
|
191
270
|
* A map of pending requests from request.id to their
|
|
@@ -196,8 +275,6 @@ class RequestManager {
|
|
|
196
275
|
* @internal
|
|
197
276
|
*/
|
|
198
277
|
|
|
199
|
-
/** @internal */
|
|
200
|
-
|
|
201
278
|
constructor(options) {
|
|
202
279
|
Object.assign(this, options);
|
|
203
280
|
this._pending = new Map();
|
|
@@ -212,6 +289,8 @@ class RequestManager {
|
|
|
212
289
|
* registers itself as a Cache handler.
|
|
213
290
|
*
|
|
214
291
|
* @public
|
|
292
|
+
* @param {Handler[]} cacheHandler
|
|
293
|
+
* @return {ThisType}
|
|
215
294
|
*/
|
|
216
295
|
useCache(cacheHandler) {
|
|
217
296
|
if (macroCondition(getGlobalConfig().WarpDrive.env.DEBUG)) {
|
|
@@ -249,7 +328,7 @@ class RequestManager {
|
|
|
249
328
|
throw new Error(`\`RequestManager.use(<Handler[]>)\` expects an array of handlers, but was called with \`${typeof newHandlers}\``);
|
|
250
329
|
}
|
|
251
330
|
newHandlers.forEach((handler, index) => {
|
|
252
|
-
if (!handler || typeof handler !== '
|
|
331
|
+
if (!handler || typeof handler !== 'object' || typeof handler.request !== 'function') {
|
|
253
332
|
throw new Error(`\`RequestManager.use(<Handler[]>)\` expected to receive an array of handler objects with request methods, by the handler at index ${index} does not conform.`);
|
|
254
333
|
}
|
|
255
334
|
});
|
|
@@ -296,7 +375,10 @@ class RequestManager {
|
|
|
296
375
|
const cacheResult = getRequestResult(requestId);
|
|
297
376
|
if (macroCondition(getGlobalConfig().WarpDrive.env.TESTING)) {
|
|
298
377
|
if (!request.disableTestWaiter) {
|
|
299
|
-
const
|
|
378
|
+
const {
|
|
379
|
+
waitForPromise
|
|
380
|
+
} = importSync('@ember/test-waiters');
|
|
381
|
+
const newPromise = waitForPromise(promise);
|
|
300
382
|
const finalPromise = upgradePromise(newPromise.then(result => {
|
|
301
383
|
setPromiseResult(finalPromise, {
|
|
302
384
|
isError: false,
|
|
@@ -345,26 +427,11 @@ class RequestManager {
|
|
|
345
427
|
}
|
|
346
428
|
return finalPromise;
|
|
347
429
|
}
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* This method exists so that the RequestManager can be created
|
|
351
|
-
* can be created by container/factory systems that expect to
|
|
352
|
-
* call a static `create` method to instantiate the class.
|
|
353
|
-
*
|
|
354
|
-
* Using `new RequestManager()` directly is preferred.
|
|
355
|
-
*
|
|
356
|
-
* @private
|
|
357
|
-
*/
|
|
358
430
|
static create(options) {
|
|
359
431
|
return new this(options);
|
|
360
432
|
}
|
|
361
433
|
}
|
|
362
434
|
|
|
363
|
-
/**
|
|
364
|
-
* @module
|
|
365
|
-
* @mergeModuleWith <project>
|
|
366
|
-
*/
|
|
367
|
-
|
|
368
435
|
// @ts-expect-error adding to globalThis
|
|
369
436
|
globalThis.setWarpDriveLogging = setLogging;
|
|
370
437
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/request/-private/fetch.ts","../src/request/-private/manager.ts","../src/index.ts"],"sourcesContent":["/**\n * A basic Fetch Handler which converts a request into a\n * `fetch` call presuming the response to be `json`.\n *\n * ```ts\n * import Fetch from '@ember-data/request/fetch';\n *\n * manager.use([Fetch]);\n * ```\n *\n * @module\n */\n\nimport { DEBUG } from '@warp-drive/build-config/env';\nimport { assert } from '@warp-drive/build-config/macros';\n\nimport { cloneResponseProperties, type Context } from './context';\nimport type { HttpErrorProps } from './utils';\n\ninterface FastbootRequest extends Request {\n protocol: string;\n host: string;\n}\ninterface FastBoot {\n require(moduleName: string): unknown;\n isFastBoot: boolean;\n request: FastbootRequest;\n}\n\ndeclare global {\n const FastBoot: undefined | FastBoot;\n}\n\n// Lazily close over fetch to avoid breaking Mirage\nconst _fetch: typeof fetch =\n typeof fetch !== 'undefined'\n ? (...args) => fetch(...args)\n : typeof FastBoot !== 'undefined'\n ? (...args) => (FastBoot.require('node-fetch') as typeof fetch)(...args)\n : ((() => {\n throw new Error('No Fetch Implementation Found');\n }) as typeof fetch);\n\n// clones a response in a way that should still\n// allow it to stream\nfunction cloneResponse(response: Response, overrides: Partial<Response>) {\n const props = cloneResponseProperties(response);\n return new Response(response.body, Object.assign(props, overrides));\n}\n\nlet IS_MAYBE_MIRAGE = () => false;\nif (DEBUG) {\n IS_MAYBE_MIRAGE = () =>\n Boolean(\n typeof window !== 'undefined' &&\n ((window as { server?: { pretender: unknown } }).server?.pretender ||\n window.fetch.toString().replace(/\\s+/g, '') !== 'function fetch() { [native code] }'.replace(/\\s+/g, ''))\n );\n}\n\nconst MUTATION_OPS = new Set(['updateRecord', 'createRecord', 'deleteRecord']);\nconst ERROR_STATUS_CODE_FOR = new Map([\n [400, 'Bad Request'],\n [401, 'Unauthorized'],\n [402, 'Payment Required'],\n [403, 'Forbidden'],\n [404, 'Not Found'],\n [405, 'Method Not Allowed'],\n [406, 'Not Acceptable'],\n [407, 'Proxy Authentication Required'],\n [408, 'Request Timeout'],\n [409, 'Conflict'],\n [410, 'Gone'],\n [411, 'Length Required'],\n [412, 'Precondition Failed'],\n [413, 'Payload Too Large'],\n [414, 'URI Too Long'],\n [415, 'Unsupported Media Type'],\n [416, 'Range Not Satisfiable'],\n [417, 'Expectation Failed'],\n [419, 'Page Expired'],\n [420, 'Enhance Your Calm'],\n [421, 'Misdirected Request'],\n [422, 'Unprocessable Entity'],\n [423, 'Locked'],\n [424, 'Failed Dependency'],\n [425, 'Too Early'],\n [426, 'Upgrade Required'],\n [428, 'Precondition Required'],\n [429, 'Too Many Requests'],\n [430, 'Request Header Fields Too Large'],\n [431, 'Request Header Fields Too Large'],\n [450, 'Blocked By Windows Parental Controls'],\n [451, 'Unavailable For Legal Reasons'],\n [500, 'Internal Server Error'],\n [501, 'Not Implemented'],\n [502, 'Bad Gateway'],\n [503, 'Service Unavailable'],\n [504, 'Gateway Timeout'],\n [505, 'HTTP Version Not Supported'],\n [506, 'Variant Also Negotiates'],\n [507, 'Insufficient Storage'],\n [508, 'Loop Detected'],\n [509, 'Bandwidth Limit Exceeded'],\n [510, 'Not Extended'],\n [511, 'Network Authentication Required'],\n]);\n\n/**\n * A basic handler which converts a request into a\n * `fetch` call presuming the response to be `json`.\n *\n * ```ts\n * import Fetch from '@ember-data/request/fetch';\n *\n * manager.use([Fetch]);\n * ```\n *\n * @class Fetch\n * @public\n */\nconst Fetch = {\n async request<T>(context: Context): Promise<T> {\n let response: Response;\n\n try {\n assert(\n 'The Fetch handler expects the request to have a URL, none was provided.',\n context.request.url && typeof context.request.url === 'string'\n );\n response = await _fetch(context.request.url, context.request);\n } catch (e) {\n if (e instanceof DOMException && e.name === 'AbortError') {\n (e as HttpErrorProps).statusText = 'Aborted';\n (e as HttpErrorProps).status = 20;\n (e as HttpErrorProps).isRequestError = true;\n } else {\n (e as HttpErrorProps).statusText = 'Unknown Network Error';\n (e as HttpErrorProps).status = 0;\n (e as HttpErrorProps).isRequestError = true;\n }\n throw e;\n }\n\n const isError = !response.ok || response.status >= 400;\n const op = context.request.op;\n const isMutationOp = Boolean(op && MUTATION_OPS.has(op));\n\n if (!isError && !isMutationOp && response.status !== 204 && !response.headers.has('date')) {\n if (IS_MAYBE_MIRAGE()) {\n response.headers.set('date', new Date().toUTCString());\n } else {\n const headers = new Headers(response.headers);\n headers.set('date', new Date().toUTCString());\n response = cloneResponse(response, {\n headers,\n });\n }\n }\n\n context.setResponse(response);\n\n if (response.status === 204) {\n return null as T;\n }\n\n let text = '';\n // if we are in a mirage context, we cannot support streaming\n if (IS_MAYBE_MIRAGE()) {\n text = await response.text();\n } else {\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let isStreaming = context.hasRequestedStream;\n let stream: TransformStream | null = isStreaming ? new TransformStream() : null;\n let writer = stream?.writable.getWriter();\n\n if (isStreaming) {\n // Listen for the abort event on the AbortSignal\n context.request.signal?.addEventListener('abort', () => {\n if (!isStreaming) {\n return;\n }\n void stream!.writable.abort('Request Aborted');\n void stream!.readable.cancel('Request Aborted');\n });\n context.setStream(stream!.readable);\n }\n\n while (true) {\n // we manually read the stream instead of using `response.json()`\n // or `response.text()` because if we need to stream the body\n // we need to be able to pass the stream along efficiently.\n const { done, value } = await reader.read();\n if (done) {\n if (isStreaming) {\n isStreaming = false;\n await writer!.ready;\n await writer!.close();\n }\n break;\n }\n text += decoder.decode(value, { stream: true });\n\n // if we are streaming, we want to pass the stream along\n if (isStreaming) {\n await writer!.ready;\n await writer!.write(value);\n } else if (context.hasRequestedStream) {\n const encode = new TextEncoder();\n isStreaming = true;\n stream = new TransformStream();\n // Listen for the abort event on the AbortSignal\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n context.request.signal?.addEventListener('abort', () => {\n if (!isStreaming) {\n return;\n }\n void stream!.writable.abort('Request Aborted');\n void stream!.readable.cancel('Request Aborted');\n });\n context.setStream(stream.readable);\n writer = stream.writable.getWriter();\n await writer.ready;\n await writer.write(encode.encode(text));\n await writer.ready;\n await writer.write(value);\n }\n }\n\n if (isStreaming) {\n isStreaming = false;\n await writer!.ready;\n await writer!.close();\n }\n }\n // if we are an error, we will want to throw\n if (isError) {\n let errorPayload: object | undefined;\n try {\n errorPayload = JSON.parse(text) as object;\n } catch {\n // void;\n }\n // attempt errors discovery\n const errors = Array.isArray(errorPayload)\n ? errorPayload\n : isDict(errorPayload) && Array.isArray(errorPayload.errors)\n ? errorPayload.errors\n : null;\n\n const statusText = response.statusText || ERROR_STATUS_CODE_FOR.get(response.status) || 'Unknown Request Error';\n const msg = `[${response.status} ${statusText}] ${context.request.method ?? 'GET'} (${response.type}) - ${\n response.url\n }`;\n\n const error = (errors ? new AggregateError(errors, msg) : new Error(msg)) as Error & {\n content: object | undefined;\n } & HttpErrorProps;\n error.status = response.status;\n error.statusText = statusText;\n error.isRequestError = true;\n error.code = error.status;\n error.name = error.statusText.replaceAll(' ', '') + 'Error';\n error.content = errorPayload;\n throw error;\n } else {\n return JSON.parse(text) as T;\n }\n },\n};\n\nfunction isDict(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === 'object';\n}\n\nexport { Fetch };\n","import { importSync } from '@embroider/macros';\n\nimport { DEBUG, TESTING } from '@warp-drive/build-config/env';\n\nimport { peekUniversalTransient, setUniversalTransient } from '../../types/-private';\nimport type { StableDocumentIdentifier } from '../../types/identifier';\nimport type { RequestInfo, StructuredErrorDocument } from '../../types/request';\nimport { assertValidRequest } from './debug';\nimport { upgradePromise } from './future';\nimport { clearRequestResult, getRequestResult, setPromiseResult } from './promise-cache';\nimport type { CacheHandler, Future, GenericCreateArgs, Handler, ManagedRequestPriority } from './types';\nimport { executeNextHandler, IS_CACHE_HANDLER } from './utils';\n\n/**\n * ```js\n * import RequestManager from '@ember-data/request';\n * ```\n *\n * A RequestManager provides a request/response flow in which configured\n * handlers are successively given the opportunity to handle, modify, or\n * pass-along a request.\n *\n * ```ts\n * interface RequestManager {\n * request<T>(req: RequestInfo): Future<T>;\n * }\n * ```\n *\n * For example:\n *\n * ```ts\n * import RequestManager from '@ember-data/request';\n * import Fetch from '@ember-data/request/fetch';\n * import Auth from 'ember-simple-auth/ember-data-handler';\n * import Config from './config';\n *\n * const { apiUrl } = Config;\n *\n * // ... create manager\n * const manager = new RequestManager().use([Auth, Fetch]);\n *\n * // ... execute a request\n * const response = await manager.request({\n * url: `${apiUrl}/users`\n * });\n * ```\n *\n * ### Futures\n *\n * The return value of `manager.request` is a `Future`, which allows\n * access to limited information about the request while it is still\n * pending and fulfills with the final state when the request completes.\n *\n * A `Future` is cancellable via `abort`.\n *\n * Handlers may optionally expose a `ReadableStream` to the `Future` for\n * streaming data; however, when doing so the future should not resolve\n * until the response stream is fully read.\n *\n * ```ts\n * interface Future<T> extends Promise<StructuredDocument<T>> {\n * abort(): void;\n *\n * async getStream(): ReadableStream | null;\n * }\n * ```\n *\n * ### StructuredDocuments\n *\n * A Future resolves with a `StructuredDataDocument` or rejects with a `StructuredErrorDocument`.\n *\n * ```ts\n * interface StructuredDataDocument<T> {\n * request: ImmutableRequestInfo;\n * response: ImmutableResponseInfo;\n * content: T;\n * }\n * interface StructuredErrorDocument extends Error {\n * request: ImmutableRequestInfo;\n * response: ImmutableResponseInfo;\n * error: string | object;\n * }\n * type StructuredDocument<T> = StructuredDataDocument<T> | StructuredErrorDocument;\n * ```\n *\n * @class RequestManager\n * @public\n */\nexport class RequestManager {\n #handlers: Handler[] = [];\n declare _hasCacheHandler: boolean;\n /**\n * A map of pending requests from request.id to their\n * associated CacheHandler promise.\n *\n * This queue is managed by the CacheHandler\n *\n * @internal\n */\n declare _pending: Map<number, Promise<unknown>>;\n declare _deduped: Map<StableDocumentIdentifier, { priority: ManagedRequestPriority; promise: Promise<unknown> }>;\n\n constructor(options?: GenericCreateArgs) {\n Object.assign(this, options);\n this._pending = new Map();\n this._deduped = new Map();\n }\n\n /**\n * Register a handler to use for primary cache intercept.\n *\n * Only one such handler may exist. If using the same\n * RequestManager as the Store instance the Store\n * registers itself as a Cache handler.\n *\n * @public\n * @param {Handler[]} cacheHandler\n * @return {ThisType}\n */\n useCache(cacheHandler: CacheHandler & { [IS_CACHE_HANDLER]?: true }): this {\n if (DEBUG) {\n if (this._hasCacheHandler) {\n throw new Error(`\\`RequestManager.useCache(<handler>)\\` May only be invoked once.`);\n }\n if (Object.isFrozen(this.#handlers)) {\n throw new Error(\n `\\`RequestManager.useCache(<handler>)\\` May only be invoked prior to any request having been made.`\n );\n }\n this._hasCacheHandler = true;\n }\n cacheHandler[IS_CACHE_HANDLER] = true;\n this.#handlers.unshift(cacheHandler as Handler);\n return this;\n }\n\n /**\n * Register handler(s) to use when a request is issued.\n *\n * Handlers will be invoked in the order they are registered.\n * Each Handler is given the opportunity to handle the request,\n * curry the request, or pass along a modified request.\n *\n * @public\n * @param {Handler[]} newHandlers\n * @return {ThisType}\n */\n use(newHandlers: Handler[]): this {\n const handlers = this.#handlers;\n if (DEBUG) {\n if (Object.isFrozen(handlers)) {\n throw new Error(`Cannot add a Handler to a RequestManager after a request has been made`);\n }\n if (!Array.isArray(newHandlers)) {\n throw new Error(\n `\\`RequestManager.use(<Handler[]>)\\` expects an array of handlers, but was called with \\`${typeof newHandlers}\\``\n );\n }\n newHandlers.forEach((handler, index) => {\n if (!handler || typeof handler !== 'object' || typeof handler.request !== 'function') {\n throw new Error(\n `\\`RequestManager.use(<Handler[]>)\\` expected to receive an array of handler objects with request methods, by the handler at index ${index} does not conform.`\n );\n }\n });\n }\n handlers.push(...newHandlers);\n return this;\n }\n\n /**\n * Issue a Request.\n *\n * Returns a Future that fulfills with a StructuredDocument\n *\n * @public\n * @param {RequestInfo} request\n * @return {Future}\n */\n request<RT, T = unknown>(request: RequestInfo<RT, T>): Future<RT> {\n const handlers = this.#handlers;\n if (DEBUG) {\n if (!Object.isFrozen(handlers)) {\n Object.freeze(handlers);\n }\n assertValidRequest(request, true);\n }\n\n const controller = request.controller || new AbortController();\n if (request.controller) {\n delete request.controller;\n }\n\n const requestId = peekUniversalTransient<number>('REQ_ID') ?? 0;\n setUniversalTransient('REQ_ID', requestId + 1);\n\n const context = {\n controller,\n response: null,\n stream: null,\n hasRequestedStream: false,\n id: requestId,\n identifier: null,\n };\n const promise = executeNextHandler<RT>(handlers, request, 0, context);\n\n // the cache handler will set the result of the request synchronously\n // if it is able to fulfill the request from the cache\n const cacheResult = getRequestResult(requestId);\n\n if (TESTING) {\n if (!request.disableTestWaiter) {\n const { waitForPromise } = importSync('@ember/test-waiters') as {\n waitForPromise: <PT>(promise: Promise<PT>) => Promise<PT>;\n };\n const newPromise = waitForPromise(promise);\n const finalPromise = upgradePromise(\n newPromise.then(\n (result) => {\n setPromiseResult(finalPromise, { isError: false, result });\n clearRequestResult(requestId);\n return result;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(finalPromise, { isError: true, result: error });\n clearRequestResult(requestId);\n throw error;\n }\n ),\n promise\n );\n\n if (cacheResult) {\n setPromiseResult(finalPromise, cacheResult);\n }\n\n return finalPromise;\n }\n }\n\n // const promise1 = store.request(myRequest);\n // const promise2 = store.request(myRequest);\n // promise1 === promise2; // false\n // either we need to make promise1 === promise2, or we need to make sure that\n // we need to have a way to key from request to result\n // such that we can lookup the result here and return it if it exists\n const finalPromise = upgradePromise(\n promise.then(\n (result) => {\n setPromiseResult(finalPromise, { isError: false, result });\n clearRequestResult(requestId);\n return result;\n },\n (error: StructuredErrorDocument) => {\n setPromiseResult(finalPromise, { isError: true, result: error });\n clearRequestResult(requestId);\n throw error;\n }\n ),\n promise\n );\n\n if (cacheResult) {\n setPromiseResult(finalPromise, cacheResult);\n }\n\n return finalPromise;\n }\n\n static create(options?: GenericCreateArgs) {\n return new this(options);\n }\n}\n","import { getRuntimeConfig, setLogging } from './types/runtime.ts';\n\nexport { Fetch } from './request/-private/fetch.ts';\nexport { RequestManager } from './request/-private/manager.ts';\n\n// @ts-expect-error adding to globalThis\nglobalThis.setWarpDriveLogging = setLogging;\n\n// @ts-expect-error adding to globalThis\nglobalThis.getWarpDriveRuntimeConfig = getRuntimeConfig;\n"],"names":["_fetch","fetch","args","FastBoot","require","Error","cloneResponse","response","overrides","props","cloneResponseProperties","Response","body","Object","assign","IS_MAYBE_MIRAGE","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","Boolean","window","server","pretender","toString","replace","MUTATION_OPS","Set","ERROR_STATUS_CODE_FOR","Map","Fetch","request","context","test","url","e","DOMException","name","statusText","status","isRequestError","isError","ok","op","isMutationOp","has","headers","set","Date","toUTCString","Headers","setResponse","text","reader","getReader","decoder","TextDecoder","isStreaming","hasRequestedStream","stream","TransformStream","writer","writable","getWriter","signal","addEventListener","abort","readable","cancel","setStream","done","value","read","ready","close","decode","write","encode","TextEncoder","errorPayload","JSON","parse","errors","Array","isArray","isDict","get","msg","method","type","error","AggregateError","code","replaceAll","content","v","RequestManager","constructor","options","_pending","_deduped","useCache","cacheHandler","_hasCacheHandler","isFrozen","IS_CACHE_HANDLER","unshift","use","newHandlers","handlers","forEach","handler","index","push","freeze","assertValidRequest","controller","AbortController","requestId","peekUniversalTransient","setUniversalTransient","id","identifier","promise","executeNextHandler","cacheResult","getRequestResult","TESTING","disableTestWaiter","waitForPromise","importSync","newPromise","finalPromise","upgradePromise","then","result","setPromiseResult","clearRequestResult","create","globalThis","setWarpDriveLogging","setLogging","getWarpDriveRuntimeConfig","getRuntimeConfig"],"mappings":"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D,MAAAA,KAAK,CAACrD,IAAI,GAAGqD,KAAK,CAACpD,UAAU,CAACuD,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO;MAC3DH,KAAK,CAACI,OAAO,GAAGf,YAAY;AAC5B,MAAA,MAAMW,KAAK;AACb,KAAC,MAAM;AACL,MAAA,OAAOV,IAAI,CAACC,KAAK,CAAC7B,IAAI,CAAC;AACzB;AACF;AACF;AAEA,SAASiC,MAAMA,CAACU,CAAU,EAAgC;AACxD,EAAA,OAAOA,CAAC,KAAK,IAAI,IAAI,OAAOA,CAAC,KAAK,QAAQ;AAC5C;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,CAAC;EAC1B,SAAS,GAAc,EAAE;;AAEzB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EAIEC,WAAWA,CAACC,OAA2B,EAAE;AACvCtF,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEqF,OAAO,CAAC;AAC5B,IAAA,IAAI,CAACC,QAAQ,GAAG,IAAItE,GAAG,EAAE;AACzB,IAAA,IAAI,CAACuE,QAAQ,GAAG,IAAIvE,GAAG,EAAE;AAC3B;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEwE,QAAQA,CAACC,YAA0D,EAAQ;IACzE,IAAAvF,cAAA,CAAAC,eAAA,EAAA,CAAAC,SAAA,CAAAC,GAAA,CAAAC,KAAA,CAAW,EAAA;MACT,IAAI,IAAI,CAACoF,gBAAgB,EAAE;AACzB,QAAA,MAAM,IAA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"}
|
package/dist/request.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { c as createDeferred, g as getPromiseResult, s as setPromiseResult } from "./context-
|
|
1
|
+
export { c as createDeferred, g as getPromiseResult, s as setPromiseResult } from "./context-DE5sFezZ.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/types/-private.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { macroCondition, getGlobalConfig } from '@embroider/macros';
|
|
2
2
|
const name = "@warp-drive/core";
|
|
3
|
-
const version = "5.6.0-alpha.
|
|
3
|
+
const version = "5.6.0-alpha.5";
|
|
4
4
|
|
|
5
5
|
// in testing mode, we utilize globals to ensure only one copy exists of
|
|
6
6
|
// these maps, due to bugs in ember-auto-import
|
|
@@ -26,13 +26,13 @@ if (macroCondition(getGlobalConfig().WarpDrive.env.TESTING)) {
|
|
|
26
26
|
} else {
|
|
27
27
|
// eslint-disable-next-line no-console
|
|
28
28
|
console.warn(`
|
|
29
|
-
Multiple copies of
|
|
29
|
+
Multiple copies of EmberData have been detected. This may be due to a bug in ember-auto-import
|
|
30
30
|
in which test assets get their own copy of some v2-addons. This can cause the application to
|
|
31
31
|
malfunction as each copy will maintain its own separate state.`);
|
|
32
32
|
}
|
|
33
33
|
} else {
|
|
34
34
|
if (GlobalSink.__warpDrive_hasOtherCopy) {
|
|
35
|
-
throw new Error('Multiple copies of
|
|
35
|
+
throw new Error('Multiple copies of EmberData detected, the application will malfunction.');
|
|
36
36
|
}
|
|
37
37
|
GlobalSink.__warpDrive_hasOtherCopy = true;
|
|
38
38
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"-private.js","sources":["../../src/types/-private.ts"],"sourcesContent":["// in testing mode, we utilize globals to ensure only one copy exists of\n// these maps, due to bugs in ember-auto-import\nimport { DEBUG, TESTING } from '@warp-drive/build-config/env';\n\nimport { name, version } from '../../package.json';\n\ntype UniversalTransientKey =\n // @ember-data/request\n 'REQ_ID';\n\ntype UniversalKey =\n | `(transient) ${UniversalTransientKey}`\n // @ember-data/request\n | 'RequestMap'\n | 'PromiseCache'\n | 'RequestCache'\n // @warp-drive/core-types/request\n | 'SkipCache'\n | 'EnableHydration'\n // @warp-drive/core-types/runtime\n | 'WarpDriveRuntimeConfig';\n\ntype TransientKey =\n // @ember-data/graph\n | 'transactionRef'\n // @ember-data/store\n | 'configuredGenerationMethod'\n | 'configuredUpdateMethod'\n | 'configuredForgetMethod'\n | 'configuredResetMethod'\n | 'configuredKeyInfoMethod'\n | 'signalHooks';\n\ntype GlobalKey =\n | `(transient) ${TransientKey}`\n // @ember-data/adapter\n | 'AdapterError'\n | 'InvalidError'\n | 'TimeoutError'\n | 'AbortError'\n | 'UnauthorizedError'\n | 'ForbiddenError'\n | 'NotFoundError'\n | 'ConflictError'\n | 'ServerError'\n // @ember-data/store/reactivity\n | '#{}'\n | '#[]'\n | 'Signals'\n // @ember-data/store LegacySupport\n | 'AvailableShims'\n // @ember-data/store RecordArrayManager\n | 'FAKE_ARR'\n // @ember-data/store IdentifierArray\n | '#source'\n | '#update'\n | '#notify'\n | 'IS_COLLECTION'\n // @ember-data/store RequestCache\n | 'Touching'\n | 'RequestPromise'\n // @ember-data/legacy-compat FetchManager\n | 'SaveOp'\n // @ember-data/model\n | 'LEGACY_SUPPORT'\n | 'LegacySupport'\n // @ember-data/graph\n | 'Graphs'\n // @ember-data/request\n | 'IS_FROZEN'\n | 'IS_CACHE_HANDLER'\n // @ember-data/request-utils\n | 'CONFIG'\n // @ember-data/store IdentityCache\n | 'DEBUG_MAP'\n | 'IDENTIFIERS'\n | 'DOCUMENTS'\n // @ember-data/store InstanceCache\n | 'CacheForIdentifierCache'\n | 'RecordCache'\n | 'StoreMap'\n // @warp-drive/core-types/symbols\n | 'Store'\n | '$type'\n | 'TransformName'\n | 'RequestSignature'\n // @warp-drive/core-types/request\n | 'IS_FUTURE'\n | 'DOC'\n // @warp-drive/schema-record\n | 'ManagedArrayMap'\n | 'ManagedObjectMap'\n | 'Support'\n | 'SOURCE'\n | 'MUTATE'\n | 'Destroy'\n | 'Identifier'\n | 'Editable'\n | 'EmbeddedPath'\n | 'EmbeddedType'\n | 'Parent'\n | 'Checkout'\n | 'Legacy';\n\ntype ModuleScopedCaches = Record<GlobalKey, unknown>;\n\nconst GlobalRef = globalThis as unknown as Record<\n string,\n {\n __warpDrive_ModuleScopedCaches?: ModuleScopedCaches;\n __warpDrive_hasOtherCopy?: boolean;\n __version: string;\n }\n> & {\n __warpDrive_universalCache: Record<UniversalKey, unknown>;\n};\nconst UniversalCache = (GlobalRef.__warpDrive_universalCache =\n GlobalRef.__warpDrive_universalCache ?? ({} as Record<UniversalKey, unknown>));\n\n// in order to support mirror packages, we ensure that each\n// unique package name has its own global cache\nGlobalRef[name] = GlobalRef[name] ?? { __version: version };\nconst GlobalSink = GlobalRef[name];\n\nif (DEBUG) {\n if (GlobalSink.__version !== version) {\n throw new Error('Multiple versions of WarpDrive detected, the application will malfunction.');\n }\n}\n\nconst ModuleScopedCaches = GlobalSink.__warpDrive_ModuleScopedCaches ?? ({} as ModuleScopedCaches);\nif (TESTING) {\n if (!GlobalSink.__warpDrive_ModuleScopedCaches) {\n GlobalSink.__warpDrive_ModuleScopedCaches = ModuleScopedCaches;\n } else {\n // eslint-disable-next-line no-console\n console.warn(`\nMultiple copies of EmberData have been detected. This may be due to a bug in ember-auto-import\n in which test assets get their own copy of some v2-addons. This can cause the application to\n malfunction as each copy will maintain its own separate state.`);\n }\n} else {\n if (GlobalSink.__warpDrive_hasOtherCopy) {\n throw new Error('Multiple copies of EmberData detected, the application will malfunction.');\n }\n GlobalSink.__warpDrive_hasOtherCopy = true;\n}\n\ntype UniqueSymbol<T extends string> = `___(unique) Symbol(${T})`;\ntype UniqueSymbolOr<T, K extends string> = T extends symbol ? UniqueSymbol<K> : T;\n\nexport function getOrSetGlobal<T, K extends GlobalKey>(key: K, value: T): UniqueSymbolOr<T, K> {\n if (TESTING) {\n const existing = ModuleScopedCaches[key];\n if (existing === undefined) {\n return (ModuleScopedCaches[key] = value) as UniqueSymbolOr<T, K>;\n } else {\n return existing as UniqueSymbolOr<T, K>;\n }\n } else {\n return value as UniqueSymbolOr<T, K>;\n }\n}\n\nexport function peekTransient<T>(key: TransientKey): T | null {\n const globalKey: `(transient) ${TransientKey}` = `(transient) ${key}`;\n return (ModuleScopedCaches[globalKey] as T) ?? null;\n}\n\nexport function setTransient<T>(key: TransientKey, value: T): T {\n const globalKey: `(transient) ${TransientKey}` = `(transient) ${key}`;\n return (ModuleScopedCaches[globalKey] = value);\n}\n\nexport function getOrSetUniversal<T, K extends UniversalKey>(key: K, value: T): UniqueSymbolOr<T, K> {\n if (TESTING) {\n const existing = UniversalCache[key];\n if (existing === undefined) {\n return (UniversalCache[key] = value) as UniqueSymbolOr<T, K>;\n } else {\n return existing as UniqueSymbolOr<T, K>;\n }\n } else {\n return value as UniqueSymbolOr<T, K>;\n }\n}\n\nexport function peekUniversalTransient<T>(key: UniversalTransientKey): T | null {\n const globalKey: `(transient) ${UniversalTransientKey}` = `(transient) ${key}`;\n return (UniversalCache[globalKey] as T) ?? null;\n}\n\nexport function setUniversalTransient<T>(key: UniversalTransientKey, value: T): T {\n const globalKey: `(transient) ${UniversalTransientKey}` = `(transient) ${key}`;\n return (UniversalCache[globalKey] = value);\n}\n"],"names":["GlobalRef","globalThis","UniversalCache","__warpDrive_universalCache","name","__version","version","GlobalSink","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","Error","ModuleScopedCaches","__warpDrive_ModuleScopedCaches","TESTING","console","warn","__warpDrive_hasOtherCopy","getOrSetGlobal","key","value","existing","undefined","peekTransient","globalKey","setTransient","getOrSetUniversal","peekUniversalTransient","setUniversalTransient"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aliases.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutations.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relationship.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.js","sources":["../../src/types/identifier.ts"],"sourcesContent":["import { DEBUG } from '@warp-drive/build-config/env';\n\n// provided for additional debuggability\nexport const DEBUG_CLIENT_ORIGINATED: unique symbol = Symbol('record-originated-on-client');\nexport const DEBUG_IDENTIFIER_BUCKET: unique symbol = Symbol('identifier-bucket');\nexport const DEBUG_STALE_CACHE_OWNER: unique symbol = Symbol('warpDriveStaleCache');\n\nfunction ProdSymbol<T extends string>(str: T, debugStr: string): T {\n return DEBUG ? (Symbol(debugStr) as unknown as T) : str;\n}\n\n// also present in production\nexport const CACHE_OWNER: '__$co' = ProdSymbol('__$co', 'CACHE_OWNER');\n\nexport type IdentifierBucket = 'record' | 'document';\n\nexport interface Identifier {\n lid: string;\n clientId?: string;\n}\n\nexport interface ExistingRecordIdentifier<T extends string = string> extends Identifier {\n id: string;\n type: T;\n}\n\nexport interface NewRecordIdentifier<T extends string = string> extends Identifier {\n id: string | null;\n type: T;\n}\n\nexport type StableDocumentIdentifier = {\n lid: string;\n};\nexport type RequestKey = StableDocumentIdentifier;\n\n/**\n * An Identifier specific to a record which may or may not\n * be present in the cache.\n *\n * The absence of an `id` DOES NOT indicate that this\n * Identifier is for a new client-created record as it\n * may also indicate that it was generated for a secondary\n * index and the primary `id` index is not yet known.\n *\n * @internal\n */\nexport type RecordIdentifier<T extends string = string> = ExistingRecordIdentifier<T> | NewRecordIdentifier<T>;\n\n/**\n * Used when an Identifier is known to be the stable version\n *\n * @internal\n */\nexport interface StableIdentifier extends Identifier {\n [DEBUG_IDENTIFIER_BUCKET]?: string;\n}\n\n/**\n * Used when a StableRecordIdentifier was not created locally as part\n * of a call to store.createRecord\n *\n * Distinguishing between this Identifier and one for a client created\n * record that was created with an ID is generally speaking not possible\n * at runtime, so anything with an ID typically narrows to this.\n *\n * @internal\n */\nexport interface StableExistingRecordIdentifier<T extends string = string> extends StableIdentifier {\n id: string;\n type: T;\n [DEBUG_CLIENT_ORIGINATED]?: boolean;\n [CACHE_OWNER]: number | undefined;\n [DEBUG_STALE_CACHE_OWNER]?: number | undefined;\n}\n\n/**\n * Used when a StableRecordIdentifier was created locally\n * (by a call to store.createRecord).\n *\n * It is possible in rare circumstances to have a StableRecordIdentifier\n * that is not for a new record but does not have an ID. This would\n * happen if a user intentionally created one for use with a secondary-index\n * prior to the record having been fully loaded.\n *\n * @internal\n */\nexport interface StableNewRecordIdentifier<T extends string = string> extends StableIdentifier {\n id: string | null;\n type: T;\n [DEBUG_CLIENT_ORIGINATED]?: boolean;\n [CACHE_OWNER]: number | undefined;\n [DEBUG_STALE_CACHE_OWNER]?: number | undefined;\n}\n\n/**\n * A referentially stable object with a unique string (lid) that can be used\n * as a reference to data in the cache.\n *\n * Every record instance has a unique identifier, and identifiers may refer\n * to data that has never been loaded (for instance, in an async relationship).\n *\n * @class StableRecordIdentifier\n * @public\n */\n\n/**\n * A string representing a unique identity.\n *\n * @property lid\n * @type {String}\n * @public\n */\n/**\n * the primary resource `type` or `modelName` this identity belongs to.\n *\n * @property type\n * @type {String}\n * @public\n */\n/**\n * the primary id for the record this identity belongs to. `null`\n * if not yet assigned an id.\n *\n * @property id\n * @type {String | null}\n * @public\n */\nexport type StableRecordIdentifier<T extends string = string> =\n | StableExistingRecordIdentifier<T>\n | StableNewRecordIdentifier<T>;\n\nexport type ResourceKey<T extends string = string> = StableRecordIdentifier<T>;\n"],"names":["DEBUG_CLIENT_ORIGINATED","Symbol","DEBUG_IDENTIFIER_BUCKET","DEBUG_STALE_CACHE_OWNER","ProdSymbol","str","debugStr","macroCondition","getGlobalConfig","WarpDrive","env","DEBUG","CACHE_OWNER"],"mappings":";;AAEA;MACaA,uBAAsC,GAAGC,MAAM,CAAC,6BAA6B;MAC7EC,uBAAsC,GAAGD,MAAM,CAAC,mBAAmB;MACnEE,uBAAsC,GAAGF,MAAM,CAAC,qBAAqB;AAElF,SAASG,UAAUA,CAAmBC,GAAM,EAAEC,QAAgB,EAAK;AACjE,EAAA,OAAOC,cAAA,CAAAC,eAAA,EAAA,CAAAC,SAAA,CAAAC,GAAA,CAAAC,KAAA,IAASV,MAAM,CAACK,QAAQ,CAAC,GAAoBD,GAAG;AACzD;;AAEA;AACO,MAAMO,WAAoB,GAAGR,UAAU,CAAC,OAAO,EAAE,aAAa;;AAwBrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raw.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/types/record.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sources":["../../src/types/record.ts"],"sourcesContent":["import type { Type } from './symbols.ts';\n\n/**\n * Records may be anything, They don't even\n * have to be objects.\n *\n * Whatever they are, if they have a Type\n * property, that property will be used by EmberData\n * and WarpDrive to provide better type safety and\n * intellisense.\n *\n * @class TypedRecordInstance\n */\nexport interface TypedRecordInstance {\n /**\n * The type of the resource.\n *\n * This is an optional feature that can be used by\n * record implementations to provide a typescript\n * hint for the type of the resource.\n *\n * When used, EmberData and WarpDrive APIs can\n * take advantage of this to provide better type\n * safety and intellisense.\n *\n * @property [Type]\n * @type {Type}\n * @type {String}\n */\n [Type]: string;\n}\n\n/**\n * A type utility that extracts the Type if available,\n * otherwise it returns never.\n *\n */\nexport type TypeFromInstance<T> = T extends TypedRecordInstance ? T[typeof Type] : never;\n\n/**\n * A type utility that extracts the Type if available,\n * otherwise it returns string\n *\n */\nexport type TypeFromInstanceOrString<T> = T extends TypedRecordInstance ? T[typeof Type] : string;\n\ntype IsUniqueSymbol<T> = T extends `___(unique) Symbol(${string})` ? true : false;\ntype Unpacked<T> = T extends (infer U)[] ? U : T;\ntype NONE = { __NONE: never };\n\ntype __InternalExtract<\n MAX_DEPTH extends _DEPTHCOUNT,\n T extends TypedRecordInstance,\n V extends TypedRecordInstance,\n IncludePrefix extends boolean,\n Ignore,\n Pre extends string,\n DEPTH extends _DEPTHCOUNT,\n> =\n // if we extend T, we return the leaf value\n V extends T\n ? IncludePrefix extends false\n ? V[typeof Type]\n : Pre\n : // else if we are in Ignore we add the lead and exit\n V extends Ignore\n ? IncludePrefix extends false\n ? V[typeof Type]\n : Pre\n : // else if we are at max depth, we return never\n IS_MAX_DEPTH<DEPTH, MAX_DEPTH> extends true\n ? Pre\n : // else add T to Ignore and recurse\n ExtractUnion<MAX_DEPTH, V, IncludePrefix, Ignore | T, Pre, INC_DEPTH<DEPTH>>;\n\ntype __ExtractIfRecord<\n MAX_DEPTH extends _DEPTHCOUNT,\n T extends TypedRecordInstance,\n V,\n IncludePrefix extends boolean,\n Ignore,\n Pre extends string,\n DEPTH extends _DEPTHCOUNT,\n> = V extends TypedRecordInstance ? __InternalExtract<MAX_DEPTH, T, V, IncludePrefix, Ignore, Pre, DEPTH> : never;\n\ntype _ExtractUnion<\n MAX_DEPTH extends _DEPTHCOUNT,\n T extends TypedRecordInstance,\n IncludePrefix extends boolean,\n Ignore,\n Pre,\n DEPTH extends _DEPTHCOUNT,\n> = {\n // for each string key in the record,\n [K in keyof T]: IsUniqueSymbol<K> extends true\n ? never\n : K extends string\n ? // we recursively extract any values that resolve to a TypedRecordInstance\n __ExtractIfRecord<\n MAX_DEPTH,\n T,\n Unpacked<Awaited<T[K]>>,\n IncludePrefix,\n Ignore,\n Pre extends string ? `${Pre}.${K}` : K,\n DEPTH\n >\n : never;\n // then we return any value that is not 'never'\n}[keyof T];\n\n/**\n * A Utility that extracts either resource types or resource paths from a TypedRecordInstance.\n *\n * Its limitations are mostly around its intentional non-recursiveness. It presumes that APIs which\n * implement includes will not allow cyclical include paths, and will collapse includes by type.\n *\n * This follows closer to the JSON:API fields spec than to the includes spec in nature, but in\n * practice it is so impracticle for an API to allow z-algo include paths that this is probably\n * reasonable.\n *\n * We may need to revisit this in the future, opting to either make this restriction optional or\n * to allow for other strategies.\n *\n * There's a 90% chance this particular implementation belongs being in the JSON:API package instead\n * of core-types, but it's here for now.\n *\n */\ntype ExtractUnion<\n MAX_DEPTH extends _DEPTHCOUNT,\n T extends TypedRecordInstance,\n IncludePrefix extends boolean = false,\n Ignore = NONE,\n Pre = NONE,\n DEPTH extends _DEPTHCOUNT = 1,\n> = Exclude<\n IncludePrefix extends true\n ? // if we want to include prefix, we union with the prefix. Outer Exclude will filter any \"NONE\" types\n _ExtractUnion<MAX_DEPTH, T, IncludePrefix, Ignore, Pre, DEPTH> | Pre\n : // Else we just union the types.\n _ExtractUnion<MAX_DEPTH, T, IncludePrefix, Ignore, Pre, DEPTH> | T[typeof Type],\n NONE\n>;\n\ntype _DEPTHCOUNT = 1 | 2 | 3 | 4 | 5;\ntype INC_DEPTH<START extends _DEPTHCOUNT> = START extends 1 ? 2 : START extends 2 ? 3 : START extends 3 ? 4 : 5;\ntype IS_MAX_DEPTH<\n DEPTH extends _DEPTHCOUNT,\n MAX_DEPTH extends _DEPTHCOUNT = DEFAULT_MAX_DEPTH,\n> = DEPTH extends MAX_DEPTH ? true : false;\ntype DEFAULT_MAX_DEPTH = 3;\n/**\n * A utility that provides the union of all ResourceName for all potential\n * includes for the given TypedRecordInstance.\n *\n */\nexport type ExtractSuggestedCacheTypes<\n T extends TypedRecordInstance,\n MAX_DEPTH extends _DEPTHCOUNT = DEFAULT_MAX_DEPTH,\n> = ExtractUnion<MAX_DEPTH, T>; // ToPaths<ExpandIgnore<T, true>, false>;\n\n/**\n * A utility that provides the union type of all valid include paths for the given\n * TypedRecordInstance.\n *\n * Cyclical paths are filtered out.\n *\n */\nexport type Includes<T extends TypedRecordInstance, MAX_DEPTH extends _DEPTHCOUNT = DEFAULT_MAX_DEPTH> = ExtractUnion<\n MAX_DEPTH,\n T,\n true\n>;\n\nexport type OpaqueRecordInstance = unknown;\n\nexport type _StringSatisfiesIncludes<T extends string, SET extends string, FT extends string> = T extends SET\n ? FT\n : T extends `${infer U},${infer V}`\n ? U extends SET\n ? _StringSatisfiesIncludes<V, Exclude<SET, U>, FT>\n : never\n : never;\n\nexport type StringSatisfiesIncludes<T extends string, SET extends string> = _StringSatisfiesIncludes<T, SET, T>;\n\nexport function createIncludeValidator<T extends TypedRecordInstance>() {\n return function validateIncludes<U extends string>(includes: StringSatisfiesIncludes<U, Includes<T>>): U {\n return includes;\n };\n}\n"],"names":["createIncludeValidator","validateIncludes","includes"],"mappings":"AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;;AAoEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA;AACA;AACA;AACA;;AAIgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBO,SAASA,sBAAsBA,GAAkC;AACtE,EAAA,OAAO,SAASC,gBAAgBA,CAAmBC,QAAiD,EAAK;AACvG,IAAA,OAAOA,QAAQ;GAChB;AACH;;;;"}
|
package/dist/types/request.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getOrSetUniversal, getOrSetGlobal } from
|
|
1
|
+
import { getOrSetUniversal, getOrSetGlobal } from "./-private.js";
|
|
2
2
|
const SkipCache = getOrSetUniversal('SkipCache', Symbol.for('wd:skip-cache'));
|
|
3
3
|
const EnableHydration = getOrSetUniversal('EnableHydration', Symbol.for('wd:enable-hydration'));
|
|
4
4
|
const IS_FUTURE = getOrSetGlobal('IS_FUTURE', Symbol('IS_FUTURE'));
|
|
@@ -12,7 +12,7 @@ const STRUCTURED = getOrSetGlobal('DOC', Symbol('DOC'));
|
|
|
12
12
|
/**
|
|
13
13
|
* JavaScript's native Request class.
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* EmberData provides our own typings due to incompleteness in the native typings.
|
|
16
16
|
*
|
|
17
17
|
*/
|
|
18
18
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sources":["../../src/types/request.ts"],"sourcesContent":["import { getOrSetGlobal, getOrSetUniversal } from './-private.ts';\nimport type { StableRecordIdentifier } from './identifier.ts';\nimport type { QueryParamsSerializationOptions } from './params.ts';\nimport type { ExtractSuggestedCacheTypes, Includes, TypedRecordInstance, TypeFromInstanceOrString } from './record.ts';\nimport type { ResourceIdentifierObject } from './spec/json-api-raw.ts';\nimport type { RequestSignature } from './symbols.ts';\n\ntype Store = unknown;\n\nexport const SkipCache: '___(unique) Symbol(SkipCache)' = getOrSetUniversal('SkipCache', Symbol.for('wd:skip-cache'));\nexport const EnableHydration: '___(unique) Symbol(EnableHydration)' = getOrSetUniversal(\n 'EnableHydration',\n Symbol.for('wd:enable-hydration')\n);\nexport const IS_FUTURE: '___(unique) Symbol(IS_FUTURE)' = getOrSetGlobal('IS_FUTURE', Symbol('IS_FUTURE'));\nexport const STRUCTURED: '___(unique) Symbol(DOC)' = getOrSetGlobal('DOC', Symbol('DOC'));\n\nexport type HTTPMethod =\n | 'QUERY'\n | 'GET'\n | 'OPTIONS'\n | 'POST'\n | 'PUT'\n | 'PATCH'\n | 'DELETE'\n | 'HEAD'\n | 'CONNECT'\n | 'TRACE';\n\n/**\n * Use these options to adjust CacheHandler behavior for a request.\n *\n */\nexport type CacheOptions<T = unknown> = {\n /**\n * A key that uniquely identifies this request. If not present, the url wil be used\n * as the key for any GET request, while all other requests will not be cached.\n *\n */\n key?: string;\n /**\n * If true, the request will be made even if a cached response is present\n * and not expired.\n *\n */\n reload?: boolean;\n /**\n * If true, and a cached response is present and not expired, the request\n * will be made in the background and the cached response will be returned.\n *\n */\n backgroundReload?: boolean;\n /**\n * Useful for metadata around when to invalidate the cache. Typically used\n * by strategies that invalidate requests by resource type when a new resource\n * of that type has been created. See the CachePolicy implementation\n * provided by `@ember-data/request-utils` for an example.\n *\n * It is recommended to only use this for query/queryRecord requests where\n * new records created later would affect the results, though using it for\n * findRecord requests is also supported if desired where it may be useful\n * when a create may affect the result of a sideloaded relationship.\n *\n * Generally it is better to patch the cache directly for relationship updates\n * than to invalidate findRecord requests for one.\n *\n */\n types?: T extends TypedRecordInstance ? ExtractSuggestedCacheTypes<T>[] : string[];\n\n /**\n * If true, the request will never be handled by the cache-manager and thus\n * will never resolve from cache nor update the cache.\n *\n * Generally this is only used for legacy request that manage resource cache\n * updates in a non-standard way via the LegacyNetworkHandler.\n *\n */\n [SkipCache]?: boolean;\n};\nexport type FindRecordRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'GET';\n headers: Headers;\n cacheOptions?: CacheOptions<T>;\n op: 'findRecord';\n records: [ResourceIdentifierObject<TypeFromInstanceOrString<T>>];\n [RequestSignature]?: RT;\n};\n\nexport type QueryRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'GET';\n headers: Headers;\n cacheOptions?: CacheOptions<T>;\n op: 'query';\n [RequestSignature]?: RT;\n};\n\nexport type PostQueryRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'POST' | 'QUERY';\n headers: Headers;\n body?: string | BodyInit | FormData;\n cacheOptions: CacheOptions<T> & { key: string };\n op: 'query';\n [RequestSignature]?: RT;\n};\n\nexport type DeleteRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'DELETE';\n headers: Headers;\n op: 'deleteRecord';\n body?: string | BodyInit | FormData;\n data: {\n record: StableRecordIdentifier<TypeFromInstanceOrString<T>>;\n };\n records: [ResourceIdentifierObject<TypeFromInstanceOrString<T>>];\n [RequestSignature]?: RT;\n};\n\ntype ImmutableRequest<T> = Readonly<T> & {\n readonly headers: ImmutableHeaders;\n readonly records: [StableRecordIdentifier];\n};\n\nexport type UpdateRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'PATCH' | 'PUT';\n headers: Headers;\n op: 'updateRecord';\n body?: string | BodyInit | FormData;\n data: {\n record: StableRecordIdentifier<TypeFromInstanceOrString<T>>;\n };\n records: [ResourceIdentifierObject<TypeFromInstanceOrString<T>>];\n [RequestSignature]?: RT;\n};\n\nexport type CreateRequestOptions<RT = unknown, T = unknown> = {\n url: string;\n method: 'POST';\n headers: Headers;\n op: 'createRecord';\n body?: string | BodyInit | FormData;\n data: {\n record: StableRecordIdentifier<TypeFromInstanceOrString<T>>;\n };\n records: [ResourceIdentifierObject<TypeFromInstanceOrString<T>>];\n [RequestSignature]?: RT;\n};\n\nexport type ImmutableDeleteRequestOptions = ImmutableRequest<DeleteRequestOptions>;\nexport type ImmutableUpdateRequestOptions = ImmutableRequest<UpdateRequestOptions>;\nexport type ImmutableCreateRequestOptions = ImmutableRequest<CreateRequestOptions>;\n\nexport type RemotelyAccessibleIdentifier<T extends string = string> = {\n id: string;\n type: T;\n lid?: string;\n};\n\nexport type ConstrainedRequestOptions = {\n reload?: boolean;\n backgroundReload?: boolean;\n host?: string;\n namespace?: string;\n resourcePath?: string;\n urlParamsSettings?: QueryParamsSerializationOptions;\n};\n\nexport type FindRecordOptions<T = unknown> = ConstrainedRequestOptions & {\n include?: T extends TypedRecordInstance ? Includes<T>[] : string | string[];\n};\n\nexport interface StructuredDataDocument<T> {\n [STRUCTURED]?: true;\n /**\n * @see {@link ImmutableRequestInfo}\n */\n request: ImmutableRequestInfo;\n response: Response | ResponseInfo | null;\n content: T;\n}\nexport interface StructuredErrorDocument<T = unknown> extends Error {\n [STRUCTURED]?: true;\n request: ImmutableRequestInfo;\n response: Response | ResponseInfo | null;\n error: string | object;\n content?: T;\n}\nexport type StructuredDocument<T> = StructuredDataDocument<T> | StructuredErrorDocument<T>;\n\n/**\n * JavaScript's native Request class.\n *\n * EmberData provides our own typings due to incompleteness in the native typings.\n *\n */\ninterface Request {\n /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching.\n */\n cache?: RequestCache;\n /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL.\n */\n credentials?: RequestCredentials;\n /** Returns the kind of resource requested by request, e.g., \"document\" or \"script\".\n */\n destination?: RequestDestination;\n /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the \"Host\" header.\n */\n headers?: Headers;\n /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI]\n */\n integrity?: string;\n /** Returns a boolean indicating whether or not request can outlive the global in which it was created.\n */\n keepalive?: boolean;\n /** Returns request's HTTP method, which is \"GET\" by default.\n */\n method?: HTTPMethod;\n /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs.\n *\n * `no-cors` is not allowed for streaming request bodies.\n *\n */\n mode?: RequestMode;\n /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default.\n */\n redirect?: RequestRedirect;\n /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and \"about:client\" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made.\n */\n referrer?: string;\n /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer.\n */\n referrerPolicy?: ReferrerPolicy;\n /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler.\n */\n signal?: AbortSignal;\n /** Returns the URL of request as a string.\n */\n url?: string;\n /** Any body that you want to add to your request. Note that a GET or HEAD request may not have a body.\n */\n body?: BodyInit | null;\n\n /**\n * When sending a ReadableStream as the body of a request, 'half' must be\n * specified.\n *\n * [Half Duplex Further Reading](https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#half_duplex)\n *\n */\n duplex?: 'half';\n}\n\nexport interface ImmutableHeaders extends Headers {\n clone?(): Headers;\n toJSON(): [string, string][];\n}\n\n/**\n * Extends JavaScript's native {@link Request} object with additional\n * properties specific to the RequestManager's capabilities.\n *\n */\nexport interface RequestInfo<RT = unknown, T = unknown> extends Request {\n /**\n * If provided, used instead of the AbortController auto-configured for each request by the RequestManager\n *\n */\n controller?: AbortController;\n\n /**\n * @see {@link CacheOptions}\n */\n cacheOptions?: CacheOptions<T>;\n store?: Store;\n\n op?: string;\n\n /**\n * The identifiers of the primary resources involved in the request\n * (if any). This may be used by handlers to perform transactional\n * operations on the store.\n *\n */\n records?: StableRecordIdentifier[];\n\n disableTestWaiter?: boolean;\n /**\n * data that a handler should convert into\n * the query (GET) or body (POST).\n *\n * Note: It is recommended that builders set query params\n * and body directly in most scenarios.\n *\n */\n data?: Record<string, unknown>;\n /**\n * options specifically intended for handlers\n * to utilize to process the request\n *\n */\n options?: Record<string, unknown>;\n\n [RequestSignature]?: RT;\n\n [EnableHydration]?: boolean;\n}\n\n/**\n * Immutable version of {@link RequestInfo}. This is what is passed to handlers.\n *\n */\nexport type ImmutableRequestInfo<RT = unknown, T = unknown> = Readonly<Omit<RequestInfo<RT, T>, 'controller'>> & {\n readonly cacheOptions?: Readonly<CacheOptions<T>>;\n readonly headers?: ImmutableHeaders;\n readonly data?: Readonly<Record<string, unknown>>;\n readonly options?: Readonly<Record<string, unknown>>;\n\n /** Whether the request body has been read.\n */\n readonly bodyUsed?: boolean;\n};\n\nexport interface ResponseInfo {\n readonly headers: ImmutableHeaders; // to do, maybe not this?\n readonly ok: boolean;\n readonly redirected: boolean;\n readonly status: number;\n readonly statusText: string;\n readonly type: ResponseType;\n readonly url: string;\n}\n\nexport interface RequestContext {\n /**\n * @see {@link ImmutableRequestInfo}\n */\n request: ImmutableRequestInfo;\n id: number;\n\n setStream(stream: ReadableStream | Promise<ReadableStream | null>): void;\n setResponse(response: Response | ResponseInfo | null): void;\n}\n\nexport function withBrand<T>(obj: RequestInfo): RequestInfo<T> & { [RequestSignature]: T } {\n return obj as RequestInfo<T> & {\n [RequestSignature]: T;\n };\n}\n"],"names":["SkipCache","getOrSetUniversal","Symbol","for","EnableHydration","IS_FUTURE","getOrSetGlobal","STRUCTURED","withBrand","obj"],"mappings":";;AASaA,MAAAA,SAA0C,GAAGC,iBAAiB,CAAC,WAAW,EAAEC,MAAM,CAACC,GAAG,CAAC,eAAe,CAAC;AACvGC,MAAAA,eAAsD,GAAGH,iBAAiB,CACrF,iBAAiB,EACjBC,MAAM,CAACC,GAAG,CAAC,qBAAqB,CAClC;AACO,MAAME,SAA0C,GAAGC,cAAc,CAAC,WAAW,EAAEJ,MAAM,CAAC,WAAW,CAAC;AAClG,MAAMK,UAAqC,GAAGD,cAAc,CAAC,KAAK,EAAEJ,MAAM,CAAC,KAAK,CAAC;;AAcxF;AACA;AACA;AACA;;AAiKA;AACA;AACA;AACA;AACA;AACA;;AA+DA;AACA;AACA;AACA;AACA;;AA8CA;AACA;AACA;AACA;;AAiCO,SAASM,SAASA,CAAIC,GAAgB,EAA8C;AACzF,EAAA,OAAOA,GAAG;AAGZ;;;;"}
|
package/dist/types/runtime.js
CHANGED