@qelos/plugin-play 3.3.5 → 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/crud.js +18 -1
- package/dist/crud.js.map +1 -1
- package/dist/crud.types.d.ts +1 -0
- package/package.json +2 -2
- package/src/crud.ts +19 -5
- package/src/crud.types.ts +1 -0
package/dist/crud.js
CHANGED
|
@@ -3,6 +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
|
+
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)) {
|
|
@@ -109,6 +110,7 @@ export function createCrud(options) {
|
|
|
109
110
|
const crudOptions = {
|
|
110
111
|
name: display.plural.replaceAll(' ', '-'),
|
|
111
112
|
identifierKey: '_id',
|
|
113
|
+
dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
|
|
112
114
|
verify: async () => null,
|
|
113
115
|
...options,
|
|
114
116
|
display: {
|
|
@@ -150,6 +152,19 @@ export function createCrud(options) {
|
|
|
150
152
|
throw err;
|
|
151
153
|
}
|
|
152
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
|
+
}
|
|
153
168
|
// get one
|
|
154
169
|
addProxyEndpoint(itemPath, {
|
|
155
170
|
verifyToken: true,
|
|
@@ -178,6 +193,7 @@ export function createCrud(options) {
|
|
|
178
193
|
await crudOptions.verify(req, reply);
|
|
179
194
|
const id = req.params.id || '';
|
|
180
195
|
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
196
|
+
triggerOperation(req, 'update', item).catch();
|
|
181
197
|
if (!crudOptions.schema) {
|
|
182
198
|
return item;
|
|
183
199
|
}
|
|
@@ -197,6 +213,7 @@ export function createCrud(options) {
|
|
|
197
213
|
await crudOptions.verify(req, reply);
|
|
198
214
|
const id = req.params.id || '';
|
|
199
215
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
216
|
+
triggerOperation(req, 'delete', item).catch();
|
|
200
217
|
if (!crudOptions.schema) {
|
|
201
218
|
return item;
|
|
202
219
|
}
|
|
@@ -215,6 +232,7 @@ export function createCrud(options) {
|
|
|
215
232
|
try {
|
|
216
233
|
await crudOptions.verify(req, reply);
|
|
217
234
|
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
235
|
+
triggerOperation(req, 'create', item).catch();
|
|
218
236
|
if (!crudOptions.schema) {
|
|
219
237
|
return item;
|
|
220
238
|
}
|
|
@@ -249,7 +267,6 @@ export function createCrud(options) {
|
|
|
249
267
|
identifierKey: crudOptions.identifierKey,
|
|
250
268
|
schema: getJsonSchema(crudOptions.schema),
|
|
251
269
|
});
|
|
252
|
-
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
253
270
|
addGroupedMicroFrontends({ name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav }, [
|
|
254
271
|
{
|
|
255
272
|
name: 'List',
|
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
|
@@ -45,6 +45,7 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
45
45
|
edit: Screen;
|
|
46
46
|
};
|
|
47
47
|
schema?: ResourceSchema;
|
|
48
|
+
dispatchPrefix: string | false;
|
|
48
49
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
49
50
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>);
|
|
50
51
|
readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
|
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/crud.ts
CHANGED
|
@@ -5,6 +5,7 @@ import logger from './logger';
|
|
|
5
5
|
import manifest from './manifest';
|
|
6
6
|
import {Crud, ICrudOptions, ResourceProperty, ResourceSchema} from './crud.types';
|
|
7
7
|
import {addGroupedMicroFrontends} 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();
|
|
@@ -123,6 +124,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
123
124
|
const crudOptions: ICrudOptions<ResourcePublicData, ResourceInsertData> & Crud = {
|
|
124
125
|
name: display.plural.replaceAll(' ', '-'),
|
|
125
126
|
identifierKey: '_id',
|
|
127
|
+
dispatchPrefix: options.dispatchPrefix === false ? options.dispatchPrefix : options.dispatchPrefix || manifest.name,
|
|
126
128
|
verify: async () => null,
|
|
127
129
|
...options,
|
|
128
130
|
display: {
|
|
@@ -168,6 +170,20 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
168
170
|
}
|
|
169
171
|
|
|
170
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
|
+
}
|
|
171
187
|
|
|
172
188
|
// get one
|
|
173
189
|
addProxyEndpoint(itemPath, {
|
|
@@ -200,7 +216,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
200
216
|
await crudOptions.verify(req, reply);
|
|
201
217
|
const id: string = (req.params as any).id || '';
|
|
202
218
|
const item = await crudOptions.updateOne(id, getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
203
|
-
|
|
219
|
+
triggerOperation(req, 'update', item).catch();
|
|
204
220
|
if (!crudOptions.schema) {
|
|
205
221
|
return item;
|
|
206
222
|
}
|
|
@@ -222,7 +238,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
222
238
|
await crudOptions.verify(req, reply);
|
|
223
239
|
const id: string = (req.params as any).id || '';
|
|
224
240
|
const item = await crudOptions.deleteOne(id, req, reply);
|
|
225
|
-
|
|
241
|
+
triggerOperation(req, 'delete', item).catch();
|
|
226
242
|
if (!crudOptions.schema) {
|
|
227
243
|
return item;
|
|
228
244
|
}
|
|
@@ -243,7 +259,7 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
243
259
|
try {
|
|
244
260
|
await crudOptions.verify(req, reply);
|
|
245
261
|
const item = await crudOptions.createOne(getValidatedItem(req.body, crudOptions.schema), req, reply);
|
|
246
|
-
|
|
262
|
+
triggerOperation(req, 'create', item).catch();
|
|
247
263
|
if (!crudOptions.schema) {
|
|
248
264
|
return item;
|
|
249
265
|
}
|
|
@@ -283,8 +299,6 @@ export function createCrud<ResourcePublicData = any, ResourceInsertData = any>(
|
|
|
283
299
|
schema: getJsonSchema(crudOptions.schema),
|
|
284
300
|
});
|
|
285
301
|
|
|
286
|
-
const singlePath = crudOptions.display.name.toLowerCase().replaceAll(' ', '-');
|
|
287
|
-
|
|
288
302
|
addGroupedMicroFrontends(
|
|
289
303
|
{name: crudOptions.display.capitalizedPlural, key: crudOptions.name, ...crudOptions.nav},
|
|
290
304
|
[
|
package/src/crud.types.ts
CHANGED
|
@@ -51,6 +51,7 @@ export interface ICrudOptions<ResourcePublicData, ResourceInsertData> {
|
|
|
51
51
|
edit: Screen;
|
|
52
52
|
},
|
|
53
53
|
schema?: ResourceSchema,
|
|
54
|
+
dispatchPrefix: string | false,
|
|
54
55
|
verify?: (request: FastifyRequest, reply: FastifyReply) => Promise<any>;
|
|
55
56
|
createOne: (body: Partial<ResourceInsertData>, request: FastifyRequest, reply: FastifyReply) => (any | Promise<ResourcePublicData>),
|
|
56
57
|
readOne: (id: string, request: FastifyRequest, reply: FastifyReply) => (Promise<ResourcePublicData>);
|