@fjell/core 4.4.72 → 4.4.74

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +6 -6
  2. package/dist/AItemService.d.ts +1 -1
  3. package/dist/Coordinate.d.ts +1 -6
  4. package/dist/event/emitter.d.ts +1 -2
  5. package/dist/event/events.d.ts +1 -2
  6. package/dist/event/matching.d.ts +1 -1
  7. package/dist/event/subscription.d.ts +1 -2
  8. package/dist/index.d.ts +7 -20
  9. package/dist/index.js +980 -1008
  10. package/dist/item/IFactory.d.ts +1 -2
  11. package/dist/item/IQFactory.d.ts +1 -1
  12. package/dist/item/IQUtils.d.ts +1 -2
  13. package/dist/item/IUtils.d.ts +1 -7
  14. package/dist/key/KUtils.d.ts +3 -3
  15. package/dist/operations/OperationContext.d.ts +1 -1
  16. package/dist/operations/index.d.ts +1 -0
  17. package/dist/operations/wrappers/createActionWrapper.d.ts +1 -3
  18. package/dist/operations/wrappers/createAllActionWrapper.d.ts +1 -3
  19. package/dist/operations/wrappers/createAllFacetWrapper.d.ts +1 -2
  20. package/dist/operations/wrappers/createAllWrapper.d.ts +1 -3
  21. package/dist/operations/wrappers/createCreateWrapper.d.ts +1 -3
  22. package/dist/operations/wrappers/createFacetWrapper.d.ts +1 -2
  23. package/dist/operations/wrappers/createFindOneWrapper.d.ts +1 -3
  24. package/dist/operations/wrappers/createFindWrapper.d.ts +1 -3
  25. package/dist/operations/wrappers/createGetWrapper.d.ts +1 -3
  26. package/dist/operations/wrappers/createOneWrapper.d.ts +1 -3
  27. package/dist/operations/wrappers/createRemoveWrapper.d.ts +1 -3
  28. package/dist/operations/wrappers/createUpdateWrapper.d.ts +1 -3
  29. package/dist/operations/wrappers/createUpsertWrapper.d.ts +1 -3
  30. package/dist/operations/wrappers/types.d.ts +1 -1
  31. package/package.json +4 -7
  32. package/dist/item/ItemQuery.d.ts +0 -62
  33. package/dist/items.d.ts +0 -74
  34. package/dist/keys.d.ts +0 -66
  35. package/dist/operations/Operations.d.ts +0 -530
  36. package/dist/operations/contained.d.ts +0 -65
  37. package/dist/operations/methods.d.ts +0 -204
  38. package/dist/operations/primary.d.ts +0 -57
  39. package/dist/operations/specialized.d.ts +0 -41
  40. package/dist/validation/ItemValidator.d.ts +0 -43
  41. package/dist/validation/KeyValidator.d.ts +0 -56
  42. package/dist/validation/LocationValidator.d.ts +0 -39
  43. package/dist/validation/QueryValidator.d.ts +0 -57
  44. package/dist/validation/index.d.ts +0 -17
  45. package/dist/validation/index.js +0 -592
  46. package/dist/validation/schema.d.ts +0 -23
  47. package/dist/validation/types.d.ts +0 -69
@@ -1,5 +1,4 @@
1
- import { Item } from '../items';
2
- import { ComKey, PriKey } from '../keys';
1
+ import { ComKey, Item, PriKey } from '@fjell/types';
3
2
  export declare class IFactory<V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
4
3
  private item;
5
4
  constructor(props?: Record<string, any>);
