@fjell/lib-sequelize 4.4.0 → 4.4.1

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 (101) hide show
  1. package/dist/cjs/AggregationBuilder.cjs +31 -0
  2. package/dist/cjs/Coordinate.cjs +37 -0
  3. package/dist/cjs/Definition.cjs +46 -0
  4. package/dist/cjs/EventCoordinator.cjs +35 -0
  5. package/dist/cjs/Instance.cjs +40 -0
  6. package/dist/cjs/KeyMaster.cjs +91 -0
  7. package/dist/cjs/Operations.cjs +29 -0
  8. package/dist/cjs/Options.cjs +39 -0
  9. package/dist/cjs/QueryBuilder.cjs +188 -0
  10. package/dist/cjs/ReferenceBuilder.cjs +34 -0
  11. package/dist/cjs/RowProcessor.cjs +41 -0
  12. package/dist/cjs/contained/Instance.cjs +21 -0
  13. package/dist/cjs/contained/index.cjs +10 -0
  14. package/dist/cjs/index.cjs +23 -0
  15. package/dist/cjs/logger.cjs +10 -0
  16. package/dist/cjs/ops/all.cjs +62 -0
  17. package/dist/cjs/ops/create.cjs +23 -0
  18. package/dist/cjs/ops/find.cjs +45 -0
  19. package/dist/cjs/ops/get.cjs +49 -0
  20. package/dist/cjs/ops/one.cjs +26 -0
  21. package/dist/cjs/ops/remove.cjs +72 -0
  22. package/dist/cjs/ops/update.cjs +59 -0
  23. package/dist/cjs/primary/Instance.cjs +31 -0
  24. package/dist/cjs/primary/index.cjs +10 -0
  25. package/dist/cjs/util/general.cjs +52 -0
  26. package/dist/es/AggregationBuilder.js +27 -0
  27. package/dist/{EventCoordinator.js → es/EventCoordinator.js} +2 -2
  28. package/dist/{Instance.js → es/Instance.js} +6 -5
  29. package/dist/{KeyMaster.js → es/KeyMaster.js} +30 -28
  30. package/dist/{Operations.js → es/Operations.js} +6 -6
  31. package/dist/{Options.js → es/Options.js} +8 -11
  32. package/dist/es/ReferenceBuilder.js +30 -0
  33. package/dist/es/RowProcessor.js +37 -0
  34. package/dist/{contained → es/contained}/Instance.js +6 -5
  35. package/dist/{index.js → es/index.js} +1 -1
  36. package/dist/{ops → es/ops}/all.js +7 -4
  37. package/dist/{ops → es/ops}/create.js +3 -2
  38. package/dist/{ops → es/ops}/find.js +16 -6
  39. package/dist/{ops → es/ops}/get.js +3 -3
  40. package/dist/{ops → es/ops}/one.js +2 -2
  41. package/dist/{ops → es/ops}/remove.js +6 -5
  42. package/dist/{ops → es/ops}/update.js +13 -15
  43. package/dist/{primary → es/primary}/Instance.js +6 -5
  44. package/dist/es/util/general.js +47 -0
  45. package/dist/index.cjs +810 -0
  46. package/dist/index.cjs.map +1 -0
  47. package/dist/types/AggregationBuilder.d.ts +4 -0
  48. package/dist/{Definition.d.ts → types/Definition.d.ts} +1 -1
  49. package/dist/{Instance.d.ts → types/Instance.d.ts} +1 -1
  50. package/dist/{KeyMaster.d.ts → types/KeyMaster.d.ts} +1 -2
  51. package/dist/{Operations.d.ts → types/Operations.d.ts} +2 -2
  52. package/dist/{Options.d.ts → types/Options.d.ts} +14 -3
  53. package/dist/types/ReferenceBuilder.d.ts +3 -0
  54. package/dist/{RowProcessor.d.ts → types/RowProcessor.d.ts} +3 -1
  55. package/dist/{contained → types/contained}/Instance.d.ts +2 -1
  56. package/dist/{ops → types/ops}/all.d.ts +2 -1
  57. package/dist/{ops → types/ops}/create.d.ts +2 -1
  58. package/dist/{ops → types/ops}/find.d.ts +2 -1
  59. package/dist/{ops → types/ops}/get.d.ts +2 -1
  60. package/dist/{ops → types/ops}/one.d.ts +2 -1
  61. package/dist/{ops → types/ops}/remove.d.ts +2 -1
  62. package/dist/{ops → types/ops}/update.d.ts +2 -1
  63. package/dist/{primary → types/primary}/Instance.d.ts +2 -1
  64. package/dist/types/util/general.d.ts +4 -0
  65. package/package.json +36 -31
  66. package/dist/RowProcessor.js +0 -18
  67. package/src/Coordinate.ts +0 -16
  68. package/src/Definition.ts +0 -49
  69. package/src/EventCoordinator.ts +0 -103
  70. package/src/Instance.ts +0 -44
  71. package/src/KeyMaster.ts +0 -90
  72. package/src/Operations.ts +0 -42
  73. package/src/Options.ts +0 -41
  74. package/src/QueryBuilder.ts +0 -208
  75. package/src/RowProcessor.ts +0 -23
  76. package/src/contained/Instance.ts +0 -44
  77. package/src/contained/index.ts +0 -1
  78. package/src/index.ts +0 -7
  79. package/src/logger.ts +0 -5
  80. package/src/ops/all.ts +0 -76
  81. package/src/ops/create.ts +0 -40
  82. package/src/ops/find.ts +0 -49
  83. package/src/ops/get.ts +0 -67
  84. package/src/ops/one.ts +0 -37
  85. package/src/ops/remove.ts +0 -81
  86. package/src/ops/update.ts +0 -78
  87. package/src/primary/Instance.ts +0 -40
  88. package/src/primary/index.ts +0 -1
  89. /package/dist/{Coordinate.js → es/Coordinate.js} +0 -0
  90. /package/dist/{Definition.js → es/Definition.js} +0 -0
  91. /package/dist/{QueryBuilder.js → es/QueryBuilder.js} +0 -0
  92. /package/dist/{contained → es/contained}/index.js +0 -0
  93. /package/dist/{logger.js → es/logger.js} +0 -0
  94. /package/dist/{primary → es/primary}/index.js +0 -0
  95. /package/dist/{Coordinate.d.ts → types/Coordinate.d.ts} +0 -0
  96. /package/dist/{EventCoordinator.d.ts → types/EventCoordinator.d.ts} +0 -0
  97. /package/dist/{QueryBuilder.d.ts → types/QueryBuilder.d.ts} +0 -0
  98. /package/dist/{contained → types/contained}/index.d.ts +0 -0
  99. /package/dist/{index.d.ts → types/index.d.ts} +0 -0
  100. /package/dist/{logger.d.ts → types/logger.d.ts} +0 -0
  101. /package/dist/{primary → types/primary}/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,4 @@
