@e22m4u/js-repository 0.8.0 → 0.8.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 (83) hide show
  1. package/README.md +164 -123
  2. package/dist/cjs/index.cjs +86 -1
  3. package/eslint.config.js +2 -1
  4. package/package.json +15 -8
  5. package/src/adapter/adapter-loader.d.ts +16 -0
  6. package/src/adapter/adapter-registry.d.ts +14 -0
  7. package/src/adapter/adapter.d.ts +153 -0
  8. package/src/adapter/builtin/memory-adapter.d.ts +148 -0
  9. package/src/adapter/builtin/memory-adapter.js +1 -1
  10. package/src/adapter/decorator/data-sanitizing-decorator.d.ts +14 -0
  11. package/src/adapter/decorator/default-values-decorator.d.ts +14 -0
  12. package/src/adapter/decorator/fields-filtering-decorator.d.ts +14 -0
  13. package/src/adapter/decorator/inclusion-decorator.d.ts +14 -0
  14. package/src/adapter/decorator/index.d.ts +5 -0
  15. package/src/adapter/decorator/property-uniqueness-decorator.d.ts +14 -0
  16. package/src/adapter/index.d.ts +3 -0
  17. package/src/database-schema.d.ts +37 -0
  18. package/src/definition/datasource/datasource-definition-validator.d.ts +14 -0
  19. package/src/definition/datasource/datasource-definition.d.ts +8 -0
  20. package/src/definition/datasource/index.d.ts +2 -0
  21. package/src/definition/definition-registry.d.ts +50 -0
  22. package/src/definition/index.d.ts +3 -0
  23. package/src/definition/model/index.d.ts +6 -0
  24. package/src/definition/model/index.js +1 -0
  25. package/src/definition/model/model-data-sanitizer.d.ts +15 -0
  26. package/src/definition/model/model-definition-utils.d.ts +180 -0
  27. package/src/definition/model/model-definition-validator.d.ts +14 -0
  28. package/src/definition/model/model-definition.d.ts +28 -0
  29. package/src/definition/model/model-definition.js +1 -0
  30. package/src/definition/model/properties/data-type.d.ts +16 -0
  31. package/src/definition/model/properties/index.d.ts +6 -0
  32. package/src/definition/model/properties/index.js +1 -0
  33. package/src/definition/model/properties/primary-keys-definition-validator.d.ts +15 -0
  34. package/src/definition/model/properties/properties-definition-validator.d.ts +15 -0
  35. package/src/definition/model/properties/property-definition.d.ts +23 -0
  36. package/src/definition/model/properties/property-definition.js +1 -0
  37. package/src/definition/model/properties/property-uniqueness-validator.d.ts +31 -0
  38. package/src/definition/model/properties/property-uniqueness.d.ts +14 -0
  39. package/src/definition/model/relations/index.d.ts +3 -0
  40. package/src/definition/model/relations/index.js +1 -0
  41. package/src/definition/model/relations/relation-definition.d.ts +236 -0
  42. package/src/definition/model/relations/relation-definition.js +1 -0
  43. package/src/definition/model/relations/relation-type.d.ts +14 -0
  44. package/src/definition/model/relations/relations-definition-validator.d.ts +15 -0
  45. package/src/errors/index.d.ts +3 -0
  46. package/src/errors/invalid-argument-error.d.ts +6 -0
  47. package/src/errors/invalid-operator-value-error.d.ts +13 -0
  48. package/src/errors/not-implemented-error.d.ts +6 -0
  49. package/src/filter/fields-clause-tool.d.ts +38 -0
  50. package/src/filter/filter-clause.d.ts +348 -0
  51. package/src/filter/include-clause-tool.d.ts +55 -0
  52. package/src/filter/index.d.ts +7 -0
  53. package/src/filter/operator-clause-tool.d.ts +224 -0
  54. package/src/filter/order-clause-tool.d.ts +32 -0
  55. package/src/filter/slice-clause-tool.d.ts +30 -0
  56. package/src/filter/where-clause-tool.d.ts +23 -0
  57. package/src/index.d.ts +9 -0
  58. package/src/index.js +1 -0
  59. package/src/relations/belongs-to-resolver.d.ts +46 -0
  60. package/src/relations/has-many-resolver.d.ts +67 -0
  61. package/src/relations/has-one-resolver.d.ts +67 -0
  62. package/src/relations/index.d.ts +4 -0
  63. package/src/relations/references-many-resolver.d.ts +27 -0
  64. package/src/repository/index.d.ts +2 -0
  65. package/src/repository/repository-registry.d.ts +29 -0
  66. package/src/repository/repository.d.ts +183 -0
  67. package/src/types.d.ts +43 -0
  68. package/src/types.js +1 -0
  69. package/src/utils/capitalize.d.ts +6 -0
  70. package/src/utils/clone-deep.d.ts +6 -0
  71. package/src/utils/exclude-object-keys.d.ts +10 -0
  72. package/src/utils/get-value-by-path.d.ts +12 -0
  73. package/src/utils/index.d.ts +12 -0
  74. package/src/utils/is-deep-equal.d.ts +10 -0
  75. package/src/utils/is-plain-object.d.ts +6 -0
  76. package/src/utils/is-promise.d.ts +10 -0
  77. package/src/utils/like-to-regexp.d.ts +14 -0
  78. package/src/utils/model-name-to-model-key.d.ts +6 -0
  79. package/src/utils/select-object-keys.d.ts +10 -0
  80. package/src/utils/singularize.d.ts +6 -0
  81. package/src/utils/string-to-regexp.d.ts +10 -0
  82. package/tsconfig.json +14 -0
  83. package/jsconfig.json +0 -7
