@furystack/core 12.0.0 → 12.0.2

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 (61) hide show
  1. package/{types → esm}/create-physical-store-tests.d.ts +1 -1
  2. package/{types → esm}/create-physical-store-tests.d.ts.map +1 -1
  3. package/esm/create-physical-store-tests.js +446 -0
  4. package/esm/create-physical-store-tests.js.map +1 -0
  5. package/esm/errors/aggregated-error.js +11 -0
  6. package/esm/errors/aggregated-error.js.map +1 -0
  7. package/esm/errors/authorization-error.js +3 -0
  8. package/esm/errors/authorization-error.js.map +1 -0
  9. package/esm/errors/index.d.ts +3 -0
  10. package/esm/errors/index.d.ts.map +1 -0
  11. package/esm/errors/index.js +3 -0
  12. package/esm/errors/index.js.map +1 -0
  13. package/esm/global-disposables.js +26 -0
  14. package/esm/global-disposables.js.map +1 -0
  15. package/{types → esm}/helpers.d.ts +4 -4
  16. package/{types → esm}/helpers.d.ts.map +1 -1
  17. package/esm/helpers.js +38 -0
  18. package/esm/helpers.js.map +1 -0
  19. package/{types → esm}/identity-context.d.ts +1 -1
  20. package/esm/identity-context.d.ts.map +1 -0
  21. package/esm/identity-context.js +23 -0
  22. package/esm/identity-context.js.map +1 -0
  23. package/{types → esm}/in-memory-store.d.ts +1 -1
  24. package/{types → esm}/in-memory-store.d.ts.map +1 -1
  25. package/esm/in-memory-store.js +185 -0
  26. package/esm/in-memory-store.js.map +1 -0
  27. package/esm/index.d.ts +9 -0
  28. package/esm/index.d.ts.map +1 -0
  29. package/esm/index.js +9 -0
  30. package/esm/index.js.map +1 -0
  31. package/esm/models/physical-store.js +30 -0
  32. package/esm/models/physical-store.js.map +1 -0
  33. package/esm/models/user.js +6 -0
  34. package/esm/models/user.js.map +1 -0
  35. package/{types → esm}/store-manager.d.ts +1 -1
  36. package/{types → esm}/store-manager.d.ts.map +1 -1
  37. package/esm/store-manager.js +59 -0
  38. package/esm/store-manager.js.map +1 -0
  39. package/package.json +7 -17
  40. package/src/create-physical-store-tests.ts +1 -1
  41. package/src/errors/index.ts +2 -2
  42. package/src/helpers.ts +4 -4
  43. package/src/identity-context.ts +1 -1
  44. package/src/in-memory-store.ts +2 -2
  45. package/src/index.ts +8 -8
  46. package/src/store-manager.ts +2 -2
  47. package/types/errors/index.d.ts +0 -3
  48. package/types/errors/index.d.ts.map +0 -1
  49. package/types/identity-context.d.ts.map +0 -1
  50. package/types/index.d.ts +0 -9
  51. package/types/index.d.ts.map +0 -1
  52. /package/{types → esm}/errors/aggregated-error.d.ts +0 -0
  53. /package/{types → esm}/errors/aggregated-error.d.ts.map +0 -0
  54. /package/{types → esm}/errors/authorization-error.d.ts +0 -0
  55. /package/{types → esm}/errors/authorization-error.d.ts.map +0 -0
  56. /package/{types → esm}/global-disposables.d.ts +0 -0
  57. /package/{types → esm}/global-disposables.d.ts.map +0 -0
  58. /package/{types → esm}/models/physical-store.d.ts +0 -0
  59. /package/{types → esm}/models/physical-store.d.ts.map +0 -0
  60. /package/{types → esm}/models/user.d.ts +0 -0
  61. /package/{types → esm}/models/user.d.ts.map +0 -0
