@qelos/plugin-play 3.3.4 → 3.3.5
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/app.js +2 -2
- package/dist/app.js.map +1 -1
- package/dist/crud.d.ts +7 -0
- package/dist/crud.js +95 -14
- package/dist/crud.js.map +1 -1
- package/dist/crud.types.d.ts +13 -1
- package/dist/endpoints.js +3 -2
- package/dist/endpoints.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/app.ts +2 -2
- package/src/crud.ts +101 -15
- package/src/crud.types.ts +17 -2
- package/src/endpoints.ts +3 -2
- package/src/index.ts +1 -0
package/dist/app.js
CHANGED
|
@@ -136,12 +136,12 @@ function playEndpoints() {
|
|
|
136
136
|
});
|
|
137
137
|
getApp().route(getFrontendAuthorizationRoute());
|
|
138
138
|
getApp().route(getFrontendUnAuthorizationRoute());
|
|
139
|
-
endpoints.forEach((routeOptions
|
|
139
|
+
endpoints.forEach((routeOptions) => {
|
|
140
140
|
const route = {
|
|
141
141
|
...routeOptions,
|
|
142
142
|
};
|
|
143
143
|
if (routeOptions.verifyToken) {
|
|
144
|
-
route.preHandler =
|
|
144
|
+
route.preHandler = routeOptions.url.startsWith(manifest.proxyPath) ? verifyAccessToken : verifyCookieToken;
|
|
145
145
|
}
|
|
146
146
|
getApp().route(route);
|
|
147
147
|
});
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/crud.d.ts
CHANGED
|
@@ -1,2 +1,9 @@
|
|
|
1
1
|
import { ICrudOptions } from './crud.types';
|
|
2
|
+
export declare function getPlural(word: string): string;
|
|
3
|
+
export declare function getDisplayNames(name: string): {
|
|
4
|
+
name: string;
|
|
5
|
+
plural: string;
|
|
6
|
+
capitalized: string;
|
|
7
|
+
capitalizedPlural: string;
|
|
8
|
+
};
|
|
2
9
|
export declare function createCrud<ResourcePublicData = any, ResourceInsertData = any>(options: ICrudOptions<ResourcePublicData, ResourceInsertData>): void;
|
package/dist/crud.js
CHANGED
|
@@ -3,7 +3,7 @@ import { ResponseError } from './response-error';
|
|
|
3
3
|
import logger from './logger';
|
|
4
4
|
import manifest from './manifest';
|
|
5
5
|
import { addGroupedMicroFrontends } from './micro-frontends';
|
|
6
|
-
function getPlural(word) {
|
|
6
|
+
export function getPlural(word) {
|
|
7
7
|
const lastChar = word[word.length - 1].toLowerCase();
|
|
8
8
|
if (['x', 'h', 's'].includes(lastChar)) {
|
|
9
9
|
return word + 'es';
|
|
@@ -13,7 +13,7 @@ function getPlural(word) {
|
|
|
13
13
|
}
|
|
14
14
|
return word + 's';
|
|
15
15
|
}
|
|
16
|
-
function getDisplayNames(name) {
|
|
16
|
+
export function getDisplayNames(name) {
|
|
17
17
|
const plural = getPlural(name.toLowerCase());
|
|
18
18
|
const capitalized = name.split(' ').map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' ');
|
|
19
19
|
const capitalizedPlural = getPlural(capitalized);
|
|
@@ -24,6 +24,80 @@ function getDisplayNames(name) {
|
|
|
24
24
|
capitalizedPlural
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
+
function isPropValidToDisplay(value, propSchema, dest) {
|
|
28
|
+
return (propSchema.public &&
|
|
29
|
+
!(propSchema.hideInList && dest === 'list') &&
|
|
30
|
+
(typeof propSchema.type === 'undefined' ||
|
|
31
|
+
(propSchema.type === null && value === null) ||
|
|
32
|
+
value?.constructor === propSchema.type));
|
|
33
|
+
}
|
|
34
|
+
function fillFromSchema(exposed, item, schema, dest = 'single') {
|
|
35
|
+
for (const key in schema) {
|
|
36
|
+
const prop = schema[key];
|
|
37
|
+
const value = item[key];
|
|
38
|
+
if (isPropValidToDisplay(value, prop.schema, dest)) {
|
|
39
|
+
if (prop.schema && prop.type === Object) {
|
|
40
|
+
exposed[key] = {};
|
|
41
|
+
fillFromSchema(exposed[key], value, prop.schema);
|
|
42
|
+
}
|
|
43
|
+
else if (prop.schema && prop.type === Array && value instanceof Array) {
|
|
44
|
+
exposed[key] = [];
|
|
45
|
+
value.forEach(row => {
|
|
46
|
+
if (prop.schema.type) {
|
|
47
|
+
// consider to be a direct property;
|
|
48
|
+
if (isPropValidToDisplay(row, prop.schema, dest)) {
|
|
49
|
+
exposed[key].push(row);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// consider to be an object schema
|
|
54
|
+
const item = {};
|
|
55
|
+
fillFromSchema(item, row, prop.schema);
|
|
56
|
+
exposed[key].push(item);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
exposed[key] = value;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function getJsonSchema(schema) {
|
|
67
|
+
const json = {};
|
|
68
|
+
for (const key in schema) {
|
|
69
|
+
json[key] = {
|
|
70
|
+
...schema[key],
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
type: schema[key].type?.name
|
|
73
|
+
};
|
|
74
|
+
if (schema[key].schema) {
|
|
75
|
+
schema[key].schema = getJsonSchema({ data: schema[key].schema }).data;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return json;
|
|
79
|
+
}
|
|
80
|
+
function getValidatedItem(item = {}, schema) {
|
|
81
|
+
if (!schema) {
|
|
82
|
+
return item;
|
|
83
|
+
}
|
|
84
|
+
const valid = {};
|
|
85
|
+
for (const key in schema) {
|
|
86
|
+
const prop = schema[key];
|
|
87
|
+
const value = item[key];
|
|
88
|
+
if (typeof prop.type === 'undefined' ||
|
|
89
|
+
(prop.type === null && value === null) ||
|
|
90
|
+
value?.constructor === prop.type) {
|
|
91
|
+
if (prop.schema && prop.type === Object) {
|
|
92
|
+
valid[key] = getValidatedItem(value, prop.schema);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
valid[key] = item[key];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return valid;
|
|
100
|
+
}
|
|
27
101
|
export function createCrud(options) {
|
|
28
102
|
const display = getDisplayNames(options.display.name);
|
|
29
103
|
const screens = {
|
|
@@ -59,7 +133,12 @@ export function createCrud(options) {
|
|
|
59
133
|
};
|
|
60
134
|
function getPublicData(item = {}) {
|
|
61
135
|
const exposed = { [crudOptions.identifierKey]: item[crudOptions.identifierKey] };
|
|
62
|
-
|
|
136
|
+
fillFromSchema(exposed, item, crudOptions.schema);
|
|
137
|
+
return exposed;
|
|
138
|
+
}
|
|
139
|
+
function getPublicDataForList(item = {}) {
|
|
140
|
+
const exposed = { [crudOptions.identifierKey]: item[crudOptions.identifierKey] };
|
|
141
|
+
fillFromSchema(exposed, item, crudOptions.schema, 'list');
|
|
63
142
|
return exposed;
|
|
64
143
|
}
|
|
65
144
|
function handleError(err, reply) {
|
|
@@ -80,7 +159,7 @@ export function createCrud(options) {
|
|
|
80
159
|
await crudOptions.verify(req, reply);
|
|
81
160
|
const id = req.params.id || '';
|
|
82
161
|
const item = await crudOptions.readOne(id, req, reply);
|
|
83
|
-
if (!crudOptions.
|
|
162
|
+
if (!crudOptions.schema) {
|
|
84
163
|
return item;
|
|
85
164
|
}
|
|
86
165
|
return getPublicData(item);
|
|
@@ -98,8 +177,8 @@ export function createCrud(options) {
|
|
|
98
177
|
try {
|
|
99
178
|
await crudOptions.verify(req, reply);
|
|
100
179
|
const id = req.params.id || '';
|
|
101
|
-
const item = await crudOptions.updateOne(id, req.body, req, reply);
|
|
102
|
-
if (!crudOptions.
|
|
180
|
+
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
181
|
+
if (!crudOptions.schema) {
|
|
103
182
|
return item;
|
|
104
183
|
}
|
|
105
184
|
return getPublicData(item);
|
|
@@ -118,7 +197,7 @@ export function createCrud(options) {
|
|
|
118
197
|
await crudOptions.verify(req, reply);
|
|
119
198
|
const id = req.params.id || '';
|
|
120
199
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
121
|
-
if (!crudOptions.
|
|
200
|
+
if (!crudOptions.schema) {
|
|
122
201
|
return item;
|
|
123
202
|
}
|
|
124
203
|
return getPublicData(item);
|
|
@@ -135,8 +214,8 @@ export function createCrud(options) {
|
|
|
135
214
|
handler: async (req, reply) => {
|
|
136
215
|
try {
|
|
137
216
|
await crudOptions.verify(req, reply);
|
|
138
|
-
const item = await crudOptions.createOne(req.body, req, reply);
|
|
139
|
-
if (!crudOptions.
|
|
217
|
+
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
218
|
+
if (!crudOptions.schema) {
|
|
140
219
|
return item;
|
|
141
220
|
}
|
|
142
221
|
return getPublicData(item);
|
|
@@ -154,7 +233,7 @@ export function createCrud(options) {
|
|
|
154
233
|
try {
|
|
155
234
|
await crudOptions.verify(req, reply);
|
|
156
235
|
const list = await crudOptions.readMany((req.query || {}), req, reply);
|
|
157
|
-
if (!crudOptions.
|
|
236
|
+
if (!crudOptions.schema) {
|
|
158
237
|
return list;
|
|
159
238
|
}
|
|
160
239
|
return list.map(getPublicData);
|
|
@@ -166,7 +245,9 @@ export function createCrud(options) {
|
|
|
166
245
|
});
|
|
167
246
|
manifest.cruds.push({
|
|
168
247
|
name: crudOptions.name,
|
|
169
|
-
display: crudOptions.display
|
|
248
|
+
display: crudOptions.display,
|
|
249
|
+
identifierKey: crudOptions.identifierKey,
|
|
250
|
+
schema: getJsonSchema(crudOptions.schema),
|
|
170
251
|
});
|
|
171
252
|
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
172
253
|
addGroupedMicroFrontends({ name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav }, [
|
|
@@ -176,7 +257,7 @@ export function createCrud(options) {
|
|
|
176
257
|
description: 'List of ' + crudOptions.display.capitalizedPlural,
|
|
177
258
|
use: crudOptions.screens.list.use,
|
|
178
259
|
route: {
|
|
179
|
-
name: '
|
|
260
|
+
name: crudOptions.name + '-list',
|
|
180
261
|
path: crudOptions.name,
|
|
181
262
|
navBarPosition: 'top'
|
|
182
263
|
}
|
|
@@ -187,7 +268,7 @@ export function createCrud(options) {
|
|
|
187
268
|
description: 'Create a new ' + crudOptions.display.capitalized,
|
|
188
269
|
use: crudOptions.screens.create.use,
|
|
189
270
|
route: {
|
|
190
|
-
name: '
|
|
271
|
+
name: 'add-' + singlePath,
|
|
191
272
|
path: 'add-' + singlePath,
|
|
192
273
|
navBarPosition: 'top'
|
|
193
274
|
}
|
|
@@ -198,7 +279,7 @@ export function createCrud(options) {
|
|
|
198
279
|
description: 'Edit existing ' + crudOptions.display.capitalized,
|
|
199
280
|
use: crudOptions.screens.edit.use,
|
|
200
281
|
route: {
|
|
201
|
-
name: '
|
|
282
|
+
name: 'edit-' + singlePath,
|
|
202
283
|
path: `edit-${singlePath}/:id`,
|
|
203
284
|
navBarPosition: false
|
|
204
285
|
}
|
package/dist/crud.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAC/C,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,OAAO,EAAC,wBAAwB,EAAC,MAAM,mBAAmB,CAAC;AAE3D,
|
|
1
|
+
{"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
|
package/dist/crud.types.d.ts
CHANGED
|
@@ -8,11 +8,23 @@ export type Crud = {
|
|
|
8
8
|
capitalized: string;
|
|
9
9
|
capitalizedPlural: string;
|
|
10
10
|
};
|
|
11
|
+
identifierKey: string;
|
|
12
|
+
schema?: any;
|
|
11
13
|
};
|
|
12
14
|
export interface Screen {
|
|
13
15
|
use?: string;
|
|
14
16
|
structure?: string;
|
|
15
17
|
}
|
|
18
|
+
export interface ResourceProperty<T = any> {
|
|
19
|
+
public?: boolean;
|
|
20
|
+
hideInList?: boolean;
|
|
21
|
+
type?: String | Number | Boolean | Object | null | Array<T>;
|
|
22
|
+
schema?: ResourceSchema | ResourceProperty<T>;
|
|
23
|
+
validate?: (value: any) => boolean | Promise<boolean>;
|
|
24
|
+
options?: Array<any>;
|
|
25
|
+
ref?: string;
|
|
26
|
+
}
|
|
27
|
+
export type ResourceSchema = Record<string, ResourceProperty>;
|
|
16
28
|
export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
17
29
|
name?: string;
|
|
18
30
|
identifierKey?: string;
|
|
@@ -32,7 +44,7 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
32
44
|
create: Screen;
|
|
33
45
|
edit: Screen;
|
|
34
46
|
};
|
|
35
|
-
|
|
47
|
+
schema?: ResourceSchema;
|
|
36
48
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
37
49
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>);
|
|
38
50
|
readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
|
package/dist/endpoints.js
CHANGED
|
@@ -4,10 +4,11 @@ export const endpoints = new Map();
|
|
|
4
4
|
export const internalEndpoints = new Map();
|
|
5
5
|
export function addProxyEndpoint(path, options) {
|
|
6
6
|
const endpointUrl = join(manifest.proxyPath, path);
|
|
7
|
-
|
|
7
|
+
const method = options.method || 'GET';
|
|
8
|
+
endpoints.set(method + '::' + endpointUrl, {
|
|
8
9
|
...options,
|
|
9
10
|
url: endpointUrl,
|
|
10
|
-
method
|
|
11
|
+
method,
|
|
11
12
|
handler: options.handler,
|
|
12
13
|
verifyToken: true,
|
|
13
14
|
});
|
package/dist/endpoints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAA;AAEhE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAkC;IAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAMlC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;AAC5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAA;AAEhE,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAkC;IAC/E,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,WAAW,EAAE;QACzC,GAAG,OAAO;QACV,GAAG,EAAE,WAAW;QAChB,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,IAAI;KAClB,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAkC;IAC1E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE;QAClC,GAAG,OAAO;QACV,GAAG,EAAE,IAAI;QACT,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAA8B;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,iBAAiB,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE;QAC1C,GAAG,OAAO;QACV,GAAG,EAAE,IAAI;QACT,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export { getSdkForTenant, getSdk, getSdkForUrl } from './sdk';
|
|
|
10
10
|
export { addGroupedMicroFrontends, addMicroFrontend, MicroFrontend } from './micro-frontends';
|
|
11
11
|
export { addInjectable, Injectable } from './injectables';
|
|
12
12
|
export { createCrud } from './crud';
|
|
13
|
+
export * from './crud.types';
|
|
13
14
|
export { logger };
|
package/dist/index.js
CHANGED
|
@@ -10,5 +10,6 @@ export { getSdkForTenant, getSdk, getSdkForUrl } from './sdk';
|
|
|
10
10
|
export { addGroupedMicroFrontends, addMicroFrontend } from './micro-frontends';
|
|
11
11
|
export { addInjectable } from './injectables';
|
|
12
12
|
export { createCrud } from './crud';
|
|
13
|
+
export * from './crud.types';
|
|
13
14
|
export { logger };
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EACL,EAAE,EAAE,cAAc,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAC,wBAAwB,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAC,aAAa,EAAa,MAAM,eAAe,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,MAAM,EACP,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,MAAM,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AACvD,OAAO,EACL,EAAE,EAAE,cAAc,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,YAAY,CAAC;AAC5F,OAAO,EAAC,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAC,eAAe,EAAE,MAAM,EAAE,YAAY,EAAC,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAC,wBAAwB,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAC,aAAa,EAAa,MAAM,eAAe,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,QAAQ,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,OAAO,EACL,MAAM,EACP,CAAA"}
|
package/package.json
CHANGED
package/src/app.ts
CHANGED
|
@@ -172,12 +172,12 @@ function playEndpoints() {
|
|
|
172
172
|
} as FastifyCookieOptions);
|
|
173
173
|
getApp().route(getFrontendAuthorizationRoute());
|
|
174
174
|
getApp().route(getFrontendUnAuthorizationRoute());
|
|
175
|
-
endpoints.forEach((routeOptions
|
|
175
|
+
endpoints.forEach((routeOptions) => {
|
|
176
176
|
const route = {
|
|
177
177
|
...routeOptions,
|
|
178
178
|
};
|
|
179
179
|
if (routeOptions.verifyToken) {
|
|
180
|
-
route.preHandler =
|
|
180
|
+
route.preHandler = routeOptions.url.startsWith(manifest.proxyPath) ? verifyAccessToken : verifyCookieToken
|
|
181
181
|
}
|
|
182
182
|
getApp().route(route);
|
|
183
183
|
})
|
package/src/crud.ts
CHANGED
|
@@ -3,10 +3,10 @@ import {addProxyEndpoint} from './endpoints';
|
|
|
3
3
|
import {ResponseError} from './response-error';
|
|
4
4
|
import logger from './logger';
|
|
5
5
|
import manifest from './manifest';
|
|
6
|
-
import {Crud, ICrudOptions} from './crud.types';
|
|
6
|
+
import {Crud, ICrudOptions, ResourceProperty, ResourceSchema} from './crud.types';
|
|
7
7
|
import {addGroupedMicroFrontends} from './micro-frontends';
|
|
8
8
|
|
|
9
|
-
function getPlural(word: string) {
|
|
9
|
+
export function getPlural(word: string) {
|
|
10
10
|
const lastChar = word[word.length - 1].toLowerCase();
|
|
11
11
|
if (['x', 'h', 's'].includes(lastChar)) {
|
|
12
12
|
return word + 'es';
|
|
@@ -17,7 +17,7 @@ function getPlural(word: string) {
|
|
|
17
17
|
return word + 's';
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
function getDisplayNames(name: string) {
|
|
20
|
+
export function getDisplayNames(name: string) {
|
|
21
21
|
const plural = getPlural(name.toLowerCase());
|
|
22
22
|
const capitalized = name.split(' ').map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' ');
|
|
23
23
|
const capitalizedPlural = getPlural(capitalized);
|
|
@@ -30,6 +30,84 @@ function getDisplayNames(name: string) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
function isPropValidToDisplay(value, propSchema: ResourceSchema | ResourceProperty, dest: 'list' | 'single') {
|
|
34
|
+
return (propSchema.public &&
|
|
35
|
+
!(propSchema.hideInList && dest === 'list') &&
|
|
36
|
+
(
|
|
37
|
+
typeof propSchema.type === 'undefined' ||
|
|
38
|
+
(propSchema.type === null && value === null) ||
|
|
39
|
+
value?.constructor === propSchema.type
|
|
40
|
+
))
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function fillFromSchema(exposed: any, item: any, schema: ResourceSchema, dest: 'list' | 'single' = 'single') {
|
|
44
|
+
for (const key in schema) {
|
|
45
|
+
const prop = schema[key];
|
|
46
|
+
const value = item[key];
|
|
47
|
+
if (isPropValidToDisplay(value, prop.schema, dest)) {
|
|
48
|
+
if (prop.schema && prop.type === Object) {
|
|
49
|
+
exposed[key] = {}
|
|
50
|
+
fillFromSchema(exposed[key], value, prop.schema as ResourceSchema);
|
|
51
|
+
} else if (prop.schema && prop.type === Array && value instanceof Array) {
|
|
52
|
+
exposed[key] = [];
|
|
53
|
+
value.forEach(row => {
|
|
54
|
+
if (prop.schema.type) {
|
|
55
|
+
// consider to be a direct property;
|
|
56
|
+
if (isPropValidToDisplay(row, prop.schema, dest)) {
|
|
57
|
+
exposed[key].push(row);
|
|
58
|
+
}
|
|
59
|
+
} else {
|
|
60
|
+
// consider to be an object schema
|
|
61
|
+
const item = {};
|
|
62
|
+
fillFromSchema(item, row, prop.schema as ResourceSchema);
|
|
63
|
+
exposed[key].push(item);
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
} else {
|
|
67
|
+
exposed[key] = value;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function getJsonSchema(schema: ResourceSchema) {
|
|
74
|
+
const json: any = {};
|
|
75
|
+
for (const key in schema) {
|
|
76
|
+
json[key] = {
|
|
77
|
+
...schema[key],
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
type: schema[key].type?.name
|
|
80
|
+
}
|
|
81
|
+
if (schema[key].schema) {
|
|
82
|
+
schema[key].schema = getJsonSchema({data: schema[key].schema}).data;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return json;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function getValidatedItem(item: any = {}, schema) {
|
|
89
|
+
if (!schema) {
|
|
90
|
+
return item;
|
|
91
|
+
}
|
|
92
|
+
const valid = {};
|
|
93
|
+
for (const key in schema) {
|
|
94
|
+
const prop = schema[key];
|
|
95
|
+
const value = item[key];
|
|
96
|
+
if (
|
|
97
|
+
typeof prop.type === 'undefined' ||
|
|
98
|
+
(prop.type === null && value === null) ||
|
|
99
|
+
value?.constructor === prop.type
|
|
100
|
+
) {
|
|
101
|
+
if (prop.schema && prop.type === Object) {
|
|
102
|
+
valid[key] = getValidatedItem(value, prop.schema);
|
|
103
|
+
} else {
|
|
104
|
+
valid[key] = item[key];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return valid;
|
|
109
|
+
}
|
|
110
|
+
|
|
33
111
|
export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
34
112
|
options: ICrudOptions<ResourcePublicData, ResourceInsertData>) {
|
|
35
113
|
|
|
@@ -70,7 +148,13 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
70
148
|
|
|
71
149
|
function getPublicData(item = {}) {
|
|
72
150
|
const exposed = {[crudOptions.identifierKey]: item[crudOptions.identifierKey]}
|
|
73
|
-
|
|
151
|
+
fillFromSchema(exposed, item, crudOptions.schema);
|
|
152
|
+
return exposed;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function getPublicDataForList(item = {}) {
|
|
156
|
+
const exposed = {[crudOptions.identifierKey]: item[crudOptions.identifierKey]}
|
|
157
|
+
fillFromSchema(exposed, item, crudOptions.schema, 'list');
|
|
74
158
|
return exposed;
|
|
75
159
|
}
|
|
76
160
|
|
|
@@ -95,7 +179,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
95
179
|
const id: string = (req.params as any).id || '';
|
|
96
180
|
const item = await crudOptions.readOne(id, req, reply);
|
|
97
181
|
|
|
98
|
-
if (!crudOptions.
|
|
182
|
+
if (!crudOptions.schema) {
|
|
99
183
|
return item;
|
|
100
184
|
}
|
|
101
185
|
|
|
@@ -115,9 +199,9 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
115
199
|
try {
|
|
116
200
|
await crudOptions.verify(req, reply);
|
|
117
201
|
const id: string = (req.params as any).id || '';
|
|
118
|
-
const item = await crudOptions.updateOne(id, req.body
|
|
202
|
+
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
119
203
|
|
|
120
|
-
if (!crudOptions.
|
|
204
|
+
if (!crudOptions.schema) {
|
|
121
205
|
return item;
|
|
122
206
|
}
|
|
123
207
|
|
|
@@ -139,7 +223,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
139
223
|
const id: string = (req.params as any).id || '';
|
|
140
224
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
141
225
|
|
|
142
|
-
if (!crudOptions.
|
|
226
|
+
if (!crudOptions.schema) {
|
|
143
227
|
return item;
|
|
144
228
|
}
|
|
145
229
|
|
|
@@ -158,9 +242,9 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
158
242
|
handler: async (req, reply) => {
|
|
159
243
|
try {
|
|
160
244
|
await crudOptions.verify(req, reply);
|
|
161
|
-
const item = await crudOptions.createOne(req.body
|
|
245
|
+
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
162
246
|
|
|
163
|
-
if (!crudOptions.
|
|
247
|
+
if (!crudOptions.schema) {
|
|
164
248
|
return item;
|
|
165
249
|
}
|
|
166
250
|
|
|
@@ -181,7 +265,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
181
265
|
await crudOptions.verify(req, reply);
|
|
182
266
|
const list = await crudOptions.readMany((req.query || {}) as Record<string, string | string[]>, req, reply);
|
|
183
267
|
|
|
184
|
-
if (!crudOptions.
|
|
268
|
+
if (!crudOptions.schema) {
|
|
185
269
|
return list;
|
|
186
270
|
}
|
|
187
271
|
|
|
@@ -194,7 +278,9 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
194
278
|
|
|
195
279
|
manifest.cruds.push({
|
|
196
280
|
name: crudOptions.name,
|
|
197
|
-
display: crudOptions.display
|
|
281
|
+
display: crudOptions.display,
|
|
282
|
+
identifierKey: crudOptions.identifierKey,
|
|
283
|
+
schema: getJsonSchema(crudOptions.schema),
|
|
198
284
|
});
|
|
199
285
|
|
|
200
286
|
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
@@ -208,7 +294,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
208
294
|
description: 'List of ' + crudOptions.display.capitalizedPlural,
|
|
209
295
|
use: crudOptions.screens.list.use,
|
|
210
296
|
route: {
|
|
211
|
-
name: '
|
|
297
|
+
name: crudOptions.name + '-list',
|
|
212
298
|
path: crudOptions.name,
|
|
213
299
|
navBarPosition: 'top'
|
|
214
300
|
}
|
|
@@ -219,7 +305,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
219
305
|
description: 'Create a new ' + crudOptions.display.capitalized,
|
|
220
306
|
use: crudOptions.screens.create.use,
|
|
221
307
|
route: {
|
|
222
|
-
name: '
|
|
308
|
+
name: 'add-' + singlePath,
|
|
223
309
|
path: 'add-' + singlePath,
|
|
224
310
|
navBarPosition: 'top'
|
|
225
311
|
}
|
|
@@ -230,7 +316,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
230
316
|
description: 'Edit existing ' + crudOptions.display.capitalized,
|
|
231
317
|
use: crudOptions.screens.edit.use,
|
|
232
318
|
route: {
|
|
233
|
-
name: '
|
|
319
|
+
name: 'edit-' + singlePath,
|
|
234
320
|
path: `edit-${singlePath}/:id`,
|
|
235
321
|
navBarPosition: false
|
|
236
322
|
}
|
package/src/crud.types.ts
CHANGED
|
@@ -8,7 +8,9 @@ export type Crud = {
|
|
|
8
8
|
plural: string;
|
|
9
9
|
capitalized: string;
|
|
10
10
|
capitalizedPlural: string;
|
|
11
|
-
}
|
|
11
|
+
},
|
|
12
|
+
identifierKey: string,
|
|
13
|
+
schema?: any,
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
export interface Screen {
|
|
@@ -16,6 +18,19 @@ export interface Screen {
|
|
|
16
18
|
structure?: string;
|
|
17
19
|
}
|
|
18
20
|
|
|
21
|
+
export interface ResourceProperty<T = any> {
|
|
22
|
+
public?: boolean;
|
|
23
|
+
hideInList?: boolean;
|
|
24
|
+
type?: String | Number | Boolean | Object | null | Array<T>;
|
|
25
|
+
schema?: ResourceSchema | ResourceProperty<T>;
|
|
26
|
+
validate?: (value: any) => boolean | Promise<boolean>;
|
|
27
|
+
options?: Array<any>;
|
|
28
|
+
ref?: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
export type ResourceSchema = Record<string, ResourceProperty>;
|
|
33
|
+
|
|
19
34
|
export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
20
35
|
name?: string;
|
|
21
36
|
identifierKey?: string;
|
|
@@ -35,7 +50,7 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
35
50
|
create: Screen;
|
|
36
51
|
edit: Screen;
|
|
37
52
|
},
|
|
38
|
-
|
|
53
|
+
schema?: ResourceSchema,
|
|
39
54
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
40
55
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>),
|
|
41
56
|
readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
|
package/src/endpoints.ts
CHANGED
|
@@ -11,10 +11,11 @@ export const internalEndpoints = new Map<string, RouteOptions>()
|
|
|
11
11
|
|
|
12
12
|
export function addProxyEndpoint(path: string, options: Partial<QelosRouteParams>) {
|
|
13
13
|
const endpointUrl = join(manifest.proxyPath, path);
|
|
14
|
-
|
|
14
|
+
const method = options.method || 'GET';
|
|
15
|
+
endpoints.set(method + '::' + endpointUrl, {
|
|
15
16
|
...options,
|
|
16
17
|
url: endpointUrl,
|
|
17
|
-
method
|
|
18
|
+
method,
|
|
18
19
|
handler: options.handler,
|
|
19
20
|
verifyToken: true,
|
|
20
21
|
})
|
package/src/index.ts
CHANGED
|
@@ -16,6 +16,7 @@ export {getSdkForTenant, getSdk, getSdkForUrl} from './sdk';
|
|
|
16
16
|
export {addGroupedMicroFrontends, addMicroFrontend, MicroFrontend} from './micro-frontends';
|
|
17
17
|
export {addInjectable, Injectable} from './injectables';
|
|
18
18
|
export {createCrud} from './crud';
|
|
19
|
+
export * from './crud.types';
|
|
19
20
|
export {
|
|
20
21
|
logger
|
|
21
22
|
}
|