@warp-drive/core-types 0.0.0-alpha.98 → 0.0.0-alpha.99

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/dist/-private.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { macroCondition, getGlobalConfig } from '@embroider/macros';
2
2
  const name = "@warp-drive/core-types";
3
- const version = "0.0.0-alpha.98";
3
+ const version = "0.0.0-alpha.99";
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
package/dist/record.js CHANGED
@@ -0,0 +1,74 @@
1
+ /*
2
+ * @module @warp-drive/core-types
3
+ */
4
+
5
+ /**
6
+ * Records may be anything, They don't even
7
+ * have to be objects.
8
+ *
9
+ * Whatever they are, if they have a Type
10
+ * property, that property will be used by EmberData
11
+ * and WarpDrive to provide better type safety and
12
+ * intellisense.
13
+ *
14
+ * @class TypedRecordInstance
15
+ * @typedoc
16
+ */
17
+
18
+ /**
19
+ * A type utility that extracts the Type if available,
20
+ * otherwise it returns never.
21
+ *
22
+ * @typedoc
23
+ */
24
+
25
+ /**
26
+ * A type utility that extracts the Type if available,
27
+ * otherwise it returns string
28
+ *
29
+ * @typedoc
30
+ */
31
+
32
+ /**
33
+ * A Utility that extracts either resource types or resource paths from a TypedRecordInstance.
34
+ *
35
+ * Its limitations are mostly around its intentional non-recursiveness. It presumes that APIs which
36
+ * implement includes will not allow cyclical include paths, and will collapse includes by type.
37
+ *
38
+ * This follows closer to the JSON:API fields spec than to the includes spec in nature, but in
39
+ * practice it is so impracticle for an API to allow z-algo include paths that this is probably
40
+ * reasonable.
41
+ *
42
+ * We may need to revisit this in the future, opting to either make this restriction optional or
43
+ * to allow for other strategies.
44
+ *
45
+ * There's a 90% chance this particular implementation belongs being in the JSON:API package instead
46
+ * of core-types, but it's here for now.
47
+ *
48
+ * @typedoc
49
+ */
50
+
51
+ /**
52
+ * A utility that provides the union of all ResourceName for all potential
53
+ * includes for the given TypedRecordInstance.
54
+ *
55
+ * @typedoc
56
+ */
57
+
58
+ // ToPaths<ExpandIgnore<T, true>, false>;
59
+
60
+ /**
61
+ * A utility that provides the union type of all valid include paths for the given
62
+ * TypedRecordInstance.
63
+ *
64
+ * Cyclical paths are filtered out.
65
+ *
66
+ * @typedoc
67
+ */
68
+
69
+ function createIncludeValidator() {
70
+ return function validateIncludes(includes) {
71
+ return includes;
72
+ };
73
+ }
74
+ export { createIncludeValidator };
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"record.js","sources":["../src/record.ts"],"sourcesContent":["/*\n * @module @warp-drive/core-types\n */\nimport type { Type } from './symbols';\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 * @typedoc\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} [Type]\n * @type {string}\n * @typedoc\n */\n [Type]: string;\n}\n\n/**\n * A type utility that extracts the Type if available,\n * otherwise it returns never.\n *\n * @typedoc\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 * @typedoc\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 * @typedoc\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 * @typedoc\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 * @typedoc\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":"AAAA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAoEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAwBA;AACA;AACA;AACA;AACA;AACA;;AAIgC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBO,SAASA,sBAAsBA,GAAkC;AACtE,EAAA,OAAO,SAASC,gBAAgBA,CAAmBC,QAAiD,EAAK;AACvG,IAAA,OAAOA,QAAQ,CAAA;GAChB,CAAA;AACH;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warp-drive/core-types",
3
- "version": "0.0.0-alpha.98",
3
+ "version": "0.0.0-alpha.99",
4
4
  "description": "Provides core logic, utils and types for WarpDrive and EmberData",
5
5
  "keywords": [
6
6
  "ember-addon"
@@ -35,25 +35,25 @@
35
35
  }
36
36
  },
37
37
  "dependencies": {
38
- "@embroider/macros": "^1.16.1",
39
- "@warp-drive/build-config": "0.0.0-alpha.49"
38
+ "@embroider/macros": "^1.16.6",
39
+ "@warp-drive/build-config": "0.0.0-alpha.50"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@babel/core": "^7.24.5",
43
43
  "@babel/plugin-transform-typescript": "^7.24.5",
44
44
  "@babel/preset-typescript": "^7.24.1",
45
- "@warp-drive/internal-config": "5.4.0-alpha.112",
45
+ "@warp-drive/internal-config": "5.4.0-alpha.113",
46
46
  "pnpm-sync-dependencies-meta-injected": "0.0.14",
47
47
  "typescript": "^5.4.5",
48
48
  "vite": "^5.2.11"
49
49
  },
50
50
  "engines": {
51
- "node": ">= 18.20.3"
51
+ "node": ">= 18.20.4"
52
52
  },
53
53
  "volta": {
54
54
  "extends": "../../package.json"
55
55
  },
56
- "packageManager": "pnpm@8.15.8",
56
+ "packageManager": "pnpm@8.15.9",
57
57
  "ember-addon": {
58
58
  "main": "addon-main.cjs",
59
59
  "type": "addon",
@@ -1 +1 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,EAAE,CAAC;AAC3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC1D,CAAC;AACF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IACrC,CAAC;IAAE,OAAO,CAAC,EAAE,CAAC,SAAS,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CACvF,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,YAAY,CACb,CAAC,GACF,eAAe,CAAC"}
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE9D,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,EAAE,CAAC;AAC3E,MAAM,MAAM,+BAA+B,GAAG;IAC5C,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IACrC,CAAC;IAAE,OAAO,CAAC,EAAE,CAAC,SAAS,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CACvF,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1B,YAAY,CACb,CAAC,GACF,eAAe,CAAC"}
@@ -96,6 +96,9 @@ declare module '@warp-drive/core-types/record' {
96
96
  */
97
97
  export type Includes<T extends TypedRecordInstance, MAX_DEPTH extends _DEPTHCOUNT = DEFAULT_MAX_DEPTH> = ExtractUnion<MAX_DEPTH, T, true>;
98
98
  export type OpaqueRecordInstance = unknown;
99
+ export type _StringSatisfiesIncludes<T extends string, SET extends string, FT extends string> = T extends SET ? FT : T extends `${infer U},${infer V}` ? U extends SET ? _StringSatisfiesIncludes<V, Exclude<SET, U>, FT> : never : never;
100
+ export type StringSatisfiesIncludes<T extends string, SET extends string> = _StringSatisfiesIncludes<T, SET, T>;
101
+ export function createIncludeValidator<T extends TypedRecordInstance>(): <U extends string>(includes: StringSatisfiesIncludes<U, Includes<T>>) => U;
99
102
  export {};
100
103
  }
101
104
  //# sourceMappingURL=record.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}