package/esm/helpers.js ADDED
@@ -0,0 +1,38 @@
1
+ import { globalDisposables } from './global-disposables.js';
2
+ import { IdentityContext } from './identity-context.js';
3
+ import { StoreManager } from './store-manager.js';
4
+ /**
5
+ * The disposable will be disposed on process exit
6
+ * @param disposable The Disposable object to dispose on process exit
7
+ * @returns A set of global disposables
8
+ */
9
+ export const disposeOnProcessExit = (disposable) => globalDisposables.add(disposable);
10
+ /**
11
+ * @param injector The Injector instance
12
+ * @returns the current authentication status from the identity context
13
+ */
14
+ export const isAuthenticated = async (injector) => injector.getInstance(IdentityContext).isAuthenticated();
15
+ /**
16
+ * @param injector The Injector instance
17
+ * @param {...any} roles A list of roles
18
+ * @returns if the current authorization status from the identity context
19
+ */
20
+ export const isAuthorized = async (injector, ...roles) => injector.getInstance(IdentityContext).isAuthorized(...roles);
21
+ /**
22
+ * @param injector The Injector instance
23
+ * @returns The current user from the identity context
24
+ */
25
+ export const getCurrentUser = async (injector) => injector.getInstance(IdentityContext).getCurrentUser();
26
+ /**
27
+ * @param injector The Injector instance
28
+ * @returns A Store Manager instance to setup stores
29
+ */
30
+ export const getStoreManager = (injector) => injector.getInstance(StoreManager);
31
+ /**
32
+ *
33
+ * @param injector The Injector instance
34
+ * @param store The store to add
35
+ * @returns The Store Manager instance for chaining
36
+ */
37
+ export const addStore = (injector, store) => getStoreManager(injector).addStore(store);
38
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;AAEjG;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,eAAe,EAAE,CAAA;AAEpH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAkB,EAAE,GAAG,KAAe,EAAE,EAAE,CAC3E,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAA;AAE9D;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE,CAAA;AAElH;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;AAEzF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAiC,QAAkB,EAAE,KAAoC,EAAE,EAAE,CACnH,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { User } from './models/user';
1
+ import type { User } from './models/user.js';
2
2
  export declare class IdentityContext {
3
3
  isAuthenticated(): Promise<boolean>;
4
4
  isAuthorized(..._roles: string[]): Promise<boolean>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-context.d.ts","sourceRoot":"","sources":["../src/identity-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,qBACa,eAAe;IACb,eAAe;IAIf,YAAY,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE;IAIhC,cAAc,CAAC,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;CAGlE"}
@@ -0,0 +1,23 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Injectable } from '@furystack/inject';
8
+ let IdentityContext = class IdentityContext {
9
+ async isAuthenticated() {
10
+ return false;
11
+ }
12
+ async isAuthorized(..._roles) {
13
+ return false;
14
+ }
15
+ async getCurrentUser() {
16
+ throw Error('No IdentityContext');
17
+ }
18
+ };
19
+ IdentityContext = __decorate([
20
+ Injectable({ lifetime: 'scoped' })
21
+ ], IdentityContext);
22
+ export { IdentityContext };
23
+ //# sourceMappingURL=identity-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-context.js","sourceRoot":"","sources":["../src/identity-context.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,IAAa,eAAe,GAA5B,MAAa,eAAe;IACnB,KAAK,CAAC,eAAe;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAG,MAAgB;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAA;IACnC,CAAC;CACF,CAAA;AAZY,eAAe;IAD3B,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;GACtB,eAAe,CAY3B;SAZY,eAAe"}
@@ -1,5 +1,5 @@
1
1
  import type { Constructable } from '@furystack/inject';
