hh-contracts 0.0.33 → 0.0.35
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/build/common/constants/index.js +2 -1
- package/build/common/constants/locales.constant.js +21 -0
- package/build/common/models/index.js +1 -0
- package/build/common/models/language-values.schema.js +6 -0
- package/build/permissions/contracts/create-permission.contract.js +1 -19
- package/build/permissions/contracts/delete-permission.contract.js +1 -1
- package/build/permissions/contracts/find-many-permission.contract.js +4 -4
- package/build/permissions/contracts/find-permission.contract.js +8 -5
- package/build/permissions/contracts/update-permission.contract.js +1 -1
- package/build/permissions/permission.model.js +24 -8
- package/build/permissions/permission.response.schema.js +1 -1
- package/common/constants/index.ts +2 -1
- package/common/constants/locales.constant.ts +25 -0
- package/common/models/index.ts +1 -0
- package/common/models/language-values.schema.ts +4 -0
- package/package.json +1 -1
- package/permissions/contracts/create-permission.contract.ts +2 -20
- package/permissions/contracts/delete-permission.contract.ts +2 -2
- package/permissions/contracts/find-many-permission.contract.ts +11 -6
- package/permissions/contracts/find-permission.contract.ts +9 -8
- package/permissions/contracts/update-permission.contract.ts +2 -2
- package/permissions/permission.model.ts +30 -9
- package/permissions/permission.response.schema.ts +7 -5
|
@@ -15,10 +15,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./app-ability.constant"), exports);
|
|
18
|
+
__exportStar(require("./app-error.constant"), exports);
|
|
19
|
+
__exportStar(require("./locales.constant"), exports);
|
|
18
20
|
__exportStar(require("./default-pagination-config.constant"), exports);
|
|
19
21
|
__exportStar(require("./http-method.constant"), exports);
|
|
20
22
|
__exportStar(require("./icon-key.constant"), exports);
|
|
21
23
|
__exportStar(require("./navigation-item-type.constant"), exports);
|
|
22
24
|
__exportStar(require("./order-direction.constant"), exports);
|
|
23
25
|
__exportStar(require("./route-component-key.constants"), exports);
|
|
24
|
-
__exportStar(require("./app-error.constant"), exports);
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LANGUAGE_VALUES = exports.LANGUAGE = void 0;
|
|
4
|
+
const icon_key_constant_1 = require("./icon-key.constant");
|
|
5
|
+
exports.LANGUAGE = {
|
|
6
|
+
en: {
|
|
7
|
+
value: 'en',
|
|
8
|
+
label: 'English',
|
|
9
|
+
flag: icon_key_constant_1.ICON_KEY.flagGB,
|
|
10
|
+
locale: 'en-US',
|
|
11
|
+
postgressLocale: 'en_US',
|
|
12
|
+
},
|
|
13
|
+
ru: {
|
|
14
|
+
value: 'ru',
|
|
15
|
+
label: 'Русский',
|
|
16
|
+
flag: icon_key_constant_1.ICON_KEY.flagRU,
|
|
17
|
+
locale: 'ru-RU',
|
|
18
|
+
postgressLocale: 'ru_RU',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
exports.LANGUAGE_VALUES = Object.keys(exports.LANGUAGE);
|
|
@@ -23,3 +23,4 @@ __exportStar(require("./order.schema"), exports);
|
|
|
23
23
|
__exportStar(require("./pagination.schema"), exports);
|
|
24
24
|
__exportStar(require("./search.schema"), exports);
|
|
25
25
|
__exportStar(require("./timestamp.schemas"), exports);
|
|
26
|
+
__exportStar(require("./language-values.schema"), exports);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LanguageValuesSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
exports.LanguageValuesSchema = zod_1.z.enum(constants_1.LANGUAGE_VALUES);
|
|
@@ -1,32 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CreatePermissionContract = void 0;
|
|
4
|
-
const zod_1 = require("zod");
|
|
5
4
|
const common_1 = require("../../common");
|
|
6
5
|
const permissions_api_1 = require("../permissions.api");
|
|
7
6
|
const permission_model_1 = require("../permission.model");
|
|
8
7
|
const permission_response_schema_1 = require("../permission.response.schema");
|
|
9
|
-
const CreatePermissionContractRequestSchema = permission_model_1.
|
|
8
|
+
const CreatePermissionContractRequestSchema = permission_model_1.PersistedPermissionSchema.omit({
|
|
10
9
|
id: true,
|
|
11
10
|
createdAt: true,
|
|
12
11
|
updatedAt: true,
|
|
13
|
-
}).extend({
|
|
14
|
-
conditions: zod_1.z
|
|
15
|
-
.string()
|
|
16
|
-
.transform(val => (val === '' ? undefined : val))
|
|
17
|
-
.optional()
|
|
18
|
-
.nullable()
|
|
19
|
-
.refine(val => {
|
|
20
|
-
if (val === undefined || val === null)
|
|
21
|
-
return true;
|
|
22
|
-
try {
|
|
23
|
-
JSON.parse(val);
|
|
24
|
-
return true;
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
}, { message: 'invalidJson' }),
|
|
30
12
|
});
|
|
31
13
|
var CreatePermissionContract;
|
|
32
14
|
(function (CreatePermissionContract) {
|
|
@@ -9,5 +9,5 @@ var DeletePermissionContract;
|
|
|
9
9
|
DeletePermissionContract.getUrl = permissions_api_1.PERMISSIONS_API.delete;
|
|
10
10
|
DeletePermissionContract.endpoint = permissions_api_1.PERMISSIONS_CONTROLLER.endpoints.delete;
|
|
11
11
|
DeletePermissionContract.httpMethod = common_1.HTTP_METHOD.delete;
|
|
12
|
-
DeletePermissionContract.ResponseSchema = permission_model_1.
|
|
12
|
+
DeletePermissionContract.ResponseSchema = permission_model_1.PersistedPermissionSchema;
|
|
13
13
|
})(DeletePermissionContract || (exports.DeletePermissionContract = DeletePermissionContract = {}));
|
|
@@ -5,15 +5,15 @@ const zod_1 = require("zod");
|
|
|
5
5
|
const common_1 = require("../../common");
|
|
6
6
|
const permission_model_1 = require("../permission.model");
|
|
7
7
|
const permissions_api_1 = require("../permissions.api");
|
|
8
|
-
const BaseQuerySchema = permission_model_1.
|
|
8
|
+
const BaseQuerySchema = permission_model_1.PersistedPermissionSchema.pick({
|
|
9
9
|
subject: true,
|
|
10
10
|
action: true,
|
|
11
11
|
}).partial();
|
|
12
|
-
const OrderBySchema = permission_model_1.
|
|
13
|
-
const FindManyPermissionsContractRequestSchema = BaseQuerySchema.merge(common_1.CommonQueryParamsSchema).extend({ orderBy: OrderBySchema });
|
|
12
|
+
const OrderBySchema = permission_model_1.PersistedPermissionSchema.keyof().optional();
|
|
13
|
+
const FindManyPermissionsContractRequestSchema = BaseQuerySchema.merge(common_1.CommonQueryParamsSchema).extend({ orderBy: OrderBySchema, lang: zod_1.z.enum(common_1.LANGUAGE_VALUES).optional() });
|
|
14
14
|
const FindManyPermissionsContractResponseSchema = zod_1.z
|
|
15
15
|
.object({
|
|
16
|
-
permissions: zod_1.z.array(permission_model_1.
|
|
16
|
+
permissions: zod_1.z.array(permission_model_1.PersistedPermissionSchema),
|
|
17
17
|
})
|
|
18
18
|
.merge(common_1.PaginationResponseSchema);
|
|
19
19
|
var FindManyPermissionsContract;
|
|
@@ -4,14 +4,17 @@ exports.FindPermissionContract = void 0;
|
|
|
4
4
|
const common_1 = require("../../common");
|
|
5
5
|
const permission_model_1 = require("../permission.model");
|
|
6
6
|
const permissions_api_1 = require("../permissions.api");
|
|
7
|
-
const FindPermissionContractResponseSchema =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
// const FindPermissionContractResponseSchema = PersistedPermissionSchema.transform(
|
|
8
|
+
// ({ conditions, ...permission }) => ({
|
|
9
|
+
// ...permission,
|
|
10
|
+
// conditions: conditions === null ? undefined : conditions,
|
|
11
|
+
// }),
|
|
12
|
+
// );
|
|
11
13
|
var FindPermissionContract;
|
|
12
14
|
(function (FindPermissionContract) {
|
|
13
15
|
FindPermissionContract.getUrl = permissions_api_1.PERMISSIONS_API.find;
|
|
14
16
|
FindPermissionContract.endpoint = permissions_api_1.PERMISSIONS_CONTROLLER.endpoints.find;
|
|
15
17
|
FindPermissionContract.httpMethod = common_1.HTTP_METHOD.get;
|
|
16
|
-
|
|
18
|
+
// export const ResponseSchema = FindPermissionContractResponseSchema;
|
|
19
|
+
FindPermissionContract.ResponseSchema = permission_model_1.PersistedPermissionSchema;
|
|
17
20
|
})(FindPermissionContract || (exports.FindPermissionContract = FindPermissionContract = {}));
|
|
@@ -11,5 +11,5 @@ var UpdatePermissionContract;
|
|
|
11
11
|
UpdatePermissionContract.endpoint = permissions_api_1.PERMISSIONS_CONTROLLER.endpoints.update;
|
|
12
12
|
UpdatePermissionContract.httpMethod = common_1.HTTP_METHOD.put;
|
|
13
13
|
UpdatePermissionContract.RequestSchema = create_permission_contract_1.CreatePermissionContract.RequestSchema;
|
|
14
|
-
UpdatePermissionContract.ResponseSchema = permission_model_1.
|
|
14
|
+
UpdatePermissionContract.ResponseSchema = permission_model_1.PersistedPermissionSchema;
|
|
15
15
|
})(UpdatePermissionContract || (exports.UpdatePermissionContract = UpdatePermissionContract = {}));
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.PersistedPermissionSchema = exports.JsonConditionsSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const common_1 = require("../common");
|
|
6
|
-
exports.
|
|
6
|
+
exports.JsonConditionsSchema = zod_1.z
|
|
7
|
+
.string()
|
|
8
|
+
.transform(val => (val === '' ? undefined : val))
|
|
9
|
+
.optional()
|
|
10
|
+
.nullable()
|
|
11
|
+
.refine(val => {
|
|
12
|
+
if (val === undefined || val === null)
|
|
13
|
+
return true;
|
|
14
|
+
try {
|
|
15
|
+
JSON.parse(val);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}, { message: 'invalidJson' });
|
|
22
|
+
exports.PersistedPermissionSchema = zod_1.z
|
|
7
23
|
.object({
|
|
8
24
|
id: zod_1.z.number({ invalid_type_error: 'idInvalid' }).positive({ message: 'idMustBePositive' }),
|
|
9
|
-
|
|
10
|
-
.string(
|
|
11
|
-
.
|
|
12
|
-
|
|
13
|
-
|
|
25
|
+
name_i18n: zod_1.z
|
|
26
|
+
.record(common_1.LanguageValuesSchema, zod_1.z.string().transform(s => s.trim()))
|
|
27
|
+
.refine(val => Object.values(val).some(str => str.length > 0), {
|
|
28
|
+
message: 'atLeastOneTranslationRequired',
|
|
29
|
+
}),
|
|
14
30
|
action: zod_1.z.nativeEnum(common_1.AppAbility.ACTION, {
|
|
15
31
|
invalid_type_error: 'actionInvalid',
|
|
16
32
|
required_error: 'actionRequired',
|
|
@@ -19,6 +35,6 @@ exports.PermissionSchema = zod_1.z
|
|
|
19
35
|
invalid_type_error: 'subjectInvalid',
|
|
20
36
|
required_error: 'subjectRequired',
|
|
21
37
|
}),
|
|
22
|
-
conditions:
|
|
38
|
+
conditions: exports.JsonConditionsSchema,
|
|
23
39
|
})
|
|
24
40
|
.merge(common_1.TimestampSchema);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PermissionResponseSchema = void 0;
|
|
4
4
|
const permission_model_1 = require("./permission.model");
|
|
5
|
-
exports.PermissionResponseSchema = permission_model_1.
|
|
5
|
+
exports.PermissionResponseSchema = permission_model_1.PersistedPermissionSchema.transform(({ conditions, ...rest }) => ({
|
|
6
6
|
...rest,
|
|
7
7
|
conditions: conditions ? JSON.parse(conditions) : undefined,
|
|
8
8
|
}));
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export * from './app-ability.constant';
|
|
2
|
+
export * from './app-error.constant';
|
|
3
|
+
export * from './locales.constant';
|
|
2
4
|
export * from './default-pagination-config.constant';
|
|
3
5
|
export * from './http-method.constant';
|
|
4
6
|
export * from './icon-key.constant';
|
|
5
7
|
export * from './navigation-item-type.constant';
|
|
6
8
|
export * from './order-direction.constant';
|
|
7
9
|
export * from './route-component-key.constants';
|
|
8
|
-
export * from './app-error.constant';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ICON_KEY } from './icon-key.constant';
|
|
2
|
+
|
|
3
|
+
export const LANGUAGE = {
|
|
4
|
+
en: {
|
|
5
|
+
value: 'en',
|
|
6
|
+
label: 'English',
|
|
7
|
+
flag: ICON_KEY.flagGB,
|
|
8
|
+
locale: 'en-US',
|
|
9
|
+
postgressLocale: 'en_US',
|
|
10
|
+
} as const,
|
|
11
|
+
ru: {
|
|
12
|
+
value: 'ru',
|
|
13
|
+
label: 'Русский',
|
|
14
|
+
flag: ICON_KEY.flagRU,
|
|
15
|
+
locale: 'ru-RU',
|
|
16
|
+
postgressLocale: 'ru_RU',
|
|
17
|
+
} as const,
|
|
18
|
+
} as const;
|
|
19
|
+
|
|
20
|
+
export type TLanguage = keyof typeof LANGUAGE;
|
|
21
|
+
|
|
22
|
+
export type TLocale = (typeof LANGUAGE)[TLanguage]['locale'];
|
|
23
|
+
export type TPostgresLocale = (typeof LANGUAGE)[TLanguage]['postgressLocale'];
|
|
24
|
+
|
|
25
|
+
export const LANGUAGE_VALUES = Object.keys(LANGUAGE) as [TLanguage, ...TLanguage[]];
|
package/common/models/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,31 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { HTTP_METHOD } from '../../common';
|
|
3
3
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
4
|
-
import {
|
|
4
|
+
import { PersistedPermissionSchema } from '../permission.model';
|
|
5
5
|
import { PermissionResponseSchema } from '../permission.response.schema';
|
|
6
6
|
|
|
7
|
-
const CreatePermissionContractRequestSchema =
|
|
7
|
+
const CreatePermissionContractRequestSchema = PersistedPermissionSchema.omit({
|
|
8
8
|
id: true,
|
|
9
9
|
createdAt: true,
|
|
10
10
|
updatedAt: true,
|
|
11
|
-
}).extend({
|
|
12
|
-
conditions: z
|
|
13
|
-
.string()
|
|
14
|
-
.transform(val => (val === '' ? undefined : val))
|
|
15
|
-
.optional()
|
|
16
|
-
.nullable()
|
|
17
|
-
.refine(
|
|
18
|
-
val => {
|
|
19
|
-
if (val === undefined || val === null) return true;
|
|
20
|
-
try {
|
|
21
|
-
JSON.parse(val);
|
|
22
|
-
return true;
|
|
23
|
-
} catch {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
{ message: 'invalidJson' },
|
|
28
|
-
),
|
|
29
11
|
});
|
|
30
12
|
|
|
31
13
|
export namespace CreatePermissionContract {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { HTTP_METHOD } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { PersistedPermissionSchema } from '../permission.model';
|
|
4
4
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
5
|
|
|
6
6
|
export namespace DeletePermissionContract {
|
|
@@ -8,6 +8,6 @@ export namespace DeletePermissionContract {
|
|
|
8
8
|
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.delete;
|
|
9
9
|
export const httpMethod = HTTP_METHOD.delete;
|
|
10
10
|
|
|
11
|
-
export const ResponseSchema =
|
|
11
|
+
export const ResponseSchema = PersistedPermissionSchema;
|
|
12
12
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
13
|
}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
HTTP_METHOD,
|
|
4
|
+
CommonQueryParamsSchema,
|
|
5
|
+
PaginationResponseSchema,
|
|
6
|
+
LANGUAGE_VALUES,
|
|
7
|
+
} from '../../common';
|
|
8
|
+
import { PersistedPermissionSchema } from '../permission.model';
|
|
4
9
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
10
|
|
|
6
|
-
const BaseQuerySchema =
|
|
11
|
+
const BaseQuerySchema = PersistedPermissionSchema.pick({
|
|
7
12
|
subject: true,
|
|
8
13
|
action: true,
|
|
9
14
|
}).partial();
|
|
10
15
|
|
|
11
|
-
const OrderBySchema =
|
|
16
|
+
const OrderBySchema = PersistedPermissionSchema.keyof().optional();
|
|
12
17
|
|
|
13
18
|
const FindManyPermissionsContractRequestSchema = BaseQuerySchema.merge(
|
|
14
19
|
CommonQueryParamsSchema,
|
|
15
|
-
).extend({ orderBy: OrderBySchema });
|
|
20
|
+
).extend({ orderBy: OrderBySchema, lang: z.enum(LANGUAGE_VALUES).optional() });
|
|
16
21
|
|
|
17
22
|
const FindManyPermissionsContractResponseSchema = z
|
|
18
23
|
.object({
|
|
19
|
-
permissions: z.array(
|
|
24
|
+
permissions: z.array(PersistedPermissionSchema),
|
|
20
25
|
})
|
|
21
26
|
.merge(PaginationResponseSchema);
|
|
22
27
|
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { HTTP_METHOD } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { PersistedPermissionSchema } from '../permission.model';
|
|
4
4
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
5
|
|
|
6
|
-
const FindPermissionContractResponseSchema =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
);
|
|
6
|
+
// const FindPermissionContractResponseSchema = PersistedPermissionSchema.transform(
|
|
7
|
+
// ({ conditions, ...permission }) => ({
|
|
8
|
+
// ...permission,
|
|
9
|
+
// conditions: conditions === null ? undefined : conditions,
|
|
10
|
+
// }),
|
|
11
|
+
// );
|
|
12
12
|
|
|
13
13
|
export namespace FindPermissionContract {
|
|
14
14
|
export const getUrl = PERMISSIONS_API.find;
|
|
15
15
|
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.find;
|
|
16
16
|
export const httpMethod = HTTP_METHOD.get;
|
|
17
17
|
|
|
18
|
-
export const ResponseSchema = FindPermissionContractResponseSchema;
|
|
18
|
+
// export const ResponseSchema = FindPermissionContractResponseSchema;
|
|
19
|
+
export const ResponseSchema = PersistedPermissionSchema;
|
|
19
20
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
20
21
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { HTTP_METHOD } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { PersistedPermissionSchema } from '../permission.model';
|
|
4
4
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
5
|
import { CreatePermissionContract } from './create-permission.contract';
|
|
6
6
|
|
|
@@ -12,6 +12,6 @@ export namespace UpdatePermissionContract {
|
|
|
12
12
|
export const RequestSchema = CreatePermissionContract.RequestSchema;
|
|
13
13
|
export type TRequest = z.infer<typeof RequestSchema>;
|
|
14
14
|
|
|
15
|
-
export const ResponseSchema =
|
|
15
|
+
export const ResponseSchema = PersistedPermissionSchema;
|
|
16
16
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
17
17
|
}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { AppAbility, TimestampSchema } from '../common';
|
|
2
|
+
import { AppAbility, LanguageValuesSchema, TimestampSchema } from '../common';
|
|
3
3
|
|
|
4
|
-
export const
|
|
4
|
+
export const JsonConditionsSchema = z
|
|
5
|
+
.string()
|
|
6
|
+
.transform(val => (val === '' ? undefined : val))
|
|
7
|
+
.optional()
|
|
8
|
+
.nullable()
|
|
9
|
+
.refine(
|
|
10
|
+
val => {
|
|
11
|
+
if (val === undefined || val === null) return true;
|
|
12
|
+
try {
|
|
13
|
+
JSON.parse(val);
|
|
14
|
+
return true;
|
|
15
|
+
} catch {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
{ message: 'invalidJson' },
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const PersistedPermissionSchema = z
|
|
5
23
|
.object({
|
|
6
24
|
id: z.number({ invalid_type_error: 'idInvalid' }).positive({ message: 'idMustBePositive' }),
|
|
7
|
-
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
25
|
+
name_i18n: z
|
|
26
|
+
.record(
|
|
27
|
+
LanguageValuesSchema,
|
|
28
|
+
z.string().transform(s => s.trim()),
|
|
29
|
+
)
|
|
30
|
+
.refine(val => Object.values(val).some(str => str.length > 0), {
|
|
31
|
+
message: 'atLeastOneTranslationRequired',
|
|
32
|
+
}),
|
|
12
33
|
action: z.nativeEnum(AppAbility.ACTION, {
|
|
13
34
|
invalid_type_error: 'actionInvalid',
|
|
14
35
|
required_error: 'actionRequired',
|
|
@@ -17,7 +38,7 @@ export const PermissionSchema = z
|
|
|
17
38
|
invalid_type_error: 'subjectInvalid',
|
|
18
39
|
required_error: 'subjectRequired',
|
|
19
40
|
}),
|
|
20
|
-
conditions:
|
|
41
|
+
conditions: JsonConditionsSchema,
|
|
21
42
|
})
|
|
22
43
|
.merge(TimestampSchema);
|
|
23
|
-
export type TPersistedPermission = z.infer<typeof
|
|
44
|
+
export type TPersistedPermission = z.infer<typeof PersistedPermissionSchema>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PersistedPermissionSchema } from './permission.model';
|
|
2
2
|
|
|
3
|
-
export const PermissionResponseSchema =
|
|
4
|
-
...rest
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export const PermissionResponseSchema = PersistedPermissionSchema.transform(
|
|
4
|
+
({ conditions, ...rest }) => ({
|
|
5
|
+
...rest,
|
|
6
|
+
conditions: conditions ? JSON.parse(conditions) : undefined,
|
|
7
|
+
}),
|
|
8
|
+
);
|