@fjell/core 4.4.36 → 4.4.38

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.
@@ -0,0 +1,8 @@
1
+ import { AllItemTypeArrays } from "./keys";
2
+ export declare class AItemService<S extends string, L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
3
+ private pkType;
4
+ private parentService;
5
+ constructor(pkType: S, parentService?: AItemService<L1, L2, L3, L4, L5, never>);
6
+ getPkType: () => S;
7
+ getKeyTypes: () => AllItemTypeArrays<S, L1, L2, L3, L4, L5>;
8
+ }
@@ -0,0 +1,22 @@
1
+ interface DictionaryEntry<T, V> {
2
+ originalKey: T;
3
+ value: V;
4
+ }
5
+ export declare class Dictionary<T, V> {
6
+ protected map: {
7
+ [key: string]: DictionaryEntry<T, V>;
8
+ };
9
+ protected hashFunction: (key: T) => string;
10
+ constructor(map?: {
11
+ [key: string]: V;
12
+ }, hashFunction?: (key: T) => string);
13
+ set(key: T, item: V): void;
14
+ get(key: T): V | null;
15
+ private keysEqual;
16
+ delete(key: T): void;
17
+ keys(): T[];
18
+ values(): V[];
19
+ includesKey(key: T): boolean;
20
+ clone(): Dictionary<T, V>;
21
+ }
22
+ export {};
@@ -0,0 +1,11 @@
1
+ export * from "./dictionary";
2
+ export * from "./keys";
3
+ export * from "./items";
4
+ export { IFactory } from "./item/IFactory";
5
+ export { AItemService } from "./AItemService";
6
+ export * from './key/KUtils';
7
+ export * from './item/IFactory';
8
+ export * from './item/IQFactory';
9
+ export * from './item/IQUtils';
10
+ export * from './item/IUtils';
11
+ export * from './item/ItemQuery';
@@ -0,0 +1,16 @@
1
+ import { Item } from '../items';
2
+ import { ComKey, PriKey } from '../keys';
3
+ 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
+ private item;
5
+ constructor(props?: Record<string, any>);
6
+ addRef(i: Item<any, any | never, any | never, any | never, any | never, any | never>, name?: string): this;
7
+ static addRef<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>(i: V, name?: string): IFactory<V, S, L1, L2, L3, L4, L5>;
8
+ addDefaultEvents(): this;
9
+ addEvent(name: string, at: Date | null, by?: ComKey<any, any | never, any | never, any | never, any | never, any | never> | PriKey<any>): this;
10
+ static addEvent<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>(name: string, at: Date | null, by?: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>): IFactory<V, S, L1, L2, L3, L4, L5>;
11
+ addProp(name: string, value: string | number | boolean | Date): this;
12
+ static addProp<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>(name: string, value: string | number | boolean | Date): IFactory<V, S, L1, L2, L3, L4, L5>;
13
+ addProps(props: Record<string, any>): this;
14
+ static addProps<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>(props: Record<string, any>): IFactory<V, S, L1, L2, L3, L4, L5>;
15
+ toItem(): V;
16
+ }
@@ -0,0 +1,23 @@
1
+ import { CompoundType, Condition, ConditionOperator, EventQuery, ItemQuery, OrderDirection } from "./ItemQuery";
2
+ export declare class IQFactory {
3
+ private query;
4
+ constructor(query?: ItemQuery);
5
+ orderBy(field: string, direction?: OrderDirection): this;
6
+ agg(name: string, query: ItemQuery): this;
7
+ event(name: string, query: EventQuery): this;
8
+ conditions(conditions: Condition[], compoundType?: CompoundType): this;
9
+ limit(limit: number): this;
10
+ offset(offset: number): this;
11
+ pk(kt: string, pk: string, name?: string): this;
12
+ condition(column: string, value: string[] | string | number[] | number | boolean | Date, operator?: ConditionOperator): this;
13
+ static all(): IQFactory;
14
+ static orderBy(field: string, direction?: OrderDirection): IQFactory;
15
+ static agg(name: string, query: ItemQuery): IQFactory;
16
+ static event(name: string, query: EventQuery): IQFactory;
17
+ static limit(limit: number): IQFactory;
18
+ static offset(offset: number): IQFactory;
19
+ static pk(kt: string, pk: string, name?: string): IQFactory;
20
+ static condition(column: string, value: string[] | string | number[] | number | boolean | Date, operator?: ConditionOperator): IQFactory;
21
+ static conditions(conditions: Condition[], compoundType?: CompoundType): IQFactory;
22
+ toQuery(): ItemQuery;
23
+ }
@@ -0,0 +1,35 @@
1
+ import { Item } from "../items";
2
+ import { ComKey, PriKey } from "../keys";
3
+ import { CompoundCondition, Condition, ItemQuery, QueryParams } from "./ItemQuery";
4
+ /**
5
+ * When we query or search, we're sending a GET request. This converts everything in ItemQuery into a flat
6
+ * object that can be sent over a GET request.
7
+ *
8
+ * Note that there is some discussion about this. Evidently Elastic supports search with POST, but that also
9
+ * feels like a bit of a hack. It's not a RESTful way to do things. So we're sticking with GET for now.
10
+ *
11
+ * For reference, look at RFC 9110 "HTTP Semantics", June which clarified on top of and RFC 7231. It's possible
12
+ * but there are so many caveats and conditions in the standard, it's not worth it.
13
+ *
14
+ * Anticipating the next question - "isn't there a limit to the length of a URL?" The specification does not
15
+ * specify a limit, and there are limits in various browsers and servers - Apache is 4,000 chars, Chrome is 2M chars.
16
+ * Short answer is that if this query is being used to craft something that complex, it is probably a better idea
17
+ * to provide an action or a custom query endpoint on the server.
18
+ *
19
+ * @param query
20
+ * @returns QueryParams ready to be get over a GET request.
21
+ */
22
+ export declare const queryToParams: (query: ItemQuery) => QueryParams;
23
+ /**
24
+ * This method translates from a flat QueryParams object with stringify'd JSON back to a full ItemQuery.
25
+ *
26
+ * @param params Parameters sent over a GET request
27
+ * @returns A fully hydrated ItemQuery object.
28
+ */
29
+ export declare const paramsToQuery: (params: QueryParams) => ItemQuery;
30
+ export declare const isQueryMatch: <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>, query: ItemQuery) => boolean;
31
+ export declare const abbrevQuery: (query: ItemQuery | null | undefined) => string;
32
+ export declare const abbrevRef: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(key: string, ref: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => string;
33
+ export declare const abbrevAgg: (key: string, agg: ItemQuery) => string;
34
+ export declare const abbrevCompoundCondition: (compoundCondition: CompoundCondition) => string;
35
+ export declare const abbrevCondition: (condition: Condition | CompoundCondition) => string;
@@ -0,0 +1,10 @@
1
+ import { Item } from "../items";
2
+ import { AllItemTypeArrays, ComKey, PriKey } from "../keys";
3
+ export declare const validatePK: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(input: Item<S, L1, L2, L3, L4, L5> | Item<S, L1, L2, L3, L4, L5>[], pkType: S) => Item<S, L1, L2, L3, L4, L5> | Item<S, L1, L2, L3, L4, L5>[];
4
+ export declare const validateKeys: <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>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>) => Item<S, L1, L2, L3, L4, L5>;
5
+ 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> & {
6
+ key: PriKey<S>;
7
+ };
8
+ export declare const isComItem: <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, L1, L2, L3, L4, L5> & {
9
+ key: ComKey<S, L1, L2, L3, L4, L5>;
10
+ };
@@ -0,0 +1,62 @@
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;
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
+ };
@@ -0,0 +1,59 @@
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
+ export type References = Record<string, ComKey<string, string | never, string | never, string | never, string | never, string | never> | PriKey<string>>;
33
+ 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> = {
34
+ key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>;
35
+ item: Item<S, L1, L2, L3, L4, L5>;
36
+ };
37
+ export type ReferenceItems = Record<string, ReferenceItem<string, string | never, string | never, string | never, string | never, string | never>>;
38
+ 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> {
39
+ events: ManagedEvents & Evented;
40
+ aggs?: ReferenceItems;
41
+ refs?: References;
42
+ [key: string]: any;
43
+ }
44
+ /**
45
+ * Interface for properties that can be added to items
46
+ */
47
+ export interface Propertied {
48
+ name: string;
49
+ value: number;
50
+ }
51
+ /**
52
+ * Type for item properties without the key - equivalent to Partial<Item> without the key
53
+ */
54
+ 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'>>;
55
+ /**
56
+ * Type for item properties without the key - equivalent to Partial<Item> without the key
57
+ * This is an alias for ItemProperties for backward compatibility
58
+ */
59
+ 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'>>;
@@ -0,0 +1,40 @@
1
+ import { ComKey, LocKey, LocKeyArray, PriKey } from "../keys";
2
+ export declare const createNormalizedHashFunction: <T>() => (key: T) => string;
3
+ export declare const isPriKeyEqualNormalized: <S extends string>(a: PriKey<S>, b: PriKey<S>) => boolean;
4
+ 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;
5
+ export declare const isComKeyEqualNormalized: <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;
6
+ export declare const isItemKeyEqualNormalized: <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> | PriKey<S>, b: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => boolean;
7
+ export declare const isItemKeyEqual: <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> | PriKey<S>, b: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => boolean;
8
+ export declare const isPriKeyEqual: <S extends string>(a: PriKey<S>, b: PriKey<S>) => boolean;
9
+ 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
+ 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
+ export declare const isItemKey: (key: any) => boolean;
12
+ export declare const isComKey: (key: any) => boolean;
13
+ export declare const isPriKey: (key: any) => boolean;
14
+ export declare const isLocKey: (key: any) => boolean;
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
+ export declare const constructPriKey: <S extends string>(pk: string | number | PriKey<S>, kt: S) => PriKey<S>;
17
+ export declare const cPK: <S extends string>(pk: string | number | PriKey<S>, kt: S) => PriKey<S>;
18
+ export declare const toKeyTypeArray: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => string[];
19
+ export declare const abbrevIK: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => string;
20
+ export declare const abbrevLKA: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>> | null) => string;
21
+ export declare const primaryType: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(ik: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => string;
22
+ /**
23
+ *
24
+ * @param ik ItemKey to be used as a basis for a location
25
+ * @returns
26
+ */
27
+ export declare const itemKeyToLocKeyArray: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => LocKeyArray<S, L1, L2, L3, L4>;
28
+ export declare const ikToLKA: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(ik: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => LocKeyArray<S, L1, L2, L3, L4>;
29
+ /**
30
+ * Sometimes you need to take a location key array and convert it to the item key that points to the containing item.
31
+ * @param lka A location key array
32
+ * @returns An item key corresponding to the containing item this location refers to.
33
+ */
34
+ export declare const locKeyArrayToItemKey: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(lka: LocKeyArray<L1, L2, L3, L4, L5>) => PriKey<L1> | ComKey<L1, L2, L3, L4, L5>;
35
+ export declare const isValidPriKey: <S extends string>(key: PriKey<S>) => boolean;
36
+ export declare const isValidLocKey: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(key: LocKey<L1 | L2 | L3 | L4 | L5>) => boolean;
37
+ export declare const isValidLocKeyArray: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(keyArray: Array<LocKey<L1 | L2 | L3 | L4 | L5>>) => boolean;
38
+ export declare const isValidComKey: <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>) => boolean;
39
+ export declare const isValidItemKey: <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>) => boolean;
40
+ export declare const lkaToIK: <L1 extends string, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(lka: LocKeyArray<L1, L2, L3, L4, L5>) => PriKey<L1> | ComKey<L1, L2, L3, L4, L5>;
package/dist/keys.d.ts ADDED
@@ -0,0 +1,66 @@
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];
@@ -0,0 +1,2 @@
1
+ declare const LibLogger: import("@fjell/logging").Logger;
2
+ export default LibLogger;
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.36",
4
+ "version": "4.4.38",
5
5
  "keywords": [
6
6
  "core",
7
7
  "fjell"
@@ -25,7 +25,7 @@
25
25
  "scripts": {
26
26
  "lint": "eslint . --ext .ts --fix",
27
27
  "dev": "concurrently \"tsc --noEmit --watch\" \"node build.js --watch\"",
28
- "build": "npm run lint && tsc --noEmit && node build.js",
28
+ "build": "npm run lint && node build.js",
29
29
  "clean": "rm -rf dist",
30
30
  "test": "npm run lint && vitest run --coverage",
31
31
  "prepublishOnly": "npm run clean && npm run build",
@@ -35,14 +35,14 @@
35
35
  "docs:test": "cd docs && npm run test"
36
36
  },
37
37
  "dependencies": {
38
- "@fjell/logging": "^4.4.41",
38
+ "@fjell/logging": "^4.4.44",
39
39
  "deepmerge": "^4.3.1",
40
40
  "luxon": "^3.7.1"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@eslint/eslintrc": "^3.3.1",
44
44
  "@eslint/js": "^9.32.0",
45
- "@fjell/eslint-config": "^1.1.20",
45
+ "@fjell/eslint-config": "^1.1.21",
46
46
  "@swc/core": "^1.13.2",
47
47
  "@tsconfig/recommended": "^1.0.10",
48
48
  "@types/luxon": "^3.6.2",