2
- import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store';
2
+ import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store.js';
3
3
  export declare class InMemoryStore<T, TPrimaryKey extends keyof T> implements PhysicalStore<T, TPrimaryKey, T> {
4
4
  /**
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGlH,qBAAa,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACpG;;;OAGG;IACU,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAYpD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAY;IACzC,GAAG,QAAe,CAAC,CAAC,WAAW,CAAC,WAAW,MAAM,MAAM,CAAC,CAAC,4BAG/D;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,cAAc;IAwGT,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;IA2B3E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAI5B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAUxC,OAAO;IAId,SAAgB,UAAU,EAAE,WAAW,CAAA;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,WAAW,CAAA;QACvB;;WAEG;QACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KACxB;CAIF"}
1
+ {"version":3,"file":"in-memory-store.d.ts","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAGrH,qBAAa,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IACpG;;;OAGG;IACU,MAAM,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAYpD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAY;IACzC,GAAG,QAAe,CAAC,CAAC,WAAW,CAAC,WAAW,MAAM,MAAM,CAAC,CAAC,4BAG/D;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,cAAc;IAwGT,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;IA2B3E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAI5B,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC;IAUxC,OAAO;IAId,SAAgB,UAAU,EAAE,WAAW,CAAA;IACvC,SAAgB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAEvC;;;;;OAKG;gBACS,OAAO,EAAE;QACnB;;WAEG;QACH,UAAU,EAAE,WAAW,CAAA;QACvB;;WAEG;QACH,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;KACxB;CAIF"}
@@ -0,0 +1,185 @@
1
+ import { selectFields, isOperator, isLogicalOperator } from './models/physical-store.js';
2
+ export class InMemoryStore {
3
+ /**
4
+ *
5
+ * @param keys The keys to remove from the store
6
+ */
7
+ async remove(...keys) {
8
+ keys.map((key) => this.cache.delete(key));
9
+ }
10
+ async add(...entries) {
11
+ const created = entries.map((e) => {
12
+ const entry = { ...e };
13
+ if (this.cache.has(entry[this.primaryKey])) {
14
+ throw new Error('Item with the primary key already exists.');
15
+ }
16
+ this.cache.set(entry[this.primaryKey], entry);
17
+ return entry;
18
+ });
19
+ return { created };
20
+ }
21
+ filterInternal(values, filter) {
22
+ if (!filter) {
23
+ return values;
24
+ }
25
+ return values.filter((item) => {
26
+ for (const key in filter) {
27
+ if (isLogicalOperator(key)) {
28
+ const filterValue = filter[key];
29
+ switch (key) {
30
+ case '$and':
31
+ if (filterValue.some((v) => !this.filterInternal([item], v).length)) {
32
+ return false;
33
+ }
34
+ break;
35
+ case '$or':
36
+ if (filterValue.some((v) => this.filterInternal([item], v).length)) {
37
+ break;
38
+ }
39
+ return false;
40
+ default:
41
+ throw new Error(`The logical operation '${key}' is not a valid operation`);
42
+ }
43
+ }
44
+ else if (typeof filter[key] === 'object') {
45
+ for (const filterKey in filter[key]) {
46
+ if (isOperator(filterKey)) {
47
+ const itemValue = item[key];
48
+ const filterValue = filter[key][filterKey];
49
+ switch (filterKey) {
50
+ case '$eq':
51
+ if (filterValue !== itemValue) {
52
+ return false;
53
+ }
54
+ break;
55
+ case '$ne':
56
+ if (filterValue === itemValue) {
57
+ return false;
58
+ }
59
+ break;
60
+ case '$in':
61
+ if (!filterValue.includes(itemValue)) {
62
+ return false;
63
+ }
64
+ break;
65
+ case '$nin':
66
+ if (filterValue.includes(itemValue)) {
67
+ return false;
68
+ }
69
+ break;
70
+ case '$lt':
71
+ if (itemValue < filterValue) {
72
+ break;
73
+ }
74
+ return false;
75
+ case '$lte':
76
+ if (itemValue <= filterValue) {
77
+ break;
78
+ }
79
+ return false;
80
+ case '$gt':
81
+ if (itemValue > filterValue) {
82
+ break;
83
+ }
84
+ return false;
85
+ case '$gte':
86
+ if (itemValue >= filterValue) {
87
+ break;
88
+ }
89
+ return false;
90
+ case '$regex':
91
+ if (!new RegExp(filterValue).test(itemValue.toString())) {
92
+ return false;
93
+ }
94
+ break;
95
+ case '$startsWith':
96
+ if (!itemValue.startsWith(filterValue)) {
97
+ return false;
98
+ }
99
+ break;
100
+ case '$endsWith':
101
+ if (!itemValue.endsWith(filterValue)) {
102
+ return false;
103
+ }
104
+ break;
105
+ case '$like':
106
+ if (!this.evaluateLike(itemValue, filterValue)) {
107
+ return false;
108
+ }
109
+ break;
110
+ default:
111
+ throw new Error(`The expression (${filterKey}) is not supported by '${this.constructor.name}'!`);
112
+ }
113
+ }
114
+ else {
115
+ throw new Error(`The filter key '${filterKey}' is not a valid operation`);
116
+ }
117
+ }
118
+ }
119
+ else {
120
+ throw new Error(`The filter has to be an object, got ${typeof filter[key]} for field '${key}'`);
121
+ }
122
+ }
123
+ return true;
124
+ });
125
+ }
126
+ async find(searchOptions) {
127
+ let value = this.filterInternal([...this.cache.values()], searchOptions.filter);
128
+ if (searchOptions.order) {
129
+ for (const fieldName of Object.keys(searchOptions.order)) {
130
+ value = value.sort((a, b) => {
131
+ const order = searchOptions.order[fieldName];
132
+ if (a[fieldName] < b[fieldName])
133
+ return order === 'ASC' ? -1 : 1;
134
+ if (a[fieldName] > b[fieldName])
135
+ return order === 'ASC' ? 1 : -1;
136
+ return 0;
137
+ });
138
+ }
139
+ }
140
+ if (searchOptions.top || searchOptions.skip) {
141
+ value = value.slice(searchOptions.skip, (searchOptions.skip || 0) + (searchOptions.top || this.cache.size));
142
+ }
143
+ if (searchOptions.select) {
144
+ value = value.map((item) => {
145
+ return selectFields(item, ...searchOptions.select);
146
+ });
147
+ }
148
+ return value;
149
+ }
150
+ async count(filter) {
151
+ return this.filterInternal([...this.cache.values()], filter).length;
152
+ }
153
+ async update(id, data) {
154
+ if (!this.cache.has(id)) {
155
+ throw Error(`Entity not found with id '${id}', cannot update!`);
156
+ }
157
+ this.cache.set(id, {
158
+ ...this.cache.get(id),
159
+ ...data,
160
+ });
161
+ }
162
+ dispose() {
163
+ this.cache.clear();
164
+ }
165
+ /**
166
+ * Creates an InMemoryStore that can be used for testing purposes.
167
+ * @param options Options for the In Memory Store
168
+ * @param options.primaryKey The name of the primary key field
169
+ * @param options.model The Entity Model
170
+ */
171
+ constructor(options) {
172
+ this.cache = new Map();
173
+ this.get = async (key, select) => {
174
+ const item = this.cache.get(key);
175
+ return item && select ? selectFields(item, ...select) : item;
176
+ };
177
+ this.evaluateLike = (value, likeString) => {
178
+ const likeRegex = `^${likeString.replace(/%/g, '.*')}$`;
179
+ return value.match(new RegExp(likeRegex, 'i'));
180
+ };
181
+ this.primaryKey = options.primaryKey;
182
+ this.model = options.model;
183
+ }
184
+ }
185
+ //# sourceMappingURL=in-memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-store.js","sourceRoot":"","sources":["../src/in-memory-store.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from './errors/index.js';
2
+ export * from './models/physical-store.js';
3
+ export * from './models/user.js';
4
+ export * from './in-memory-store.js';
5
+ export * from './store-manager.js';
6
+ export * from './global-disposables.js';
7
+ export * from './identity-context.js';
8
+ export * from './helpers.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA"}
package/esm/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * from './errors/index.js';
2
+ export * from './models/physical-store.js';
3
+ export * from './models/user.js';
4
+ export * from './in-memory-store.js';
5
+ export * from './store-manager.js';
6
+ export * from './global-disposables.js';
7
+ export * from './identity-context.js';
8
+ export * from './helpers.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA;AACvC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA"}
@@ -0,0 +1,30 @@
1
+ export const NumberComparisonOperators = ['$gt', '$gte', '$lt', '$lte'];
2
+ export const StringComparisonOperators = ['$startsWith', '$endsWith', '$like', '$regex'];
3
+ export const SingleComparisonOperators = ['$eq', '$ne'];
4
+ export const ArrayComparisonOperators = ['$in', '$nin'];
5
+ export const LogicalOperators = ['$and', '$not', '$nor', '$or'];
6
+ export const allOperators = [
7
+ ...SingleComparisonOperators,
8
+ ...NumberComparisonOperators,
9
+ ...ArrayComparisonOperators,
10
+ ...LogicalOperators,
11
+ ...StringComparisonOperators,
12
+ ];
13
+ export const isLogicalOperator = (propertyString) => LogicalOperators.includes(propertyString);
14
+ export const isOperator = (propertyString) => allOperators.includes(propertyString);
15
+ export const t = {
16
+ a: { $eq: 3 },
17
+ b: { $in: ['a', 'b', 'c'] },
18
+ $and: [{ a: { $eq: 2 } }],
19
+ };
20
+ export const selectFields = (entry, ...fields) => {
21
+ const returnValue = {};
22
+ Object.keys(entry).map((key) => {
23
+ const field = key;
24
+ if (fields.includes(field)) {
25
+ returnValue[field] = entry[field];
26
+ }
27
+ });
28
+ return returnValue;
29
+ };
30
+ //# sourceMappingURL=physical-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"physical-store.js","sourceRoot":"","sources":["../../src/models/physical-store.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAA;AAEhF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAU,CAAA;AACjG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAU,CAAA;AAEhE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,CAAU,CAAA;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAExE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,yBAAyB;IAC5B,GAAG,yBAAyB;IAC5B,GAAG,wBAAwB;IAC3B,GAAG,gBAAgB;IACnB,GAAG,yBAAyB;CACpB,CAAA;AAUV,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,cAAsB,EAAuD,EAAE,CAC/G,gBAAgB,CAAC,QAAQ,CAAC,cAAmD,CAAC,CAAA;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,cAAsB,EAAmD,EAAE,CACpG,YAAY,CAAC,QAAQ,CAAC,cAA+C,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,CAAC,GAAqD;IACjE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;IACb,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAC3B,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;CAC1B,CAAA;AAuCD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAkD,KAAQ,EAAE,GAAG,MAAc,EAAE,EAAE;IAC3G,MAAM,WAAW,GAAG,EAA8B,CAAA;IAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAmB,GAAqB,CAAA;QACnD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;SAClC;IACH,CAAC,CAAC,CAAA;IACF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Class model that represents an application user
3
+ */
4
+ export class User {
5
+ }
6
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/models/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,IAAI;CAUhB"}
@@ -1,6 +1,6 @@
1
1
  import type { Constructable } from '@furystack/inject';
