@qelos/plugin-play 3.3.4 → 3.3.6
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 +113 -15
- package/dist/crud.js.map +1 -1
- package/dist/crud.types.d.ts +14 -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 +2 -2
- package/src/app.ts +2 -2
- package/src/crud.ts +120 -20
- package/src/crud.types.ts +18 -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":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,IAAI,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAC,MAAM,MAAM,CAAC;AAC1B,OAAO,OAA0B,MAAM,SAAS,CAAC;AAGjD,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAC,QAAQ,EAAkB,MAAM,YAAY,CAAC;AACrD,OAAO,MAAM,EAAE,EAAgB,SAAS,EAAC,MAAM,UAAU,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,6BAA6B,EAC7B,+BAA+B,EAC/B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,aAAa,CAAC;AACzD,OAAO,EAAC,cAAc,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAEpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsC,CAAC;AAE5D,IAAI,GAAoB,CAAC;AACzB,IAAI,WAA4B,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,OAAgE;IAC1F,SAAS,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,iBAAiB,CAAC,IAAI,EAAE;QAC1B,iBAAiB,EAAE,CAAC;KACrB;IACD,IAAI;QACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC9F,MAAM,GAAG,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC;QAEjE,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAChG,MAAM,WAAW,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,EAAC,CAAC,CAAC;SAC1F;KAEF;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,eAAgC,EAAE,SAAwB;IAClF,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS,EAAC,CAAC,CAAC;IAEvG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACzC,SAAS,CAAC,SAAS,CAAC,CAAC;IAErB,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;QAClC,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;KAChE;IACD,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IAEtE,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAA2E,EAAE,OAA2B;IACrI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;QACtB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,GAAG;KACjC,CAAC;IACF,KAAK,CAAC,GAAG,CAAC;QACR,eAAe;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;KACR,CAAC,CAAC;IACH,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;QACpB,KAAK,EAAE,QAAQ,EAAE;KAClB,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,EAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;IACzE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9B,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,EAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;IAE7E,GAAG,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,CAAC;IAEpF,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC9B,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IAEf,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;KACrG;IAED,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;IAExD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,cAAc,GAAG;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG;KACrB,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE,EAAC,cAAc,EAAC,CAAC,CAAA;IAEjE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACtC,WAAW,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,gBAAgB,CAAC,CAAC;IAE5F,iBAAiB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QACzC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,CAAC,CAAA;IAE9D,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,CAAC,KAAK,CAAC;QACb,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,QAAQ,CAAC,WAAW;QACzB,OAAO,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,EAAE,GAAG;YAC1B,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,CAAC;YACzE,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAC/C,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAA;AACrF,CAAC;AAED,SAAS,SAAS;IAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACxE,MAAM,EAAE,CAAC,KAAK,CAAC;YACb,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,SAAS;YACd,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QAC1C,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;KACtE;AACH,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACnB,OAAO;KACR;IACD,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QACxB,YAAY,EAAE;YACZ,MAAM,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE;YACtB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC;SACxE;KACsB,CAAC,CAAC;IAC3B,MAAM,EAAE,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC;IAClD,SAAS,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,
|
|
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,8 @@ 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
|
-
|
|
6
|
+
import { getSdkForTenant } from './sdk';
|
|
7
|
+
export function getPlural(word) {
|
|
7
8
|
const lastChar = word[word.length - 1].toLowerCase();
|
|
8
9
|
if (['x', 'h', 's'].includes(lastChar)) {
|
|
9
10
|
return word + 'es';
|
|
@@ -13,7 +14,7 @@ function getPlural(word) {
|
|
|
13
14
|
}
|
|
14
15
|
return word + 's';
|
|
15
16
|
}
|
|
16
|
-
function getDisplayNames(name) {
|
|
17
|
+
export function getDisplayNames(name) {
|
|
17
18
|
const plural = getPlural(name.toLowerCase());
|
|
18
19
|
const capitalized = name.split(' ').map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' ');
|
|
19
20
|
const capitalizedPlural = getPlural(capitalized);
|
|
@@ -24,6 +25,80 @@ function getDisplayNames(name) {
|
|
|
24
25
|
capitalizedPlural
|
|
25
26
|
};
|
|
26
27
|
}
|
|
28
|
+
function isPropValidToDisplay(value, propSchema, dest) {
|
|
29
|
+
return (propSchema.public &&
|
|
30
|
+
!(propSchema.hideInList && dest === 'list') &&
|
|
31
|
+
(typeof propSchema.type === 'undefined' ||
|
|
32
|
+
(propSchema.type === null && value === null) ||
|
|
33
|
+
value?.constructor === propSchema.type));
|
|
34
|
+
}
|
|
35
|
+
function fillFromSchema(exposed, item, schema, dest = 'single') {
|
|
36
|
+
for (const key in schema) {
|
|
37
|
+
const prop = schema[key];
|
|
38
|
+
const value = item[key];
|
|
39
|
+
if (isPropValidToDisplay(value, prop.schema, dest)) {
|
|
40
|
+
if (prop.schema && prop.type === Object) {
|
|
41
|
+
exposed[key] = {};
|
|
42
|
+
fillFromSchema(exposed[key], value, prop.schema);
|
|
43
|
+
}
|
|
44
|
+
else if (prop.schema && prop.type === Array && value instanceof Array) {
|
|
45
|
+
exposed[key] = [];
|
|
46
|
+
value.forEach(row => {
|
|
47
|
+
if (prop.schema.type) {
|
|
48
|
+
// consider to be a direct property;
|
|
49
|
+
if (isPropValidToDisplay(row, prop.schema, dest)) {
|
|
50
|
+
exposed[key].push(row);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// consider to be an object schema
|
|
55
|
+
const item = {};
|
|
56
|
+
fillFromSchema(item, row, prop.schema);
|
|
57
|
+
exposed[key].push(item);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
exposed[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function getJsonSchema(schema) {
|
|
68
|
+
const json = {};
|
|
69
|
+
for (const key in schema) {
|
|
70
|
+
json[key] = {
|
|
71
|
+
...schema[key],
|
|
72
|
+
// @ts-ignore
|
|
73
|
+
type: schema[key].type?.name
|
|
74
|
+
};
|
|
75
|
+
if (schema[key].schema) {
|
|
76
|
+
schema[key].schema = getJsonSchema({ data: schema[key].schema }).data;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return json;
|
|
80
|
+
}
|
|
81
|
+
function getValidatedItem(item = {}, schema) {
|
|
82
|
+
if (!schema) {
|
|
83
|
+
return item;
|
|
84
|
+
}
|
|
85
|
+
const valid = {};
|
|
86
|
+
for (const key in schema) {
|
|
87
|
+
const prop = schema[key];
|
|
88
|
+
const value = item[key];
|
|
89
|
+
if (typeof prop.type === 'undefined' ||
|
|
90
|
+
(prop.type === null && value === null) ||
|
|
91
|
+
value?.constructor === prop.type) {
|
|
92
|
+
if (prop.schema && prop.type === Object) {
|
|
93
|
+
valid[key] = getValidatedItem(value, prop.schema);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
valid[key] = item[key];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return valid;
|
|
101
|
+
}
|
|
27
102
|
export function createCrud(options) {
|
|
28
103
|
const display = getDisplayNames(options.display.name);
|
|
29
104
|
const screens = {
|
|
@@ -35,6 +110,7 @@ export function createCrud(options) {
|
|
|
35
110
|
const crudOptions = {
|
|
36
111
|
name: display.plural.replaceAll(' ', '-'),
|
|
37
112
|
identifierKey: '_id',
|
|
113
|
+
dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
|
|
38
114
|
verify: async () => null,
|
|
39
115
|
...options,
|
|
40
116
|
display: {
|
|
@@ -59,7 +135,12 @@ export function createCrud(options) {
|
|
|
59
135
|
};
|
|
60
136
|
function getPublicData(item = {}) {
|
|
61
137
|
const exposed = { [crudOptions.identifierKey]: item[crudOptions.identifierKey] };
|
|
62
|
-
|
|
138
|
+
fillFromSchema(exposed, item, crudOptions.schema);
|
|
139
|
+
return exposed;
|
|
140
|
+
}
|
|
141
|
+
function getPublicDataForList(item = {}) {
|
|
142
|
+
const exposed = { [crudOptions.identifierKey]: item[crudOptions.identifierKey] };
|
|
143
|
+
fillFromSchema(exposed, item, crudOptions.schema, 'list');
|
|
63
144
|
return exposed;
|
|
64
145
|
}
|
|
65
146
|
function handleError(err, reply) {
|
|
@@ -71,6 +152,19 @@ export function createCrud(options) {
|
|
|
71
152
|
throw err;
|
|
72
153
|
}
|
|
73
154
|
const itemPath = crudOptions.name + '/:id';
|
|
155
|
+
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
156
|
+
async function triggerOperation(req, kind, metadata) {
|
|
157
|
+
if (crudOptions.dispatchPrefix) {
|
|
158
|
+
const sdk = await getSdkForTenant(req.tenantPayload);
|
|
159
|
+
sdk?.events.dispatch({
|
|
160
|
+
source: `${crudOptions.dispatchPrefix}:${crudOptions.name}`,
|
|
161
|
+
kind,
|
|
162
|
+
eventName: `${kind}-${singlePath}`,
|
|
163
|
+
user: req.user._id,
|
|
164
|
+
metadata,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
74
168
|
// get one
|
|
75
169
|
addProxyEndpoint(itemPath, {
|
|
76
170
|
verifyToken: true,
|
|
@@ -80,7 +174,7 @@ export function createCrud(options) {
|
|
|
80
174
|
await crudOptions.verify(req, reply);
|
|
81
175
|
const id = req.params.id || '';
|
|
82
176
|
const item = await crudOptions.readOne(id, req, reply);
|
|
83
|
-
if (!crudOptions.
|
|
177
|
+
if (!crudOptions.schema) {
|
|
84
178
|
return item;
|
|
85
179
|
}
|
|
86
180
|
return getPublicData(item);
|
|
@@ -98,8 +192,9 @@ export function createCrud(options) {
|
|
|
98
192
|
try {
|
|
99
193
|
await crudOptions.verify(req, reply);
|
|
100
194
|
const id = req.params.id || '';
|
|
101
|
-
const item = await crudOptions.updateOne(id, req.body, req, reply);
|
|
102
|
-
|
|
195
|
+
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
196
|
+
triggerOperation(req, 'update', item).catch();
|
|
197
|
+
if (!crudOptions.schema) {
|
|
103
198
|
return item;
|
|
104
199
|
}
|
|
105
200
|
return getPublicData(item);
|
|
@@ -118,7 +213,8 @@ export function createCrud(options) {
|
|
|
118
213
|
await crudOptions.verify(req, reply);
|
|
119
214
|
const id = req.params.id || '';
|
|
120
215
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
121
|
-
|
|
216
|
+
triggerOperation(req, 'delete', item).catch();
|
|
217
|
+
if (!crudOptions.schema) {
|
|
122
218
|
return item;
|
|
123
219
|
}
|
|
124
220
|
return getPublicData(item);
|
|
@@ -135,8 +231,9 @@ export function createCrud(options) {
|
|
|
135
231
|
handler: async (req, reply) => {
|
|
136
232
|
try {
|
|
137
233
|
await crudOptions.verify(req, reply);
|
|
138
|
-
const item = await crudOptions.createOne(req.body, req, reply);
|
|
139
|
-
|
|
234
|
+
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
235
|
+
triggerOperation(req, 'create', item).catch();
|
|
236
|
+
if (!crudOptions.schema) {
|
|
140
237
|
return item;
|
|
141
238
|
}
|
|
142
239
|
return getPublicData(item);
|
|
@@ -154,7 +251,7 @@ export function createCrud(options) {
|
|
|
154
251
|
try {
|
|
155
252
|
await crudOptions.verify(req, reply);
|
|
156
253
|
const list = await crudOptions.readMany((req.query || {}), req, reply);
|
|
157
|
-
if (!crudOptions.
|
|
254
|
+
if (!crudOptions.schema) {
|
|
158
255
|
return list;
|
|
159
256
|
}
|
|
160
257
|
return list.map(getPublicData);
|
|
@@ -166,9 +263,10 @@ export function createCrud(options) {
|
|
|
166
263
|
});
|
|
167
264
|
manifest.cruds.push({
|
|
168
265
|
name: crudOptions.name,
|
|
169
|
-
display: crudOptions.display
|
|
266
|
+
display: crudOptions.display,
|
|
267
|
+
identifierKey: crudOptions.identifierKey,
|
|
268
|
+
schema: getJsonSchema(crudOptions.schema),
|
|
170
269
|
});
|
|
171
|
-
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
172
270
|
addGroupedMicroFrontends({ name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav }, [
|
|
173
271
|
{
|
|
174
272
|
name: 'List',
|
|
@@ -176,7 +274,7 @@ export function createCrud(options) {
|
|
|
176
274
|
description: 'List of ' + crudOptions.display.capitalizedPlural,
|
|
177
275
|
use: crudOptions.screens.list.use,
|
|
178
276
|
route: {
|
|
179
|
-
name: '
|
|
277
|
+
name: crudOptions.name + '-list',
|
|
180
278
|
path: crudOptions.name,
|
|
181
279
|
navBarPosition: 'top'
|
|
182
280
|
}
|
|
@@ -187,7 +285,7 @@ export function createCrud(options) {
|
|
|
187
285
|
description: 'Create a new ' + crudOptions.display.capitalized,
|
|
188
286
|
use: crudOptions.screens.create.use,
|
|
189
287
|
route: {
|
|
190
|
-
name: '
|
|
288
|
+
name: 'add-' + singlePath,
|
|
191
289
|
path: 'add-' + singlePath,
|
|
192
290
|
navBarPosition: 'top'
|
|
193
291
|
}
|
|
@@ -198,7 +296,7 @@ export function createCrud(options) {
|
|
|
198
296
|
description: 'Edit existing ' + crudOptions.display.capitalized,
|
|
199
297
|
use: crudOptions.screens.edit.use,
|
|
200
298
|
route: {
|
|
201
|
-
name: '
|
|
299
|
+
name: 'edit-' + singlePath,
|
|
202
300
|
path: `edit-${singlePath}/:id`,
|
|
203
301
|
navBarPosition: false
|
|
204
302
|
}
|
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;
|
|
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,8 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
32
44
|
create: Screen;
|
|
33
45
|
edit: Screen;
|
|
34
46
|
};
|
|
35
|
-
|
|
47
|
+
schema?: ResourceSchema;
|
|
48
|
+
dispatchPrefix: string | false;
|
|
36
49
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
37
50
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>);
|
|
38
51
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qelos/plugin-play",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.6",
|
|
4
4
|
"description": "Play a plugin for Qelos!",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@fastify/cookie": "^8.3.0",
|
|
17
17
|
"@fastify/static": "^6.5.0",
|
|
18
18
|
"@qelos/cache-manager": "^3.2.1",
|
|
19
|
-
"@qelos/sdk": "^3.
|
|
19
|
+
"@qelos/sdk": "^3.3.6",
|
|
20
20
|
"@qelos/web-sdk": "^3.2.8",
|
|
21
21
|
"fastify": "^4.3.0",
|
|
22
22
|
"jsonwebtoken": "^9.0.0",
|
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,11 @@ 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
|
+
import {getSdkForTenant} from './sdk';
|
|
8
9
|
|
|
9
|
-
function getPlural(word: string) {
|
|
10
|
+
export function getPlural(word: string) {
|
|
10
11
|
const lastChar = word[word.length - 1].toLowerCase();
|
|
11
12
|
if (['x', 'h', 's'].includes(lastChar)) {
|
|
12
13
|
return word + 'es';
|
|
@@ -17,7 +18,7 @@ function getPlural(word: string) {
|
|
|
17
18
|
return word + 's';
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
function getDisplayNames(name: string) {
|
|
21
|
+
export function getDisplayNames(name: string) {
|
|
21
22
|
const plural = getPlural(name.toLowerCase());
|
|
22
23
|
const capitalized = name.split(' ').map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' ');
|
|
23
24
|
const capitalizedPlural = getPlural(capitalized);
|
|
@@ -30,6 +31,84 @@ function getDisplayNames(name: string) {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
function isPropValidToDisplay(value, propSchema: ResourceSchema | ResourceProperty, dest: 'list' | 'single') {
|
|
35
|
+
return (propSchema.public &&
|
|
36
|
+
!(propSchema.hideInList && dest === 'list') &&
|
|
37
|
+
(
|
|
38
|
+
typeof propSchema.type === 'undefined' ||
|
|
39
|
+
(propSchema.type === null && value === null) ||
|
|
40
|
+
value?.constructor === propSchema.type
|
|
41
|
+
))
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function fillFromSchema(exposed: any, item: any, schema: ResourceSchema, dest: 'list' | 'single' = 'single') {
|
|
45
|
+
for (const key in schema) {
|
|
46
|
+
const prop = schema[key];
|
|
47
|
+
const value = item[key];
|
|
48
|
+
if (isPropValidToDisplay(value, prop.schema, dest)) {
|
|
49
|
+
if (prop.schema && prop.type === Object) {
|
|
50
|
+
exposed[key] = {}
|
|
51
|
+
fillFromSchema(exposed[key], value, prop.schema as ResourceSchema);
|
|
52
|
+
} else if (prop.schema && prop.type === Array && value instanceof Array) {
|
|
53
|
+
exposed[key] = [];
|
|
54
|
+
value.forEach(row => {
|
|
55
|
+
if (prop.schema.type) {
|
|
56
|
+
// consider to be a direct property;
|
|
57
|
+
if (isPropValidToDisplay(row, prop.schema, dest)) {
|
|
58
|
+
exposed[key].push(row);
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
// consider to be an object schema
|
|
62
|
+
const item = {};
|
|
63
|
+
fillFromSchema(item, row, prop.schema as ResourceSchema);
|
|
64
|
+
exposed[key].push(item);
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
} else {
|
|
68
|
+
exposed[key] = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function getJsonSchema(schema: ResourceSchema) {
|
|
75
|
+
const json: any = {};
|
|
76
|
+
for (const key in schema) {
|
|
77
|
+
json[key] = {
|
|
78
|
+
...schema[key],
|
|
79
|
+
// @ts-ignore
|
|
80
|
+
type: schema[key].type?.name
|
|
81
|
+
}
|
|
82
|
+
if (schema[key].schema) {
|
|
83
|
+
schema[key].schema = getJsonSchema({data: schema[key].schema}).data;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return json;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function getValidatedItem(item: any = {}, schema) {
|
|
90
|
+
if (!schema) {
|
|
91
|
+
return item;
|
|
92
|
+
}
|
|
93
|
+
const valid = {};
|
|
94
|
+
for (const key in schema) {
|
|
95
|
+
const prop = schema[key];
|
|
96
|
+
const value = item[key];
|
|
97
|
+
if (
|
|
98
|
+
typeof prop.type === 'undefined' ||
|
|
99
|
+
(prop.type === null && value === null) ||
|
|
100
|
+
value?.constructor === prop.type
|
|
101
|
+
) {
|
|
102
|
+
if (prop.schema && prop.type === Object) {
|
|
103
|
+
valid[key] = getValidatedItem(value, prop.schema);
|
|
104
|
+
} else {
|
|
105
|
+
valid[key] = item[key];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return valid;
|
|
110
|
+
}
|
|
111
|
+
|
|
33
112
|
export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
34
113
|
options: ICrudOptions<ResourcePublicData, ResourceInsertData>) {
|
|
35
114
|
|
|
@@ -45,6 +124,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
45
124
|
const crudOptions: ICrudOptions<ResourcePublicData, ResourceInsertData> & Crud = {
|
|
46
125
|
name: display.plural.replaceAll(' ', '-'),
|
|
47
126
|
identifierKey: '_id',
|
|
127
|
+
dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
|
|
48
128
|
verify: async () => null,
|
|
49
129
|
...options,
|
|
50
130
|
display: {
|
|
@@ -70,7 +150,13 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
70
150
|
|
|
71
151
|
function getPublicData(item = {}) {
|
|
72
152
|
const exposed = {[crudOptions.identifierKey]: item[crudOptions.identifierKey]}
|
|
73
|
-
|
|
153
|
+
fillFromSchema(exposed, item, crudOptions.schema);
|
|
154
|
+
return exposed;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function getPublicDataForList(item = {}) {
|
|
158
|
+
const exposed = {[crudOptions.identifierKey]: item[crudOptions.identifierKey]}
|
|
159
|
+
fillFromSchema(exposed, item, crudOptions.schema, 'list');
|
|
74
160
|
return exposed;
|
|
75
161
|
}
|
|
76
162
|
|
|
@@ -84,6 +170,20 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
84
170
|
}
|
|
85
171
|
|
|
86
172
|
const itemPath = crudOptions.name + '/:id';
|
|
173
|
+
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
174
|
+
|
|
175
|
+
async function triggerOperation(req, kind, metadata) {
|
|
176
|
+
if (crudOptions.dispatchPrefix) {
|
|
177
|
+
const sdk = await getSdkForTenant(req.tenantPayload);
|
|
178
|
+
sdk?.events.dispatch({
|
|
179
|
+
source: `${crudOptions.dispatchPrefix}:${crudOptions.name}`,
|
|
180
|
+
kind,
|
|
181
|
+
eventName: `${kind}-${singlePath}`,
|
|
182
|
+
user: req.user._id,
|
|
183
|
+
metadata,
|
|
184
|
+
})
|
|
185
|
+
}
|
|
186
|
+
}
|
|
87
187
|
|
|
88
188
|
// get one
|
|
89
189
|
addProxyEndpoint(itemPath, {
|
|
@@ -95,7 +195,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
95
195
|
const id: string = (req.params as any).id || '';
|
|
96
196
|
const item = await crudOptions.readOne(id, req, reply);
|
|
97
197
|
|
|
98
|
-
if (!crudOptions.
|
|
198
|
+
if (!crudOptions.schema) {
|
|
99
199
|
return item;
|
|
100
200
|
}
|
|
101
201
|
|
|
@@ -115,9 +215,9 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
115
215
|
try {
|
|
116
216
|
await crudOptions.verify(req, reply);
|
|
117
217
|
const id: string = (req.params as any).id || '';
|
|
118
|
-
const item = await crudOptions.updateOne(id, req.body
|
|
119
|
-
|
|
120
|
-
if (!crudOptions.
|
|
218
|
+
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
219
|
+
triggerOperation(req, 'update', item).catch();
|
|
220
|
+
if (!crudOptions.schema) {
|
|
121
221
|
return item;
|
|
122
222
|
}
|
|
123
223
|
|
|
@@ -138,8 +238,8 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
138
238
|
await crudOptions.verify(req, reply);
|
|
139
239
|
const id: string = (req.params as any).id || '';
|
|
140
240
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
141
|
-
|
|
142
|
-
if (!crudOptions.
|
|
241
|
+
triggerOperation(req, 'delete', item).catch();
|
|
242
|
+
if (!crudOptions.schema) {
|
|
143
243
|
return item;
|
|
144
244
|
}
|
|
145
245
|
|
|
@@ -158,9 +258,9 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
158
258
|
handler: async (req, reply) => {
|
|
159
259
|
try {
|
|
160
260
|
await crudOptions.verify(req, reply);
|
|
161
|
-
const item = await crudOptions.createOne(req.body
|
|
162
|
-
|
|
163
|
-
if (!crudOptions.
|
|
261
|
+
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
262
|
+
triggerOperation(req, 'create', item).catch();
|
|
263
|
+
if (!crudOptions.schema) {
|
|
164
264
|
return item;
|
|
165
265
|
}
|
|
166
266
|
|
|
@@ -181,7 +281,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
181
281
|
await crudOptions.verify(req, reply);
|
|
182
282
|
const list = await crudOptions.readMany((req.query || {}) as Record<string, string | string[]>, req, reply);
|
|
183
283
|
|
|
184
|
-
if (!crudOptions.
|
|
284
|
+
if (!crudOptions.schema) {
|
|
185
285
|
return list;
|
|
186
286
|
}
|
|
187
287
|
|
|
@@ -194,11 +294,11 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
194
294
|
|
|
195
295
|
manifest.cruds.push({
|
|
196
296
|
name: crudOptions.name,
|
|
197
|
-
display: crudOptions.display
|
|
297
|
+
display: crudOptions.display,
|
|
298
|
+
identifierKey: crudOptions.identifierKey,
|
|
299
|
+
schema: getJsonSchema(crudOptions.schema),
|
|
198
300
|
});
|
|
199
301
|
|
|
200
|
-
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
201
|
-
|
|
202
302
|
addGroupedMicroFrontends(
|
|
203
303
|
{name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav},
|
|
204
304
|
[
|
|
@@ -208,7 +308,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
208
308
|
description: 'List of ' + crudOptions.display.capitalizedPlural,
|
|
209
309
|
use: crudOptions.screens.list.use,
|
|
210
310
|
route: {
|
|
211
|
-
name: '
|
|
311
|
+
name: crudOptions.name + '-list',
|
|
212
312
|
path: crudOptions.name,
|
|
213
313
|
navBarPosition: 'top'
|
|
214
314
|
}
|
|
@@ -219,7 +319,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
219
319
|
description: 'Create a new ' + crudOptions.display.capitalized,
|
|
220
320
|
use: crudOptions.screens.create.use,
|
|
221
321
|
route: {
|
|
222
|
-
name: '
|
|
322
|
+
name: 'add-' + singlePath,
|
|
223
323
|
path: 'add-' + singlePath,
|
|
224
324
|
navBarPosition: 'top'
|
|
225
325
|
}
|
|
@@ -230,7 +330,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
230
330
|
description: 'Edit existing ' + crudOptions.display.capitalized,
|
|
231
331
|
use: crudOptions.screens.edit.use,
|
|
232
332
|
route: {
|
|
233
|
-
name: '
|
|
333
|
+
name: 'edit-' + singlePath,
|
|
234
334
|
path: `edit-${singlePath}/:id`,
|
|
235
335
|
navBarPosition: false
|
|
236
336
|
}
|
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,8 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
35
50
|
create: Screen;
|
|
36
51
|
edit: Screen;
|
|
37
52
|
},
|
|
38
|
-
|
|
53
|
+
schema?: ResourceSchema,
|
|
54
|
+
dispatchPrefix: string | false,
|
|
39
55
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
40
56
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>),
|
|
41
57
|
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
|
}
|