@@ -1,4 +1,4 @@
1
- import { CompoundType, Condition, ConditionOperator, EventQuery, ItemQuery, OrderDirection } from "./ItemQuery";
1
+ import { CompoundType, Condition, ConditionOperator, EventQuery, ItemQuery, OrderDirection } from "@fjell/types";
2
2
  export declare class IQFactory {
3
3
  private query;
4
4
  constructor(query?: ItemQuery);
@@ -1,5 +1,4 @@
1
- import { Item, Reference } from "../items";
2
- import { CompoundCondition, Condition, ItemQuery, QueryParams } from "./ItemQuery";
1
+ import { CompoundCondition, Condition, Item, ItemQuery, QueryParams, Reference } from "@fjell/types";
3
2
  /**
4
3
  * When we query or search, we're sending a GET request. This converts everything in ItemQuery into a flat
5
4
  * object that can be sent over a GET request.
@@ -1,10 +1,4 @@
1
- import { Item } from "../items";
2
- import { ComKey, PriKey } from "../keys";
3
- /**
4
- * @deprecated Use validatePK from @fjell/core/validation instead
5
- * Re-exported for backward compatibility
6
- */
7
- export { validatePK, validateKeys } from '../validation/ItemValidator';
1
+ import { ComKey, Item, PriKey } from "@fjell/types";
8
2
  export declare const isPriItem: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(item: Item<S, L1, L2, L3, L4, L5>) => item is Item<S> & {
9
3
  key: PriKey<S>;
10
4
  };
@@ -1,4 +1,6 @@
1
- import { ComKey, LocKey, LocKeyArray, PriKey } from "../keys";
1
+ import { ComKey, LocKey, LocKeyArray, PriKey } from "@fjell/types";
2
+ export declare const isComKey: (key: any) => key is ComKey<any, any, any, any, any, any>;
3
+ export declare const isPriKey: (key: any) => key is PriKey<any>;
2
4
  export declare const createNormalizedHashFunction: <T>() => (key: T) => string;
3
5
  export declare const isPriKeyEqualNormalized: <S extends string>(a: PriKey<S>, b: PriKey<S>) => boolean;
4
6
  export declare const isLocKeyEqualNormalized: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(a: LocKey<L1 | L2 | L3 | L4 | L5>, b: LocKey<L1 | L2 | L3 | L4 | L5>) => boolean;
@@ -9,8 +11,6 @@ export declare const isPriKeyEqual: <S extends string>(a: PriKey<S>, b: PriKey<S
9
11
  export declare const isLocKeyEqual: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(a: LocKey<L1 | L2 | L3 | L4 | L5>, b: LocKey<L1 | L2 | L3 | L4 | L5>) => boolean;
10
12
  export declare const isComKeyEqual: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(a: ComKey<S, L1, L2, L3, L4, L5>, b: ComKey<S, L1, L2, L3, L4, L5>) => boolean;
11
13
  export declare const isItemKey: (key: any) => boolean;
12
- export declare const isComKey: (key: any) => boolean;
13
- export declare const isPriKey: (key: any) => boolean;
14
14
  export declare const isLocKey: (key: any) => boolean;
15
15
  export declare const generateKeyArray: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S> | LocKeyArray<L1, L2, L3, L4, L5> | []) => Array<PriKey<S> | LocKey<L1 | L2 | L3 | L4 | L5>>;
16
16
  export declare const constructPriKey: <S extends string>(pk: string | number | PriKey<S>, kt: S) => PriKey<S>;
@@ -1,4 +1,4 @@
1
- import { ComKey, LocKeyArray, PriKey } from '../keys';
1
+ import { ComKey, LocKeyArray, PriKey } from '@fjell/types';
2
2
  import type { ErrorInfo } from '../errors/ActionError';
3
3
  export interface OperationContext {
4
4
  itemType: string;
@@ -1,2 +1,3 @@
1
1
  export * from './OperationContext';
2
2
  export * from './errorEnhancer';
3
+ export * from './wrappers';
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for action() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { ActionOperationMethod } from "../methods";
6
+ import { ActionOperationMethod, Coordinate, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped action() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for allAction() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { AllActionOperationMethod } from "../methods";
6
+ import { AllActionOperationMethod, Coordinate, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped allAction() method with automatic parameter validation.
@@ -3,8 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for allFacet() operation parameters.
5
5
  */
6
- import type { Coordinate } from "../../Coordinate";
7
- import type { AllFacetOperationMethod } from "../methods";
6
+ import { AllFacetOperationMethod, Coordinate } from "@fjell/types";
8
7
  import type { WrapperOptions } from "./types";
9
8
  /**
10
9
  * Creates a wrapped allFacet() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for all() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { AllMethod } from "../methods";
6
+ import { AllMethod, Coordinate, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped all() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for create() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { CreateMethod } from "../methods";
6
+ import { Coordinate, CreateMethod, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped create() method with automatic parameter validation.
@@ -3,8 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for facet() operation parameters.
5
5
  */
6
- import type { Coordinate } from "../../Coordinate";
7
- import type { FacetOperationMethod } from "../methods";
6
+ import { Coordinate, FacetOperationMethod } from "@fjell/types";
8
7
  import type { WrapperOptions } from "./types";
9
8
  /**
10
9
  * Creates a wrapped facet() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for findOne() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { FindOneMethod } from "../methods";
6
+ import { Coordinate, FindOneMethod, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped findOne() method with automatic parameter validation.
@@ -6,9 +6,7 @@
6
6
  * - If finder returns FindOperationResult<V>, uses it directly (opt-in)
7
7
  * - If finder returns V[], applies post-processing pagination
8
8
  */
9
- import type { Item } from "../../items";
10
- import type { Coordinate } from "../../Coordinate";
11
- import type { FindMethod } from "../methods";
9
+ import { Coordinate, FindMethod, Item } from "@fjell/types";
12
10
  import type { WrapperOptions } from "./types";
13
11
  /**
14
12
  * Creates a wrapped find() method with automatic parameter validation and hybrid pagination support.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for get() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { GetMethod } from "../methods";
6
+ import { Coordinate, GetMethod, Item } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped get() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for one() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { OneMethod } from "../methods";
6
+ import { Coordinate, Item, OneMethod } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped one() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for remove() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { RemoveMethod } from "../methods";
6
+ import { Coordinate, Item, RemoveMethod } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped remove() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for update() operation parameters.
5
5
  */
6
- import type { Item } from "../../items";
7
- import type { Coordinate } from "../../Coordinate";
8
- import type { UpdateMethod } from "../methods";
6
+ import { Coordinate, Item, UpdateMethod } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped update() method with automatic parameter validation.
@@ -3,9 +3,7 @@
3
3
  *
4
4
  * Provides automatic validation for upsert() operation parameters.
5
5
  */
6
- import type { Coordinate } from "../../Coordinate";
7
- import type { Item } from "../../items";
8
- import type { UpsertMethod } from "../methods";
6
+ import { Coordinate, Item, UpsertMethod } from "@fjell/types";
9
7
  import type { WrapperOptions } from "./types";
10
8
  /**
11
9
  * Creates a wrapped upsert() method with automatic parameter validation.
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * These wrappers provide automatic parameter validation for all Operations methods.
5
5
  */
6
- import type { Coordinate } from "../../Coordinate";
6
+ import { Coordinate } from "@fjell/types";
7
7
  /**
8
8
  * Options for configuring wrapper behavior
9
9
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fjell/core",
3
3
  "description": "Core Item and Key Framework for Fjell",
4
- "version": "4.4.72",
4
+ "version": "4.4.74",
5
5
  "keywords": [
6
6
  "core",
7
7
  "fjell"
@@ -15,11 +15,6 @@
15
15
  "import": "./dist/index.js",
16
16
  "default": "./dist/index.js"
17
17
  },
18
- "./validation": {
19
- "types": "./dist/validation/index.d.ts",
20
- "import": "./dist/validation/index.js",
21
- "default": "./dist/validation/index.js"
22
- },
23
18
  "./browser": {
24
19
  "types": "./dist/index.d.ts",
25
20
  "import": "./dist/index.js"
@@ -41,7 +36,9 @@
41
36
  "docs:test": "cd docs && npm run test"
42
37
  },
43
38
  "dependencies": {
44
- "@fjell/logging": "^4.4.65",
39
+ "@fjell/logging": "^4.4.66",
40
+ "@fjell/types": "4.4.5",
41
+ "@fjell/validation": "4.4.2",
45
42
  "deepmerge": "^4.3.1",
46
43
  "luxon": "^3.7.2"
47
44
  },
@@ -1,62 +0,0 @@
1
- import { References } from '../items';
2
- export type QueryParams = Record<string, string | number | boolean | Date>;
3
- /**
4
- * The operator for a condition. This is the same as the operators used in the Firestore query language.
5
- */
6
- export type ConditionOperator = '==' | '!=' | '>' | '>=' | '<' | '<=' | 'in' | 'not-in' | 'array-contains' | 'array-contains-any';
7
- /**
8
- * A single property condition is defined with a column, value, and operator.
9
- * This is a condition that is used in a query.
10
- */
11
- export type Condition = {
12
- column: string;
13
- value: string[] | string | number[] | number | boolean | Date | null;
14
- operator: ConditionOperator;
15
- };
16
- /**
17
- * When applying a compound condition, the CompoundType defines the type of compound condition.
18
- */
19
- export type CompoundType = 'AND' | 'OR';
20
- /**
21
- * When configuring a CompoundCondition this can contain a collection of conditions
22
- * that will be applied to the query. By default, this is an AND conditiion that is associated
23
- * with an array of Condition objects OR an array of CompoundCondition objects.
24
- *
25
- * For example, I could have { compoundType: 'AND', conditions: [{column: 'name', value: 'test', operator: '=='},
26
- * {column: 'age', value: 21, operator: '>='}]} which would filter the query to only include items
27
- * where the name is 'test' and the age is greater than or equal to 21.
28
- *
29
- * Or, I could have a { compoundType: 'OR', conditions: [{column: 'name', value: 'test', operator: '=='},
30
- * {column: 'age', value: 21, operator: '>='}]} which would filter the query to only include items
31
- * where the name is 'test' OR the age is greater than or equal to 21.
32
- *
33
- * I could also nest an OR within an AND, like this:
34
- * ['AND', [{column: 'name', value: 'test', operator: '=='},
35
- * { compoundType: 'OR', conditions: [{column: 'age', value: 21, operator: '<='},
36
- * {column: 'age', value: 52, operator: '>='}]}]] which would filter the query to only include items where the
37
- * name is 'test' and the age is less than or equal to 21 or greater than or equal to 52.
38
- */
39
- export type CompoundCondition = {
40
- compoundType: CompoundType;
41
- conditions: Array<Condition | CompoundCondition>;
42
- };
43
- export declare const isCondition: (condition: any) => condition is Condition;
44
- export type EventQuery = {
45
- start?: Date;
46
- end?: Date;
47
- by?: string;
48
- };
49
- export type OrderDirection = 'asc' | 'desc';
50
- export type OrderBy = {
51
- field: string;
52
- direction: OrderDirection;
53
- };
54
- export type ItemQuery = {
55
- refs?: References;
56
- compoundCondition?: CompoundCondition;
57
- limit?: number;
58
- offset?: number;
59
- aggs?: Record<string, ItemQuery>;
60
- events?: Record<string, EventQuery>;
61
- orderBy?: OrderBy[];
62
- };
package/dist/items.d.ts DELETED
@@ -1,74 +0,0 @@
1
- import { ComKey, PriKey } from './keys';
2
- export type RecursivePartial<T> = {
3
- [P in keyof T]?: T[P] extends (infer U)[] ? RecursivePartial<U>[] : T[P] extends object | undefined ? RecursivePartial<T[P]> : T[P];
4
- };
5
- export type Identified<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = {
6
- key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>;
7
- };
8
- /**
9
- * This is a generic item event, and it's designed to make sure we have the ability to define not just
10
- * the required fields, but also the optional fields.
11
- */
12
- export interface ItemEvent {
13
- at: Date | null;
14
- by?: ComKey<any, any | never, any | never, any | never, any | never, any | never> | PriKey<any>;
15
- agg?: Item<any, any, any, any, any, any>;
16
- }
17
- /**
18
- * This is a required item event, and it's here mainly to define that there are events that must be present.
19
- */
20
- export interface RequiredItemEvent extends ItemEvent {
21
- at: Date;
22
- }
23
- export type Evented = Record<string, ItemEvent>;
24
- export interface Timestamped extends Evented {
25
- created: RequiredItemEvent;
26
- updated: RequiredItemEvent;
27
- }
28
- export interface Deletable extends Partial<Evented> {
29
- deleted: ItemEvent;
30
- }
31
- export type ManagedEvents = Timestamped & Deletable;
32
- /**
33
- * Reference type that flattens item properties directly onto the reference object.
34
- * When populated, the reference contains the key plus all item properties directly,
35
- * allowing access via refs.name.property instead of refs.name.item.property.
36
- *
37
- * Structure:
38
- * - Unpopulated: { key: ComKey | PriKey }
39
- * - Populated: { key: ComKey | PriKey, ...itemProperties }
40
- */
41
- export type Reference<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = {
42
- key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>;
43
- } & Partial<Omit<Item<S, L1, L2, L3, L4, L5>, 'key'>>;
44
- export type ReferenceItem<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = Reference<S, L1, L2, L3, L4, L5>;
45
- export type References = Record<string, Reference<any, any, any, any, any, any>>;
46
- /**
47
- * Aggregation type that flattens item properties directly onto the aggregation object.
48
- * Similar to Reference, when populated, the aggregation contains the key plus all item properties.
49
- */
50
- export type Aggregation<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = {
51
- key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>;
52
- } & Partial<Omit<Item<S, L1, L2, L3, L4, L5>, 'key'>>;
53
- export interface Item<S extends string = never, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> extends Identified<S, L1, L2, L3, L4, L5> {
54
- events: ManagedEvents & Evented;
55
- aggs?: Record<string, Aggregation<any, any, any, any, any, any>[]>;
56
- refs?: Record<string, Reference<any, any, any, any, any, any>>;
57
- [key: string]: any;
58
- }
59
- /**
60
- * Interface for properties that can be added to items
61
- */
62
- export interface Propertied {
63
- name: string;
64
- value: number;
65
- }
66
- /**
67
- * Type for item properties without the key - equivalent to Partial<Item> without the key
68
- */
69
- export type ItemProperties<S extends string = never, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = Partial<Omit<Item<S, L1, L2, L3, L4, L5>, 'key'>>;
70
- /**
71
- * Type for item properties without the key - equivalent to Partial<Item> without the key
72
- * This is an alias for ItemProperties for backward compatibility
73
- */
74
- export type TypesProperties<S extends string = never, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = Partial<Omit<Item<S, L1, L2, L3, L4, L5>, 'key'>>;
package/dist/keys.d.ts DELETED
@@ -1,66 +0,0 @@
1
- export type UUID = `${string}-${string}-${string}-${string}-${string}`;
2
- export interface ComKey<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
3
- readonly kt: S;
4
- readonly pk: UUID | string | number;
5
- readonly loc: LocKeyArray<L1, L2, L3, L4, L5>;
6
- }
7
- export interface PriKey<S extends string> {
8
- readonly kt: S;
9
- readonly pk: UUID | string | number;
10
- }
11
- export interface LocKey<L extends string> {
12
- readonly kt: L;
13
- readonly lk: UUID | string | number;
14
- }
15
- export type LocKeyArray<L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = ([L5] extends [never] ? ([L4] extends [never] ? ([L3] extends [never] ? ([L2] extends [never] ? ([L1] extends [never] ? [
16
- ] | never : [
17
- LocKey<L1>
18
- ]) : [
19
- LocKey<L1>,
20
- LocKey<L2>
21
- ]) : [
22
- LocKey<L1>,
23
- LocKey<L2>,
24
- LocKey<L3>
25
- ]) : [
26
- LocKey<L1>,
27
- LocKey<L2>,
28
- LocKey<L3>,
29
- LocKey<L4>
30
- ]) : [
31
- LocKey<L1>,
32
- LocKey<L2>,
33
- LocKey<L3>,
34
- LocKey<L4>,
35
- LocKey<L5>
36
- ]);
37
- export type ItemTypeArray<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = ([L5] extends [never] ? ([L4] extends [never] ? ([L3] extends [never] ? ([L2] extends [never] ? ([L1] extends [never] ? [
38
- S
39
- ] : [
40
- S,
41
- L1
42
- ]) : [
43
- S,
44
- L1,
45
- L2
46
- ]) : [
47
- S,
48
- L1,
49
- L2,
50
- L3
51
- ]) : [
52
- S,
53
- L1,
54
- L2,
55
- L3,
56
- L4
57
- ]) : [
58
- S,
59
- L1,
60
- L2,
61
- L3,
62
- L4,
63
- L5
64
- ]);
65
- export type AllItemTypeArrays<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = readonly [S] | readonly [S, L1] | readonly [S, L1, L2] | readonly [S, L1, L2, L3] | readonly [S, L1, L2, L3, L4] | readonly [S, L1, L2, L3, L4, L5];
66
- export type AllLocTypeArrays<L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = readonly [] | readonly [L1] | readonly [L1, L2] | readonly [L1, L2, L3] | readonly [L1, L2, L3, L4] | readonly [L1, L2, L3, L4, L5];