2
2
  import type { Disposable } from '@furystack/utils';
3
- import type { PhysicalStore } from './models/physical-store';
3
+ import type { PhysicalStore } from './models/physical-store.js';
4
4
  /**
5
5
  * Manager class for store instances
6
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAE5D;;GAEG;AACH,qBACa,YAAa,YAAW,UAAU;IAC7C;;OAEG;IACU,OAAO;IAWpB,OAAO,CAAC,MAAM,CAAkE;IAEhF;;;;;;;OAOG;IACI,WAAW,CAChB,CAAC,EACD,WAAW,SAAS,MAAM,CAAC,EAC3B,KAAK,SAAS,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,EAC3E,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW;IAWlD;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;CAIrF"}
1
+ {"version":3,"file":"store-manager.d.ts","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE/D;;GAEG;AACH,qBACa,YAAa,YAAW,UAAU;IAC7C;;OAEG;IACU,OAAO;IAWpB,OAAO,CAAC,MAAM,CAAkE;IAEhF;;;;;;;OAOG;IACI,WAAW,CAChB,CAAC,EACD,WAAW,SAAS,MAAM,CAAC,EAC3B,KAAK,SAAS,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC,EAC3E,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW;IAWlD;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,EAAE,WAAW,CAAC;CAIrF"}
@@ -0,0 +1,59 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Injectable } from '@furystack/inject';
8
+ import { AggregatedError } from './errors/aggregated-error.js';
9
+ /**
10
+ * Manager class for store instances
11
+ */
12
+ let StoreManager = class StoreManager {
13
+ constructor() {
14
+ this.stores = new Map();
15
+ }
16
+ /**
17
+ * Disposes the StoreManager and all store instances
18
+ */
19
+ async dispose() {
20
+ const result = await Promise.allSettled([...this.stores.entries()].map(async ([_model, store]) => store.dispose()));
21
+ const fails = result.filter((r) => r.status === 'rejected');
22
+ if (fails && fails.length) {
23
+ const error = new AggregatedError(`There was an error during disposing ${fails.length} stores: ${fails.map((f) => f.reason)}`, fails);
24
+ throw error;
25
+ }
26
+ }
27
+ /**
28
+ * Returns a store model for a constructable object.
29
+ * Throws error if no store is registered
30
+ * @param model The Constructable object
31
+ * @param primaryKey The Primary Key field
32
+ * @throws if the Store is not registered
33
+ * @returns a Store object
34
+ */
35
+ getStoreFor(model, primaryKey) {
36
+ const instance = this.stores.get(model);
37
+ if (!instance) {
38
+ throw Error(`Store not found for '${model.name}'`);
39
+ }
40
+ if (primaryKey !== instance.primaryKey) {
41
+ throw Error('Primary keys not match');
42
+ }
43
+ return instance;
44
+ }
45
+ /**
46
+ * Adds a store instance to the StoreManager class
47
+ * @param store The store to add
48
+ * @returns the StoreManager instance for chaining
49
+ */
50
+ addStore(store) {
51
+ this.stores.set(store.model, store);
52
+ return this;
53
+ }
54
+ };
55
+ StoreManager = __decorate([
56
+ Injectable({ lifetime: 'singleton' })
57
+ ], StoreManager);
58
+ export { StoreManager };
59
+ //# sourceMappingURL=store-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-manager.js","sourceRoot":"","sources":["../src/store-manager.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAG9D;;GAEG;AAEH,IAAa,YAAY,GAAzB,MAAa,YAAY;IAAzB;QAeU,WAAM,GAAyD,IAAI,GAAG,EAAE,CAAA;IAkClF,CAAC;IAhDC;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QACnH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAA4B,CAAA;QACtF,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,uCAAuC,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAC3F,KAAK,CACN,CAAA;YACD,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAGD;;;;;;;OAOG;IACI,WAAW,CAIhB,KAAuB,EAAE,UAAuB;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,KAAK,CAAC,wBAAwB,KAAK,CAAC,IAAI,GAAG,CAAC,CAAA;SACnD;QACD,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE;YACtC,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACtC;QACD,OAAO,QAAiB,CAAA;IAC1B,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAiC,KAAoC;QAClF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAgC,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AAjDY,YAAY;IADxB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,YAAY,CAiDxB;SAjDY,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/core",
3
- "version": "12.0.0",
3
+ "version": "12.0.2",
4
4
  "description": "Core FuryStack package",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -8,24 +8,14 @@
