@forestadmin/agent 1.66.0 → 1.66.1
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/dist/agent/services/chart.d.ts +102 -0
- package/dist/agent/services/chart.js +114 -0
- package/dist/routes/access/api-chart.d.ts +16 -0
- package/dist/routes/access/api-chart.js +47 -0
- package/dist/routes/modification/action.d.ts +16 -0
- package/dist/routes/modification/action.js +121 -0
- package/dist/services/authorization/internal/action-permission.d.ts +20 -0
- package/dist/services/authorization/internal/action-permission.js +98 -0
- package/dist/services/authorization/internal/generate-action-identifier.d.ts +12 -0
- package/dist/services/authorization/internal/generate-action-identifier.js +15 -0
- package/dist/services/authorization/internal/generate-actions-from-permissions.d.ts +12 -0
- package/dist/services/authorization/internal/generate-actions-from-permissions.js +139 -0
- package/dist/services/authorization/internal/generate-user-scope.d.ts +10 -0
- package/dist/services/authorization/internal/generate-user-scope.js +45 -0
- package/dist/services/authorization/internal/hash-chart.d.ts +5 -0
- package/dist/services/authorization/internal/hash-chart.js +58 -0
- package/dist/services/authorization/internal/rendering-permission.d.ts +39 -0
- package/dist/services/authorization/internal/rendering-permission.js +121 -0
- package/dist/services/authorization/internal/types.d.ts +255 -0
- package/dist/services/authorization/internal/types.js +54 -0
- package/dist/services/authorization/internal/user-permission.d.ts +16 -0
- package/dist/services/authorization/internal/user-permission.js +46 -0
- package/dist/services/permissions.d.ts +19 -0
- package/dist/services/permissions.js +85 -0
- package/dist/utils/forest-http-api.d.ts +37 -0
- package/dist/utils/forest-http-api.js +100 -0
- package/dist/utils/forest-schema/column-schema-validation.d.ts +5 -0
- package/dist/utils/forest-schema/column-schema-validation.js +14 -0
- package/dist/utils/forest-schema/emitter.d.ts +17 -0
- package/dist/utils/forest-schema/emitter.js +38 -0
- package/dist/utils/forest-schema/schema-generator.d.ts +6 -0
- package/dist/utils/forest-schema/schema-generator.js +13 -0
- package/dist/utils/forest-schema/schema-serializer.d.ts +12 -0
- package/dist/utils/forest-schema/schema-serializer.js +35 -0
- package/dist/utils/forest-schema/types.d.ts +85 -0
- package/dist/utils/forest-schema/types.js +16 -0
- package/package.json +4 -1
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const promises_1 = require("fs/promises");
|
|
7
|
+
const json_stringify_pretty_compact_1 = __importDefault(require("json-stringify-pretty-compact"));
|
|
8
|
+
const schema_generator_1 = __importDefault(require("./schema-generator"));
|
|
9
|
+
const schema_serializer_1 = __importDefault(require("./schema-serializer"));
|
|
10
|
+
// Load version from package.json at startup
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
12
|
+
const { version } = require('../../../package.json');
|
|
13
|
+
/**
|
|
14
|
+
* Generate and dispatch dataSource schema on agent start.
|
|
15
|
+
*/
|
|
16
|
+
class SchemaEmitter {
|
|
17
|
+
static async getSerializedSchema(options, dataSource) {
|
|
18
|
+
const schema = options.isProduction
|
|
19
|
+
? await SchemaEmitter.loadFromDisk(options.schemaPath)
|
|
20
|
+
: await schema_generator_1.default.generate(dataSource);
|
|
21
|
+
if (!options.isProduction) {
|
|
22
|
+
const pretty = (0, json_stringify_pretty_compact_1.default)(schema, { maxLength: 80 });
|
|
23
|
+
await (0, promises_1.writeFile)(options.schemaPath, pretty, { encoding: 'utf-8' });
|
|
24
|
+
}
|
|
25
|
+
return schema_serializer_1.default.serialize(schema, version);
|
|
26
|
+
}
|
|
27
|
+
static async loadFromDisk(schemaPath) {
|
|
28
|
+
try {
|
|
29
|
+
const fileContent = await (0, promises_1.readFile)(schemaPath, { encoding: 'utf-8' });
|
|
30
|
+
return JSON.parse(fileContent);
|
|
31
|
+
}
|
|
32
|
+
catch (e) {
|
|
33
|
+
throw new Error(`Cannot load ${schemaPath}. Providing a schema is mandatory in production mode.`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = SchemaEmitter;
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1pdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL2VtaXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwwQ0FBa0Q7QUFDbEQsa0dBQXNEO0FBR3RELDBFQUFpRDtBQUNqRCw0RUFBbUQ7QUFPbkQsNENBQTRDO0FBQzVDLDhEQUE4RDtBQUM5RCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDSCxNQUFxQixhQUFhO0lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQzlCLE9BQWdCLEVBQ2hCLFVBQXNCO1FBRXRCLE1BQU0sTUFBTSxHQUFjLE9BQU8sQ0FBQyxZQUFZO1lBQzVDLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUN0RCxDQUFDLENBQUMsTUFBTSwwQkFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRTtZQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFBLHVDQUFTLEVBQUMsTUFBTSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEQsTUFBTSxJQUFBLG9CQUFTLEVBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sMkJBQWdCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBa0I7UUFDbEQsSUFBSTtZQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSxtQkFBUSxFQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBRXRFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FDYixlQUFlLFVBQVUsdURBQXVELENBQ2pGLENBQUM7U0FDSDtJQUNILENBQUM7Q0FDRjtBQTVCRCxnQ0E0QkMifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DataSource } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
import { ForestServerCollection } from './types';
|
|
3
|
+
export default class SchemaGenerator {
|
|
4
|
+
static generate(dataSource: DataSource): Promise<ForestServerCollection[]>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=schema-generator.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const generator_collection_1 = __importDefault(require("./generator-collection"));
|
|
7
|
+
class SchemaGenerator {
|
|
8
|
+
static async generate(dataSource) {
|
|
9
|
+
return Promise.all(dataSource.collections.map(collection => generator_collection_1.default.buildSchema(collection)));
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.default = SchemaGenerator;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9mb3Jlc3Qtc2NoZW1hL3NjaGVtYS1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxrRkFBK0Q7QUFHL0QsTUFBcUIsZUFBZTtJQUNsQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFzQjtRQUMxQyxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsOEJBQXlCLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQzVGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFORCxrQ0FNQyJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ForestServerCollection } from './types';
|
|
2
|
+
declare type SerializedSchema = {
|
|
3
|
+
meta: {
|
|
4
|
+
schemaFileHash: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
export default class SchemaSerializer {
|
|
8
|
+
private static readonly meta;
|
|
9
|
+
static serialize(schema: ForestServerCollection[], lianaVersion: string): SerializedSchema;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=schema-serializer.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
7
|
+
const json_api_serializer_1 = __importDefault(require("json-api-serializer"));
|
|
8
|
+
class SchemaSerializer {
|
|
9
|
+
static serialize(schema, lianaVersion) {
|
|
10
|
+
const hash = crypto_1.default.createHash('sha1').update(JSON.stringify(schema)).digest('hex');
|
|
11
|
+
// Build serializer
|
|
12
|
+
const serializer = new json_api_serializer_1.default();
|
|
13
|
+
serializer.register('collections', {
|
|
14
|
+
// Pass the metadata provided to the serialization fn
|
|
15
|
+
topLevelMeta: (extraData) => extraData,
|
|
16
|
+
relationships: {
|
|
17
|
+
segments: { type: 'segments' },
|
|
18
|
+
actions: { type: 'actions' },
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
serializer.register('segments', {});
|
|
22
|
+
serializer.register('actions', {});
|
|
23
|
+
// Serialize
|
|
24
|
+
return serializer.serialize('collections', schema.map(c => ({ id: c.name, ...c })), { ...SchemaSerializer.meta, liana_version: lianaVersion, schemaFileHash: hash });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = SchemaSerializer;
|
|
28
|
+
SchemaSerializer.meta = {
|
|
29
|
+
liana: 'forest-nodejs-agent',
|
|
30
|
+
stack: {
|
|
31
|
+
engine: 'nodejs',
|
|
32
|
+
engine_version: process.versions && process.versions.node,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLXNlcmlhbGl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS9zY2hlbWEtc2VyaWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qiw4RUFBb0Q7QUFNcEQsTUFBcUIsZ0JBQWdCO0lBU25DLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBZ0MsRUFBRSxZQUFvQjtRQUNyRSxNQUFNLElBQUksR0FBRyxnQkFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRixtQkFBbUI7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSw2QkFBaUIsRUFBRSxDQUFDO1FBRTNDLFVBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO1lBQ2pDLHFEQUFxRDtZQUNyRCxZQUFZLEVBQUUsQ0FBQyxTQUFrQixFQUFFLEVBQUUsQ0FBQyxTQUFTO1lBQy9DLGFBQWEsRUFBRTtnQkFDYixRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO2FBQzdCO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbkMsWUFBWTtRQUNaLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FDekIsYUFBYSxFQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3ZDLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQzVELENBQUM7SUFDeEIsQ0FBQzs7QUFoQ0gsbUNBaUNDO0FBaEN5QixxQkFBSSxHQUFHO0lBQzdCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLFFBQVE7UUFDaEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJO0tBQzFEO0NBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { PrimitiveTypes } from '@forestadmin/datasource-toolkit';
|
|
2
|
+
export declare type ForestServerColumnType = PrimitiveTypes | [ForestServerColumnType] | {
|
|
3
|
+
fields: Array<{
|
|
4
|
+
field: string;
|
|
5
|
+
type: ForestServerColumnType;
|
|
6
|
+
}>;
|
|
7
|
+
};
|
|
8
|
+
export declare type ForestServerCollection = {
|
|
9
|
+
name: string;
|
|
10
|
+
icon: null;
|
|
11
|
+
integration: null;
|
|
12
|
+
isReadOnly: boolean;
|
|
13
|
+
isSearchable: boolean;
|
|
14
|
+
isVirtual: false;
|
|
15
|
+
onlyForRelationships: boolean;
|
|
16
|
+
paginationType: 'page';
|
|
17
|
+
actions: Array<ForestServerAction>;
|
|
18
|
+
fields: Array<ForestServerField>;
|
|
19
|
+
segments: Array<ForestServerSegment>;
|
|
20
|
+
};
|
|
21
|
+
export declare type ForestServerAction = {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
type: 'single' | 'bulk' | 'global';
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
endpoint: string;
|
|
27
|
+
httpMethod: 'POST';
|
|
28
|
+
redirect: unknown;
|
|
29
|
+
download: boolean;
|
|
30
|
+
fields: ForestServerActionField[];
|
|
31
|
+
hooks: {
|
|
32
|
+
load: boolean;
|
|
33
|
+
change: Array<unknown>;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export declare type ForestServerActionField = {
|
|
37
|
+
value: unknown;
|
|
38
|
+
defaultValue: unknown;
|
|
39
|
+
description: string | null;
|
|
40
|
+
enums: string[];
|
|
41
|
+
field: string;
|
|
42
|
+
hook: string;
|
|
43
|
+
isReadOnly: boolean;
|
|
44
|
+
isRequired: boolean;
|
|
45
|
+
reference: string | null;
|
|
46
|
+
type: ForestServerColumnType;
|
|
47
|
+
widget: null | 'belongsto select' | 'file picker';
|
|
48
|
+
};
|
|
49
|
+
export declare type ForestServerField = Partial<{
|
|
50
|
+
field: string;
|
|
51
|
+
type: ForestServerColumnType;
|
|
52
|
+
defaultValue: unknown;
|
|
53
|
+
enums: null | string[];
|
|
54
|
+
integration: null;
|
|
55
|
+
isFilterable: boolean;
|
|
56
|
+
isPrimaryKey: boolean;
|
|
57
|
+
isReadOnly: boolean;
|
|
58
|
+
isRequired: boolean;
|
|
59
|
+
isSortable: boolean;
|
|
60
|
+
isVirtual: boolean;
|
|
61
|
+
reference: null | string;
|
|
62
|
+
inverseOf: null | string;
|
|
63
|
+
relationship: 'BelongsTo' | 'BelongsToMany' | 'HasMany' | 'HasOne';
|
|
64
|
+
validations: Array<{
|
|
65
|
+
message: string | null;
|
|
66
|
+
type: ValidationType;
|
|
67
|
+
value: unknown;
|
|
68
|
+
}>;
|
|
69
|
+
}>;
|
|
70
|
+
export declare type ForestServerSegment = {
|
|
71
|
+
id: string;
|
|
72
|
+
name: string;
|
|
73
|
+
};
|
|
74
|
+
export declare enum ValidationType {
|
|
75
|
+
Present = "is present",
|
|
76
|
+
GreaterThan = "is greater than",
|
|
77
|
+
LessThan = "is less than",
|
|
78
|
+
Before = "is before",
|
|
79
|
+
After = "is after",
|
|
80
|
+
LongerThan = "is longer than",
|
|
81
|
+
ShorterThan = "is shorter than",
|
|
82
|
+
Contains = "contains",
|
|
83
|
+
Like = "is like"
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidationType = void 0;
|
|
4
|
+
var ValidationType;
|
|
5
|
+
(function (ValidationType) {
|
|
6
|
+
ValidationType["Present"] = "is present";
|
|
7
|
+
ValidationType["GreaterThan"] = "is greater than";
|
|
8
|
+
ValidationType["LessThan"] = "is less than";
|
|
9
|
+
ValidationType["Before"] = "is before";
|
|
10
|
+
ValidationType["After"] = "is after";
|
|
11
|
+
ValidationType["LongerThan"] = "is longer than";
|
|
12
|
+
ValidationType["ShorterThan"] = "is shorter than";
|
|
13
|
+
ValidationType["Contains"] = "contains";
|
|
14
|
+
ValidationType["Like"] = "is like";
|
|
15
|
+
})(ValidationType = exports.ValidationType || (exports.ValidationType = {}));
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvZm9yZXN0LXNjaGVtYS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwRUEsSUFBWSxjQVVYO0FBVkQsV0FBWSxjQUFjO0lBQ3hCLHdDQUFzQixDQUFBO0lBQ3RCLGlEQUErQixDQUFBO0lBQy9CLDJDQUF5QixDQUFBO0lBQ3pCLHNDQUFvQixDQUFBO0lBQ3BCLG9DQUFrQixDQUFBO0lBQ2xCLCtDQUE2QixDQUFBO0lBQzdCLGlEQUErQixDQUFBO0lBQy9CLHVDQUFxQixDQUFBO0lBQ3JCLGtDQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFWVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQVV6QiJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.66.
|
|
3
|
+
"version": "1.66.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -60,5 +60,8 @@
|
|
|
60
60
|
"openid-client": "^5.7.1",
|
|
61
61
|
"reflect-metadata": "^0.1.13",
|
|
62
62
|
"rxjs": "^7.8.0"
|
|
63
|
+
},
|
|
64
|
+
"overrides": {
|
|
65
|
+
"@paralleldrive/cuid2": "2.2.2"
|
|
63
66
|
}
|
|
64
67
|
}
|