@qelos/plugin-play 3.3.5 → 3.3.7

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/crud.js CHANGED
@@ -2,7 +2,8 @@ import { addProxyEndpoint } from './endpoints';
2
2
  import { ResponseError } from './response-error';
3
3
  import logger from './logger';
4
4
  import manifest from './manifest';
5
- import { addGroupedMicroFrontends } from './micro-frontends';
5
+ import { addGroupedMicroFrontends, NavBarPosition } from './micro-frontends';
6
+ import { getSdkForTenant } from './sdk';
6
7
  export function getPlural(word) {
7
8
  const lastChar = word[word.length - 1].toLowerCase();
8
9
  if (['x', 'h', 's'].includes(lastChar)) {
@@ -25,7 +26,7 @@ export function getDisplayNames(name) {
25
26
  };
26
27
  }
27
28
  function isPropValidToDisplay(value, propSchema, dest) {
28
- return (propSchema.public &&
29
+ return (propSchema?.public &&
29
30
  !(propSchema.hideInList && dest === 'list') &&
30
31
  (typeof propSchema.type === 'undefined' ||
31
32
  (propSchema.type === null && value === null) ||
@@ -35,7 +36,7 @@ function fillFromSchema(exposed, item, schema, dest = 'single') {
35
36
  for (const key in schema) {
36
37
  const prop = schema[key];
37
38
  const value = item[key];
38
- if (isPropValidToDisplay(value, prop.schema, dest)) {
39
+ if (isPropValidToDisplay(value, prop, dest)) {
39
40
  if (prop.schema && prop.type === Object) {
40
41
  exposed[key] = {};
41
42
  fillFromSchema(exposed[key], value, prop.schema);
@@ -104,11 +105,13 @@ export function createCrud(options) {
104
105
  list: {},
105
106
  create: {},
106
107
  edit: {},
108
+ view: {},
107
109
  ...options.screens,
108
110
  };
109
111
  const crudOptions = {
110
112
  name: display.plural.replaceAll(' ', '-'),
111
113
  identifierKey: '_id',
114
+ dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
112
115
  verify: async () => null,
113
116
  ...options,
114
117
  display: {
@@ -116,18 +119,22 @@ export function createCrud(options) {
116
119
  ...options.display
117
120
  },
118
121
  screens: {
119
- list: {
122
+ list: screens.list === false ? screens.list : {
120
123
  use: screens.list.use || 'rows-list',
121
124
  structure: screens.list.structure,
122
125
  },
123
- create: {
126
+ create: screens.create === false ? screens.create : {
124
127
  use: screens.create.use || 'basic-form',
125
128
  structure: screens.create.structure
126
129
  },
127
- edit: {
130
+ edit: screens.edit === false ? screens.edit : {
128
131
  use: screens.edit.use || 'basic-form',
129
132
  structure: screens.edit.structure,
130
133
  },
134
+ view: screens.view === false ? screens.view : {
135
+ use: screens.view.use || 'basic-form',
136
+ structure: screens.view.structure,
137
+ },
131
138
  },
132
139
  nav: options.nav || {}
133
140
  };
@@ -150,6 +157,19 @@ export function createCrud(options) {
150
157
  throw err;
151
158
  }
152
159
  const itemPath = crudOptions.name + '/:id';
160
+ const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
161
+ async function triggerOperation(req, kind, metadata) {
162
+ if (crudOptions.dispatchPrefix) {
163
+ const sdk = await getSdkForTenant(req.tenantPayload);
164
+ sdk?.events.dispatch({
165
+ source: `${crudOptions.dispatchPrefix}:${crudOptions.name}`,
166
+ kind,
167
+ eventName: `${kind}-${singlePath}`,
168
+ user: req.user._id,
169
+ metadata,
170
+ });
171
+ }
172
+ }
153
173
  // get one
154
174
  addProxyEndpoint(itemPath, {
155
175
  verifyToken: true,
@@ -178,6 +198,7 @@ export function createCrud(options) {
178
198
  await crudOptions.verify(req, reply);
179
199
  const id = req.params.id || '';
180
200
  const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
201
+ triggerOperation(req, 'update', item).catch();
181
202
  if (!crudOptions.schema) {
182
203
  return item;
183
204
  }
@@ -197,6 +218,7 @@ export function createCrud(options) {
197
218
  await crudOptions.verify(req, reply);
198
219
  const id = req.params.id || '';
199
220
  const item = await crudOptions.deleteOne(id, req, reply);
221
+ triggerOperation(req, 'delete', item).catch();
200
222
  if (!crudOptions.schema) {
201
223
  return item;
202
224
  }
@@ -215,6 +237,7 @@ export function createCrud(options) {
215
237
  try {
216
238
  await crudOptions.verify(req, reply);
217
239
  const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
240
+ triggerOperation(req, 'create', item).catch();
218
241
  if (!crudOptions.schema) {
219
242
  return item;
220
243
  }
@@ -236,7 +259,7 @@ export function createCrud(options) {
236
259
  if (!crudOptions.schema) {
237
260
  return list;
238
261
  }
239
- return list.map(getPublicData);
262
+ return list.map(getPublicDataForList);
240
263
  }
241
264
  catch (err) {
242
265
  return handleError(err, reply);
@@ -249,40 +272,54 @@ export function createCrud(options) {
249
272
  identifierKey: crudOptions.identifierKey,
250
273
  schema: getJsonSchema(crudOptions.schema),
251
274
  });
252
- const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
253
275
  addGroupedMicroFrontends({ name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav }, [
254
- {
276
+ crudOptions.screens.list && {
255
277
  name: 'List',
256
278
  crud: crudOptions.name,
257
279
  description: 'List of ' + crudOptions.display.capitalizedPlural,
258
280
  use: crudOptions.screens.list.use,
281
+ structure: crudOptions.screens.list.structure,
259
282
  route: {
260
283
  name: crudOptions.name + '-list',
261
284
  path: crudOptions.name,
262
- navBarPosition: 'top'
285
+ navBarPosition: NavBarPosition.TOP
263
286
  }
264
287
  },
265
- {
288
+ crudOptions.screens.create && {
266
289
  name: 'Create',
267
290
  crud: crudOptions.name,
268
291
  description: 'Create a new ' + crudOptions.display.capitalized,
269
292
  use: crudOptions.screens.create.use,
293
+ structure: crudOptions.screens.create.structure,
270
294
  route: {
271
295
  name: 'add-' + singlePath,
272
296
  path: 'add-' + singlePath,
273
- navBarPosition: 'top'
297
+ navBarPosition: NavBarPosition.TOP
274
298
  }
275
299
  },
276
- {
300
+ crudOptions.screens.edit && {
277
301
  name: 'Edit',
278
302
  crud: crudOptions.name,
279
303
  description: 'Edit existing ' + crudOptions.display.capitalized,
280
304
  use: crudOptions.screens.edit.use,
305
+ structure: crudOptions.screens.edit.structure,
281
306
  route: {
282
307
  name: 'edit-' + singlePath,
283
308
  path: `edit-${singlePath}/:id`,
284
309
  navBarPosition: false
285
310
  }
311
+ },
312
+ crudOptions.screens.view && {
313
+ name: 'View',
314
+ crud: crudOptions.name,
315
+ description: 'View existing ' + crudOptions.display.capitalized,
316
+ use: crudOptions.screens.view.use,
317
+ structure: crudOptions.screens.view.structure,
318
+ route: {
319
+ name: 'view-' + singlePath,
320
+ path: `view-${singlePath}/:id`,
321
+ navBarPosition: false
322
+ }
286
323
  }
287
324
  ]);
288
325
  }
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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"}
@@ -40,11 +40,13 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
40
40
  priority?: number;
41
41
  };
42
42
  screens?: {
43
- list: Screen;
44
- create: Screen;
45
- edit: Screen;
43
+ list: false | Screen;
44
+ create: false | Screen;
45
+ edit: false | Screen;
46
+ view: false | Screen;
46
47
  };
47
48
  schema?: ResourceSchema;
49
+ dispatchPrefix: string | false;
48
50
  verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
49
51
  createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>);
50
52
  readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
@@ -5,6 +5,12 @@ export interface IframeMicroFrontend extends GlobalMicroFrontend {
5
5
  interface PreDesignedMicroFrontend extends GlobalMicroFrontend {
6
6
  use: string;
7
7
  crud: string;
8
+ structure: string;
9
+ }
10
+ export declare enum NavBarPosition {
11
+ TOP = "top",
12
+ BOTTOM = "bottom",
13
+ USER_DROPDOWN = "user-dropdown"
8
14
  }
9
15
  export interface GlobalMicroFrontend {
10
16
  name: string;
@@ -13,7 +19,7 @@ export interface GlobalMicroFrontend {
13
19
  route?: {
14
20
  name: string;
15
21
  path: string;
16
- navBarPosition: 'top' | 'bottom' | 'user-dropdown' | false;
22
+ navBarPosition: NavBarPosition | false;
17
23
  group?: string;
18
24
  iconName?: string;
19
25
  iconSvg?: string;
@@ -31,5 +37,5 @@ export interface GlobalMicroFrontend {
31
37
  export type MicroFrontendOptions = IframeMicroFrontend | PreDesignedMicroFrontend;
32
38
  export type MicroFrontend = IframeMicroFrontend | PreDesignedMicroFrontend;
33
39
  export declare function addMicroFrontend(mfe: MicroFrontendOptions): void;
34
- export declare function addGroupedMicroFrontends(group: NavBarGroup, mfeArray: MicroFrontendOptions[]): void;
40
+ export declare function addGroupedMicroFrontends(group: NavBarGroup, mfeArray: (MicroFrontendOptions | false | null | undefined)[]): void;
35
41
  export {};
@@ -1,11 +1,19 @@
1
1
  import manifest from './manifest';
2
+ export var NavBarPosition;
3
+ (function (NavBarPosition) {
4
+ NavBarPosition["TOP"] = "top";
5
+ NavBarPosition["BOTTOM"] = "bottom";
6
+ NavBarPosition["USER_DROPDOWN"] = "user-dropdown";
7
+ })(NavBarPosition || (NavBarPosition = {}));
2
8
  export function addMicroFrontend(mfe) {
3
9
  manifest.microFrontends.push({ ...mfe });
4
10
  }
5
11
  export function addGroupedMicroFrontends(group, mfeArray) {
6
12
  manifest.navBarGroups.push(group);
7
13
  mfeArray.forEach(mfe => {
8
- addMicroFrontend({ ...mfe, route: { ...mfe.route, group: group.key } });
14
+ if (mfe) {
15
+ addMicroFrontend({ ...mfe, route: { ...mfe.route, group: group.key } });
16
+ }
9
17
  });
10
18
  }
11
19
  //# sourceMappingURL=micro-frontends.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"micro-frontends.js","sourceRoot":"","sources":["../src/micro-frontends.ts"],"names":[],"mappings":"AAAA,OAAO,QAAuB,MAAM,YAAY,CAAC;AAqCjD,MAAM,UAAU,gBAAgB,CAAC,GAAyB;IACxD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,EAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAkB,EAAE,QAAgC;IAC3F,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACrB,gBAAgB,CAAC,EAAC,GAAG,GAAG,EAAE,KAAK,EAAE,EAAC,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAC,EAAC,CAAC,CAAA;IACrE,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"micro-frontends.js","sourceRoot":"","sources":["../src/micro-frontends.ts"],"names":[],"mappings":"AAAA,OAAO,QAAuB,MAAM,YAAY,CAAC;AAYjD,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,mCAAiB,CAAA;IACjB,iDAA+B,CAAA;AACjC,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AA4BD,MAAM,UAAU,gBAAgB,CAAC,GAAyB;IACxD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,EAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAkB,EAAE,QAA6D;IACxH,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACrB,IAAI,GAAG,EAAE;YACP,gBAAgB,CAAC,EAAC,GAAG,GAAG,EAAE,KAAK,EAAE,EAAC,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAC,EAAC,CAAC,CAAA;SACpE;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qelos/plugin-play",
3
- "version": "3.3.5",
3
+ "version": "3.3.7",
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/crud.ts CHANGED
@@ -4,7 +4,8 @@ import {ResponseError} from './response-error';
4
4
  import logger from './logger';
5
5
  import manifest from './manifest';
6
6
  import {Crud, ICrudOptions, ResourceProperty, ResourceSchema} from './crud.types';
7
- import {addGroupedMicroFrontends} from './micro-frontends';
7
+ import {addGroupedMicroFrontends, NavBarPosition} from './micro-frontends';
8
+ import {getSdkForTenant} from './sdk';
8
9
 
9
10
  export function getPlural(word: string) {
10
11
  const lastChar = word[word.length - 1].toLowerCase();
@@ -31,7 +32,7 @@ export function getDisplayNames(name: string) {
31
32
  }
32
33
 
33
34
  function isPropValidToDisplay(value, propSchema: ResourceSchema | ResourceProperty, dest: 'list' | 'single') {
34
- return (propSchema.public &&
35
+ return (propSchema?.public &&
35
36
  !(propSchema.hideInList && dest === 'list') &&
36
37
  (
37
38
  typeof propSchema.type === 'undefined' ||
@@ -44,7 +45,7 @@ function fillFromSchema(exposed: any, item: any, schema: ResourceSchema, dest: '
44
45
  for (const key in schema) {
45
46
  const prop = schema[key];
46
47
  const value = item[key];
47
- if (isPropValidToDisplay(value, prop.schema, dest)) {
48
+ if (isPropValidToDisplay(value, prop, dest)) {
48
49
  if (prop.schema && prop.type === Object) {
49
50
  exposed[key] = {}
50
51
  fillFromSchema(exposed[key], value, prop.schema as ResourceSchema);
@@ -117,12 +118,14 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
117
118
  list: {},
118
119
  create: {},
119
120
  edit: {},
121
+ view: {},
120
122
  ...options.screens,
121
123
  }
122
124
 
123
125
  const crudOptions: ICrudOptions<ResourcePublicData, ResourceInsertData> & Crud = {
124
126
  name: display.plural.replaceAll(' ', '-'),
125
127
  identifierKey: '_id',
128
+ dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
126
129
  verify: async () => null,
127
130
  ...options,
128
131
  display: {
@@ -130,18 +133,22 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
130
133
  ...options.display
131
134
  },
132
135
  screens: {
133
- list: {
136
+ list: screens.list === false ? screens.list : {
134
137
  use: screens.list.use || 'rows-list',
135
138
  structure: screens.list.structure,
136
139
  },
137
- create: {
140
+ create: screens.create === false ? screens.create : {
138
141
  use: screens.create.use || 'basic-form',
139
142
  structure: screens.create.structure
140
143
  },
141
- edit: {
144
+ edit: screens.edit === false ? screens.edit : {
142
145
  use: screens.edit.use || 'basic-form',
143
146
  structure: screens.edit.structure,
144
147
  },
148
+ view: screens.view === false ? screens.view : {
149
+ use: screens.view.use || 'basic-form',
150
+ structure: screens.view.structure,
151
+ },
145
152
  },
146
153
  nav: options.nav || {}
147
154
  };
@@ -168,6 +175,20 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
168
175
  }
169
176
 
170
177
  const itemPath = crudOptions.name + '/:id';
178
+ const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
179
+
180
+ async function triggerOperation(req, kind, metadata) {
181
+ if (crudOptions.dispatchPrefix) {
182
+ const sdk = await getSdkForTenant(req.tenantPayload);
183
+ sdk?.events.dispatch({
184
+ source: `${crudOptions.dispatchPrefix}:${crudOptions.name}`,
185
+ kind,
186
+ eventName: `${kind}-${singlePath}`,
187
+ user: req.user._id,
188
+ metadata,
189
+ })
190
+ }
191
+ }
171
192
 
172
193
  // get one
173
194
  addProxyEndpoint(itemPath, {
@@ -200,7 +221,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
200
221
  await crudOptions.verify(req, reply);
201
222
  const id: string = (req.params as any).id || '';
202
223
  const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
203
-
224
+ triggerOperation(req, 'update', item).catch();
204
225
  if (!crudOptions.schema) {
205
226
  return item;
206
227
  }
@@ -222,7 +243,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
222
243
  await crudOptions.verify(req, reply);
223
244
  const id: string = (req.params as any).id || '';
224
245
  const item = await crudOptions.deleteOne(id, req, reply);
225
-
246
+ triggerOperation(req, 'delete', item).catch();
226
247
  if (!crudOptions.schema) {
227
248
  return item;
228
249
  }
@@ -243,7 +264,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
243
264
  try {
244
265
  await crudOptions.verify(req, reply);
245
266
  const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
246
-
267
+ triggerOperation(req, 'create', item).catch();
247
268
  if (!crudOptions.schema) {
248
269
  return item;
249
270
  }
@@ -269,7 +290,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
269
290
  return list;
270
291
  }
271
292
 
272
- return list.map(getPublicData);
293
+ return list.map(getPublicDataForList);
273
294
  } catch (err) {
274
295
  return handleError(err, reply);
275
296
  }
@@ -283,43 +304,56 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
283
304
  schema: getJsonSchema(crudOptions.schema),
284
305
  });
285
306
 
286
- const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
287
-
288
307
  addGroupedMicroFrontends(
289
308
  {name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav},
290
309
  [
291
- {
310
+ crudOptions.screens.list && {
292
311
  name: 'List',
293
312
  crud: crudOptions.name,
294
313
  description: 'List of ' + crudOptions.display.capitalizedPlural,
295
314
  use: crudOptions.screens.list.use,
315
+ structure: crudOptions.screens.list.structure,
296
316
  route: {
297
317
  name: crudOptions.name + '-list',
298
318
  path: crudOptions.name,
299
- navBarPosition: 'top'
319
+ navBarPosition: NavBarPosition.TOP
300
320
  }
301
321
  },
302
- {
322
+ crudOptions.screens.create && {
303
323
  name: 'Create',
304
324
  crud: crudOptions.name,
305
325
  description: 'Create a new ' + crudOptions.display.capitalized,
306
326
  use: crudOptions.screens.create.use,
327
+ structure: crudOptions.screens.create.structure,
307
328
  route: {
308
329
  name: 'add-' + singlePath,
309
330
  path: 'add-' + singlePath,
310
- navBarPosition: 'top'
331
+ navBarPosition: NavBarPosition.TOP
311
332
  }
312
333
  },
313
- {
334
+ crudOptions.screens.edit && {
314
335
  name: 'Edit',
315
336
  crud: crudOptions.name,
316
337
  description: 'Edit existing ' + crudOptions.display.capitalized,
317
338
  use: crudOptions.screens.edit.use,
339
+ structure: crudOptions.screens.edit.structure,
318
340
  route: {
319
341
  name: 'edit-' + singlePath,
320
342
  path: `edit-${singlePath}/:id`,
321
343
  navBarPosition: false
322
344
  }
345
+ },
346
+ crudOptions.screens.view && {
347
+ name: 'View',
348
+ crud: crudOptions.name,
349
+ description: 'View existing ' + crudOptions.display.capitalized,
350
+ use: crudOptions.screens.view.use,
351
+ structure: crudOptions.screens.view.structure,
352
+ route: {
353
+ name: 'view-' + singlePath,
354
+ path: `view-${singlePath}/:id`,
355
+ navBarPosition: false
356
+ }
323
357
  }
324
358
  ]
325
359
  )
package/src/crud.types.ts CHANGED
@@ -46,11 +46,13 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
46
46
  priority?: number;
47
47
  },
48
48
  screens?: {
49
- list: Screen;
50
- create: Screen;
51
- edit: Screen;
49
+ list: false | Screen;
50
+ create: false | Screen;
51
+ edit: false | Screen;
52
+ view: false | Screen;
52
53
  },
53
54
  schema?: ResourceSchema,
55
+ dispatchPrefix: string | false,
54
56
  verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
55
57
  createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>),
56
58
  readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
@@ -7,6 +7,13 @@ export interface IframeMicroFrontend extends GlobalMicroFrontend {
7
7
  interface PreDesignedMicroFrontend extends GlobalMicroFrontend {
8
8
  use: string;
9
9
  crud: string;
10
+ structure: string;
11
+ }
12
+
13
+ export enum NavBarPosition {
14
+ TOP = 'top',
15
+ BOTTOM = 'bottom',
16
+ USER_DROPDOWN = 'user-dropdown',
10
17
  }
11
18
 
12
19
  export interface GlobalMicroFrontend {
@@ -16,7 +23,7 @@ export interface GlobalMicroFrontend {
16
23
  route?: {
17
24
  name: string;
18
25
  path: string;
19
- navBarPosition: 'top' | 'bottom' | 'user-dropdown' | false;
26
+ navBarPosition: NavBarPosition | false;
20
27
  group?: string;
21
28
  iconName?: string;
22
29
  iconSvg?: string;
@@ -39,9 +46,11 @@ export function addMicroFrontend(mfe: MicroFrontendOptions) {
39
46
  manifest.microFrontends.push({...mfe});
40
47
  }
41
48
 
42
- export function addGroupedMicroFrontends(group: NavBarGroup, mfeArray: MicroFrontendOptions[]) {
49
+ export function addGroupedMicroFrontends(group: NavBarGroup, mfeArray: (MicroFrontendOptions | false | null | undefined)[]) {
43
50
  manifest.navBarGroups.push(group);
44
51
  mfeArray.forEach(mfe => {
45
- addMicroFrontend({...mfe, route: {...mfe.route, group: group.key}})
52
+ if (mfe) {
53
+ addMicroFrontend({...mfe, route: {...mfe.route, group: group.key}})
54
+ }
46
55
  })
47
56
  }