8
8
  },
9
9
  "exports": {
10
10
  ".": {
11
- "import": "./esm/index.js",
12
- "types": "./types/index.d.ts"
11
+ "import": "./esm/index.js"
13
12
  },
14
13
  "./create-physical-store-tests": {
15
- "import": "./esm/create-physical-store-tests.js",
16
- "types": "./types/create-physical-store-tests.d.ts"
17
- },
18
- "./package.json": "./package.json"
19
- },
20
- "typesVersions": {
21
- "*": {
22
- "*": [
23
- "types/*"
24
- ]
14
+ "import": "./esm/create-physical-store-tests.js"
25
15
  }
26
16
  },
27
17
  "files": [
28
- "dist",
18
+ "esm",
29
19
  "types",
30
20
  "src"
31
21
  ],
@@ -47,13 +37,13 @@
47
37
  },
48
38
  "homepage": "https://github.com/furystack/furystack",
49
39
  "devDependencies": {
50
- "@types/node": "^18.15.11",
40
+ "@types/node": "^18.16.2",
51
41
  "typescript": "^5.0.4",
52
42
  "vitest": "^0.30.1"
53
43
  },
54
44
  "dependencies": {
55
- "@furystack/inject": "^8.0.0",
56
- "@furystack/utils": "^4.0.0"
45
+ "@furystack/inject": "^8.0.2",
46
+ "@furystack/utils": "^4.0.2"
57
47
  },