1
+ import { Item } from '@fjell/core';
2
+ import { AggregationDefinition } from './Options';
3
+ import * as Library from "@fjell/lib";
4
+ export declare const buildAggregation: (item: Item, aggregationDefinition: AggregationDefinition, registry: Library.Registry) => Promise<Item<never, never, never, never, never, never>>;
@@ -4,4 +4,4 @@ import * as Library from '@fjell/lib';
4
4
  export interface Definition<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> extends Library.Definition<V, S, L1, L2, L3, L4, L5> {
5
5
  options: Options<V, S, L1, L2, L3, L4, L5>;
6
6
  }
7
- export declare function createDefinition<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>(kta: ItemTypeArray<S, L1, L2, L3, L4, L5>, scopes: string[], libOptions?: Options<V, S, L1, L2, L3, L4, L5>): Definition<V, S, L1, L2, L3, L4, L5>;
7
+ export declare function createDefinition<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>(kta: ItemTypeArray<S, L1, L2, L3, L4, L5>, scopes: string[], libOptions?: Partial<Options<V, S, L1, L2, L3, L4, L5>>): Definition<V, S, L1, L2, L3, L4, L5>;
@@ -5,4 +5,4 @@ import * as Library from '@fjell/lib';
5
5
  export interface Instance<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> extends Library.Instance<V, S, L1, L2, L3, L4, L5> {
6
6
  models: ModelStatic<any>[];
7
7
  }
