@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 CHANGED
@@ -136,12 +136,12 @@ function playEndpoints() {
136
136
  });
137
137
  getApp().route(getFrontendAuthorizationRoute());
138
138
  getApp().route(getFrontendUnAuthorizationRoute());
139
- endpoints.forEach((routeOptions, path) => {
139
+ endpoints.forEach((routeOptions) => {
140
140
  const route = {
141
141
  ...routeOptions,
142
142
  };
143
143
  if (routeOptions.verifyToken) {
144
- route.preHandler = path.startsWith(manifest.proxyPath) ? verifyAccessToken : verifyCookieToken;
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,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
- function getPlural(word) {
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
- crudOptions.publicKeys.forEach(key => exposed[key] = item[key]);
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.publicKeys) {
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
- if (!crudOptions.publicKeys) {
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
- if (!crudOptions.publicKeys) {
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
- if (!crudOptions.publicKeys) {
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.publicKeys) {
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: 'List',
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: 'Create',
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: 'Edit',
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":"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"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
@@ -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
- publicKeys?: string[];
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
- endpoints.set(endpointUrl, {
7
+ const method = options.method || 'GET';
8
+ endpoints.set(method + '::' + endpointUrl, {
8
9
  ...options,
9
10
  url: endpointUrl,
10
- method: options.method || 'GET',
11
+ method,
11
12
  handler: options.handler,
12
13
  verifyToken: true,
13
14
  });
@@ -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;QACzB,GAAG,OAAO;QACV,GAAG,EAAE,WAAW;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,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"}
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.4",
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.2.7",
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, path) => {
175
+ endpoints.forEach((routeOptions) => {
176
176
  const route = {
177
177
  ...routeOptions,
178
178
  };
179
179
  if (routeOptions.verifyToken) {
180
- route.preHandler = path.startsWith(manifest.proxyPath) ? verifyAccessToken : verifyCookieToken
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
- crudOptions.publicKeys.forEach(key => exposed[key] = item[key]);
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.publicKeys) {
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 as ResourceInsertData, req, reply);
119
-
120
- if (!crudOptions.publicKeys) {
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.publicKeys) {
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 as ResourceInsertData, req, reply);
162
-
163
- if (!crudOptions.publicKeys) {
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.publicKeys) {
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: 'List',
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: 'Create',
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: 'Edit',
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
- publicKeys?: string[];
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
- endpoints.set(endpointUrl, {
14
+ const method = options.method || 'GET';
15
+ endpoints.set(method + '::' + endpointUrl, {
15
16
  ...options,
16
17
  url: endpointUrl,
17
- method: options.method || 'GET',
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
  }