@decaf-ts/for-nest 0.0.2 → 0.0.3
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/for-nest.cjs +468 -15
- package/dist/for-nest.esm.cjs +468 -14
- package/lib/RepoFactory.cjs +27 -0
- package/lib/RepoFactory.d.ts +6 -0
- package/lib/core-module.cjs +27 -7
- package/lib/core-module.d.ts +7 -2
- package/lib/decoration.cjs +123 -0
- package/lib/decoration.d.ts +1 -0
- package/lib/decorators/ApiProperty.cjs +63 -0
- package/lib/decorators/ApiProperty.d.ts +27 -0
- package/lib/decorators/helpers.cjs +140 -0
- package/lib/decorators/helpers.d.ts +8 -0
- package/lib/decorators/index.cjs +19 -0
- package/lib/decorators/index.d.ts +2 -0
- package/lib/esm/RepoFactory.d.ts +6 -0
- package/lib/esm/RepoFactory.js +24 -0
- package/lib/esm/core-module.d.ts +7 -2
- package/lib/esm/core-module.js +27 -7
- package/lib/esm/decoration.d.ts +1 -0
- package/lib/esm/decoration.js +121 -0
- package/lib/esm/decorators/ApiProperty.d.ts +27 -0
- package/lib/esm/decorators/ApiProperty.js +57 -0
- package/lib/esm/decorators/helpers.d.ts +8 -0
- package/lib/esm/decorators/helpers.js +132 -0
- package/lib/esm/decorators/index.d.ts +2 -0
- package/lib/esm/decorators/index.js +3 -0
- package/lib/esm/index.d.ts +7 -2
- package/lib/esm/index.js +8 -3
- package/lib/esm/model-module.d.ts +8 -0
- package/lib/esm/model-module.js +119 -0
- package/lib/esm/module.d.ts +1 -1
- package/lib/esm/module.js +11 -3
- package/lib/esm/types.d.ts +1 -0
- package/lib/esm/types.js +1 -1
- package/lib/esm/utils.d.ts +2 -0
- package/lib/esm/utils.js +11 -0
- package/lib/index.cjs +8 -3
- package/lib/index.d.ts +7 -2
- package/lib/model-module.cjs +122 -0
- package/lib/model-module.d.ts +8 -0
- package/lib/module.cjs +11 -3
- package/lib/module.d.ts +1 -1
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +1 -0
- package/lib/utils.cjs +14 -0
- package/lib/utils.d.ts +2 -0
- package/package.json +4 -2
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var DecafModelModule_1;
|
|
14
|
+
import { Body, Controller, Get, Param, Post } from "@nestjs/common";
|
|
15
|
+
import { ApiBadRequestResponse, ApiBody, ApiCreatedResponse, ApiExtraModels, ApiNotFoundResponse, ApiOkResponse, ApiOperation, ApiParam, ApiTags, ApiUnprocessableEntityResponse, getSchemaPath, } from "@nestjs/swagger";
|
|
16
|
+
import { Adapter, Repository } from "@decaf-ts/core";
|
|
17
|
+
import { LoggedClass, Logging, toKebabCase } from "@decaf-ts/logging";
|
|
18
|
+
import { repoForModel } from "./utils.js";
|
|
19
|
+
import { RepoFactory } from "./RepoFactory.js";
|
|
20
|
+
import { Module } from "@nestjs/common";
|
|
21
|
+
let DecafModelModule = class DecafModelModule {
|
|
22
|
+
static { DecafModelModule_1 = this; }
|
|
23
|
+
static get log() {
|
|
24
|
+
if (!this._logger)
|
|
25
|
+
this._logger = Logging.for(DecafModelModule_1);
|
|
26
|
+
return this._logger;
|
|
27
|
+
}
|
|
28
|
+
static toModelController(modelClass) {
|
|
29
|
+
const log = this.log.for(this.toModelController);
|
|
30
|
+
log.debug(`Creating model controller... ${modelClass.name}`);
|
|
31
|
+
const modelName = toKebabCase(Repository.table(modelClass));
|
|
32
|
+
const route = modelName;
|
|
33
|
+
let DynamicModelController = class DynamicModelController extends LoggedClass {
|
|
34
|
+
constructor(repoFactory) {
|
|
35
|
+
super();
|
|
36
|
+
this.repoFactory = repoFactory;
|
|
37
|
+
try {
|
|
38
|
+
this.repo = this.repoFactory.for(modelClass.name);
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
log.error(`Failed to get repository for ${modelClass.name}`, e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async create(data) {
|
|
45
|
+
const log = this.log.for(this.create);
|
|
46
|
+
log.verbose(`creating new ${modelName}`);
|
|
47
|
+
const r = repoForModel("Account");
|
|
48
|
+
const created = await r.create(data);
|
|
49
|
+
log.info(`created new ${modelName} with id ${created[r.pk]}`);
|
|
50
|
+
return created;
|
|
51
|
+
}
|
|
52
|
+
async read(id) {
|
|
53
|
+
const log = this.log.for(this.read);
|
|
54
|
+
log.debug(`reading ${modelName} with ${this.repo.pk} ${id}`);
|
|
55
|
+
const read = await this.repo.read(id);
|
|
56
|
+
log.info(`read ${modelName} with id ${read[this.repo.pk]}`);
|
|
57
|
+
return read;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
__decorate([
|
|
61
|
+
Post(),
|
|
62
|
+
ApiOperation({ summary: `Create a new ${modelName}.` }),
|
|
63
|
+
ApiBody({
|
|
64
|
+
description: `Payload for ${modelName}`,
|
|
65
|
+
schema: { $ref: getSchemaPath(modelClass) },
|
|
66
|
+
}),
|
|
67
|
+
ApiCreatedResponse({ description: `${modelName} created successfully.` }),
|
|
68
|
+
ApiBadRequestResponse({ description: "Payload validation failed." }),
|
|
69
|
+
ApiUnprocessableEntityResponse({
|
|
70
|
+
description: "Repository rejected the provided payload.",
|
|
71
|
+
}),
|
|
72
|
+
__param(0, Body()),
|
|
73
|
+
__metadata("design:type", Function),
|
|
74
|
+
__metadata("design:paramtypes", [Object]),
|
|
75
|
+
__metadata("design:returntype", Promise)
|
|
76
|
+
], DynamicModelController.prototype, "create", null);
|
|
77
|
+
__decorate([
|
|
78
|
+
Get(":id"),
|
|
79
|
+
ApiOperation({ summary: `Retrieve a ${modelName} by id.` }),
|
|
80
|
+
ApiParam({
|
|
81
|
+
name: "id",
|
|
82
|
+
description: "Primary key",
|
|
83
|
+
example: "1234-5678",
|
|
84
|
+
}),
|
|
85
|
+
ApiOkResponse({ description: `${modelName} retrieved successfully.` }),
|
|
86
|
+
ApiNotFoundResponse({
|
|
87
|
+
description: "No record matches the provided identifier.",
|
|
88
|
+
}),
|
|
89
|
+
__param(0, Param("id")),
|
|
90
|
+
__metadata("design:type", Function),
|
|
91
|
+
__metadata("design:paramtypes", [String]),
|
|
92
|
+
__metadata("design:returntype", Promise)
|
|
93
|
+
], DynamicModelController.prototype, "read", null);
|
|
94
|
+
DynamicModelController = __decorate([
|
|
95
|
+
Controller(route),
|
|
96
|
+
ApiTags(modelName),
|
|
97
|
+
ApiExtraModels(modelClass),
|
|
98
|
+
__metadata("design:paramtypes", [RepoFactory])
|
|
99
|
+
], DynamicModelController);
|
|
100
|
+
return DynamicModelController;
|
|
101
|
+
}
|
|
102
|
+
static forRoot(flavour) {
|
|
103
|
+
const log = this.log.for(this.forRoot);
|
|
104
|
+
log.info(`Generating controllers for flavour...`);
|
|
105
|
+
const trackedModels = Adapter.models(flavour);
|
|
106
|
+
const controllers = trackedModels.map(this.toModelController.bind(this));
|
|
107
|
+
log.info(`Generated ${controllers.length} controllers`);
|
|
108
|
+
return {
|
|
109
|
+
module: DecafModelModule_1,
|
|
110
|
+
controllers,
|
|
111
|
+
providers: [RepoFactory],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
DecafModelModule = DecafModelModule_1 = __decorate([
|
|
116
|
+
Module({})
|
|
117
|
+
], DecafModelModule);
|
|
118
|
+
export { DecafModelModule };
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZGVsLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFFBQVEsRUFDUixPQUFPLEVBQ1AsOEJBQThCLEVBQzlCLGFBQWEsR0FDZCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBVSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxtQkFBZ0I7QUFDdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSx5QkFBc0I7QUFDNUMsT0FBTyxFQUFpQixNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdoRCxJQUFNLGdCQUFnQixHQUF0QixNQUFNLGdCQUFnQjs7SUFHakIsTUFBTSxLQUFLLEdBQUc7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFnQixDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFYyxBQUFQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDOUIsVUFBaUM7UUFFakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENB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Q0FBQztHQUNFLGdCQUFnQixDQStJNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb2R5LCBDb250cm9sbGVyLCBHZXQsIFBhcmFtLCBQb3N0IH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQge1xuICBBcGlCYWRSZXF1ZXN0UmVzcG9uc2UsXG4gIEFwaUJvZHksXG4gIEFwaUNyZWF0ZWRSZXNwb25zZSxcbiAgQXBpRXh0cmFNb2RlbHMsXG4gIEFwaU5vdEZvdW5kUmVzcG9uc2UsXG4gIEFwaU9rUmVzcG9uc2UsXG4gIEFwaU9wZXJhdGlvbixcbiAgQXBpUGFyYW0sXG4gIEFwaVRhZ3MsXG4gIEFwaVVucHJvY2Vzc2FibGVFbnRpdHlSZXNwb25zZSxcbiAgZ2V0U2NoZW1hUGF0aCxcbn0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlclwiO1xuaW1wb3J0IHsgQWRhcHRlciwgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBMb2dnZWRDbGFzcywgTG9nZ2VyLCBMb2dnaW5nLCB0b0tlYmFiQ2FzZSB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcmVwb0Zvck1vZGVsIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IFJlcG9GYWN0b3J5IH0gZnJvbSBcIi4vUmVwb0ZhY3RvcnlcIjtcbmltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuXG5ATW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIERlY2FmTW9kZWxNb2R1bGUge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLl9sb2dnZXIpIHRoaXMuX2xvZ2dlciA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGUpO1xuICAgIHJldHVybiB0aGlzLl9sb2dnZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0b01vZGVsQ29udHJvbGxlcjxUIGV4dGVuZHMgTW9kZWw8YW55Pj4oXG4gICAgbW9kZWxDbGFzczogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+XG4gICkge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnRvTW9kZWxDb250cm9sbGVyKTtcbiAgICBsb2cuZGVidWcoYENyZWF0aW5nIG1vZGVsIGNvbnRyb2xsZXIuLi4gJHttb2RlbENsYXNzLm5hbWV9YCk7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdG9LZWJhYkNhc2UoUmVwb3NpdG9yeS50YWJsZShtb2RlbENsYXNzKSk7XG4gICAgY29uc3Qgcm91dGUgPSBtb2RlbE5hbWU7XG5cbiAgICBAQ29udHJvbGxlcihyb3V0ZSlcbiAgICBAQXBpVGFncyhtb2RlbE5hbWUpXG4gICAgQEFwaUV4dHJhTW9kZWxzKG1vZGVsQ2xhc3MpXG4gICAgY2xhc3MgRHluYW1pY01vZGVsQ29udHJvbGxlciBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwbzogYW55OyAvLz0gdGhpcy5yZXBvRmFjdG9yeS5mb3IobW9kZWxDbGFzcy5uYW1lKTtcblxuICAgICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByZXBvRmFjdG9yeTogUmVwb0ZhY3RvcnkpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnJlcG8gPSB0aGlzLnJlcG9GYWN0b3J5LmZvcihtb2RlbENsYXNzLm5hbWUpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBnZXQgcmVwb3NpdG9yeSBmb3IgJHttb2RlbENsYXNzLm5hbWV9YCxcbiAgICAgICAgICAgIGUgYXMgRXJyb3JcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBQb3N0KClcbiAgICAgIEBBcGlPcGVyYXRpb24oeyBzdW1tYXJ5OiBgQ3JlYXRlIGEgbmV3ICR7bW9kZWxOYW1lfS5gIH0pXG4gICAgICBAQXBpQm9keSh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGF5bG9hZCBmb3IgJHttb2RlbE5hbWV9YCxcbiAgICAgICAgc2NoZW1hOiB7ICRyZWY6IGdldFNjaGVtYVBhdGgobW9kZWxDbGFzcykgfSxcbiAgICAgIH0pXG4gICAgICBAQXBpQ3JlYXRlZFJlc3BvbnNlKHsgZGVzY3JpcHRpb246IGAke21vZGVsTmFtZX0gY3JlYXRlZCBzdWNjZXNzZnVsbHkuYCB9KVxuICAgICAgQEFwaUJhZFJlcXVlc3RSZXNwb25zZSh7IGRlc2NyaXB0aW9uOiBcIlBheWxvYWQgdmFsaWRhdGlvbiBmYWlsZWQuXCIgfSlcbiAgICAgIEBBcGlVbnByb2Nlc3NhYmxlRW50aXR5UmVzcG9uc2Uoe1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJSZXBvc2l0b3J5IHJlamVjdGVkIHRoZSBwcm92aWRlZCBwYXlsb2FkLlwiLFxuICAgICAgfSlcbiAgICAgIGFzeW5jIGNyZWF0ZShAQm9keSgpIGRhdGE6IFQpOiBQcm9taXNlPE1vZGVsPGFueT4+IHtcbiAgICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY3JlYXRlKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGNyZWF0aW5nIG5ldyAke21vZGVsTmFtZX1gKTtcbiAgICAgICAgY29uc3QgciA9IHJlcG9Gb3JNb2RlbChcIkFjY291bnRcIik7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCByLmNyZWF0ZShkYXRhKTtcbiAgICAgICAgbG9nLmluZm8oYGNyZWF0ZWQgbmV3ICR7bW9kZWxOYW1lfSB3aXRoIGlkICR7Y3JlYXRlZFtyLnBrXX1gKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgICB9XG5cbiAgICAgIEBHZXQoXCI6aWRcIilcbiAgICAgIEBBcGlPcGVyYXRpb24oeyBzdW1tYXJ5OiBgUmV0cmlldmUgYSAke21vZGVsTmFtZX0gYnkgaWQuYCB9KVxuICAgICAgQEFwaVBhcmFtKHtcbiAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmltYXJ5IGtleVwiLFxuICAgICAgICBleGFtcGxlOiBcIjEyMzQtNTY3OFwiLFxuICAgICAgfSlcbiAgICAgIEBBcGlPa1Jlc3BvbnNlKHsgZGVzY3JpcHRpb246IGAke21vZGVsTmFtZX0gcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS5gIH0pXG4gICAgICBAQXBpTm90Rm91bmRSZXNwb25zZSh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk5vIHJlY29yZCBtYXRjaGVzIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyLlwiLFxuICAgICAgfSlcbiAgICAgIGFzeW5jIHJlYWQoQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5yZWFkKTtcbiAgICAgICAgbG9nLmRlYnVnKGByZWFkaW5nICR7bW9kZWxOYW1lfSB3aXRoICR7dGhpcy5yZXBvLnBrIGFzIHN0cmluZ30gJHtpZH1gKTtcbiAgICAgICAgY29uc3QgcmVhZCA9IGF3YWl0IHRoaXMucmVwby5yZWFkKGlkKTtcbiAgICAgICAgbG9nLmluZm8oYHJlYWQgJHttb2RlbE5hbWV9IHdpdGggaWQgJHtyZWFkW3RoaXMucmVwby5wa119YCk7XG4gICAgICAgIHJldHVybiByZWFkO1xuICAgICAgfVxuXG4gICAgICAvLyBAUG9zdCgpXG4gICAgICAvLyBAQXBpT3BlcmF0aW9uKHtzdW1tYXJ5OiBcIkNyZWF0ZSBhIG5ldyByZWNvcmQgZm9yIHRoZSBnaXZlbiBtb2RlbC5cIn0pXG4gICAgICAvLyBAQXBpQ3JlYXRlZFJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJSZWNvcmQgY3JlYXRlZCBzdWNjZXNzZnVsbHkuXCJ9KVxuICAgICAgLy8gQEFwaUJhZFJlcXVlc3RSZXNwb25zZSh7ZGVzY3JpcHRpb246IFwiUGF5bG9hZCB2YWxpZGF0aW9uIGZhaWxlZC5cIn0pXG4gICAgICAvLyBAQXBpVW5wcm9jZXNzYWJsZUVudGl0eVJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJSZXBvc2l0b3J5IHJlamVjdGVkIHRoZSBwcm92aWRlZCBwYXlsb2FkLlwifSlcbiAgICAgIC8vIGFzeW5jIGNyZWF0ZShAUGFyYW0oXCJtb2RlbFwiKSBtb2RlbDogc3RyaW5nLCBAQm9keSgpIGRhdGE6IGFueSkge1xuICAgICAgLy8gICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmNyZWF0ZSk7XG4gICAgICAvLyAgICAgbG9nLnZlcmJvc2UoYGNyZWF0aW5nIG5ldyAke21vZGVsfWApO1xuICAgICAgLy8gICAgIGxldCByZXBvOiBSZXBvPE1vZGVsPjtcbiAgICAgIC8vICAgICBsZXQgY3JlYXRlZDogTW9kZWw7XG4gICAgICAvLyAgICAgdHJ5IHtcbiAgICAgIC8vICAgICAgICAgcmVwbyA9IHJlcG9Gb3JNb2RlbChtb2RlbCk7XG4gICAgICAvLyAgICAgICAgIGNyZWF0ZWQgPSBhd2FpdCByZXBvLmNyZWF0ZShkYXRhKTtcbiAgICAgIC8vICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAvLyAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBuZXcgJHttb2RlbH1gLCBlIGFzIEVycm9yKTtcbiAgICAgIC8vICAgICAgICAgdGhyb3cgZTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgbG9nLmluZm8oYGNyZWF0ZWQgbmV3ICR7bW9kZWx9IHdpdGggaWQgJHtjcmVhdGVkW3JlcG8ucGtdfWApO1xuICAgICAgLy8gICAgIHJldHVybiBjcmVhdGVkO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBAR2V0KFwiOmlkXCIpXG4gICAgICAvLyBAQXBpT3BlcmF0aW9uKHtzdW1tYXJ5OiBcIlJldHJpZXZlIGEgc2luZ2xlIHJlY29yZCBieSBpZC5cIn0pXG4gICAgICAvLyBAQXBpUGFyYW0oe1xuICAgICAgLy8gICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIC8vICAgICAvLyBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIG1vZGVsIHJlcG9zaXRvcnkgdG8gdGFyZ2V0LicgKyBgXFxuJHttb2RlbExpc3QubWFwKChtOiBzdHJpbmcsIGk6IG51bWJlcikgPT4gYCR7bX0gLSAke01ldGFkYXRhLmRlc2NyaXB0aW9uKHRyYWNrZWRNb2RlbHNbaV0pfWApLmpvaW4oJ1xcbicpfWAsXG4gICAgICAvLyAgICAgZXhhbXBsZTogXCJhZ2VudFwiLFxuICAgICAgLy8gfSlcbiAgICAgIC8vIEBBcGlQYXJhbSh7XG4gICAgICAvLyAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgLy8gICAgIGRlc2NyaXB0aW9uOiBcIlByaW1hcnkga2V5IHZhbHVlIHVzZWQgdG8gbG9hZCB0aGUgcmVjb3JkLlwiLFxuICAgICAgLy8gICAgIGV4YW1wbGU6IFwiMTIzNC01Njc4XCIsXG4gICAgICAvLyB9KVxuICAgICAgLy8gQEFwaU9rUmVzcG9uc2Uoe2Rlc2NyaXB0aW9uOiBcIlJlY29yZCByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LlwifSlcbiAgICAgIC8vIEBBcGlOb3RGb3VuZFJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJObyByZWNvcmQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgaWRlbnRpZmllci5cIn0pXG4gICAgICAvLyBhc3luYyByZWFkKEBQYXJhbShcIm1vZGVsXCIpIG1vZGVsOiBzdHJpbmcsIEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcpIHtcbiAgICAgIC8vICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5yZWFkKTtcbiAgICAgIC8vICAgICBsZXQgcmVwbzogUmVwbzxNb2RlbD47XG4gICAgICAvLyAgICAgbGV0IHJlYWQ6IE1vZGVsO1xuICAgICAgLy8gICAgIHRyeSB7XG4gICAgICAvLyAgICAgICAgIHJlcG8gPSByZXBvRm9yTW9kZWwobW9kZWwpO1xuICAgICAgLy8gICAgICAgICBsb2cuZGVidWcoYHJlYWRpbmcgJHttb2RlbH0gd2l0aCAke3JlcG8ucGsgYXMgc3RyaW5nfSAke2lkfWApO1xuICAgICAgLy8gICAgICAgICByZWFkID0gYXdhaXQgcmVwby5yZWFkKGlkKTtcbiAgICAgIC8vICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAvLyAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIHJlYWQgJHttb2RlbH0gd2l0aCBpZCAke2lkfWAsIGUgYXMgRXJyb3IpO1xuICAgICAgLy8gICAgICAgICB0aHJvdyBlO1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBsb2cuaW5mbyhgcmVhZCAke21vZGVsfSB3aXRoIGlkICR7cmVhZFtyZXBvLnBrXX1gKTtcbiAgICAgIC8vICAgICByZXR1cm4gcmVhZDtcbiAgICAgIC8vIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRHluYW1pY01vZGVsQ29udHJvbGxlcjtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSb290KGZsYXZvdXI6IHN0cmluZyk6IER5bmFtaWNNb2R1bGUge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmZvclJvb3QpO1xuICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG5cbiAgICBjb25zdCB0cmFja2VkTW9kZWxzID0gQWRhcHRlci5tb2RlbHMoZmxhdm91cik7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0cmFja2VkTW9kZWxzLm1hcCh0aGlzLnRvTW9kZWxDb250cm9sbGVyLmJpbmQodGhpcykpO1xuXG4gICAgbG9nLmluZm8oYEdlbmVyYXRlZCAke2NvbnRyb2xsZXJzLmxlbmd0aH0gY29udHJvbGxlcnNgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGU6IERlY2FmTW9kZWxNb2R1bGUsXG4gICAgICBjb250cm9sbGVycyxcbiAgICAgIHByb3ZpZGVyczogW1JlcG9GYWN0b3J5XSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/lib/esm/module.d.ts
CHANGED
package/lib/esm/module.js
CHANGED
|
@@ -7,14 +7,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var DecafModule_1;
|
|
8
8
|
import { Module } from "@nestjs/common";
|
|
9
9
|
import { DecafCoreModule } from "./core-module.js";
|
|
10
|
+
import { DecafModelModule } from "./model-module.js";
|
|
10
11
|
/**
|
|
11
12
|
* @publicApi
|
|
12
13
|
*/
|
|
13
14
|
let DecafModule = DecafModule_1 = class DecafModule {
|
|
14
|
-
static
|
|
15
|
+
static async forRootAsync(options) {
|
|
16
|
+
const { autoControllers } = options;
|
|
17
|
+
const adapter = await DecafCoreModule.createAdapter(options);
|
|
18
|
+
const flavour = adapter.flavour;
|
|
19
|
+
const imports = [DecafCoreModule.forRoot(options)];
|
|
20
|
+
if (autoControllers) {
|
|
21
|
+
imports.push(DecafModelModule.forRoot(flavour));
|
|
22
|
+
}
|
|
15
23
|
return {
|
|
16
24
|
module: DecafModule_1,
|
|
17
|
-
imports:
|
|
25
|
+
imports: imports,
|
|
18
26
|
};
|
|
19
27
|
}
|
|
20
28
|
};
|
|
@@ -22,4 +30,4 @@ DecafModule = DecafModule_1 = __decorate([
|
|
|
22
30
|
Module({})
|
|
23
31
|
], DecafModule);
|
|
24
32
|
export { DecafModule };
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsT0FBTyxFQUFtQyxNQUFNLEVBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUFzQjtBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQXVCO0FBRWxEOztHQUVHO0FBRUksSUFBTSxXQUFXLG1CQUFqQixNQUFNLFdBQVc7SUFDdEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQ3ZCLE9BQTJCO1FBRTNCLE1BQU0sRUFBRSxlQUFlLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFFcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFaEMsTUFBTSxPQUFPLEdBT0csQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFbkQsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPO1lBQ0wsTUFBTSxFQUFFLGFBQVc7WUFDbkIsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBM0JZLFdBQVc7SUFEdkIsTUFBTSxDQUFDLEVBQUUsQ0FBQztHQUNFLFdBQVcsQ0EyQnZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY01vZHVsZSwgRm9yd2FyZFJlZmVyZW5jZSwgTW9kdWxlLCBUeXBlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBEZWNhZk1vZHVsZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgRGVjYWZDb3JlTW9kdWxlIH0gZnJvbSBcIi4vY29yZS1tb2R1bGVcIjtcbmltcG9ydCB7IERlY2FmTW9kZWxNb2R1bGUgfSBmcm9tIFwiLi9tb2RlbC1tb2R1bGVcIjtcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZNb2R1bGUge1xuICBzdGF0aWMgYXN5bmMgZm9yUm9vdEFzeW5jKFxuICAgIG9wdGlvbnM6IERlY2FmTW9kdWxlT3B0aW9uc1xuICApOiBQcm9taXNlPER5bmFtaWNNb2R1bGU+IHtcbiAgICBjb25zdCB7IGF1dG9Db250cm9sbGVycyB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBEZWNhZkNvcmVNb2R1bGUuY3JlYXRlQWRhcHRlcihvcHRpb25zKTtcbiAgICBjb25zdCBmbGF2b3VyID0gYWRhcHRlci5mbGF2b3VyO1xuXG4gICAgY29uc3QgaW1wb3J0czpcbiAgICAgIHwgKFxuICAgICAgICAgIHwgRHluYW1pY01vZHVsZVxuICAgICAgICAgIHwgVHlwZTxhbnk+XG4gICAgICAgICAgfCBQcm9taXNlPER5bmFtaWNNb2R1bGU+XG4gICAgICAgICAgfCBGb3J3YXJkUmVmZXJlbmNlPGFueT5cbiAgICAgICAgKVtdXG4gICAgICB8IHVuZGVmaW5lZCA9IFtEZWNhZkNvcmVNb2R1bGUuZm9yUm9vdChvcHRpb25zKV07XG5cbiAgICBpZiAoYXV0b0NvbnRyb2xsZXJzKSB7XG4gICAgICBpbXBvcnRzLnB1c2goRGVjYWZNb2RlbE1vZHVsZS5mb3JSb290KGZsYXZvdXIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZk1vZHVsZSxcbiAgICAgIGltcG9ydHM6IGltcG9ydHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
package/lib/esm/types.d.ts
CHANGED
package/lib/esm/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBEZWNhZk1vZHVsZU9wdGlvbnM8XG4gIENPTkYgPSBhbnksXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPENPTkYsIGFueSwgYW55LCBhbnksIGFueT4gPSBBZGFwdGVyPENPTkYsIGFueSwgYW55Pixcbj4gPSB7XG4gIGFkYXB0ZXI6IENvbnN0cnVjdG9yPEE+
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBEZWNhZk1vZHVsZU9wdGlvbnM8XG4gIENPTkYgPSBhbnksXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPENPTkYsIGFueSwgYW55LCBhbnksIGFueT4gPSBBZGFwdGVyPENPTkYsIGFueSwgYW55Pixcbj4gPSB7XG4gIGFkYXB0ZXI6IENvbnN0cnVjdG9yPEE+O1xuICBjb25mOiBDT05GO1xuICBhbGlhcz86IHN0cmluZztcbiAgYXV0b0NvbnRyb2xsZXJzOiBib29sZWFuO1xufTtcbiJdfQ==
|
package/lib/esm/utils.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { InternalError } from "@decaf-ts/db-decorators";
|
|
3
|
+
import { Repository } from "@decaf-ts/core";
|
|
4
|
+
export function repoForModel(model) {
|
|
5
|
+
const m = Model.get(model);
|
|
6
|
+
if (!m)
|
|
7
|
+
throw new InternalError(`Failed to find repository for ${model}`);
|
|
8
|
+
const repo = Repository.forModel(m);
|
|
9
|
+
return repo;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3pDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLENBQUM7UUFDTCxNQUFNLElBQUksYUFBYSxDQUFDLGlDQUFpQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtJbnRlcm5hbEVycm9yfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7UmVwb3NpdG9yeX0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvRm9yTW9kZWwobW9kZWw6IHN0cmluZykge1xuXHRjb25zdCBtID0gTW9kZWwuZ2V0KG1vZGVsKTtcblx0aWYgKCFtKVxuXHRcdHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gZmluZCByZXBvc2l0b3J5IGZvciAke21vZGVsfWApXG5cdGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKG0pO1xuXHRyZXR1cm4gcmVwbztcbn0iXX0=
|
package/lib/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* @module
|
|
3
|
+
* @module for-nest
|
|
4
4
|
* @description This module serves as the main entry point for the ts-workspace library. It aggregates and exports
|
|
5
5
|
* functionality from various submodules and utilities within the project.
|
|
6
6
|
*
|
|
@@ -37,16 +37,21 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
38
|
exports.PACKAGE_NAME = exports.VERSION = void 0;
|
|
39
39
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
40
|
+
require("./decoration.cjs");
|
|
41
|
+
__exportStar(require("./decorators/index.cjs"), exports);
|
|
40
42
|
__exportStar(require("./constants.cjs"), exports);
|
|
43
|
+
__exportStar(require("./decoration.cjs"), exports);
|
|
41
44
|
__exportStar(require("./module.cjs"), exports);
|
|
45
|
+
__exportStar(require("./RepoFactory.cjs"), exports);
|
|
42
46
|
__exportStar(require("./types.cjs"), exports);
|
|
47
|
+
__exportStar(require("./utils.cjs"), exports);
|
|
43
48
|
/**
|
|
44
49
|
* Represents the current version of the ts-workspace module.
|
|
45
50
|
* The actual version number is replaced during the build process.
|
|
46
51
|
* @constant
|
|
47
52
|
* @type {string}
|
|
48
53
|
*/
|
|
49
|
-
exports.VERSION = "0.0.
|
|
54
|
+
exports.VERSION = "0.0.2";
|
|
50
55
|
exports.PACKAGE_NAME = "##PACKAGE_NAME##";
|
|
51
56
|
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxxREFBZ0Q7QUFDaEQsNEJBQXNCO0FBRXRCLHlEQUE2QjtBQUM3QixrREFBNEI7QUFDNUIsbURBQTZCO0FBQzdCLCtDQUF5QjtBQUN6QixvREFBOEI7QUFDOUIsOENBQXdCO0FBQ3hCLDhDQUF3QjtBQUV4Qjs7Ozs7R0FLRztBQUNVLFFBQUEsT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUN4QixRQUFBLFlBQVksR0FBRyxrQkFBa0IsQ0FBQztBQUUvQyxxQkFBUSxDQUFDLGVBQWUsQ0FBQyxvQkFBWSxFQUFFLGVBQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGZvci1uZXN0XG4gKiBAZGVzY3JpcHRpb24gVGhpcyBtb2R1bGUgc2VydmVzIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgdHMtd29ya3NwYWNlIGxpYnJhcnkuIEl0IGFnZ3JlZ2F0ZXMgYW5kIGV4cG9ydHNcbiAqIGZ1bmN0aW9uYWxpdHkgZnJvbSB2YXJpb3VzIHN1Ym1vZHVsZXMgYW5kIHV0aWxpdGllcyB3aXRoaW4gdGhlIHByb2plY3QuXG4gKlxuICogVGhlIG1vZHVsZSBpbmNsdWRlczpcbiAqIDEuIFV0aWxpdHkgZnVuY3Rpb25zIGFuZCB0eXBlcyBmcm9tIHRoZSBcIi4vdXRpbHNcIiBkaXJlY3Rvcnk6XG4gKiAgICAtIFRoZXNlIGxpa2VseSBjb250YWluIGhlbHBlciBmdW5jdGlvbnMsIGNvbW1vbiB0eXBlcywgYW5kIHNoYXJlZCBmdW5jdGlvbmFsaXR5IHVzZWQgdGhyb3VnaG91dCB0aGUgcHJvamVjdC5cbiAqICAgIC0gTWF5IGluY2x1ZGUgb3BlcmF0aW9ucyBmb3IgZGF0YSBtYW5pcHVsYXRpb24sIHR5cGUgY2hlY2tpbmcsIG9yIG90aGVyIGdlbmVyYWwtcHVycG9zZSB1dGlsaXRpZXMuXG4gKlxuICogMi4gQSBuYW1lc3BhY2UgYW5kIHJlbGF0ZWQgdHlwZXMgZnJvbSB0aGUgXCIuL25hbWVzcGFjZVwiIGRpcmVjdG9yeTpcbiAqICAgIC0gVGhpcyBjb3VsZCBjb250YWluIGRvbWFpbi1zcGVjaWZpYyBjb2RlIG9yIGEgY29sbGVjdGlvbiBvZiByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuXG4gKiAgICAtIE1pZ2h0IGluY2x1ZGUgaW50ZXJmYWNlcywgdHlwZXMsIG9yIGNsYXNzZXMgdGhhdCByZXByZXNlbnQgY29yZSBjb25jZXB0cyBpbiB0aGUgbGlicmFyeS5cbiAqXG4gKiAzLiBBIFZFUlNJT04gY29uc3RhbnQ6XG4gKiAgICAtIFJlcHJlc2VudHMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlLlxuICogICAgLSBVc2VmdWwgZm9yIHZlcnNpb24gY2hlY2tpbmcgYW5kIGNvbXBhdGliaWxpdHkgcHVycG9zZXMuXG4gKlxuICogVGhpcyBzdHJ1Y3R1cmUgcHJvdmlkZXMgYSBjbGVhbiBhbmQgb3JnYW5pemVkIGV4cG9ydCBvZiB0aGUgbW9kdWxlJ3MgZnVuY3Rpb25hbGl0eSwgYWxsb3dpbmcgY29uc3VtZXJzXG4gKiB0byBlYXNpbHkgaW1wb3J0IGFuZCB1c2Ugc3BlY2lmaWMgcGFydHMgb2YgdGhlIGxpYnJhcnkgYXMgbmVlZGVkLlxuICovXG5cbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgXCIuL2RlY29yYXRpb25cIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1JlcG9GYWN0b3J5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIHRzLXdvcmtzcGFjZSBtb2R1bGUuXG4gKiBUaGUgYWN0dWFsIHZlcnNpb24gbnVtYmVyIGlzIHJlcGxhY2VkIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy5cbiAqIEBjb25zdGFudFxuICogQHR5cGUge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9OQU1FID0gXCIjI1BBQ0tBR0VfTkFNRSMjXCI7XG5cbk1ldGFkYXRhLnJlZ2lzdGVyTGlicmFyeShQQUNLQUdFX05BTUUsIFZFUlNJT04pO1xuIl19
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module for-nest
|
|
3
3
|
* @description This module serves as the main entry point for the ts-workspace library. It aggregates and exports
|
|
4
4
|
* functionality from various submodules and utilities within the project.
|
|
5
5
|
*
|
|
@@ -19,14 +19,19 @@
|
|
|
19
19
|
* This structure provides a clean and organized export of the module's functionality, allowing consumers
|
|
20
20
|
* to easily import and use specific parts of the library as needed.
|
|
21
21
|
*/
|
|
22
|
+
import "./decoration";
|
|
23
|
+
export * from "./decorators";
|
|
22
24
|
export * from "./constants";
|
|
25
|
+
export * from "./decoration";
|
|
23
26
|
export * from "./module";
|
|
27
|
+
export * from "./RepoFactory";
|
|
24
28
|
export * from "./types";
|
|
29
|
+
export * from "./utils";
|
|
25
30
|
/**
|
|
26
31
|
* Represents the current version of the ts-workspace module.
|
|
27
32
|
* The actual version number is replaced during the build process.
|
|
28
33
|
* @constant
|
|
29
34
|
* @type {string}
|
|
30
35
|
*/
|
|
31
|
-
export declare const VERSION = "0.0.
|
|
36
|
+
export declare const VERSION = "0.0.2";
|
|
32
37
|
export declare const PACKAGE_NAME = "##PACKAGE_NAME##";
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var DecafModelModule_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.DecafModelModule = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
19
|
+
const core_1 = require("@decaf-ts/core");
|
|
20
|
+
const logging_1 = require("@decaf-ts/logging");
|
|
21
|
+
const utils_1 = require("./utils.cjs");
|
|
22
|
+
const RepoFactory_1 = require("./RepoFactory.cjs");
|
|
23
|
+
const common_2 = require("@nestjs/common");
|
|
24
|
+
let DecafModelModule = class DecafModelModule {
|
|
25
|
+
static { DecafModelModule_1 = this; }
|
|
26
|
+
static get log() {
|
|
27
|
+
if (!this._logger)
|
|
28
|
+
this._logger = logging_1.Logging.for(DecafModelModule_1);
|
|
29
|
+
return this._logger;
|
|
30
|
+
}
|
|
31
|
+
static toModelController(modelClass) {
|
|
32
|
+
const log = this.log.for(this.toModelController);
|
|
33
|
+
log.debug(`Creating model controller... ${modelClass.name}`);
|
|
34
|
+
const modelName = (0, logging_1.toKebabCase)(core_1.Repository.table(modelClass));
|
|
35
|
+
const route = modelName;
|
|
36
|
+
let DynamicModelController = class DynamicModelController extends logging_1.LoggedClass {
|
|
37
|
+
constructor(repoFactory) {
|
|
38
|
+
super();
|
|
39
|
+
this.repoFactory = repoFactory;
|
|
40
|
+
try {
|
|
41
|
+
this.repo = this.repoFactory.for(modelClass.name);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
log.error(`Failed to get repository for ${modelClass.name}`, e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async create(data) {
|
|
48
|
+
const log = this.log.for(this.create);
|
|
49
|
+
log.verbose(`creating new ${modelName}`);
|
|
50
|
+
const r = (0, utils_1.repoForModel)("Account");
|
|
51
|
+
const created = await r.create(data);
|
|
52
|
+
log.info(`created new ${modelName} with id ${created[r.pk]}`);
|
|
53
|
+
return created;
|
|
54
|
+
}
|
|
55
|
+
async read(id) {
|
|
56
|
+
const log = this.log.for(this.read);
|
|
57
|
+
log.debug(`reading ${modelName} with ${this.repo.pk} ${id}`);
|
|
58
|
+
const read = await this.repo.read(id);
|
|
59
|
+
log.info(`read ${modelName} with id ${read[this.repo.pk]}`);
|
|
60
|
+
return read;
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, common_1.Post)(),
|
|
65
|
+
(0, swagger_1.ApiOperation)({ summary: `Create a new ${modelName}.` }),
|
|
66
|
+
(0, swagger_1.ApiBody)({
|
|
67
|
+
description: `Payload for ${modelName}`,
|
|
68
|
+
schema: { $ref: (0, swagger_1.getSchemaPath)(modelClass) },
|
|
69
|
+
}),
|
|
70
|
+
(0, swagger_1.ApiCreatedResponse)({ description: `${modelName} created successfully.` }),
|
|
71
|
+
(0, swagger_1.ApiBadRequestResponse)({ description: "Payload validation failed." }),
|
|
72
|
+
(0, swagger_1.ApiUnprocessableEntityResponse)({
|
|
73
|
+
description: "Repository rejected the provided payload.",
|
|
74
|
+
}),
|
|
75
|
+
__param(0, (0, common_1.Body)()),
|
|
76
|
+
__metadata("design:type", Function),
|
|
77
|
+
__metadata("design:paramtypes", [Object]),
|
|
78
|
+
__metadata("design:returntype", Promise)
|
|
79
|
+
], DynamicModelController.prototype, "create", null);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, common_1.Get)(":id"),
|
|
82
|
+
(0, swagger_1.ApiOperation)({ summary: `Retrieve a ${modelName} by id.` }),
|
|
83
|
+
(0, swagger_1.ApiParam)({
|
|
84
|
+
name: "id",
|
|
85
|
+
description: "Primary key",
|
|
86
|
+
example: "1234-5678",
|
|
87
|
+
}),
|
|
88
|
+
(0, swagger_1.ApiOkResponse)({ description: `${modelName} retrieved successfully.` }),
|
|
89
|
+
(0, swagger_1.ApiNotFoundResponse)({
|
|
90
|
+
description: "No record matches the provided identifier.",
|
|
91
|
+
}),
|
|
92
|
+
__param(0, (0, common_1.Param)("id")),
|
|
93
|
+
__metadata("design:type", Function),
|
|
94
|
+
__metadata("design:paramtypes", [String]),
|
|
95
|
+
__metadata("design:returntype", Promise)
|
|
96
|
+
], DynamicModelController.prototype, "read", null);
|
|
97
|
+
DynamicModelController = __decorate([
|
|
98
|
+
(0, common_1.Controller)(route),
|
|
99
|
+
(0, swagger_1.ApiTags)(modelName),
|
|
100
|
+
(0, swagger_1.ApiExtraModels)(modelClass),
|
|
101
|
+
__metadata("design:paramtypes", [RepoFactory_1.RepoFactory])
|
|
102
|
+
], DynamicModelController);
|
|
103
|
+
return DynamicModelController;
|
|
104
|
+
}
|
|
105
|
+
static forRoot(flavour) {
|
|
106
|
+
const log = this.log.for(this.forRoot);
|
|
107
|
+
log.info(`Generating controllers for flavour...`);
|
|
108
|
+
const trackedModels = core_1.Adapter.models(flavour);
|
|
109
|
+
const controllers = trackedModels.map(this.toModelController.bind(this));
|
|
110
|
+
log.info(`Generated ${controllers.length} controllers`);
|
|
111
|
+
return {
|
|
112
|
+
module: DecafModelModule_1,
|
|
113
|
+
controllers,
|
|
114
|
+
providers: [RepoFactory_1.RepoFactory],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
exports.DecafModelModule = DecafModelModule;
|
|
119
|
+
exports.DecafModelModule = DecafModelModule = DecafModelModule_1 = __decorate([
|
|
120
|
+
(0, common_2.Module)({})
|
|
121
|
+
], DecafModelModule);
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZGVsLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQW9FO0FBQ3BFLDZDQVl5QjtBQUN6Qix5Q0FBcUQ7QUFFckQsK0NBQThFO0FBQzlFLHVDQUF1QztBQUN2QyxtREFBNEM7QUFDNUMsMkNBQXVEO0FBR2hELElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCOztJQUdqQixNQUFNLEtBQUssR0FBRztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLGlCQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFnQixDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFYyxBQUFQLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDOUIsVUFBaUM7UUFFakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakQsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQUcsSUFBQSxxQkFBVyxFQUFDLGlCQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDO1FBRXhCLElBR00sc0JBQXNCLEdBSDVCLE1BR00sc0JBQXVCLFNBQVEscUJBQVc7WUFHOUMsWUFBNkIsV0FBd0I7Z0JBQ25ELEtBQUssRUFBRSxDQUFDO2dCQURtQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtnQkFFbkQsSUFBSSxDQUFDO29CQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFD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QUFLLENBQUM7WUFDakIsSUFBQSxpQkFBTyxFQUFDLFNBQVMsQ0FBQztZQUNsQixJQUFBLHdCQUFjLEVBQUMsVUFBVSxDQUFDOzZDQUlpQix5QkFBVztXQUhqRCxzQkFBc0IsQ0F3RzNCO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFlO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsSUFBSSxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFFbEQsTUFBTSxhQUFhLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUV6RSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsV0FBVyxDQUFDLE1BQU0sY0FBYyxDQUFDLENBQUM7UUFFeEQsT0FBTztZQUNMLE1BQU0sRUFBRSxrQkFBZ0I7WUFDeEIsV0FBVztZQUNYLFNBQVMsRUFBRSxDQUFDLHlCQUFXLENBQUM7U0FDekIsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO0FBL0lZLDRDQUFnQjsyQkFBaEIsZ0JBQWdCO0lBRDVCLElBQUEsZUFBTSxFQUFDLEVBQUUsQ0FBQztHQUNFLGdCQUFnQixDQStJNUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb2R5LCBDb250cm9sbGVyLCBHZXQsIFBhcmFtLCBQb3N0IH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQge1xuICBBcGlCYWRSZXF1ZXN0UmVzcG9uc2UsXG4gIEFwaUJvZHksXG4gIEFwaUNyZWF0ZWRSZXNwb25zZSxcbiAgQXBpRXh0cmFNb2RlbHMsXG4gIEFwaU5vdEZvdW5kUmVzcG9uc2UsXG4gIEFwaU9rUmVzcG9uc2UsXG4gIEFwaU9wZXJhdGlvbixcbiAgQXBpUGFyYW0sXG4gIEFwaVRhZ3MsXG4gIEFwaVVucHJvY2Vzc2FibGVFbnRpdHlSZXNwb25zZSxcbiAgZ2V0U2NoZW1hUGF0aCxcbn0gZnJvbSBcIkBuZXN0anMvc3dhZ2dlclwiO1xuaW1wb3J0IHsgQWRhcHRlciwgUmVwb3NpdG9yeSB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgTW9kZWwsIE1vZGVsQ29uc3RydWN0b3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBMb2dnZWRDbGFzcywgTG9nZ2VyLCBMb2dnaW5nLCB0b0tlYmFiQ2FzZSB9IGZyb20gXCJAZGVjYWYtdHMvbG9nZ2luZ1wiO1xuaW1wb3J0IHsgcmVwb0Zvck1vZGVsIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IFJlcG9GYWN0b3J5IH0gZnJvbSBcIi4vUmVwb0ZhY3RvcnlcIjtcbmltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuXG5ATW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIERlY2FmTW9kZWxNb2R1bGUge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBMb2dnZXI7XG5cbiAgcHJvdGVjdGVkIHN0YXRpYyBnZXQgbG9nKCk6IExvZ2dlciB7XG4gICAgaWYgKCF0aGlzLl9sb2dnZXIpIHRoaXMuX2xvZ2dlciA9IExvZ2dpbmcuZm9yKERlY2FmTW9kZWxNb2R1bGUpO1xuICAgIHJldHVybiB0aGlzLl9sb2dnZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0b01vZGVsQ29udHJvbGxlcjxUIGV4dGVuZHMgTW9kZWw8YW55Pj4oXG4gICAgbW9kZWxDbGFzczogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+XG4gICkge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnRvTW9kZWxDb250cm9sbGVyKTtcbiAgICBsb2cuZGVidWcoYENyZWF0aW5nIG1vZGVsIGNvbnRyb2xsZXIuLi4gJHttb2RlbENsYXNzLm5hbWV9YCk7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdG9LZWJhYkNhc2UoUmVwb3NpdG9yeS50YWJsZShtb2RlbENsYXNzKSk7XG4gICAgY29uc3Qgcm91dGUgPSBtb2RlbE5hbWU7XG5cbiAgICBAQ29udHJvbGxlcihyb3V0ZSlcbiAgICBAQXBpVGFncyhtb2RlbE5hbWUpXG4gICAgQEFwaUV4dHJhTW9kZWxzKG1vZGVsQ2xhc3MpXG4gICAgY2xhc3MgRHluYW1pY01vZGVsQ29udHJvbGxlciBleHRlbmRzIExvZ2dlZENsYXNzIHtcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwbzogYW55OyAvLz0gdGhpcy5yZXBvRmFjdG9yeS5mb3IobW9kZWxDbGFzcy5uYW1lKTtcblxuICAgICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByZXBvRmFjdG9yeTogUmVwb0ZhY3RvcnkpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnJlcG8gPSB0aGlzLnJlcG9GYWN0b3J5LmZvcihtb2RlbENsYXNzLm5hbWUpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmVycm9yKFxuICAgICAgICAgICAgYEZhaWxlZCB0byBnZXQgcmVwb3NpdG9yeSBmb3IgJHttb2RlbENsYXNzLm5hbWV9YCxcbiAgICAgICAgICAgIGUgYXMgRXJyb3JcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBQb3N0KClcbiAgICAgIEBBcGlPcGVyYXRpb24oeyBzdW1tYXJ5OiBgQ3JlYXRlIGEgbmV3ICR7bW9kZWxOYW1lfS5gIH0pXG4gICAgICBAQXBpQm9keSh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBgUGF5bG9hZCBmb3IgJHttb2RlbE5hbWV9YCxcbiAgICAgICAgc2NoZW1hOiB7ICRyZWY6IGdldFNjaGVtYVBhdGgobW9kZWxDbGFzcykgfSxcbiAgICAgIH0pXG4gICAgICBAQXBpQ3JlYXRlZFJlc3BvbnNlKHsgZGVzY3JpcHRpb246IGAke21vZGVsTmFtZX0gY3JlYXRlZCBzdWNjZXNzZnVsbHkuYCB9KVxuICAgICAgQEFwaUJhZFJlcXVlc3RSZXNwb25zZSh7IGRlc2NyaXB0aW9uOiBcIlBheWxvYWQgdmFsaWRhdGlvbiBmYWlsZWQuXCIgfSlcbiAgICAgIEBBcGlVbnByb2Nlc3NhYmxlRW50aXR5UmVzcG9uc2Uoe1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJSZXBvc2l0b3J5IHJlamVjdGVkIHRoZSBwcm92aWRlZCBwYXlsb2FkLlwiLFxuICAgICAgfSlcbiAgICAgIGFzeW5jIGNyZWF0ZShAQm9keSgpIGRhdGE6IFQpOiBQcm9taXNlPE1vZGVsPGFueT4+IHtcbiAgICAgICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY3JlYXRlKTtcbiAgICAgICAgbG9nLnZlcmJvc2UoYGNyZWF0aW5nIG5ldyAke21vZGVsTmFtZX1gKTtcbiAgICAgICAgY29uc3QgciA9IHJlcG9Gb3JNb2RlbChcIkFjY291bnRcIik7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWQgPSBhd2FpdCByLmNyZWF0ZShkYXRhKTtcbiAgICAgICAgbG9nLmluZm8oYGNyZWF0ZWQgbmV3ICR7bW9kZWxOYW1lfSB3aXRoIGlkICR7Y3JlYXRlZFtyLnBrXX1gKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgICB9XG5cbiAgICAgIEBHZXQoXCI6aWRcIilcbiAgICAgIEBBcGlPcGVyYXRpb24oeyBzdW1tYXJ5OiBgUmV0cmlldmUgYSAke21vZGVsTmFtZX0gYnkgaWQuYCB9KVxuICAgICAgQEFwaVBhcmFtKHtcbiAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmltYXJ5IGtleVwiLFxuICAgICAgICBleGFtcGxlOiBcIjEyMzQtNTY3OFwiLFxuICAgICAgfSlcbiAgICAgIEBBcGlPa1Jlc3BvbnNlKHsgZGVzY3JpcHRpb246IGAke21vZGVsTmFtZX0gcmV0cmlldmVkIHN1Y2Nlc3NmdWxseS5gIH0pXG4gICAgICBAQXBpTm90Rm91bmRSZXNwb25zZSh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk5vIHJlY29yZCBtYXRjaGVzIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyLlwiLFxuICAgICAgfSlcbiAgICAgIGFzeW5jIHJlYWQoQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5yZWFkKTtcbiAgICAgICAgbG9nLmRlYnVnKGByZWFkaW5nICR7bW9kZWxOYW1lfSB3aXRoICR7dGhpcy5yZXBvLnBrIGFzIHN0cmluZ30gJHtpZH1gKTtcbiAgICAgICAgY29uc3QgcmVhZCA9IGF3YWl0IHRoaXMucmVwby5yZWFkKGlkKTtcbiAgICAgICAgbG9nLmluZm8oYHJlYWQgJHttb2RlbE5hbWV9IHdpdGggaWQgJHtyZWFkW3RoaXMucmVwby5wa119YCk7XG4gICAgICAgIHJldHVybiByZWFkO1xuICAgICAgfVxuXG4gICAgICAvLyBAUG9zdCgpXG4gICAgICAvLyBAQXBpT3BlcmF0aW9uKHtzdW1tYXJ5OiBcIkNyZWF0ZSBhIG5ldyByZWNvcmQgZm9yIHRoZSBnaXZlbiBtb2RlbC5cIn0pXG4gICAgICAvLyBAQXBpQ3JlYXRlZFJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJSZWNvcmQgY3JlYXRlZCBzdWNjZXNzZnVsbHkuXCJ9KVxuICAgICAgLy8gQEFwaUJhZFJlcXVlc3RSZXNwb25zZSh7ZGVzY3JpcHRpb246IFwiUGF5bG9hZCB2YWxpZGF0aW9uIGZhaWxlZC5cIn0pXG4gICAgICAvLyBAQXBpVW5wcm9jZXNzYWJsZUVudGl0eVJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJSZXBvc2l0b3J5IHJlamVjdGVkIHRoZSBwcm92aWRlZCBwYXlsb2FkLlwifSlcbiAgICAgIC8vIGFzeW5jIGNyZWF0ZShAUGFyYW0oXCJtb2RlbFwiKSBtb2RlbDogc3RyaW5nLCBAQm9keSgpIGRhdGE6IGFueSkge1xuICAgICAgLy8gICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmNyZWF0ZSk7XG4gICAgICAvLyAgICAgbG9nLnZlcmJvc2UoYGNyZWF0aW5nIG5ldyAke21vZGVsfWApO1xuICAgICAgLy8gICAgIGxldCByZXBvOiBSZXBvPE1vZGVsPjtcbiAgICAgIC8vICAgICBsZXQgY3JlYXRlZDogTW9kZWw7XG4gICAgICAvLyAgICAgdHJ5IHtcbiAgICAgIC8vICAgICAgICAgcmVwbyA9IHJlcG9Gb3JNb2RlbChtb2RlbCk7XG4gICAgICAvLyAgICAgICAgIGNyZWF0ZWQgPSBhd2FpdCByZXBvLmNyZWF0ZShkYXRhKTtcbiAgICAgIC8vICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAvLyAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBuZXcgJHttb2RlbH1gLCBlIGFzIEVycm9yKTtcbiAgICAgIC8vICAgICAgICAgdGhyb3cgZTtcbiAgICAgIC8vICAgICB9XG4gICAgICAvLyAgICAgbG9nLmluZm8oYGNyZWF0ZWQgbmV3ICR7bW9kZWx9IHdpdGggaWQgJHtjcmVhdGVkW3JlcG8ucGtdfWApO1xuICAgICAgLy8gICAgIHJldHVybiBjcmVhdGVkO1xuICAgICAgLy8gfVxuXG4gICAgICAvLyBAR2V0KFwiOmlkXCIpXG4gICAgICAvLyBAQXBpT3BlcmF0aW9uKHtzdW1tYXJ5OiBcIlJldHJpZXZlIGEgc2luZ2xlIHJlY29yZCBieSBpZC5cIn0pXG4gICAgICAvLyBAQXBpUGFyYW0oe1xuICAgICAgLy8gICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgIC8vICAgICAvLyBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIG1vZGVsIHJlcG9zaXRvcnkgdG8gdGFyZ2V0LicgKyBgXFxuJHttb2RlbExpc3QubWFwKChtOiBzdHJpbmcsIGk6IG51bWJlcikgPT4gYCR7bX0gLSAke01ldGFkYXRhLmRlc2NyaXB0aW9uKHRyYWNrZWRNb2RlbHNbaV0pfWApLmpvaW4oJ1xcbicpfWAsXG4gICAgICAvLyAgICAgZXhhbXBsZTogXCJhZ2VudFwiLFxuICAgICAgLy8gfSlcbiAgICAgIC8vIEBBcGlQYXJhbSh7XG4gICAgICAvLyAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgLy8gICAgIGRlc2NyaXB0aW9uOiBcIlByaW1hcnkga2V5IHZhbHVlIHVzZWQgdG8gbG9hZCB0aGUgcmVjb3JkLlwiLFxuICAgICAgLy8gICAgIGV4YW1wbGU6IFwiMTIzNC01Njc4XCIsXG4gICAgICAvLyB9KVxuICAgICAgLy8gQEFwaU9rUmVzcG9uc2Uoe2Rlc2NyaXB0aW9uOiBcIlJlY29yZCByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LlwifSlcbiAgICAgIC8vIEBBcGlOb3RGb3VuZFJlc3BvbnNlKHtkZXNjcmlwdGlvbjogXCJObyByZWNvcmQgbWF0Y2hlcyB0aGUgcHJvdmlkZWQgaWRlbnRpZmllci5cIn0pXG4gICAgICAvLyBhc3luYyByZWFkKEBQYXJhbShcIm1vZGVsXCIpIG1vZGVsOiBzdHJpbmcsIEBQYXJhbShcImlkXCIpIGlkOiBzdHJpbmcpIHtcbiAgICAgIC8vICAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5yZWFkKTtcbiAgICAgIC8vICAgICBsZXQgcmVwbzogUmVwbzxNb2RlbD47XG4gICAgICAvLyAgICAgbGV0IHJlYWQ6IE1vZGVsO1xuICAgICAgLy8gICAgIHRyeSB7XG4gICAgICAvLyAgICAgICAgIHJlcG8gPSByZXBvRm9yTW9kZWwobW9kZWwpO1xuICAgICAgLy8gICAgICAgICBsb2cuZGVidWcoYHJlYWRpbmcgJHttb2RlbH0gd2l0aCAke3JlcG8ucGsgYXMgc3RyaW5nfSAke2lkfWApO1xuICAgICAgLy8gICAgICAgICByZWFkID0gYXdhaXQgcmVwby5yZWFkKGlkKTtcbiAgICAgIC8vICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAvLyAgICAgICAgIGxvZy5lcnJvcihgRmFpbGVkIHRvIHJlYWQgJHttb2RlbH0gd2l0aCBpZCAke2lkfWAsIGUgYXMgRXJyb3IpO1xuICAgICAgLy8gICAgICAgICB0aHJvdyBlO1xuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBsb2cuaW5mbyhgcmVhZCAke21vZGVsfSB3aXRoIGlkICR7cmVhZFtyZXBvLnBrXX1gKTtcbiAgICAgIC8vICAgICByZXR1cm4gcmVhZDtcbiAgICAgIC8vIH1cbiAgICB9XG5cbiAgICByZXR1cm4gRHluYW1pY01vZGVsQ29udHJvbGxlcjtcbiAgfVxuXG4gIHN0YXRpYyBmb3JSb290KGZsYXZvdXI6IHN0cmluZyk6IER5bmFtaWNNb2R1bGUge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLmZvclJvb3QpO1xuICAgIGxvZy5pbmZvKGBHZW5lcmF0aW5nIGNvbnRyb2xsZXJzIGZvciBmbGF2b3VyLi4uYCk7XG5cbiAgICBjb25zdCB0cmFja2VkTW9kZWxzID0gQWRhcHRlci5tb2RlbHMoZmxhdm91cik7XG4gICAgY29uc3QgY29udHJvbGxlcnMgPSB0cmFja2VkTW9kZWxzLm1hcCh0aGlzLnRvTW9kZWxDb250cm9sbGVyLmJpbmQodGhpcykpO1xuXG4gICAgbG9nLmluZm8oYEdlbmVyYXRlZCAke2NvbnRyb2xsZXJzLmxlbmd0aH0gY29udHJvbGxlcnNgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGU6IERlY2FmTW9kZWxNb2R1bGUsXG4gICAgICBjb250cm9sbGVycyxcbiAgICAgIHByb3ZpZGVyczogW1JlcG9GYWN0b3J5XSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Logger } from "@decaf-ts/logging";
|
|
2
|
+
import { DynamicModule } from "@nestjs/common";
|
|
3
|
+
export declare class DecafModelModule {
|
|
4
|
+
private static _logger;
|
|
5
|
+
protected static get log(): Logger;
|
|
6
|
+
private static toModelController;
|
|
7
|
+
static forRoot(flavour: string): DynamicModule;
|
|
8
|
+
}
|
package/lib/module.cjs
CHANGED
|
@@ -10,14 +10,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.DecafModule = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const core_module_1 = require("./core-module.cjs");
|
|
13
|
+
const model_module_1 = require("./model-module.cjs");
|
|
13
14
|
/**
|
|
14
15
|
* @publicApi
|
|
15
16
|
*/
|
|
16
17
|
let DecafModule = DecafModule_1 = class DecafModule {
|
|
17
|
-
static
|
|
18
|
+
static async forRootAsync(options) {
|
|
19
|
+
const { autoControllers } = options;
|
|
20
|
+
const adapter = await core_module_1.DecafCoreModule.createAdapter(options);
|
|
21
|
+
const flavour = adapter.flavour;
|
|
22
|
+
const imports = [core_module_1.DecafCoreModule.forRoot(options)];
|
|
23
|
+
if (autoControllers) {
|
|
24
|
+
imports.push(model_module_1.DecafModelModule.forRoot(flavour));
|
|
25
|
+
}
|
|
18
26
|
return {
|
|
19
27
|
module: DecafModule_1,
|
|
20
|
-
imports:
|
|
28
|
+
imports: imports,
|
|
21
29
|
};
|
|
22
30
|
}
|
|
23
31
|
};
|
|
@@ -25,4 +33,4 @@ exports.DecafModule = DecafModule;
|
|
|
25
33
|
exports.DecafModule = DecafModule = DecafModule_1 = __decorate([
|
|
26
34
|
(0, common_1.Module)({})
|
|
27
35
|
], DecafModule);
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsMkNBQStFO0FBRS9FLG1EQUFnRDtBQUNoRCxxREFBa0Q7QUFFbEQ7O0dBRUc7QUFFSSxJQUFNLFdBQVcsbUJBQWpCLE1BQU0sV0FBVztJQUN0QixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FDdkIsT0FBMkI7UUFFM0IsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVwQyxNQUFNLE9BQU8sR0FBRyxNQUFNLDZCQUFlLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFaEMsTUFBTSxPQUFPLEdBT0csQ0FBQyw2QkFBZSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRW5ELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBRUQsT0FBTztZQUNMLE1BQU0sRUFBRSxhQUFXO1lBQ25CLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTtBQTNCWSxrQ0FBVztzQkFBWCxXQUFXO0lBRHZCLElBQUEsZUFBTSxFQUFDLEVBQUUsQ0FBQztHQUNFLFdBQVcsQ0EyQnZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1pY01vZHVsZSwgRm9yd2FyZFJlZmVyZW5jZSwgTW9kdWxlLCBUeXBlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBEZWNhZk1vZHVsZU9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgRGVjYWZDb3JlTW9kdWxlIH0gZnJvbSBcIi4vY29yZS1tb2R1bGVcIjtcbmltcG9ydCB7IERlY2FmTW9kZWxNb2R1bGUgfSBmcm9tIFwiLi9tb2RlbC1tb2R1bGVcIjtcblxuLyoqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBNb2R1bGUoe30pXG5leHBvcnQgY2xhc3MgRGVjYWZNb2R1bGUge1xuICBzdGF0aWMgYXN5bmMgZm9yUm9vdEFzeW5jKFxuICAgIG9wdGlvbnM6IERlY2FmTW9kdWxlT3B0aW9uc1xuICApOiBQcm9taXNlPER5bmFtaWNNb2R1bGU+IHtcbiAgICBjb25zdCB7IGF1dG9Db250cm9sbGVycyB9ID0gb3B0aW9ucztcblxuICAgIGNvbnN0IGFkYXB0ZXIgPSBhd2FpdCBEZWNhZkNvcmVNb2R1bGUuY3JlYXRlQWRhcHRlcihvcHRpb25zKTtcbiAgICBjb25zdCBmbGF2b3VyID0gYWRhcHRlci5mbGF2b3VyO1xuXG4gICAgY29uc3QgaW1wb3J0czpcbiAgICAgIHwgKFxuICAgICAgICAgIHwgRHluYW1pY01vZHVsZVxuICAgICAgICAgIHwgVHlwZTxhbnk+XG4gICAgICAgICAgfCBQcm9taXNlPER5bmFtaWNNb2R1bGU+XG4gICAgICAgICAgfCBGb3J3YXJkUmVmZXJlbmNlPGFueT5cbiAgICAgICAgKVtdXG4gICAgICB8IHVuZGVmaW5lZCA9IFtEZWNhZkNvcmVNb2R1bGUuZm9yUm9vdChvcHRpb25zKV07XG5cbiAgICBpZiAoYXV0b0NvbnRyb2xsZXJzKSB7XG4gICAgICBpbXBvcnRzLnB1c2goRGVjYWZNb2RlbE1vZHVsZS5mb3JSb290KGZsYXZvdXIpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBEZWNhZk1vZHVsZSxcbiAgICAgIGltcG9ydHM6IGltcG9ydHMsXG4gICAgfTtcbiAgfVxufVxuIl19
|
package/lib/module.d.ts
CHANGED
package/lib/types.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBEZWNhZk1vZHVsZU9wdGlvbnM8XG4gIENPTkYgPSBhbnksXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPENPTkYsIGFueSwgYW55LCBhbnksIGFueT4gPSBBZGFwdGVyPENPTkYsIGFueSwgYW55Pixcbj4gPSB7XG4gIGFkYXB0ZXI6IENvbnN0cnVjdG9yPEE+
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgdHlwZSBEZWNhZk1vZHVsZU9wdGlvbnM8XG4gIENPTkYgPSBhbnksXG4gIEEgZXh0ZW5kcyBBZGFwdGVyPENPTkYsIGFueSwgYW55LCBhbnksIGFueT4gPSBBZGFwdGVyPENPTkYsIGFueSwgYW55Pixcbj4gPSB7XG4gIGFkYXB0ZXI6IENvbnN0cnVjdG9yPEE+O1xuICBjb25mOiBDT05GO1xuICBhbGlhcz86IHN0cmluZztcbiAgYXV0b0NvbnRyb2xsZXJzOiBib29sZWFuO1xufTtcbiJdfQ==
|
package/lib/types.d.ts
CHANGED
package/lib/utils.cjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.repoForModel = repoForModel;
|
|
4
|
+
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
5
|
+
const db_decorators_1 = require("@decaf-ts/db-decorators");
|
|
6
|
+
const core_1 = require("@decaf-ts/core");
|
|
7
|
+
function repoForModel(model) {
|
|
8
|
+
const m = decorator_validation_1.Model.get(model);
|
|
9
|
+
if (!m)
|
|
10
|
+
throw new db_decorators_1.InternalError(`Failed to find repository for ${model}`);
|
|
11
|
+
const repo = core_1.Repository.forModel(m);
|
|
12
|
+
return repo;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxvQ0FNQztBQVZELHlFQUFxRDtBQUNyRCwyREFBc0Q7QUFDdEQseUNBQTBDO0FBRTFDLFNBQWdCLFlBQVksQ0FBQyxLQUFhO0lBQ3pDLE1BQU0sQ0FBQyxHQUFHLDRCQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxDQUFDO1FBQ0wsTUFBTSxJQUFJLDZCQUFhLENBQUMsaUNBQWlDLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDbEUsTUFBTSxJQUFJLEdBQUcsaUJBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNb2RlbH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtJbnRlcm5hbEVycm9yfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7UmVwb3NpdG9yeX0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvRm9yTW9kZWwobW9kZWw6IHN0cmluZykge1xuXHRjb25zdCBtID0gTW9kZWwuZ2V0KG1vZGVsKTtcblx0aWYgKCFtKVxuXHRcdHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGBGYWlsZWQgdG8gZmluZCByZXBvc2l0b3J5IGZvciAke21vZGVsfWApXG5cdGNvbnN0IHJlcG8gPSBSZXBvc2l0b3J5LmZvck1vZGVsKG0pO1xuXHRyZXR1cm4gcmVwbztcbn0iXX0=
|
package/lib/utils.d.ts
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/for-nest",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "NestJS decaf integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
"@rollup/plugin-typescript": "^12.1.2",
|
|
100
100
|
"@stylistic/eslint-plugin": "^4.2.0",
|
|
101
101
|
"@types/jest": "^29.5.14",
|
|
102
|
+
"@types/lodash": "^4.17.20",
|
|
102
103
|
"clean-publish": "^5.1.0",
|
|
103
104
|
"dpdm": "^3.14.0",
|
|
104
105
|
"eslint": "^9.25.1",
|
|
@@ -132,6 +133,7 @@
|
|
|
132
133
|
"@decaf-ts/logging": "latest",
|
|
133
134
|
"@decaf-ts/reflection": "latest",
|
|
134
135
|
"@decaf-ts/transactional-decorators": "latest",
|
|
135
|
-
"@nestjs/common": "^11.0.1"
|
|
136
|
+
"@nestjs/common": "^11.0.1",
|
|
137
|
+
"lodash": "^4.17.21"
|
|
136
138
|
}
|
|
137
139
|
}
|