@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.
- package/README.md +31 -0
- package/dist/controller/entity-crud.controller.d.ts +1 -1
- package/dist/controller/entity-crud.controller.js +97 -31
- package/dist/controller/entity-crud.controller.js.map +1 -1
- package/dist/controller/extra-crud.controller.d.ts +1 -1
- package/dist/controller/extra-crud.controller.js +96 -31
- package/dist/controller/extra-crud.controller.js.map +1 -1
- package/dist/controller/relation-crud.controller.js +70 -22
- package/dist/controller/relation-crud.controller.js.map +1 -1
- package/dist/crud-operation/controller/entity-crud.controller.js +3 -3
- package/dist/crud-operation/controller/entity-crud.controller.js.map +1 -1
- package/dist/crud-operation/controller/extra-crud.controller.js +3 -3
- package/dist/crud-operation/controller/extra-crud.controller.js.map +1 -1
- package/dist/crud-operation/controller/relation-crud.controller.js +2 -2
- package/dist/crud-operation/controller/relation-crud.controller.js.map +1 -1
- package/dist/crud-operation/repository/entity-crud.repository.d.ts +3 -3
- package/dist/crud-operation/repository/entity-crud.repository.js +71 -9
- package/dist/crud-operation/repository/entity-crud.repository.js.map +1 -1
- package/dist/crud-operation/repository/extra-crud.repository.d.ts +3 -3
- package/dist/crud-operation/repository/extra-crud.repository.js +71 -9
- package/dist/crud-operation/repository/extra-crud.repository.js.map +1 -1
- package/dist/crud-operation/repository/relation-crud.repository.d.ts +2 -2
- package/dist/crud-operation/repository/relation-crud.repository.js +22 -2
- package/dist/crud-operation/repository/relation-crud.repository.js.map +1 -1
- package/dist/crud-operation/service/entity-crud.service.d.ts +3 -3
- package/dist/crud-operation/service/entity-crud.service.js +28 -6
- package/dist/crud-operation/service/entity-crud.service.js.map +1 -1
- package/dist/crud-operation/service/extra-crud.service.d.ts +3 -3
- package/dist/crud-operation/service/extra-crud.service.js +28 -6
- package/dist/crud-operation/service/extra-crud.service.js.map +1 -1
- package/dist/crud-operation/service/relation-crud.service.d.ts +2 -2
- package/dist/crud-operation/service/relation-crud.service.js +4 -4
- package/dist/crud-operation/service/relation-crud.service.js.map +1 -1
- package/dist/service/entity-crud.service.d.ts +3 -3
- package/dist/service/entity-crud.service.js +71 -9
- package/dist/service/entity-crud.service.js.map +1 -1
- package/dist/service/extra-crud.service.d.ts +3 -3
- package/dist/service/extra-crud.service.js +71 -9
- package/dist/service/extra-crud.service.js.map +1 -1
- package/dist/service/relation-crud.service.d.ts +2 -2
- package/dist/service/relation-crud.service.js +22 -2
- package/dist/service/relation-crud.service.js.map +1 -1
- package/dist/shared/guards/crud-operation-disabled.guard.d.ts +7 -0
- package/dist/shared/guards/crud-operation-disabled.guard.js +16 -0
- package/dist/shared/guards/crud-operation-disabled.guard.js.map +1 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/types/crud-option.type.d.ts +48 -0
- package/dist/shared/utils/crud-hooks.helper.d.ts +10 -0
- package/dist/shared/utils/crud-hooks.helper.js +42 -0
- package/dist/shared/utils/crud-hooks.helper.js.map +1 -0
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/shared/utils/index.js +1 -0
- package/dist/shared/utils/index.js.map +1 -1
- 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":";;;;;;;;;;;;AAAA,qCAAoD;AACpD,2CAA4C;AAC5C,gEAImC;AAEnC,
|
|
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"}
|
package/dist/shared/index.d.ts
CHANGED
|
@@ -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';
|
package/dist/shared/index.js
CHANGED
|
@@ -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);
|
package/dist/shared/index.js.map
CHANGED
|
@@ -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"}
|
|
@@ -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.
|
|
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
|
-
"
|
|
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.
|
|
43
|
-
"@zola_do/authorization": "^0.
|
|
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",
|