@zola_do/crud 0.2.5 → 0.2.7

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 (36) hide show
  1. package/README.md +599 -155
  2. package/dist/controller/entity-crud.controller.d.ts +6 -0
  3. package/dist/controller/entity-crud.controller.js +78 -6
  4. package/dist/controller/entity-crud.controller.js.map +1 -1
  5. package/dist/service/entity-crud.service.d.ts +5 -1
  6. package/dist/service/entity-crud.service.js +116 -35
  7. package/dist/service/entity-crud.service.js.map +1 -1
  8. package/dist/service/extra-crud.service.js +2 -28
  9. package/dist/service/extra-crud.service.js.map +1 -1
  10. package/dist/service/relation-crud.service.js +0 -12
  11. package/dist/service/relation-crud.service.js.map +1 -1
  12. package/dist/shared/exceptions/global-exception.filter.js +32 -10
  13. package/dist/shared/exceptions/global-exception.filter.js.map +1 -1
  14. package/dist/shared/index.d.ts +2 -0
  15. package/dist/shared/index.js +2 -0
  16. package/dist/shared/index.js.map +1 -1
  17. package/dist/shared/tokens/crud-idempotency.token.d.ts +1 -0
  18. package/dist/shared/tokens/crud-idempotency.token.js +5 -0
  19. package/dist/shared/tokens/crud-idempotency.token.js.map +1 -0
  20. package/dist/shared/types/crud-idempotency-store.interface.d.ts +4 -0
  21. package/dist/shared/types/crud-idempotency-store.interface.js +3 -0
  22. package/dist/shared/types/crud-idempotency-store.interface.js.map +1 -0
  23. package/dist/shared/types/crud-option.type.d.ts +22 -2
  24. package/dist/shared/utils/collection-query-merge.d.ts +3 -0
  25. package/dist/shared/utils/collection-query-merge.js +19 -0
  26. package/dist/shared/utils/collection-query-merge.js.map +1 -0
  27. package/dist/shared/utils/crud-hooks.helper.d.ts +1 -1
  28. package/dist/shared/utils/crud-hooks.helper.js +22 -3
  29. package/dist/shared/utils/crud-hooks.helper.js.map +1 -1
  30. package/dist/shared/utils/in-memory-idempotency.store.d.ts +6 -0
  31. package/dist/shared/utils/in-memory-idempotency.store.js +24 -0
  32. package/dist/shared/utils/in-memory-idempotency.store.js.map +1 -0
  33. package/dist/shared/utils/index.d.ts +2 -0
  34. package/dist/shared/utils/index.js +2 -0
  35. package/dist/shared/utils/index.js.map +1 -1
  36. package/package.json +2 -2