@@ -0,0 +1,153 @@
1
+ import {ModelId} from '../types.js';
2
+ import {AnyObject} from '../types.js';
3
+ import {ModelData} from '../types.js';
4
+ import {Service} from '@e22m4u/js-service';
5
+ import {WhereClause} from '../filter/index.js';
6
+ import {FilterClause} from '../filter/index.js';
7
+ import {ItemFilterClause} from '../filter/index.js';
8
+ import {ServiceContainer} from '@e22m4u/js-service';
9
+
10
+ /**
11
+ * Adapter.
12
+ */
13
+ export declare class Adapter extends Service {
14
+ /**
15
+ * Kinds.
16
+ */
17
+ static kinds: string[];
18
+
19
+ /**
20
+ * Settings.
21
+ */
22
+ get settings(): AnyObject | undefined;
23
+
24
+ /**
25
+ * Constructor.
26
+ *
27
+ * @param container
28
+ * @param settings
29
+ */
30
+ constructor(container?: ServiceContainer, settings?: AnyObject);
31
+
32
+ /**
33
+ * Create.
34
+ *
35
+ * @param modelName
36
+ * @param modelData
37
+ * @param filter
38
+ */
39
+ create(
40
+ modelName: string,
41
+ modelData: ModelData,
42
+ filter?: ItemFilterClause,
43
+ ): Promise<ModelData>;
44
+
45
+ /**
46
+ * Replace by id.
47
+ *
48
+ * @param modelName
49
+ * @param id
50
+ * @param modelData
51
+ * @param filter
52
+ */
53
+ replaceById(
54
+ modelName: string,
55
+ id: ModelId,
56
+ modelData: ModelData,
57
+ filter?: ItemFilterClause,
58
+ ): Promise<ModelData>;
59
+
60
+ /**
61
+ * Replace or create.
62
+ *
63
+ * @param modelName
64
+ * @param modelData
65
+ * @param filter
66
+ */
67
+ replaceOrCreate(
68
+ modelName: string,
69
+ modelData: ModelData,
70
+ filter?: ItemFilterClause,
71
+ ): Promise<ModelData>;
72
+
73
+ /**
74
+ * Patch.
75
+ *
76
+ * @param modelName
77
+ * @param modelData
78
+ * @param where
79
+ */
80
+ patch(
81
+ modelName: string,
82
+ modelData: ModelData,
83
+ where?: WhereClause,
84
+ ): Promise<number>;
85
+
86
+ /**
87
+ * Patch by id.
88
+ *
89
+ * @param modelName
90
+ * @param id
91
+ * @param modelData
92
+ * @param filter
93
+ */
94
+ patchById(
95
+ modelName: string,
96
+ id: ModelId,
97
+ modelData: ModelData,
98
+ filter?: ItemFilterClause,
99
+ ): Promise<ModelData>;
100
+
101
+ /**
102
+ * Find.
103
+ *
104
+ * @param modelName
105
+ * @param filter
106
+ */
107
+ find(modelName: string, filter?: FilterClause): Promise<ModelData[]>;
108
+
109
+ /**
110
+ * Find by id.
111
+ *
112
+ * @param modelName
113
+ * @param id
114
+ * @param filter
115
+ */
116
+ findById(
117
+ modelName: string,
118
+ id: ModelId,
119
+ filter?: ItemFilterClause,
120
+ ): Promise<ModelData>;
121
+
122
+ /**
123
+ * Delete.
124
+ *
125
+ * @param modelName
126
+ * @param where
127
+ */
128
+ delete(modelName: string, where?: WhereClause): Promise<number>;
129
+
130
+ /**
131
+ * Delete by id.
132
+ *
133
+ * @param modelName
134
+ * @param id
135
+ */
136
+ deleteById(modelName: string, id: ModelId): Promise<boolean>;
137
+
138
+ /**
139
+ * Exists.
140
+ *
141
+ * @param modelName
142
+ * @param id
143
+ */
144
+ exists(modelName: string, id: ModelId): Promise<boolean>;
145
+
146
+ /**
147
+ * Count.
148
+ *
149
+ * @param modelName
150
+ * @param where
151
+ */
152
+ count(modelName: string, where?: WhereClause): Promise<number>;
153
+ }
@@ -0,0 +1,148 @@
1
+ import {Adapter} from '../adapter.js';
2
+ import {ModelId} from '../../types.js';
3
+ import {AnyObject} from '../../types.js';
4
+ import {ModelData} from '../../types.js';
5
+ import {WhereClause} from '../../filter/index.js';
6
+ import {FilterClause} from '../../filter/index.js';
7
+ import {ServiceContainer} from '@e22m4u/js-service';
8
+ import {ItemFilterClause} from '../../filter/index.js';
9
+
10
+ /**
11
+ * Memory adapter.
12
+ */
13
+ export declare class MemoryAdapter extends Adapter {
14
+ /**
15
+ * Settings.
16
+ */
17
+ get settings(): AnyObject | undefined;
18
+
19
+ /**
20
+ * Constructor.
21
+ *
22
+ * @param container
23
+ * @param settings
24
+ */
25
+ constructor(container?: ServiceContainer, settings?: AnyObject);
26
+
27
+ /**
28
+ * Create.
29
+ *
30
+ * @param modelName
31
+ * @param modelData
32
+ * @param filter
33
+ */
34
+ create(
35
+ modelName: string,
36
+ modelData: ModelData,
37
+ filter?: ItemFilterClause,
38
+ ): Promise<ModelData>;
39
+
40
+ /**
41
+ * Replace by id.
42
+ *
43
+ * @param modelName
44
+ * @param id
45
+ * @param modelData
46
+ * @param filter
47
+ */
48
+ replaceById(
49
+ modelName: string,
50
+ id: ModelId,
51
+ modelData: ModelData,
52
+ filter?: ItemFilterClause,
53
+ ): Promise<ModelData>;
54
+
55
+ /**
56
+ * Replace or create.
57
+ *
58
+ * @param modelName
59
+ * @param modelData
60
+ * @param filter
61
+ */
62
+ replaceOrCreate(
63
+ modelName: string,
64
+ modelData: ModelData,
65
+ filter?: ItemFilterClause,
66
+ ): Promise<ModelData>;
67
+
68
+ /**
69
+ * Patch.
70
+ *
71
+ * @param modelName
72
+ * @param modelData
73
+ * @param where
74
+ */
75
+ patch(
76
+ modelName: string,
77
+ modelData: ModelData,
78
+ where?: WhereClause,
79
+ ): Promise<number>;
80
+
81
+ /**
82
+ * Patch by id.
83
+ *
84
+ * @param modelName
85
+ * @param id
86
+ * @param modelData
87
+ * @param filter
88
+ */
89
+ patchById(
90
+ modelName: string,
91
+ id: ModelId,
92
+ modelData: ModelData,
93
+ filter?: ItemFilterClause,
94
+ ): Promise<ModelData>;
95
+
96
+ /**
97
+ * Find.
98
+ *
99
+ * @param modelName
100
+ * @param filter
101
+ */
102
+ find(modelName: string, filter?: FilterClause): Promise<ModelData[]>;
103
+
104
+ /**
105
+ * Find by id.
106
+ *
107
+ * @param modelName
108
+ * @param id
109
+ * @param filter
110
+ */
111
+ findById(
112
+ modelName: string,
113
+ id: ModelId,
114
+ filter?: ItemFilterClause,
115
+ ): Promise<ModelData>;
116
+
117
+ /**
118
+ * Delete.
119
+ *
120
+ * @param modelName
121
+ * @param where
122
+ */
123
+ delete(modelName: string, where?: WhereClause): Promise<number>;
124
+
125
+ /**
126
+ * Delete by id.
127
+ *
128
+ * @param modelName
129
+ * @param id
130
+ */
131
+ deleteById(modelName: string, id: ModelId): Promise<boolean>;
132
+
133
+ /**
134
+ * Exists.
135
+ *
136
+ * @param modelName
137
+ * @param id
138
+ */
139
+ exists(modelName: string, id: ModelId): Promise<boolean>;
140
+
141
+ /**
142
+ * Count.
143
+ *
144
+ * @param modelName
145
+ * @param where
146
+ */
147
+ count(modelName: string, where?: WhereClause): Promise<number>;
148
+ }
@@ -1,6 +1,6 @@
1
1
  import {Adapter} from '../adapter.js';