58
48
  "gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
59
49
  }
@@ -1,4 +1,4 @@
1
- import type { PhysicalStore } from './models/physical-store'
1
+ import type { PhysicalStore } from './models/physical-store.js'
2
2
  import { usingAsync } from '@furystack/utils'
3
3
  import { Injector } from '@furystack/inject'
4
4
  import { describe, it, expect } from 'vitest'
@@ -1,2 +1,2 @@
1
- export * from './authorization-error'
2
- export * from './aggregated-error'
1
+ export * from './authorization-error.js'
2
+ export * from './aggregated-error.js'
package/src/helpers.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { Injector } from '@furystack/inject'
2
- import { globalDisposables } from './global-disposables'
3
- import { IdentityContext } from './identity-context'
2
+ import { globalDisposables } from './global-disposables.js'
3
+ import { IdentityContext } from './identity-context.js'
4
4
  import type { Disposable } from '@furystack/utils'
5
- import { StoreManager } from './store-manager'
6
- import type { PhysicalStore } from './models/physical-store'
5
+ import { StoreManager } from './store-manager.js'
6
+ import type { PhysicalStore } from './models/physical-store.js'
7
7
 
8
8
  /**
9
9
  * The disposable will be disposed on process exit
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@furystack/inject'
2
- import type { User } from './models/user'
2
+ import type { User } from './models/user.js'
3
3
 
4
4
  @Injectable({ lifetime: 'scoped' })
5
5
  export class IdentityContext {
@@ -1,6 +1,6 @@
1
1
  import type { Constructable } from '@furystack/inject'
2
- import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store'
3
- import { selectFields, isOperator, isLogicalOperator } from './models/physical-store'
2
+ import type { PhysicalStore, FindOptions, PartialResult, FilterType, CreateResult } from './models/physical-store.js'
3
+ import { selectFields, isOperator, isLogicalOperator } from './models/physical-store.js'
4
4
 
5
5
  export class InMemoryStore<T, TPrimaryKey extends keyof T> implements PhysicalStore<T, TPrimaryKey, T> {
6
6
  /**
package/src/index.ts CHANGED
@@ -1,8 +1,8 @@
1
- export * from './errors'
2
- export * from './models/physical-store'
3
- export * from './models/user'
4
- export * from './in-memory-store'
5
- export * from './store-manager'
6
- export * from './global-disposables'
7
- export * from './identity-context'
8
- export * from './helpers'
1
+ export * from './errors/index.js'
2
+ export * from './models/physical-store.js'
3
+ export * from './models/user.js'
4
+ export * from './in-memory-store.js'
5
+ export * from './store-manager.js'
6
+ export * from './global-disposables.js'
7
+ export * from './identity-context.js'
8
+ export * from './helpers.js'
@@ -1,8 +1,8 @@
1
1
  import type { Constructable } from '@furystack/inject'
2
2
  import { Injectable } from '@furystack/inject'
3
3
  import type { Disposable } from '@furystack/utils'
4
- import { AggregatedError } from './errors'
5
- import type { PhysicalStore } from './models/physical-store'
4
+ import { AggregatedError } from './errors/aggregated-error.js'
5
+ import type { PhysicalStore } from './models/physical-store.js'
6
6
 
7
7
  /**
8
8
  * Manager class for store instances
@@ -1,3 +0,0 @@
1
- export * from './authorization-error';
2
- export * from './aggregated-error';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"identity-context.d.ts","sourceRoot":"","sources":["../src/identity-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,qBACa,eAAe;IACb,eAAe;IAIf,YAAY,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE;IAIhC,cAAc,CAAC,KAAK,SAAS,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;CAGlE"}
package/types/index.d.ts DELETED
@@ -1,9 +0,0 @@
1
- export * from './errors';
2
- export * from './models/physical-store';
3
- export * from './models/user';
4
- export * from './in-memory-store';
5
- export * from './store-manager';
6
- export * from './global-disposables';
7
- export * from './identity-context';
8
- export * from './helpers';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,yBAAyB,CAAA;AACvC,cAAc,eAAe,CAAA;AAC7B,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,WAAW,CAAA"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes