@liminalfunctions/framework 1.0.51 → 1.0.53
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/F_Collection.d.ts +2 -0
- package/dist/F_Collection.js +9 -0
- package/dist/F_Collection.js.map +1 -1
- package/dist/F_Compile.js +247 -0
- package/dist/F_Compile.js.map +1 -1
- package/dist/F_Security_Models/F_SM_Role_Membership.d.ts +2 -2
- package/dist/F_Security_Models/F_SM_Role_Membership.js +10 -6
- package/dist/F_Security_Models/F_SM_Role_Membership.js.map +1 -1
- package/dist/code_generation/generate_client_library.d.ts +1 -0
- package/dist/code_generation/generate_client_library.js +37 -16
- package/dist/code_generation/generate_client_library.js.map +1 -1
- package/dist/code_generation/templates/collection.mustache +79 -1
- package/dist/utils/array_children_from_zod.d.ts +3 -0
- package/dist/utils/array_children_from_zod.js +39 -0
- package/dist/utils/array_children_from_zod.js.map +1 -0
- package/dist/utils/mongoose_from_zod.js +7 -2
- package/dist/utils/mongoose_from_zod.js.map +1 -1
- package/package.json +1 -1
- package/src/F_Collection.ts +14 -3
- package/src/F_Compile.ts +288 -16
- package/src/F_Security_Models/F_SM_Role_Membership.ts +12 -8
- package/src/code_generation/generate_client_library.ts +35 -8
- package/src/code_generation/templates/collection.mustache +79 -1
- package/src/utils/array_children_from_zod.ts +44 -0
- package/src/utils/mongoose_from_zod.ts +7 -3
- package/test/0_1_mongoose_from_zod.test.ts +16 -10
- package/test/0_6_array_children.test.ts +127 -0
- package/test/1_0_basic_server.test.ts +107 -2
- package/test/1_1_security_ownership.test.ts +186 -6
- package/test/1_2_role_membership.test.ts +329 -9
- package/test/2_1_client_library_generation.test.ts +125 -1
- package/test/tmp/dist/Brief_News_Category.js.map +1 -1
- package/test/tmp/dist/Client.js.map +1 -1
- package/test/tmp/dist/Institution.js.map +1 -1
- package/test/tmp/dist/Project.d.ts +20 -0
- package/test/tmp/dist/Project.js +63 -0
- package/test/tmp/dist/Project.js.map +1 -1
- package/test/tmp/dist/types/project.d.ts +4 -0
- package/test/tmp/dist/types/project_post.d.ts +4 -0
- package/test/tmp/dist/types/project_put.d.ts +4 -0
- package/test/tmp/package-lock.json +111 -111
- package/test/tmp/src/Brief_News_Category.ts +3 -1
- package/test/tmp/src/Client.ts +3 -1
- package/test/tmp/src/Institution.ts +3 -1
- package/test/tmp/src/Project.ts +73 -1
- package/test/tmp/src/types/project.ts +4 -0
- package/test/tmp/src/types/project_post.ts +4 -0
- package/test/tmp/src/types/project_put.ts +4 -0
package/dist/F_Collection.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ export declare class F_Collection<Collection_ID extends string, ZodSchema extend
|
|
|
21
21
|
put_validator: ReturnType<ZodSchema['partial']>;
|
|
22
22
|
post_validator: ZodPartial_Return_Type<ZodSchema['partial']>;
|
|
23
23
|
is_compiled: boolean;
|
|
24
|
+
array_children_map: Map<string, z.ZodType>;
|
|
25
|
+
array_children_post_map: Map<string, z.ZodType>;
|
|
24
26
|
access_layers: F_Layer<Collection_ID, ZodSchema>[];
|
|
25
27
|
create_hooks: ((session: mongoose.mongo.ClientSession, created_document: z.output<ZodSchema>) => Promise<void>)[];
|
|
26
28
|
update_hooks: ((session: mongoose.mongo.ClientSession, updated_document: z.output<ZodSchema>) => Promise<void>)[];
|
package/dist/F_Collection.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { mongoose_from_zod, schema_from_zod } from "./utils/mongoose_from_zod.js";
|
|
2
2
|
import mongoose from "mongoose";
|
|
3
3
|
import { query_validator_from_zod } from "./utils/query_validator_from_zod.js";
|
|
4
|
+
import { array_children_from_zod } from "./utils/array_children_from_zod.js";
|
|
4
5
|
export class F_Collection {
|
|
5
6
|
collection_id;
|
|
6
7
|
collection_name_plural;
|
|
@@ -12,6 +13,8 @@ export class F_Collection {
|
|
|
12
13
|
put_validator;
|
|
13
14
|
post_validator;
|
|
14
15
|
is_compiled;
|
|
16
|
+
array_children_map;
|
|
17
|
+
array_children_post_map;
|
|
15
18
|
access_layers;
|
|
16
19
|
create_hooks;
|
|
17
20
|
update_hooks;
|
|
@@ -33,8 +36,14 @@ export class F_Collection {
|
|
|
33
36
|
if (this.validator._zod.def.shape._id.meta()?.framework_override_type !== 'mongodb_id') {
|
|
34
37
|
throw new Error(`_id must be a mongoDB ID. Use the z_mongodb_id special field.`);
|
|
35
38
|
}
|
|
39
|
+
this.array_children_map = array_children_from_zod(validator);
|
|
36
40
|
this.put_validator = validator.partial();
|
|
37
41
|
this.post_validator = Object.hasOwn(this.validator._zod.def.shape, '_id') ? validator.partial({ _id: true }) : validator;
|
|
42
|
+
this.array_children_post_map = new Map();
|
|
43
|
+
Array.from(this.array_children_map.entries()).forEach((keyval) => {
|
|
44
|
+
let [key, value] = keyval;
|
|
45
|
+
this.array_children_post_map.set(key, value.partial({ _id: true }));
|
|
46
|
+
});
|
|
38
47
|
this.access_layers = [];
|
|
39
48
|
this.is_compiled = false;
|
|
40
49
|
this.create_hooks = [];
|
package/dist/F_Collection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F_Collection.js","sourceRoot":"","sources":["../src/F_Collection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,QAAyC,MAAM,UAAU,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"F_Collection.js","sourceRoot":"","sources":["../src/F_Collection.ts"],"names":[],"mappings":"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"}
|
package/dist/F_Compile.js
CHANGED
|
@@ -144,6 +144,11 @@ export function compile(app, collection, api_prefix, collection_registry) {
|
|
|
144
144
|
res.json({ error: `${req.params.document_id} is not a valid document ID.` });
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
147
|
+
if (req.body._id && req.body._id !== req.params.document_id) {
|
|
148
|
+
res.status(400);
|
|
149
|
+
res.json({ error: `mismatch between document ID and request body _id` });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
147
152
|
let find = { '_id': req.params.document_id };
|
|
148
153
|
for (let layer of access_layers.layers) {
|
|
149
154
|
find[`${layer}_id`] = req.params[layer];
|
|
@@ -338,6 +343,248 @@ export function compile(app, collection, api_prefix, collection_registry) {
|
|
|
338
343
|
res.json({ data: results });
|
|
339
344
|
}
|
|
340
345
|
});
|
|
346
|
+
for (let [array_child_path, array_child_validator] of collection.array_children_map.entries()) {
|
|
347
|
+
let post_validator = collection.array_children_post_map.get(array_child_path);
|
|
348
|
+
let array_child_post_path = [
|
|
349
|
+
api_prefix,
|
|
350
|
+
...base_layers_path_components,
|
|
351
|
+
`${collection.collection_id}/:document_id`,
|
|
352
|
+
array_child_path
|
|
353
|
+
].join('/');
|
|
354
|
+
app.post(array_child_post_path, async (req, res) => {
|
|
355
|
+
if (!isValidObjectId(req.params.document_id)) {
|
|
356
|
+
res.status(400);
|
|
357
|
+
res.json({ error: `${req.params.document_id} is not a valid document ID.` });
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
let find = { '_id': req.params.document_id };
|
|
361
|
+
for (let layer of access_layers.layers) {
|
|
362
|
+
find[`${layer}_id`] = req.params[layer];
|
|
363
|
+
}
|
|
364
|
+
let permissive_security_model = await F_Security_Model.model_with_permission(access_layers.security_models, req, res, find, 'update');
|
|
365
|
+
if (!permissive_security_model) {
|
|
366
|
+
res.status(403);
|
|
367
|
+
res.json({ error: `You do not have permission to update documents from ${collection.collection_id}.` });
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
let metadata_updater = {};
|
|
371
|
+
if (collection.mongoose_schema.updated_by?.type === String) {
|
|
372
|
+
if (req.auth?.user_id) {
|
|
373
|
+
metadata_updater.updated_by = req.auth?.user_id;
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
metadata_updater.updated_by = null;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (collection.mongoose_schema.updated_at?.type === Date) {
|
|
380
|
+
metadata_updater.updated_at = new Date();
|
|
381
|
+
}
|
|
382
|
+
let validated_request_body;
|
|
383
|
+
try {
|
|
384
|
+
validated_request_body = await post_validator.parse(req.body);
|
|
385
|
+
}
|
|
386
|
+
catch (err) {
|
|
387
|
+
if (err instanceof z.ZodError) {
|
|
388
|
+
res.status(400);
|
|
389
|
+
res.json({ error: err.issues });
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
console.error(err);
|
|
394
|
+
res.status(500);
|
|
395
|
+
res.json({ error: `there was a novel error` });
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
try {
|
|
400
|
+
detect_malicious_keys(validated_request_body);
|
|
401
|
+
}
|
|
402
|
+
catch (err) {
|
|
403
|
+
res.status(403);
|
|
404
|
+
res.json({ error: `Found an unacceptable JSON key in the request body.` });
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
let results;
|
|
408
|
+
try {
|
|
409
|
+
results = await collection.perform_update_and_side_effects(find, {
|
|
410
|
+
$push: {
|
|
411
|
+
[array_child_path]: validated_request_body,
|
|
412
|
+
},
|
|
413
|
+
...metadata_updater
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
catch (err) {
|
|
417
|
+
res.status(500);
|
|
418
|
+
res.json({ error: `there was a novel error` });
|
|
419
|
+
console.error(err);
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
if (!results) {
|
|
423
|
+
let sendable = await permissive_security_model.handle_empty_query_results(req, res, 'update');
|
|
424
|
+
res.json(sendable);
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
res.json({ data: results });
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
let array_child_put_path = [
|
|
431
|
+
api_prefix,
|
|
432
|
+
...base_layers_path_components,
|
|
433
|
+
`${collection.collection_id}/:document_id`,
|
|
434
|
+
array_child_path,
|
|
435
|
+
':array_item_id'
|
|
436
|
+
].join('/');
|
|
437
|
+
app.put(array_child_put_path, async (req, res) => {
|
|
438
|
+
if (!isValidObjectId(req.params.document_id)) {
|
|
439
|
+
res.status(400);
|
|
440
|
+
res.json({ error: `${req.params.document_id} is not a valid document ID.` });
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
if (!isValidObjectId(req.params.array_item_id)) {
|
|
444
|
+
res.status(400);
|
|
445
|
+
res.json({ error: `${req.params.array_item_id} is not a valid document ID.` });
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
if (req.body._id && req.body._id !== req.params.array_item_id) {
|
|
449
|
+
res.status(400);
|
|
450
|
+
res.json({ error: `cannot update element _id.` });
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
let find = { '_id': req.params.document_id };
|
|
454
|
+
for (let layer of access_layers.layers) {
|
|
455
|
+
find[`${layer}_id`] = req.params[layer];
|
|
456
|
+
}
|
|
457
|
+
find[`${array_child_path}._id`] = req.params.array_item_id;
|
|
458
|
+
let permissive_security_model = await F_Security_Model.model_with_permission(access_layers.security_models, req, res, find, 'update');
|
|
459
|
+
if (!permissive_security_model) {
|
|
460
|
+
res.status(403);
|
|
461
|
+
res.json({ error: `You do not have permission to update documents from ${collection.collection_id}.` });
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
let metadata_updater = {};
|
|
465
|
+
if (collection.mongoose_schema.updated_by?.type === String) {
|
|
466
|
+
if (req.auth?.user_id) {
|
|
467
|
+
metadata_updater.updated_by = req.auth?.user_id;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
metadata_updater.updated_by = null;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
if (collection.mongoose_schema.updated_at?.type === Date) {
|
|
474
|
+
metadata_updater.updated_at = new Date();
|
|
475
|
+
}
|
|
476
|
+
let validated_request_body;
|
|
477
|
+
try {
|
|
478
|
+
validated_request_body = await array_child_validator.parse(req.body);
|
|
479
|
+
}
|
|
480
|
+
catch (err) {
|
|
481
|
+
if (err instanceof z.ZodError) {
|
|
482
|
+
res.status(400);
|
|
483
|
+
res.json({ error: err.issues });
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
487
|
+
console.error(err);
|
|
488
|
+
res.status(500);
|
|
489
|
+
res.json({ error: `there was a novel error` });
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
try {
|
|
494
|
+
detect_malicious_keys(validated_request_body);
|
|
495
|
+
}
|
|
496
|
+
catch (err) {
|
|
497
|
+
res.status(403);
|
|
498
|
+
res.json({ error: `Found an unacceptable JSON key in the request body.` });
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
let results;
|
|
502
|
+
try {
|
|
503
|
+
results = await collection.perform_update_and_side_effects(find, {
|
|
504
|
+
$set: {
|
|
505
|
+
[`${array_child_path}.$`]: validated_request_body,
|
|
506
|
+
},
|
|
507
|
+
...metadata_updater
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
catch (err) {
|
|
511
|
+
res.status(500);
|
|
512
|
+
res.json({ error: `there was a novel error` });
|
|
513
|
+
console.error(err);
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
if (!results) {
|
|
517
|
+
let sendable = await permissive_security_model.handle_empty_query_results(req, res, 'update');
|
|
518
|
+
res.json(sendable);
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
res.json({ data: results });
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
let array_child_delete_path = [
|
|
525
|
+
api_prefix,
|
|
526
|
+
...base_layers_path_components,
|
|
527
|
+
`${collection.collection_id}/:document_id`,
|
|
528
|
+
array_child_path,
|
|
529
|
+
':array_item_id'
|
|
530
|
+
].join('/');
|
|
531
|
+
app.delete(array_child_delete_path, async (req, res) => {
|
|
532
|
+
if (!isValidObjectId(req.params.document_id)) {
|
|
533
|
+
res.status(400);
|
|
534
|
+
res.json({ error: `${req.params.document_id} is not a valid document ID.` });
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
if (!isValidObjectId(req.params.array_item_id)) {
|
|
538
|
+
res.status(400);
|
|
539
|
+
res.json({ error: `${req.params.array_item_id} is not a valid document ID.` });
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
542
|
+
let find = { '_id': req.params.document_id };
|
|
543
|
+
for (let layer of access_layers.layers) {
|
|
544
|
+
find[`${layer}_id`] = req.params[layer];
|
|
545
|
+
}
|
|
546
|
+
let permissive_security_model = await F_Security_Model.model_with_permission(access_layers.security_models, req, res, find, 'update');
|
|
547
|
+
if (!permissive_security_model) {
|
|
548
|
+
res.status(403);
|
|
549
|
+
res.json({ error: `You do not have permission to update documents from ${collection.collection_id}.` });
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
let metadata_updater = {};
|
|
553
|
+
if (collection.mongoose_schema.updated_by?.type === String) {
|
|
554
|
+
if (req.auth?.user_id) {
|
|
555
|
+
metadata_updater.updated_by = req.auth?.user_id;
|
|
556
|
+
}
|
|
557
|
+
else {
|
|
558
|
+
metadata_updater.updated_by = null;
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
if (collection.mongoose_schema.updated_at?.type === Date) {
|
|
562
|
+
metadata_updater.updated_at = new Date();
|
|
563
|
+
}
|
|
564
|
+
let results;
|
|
565
|
+
try {
|
|
566
|
+
results = await collection.perform_update_and_side_effects(find, {
|
|
567
|
+
$pull: {
|
|
568
|
+
[array_child_path]: { _id: req.params.array_item_id },
|
|
569
|
+
},
|
|
570
|
+
...metadata_updater
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
catch (err) {
|
|
574
|
+
res.status(500);
|
|
575
|
+
res.json({ error: `there was a novel error` });
|
|
576
|
+
console.error(err);
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
if (!results) {
|
|
580
|
+
let sendable = await permissive_security_model.handle_empty_query_results(req, res, 'update');
|
|
581
|
+
res.json(sendable);
|
|
582
|
+
}
|
|
583
|
+
else {
|
|
584
|
+
res.json({ data: results });
|
|
585
|
+
}
|
|
586
|
+
});
|
|
587
|
+
}
|
|
341
588
|
}
|
|
342
589
|
}
|
|
343
590
|
//# sourceMappingURL=F_Compile.js.map
|
package/dist/F_Compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F_Compile.js","sourceRoot":"","sources":["../src/F_Compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"F_Compile.js","sourceRoot":"","sources":["../src/F_Compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,12 +6,12 @@ import { Authenticated_Request, Empty_Query_Possibilities, F_Security_Model, Ope
|
|
|
6
6
|
export declare class F_SM_Role_Membership<Collection_ID extends string, ZodSchema extends z.ZodObject> extends F_Security_Model<Collection_ID, ZodSchema> {
|
|
7
7
|
user_id_field: string;
|
|
8
8
|
role_id_field: string;
|
|
9
|
-
layer_collection_id
|
|
9
|
+
layer_collection_id?: string;
|
|
10
10
|
role_membership_collection: F_Collection<string, any>;
|
|
11
11
|
role_membership_cache: Cache<any>;
|
|
12
12
|
role_collection: F_Collection<string, any>;
|
|
13
13
|
role_cache: Cache<any>;
|
|
14
|
-
constructor(collection: F_Collection<Collection_ID, ZodSchema>, layer_collection: F_Collection<string, any
|
|
14
|
+
constructor(collection: F_Collection<Collection_ID, ZodSchema>, layer_collection: F_Collection<string, any> | undefined, role_membership_collection: F_Collection<string, any>, role_collection: F_Collection<string, any>, role_membership_cache?: Cache<any>, role_cache?: Cache<any>, user_id_field?: string, role_id_field?: string);
|
|
15
15
|
has_permission(req: Authenticated_Request, res: Response, find: {
|
|
16
16
|
[key: string]: any;
|
|
17
17
|
}, operation: Operation): Promise<boolean>;
|
|
@@ -20,7 +20,7 @@ export class F_SM_Role_Membership extends F_Security_Model {
|
|
|
20
20
|
this.needs_auth_user = true;
|
|
21
21
|
this.user_id_field = user_id_field;
|
|
22
22
|
this.role_id_field = role_id_field;
|
|
23
|
-
this.layer_collection_id = layer_collection
|
|
23
|
+
this.layer_collection_id = layer_collection?.collection_id;
|
|
24
24
|
this.role_membership_collection = role_membership_collection;
|
|
25
25
|
this.role_membership_cache = role_membership_cache ?? new Cache(60);
|
|
26
26
|
this.role_collection = role_collection;
|
|
@@ -31,12 +31,16 @@ export class F_SM_Role_Membership extends F_Security_Model {
|
|
|
31
31
|
}
|
|
32
32
|
async has_permission(req, res, find, operation) {
|
|
33
33
|
let user_id = req.auth.user_id;
|
|
34
|
-
let layer_document_id = req.params[this.layer_collection_id] ?? req.params.document_id;
|
|
35
|
-
let
|
|
36
|
-
|
|
34
|
+
let layer_document_id = this.layer_collection_id ? (req.params[this.layer_collection_id] ?? req.params.document_id) : undefined;
|
|
35
|
+
let cache_key = this.layer_collection_id ? `${user_id}-${layer_document_id}` : user_id;
|
|
36
|
+
let role_membership = await this.role_membership_cache.first_fetch_then_refresh(cache_key, async () => {
|
|
37
|
+
let find = {
|
|
37
38
|
[this.user_id_field]: user_id,
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
};
|
|
40
|
+
if (this.layer_collection_id) {
|
|
41
|
+
find[`${this.layer_collection_id}_id`] = new mongoose.Types.ObjectId(layer_document_id);
|
|
42
|
+
}
|
|
43
|
+
let role_memberships = await this.role_membership_collection.mongoose_model.find(find, {}, { lean: true });
|
|
40
44
|
if (role_memberships.length > 1) {
|
|
41
45
|
console.warn(`in F_SM_Role_Membership, more than one role membership for user ${user_id} at layer ${this.layer_collection_id} found.`);
|
|
42
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"F_SM_Role_Membership.js","sourceRoot":"","sources":["../../src/F_Security_Models/F_SM_Role_Membership.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAoD,gBAAgB,EAAa,MAAM,uBAAuB,CAAC;AACtH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,IAAI,wBAAwB,GAAG;IAC3B,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;CACrB,CAAA;AAED,MAAM,OAAO,oBAAkF,SAAQ,gBAA0C;IAC7I,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"F_SM_Role_Membership.js","sourceRoot":"","sources":["../../src/F_Security_Models/F_SM_Role_Membership.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { F_Collection_Registry } from "../F_Collection_Registry.js";
|
|
2
2
|
export declare function generate_client_library<Collections>(output_path: string, collection_registry: F_Collection_Registry<Collections>, service_name?: string): Promise<void>;
|
|
3
3
|
export declare function get_type_name(collection_id: string, suffix?: string): string;
|
|
4
|
+
export declare function get_array_child_type_name(collection_id: string, array_key: string): string;
|
|
4
5
|
export declare function uppercase(str: string): string;
|
|
@@ -10,8 +10,23 @@ function build_path(...args) {
|
|
|
10
10
|
export async function generate_client_library(output_path, collection_registry, service_name = 'default-service') {
|
|
11
11
|
let api_builder = {
|
|
12
12
|
mustache_context: {},
|
|
13
|
-
children: {}
|
|
13
|
+
children: {},
|
|
14
14
|
};
|
|
15
|
+
if (!existsSync(build_path(output_path, 'src'))) {
|
|
16
|
+
await mkdir(build_path(output_path, 'src'));
|
|
17
|
+
}
|
|
18
|
+
if (!existsSync(build_path(output_path, 'dist'))) {
|
|
19
|
+
await mkdir(build_path(output_path, 'dist'));
|
|
20
|
+
}
|
|
21
|
+
if (!existsSync(build_path(output_path, 'src', 'types'))) {
|
|
22
|
+
await mkdir(build_path(output_path, 'src', 'types'));
|
|
23
|
+
}
|
|
24
|
+
if (!existsSync(build_path(output_path, 'src', 'utils'))) {
|
|
25
|
+
await mkdir(build_path(output_path, 'src', 'utils'));
|
|
26
|
+
}
|
|
27
|
+
await writeFile(build_path(output_path, 'src', 'utils', 'utils.ts'), await readFile(fileURLToPath(import.meta.resolve('./templates/utils.ts.mustache')), { encoding: 'utf-8' }));
|
|
28
|
+
await writeFile(build_path(output_path, 'tsconfig.json'), await readFile(fileURLToPath(import.meta.resolve('./templates/tsconfig.json.mustache')), { encoding: 'utf-8' }));
|
|
29
|
+
await writeFile(build_path(output_path, '.gitignore'), await readFile(fileURLToPath(import.meta.resolve('./templates/.gitignore.mustache')), { encoding: 'utf-8' }));
|
|
15
30
|
for (let col of Object.values(collection_registry.collections)) {
|
|
16
31
|
let collection = col;
|
|
17
32
|
let mustache_context = {
|
|
@@ -25,7 +40,25 @@ export async function generate_client_library(output_path, collection_registry,
|
|
|
25
40
|
path_type_put: `types/${get_type_name(collection.collection_id)}_put`,
|
|
26
41
|
type_post: `${get_type_name(collection.collection_id)}_post`,
|
|
27
42
|
path_type_post: `types/${get_type_name(collection.collection_id)}_post`,
|
|
43
|
+
array_children: [],
|
|
44
|
+
has_array_children: false,
|
|
28
45
|
};
|
|
46
|
+
for (let [array_child_key, array_child_validator] of collection.array_children_map.entries()) {
|
|
47
|
+
let array_child_put_type = type_from_zod(array_child_validator);
|
|
48
|
+
let array_child_post_type = type_from_zod(collection.array_children_post_map.get(array_child_key));
|
|
49
|
+
let type_name = get_array_child_type_name(mustache_context.type_return, array_child_key);
|
|
50
|
+
let type_put_name = `${type_name}_put`;
|
|
51
|
+
let type_post_name = `${type_name}_post`;
|
|
52
|
+
let array_child_mustache_context = {
|
|
53
|
+
array_name: array_child_key,
|
|
54
|
+
type_array_child_put: type_put_name,
|
|
55
|
+
array_type_put_definition: `export type ${type_put_name} = ${array_child_put_type[0]}\n${array_child_put_type.slice(1)}`,
|
|
56
|
+
type_array_child_post: type_post_name,
|
|
57
|
+
array_type_post_definition: `export type ${type_post_name} = ${array_child_post_type[0]}\n${array_child_post_type.slice(1)}`,
|
|
58
|
+
};
|
|
59
|
+
mustache_context.array_children.push(array_child_mustache_context);
|
|
60
|
+
mustache_context.has_array_children = true;
|
|
61
|
+
}
|
|
29
62
|
let collection_type_definition_builder = [];
|
|
30
63
|
let collection_type_main = type_from_zod(collection.validator);
|
|
31
64
|
collection_type_definition_builder.push(`export type ${mustache_context.type_return} = ${collection_type_main[0]}`, ...collection_type_main.slice(1));
|
|
@@ -38,21 +71,6 @@ export async function generate_client_library(output_path, collection_registry,
|
|
|
38
71
|
let collection_post_type_definition_builder = [];
|
|
39
72
|
let collection_type_post = type_from_zod(collection.post_validator);
|
|
40
73
|
collection_post_type_definition_builder.push(`export type ${mustache_context.type_post} = ${collection_type_post[0]}`, ...collection_type_post.slice(1));
|
|
41
|
-
if (!existsSync(build_path(output_path, 'src'))) {
|
|
42
|
-
await mkdir(build_path(output_path, 'src'));
|
|
43
|
-
}
|
|
44
|
-
if (!existsSync(build_path(output_path, 'dist'))) {
|
|
45
|
-
await mkdir(build_path(output_path, 'dist'));
|
|
46
|
-
}
|
|
47
|
-
if (!existsSync(build_path(output_path, 'src', 'types'))) {
|
|
48
|
-
await mkdir(build_path(output_path, 'src', 'types'));
|
|
49
|
-
}
|
|
50
|
-
if (!existsSync(build_path(output_path, 'src', 'utils'))) {
|
|
51
|
-
await mkdir(build_path(output_path, 'src', 'utils'));
|
|
52
|
-
}
|
|
53
|
-
await writeFile(build_path(output_path, 'src', 'utils', 'utils.ts'), await readFile(fileURLToPath(import.meta.resolve('./templates/utils.ts.mustache')), { encoding: 'utf-8' }));
|
|
54
|
-
await writeFile(build_path(output_path, 'tsconfig.json'), await readFile(fileURLToPath(import.meta.resolve('./templates/tsconfig.json.mustache')), { encoding: 'utf-8' }));
|
|
55
|
-
await writeFile(build_path(output_path, '.gitignore'), await readFile(fileURLToPath(import.meta.resolve('./templates/.gitignore.mustache')), { encoding: 'utf-8' }));
|
|
56
74
|
await writeFile(build_path(output_path, 'src', mustache_context.path_type_return + '.ts'), collection_type_definition_builder.join('\n'));
|
|
57
75
|
await writeFile(build_path(output_path, 'src', mustache_context.path_type_query + '.ts'), collection_query_type_definition_builder.join('\n'));
|
|
58
76
|
await writeFile(build_path(output_path, 'src', mustache_context.path_type_put + '.ts'), collection_put_type_definition_builder.join('\n'));
|
|
@@ -116,6 +134,9 @@ export async function generate_client_library(output_path, collection_registry,
|
|
|
116
134
|
export function get_type_name(collection_id, suffix) {
|
|
117
135
|
return suffix ? `${collection_id}_${suffix}`.replace(/[^(a-zA-Z0-9\_)]/g, '_') : collection_id.replace(/[^(a-zA-Z0-9\_)]/g, '_');
|
|
118
136
|
}
|
|
137
|
+
export function get_array_child_type_name(collection_id, array_key) {
|
|
138
|
+
return collection_id + '_' + array_key.replace(/[^(a-zA-Z0-9\_)]/g, '_');
|
|
139
|
+
}
|
|
119
140
|
export function uppercase(str) {
|
|
120
141
|
let upper_on = true;
|
|
121
142
|
let joinable = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate_client_library.js","sourceRoot":"","sources":["../../src/code_generation/generate_client_library.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAYtC,SAAS,UAAU,CAAC,GAAG,IAAc;IACjC,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACpC,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAc,WAAmB,EAAE,mBAAuD,EAAE,YAAY,GAAG,iBAAiB;IACrK,IAAI,WAAW,GAAgB;QAC3B,gBAAgB,EAAE,EAAE;QACpB,QAAQ,EAAE,EAAE;KACf,CAAC;
|
|
1
|
+
{"version":3,"file":"generate_client_library.js","sourceRoot":"","sources":["../../src/code_generation/generate_client_library.ts"],"names":[],"mappings":"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"}
|