2
- import {cloneDeep, capitalize} from '../../utils/index.js';
3
2
  import {InvalidArgumentError} from '../../errors/index.js';
3
+ import {cloneDeep, capitalize} from '../../utils/index.js';
4
4
  import {DataType, ModelDefinitionUtils} from '../../definition/index.js';
5
5
 
6
6
  import {
@@ -0,0 +1,14 @@
1
+ import {Adapter} from '../adapter.js';
2
+ import {Service} from '@e22m4u/js-service';
3
+
4
+ /**
5
+ * Data sanitizing decorator.
6
+ */
7
+ export declare class DataSanitizingDecorator extends Service {
8
+ /**
9
+ * Decorate.
10
+ *
11
+ * @param adapter
12
+ */
13
+ decorate(adapter: Adapter): void;
14
+ }
@@ -0,0 +1,14 @@
1
+ import {Service} from '@e22m4u/js-service';
2
+ import {Adapter} from '../adapter.js';
3
+
4
+ /**
5
+ * Default values decorator.
6
+ */
7
+ export declare class DefaultValuesDecorator extends Service {
8
+ /**
9
+ * Decorate.
10
+ *
11
+ * @param adapter
12
+ */
13
+ decorate(adapter: Adapter): void;
14
+ }
@@ -0,0 +1,14 @@
1
+ import {Service} from '@e22m4u/js-service';
2
+ import {Adapter} from '../adapter.js';
3
+
4
+ /**
5
+ * Fields filtering decorator.
6
+ */
7
+ export declare class FieldsFilteringDecorator extends Service {
8
+ /**
9
+ * Decorate.
10
+ *
11
+ * @param adapter
12
+ */
13
+ decorate(adapter: Adapter): void;
14
+ }
@@ -0,0 +1,14 @@
1
+ import {Service} from '@e22m4u/js-service';
2
+ import {Adapter} from '../adapter.js';
3
+
4
+ /**
5
+ * Inclusion decorator.
6
+ */
7
+ export declare class InclusionDecorator extends Service {
8
+ /**
9
+ * Decorate.
10
+ *
11
+ * @param adapter
12
+ */
13
+ decorate(adapter: Adapter): void;
14
+ }
@@ -0,0 +1,5 @@
1
+ export * from './inclusion-decorator.js';
2
+ export * from './default-values-decorator.js';
3
+ export * from './data-sanitizing-decorator.js';
4
+ export * from './fields-filtering-decorator.js';
5
+ export * from './property-uniqueness-decorator.js';
@@ -0,0 +1,14 @@
1
+ import {Adapter} from '../adapter.js';
2
+ import {Service} from '@e22m4u/js-service';
3
+
4
+ /**
5
+ * Property uniqueness decorator.
6
+ */
7
+ export declare class PropertyUniquenessDecorator extends Service {
8
+ /**
9
+ * Decorate.
10
+ *
11
+ * @param adapter
12
+ */
13
+ decorate(adapter: Adapter): void;
14
+ }
@@ -0,0 +1,3 @@
1
+ export * from './adapter.js';
2
+ export * from './adapter-loader.js';
3
+ export * from './adapter-registry.js';
@@ -0,0 +1,37 @@
1
+ import {ModelId} from './types.js';
2
+ import {ModelData} from './types.js';
3
+ import {Service} from '@e22m4u/js-service';
4
+ import {Repository} from './repository/index.js';
5
+ import {ModelDefinition} from './definition/index.js';
6
+ import {DatasourceDefinition} from './definition/index.js';
7
+ import {DEFAULT_PRIMARY_KEY_PROPERTY_NAME} from './definition/index.js';
8
+
9
+ /**
10
+ * Database schema.
11
+ */
12
+ export declare class DatabaseSchema extends Service {
13
+ /**
14
+ * Define datasource.
15
+ *
16
+ * @param datasourceDef
17
+ */
18
+ defineDatasource(datasourceDef: DatasourceDefinition): this;
19
+
20
+ /**
21
+ * Define model.
22
+ *
23
+ * @param modelDef
24
+ */
25
+ defineModel(modelDef: ModelDefinition): this;
26
+
27
+ /**
28
+ * Get repository.
29
+ *
30
+ * @param modelName
31
+ */
32
+ getRepository<
33
+ Data extends object = ModelData,
34
+ IdType extends ModelId = ModelId,
35
+ IdName extends string = typeof DEFAULT_PRIMARY_KEY_PROPERTY_NAME,
36
+ >(modelName: string): Repository<Data, IdType, IdName>;
37
+ }
@@ -0,0 +1,14 @@
1
+ import {Service} from '@e22m4u/js-service';
2
+ import {DatasourceDefinition} from './datasource-definition.js';
3
+
4
+ /**
5
+ * Datasource definition validator.
6
+ */
7
+ export declare class DatasourceDefinitionValidator extends Service {
8
+ /**
9
+ * Validate.
10
+ *
11
+ * @param datasourceDef
12
+ */
13
+ validate(datasourceDef: DatasourceDefinition): void;
14
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Datasource definition.
3
+ */
4
+ export declare type DatasourceDefinition = {
5
+ name: string;
6
+ adapter: string;
7
+ [option: string]: unknown;
8
+ };
@@ -0,0 +1,2 @@
1
+ export * from './datasource-definition.js';
2
+ export * from './datasource-definition-validator.js';
@@ -0,0 +1,50 @@
1
+ import {Service} from '@e22m4u/js-service';
2
+ import {ModelDefinition} from './model/index.js';
3
+ import {DatasourceDefinition} from './datasource/index.js';
4
+
5
+ /**
6
+ * Definition registry.
7
+ */
8
+ export declare class DefinitionRegistry extends Service {
9
+ /**
10
+ * Add datasource.
11
+ *
12
+ * @param datasourceDef
13
+ */
14
+ addDatasource(datasourceDef: DatasourceDefinition): void;
15
+
16
+ /**
17
+ * Has datasource.
18
+ *
19
+ * @param name
20
+ */
21
+ hasDatasource(name: string): boolean;
22
+
23
+ /**
24
+ * Get datasource.
25
+ *
26
+ * @param name
27
+ */
28
+ getDatasource(name: string): DatasourceDefinition;
29
+
30
+ /**
31
+ * Add model.
32
+ *
33
+ * @param modelDef
34
+ */
35
+ addModel(modelDef: ModelDefinition): void;
36
+
37
+ /**
38
+ * Has model.
39
+ *
40
+ * @param name
41
+ */
42
+ hasModel(name: string): boolean;
43
+
44
+ /**
45
+ * Get model.
46
+ *
47
+ * @param name
48
+ */
49
+ getModel(name: string): ModelDefinition;
50
+ }
@@ -0,0 +1,3 @@
1
+ export * from './model/index.js';
2
+ export * from './datasource/index.js';
3
+ export * from './definition-registry.js';
@@ -0,0 +1,6 @@
1
+ export * from './relations/index.js';
2
+ export * from './properties/index.js';
3
+ export * from './model-definition.js';
4
+ export * from './model-data-sanitizer.js';
5
+ export * from './model-definition-utils.js';
6
+ export * from './model-definition-validator.js';
@@ -1,5 +1,6 @@
1
1
  export * from './relations/index.js';
2
2
  export * from './properties/index.js';
3
+ export * from './model-definition.js';
3
4
  export * from './model-data-sanitizer.js';
4
5
  export * from './model-definition-utils.js';
5
6
  export * from './model-definition-validator.js';
@@ -0,0 +1,15 @@
1
+ import {ModelData} from '../../types.js';
2
+ import {Service} from '@e22m4u/js-service';
3
+
4
+ /**
5
+ * Model data sanitizer.
6
+ */
7
+ export declare class ModelDataSanitizer extends Service {
8
+ /**
9
+ * Sanitize.
10
+ *
11
+ * @param modelName
12
+ * @param modelData
13
+ */
14
+ sanitize(modelName: string, modelData: ModelData): ModelData;
15
+ }