@@ -9,32 +9,54 @@ var GlobalExceptionFilter_1;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.GlobalExceptionFilter = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
+ function normalizeHttpExceptionMessage(exception) {
13
+ const res = exception.getResponse();
14
+ if (typeof res === 'string') {
15
+ return res;
16
+ }
17
+ if (res && typeof res === 'object' && 'message' in res) {
18
+ const m = res.message;
19
+ if (Array.isArray(m)) {
20
+ return m;
21
+ }
22
+ if (typeof m === 'string') {
23
+ return m;
24
+ }
25
+ }
26
+ return exception.message;
27
+ }
12
28
  let GlobalExceptionFilter = GlobalExceptionFilter_1 = class GlobalExceptionFilter {
13
29
  constructor() {
14
30
  this.logger = new common_1.Logger(GlobalExceptionFilter_1.name);
15
31
  }
16
32
  catch(exception, host) {
17
- var _a, _b;
33
+ var _a, _b, _c, _d, _e;
18
34
  const ctx = host.switchToHttp();
19
35
  const response = ctx.getResponse();
20
36
  const request = ctx.getRequest();
21
- const status = exception instanceof common_1.HttpException
37
+ const isHttp = exception instanceof common_1.HttpException;
38
+ const status = isHttp
22
39
  ? exception.getStatus()
23
- : common_1.HttpStatus.BAD_REQUEST;
24
- let message = exception instanceof common_1.HttpException
25
- ? exception.getResponse()['message']
26
- : exception.message;
27
- if (!message && exception.message) {
28
- message = exception.message;
40
+ : common_1.HttpStatus.INTERNAL_SERVER_ERROR;
41
+ const isProd = process.env.NODE_ENV === 'production';
42
+ let message;
43
+ if (isHttp) {
44
+ message = normalizeHttpExceptionMessage(exception);
45
+ }
46
+ else {
47
+ const err = exception;
48
+ message = isProd
49
+ ? 'Internal server error'
50
+ : (err === null || err === void 0 ? void 0 : err.message) || 'Internal server error';
29
51
  }
30
52
  const responseData = {
31
53
  statusCode: status,
32
54
  message,
33
55
  path: request.url,
34
56
  timestamp: new Date().toISOString(),
35
- exception,
36
57
  };
37
- this.logger.error(Object.assign(Object.assign({}, responseData), { remoteAddress: request.connection.remoteAddress, ip: request.ip, ips: request.ips, forward: (_a = request.headers['x-forwarded-for']) !== null && _a !== void 0 ? _a : '', real: (_b = request.headers['x-Real-IP']) !== null && _b !== void 0 ? _b : '' }));
58
+ const err = exception instanceof Error ? exception : undefined;
59
+ this.logger.error(Object.assign(Object.assign({}, responseData), { exceptionMessage: err === null || err === void 0 ? void 0 : err.message, stack: err === null || err === void 0 ? void 0 : err.stack, name: err === null || err === void 0 ? void 0 : err.name, remoteAddress: (_b = (_a = request.socket) === null || _a === void 0 ? void 0 : _a.remoteAddress) !== null && _b !== void 0 ? _b : (_c = request.connection) === null || _c === void 0 ? void 0 : _c.remoteAddress, ip: request.ip, ips: request.ips, forward: (_d = request.headers['x-forwarded-for']) !== null && _d !== void 0 ? _d : '', real: (_e = request.headers['x-Real-IP']) !== null && _e !== void 0 ? _e : '' }));
38
60
  response.status(status).json(responseData);
39
61
  return;
40
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../../src/shared/exceptions/global-exception.filter.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAOwB;AAGjB,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAA3B;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IAyCnE,CAAC;IAvCC,KAAK,CAAC,SAAc,EAAE,IAAmB;;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QACnC,MAAM,OAAO,GAAQ,GAAG,CAAC,UAAU,EAAE,CAAC;QAEtC,MAAM,MAAM,GACV,SAAS,YAAY,sBAAa;YAChC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE;YACvB,CAAC,CAAC,mBAAU,CAAC,WAAW,CAAC;QAE7B,IAAI,OAAO,GACT,SAAS,YAAY,sBAAa;YAChC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;YACpC,CAAC,CAAE,SAAmB,CAAC,OAAO,CAAC;QAEnC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,MAAM;YAClB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,GAAG;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,iCACZ,YAAY,KACf,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,EAC/C,EAAE,EAAE,OAAO,CAAC,EAAE,EACd,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,mCAAI,EAAE,EACjD,IAAI,EAAE,MAAA,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,mCAAI,EAAE,IACxC,CAAC;QAEH,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;CACF,CAAA;AA1CY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,cAAK,GAAE;GACK,qBAAqB,CA0CjC"}
1
+ {"version":3,"file":"global-exception.filter.js","sourceRoot":"","sources":["../../../src/shared/exceptions/global-exception.filter.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,5 @@ export * from './guards/crud-operation-disabled.guard';
6
6
  export * from './request-context';
7
7
  export * from './types';
8
8
  export * from './utils';
9
+ export * from './tokens/crud-idempotency.token';
10
+ export * from './types/crud-idempotency-store.interface';
@@ -22,4 +22,6 @@ __exportStar(require("./guards/crud-operation-disabled.guard"), exports);
22
22
  __exportStar(require("./request-context"), exports);
23
23
  __exportStar(require("./types"), exports);
24
24
  __exportStar(require("./utils"), exports);
25
+ __exportStar(require("./tokens/crud-idempotency.token"), exports);
26
+ __exportStar(require("./types/crud-idempotency-store.interface"), exports);
25
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,yEAAuD;AACvD,oDAAkC;AAClC,0CAAwB;AACxB,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,iDAA+B;AAC/B,yEAAuD;AACvD,oDAAkC;AAClC,0CAAwB;AACxB,0CAAwB;AACxB,kEAAgD;AAChD,2EAAyD"}
@@ -0,0 +1 @@
1
+ export declare const CRUD_IDEMPOTENCY_STORE: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CRUD_IDEMPOTENCY_STORE = void 0;
4
+ exports.CRUD_IDEMPOTENCY_STORE = Symbol('CRUD_IDEMPOTENCY_STORE');
5
+ //# sourceMappingURL=crud-idempotency.token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-idempotency.token.js","sourceRoot":"","sources":["../../../src/shared/tokens/crud-idempotency.token.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface CrudIdempotencyStore {
2
+ get(key: string): Promise<any | undefined>;
3
+ set(key: string, body: any, ttlMs?: number): Promise<void>;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=crud-idempotency-store.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-idempotency-store.interface.js","sourceRoot":"","sources":["../../../src/shared/types/crud-idempotency-store.interface.ts"],"names":[],"mappings":""}
@@ -1,6 +1,6 @@
1
1
  export type CrudContextPayload = Record<string, any>;
2
2
  export type CrudWherePayload = Record<string, any>;
3
- export type CrudEntityOperationHookName = 'create' | 'findAll' | 'findOne' | 'update' | 'delete' | 'restore';
3
+ export type CrudEntityOperationHookName = 'create' | 'findAll' | 'findOne' | 'update' | 'delete' | 'restore' | 'bulkCreate' | 'bulkDelete';
4
4
  export type CrudAuthorizeResult = boolean | void | Promise<boolean | void>;
5
5
  export type CrudHookContext = {
6
6
  req?: any;
@@ -54,7 +54,7 @@ export type CrudEndpointDisableConfig = CrudEndpointDisableMode | {
54
54
  mode: CrudEndpointDisableMode;
55
55
  reason?: string;
56
56
  };
57
- export type CrudEntityOperationName = 'create' | 'findAll' | 'findOne' | 'update' | 'delete' | 'restore' | 'findAllArchived';
57
+ export type CrudEntityOperationName = 'create' | 'findAll' | 'findOne' | 'update' | 'delete' | 'restore' | 'findAllArchived' | 'bulkCreate' | 'bulkDelete';
58
58
  export type CrudExtraOperationName = CrudEntityOperationName;
59
59
  export type CrudRelationOperationName = 'bulkSaveFirst' | 'bulkSaveSecond' | 'findAllFirst' | 'findAllSecond';
60
60
  export type EntityCrudOptions = {
@@ -95,6 +95,26 @@ export type EntityCrudOptions = {
95
95
  canFindOne?: CrudOperationAuthorizeHook;
96
96
  canUpdate?: CrudOperationAuthorizeHook;
97
97
  canDelete?: CrudOperationAuthorizeHook;
98
+ collectionQueryDefaults?: {
99
+ allowedFilterColumns?: string[];
100
+ allowedSortColumns?: string[];
101
+ };
102
+ optimisticConcurrency?: boolean;
103
+ idempotency?: {
104
+ enabled?: boolean;
105
+ headerName?: string;
106
+ ttlMs?: number;
107
+ };
108
+ enableBulkCreate?: boolean;
109
+ enableBulkDelete?: boolean;
110
+ bulkCreatePermission?: string;
111
+ bulkDeletePermission?: string;
112
+ beforeBulkCreate?: CrudOperationHook;
113
+ afterBulkCreate?: CrudOperationHook;
114
+ beforeBulkDelete?: CrudOperationHook;
115
+ afterBulkDelete?: CrudOperationHook;
116
+ canBulkCreate?: CrudOperationAuthorizeHook;
117
+ canBulkDelete?: CrudOperationAuthorizeHook;
98
118
  canRestore?: CrudOperationAuthorizeHook;
99
119
  operations?: Partial<Record<CrudEntityOperationName, CrudEndpointDisableConfig>>;
100
120
  };
@@ -0,0 +1,3 @@
1
+ import { CollectionQuery } from '@zola_do/collection-query';
2
+ import { EntityCrudOptions } from '../types/crud-option.type';
3
+ export declare function mergeEntityCrudCollectionQuery(query: CollectionQuery, options?: EntityCrudOptions): CollectionQuery;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeEntityCrudCollectionQuery = mergeEntityCrudCollectionQuery;
4
+ function mergeEntityCrudCollectionQuery(query, options) {
5
+ var _a, _b;
6
+ const d = options === null || options === void 0 ? void 0 : options.collectionQueryDefaults;
7
+ if (!d) {
8
+ return query;
9
+ }
10
+ const q = query;
11
+ if ((_a = d.allowedFilterColumns) === null || _a === void 0 ? void 0 : _a.length) {
12
+ q.allowedFilterColumns = d.allowedFilterColumns;
13
+ }
14
+ if ((_b = d.allowedSortColumns) === null || _b === void 0 ? void 0 : _b.length) {
15
+ q.allowedSortColumns = d.allowedSortColumns;
16
+ }
17
+ return query;
18
+ }
19
+ //# sourceMappingURL=collection-query-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-query-merge.js","sourceRoot":"","sources":["../../../src/shared/utils/collection-query-merge.ts"],"names":[],"mappings":";;AAMA,wEAgBC;AAhBD,SAAgB,8BAA8B,CAC5C,KAAsB,EACtB,OAA2B;;IAE3B,MAAM,CAAC,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,uBAAuB,CAAC;IAC3C,IAAI,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,CAAC,GAAG,KAAY,CAAC;IACvB,IAAI,MAAA,CAAC,CAAC,oBAAoB,0CAAE,MAAM,EAAE,CAAC;QACnC,CAAC,CAAC,oBAAoB,GAAG,CAAC,CAAC,oBAAoB,CAAC;IAClD,CAAC;IACD,IAAI,MAAA,CAAC,CAAC,kBAAkB,0CAAE,MAAM,EAAE,CAAC;QACjC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { CollectionQuery } from '@zola_do/collection-query';
2
2
  import { CrudContextPayload, CrudEntityOperationHookName, CrudHookContext, CrudWherePayload, CrudWriteFilterOptions, EntityCrudOptions, ExtraCrudOptions } from '../types';
3
3
  import { CrudRequestContextResolver } from '../request-context';
4
- type HookName = 'beforeCreate' | 'afterCreate' | 'beforeFindAll' | 'afterFindAll' | 'beforeFindOne' | 'afterFindOne' | 'beforeUpdate' | 'afterUpdate' | 'beforeDelete' | 'afterDelete' | 'beforeSoftDelete' | 'afterSoftDelete' | 'beforeRestore' | 'afterRestore' | 'beforeAssignFirst' | 'afterAssignFirst' | 'beforeAssignSecond' | 'afterAssignSecond';
4
+ type HookName = 'beforeCreate' | 'afterCreate' | 'beforeFindAll' | 'afterFindAll' | 'beforeFindOne' | 'afterFindOne' | 'beforeUpdate' | 'afterUpdate' | 'beforeDelete' | 'afterDelete' | 'beforeSoftDelete' | 'afterSoftDelete' | 'beforeRestore' | 'afterRestore' | 'beforeBulkCreate' | 'afterBulkCreate' | 'beforeBulkDelete' | 'afterBulkDelete' | 'beforeAssignFirst' | 'afterAssignFirst' | 'beforeAssignSecond' | 'afterAssignSecond';
5
5
  export declare const runCrudHook: (options: Record<string, any> | undefined, hookName: HookName, params: {
6
6
  id?: string;
7
7
  itemData?: CrudContextPayload;
@@ -50,6 +50,16 @@ const OPERATION_HOOK_NAMES = {
50
50
  after: ['afterRestore'],
51
51
  can: 'canRestore',
52
52
  },
53
+ bulkCreate: {
54
+ before: ['beforeBulkCreate'],
55
+ after: ['afterBulkCreate'],
56
+ can: 'canBulkCreate',
57
+ },
58
+ bulkDelete: {
59
+ before: ['beforeBulkDelete'],
60
+ after: ['afterBulkDelete'],
61
+ can: 'canBulkDelete',
62
+ },
53
63
  };
54
64
  const hasOperationHookResultKeys = (value) => 'itemData' in value ||
55
65
  'where' in value ||
@@ -119,14 +129,22 @@ const runOperationHook = async (options, hookName, context) => {
119
129
  mergeOperationHookResult(context, hookResult);
120
130
  };
121
131
  const runBeforeOperationHooks = async (options, context) => {
122
- const hookNames = OPERATION_HOOK_NAMES[context.operation].before;
132
+ const entry = OPERATION_HOOK_NAMES[context.operation];
133
+ if (!entry) {
134
+ return;
135
+ }
136
+ const hookNames = entry.before;
123
137
  for (const hookName of hookNames) {
124
138
  await runOperationHook(options, hookName, context);
125
139
  }
126
140
  };
127
141
  exports.runBeforeOperationHooks = runBeforeOperationHooks;
128
142
  const runAfterOperationHooks = async (options, context) => {
129
- const hookNames = OPERATION_HOOK_NAMES[context.operation].after;
143
+ const entry = OPERATION_HOOK_NAMES[context.operation];
144
+ if (!entry) {
145
+ return;
146
+ }
147
+ const hookNames = entry.after;
130
148
  for (const hookName of hookNames) {
131
149
  await runOperationHook(options, hookName, context);
132
150
  }
@@ -138,12 +156,13 @@ const assertAuthorized = (allowed) => {
138
156
  }
139
157
  };
140
158
  const runOperationAuthorization = async (options, context) => {
159
+ var _a;
141
160
  const authorize = options === null || options === void 0 ? void 0 : options.authorize;
142
161
  if (authorize) {
143
162
  const allowed = await authorize(context);
144
163
  assertAuthorized(allowed);
145
164
  }
146
- const canKey = OPERATION_HOOK_NAMES[context.operation].can;
165
+ const canKey = (_a = OPERATION_HOOK_NAMES[context.operation]) === null || _a === void 0 ? void 0 : _a.can;
147
166
  const canHook = canKey
148
167
  ? options === null || options === void 0 ? void 0 : options[canKey]
149
168
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"crud-hooks.helper.js","sourceRoot":"","sources":["../../../src/shared/utils/crud-hooks.helper.ts"],"names":[],"mappings":";;;AAAA,2CAAyE;AACzE,gEAA6E;AAY7E,wDAG4B;AAsB5B,MAAM,eAAe,GAAG,CACtB,OAAuC,EACvC,UAA8C,EAC9C,EAAE;IACF,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,KAAK,EAC9B,OAAwC,EACxC,QAAkB,EAClB,MAKC,EACD,EAAE;IACF,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,QAAQ,CAAiC,CAAC;IACjE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC,CAAC;AAjBW,QAAA,WAAW,eAiBtB;AAUF,MAAM,oBAAoB,GAAyB;IACjD,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,WAAW;KACjB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,GAAG,EAAE,YAAY;KAClB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,GAAG,EAAE,YAAY;KAClB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,cAAc,CAAC;QACxB,KAAK,EAAE,CAAC,aAAa,CAAC;QACtB,GAAG,EAAE,WAAW;KACjB;IACD,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,kBAAkB,EAAE,cAAc,CAAC;QAC5C,KAAK,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;QACzC,GAAG,EAAE,WAAW;KACjB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,CAAC,cAAc,CAAC;QACvB,GAAG,EAAE,YAAY;KAClB;CACF,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,KAA0B,EAAE,EAAE,CAChE,UAAU,IAAI,KAAK;IACnB,OAAO,IAAI,KAAK;IAChB,QAAQ,IAAI,KAAK;IACjB,QAAQ,IAAI,KAAK,CAAC;AAEpB,MAAM,wBAAwB,GAAG,CAC/B,OAAwB,EACxB,UAAe,EACf,EAAE;IACF,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAEhE,IAAI,UAAU,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,MAYrC,EAAmB,EAAE;;IACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM,EAAE,MAAA,MAAA,MAAM,CAAC,MAAM,mCAAI,MAAA,MAAM,CAAC,GAAG,0CAAE,MAAM,mCAAI,EAAE;QACjD,KAAK,EAAE,MAAA,MAAA,MAAM,CAAC,KAAK,mCAAI,MAAA,MAAM,CAAC,GAAG,0CAAE,KAAK,mCAAI,EAAE;QAC9C,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAA,MAAM,CAAC,KAAK,mCAAI,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,CAAC,GAAW,EAAE,KAAU,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,EAAE,CAAU,GAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAM;KACtD,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,qBAAqB,yBA+BhC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC5B,OAAsB,EACtB,QAAkB,EAClB,OAAwB,EACxB,EAAE;IACF,MAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,QAAQ,CAAkC,CAAC;IAClE,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAC1C,OAAsB,EACtB,OAAwB,EACxB,EAAE;IACF,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;IACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC;AAEK,MAAM,sBAAsB,GAAG,KAAK,EACzC,OAAsB,EACtB,OAAwB,EACxB,EAAE;IACF,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC;IAChE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;AACH,CAAC,CAAC;AARW,QAAA,sBAAsB,0BAQjC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAAuB,EAAE,EAAE;IACnD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,2BAAkB,CAAC,0BAA0B,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,KAAK,EAC5C,OAAsB,EACtB,OAAwB,EACxB,EAAE;IACF,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAC;IACrC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,MAAM,CAAsF;QACzG,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC;AApBW,QAAA,yBAAyB,6BAoBpC;AAEK,MAAM,2BAA2B,GAAG,CACzC,KAAsB,EACtB,KAAwB,EACxB,EAAE;IACF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CACnC,CAAC;IAEF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,KAAK,CAAC,KAAK,CAAC,IAAI,CACd,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM;QACN,KAAK;QACL,QAAQ,EAAE,kCAAe,CAAC,OAAO;KAClC,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,2BAA2B,+BAwBtC;AAEK,MAAM,uBAAuB,GAAG,KAAK,EAAE,MAO7C,EAAE,EAAE;IACH,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAEzE,MAAM,IAAA,oCAAkB,EAAC;QACvB,QAAQ;QACR,GAAG;QACH,OAAO;QACP,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAA,6BAAqB,EAAC;QACpC,SAAS,EAAE,QAAQ;QACnB,GAAG;QACH,QAAQ;QACR,OAAO;QACP,UAAU;KACX,CAAC,CAAC;IACH,MAAM,IAAA,+BAAuB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC,CAAC;AAzBW,QAAA,uBAAuB,2BAyBlC;AAEF,MAAM,gBAAgB,GAAG,CAAC,kBAA6B,EAAE,EAAE,CACzD,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;AAE9D,MAAM,oBAAoB,GAAG,CAClC,QAA4B,EAC5B,OAAgC,EAChC,EAAE;IACF,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,4BAAmB,CAAC,iBAAiB,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,aAAa,qBAA4B,QAAQ,CAAE,CAAC;IAC1D,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,KAAI,EAAE,CAAC,CAAC;IAEtE,KAAK,MAAM,YAAY,IAAI,kBAAkB,EAAE,CAAC;QAC9C,OAAO,aAAa,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,CAAC,EAAE,CAAC;QACnD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,kBAAkB,KAAI,EAAE,CAAC,CAAC;IAEjE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AA5BW,QAAA,oBAAoB,wBA4B/B"}
1
+ {"version":3,"file":"crud-hooks.helper.js","sourceRoot":"","sources":["../../../src/shared/utils/crud-hooks.helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { CrudIdempotencyStore } from '../types/crud-idempotency-store.interface';
2
+ export declare class InMemoryCrudIdempotencyStore implements CrudIdempotencyStore {
3
+ private readonly entries;
4
+ get(key: string): Promise<any | undefined>;
5
+ set(key: string, body: any, ttlMs?: number): Promise<void>;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InMemoryCrudIdempotencyStore = void 0;
4
+ class InMemoryCrudIdempotencyStore {
5
+ constructor() {
6
+ this.entries = new Map();
7
+ }
8
+ async get(key) {
9
+ const e = this.entries.get(key);
10
+ if (!e)
11
+ return undefined;
12
+ if (e.exp !== undefined && Date.now() > e.exp) {
13
+ this.entries.delete(key);
14
+ return undefined;
15
+ }
16
+ return e.val;
17
+ }
18
+ async set(key, body, ttlMs) {
19
+ const exp = ttlMs !== undefined && ttlMs > 0 ? Date.now() + ttlMs : undefined;
20
+ this.entries.set(key, { val: body, exp });
21
+ }
22
+ }
23
+ exports.InMemoryCrudIdempotencyStore = InMemoryCrudIdempotencyStore;
24
+ //# sourceMappingURL=in-memory-idempotency.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory-idempotency.store.js","sourceRoot":"","sources":["../../../src/shared/utils/in-memory-idempotency.store.ts"],"names":[],"mappings":";;;AAOA,MAAa,4BAA4B;IAAzC;QACmB,YAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAiBtD,CAAC;IAfC,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,CAAC,GAAG,CAAC;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,IAAS,EAAE,KAAc;QAC9C,MAAM,GAAG,GACP,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAlBD,oEAkBC"}
@@ -2,3 +2,5 @@ export * from './numeric.transformer';
2
2
  export * from './validate-dto';
3
3
  export * from './crud-hooks.helper';
4
4
  export * from './cursor-query.helper';
5
+ export * from './collection-query-merge';
6
+ export * from './in-memory-idempotency.store';
@@ -18,4 +18,6 @@ __exportStar(require("./numeric.transformer"), exports);
18
18
  __exportStar(require("./validate-dto"), exports);
19
19
  __exportStar(require("./crud-hooks.helper"), exports);
20
20
  __exportStar(require("./cursor-query.helper"), exports);
21
+ __exportStar(require("./collection-query-merge"), exports);
22
+ __exportStar(require("./in-memory-idempotency.store"), exports);
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B;AAC/B,sDAAoC;AACpC,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B;AAC/B,sDAAoC;AACpC,wDAAsC;AACtC,2DAAyC;AACzC,gEAA8C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zola_do/crud",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Generic CRUD controllers and services for NestJS",
5
5
  "author": "zolaDO",
6
6
  "license": "ISC",
@@ -75,7 +75,7 @@
75
75
  }
76
76
  },
77
77
  "dependencies": {
78
- "@zola_do/collection-query": "^0.2.0",
78
+ "@zola_do/collection-query": "^0.2.5",
79
79
  "@zola_do/authorization": "^0.2.0"
80
80
  },
81
81
  "devDependencies": {