@zola_do/crud 0.2.1 → 0.2.3

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 (56) hide show
  1. package/README.md +31 -0
  2. package/dist/controller/entity-crud.controller.d.ts +1 -1
  3. package/dist/controller/entity-crud.controller.js +97 -31
  4. package/dist/controller/entity-crud.controller.js.map +1 -1
  5. package/dist/controller/extra-crud.controller.d.ts +1 -1
  6. package/dist/controller/extra-crud.controller.js +96 -31
  7. package/dist/controller/extra-crud.controller.js.map +1 -1
  8. package/dist/controller/relation-crud.controller.js +70 -22
  9. package/dist/controller/relation-crud.controller.js.map +1 -1
  10. package/dist/crud-operation/controller/entity-crud.controller.js +3 -3
  11. package/dist/crud-operation/controller/entity-crud.controller.js.map +1 -1
  12. package/dist/crud-operation/controller/extra-crud.controller.js +3 -3
  13. package/dist/crud-operation/controller/extra-crud.controller.js.map +1 -1
  14. package/dist/crud-operation/controller/relation-crud.controller.js +2 -2
  15. package/dist/crud-operation/controller/relation-crud.controller.js.map +1 -1
  16. package/dist/crud-operation/repository/entity-crud.repository.d.ts +3 -3
  17. package/dist/crud-operation/repository/entity-crud.repository.js +71 -9
  18. package/dist/crud-operation/repository/entity-crud.repository.js.map +1 -1
  19. package/dist/crud-operation/repository/extra-crud.repository.d.ts +3 -3
  20. package/dist/crud-operation/repository/extra-crud.repository.js +71 -9
  21. package/dist/crud-operation/repository/extra-crud.repository.js.map +1 -1
  22. package/dist/crud-operation/repository/relation-crud.repository.d.ts +2 -2
  23. package/dist/crud-operation/repository/relation-crud.repository.js +22 -2
  24. package/dist/crud-operation/repository/relation-crud.repository.js.map +1 -1
  25. package/dist/crud-operation/service/entity-crud.service.d.ts +3 -3
  26. package/dist/crud-operation/service/entity-crud.service.js +28 -6
  27. package/dist/crud-operation/service/entity-crud.service.js.map +1 -1
  28. package/dist/crud-operation/service/extra-crud.service.d.ts +3 -3
  29. package/dist/crud-operation/service/extra-crud.service.js +28 -6
  30. package/dist/crud-operation/service/extra-crud.service.js.map +1 -1
  31. package/dist/crud-operation/service/relation-crud.service.d.ts +2 -2
  32. package/dist/crud-operation/service/relation-crud.service.js +4 -4
  33. package/dist/crud-operation/service/relation-crud.service.js.map +1 -1
  34. package/dist/service/entity-crud.service.d.ts +3 -3
  35. package/dist/service/entity-crud.service.js +71 -9
  36. package/dist/service/entity-crud.service.js.map +1 -1
  37. package/dist/service/extra-crud.service.d.ts +3 -3
  38. package/dist/service/extra-crud.service.js +71 -9
  39. package/dist/service/extra-crud.service.js.map +1 -1
  40. package/dist/service/relation-crud.service.d.ts +2 -2
  41. package/dist/service/relation-crud.service.js +22 -2
  42. package/dist/service/relation-crud.service.js.map +1 -1
  43. package/dist/shared/guards/crud-operation-disabled.guard.d.ts +7 -0
  44. package/dist/shared/guards/crud-operation-disabled.guard.js +16 -0
  45. package/dist/shared/guards/crud-operation-disabled.guard.js.map +1 -0
  46. package/dist/shared/index.d.ts +1 -0
  47. package/dist/shared/index.js +1 -0
  48. package/dist/shared/index.js.map +1 -1
  49. package/dist/shared/types/crud-option.type.d.ts +48 -0
  50. package/dist/shared/utils/crud-hooks.helper.d.ts +10 -0
  51. package/dist/shared/utils/crud-hooks.helper.js +42 -0
  52. package/dist/shared/utils/crud-hooks.helper.js.map +1 -0
  53. package/dist/shared/utils/index.d.ts +1 -0
  54. package/dist/shared/utils/index.js +1 -0
  55. package/dist/shared/utils/index.js.map +1 -1
  56. package/package.json +11 -4