8
- export declare function createInstance<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>(keyTypes: ItemTypeArray<S, L1, L2, L3, L4, L5>, models: ModelStatic<any>[], libOptions?: Options<V, S, L1, L2, L3, L4, L5>, scopes?: string[]): Instance<V, S, L1, L2, L3, L4, L5>;
8
+ export declare function createInstance<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>(keyTypes: ItemTypeArray<S, L1, L2, L3, L4, L5>, models: ModelStatic<any>[], libOptions: Partial<Options<V, S, L1, L2, L3, L4, L5>> | undefined, scopes: string[] | undefined, registry: Library.Registry): Instance<V, S, L1, L2, L3, L4, L5>;
@@ -1,4 +1,3 @@
1
1
  import { AllItemTypeArrays, Item, ItemProperties } from '@fjell/core';
2
2
  export declare const removeKey: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(item: ItemProperties<S, L1, L2, L3, L4, L5>) => ItemProperties<S, L1, L2, L3, L4, L5>;
3
- export declare const populateKey: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(item: ItemProperties<S, L1, L2, L3, L4, L5>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>) => ItemProperties<S, L1, L2, L3, L4, L5>;
4
- export declare const addKey: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(item: Partial<Item<S, L1, L2, L3, L4, L5>>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>) => void;
3
+ export declare const addKey: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(item: Partial<Item<S, L1, L2, L3, L4, L5>>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>) => Item<S, L1, L2, L3, L4, L5>;
@@ -1,5 +1,5 @@
1
1
  import { Item } from '@fjell/core';
2
2
  import { ModelStatic } from 'sequelize';
3
- import { Definition } from '@fjell/lib';
3
+ import { Definition } from './Definition';
4
4
  import * as Library from "@fjell/lib";