@@ -1 +1 @@
1
- {"version":3,"file":"relation-crud.service.js","sourceRoot":"","sources":["../../src/service/relation-crud.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-crud.service.js","sourceRoot":"","sources":["../../src/service/relation-crud.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ export declare class CrudOperationDisabledGuard implements CanActivate {
3
+ private readonly operation;
4
+ private readonly reason?;
5
+ constructor(operation: string, reason?: string);
6
+ canActivate(_context: ExecutionContext): boolean;
7
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudOperationDisabledGuard = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ class CrudOperationDisabledGuard {
6
+ constructor(operation, reason) {
7
+ this.operation = operation;
8
+ this.reason = reason;
9
+ }
10
+ canActivate(_context) {
11
+ var _a;
12
+ throw new common_1.ForbiddenException((_a = this.reason) !== null && _a !== void 0 ? _a : 'crud_operation_disabled');
13
+ }
14
+ }
15
+ exports.CrudOperationDisabledGuard = CrudOperationDisabledGuard;
16
+ //# sourceMappingURL=crud-operation-disabled.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-operation-disabled.guard.js","sourceRoot":"","sources":["../../../src/shared/guards/crud-operation-disabled.guard.ts"],"names":[],"mappings":";;;AAAA,2CAAmF;AAEnF,MAAa,0BAA0B;IACrC,YACmB,SAAiB,EACjB,MAAe;QADf,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ,WAAW,CAAC,QAA0B;;QAEpC,MAAM,IAAI,2BAAkB,CAAC,MAAA,IAAI,CAAC,MAAM,mCAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;CACF;AAVD,gEAUC"}
@@ -2,6 +2,7 @@ export * from './api-data';
2
2
  export * from './decorators';
3
3
  export * from './exceptions';
4
4
  export * from './interceptors';
5
+ export * from './guards/crud-operation-disabled.guard';
5
6
  export * from './request-context';
6
7
  export * from './types';
7
8
  export * from './utils';
@@ -18,6 +18,7 @@ __exportStar(require("./api-data"), exports);
18
18
  __exportStar(require("./decorators"), exports);
19
19
  __exportStar(require("./exceptions"), exports);
20
20
  __exportStar(require("./interceptors"), exports);
21
+ __exportStar(require("./guards/crud-operation-disabled.guard"), exports);
21
22
  __exportStar(require("./request-context"), exports);
22
23
  __exportStar(require("./types"), exports);
23
24
  __exportStar(require("./utils"), exports);
@@ -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,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"}
@@ -7,6 +7,25 @@ export type CrudUpdateContextHook = (params: {
7
7
  itemData: CrudContextPayload;
8
8
  req?: any;
9
9
  }) => void | Partial<CrudContextPayload> | Promise<void | Partial<CrudContextPayload>>;
10
+ export type CrudMutationHook = (params: {
11
+ id?: string;
12
+ itemData?: CrudContextPayload;
13
+ entity?: CrudContextPayload;
14
+ req?: any;
15
+ }) => void | Partial<CrudContextPayload> | Promise<void | Partial<CrudContextPayload>>;
16
+ export type CrudWriteFilterOptions = {
17
+ allowedWriteFields?: string[];
18
+ blockedWriteFields?: string[];
19
+ };
20
+ export type CrudDeleteMode = 'auto' | 'soft' | 'hard';
21
+ export type CrudEndpointDisableMode = 'hide' | 'block';
22
+ export type CrudEndpointDisableConfig = CrudEndpointDisableMode | {
23
+ mode: CrudEndpointDisableMode;
24
+ reason?: string;
25
+ };
26
+ export type CrudEntityOperationName = 'create' | 'findAll' | 'findOne' | 'update' | 'delete' | 'restore' | 'findAllArchived';
27
+ export type CrudExtraOperationName = CrudEntityOperationName;
28
+ export type CrudRelationOperationName = 'bulkSaveFirst' | 'bulkSaveSecond' | 'findAllFirst' | 'findAllSecond';
10
29
  export type EntityCrudOptions = {
11
30
  createDto?: {
12
31
  new (): NonNullable<unknown>;
@@ -22,6 +41,18 @@ export type EntityCrudOptions = {
22
41
  viewArchivedPermission?: string;
23
42
  mapCreateContext?: CrudCreateContextHook;
24
43
  mapUpdateContext?: CrudUpdateContextHook;
44
+ allowedWriteFields?: string[];
45
+ blockedWriteFields?: string[];
46
+ beforeCreate?: CrudMutationHook;
47
+ afterCreate?: CrudMutationHook;
48
+ beforeUpdate?: CrudMutationHook;
49
+ afterUpdate?: CrudMutationHook;
50
+ beforeSoftDelete?: CrudMutationHook;
51
+ afterSoftDelete?: CrudMutationHook;
52
+ deleteMode?: CrudDeleteMode;
53
+ beforeRestore?: CrudMutationHook;
54
+ afterRestore?: CrudMutationHook;
55
+ operations?: Partial<Record<CrudEntityOperationName, CrudEndpointDisableConfig>>;
25
56
  };
26
57
  export type ExtraCrudOptions = {
27
58
  entityIdName: string;
@@ -39,6 +70,18 @@ export type ExtraCrudOptions = {
39
70
  viewArchivedPermission?: string;
40
71
  mapCreateContext?: CrudCreateContextHook;
41
72
  mapUpdateContext?: CrudUpdateContextHook;
73
+ allowedWriteFields?: string[];
74
+ blockedWriteFields?: string[];
75
+ beforeCreate?: CrudMutationHook;
76
+ afterCreate?: CrudMutationHook;
77
+ beforeUpdate?: CrudMutationHook;
78
+ afterUpdate?: CrudMutationHook;
79
+ beforeSoftDelete?: CrudMutationHook;
80
+ afterSoftDelete?: CrudMutationHook;
81
+ deleteMode?: CrudDeleteMode;
82
+ beforeRestore?: CrudMutationHook;
83
+ afterRestore?: CrudMutationHook;
84
+ operations?: Partial<Record<CrudExtraOperationName, CrudEndpointDisableConfig>>;
42
85
  };
43
86
  export interface RelationCrudOptions {
44
87
  firstEntityIdName: string;
@@ -53,4 +96,9 @@ export interface RelationCrudOptions {
53
96
  };
54
97
  createPermission?: string;
55
98
  viewPermission?: string;
99
+ beforeAssignFirst?: CrudMutationHook;
100
+ afterAssignFirst?: CrudMutationHook;
101
+ beforeAssignSecond?: CrudMutationHook;
102
+ afterAssignSecond?: CrudMutationHook;
103
+ operations?: Partial<Record<CrudRelationOperationName, CrudEndpointDisableConfig>>;
56
104
  }
@@ -0,0 +1,10 @@
1
+ import { CrudContextPayload, CrudWriteFilterOptions } from '../types';
2
+ type HookName = 'beforeCreate' | 'afterCreate' | 'beforeUpdate' | 'afterUpdate' | 'beforeSoftDelete' | 'afterSoftDelete' | 'beforeRestore' | 'afterRestore' | 'beforeAssignFirst' | 'afterAssignFirst' | 'beforeAssignSecond' | 'afterAssignSecond';
3
+ export declare const runCrudHook: (options: Record<string, any> | undefined, hookName: HookName, params: {
4
+ id?: string;
5
+ itemData?: CrudContextPayload;
6
+ entity?: CrudContextPayload;
7
+ req?: any;
8
+ }) => Promise<void>;
9
+ export declare const sanitizeWritePayload: (itemData: CrudContextPayload, options?: CrudWriteFilterOptions) => CrudContextPayload;
10
+ export {};
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeWritePayload = exports.runCrudHook = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const mergeHookResult = (payload, hookResult) => {
6
+ if (!payload || !hookResult || typeof hookResult !== 'object') {
7
+ return;
8
+ }
9
+ Object.assign(payload, hookResult);
10
+ };
11
+ const runCrudHook = async (options, hookName, params) => {
12
+ const hook = options === null || options === void 0 ? void 0 : options[hookName];
13
+ if (!hook) {
14
+ return;
15
+ }
16
+ const hookResult = await hook(params);
17
+ mergeHookResult(params.itemData, hookResult);
18
+ };
19
+ exports.runCrudHook = runCrudHook;
20
+ const hasAllowedFields = (allowedWriteFields) => Array.isArray(allowedWriteFields) && allowedWriteFields.length > 0;
21
+ const sanitizeWritePayload = (itemData, options) => {
22
+ if (!itemData || typeof itemData !== 'object') {
23
+ throw new common_1.BadRequestException('invalid_payload');
24
+ }
25
+ const sanitizedData = Object.assign({}, itemData);
26
+ const blockedWriteFields = new Set((options === null || options === void 0 ? void 0 : options.blockedWriteFields) || []);
27
+ for (const blockedField of blockedWriteFields) {
28
+ delete sanitizedData[blockedField];
29
+ }
30
+ if (!hasAllowedFields(options === null || options === void 0 ? void 0 : options.allowedWriteFields)) {
31
+ return sanitizedData;
32
+ }
33
+ const allowedFields = new Set((options === null || options === void 0 ? void 0 : options.allowedWriteFields) || []);
34
+ Object.keys(sanitizedData).forEach((field) => {
35
+ if (!allowedFields.has(field)) {
36
+ delete sanitizedData[field];
37
+ }
38
+ });
39
+ return sanitizedData;
40
+ };
41
+ exports.sanitizeWritePayload = sanitizeWritePayload;
42
+ //# sourceMappingURL=crud-hooks.helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-hooks.helper.js","sourceRoot":"","sources":["../../../src/shared/utils/crud-hooks.helper.ts"],"names":[],"mappings":";;;AAAA,2CAAqD;AAqBrD,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;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,2 +1,3 @@
1
1
  export * from './numeric.transformer';
2
2
  export * from './validate-dto';
3
+ export * from './crud-hooks.helper';
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./numeric.transformer"), exports);
18
18
  __exportStar(require("./validate-dto"), exports);
19
+ __exportStar(require("./crud-hooks.helper"), exports);
19
20
  //# 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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,iDAA+B;AAC/B,sDAAoC"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@zola_do/crud",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "description": "Generic CRUD controllers and services for NestJS",
5
5
  "author": "zolaDO",
6
6
  "license": "ISC",
7
+ "sideEffects": false,
8
+ "engines": {
9
+ "node": ">=20.0.0"
10
+ },
7
11
  "publishConfig": {
8
12
  "access": "public"
9
13
  },
@@ -12,6 +16,7 @@
12
16
  "exports": {
13
17
  ".": {
14
18
  "types": "./dist/index.d.ts",
19
+ "require": "./dist/index.js",
15
20
  "default": "./dist/index.js"
16
21
  }
17
22
  },
@@ -20,7 +25,9 @@
20
25
  "README.md"
21
26
  ],
22
27
  "scripts": {
23
- "build": "rimraf dist && tsc",
28
+ "clean": "rimraf dist",
29
+ "typecheck": "tsc --noEmit",
30
+ "build": "npm run clean && tsc",
24
31
  "prepublishOnly": "npm run build"
25
32
  },
26
33
  "peerDependencies": {
@@ -39,8 +46,8 @@
39
46
  }
40
47
  },
41
48
  "dependencies": {
42
- "@zola_do/collection-query": "^0.1.9",
43
- "@zola_do/authorization": "^0.1.9"
49
+ "@zola_do/collection-query": "^0.2.0",
50
+ "@zola_do/authorization": "^0.2.0"
44
51
  },
45
52
  "devDependencies": {
46
53
  "rimraf": "^6.1.3",