5
- export declare const createOperations: <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>(models: Array<ModelStatic<any>>, definition: Definition<V, S, L1, L2, L3, L4, L5>) => Library.Operations<V, S, L1, L2, L3, L4, L5>;
5
+ export declare const createOperations: <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>(models: Array<ModelStatic<any>>, definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => Library.Operations<V, S, L1, L2, L3, L4, L5>;
@@ -1,7 +1,18 @@
1
1
  import { Item } from '@fjell/core';
2
2
  import * as Library from '@fjell/lib';
3
+ export interface AggregationDefinition {
4
+ kta: string[];
5
+ property: string;
6
+ cardinality: 'one' | 'many';
7
+ }
8
+ export interface ReferenceDefinition {
9
+ column: string;
10
+ kta: string[];
11
+ property: string;
12
+ }
3
13
  export interface Options<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> extends Library.Options<V, S, L1, L2, L3, L4, L5> {
4
- deleteOnRemove?: boolean;
14
+ deleteOnRemove: boolean;
15
+ references: ReferenceDefinition[];
16
+ aggregations: AggregationDefinition[];
5
17
  }
6
- export declare const defaultOptions: Options<any, any, any, any, any, any, any>;
7
- export declare const createOptions: <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>(libOptions?: Options<V, S, L1, L2, L3, L4, L5>) => Options<V, S, L1, L2, L3, L4, L5>;
18
+ export declare const createOptions: <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>(libOptions?: Partial<Options<V, S, L1, L2, L3, L4, L5>>) => Options<V, S, L1, L2, L3, L4, L5>;
@@ -0,0 +1,3 @@
1
+ import { ReferenceDefinition } from './Options';
2
+ import * as Library from "@fjell/lib";
3
+ export declare const buildReference: (item: any, referenceDefinition: ReferenceDefinition, registry: Library.Registry) => Promise<any>;
@@ -1,3 +1,5 @@
1
1
  import { AllItemTypeArrays, Item } from '@fjell/core';
2
2
  import { Model } from 'sequelize';
3
- export declare const processRow: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(row: Model<any, any>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>) => Item<S, L1, L2, L3, L4, L5>;
3
+ import { AggregationDefinition, ReferenceDefinition } from './Options';
4
+ import * as Library from "@fjell/lib";
5
+ export declare const processRow: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(row: Model<any, any>, keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, referenceDefinitions: ReferenceDefinition[], aggregationDefinitions: AggregationDefinition[], registry: Library.Registry) => Promise<Item<S, L1, L2, L3, L4, L5>>;
@@ -2,7 +2,8 @@ import { Instance as AbstractSequelizeInstance } from '../Instance';
2
2
  import { Item, ItemTypeArray } from '@fjell/core';
3
3
  import { Contained } from '@fjell/lib';
4
4
  import { ModelStatic } from 'sequelize';
5
+ import * as Library from "@fjell/lib";
5
6
  export interface Instance<V extends Item<S>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> extends AbstractSequelizeInstance<V, S, L1, L2, L3, L4, L5> {
6
7
  models: ModelStatic<any>[];
7
8
  }
8
- export declare function createInstance<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>(keyTypes: ItemTypeArray<S, L1, L2, L3, L4, L5>, models: ModelStatic<any>[], libOptions?: Contained.Options<V, S, L1, L2, L3, L4, L5>, scopes?: string[]): Instance<V, S, L1, L2, L3, L4, L5>;
9
+ export declare function createInstance<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>(keyTypes: ItemTypeArray<S, L1, L2, L3, L4, L5>, models: ModelStatic<any>[], libOptions: Contained.Options<V, S, L1, L2, L3, L4, L5> | undefined, scopes: string[] | undefined, registry: Library.Registry): Instance<V, S, L1, L2, L3, L4, L5>;
@@ -1,4 +1,5 @@
1
1
  import { Definition } from '../Definition';
2
2
  import { Item, ItemQuery, LocKeyArray } from '@fjell/core';
3
3
  import { ModelStatic } from 'sequelize';
4
- export declare const getAllOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (itemQuery: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | [] | undefined) => Promise<V[]>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getAllOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (itemQuery: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | [] | undefined) => Promise<V[]>;
@@ -1,7 +1,8 @@
1
1
  import { ComKey, Item, LocKeyArray, PriKey, TypesProperties } from '@fjell/core';
2
2
  import { ModelStatic } from 'sequelize';
3
3
  import { Definition } from '../Definition';
4
- export declare const getCreateOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (item: TypesProperties<V, S, L1, L2, L3, L4, L5>, options?: {
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getCreateOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (item: TypesProperties<V, S, L1, L2, L3, L4, L5>, options?: {
5
6
  key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>;
6
7
  locations?: never;
7
8
  } | {
@@ -1,4 +1,5 @@
1
1
  import { Item, LocKeyArray } from '@fjell/core';
2
2
  import { Definition } from '../Definition';
3
3
  import { ModelStatic } from 'sequelize';
4
- export declare const getFindOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (finder: string, finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<V[]>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getFindOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (finder: string, finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<V[]>;
@@ -1,4 +1,5 @@
1
1
  import { ComKey, Item, PriKey } from '@fjell/core';
2
2
  import { ModelStatic } from 'sequelize';
3
3
  import { Definition } from '../Definition';
4
- export declare const getGetOperation: <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>(models: Array<ModelStatic<any>>, definition: Definition<V, S, L1, L2, L3, L4, L5>) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => Promise<V>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getGetOperation: <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>(models: Array<ModelStatic<any>>, definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => Promise<V>;
@@ -1,4 +1,5 @@
1
1
  import { Item, ItemQuery, LocKeyArray } from '@fjell/core';
2
2
  import { Definition } from '../Definition';
3
3
  import { ModelStatic } from 'sequelize';
4
- export declare const getOneOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (itemQuery: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<V | null>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getOneOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (itemQuery: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<V | null>;
@@ -1,4 +1,5 @@
1
1
  import { ComKey, PriKey, Item } from '@fjell/core';
2
2
  import { Definition } from '../Definition';
3
3
  import { ModelStatic } from 'sequelize';
4
- export declare const getRemoveOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => Promise<V>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getRemoveOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>) => Promise<V>;
@@ -1,4 +1,5 @@
1
1
  import { ComKey, Item, PriKey, TypesProperties } from '@fjell/core';
2
2
  import { Definition } from '../Definition';
3
3
  import { ModelStatic } from 'sequelize';
4
- export declare const getUpdateOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>, item: TypesProperties<V, S, L1, L2, L3, L4, L5>) => Promise<V>;
4
+ import * as Library from "@fjell/lib";
5
+ export declare const getUpdateOperation: <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>(models: ModelStatic<any>[], definition: Definition<V, S, L1, L2, L3, L4, L5>, registry: Library.Registry) => (key: PriKey<S> | ComKey<S, L1, L2, L3, L4, L5>, item: TypesProperties<V, S, L1, L2, L3, L4, L5>) => Promise<V>;
@@ -2,7 +2,8 @@ import { Instance as AbstractSequelizeInstance } from '../Instance';
2
2
  import { Item } from '@fjell/core';
3
3
  import { ModelStatic } from 'sequelize';
4
4
  import { Options } from '../Options';
5
+ import * as Library from "@fjell/lib";
5
6
  export interface Instance<V extends Item<S>, S extends string> extends AbstractSequelizeInstance<V, S> {
6
7
  models: ModelStatic<any>[];
7
8
  }
8
- export declare function createInstance<V extends Item<S>, S extends string>(keyType: S, models: ModelStatic<any>[], libOptions?: Options<V, S>, scopes?: string[]): Instance<V, S>;
9
+ export declare function createInstance<V extends Item<S>, S extends string>(keyType: S, models: ModelStatic<any>[], libOptions: Partial<Options<V, S>> | undefined, scopes: string[] | undefined, registry: Library.Registry): Instance<V, S>;
@@ -0,0 +1,4 @@
1
+ export declare const clean: (obj: any) => {
2
+ [k: string]: unknown;
3
+ };
4
+ export declare const stringifyJSON: (obj: any, visited?: Set<any>) => string;
package/package.json CHANGED
@@ -1,57 +1,61 @@
1
1
  {
2
2
  "name": "@fjell/lib-sequelize",
3
- "version": "4.4.0",
3
+ "version": "4.4.1",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Sequelize Library for Fjell",
6
6
  "engines": {
7
7
  "node": ">=21"
8
8
  },
9
- "main": "dist/index.js",
9
+ "main": "./dist/cjs/index.cjs",
10
+ "module": "./dist/es/index.js",
11
+ "type": "module",
12
+ "types": "./dist/types/index.d.ts",
10
13
  "exports": {
11
14
  ".": {
12
- "types": "./dist/index.d.ts",
13
- "require": "./dist/index.js",
14
- "import": "./dist/index.js"
15
+ "types": "./dist/types/index.d.ts",
16
+ "import": "./dist/es/index.js",
17
+ "require": "./dist/cjs/index.cjs"
15
18
  }
16
19
  },
17
- "type": "module",
20
+ "files": [
21
+ "dist"
22
+ ],
18
23
  "dependencies": {
19
- "@fjell/core": "^4.4.2",
20
- "@fjell/lib": "^4.4.0",
21
- "@fjell/logging": "^4.4.2",
24
+ "@fjell/core": "^4.4.3",
25
+ "@fjell/lib": "^4.4.1",
26
+ "@fjell/logging": "^4.4.3",
22
27
  "dayjs": "^1.11.13",
23
28
  "deepmerge": "^4.3.1",
24
- "multer": "^1.4.5-lts.1",
25
- "sequelize": "^6.37.5",
29
+ "multer": "1.4.5-lts.2",
30
+ "sequelize": "^6.37.7",
26
31
  "specifier-resolution-node": "^1.1.4",
27
32
  "winston": "^3.17.0"
28
33
  },
29
34
  "devDependencies": {
30
- "@babel/preset-env": "^7.26.9",
31
- "@babel/preset-react": "^7.26.3",
32
- "@babel/preset-typescript": "^7.26.0",
35
+ "@babel/preset-env": "^7.27.2",
36
+ "@babel/preset-react": "^7.27.1",
37
+ "@babel/preset-typescript": "^7.27.1",
33
38
  "@eslint/eslintrc": "^3.3.1",
34
- "@eslint/js": "^9.27.0",
35
- "@jest/globals": "^29.7.0",
36
- "@swc/core": "^1.11.24",
37
- "@tsconfig/recommended": "^1.0.8",
38
- "@types/jest": "^29.5.14",
39
- "@types/multer": "^1.4.12",
40
- "@types/node": "^20.17.19",
41
- "@typescript-eslint/eslint-plugin": "^8.32.1",
42
- "@typescript-eslint/parser": "^8.32.1",
39
+ "@eslint/js": "^9.29.0",
40
+ "@swc/core": "^1.12.1",
41
+ "@tsconfig/recommended": "^1.0.9",
42
+ "@types/multer": "^1.4.13",
43
+ "@types/node": "^20.19.1",
44
+ "@typescript-eslint/eslint-plugin": "^8.34.1",
45
+ "@typescript-eslint/parser": "^8.34.1",
46
+ "@vitest/coverage-v8": "^3.2.4",
47
+ "@vitest/ui": "^3.2.4",
43
48
  "concurrently": "^8.2.2",
44
- "eslint": "^9.27.0",
45
- "jest": "^29.7.0",
46
- "nodemon": "^3.1.9",
49
+ "eslint": "^9.29.0",
50
+ "nodemon": "^3.1.10",
47
51
  "rimraf": "^6.0.1",
48
- "ts-jest": "^29.2.5",
49
52
  "ts-node": "^10.9.2",
50
- "tsc-alias": "^1.8.10",
51
- "typescript": "^5.7.3",
53
+ "tsc-alias": "^1.8.16",
54
+ "typescript": "^5.8.3",
52
55
  "vite": "^6.3.5",
53
56
  "vite-plugin-dts": "^4.5.4",
54
- "vite-plugin-node": "^5.0.1"
57
+ "vite-plugin-node": "^5.0.1",
58
+ "vitest": "^3.2.4"
55
59
  },
56
60
  "repository": {
57
61
  "type": "git",
@@ -59,8 +63,9 @@
59
63
  },
60
64
  "scripts": {
61
65
  "build": "tsc --noEmit && vite build",
66
+ "dev": "vite build --watch",
62
67
  "lint": "eslint . --ext .ts --fix",
63
68
  "clean": "rimraf dist",
64
- "test": "pnpm run lint && NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest --coverage"
69
+ "test": "vitest run --coverage"
65
70
  }
66
71
  }
@@ -1,18 +0,0 @@
1
- import LibLogger from './logger.js';
2
- import { addKey } from './KeyMaster.js';
3
-
4
- const logger = LibLogger.get('sequelize', 'RowProcessor');
5
- const processRow = (row, keyTypes)=>{
6
- logger.default('Processing Row', {
7
- row
8
- });
9
- const item = row.get({
10
- plain: true
11
- });
12
- addKey(item, keyTypes);
13
- logger.default('Processed Row: ' + JSON.stringify(item));
14
- return item;
15
- };
16
-
17
- export { processRow };
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm93UHJvY2Vzc29yLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
package/src/Coordinate.ts DELETED
@@ -1,16 +0,0 @@
1
- import { ItemTypeArray } from '@fjell/core';
2
- import * as Library from '@fjell/lib';
3
-
4
- export const SCOPE_SEQUELIZE = 'sequelize';
5
-
6
- export const createCoordinate = <
7
- S extends string,
8
- L1 extends string = never,
9
- L2 extends string = never,
10
- L3 extends string = never,
11
- L4 extends string = never,
12
- L5 extends string = never
13
- >(kta: ItemTypeArray<S, L1, L2, L3, L4, L5>, scopes?: string[]) => {
14
- const coordinate = Library.createCoordinate(kta,[SCOPE_SEQUELIZE, ...(scopes || [])])
15
- return coordinate;
16
- };
package/src/Definition.ts DELETED
@@ -1,49 +0,0 @@
1
- import {
2
- Item,
3
- ItemTypeArray
4
- } from '@fjell/core';
5
-
6
- import * as Library from '@fjell/lib';
7
- import { createCoordinate } from './Coordinate';
8
- import { createOptions } from './Options';
9
- import { Options } from './Options';
10
- import LibLogger from './logger';
11
-
12
- const logger = LibLogger.get('lib-sequelize', 'Definition');
13
-
14
- export interface Definition<
15
- V extends Item<S, L1, L2, L3, L4, L5>,
16
- S extends string,
17
- L1 extends string = never,
18
- L2 extends string = never,
19
- L3 extends string = never,
20
- L4 extends string = never,
21
- L5 extends string = never
22
- > extends Library.Definition<V, S, L1, L2, L3, L4, L5> {
23
- options: Options<V, S, L1, L2, L3, L4, L5>;
24
- }
25
-
26
- export function createDefinition<
27
- V extends Item<S, L1, L2, L3, L4, L5>,
28
- S extends string,
29
- L1 extends string = never,
30
- L2 extends string = never,
31
- L3 extends string = never,
32
- L4 extends string = never,
33
- L5 extends string = never
34
- >(
35
- kta: ItemTypeArray<S, L1, L2, L3, L4, L5>,
36
- scopes: string[],
37
- libOptions?: Options<V, S, L1, L2, L3, L4, L5>,
38
- ): Definition<V, S, L1, L2, L3, L4, L5> {
39
- logger.debug('createDefinition', { kta, scopes, libOptions });
40
- const coordinate = createCoordinate(kta, scopes);
41
- const options = createOptions(libOptions);
42
-
43
- const definition = Library.createDefinition(coordinate, options);
44
-
45
- return {
46
- ...definition,
47
- options,
48
- }
49
- }
@@ -1,103 +0,0 @@
1
- import {
2
- Evented,
3
- ItemProperties,
4
- ManagedEvents
5
- } from '@fjell/core';
6
- import deepmerge from 'deepmerge';
7
-
8
- import LibLogger from '@/logger';
9
-
10
- const logger = LibLogger.get("sequelize", "EventCoordinator");
11
-
12
- export const createEvents = <
13
- S extends string,
14
- L1 extends string = never,
15
- L2 extends string = never,
16
- L3 extends string = never,
17
- L4 extends string = never,
18
- L5 extends string = never
19
- >(item: ItemProperties<S, L1, L2, L3, L4, L5>):
20
- ItemProperties<S, L1, L2, L3, L4, L5> => {
21
- logger.default('Creating Events', { item });
22
- const currentDate = new Date();
23
-
24
- let events = item.events;
25
-
26
- if (events) {
27
- if (!events.created) {
28
- events = deepmerge(events, { created: { at: currentDate } });
29
- }
30
- if (!events.updated) {
31
- events = deepmerge(events, { updated: { at: currentDate } });
32
- }
33
- if (!events.deleted) {
34
- events = deepmerge(events, { deleted: { at: null } });
35
- }
36
-
37
- } else {
38
- events = {
39
- created: { at: currentDate },
40
- updated: { at: currentDate },
41
- deleted: { at: null },
42
- };
43
- }
44
-
45
- return deepmerge(item, { events }) as
46
- ItemProperties<S, L1, L2, L3, L4, L5>;
47
- }
48
-
49
- export const updateEvents = <
50
- S extends string,
51
- L1 extends string = never,
52
- L2 extends string = never,
53
- L3 extends string = never,
54
- L4 extends string = never,
55
- L5 extends string = never
56
- >(item: ItemProperties<S, L1, L2, L3, L4, L5>):
57
- ItemProperties<S, L1, L2, L3, L4, L5> => {
58
- logger.default('Updating Events', { item });
59
- const currentDate = new Date();
60
- const events: Evented = {
61
- updated: { at: currentDate },
62
- };
63
-
64
- // TODO: This is clean-up code, we should remove it
65
- // If the event lacks a created data, let's just insert it here...
66
- if (!item.events || !item.events.created || !item.events.created.at) {
67
- events.created = { at: currentDate };
68
- }
69
-
70
- return deepmerge(item, { events }) as ItemProperties<S, L1, L2, L3, L4, L5>;
71
- }
72
- //#endregion
73
-
74
- export const populateEvents = <
75
- S extends string,
76
- L1 extends string = never,
77
- L2 extends string = never,
78
- L3 extends string = never,
79
- L4 extends string = never,
80
- L5 extends string = never
81
- >(item: ItemProperties<S, L1, L2, L3, L4, L5>): ItemProperties<S, L1, L2, L3, L4, L5> => {
82
- const events: ManagedEvents = {
83
- created: { at: item.createdAt },
84
- updated: { at: item.updatedAt },
85
- deleted: { at: null }
86
- };
87
- item.events = events;
88
- return item;
89
- }
90
-
91
- export const removeEvents = <
92
- S extends string,
93
- L1 extends string = never,
94
- L2 extends string = never,
95
- L3 extends string = never,
96
- L4 extends string = never,
97
- L5 extends string = never
98
- >(item: ItemProperties<S, L1, L2, L3, L4, L5>): ItemProperties<S, L1, L2, L3, L4, L5> => {
99
- logger.default('Removing Events', { item });
100
- delete item.events;
101
- return item;
102
- }
103
-
package/src/Instance.ts DELETED
@@ -1,44 +0,0 @@
1
- import * as Library from '@fjell/lib';
2
- import { Item, ItemTypeArray } from '@fjell/core';
3
- import { createDefinition } from './Definition';
4
- import { createOperations } from './Operations';
5
- import { ModelStatic } from 'sequelize';
6
- import { Options } from './Options';
7
-
8
- export interface Instance<
9
- V extends Item<S, L1, L2, L3, L4, L5>,
10
- S extends string,
11
- L1 extends string = never,
12
- L2 extends string = never,
13
- L3 extends string = never,
14
- L4 extends string = never,
15
- L5 extends string = never
16
- > extends Library.Instance<V, S, L1, L2, L3, L4, L5> {
17
- models: ModelStatic<any>[];
18
- }
19
-
20
- export function createInstance<
21
- V extends Item<S, L1, L2, L3, L4, L5>,
22
- S extends string,
23
- L1 extends string = never,
24
- L2 extends string = never,
25
- L3 extends string = never,
26
- L4 extends string = never,
27
- L5 extends string = never
28
- >(
29
- keyTypes: ItemTypeArray<S, L1, L2, L3, L4, L5>,
30
- models: ModelStatic<any>[],
31
- libOptions: Options<V, S, L1, L2, L3, L4, L5> = {},
32
- scopes: string[] = [],
33
- ): Instance<V, S, L1, L2, L3, L4, L5> {
34
-
35
- const definition = createDefinition(keyTypes, scopes, libOptions);
36
- const operations = createOperations(models, definition);
37
-
38
- return {
39
- definition,
40
- operations: Library.wrapOperations(operations, definition),
41
- models
42
- }
43
-
44
- }
package/src/KeyMaster.ts DELETED
@@ -1,90 +0,0 @@
1
- import {
2
- AllItemTypeArrays,
3
- Item,
4
- ItemProperties
5
- } from '@fjell/core';
6
-
7
- import LibLogger from '@/logger';
8
-
9
- const logger = LibLogger.get('sequelize', 'KeyMaster');
10
-
11
- export const removeKey = <
12
- S extends string,
13
- L1 extends string = never,
14
- L2 extends string = never,
15
- L3 extends string = never,
16
- L4 extends string = never,
17
- L5 extends string = never
18
- >(
19
- item: ItemProperties<S, L1, L2, L3, L4, L5>
20
- ): ItemProperties<S, L1, L2, L3, L4, L5> => {
21
- logger.default('Removing Key', { item });
22
- delete item.key;
23
- return item;
24
- }
25
-
26
- export const populateKey = <
27
- S extends string,
28
- L1 extends string = never,
29
- L2 extends string = never,
30
- L3 extends string = never,
31
- L4 extends string = never,
32
- L5 extends string = never
33
- >(
34
- item: ItemProperties<S, L1, L2, L3, L4, L5>,
35
- keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>
36
- ): ItemProperties<S, L1, L2, L3, L4, L5> => {
37
- if( keyTypes.length === 1 ) {
38
- item.key = { kt: keyTypes[0], pk: item.id };
39
- delete item.id;
40
- } else if( keyTypes.length === 2 ) {
41
- item.key = {
42
- kt: keyTypes[0], pk: item.id,
43
- // TODO: Shouldn't this be inspecting the model to get the primary key type?
44
- loc: [{ kt: keyTypes[1], lk: item[keyTypes[1] + 'Id']}],
45
- };
46
- delete item.id;
47
- delete item[keyTypes[1] + 'Id'];
48
- } else {
49
- throw new Error('Not implemented');
50
- }
51
- return item;
52
- }
53
-
54
- export const addKey = <
55
- S extends string,
56
- L1 extends string = never,
57
- L2 extends string = never,
58
- L3 extends string = never,
59
- L4 extends string = never,
60
- L5 extends string = never
61
- >(
62
- item: Partial<Item<S, L1, L2, L3, L4, L5>>,
63
- keyTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>
64
- ): void => {
65
- logger.default('Adding Key', { item });
66
- const key = {};
67
- if (Array.isArray(keyTypes) && keyTypes.length > 1) {
68
- const type = [...keyTypes];
69
- const pkType = type.shift();
70
- Object.assign(key, { kt: pkType, pk: item.id });
71
- // TODO: This is really just for primary items
72
- if (type.length === 1) {
73
- // TODO: This should be looking at the model to get the primary key of the reference item or association
74
- const locKeyTypeId = type[0] + 'Id';
75
- Object.assign(key, { loc: [{ kt: type[0], lk: item[locKeyTypeId] }] });
76
- } else if (type.length === 2) {
77
- throw new Error('Not implemented');
78
- } else if (type.length === 3) {
79
- throw new Error('Not implemented');
80
- } else if (type.length === 4) {
81
- throw new Error('Not implemented');
82
- } else if (type.length === 5) {
83
- throw new Error('Not implemented');
84
- }
85
- } else {
86
- Object.assign(key, { kt: keyTypes[0], pk: item.id });
87
- }
88
- Object.assign(item, { key });
89
- };
90
-