@scmbwis/bpg-gen 0.1.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/README.md +103 -0
- package/dist/cli/config.d.ts +13 -0
- package/dist/cli/config.js +94 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/generate.d.ts +9 -0
- package/dist/cli/generate.js +97 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +37 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/schema-loader.d.ts +2 -0
- package/dist/cli/schema-loader.js +104 -0
- package/dist/cli/schema-loader.js.map +1 -0
- package/dist/commands/gendata.d.ts +1 -0
- package/dist/commands/gendata.js +251 -0
- package/dist/commands/gendata.js.map +1 -0
- package/dist/commands/gendb.d.ts +5 -0
- package/dist/commands/gendb.js +82 -0
- package/dist/commands/gendb.js.map +1 -0
- package/dist/commands/nest-express/gennestservicemodels.d.ts +5 -0
- package/dist/commands/nest-express/gennestservicemodels.js +505 -0
- package/dist/commands/nest-express/gennestservicemodels.js.map +1 -0
- package/dist/commands/nest-express/gentsaccessmodel.d.ts +5 -0
- package/dist/commands/nest-express/gentsaccessmodel.js +396 -0
- package/dist/commands/nest-express/gentsaccessmodel.js.map +1 -0
- package/dist/commands/ng/genngbaseapi.d.ts +1 -0
- package/dist/commands/ng/genngbaseapi.js +289 -0
- package/dist/commands/ng/genngbaseapi.js.map +1 -0
- package/dist/configs/ddi.d.ts +2 -0
- package/dist/configs/ddi.js +564 -0
- package/dist/configs/ddi.js.map +1 -0
- package/dist/configs/index.d.ts +2 -0
- package/dist/configs/index.js +24 -0
- package/dist/configs/index.js.map +1 -0
- package/dist/configs/proef-old.d.ts +2 -0
- package/dist/configs/proef-old.js +592 -0
- package/dist/configs/proef-old.js.map +1 -0
- package/dist/configs/proef.d.ts +2 -0
- package/dist/configs/proef.js +1023 -0
- package/dist/configs/proef.js.map +1 -0
- package/dist/configs/tuvens.d.ts +2 -0
- package/dist/configs/tuvens.js +1249 -0
- package/dist/configs/tuvens.js.map +1 -0
- package/dist/data-access/data-types/common.d.ts +40 -0
- package/dist/data-access/data-types/common.js +60 -0
- package/dist/data-access/data-types/common.js.map +1 -0
- package/dist/data-access/data-types/index.d.ts +3 -0
- package/dist/data-access/data-types/index.js +110 -0
- package/dist/data-access/data-types/index.js.map +1 -0
- package/dist/data-access/data-types/support/reg-models.d.ts +16 -0
- package/dist/data-access/data-types/support/reg-models.js +4 -0
- package/dist/data-access/data-types/support/reg-models.js.map +1 -0
- package/dist/data-access/data-types/template.d.ts +22 -0
- package/dist/data-access/data-types/template.js +17 -0
- package/dist/data-access/data-types/template.js.map +1 -0
- package/dist/data-access/data-types/types/boolean-array.d.ts +18 -0
- package/dist/data-access/data-types/types/boolean-array.js +32 -0
- package/dist/data-access/data-types/types/boolean-array.js.map +1 -0
- package/dist/data-access/data-types/types/boolean.d.ts +18 -0
- package/dist/data-access/data-types/types/boolean.js +32 -0
- package/dist/data-access/data-types/types/boolean.js.map +1 -0
- package/dist/data-access/data-types/types/child-pub-id-seq.d.ts +16 -0
- package/dist/data-access/data-types/types/child-pub-id-seq.js +15 -0
- package/dist/data-access/data-types/types/child-pub-id-seq.js.map +1 -0
- package/dist/data-access/data-types/types/client/client-model.d.ts +223 -0
- package/dist/data-access/data-types/types/client/client-model.js +26 -0
- package/dist/data-access/data-types/types/client/client-model.js.map +1 -0
- package/dist/data-access/data-types/types/client/common.d.ts +23 -0
- package/dist/data-access/data-types/types/client/common.js +3 -0
- package/dist/data-access/data-types/types/client/common.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/boolean-array.d.ts +10 -0
- package/dist/data-access/data-types/types/client/types/boolean-array.js +3 -0
- package/dist/data-access/data-types/types/client/types/boolean-array.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/boolean.d.ts +10 -0
- package/dist/data-access/data-types/types/client/types/boolean.js +3 -0
- package/dist/data-access/data-types/types/client/types/boolean.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/document.d.ts +7 -0
- package/dist/data-access/data-types/types/client/types/document.js +4 -0
- package/dist/data-access/data-types/types/client/types/document.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/fk.d.ts +13 -0
- package/dist/data-access/data-types/types/client/types/fk.js +3 -0
- package/dist/data-access/data-types/types/client/types/fk.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/object.d.ts +10 -0
- package/dist/data-access/data-types/types/client/types/object.js +3 -0
- package/dist/data-access/data-types/types/client/types/object.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/pk.d.ts +9 -0
- package/dist/data-access/data-types/types/client/types/pk.js +3 -0
- package/dist/data-access/data-types/types/client/types/pk.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/pub-id.d.ts +9 -0
- package/dist/data-access/data-types/types/client/types/pub-id.js +3 -0
- package/dist/data-access/data-types/types/client/types/pub-id.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/real-num-array.d.ts +12 -0
- package/dist/data-access/data-types/types/client/types/real-num-array.js +3 -0
- package/dist/data-access/data-types/types/client/types/real-num-array.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/real-num.d.ts +12 -0
- package/dist/data-access/data-types/types/client/types/real-num.js +3 -0
- package/dist/data-access/data-types/types/client/types/real-num.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/string-array.d.ts +13 -0
- package/dist/data-access/data-types/types/client/types/string-array.js +3 -0
- package/dist/data-access/data-types/types/client/types/string-array.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/string.d.ts +15 -0
- package/dist/data-access/data-types/types/client/types/string.js +3 -0
- package/dist/data-access/data-types/types/client/types/string.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/timestamp-array.d.ts +10 -0
- package/dist/data-access/data-types/types/client/types/timestamp-array.js +3 -0
- package/dist/data-access/data-types/types/client/types/timestamp-array.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/timestamp.d.ts +10 -0
- package/dist/data-access/data-types/types/client/types/timestamp.js +3 -0
- package/dist/data-access/data-types/types/client/types/timestamp.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/type-key.d.ts +19 -0
- package/dist/data-access/data-types/types/client/types/type-key.js +3 -0
- package/dist/data-access/data-types/types/client/types/type-key.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/user-picker.d.ts +0 -0
- package/dist/data-access/data-types/types/client/types/user-picker.js +2 -0
- package/dist/data-access/data-types/types/client/types/user-picker.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/whole-num-array.d.ts +12 -0
- package/dist/data-access/data-types/types/client/types/whole-num-array.js +3 -0
- package/dist/data-access/data-types/types/client/types/whole-num-array.js.map +1 -0
- package/dist/data-access/data-types/types/client/types/whole-num.d.ts +12 -0
- package/dist/data-access/data-types/types/client/types/whole-num.js +3 -0
- package/dist/data-access/data-types/types/client/types/whole-num.js.map +1 -0
- package/dist/data-access/data-types/types/client/union.d.ts +25 -0
- package/dist/data-access/data-types/types/client/union.js +24 -0
- package/dist/data-access/data-types/types/client/union.js.map +1 -0
- package/dist/data-access/data-types/types/document.d.ts +16 -0
- package/dist/data-access/data-types/types/document.js +28 -0
- package/dist/data-access/data-types/types/document.js.map +1 -0
- package/dist/data-access/data-types/types/fk.d.ts +46 -0
- package/dist/data-access/data-types/types/fk.js +66 -0
- package/dist/data-access/data-types/types/fk.js.map +1 -0
- package/dist/data-access/data-types/types/object.d.ts +18 -0
- package/dist/data-access/data-types/types/object.js +30 -0
- package/dist/data-access/data-types/types/object.js.map +1 -0
- package/dist/data-access/data-types/types/pk.d.ts +11 -0
- package/dist/data-access/data-types/types/pk.js +25 -0
- package/dist/data-access/data-types/types/pk.js.map +1 -0
- package/dist/data-access/data-types/types/pub-id.d.ts +23 -0
- package/dist/data-access/data-types/types/pub-id.js +31 -0
- package/dist/data-access/data-types/types/pub-id.js.map +1 -0
- package/dist/data-access/data-types/types/real-num-array.d.ts +22 -0
- package/dist/data-access/data-types/types/real-num-array.js +38 -0
- package/dist/data-access/data-types/types/real-num-array.js.map +1 -0
- package/dist/data-access/data-types/types/real-num.d.ts +22 -0
- package/dist/data-access/data-types/types/real-num.js +37 -0
- package/dist/data-access/data-types/types/real-num.js.map +1 -0
- package/dist/data-access/data-types/types/string-array.d.ts +24 -0
- package/dist/data-access/data-types/types/string-array.js +47 -0
- package/dist/data-access/data-types/types/string-array.js.map +1 -0
- package/dist/data-access/data-types/types/string.d.ts +37 -0
- package/dist/data-access/data-types/types/string.js +63 -0
- package/dist/data-access/data-types/types/string.js.map +1 -0
- package/dist/data-access/data-types/types/timestamp-array.d.ts +18 -0
- package/dist/data-access/data-types/types/timestamp-array.js +32 -0
- package/dist/data-access/data-types/types/timestamp-array.js.map +1 -0
- package/dist/data-access/data-types/types/timestamp.d.ts +18 -0
- package/dist/data-access/data-types/types/timestamp.js +32 -0
- package/dist/data-access/data-types/types/timestamp.js.map +1 -0
- package/dist/data-access/data-types/types/type-key.d.ts +87 -0
- package/dist/data-access/data-types/types/type-key.js +56 -0
- package/dist/data-access/data-types/types/type-key.js.map +1 -0
- package/dist/data-access/data-types/types/user-picker.d.ts +0 -0
- package/dist/data-access/data-types/types/user-picker.js +2 -0
- package/dist/data-access/data-types/types/user-picker.js.map +1 -0
- package/dist/data-access/data-types/types/whole-num-array.d.ts +22 -0
- package/dist/data-access/data-types/types/whole-num-array.js +38 -0
- package/dist/data-access/data-types/types/whole-num-array.js.map +1 -0
- package/dist/data-access/data-types/types/whole-num.d.ts +22 -0
- package/dist/data-access/data-types/types/whole-num.js +37 -0
- package/dist/data-access/data-types/types/whole-num.js.map +1 -0
- package/dist/data-access/data-types/union.d.ts +36 -0
- package/dist/data-access/data-types/union.js +44 -0
- package/dist/data-access/data-types/union.js.map +1 -0
- package/dist/datamodel/db-model/app-model.d.ts +36 -0
- package/dist/datamodel/db-model/app-model.js +7 -0
- package/dist/datamodel/db-model/app-model.js.map +1 -0
- package/dist/datamodel/db-model/data-model-builder.d.ts +3 -0
- package/dist/datamodel/db-model/data-model-builder.js +437 -0
- package/dist/datamodel/db-model/data-model-builder.js.map +1 -0
- package/dist/datamodel/db-model/data-model.d.ts +74 -0
- package/dist/datamodel/db-model/data-model.js +8 -0
- package/dist/datamodel/db-model/data-model.js.map +1 -0
- package/dist/datamodel/db-model/data-type.d.ts +9 -0
- package/dist/datamodel/db-model/data-type.js +176 -0
- package/dist/datamodel/db-model/data-type.js.map +1 -0
- package/dist/datamodel/db-model/in-app-model.d.ts +9 -0
- package/dist/datamodel/db-model/in-app-model.js +6 -0
- package/dist/datamodel/db-model/in-app-model.js.map +1 -0
- package/dist/datamodel/db-model/in-data-model.d.ts +36 -0
- package/dist/datamodel/db-model/in-data-model.js +11 -0
- package/dist/datamodel/db-model/in-data-model.js.map +1 -0
- package/dist/datamodel/pg-migrate/infoschema-models.d.ts +40 -0
- package/dist/datamodel/pg-migrate/infoschema-models.js +3 -0
- package/dist/datamodel/pg-migrate/infoschema-models.js.map +1 -0
- package/dist/datamodel/pg-migrate/infoschema-queries.d.ts +2 -0
- package/dist/datamodel/pg-migrate/infoschema-queries.js +14 -0
- package/dist/datamodel/pg-migrate/infoschema-queries.js.map +1 -0
- package/dist/datamodel/pg-migrate/migration-methods.d.ts +19 -0
- package/dist/datamodel/pg-migrate/migration-methods.js +75 -0
- package/dist/datamodel/pg-migrate/migration-methods.js.map +1 -0
- package/dist/datamodel/pg-migrate/migration-queries.d.ts +2 -0
- package/dist/datamodel/pg-migrate/migration-queries.js +127 -0
- package/dist/datamodel/pg-migrate/migration-queries.js.map +1 -0
- package/dist/datamodel/ts-gen/app/api.d.ts +2 -0
- package/dist/datamodel/ts-gen/app/api.js +72 -0
- package/dist/datamodel/ts-gen/app/api.js.map +1 -0
- package/dist/datamodel/ts-gen/index.d.ts +6 -0
- package/dist/datamodel/ts-gen/index.js +98 -0
- package/dist/datamodel/ts-gen/index.js.map +1 -0
- package/dist/env.d.ts +3 -0
- package/dist/env.js +87 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/casing.d.ts +17 -0
- package/dist/utils/casing.js +66 -0
- package/dist/utils/casing.js.map +1 -0
- package/dist/utils/conventions.d.ts +2 -0
- package/dist/utils/conventions.js +12 -0
- package/dist/utils/conventions.js.map +1 -0
- package/dist/utils/genutils.d.ts +55 -0
- package/dist/utils/genutils.js +501 -0
- package/dist/utils/genutils.js.map +1 -0
- package/dist/utils/pg.utils.d.ts +1 -0
- package/dist/utils/pg.utils.js +302 -0
- package/dist/utils/pg.utils.js.map +1 -0
- package/dist/utils/writingutils.d.ts +12 -0
- package/dist/utils/writingutils.js +63 -0
- package/dist/utils/writingutils.js.map +1 -0
- package/package.json +50 -0
package/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# bpg-gen
|
|
2
|
+
|
|
3
|
+
Development-time database code generator.
|
|
4
|
+
|
|
5
|
+
`bpg-gen` runs inside a consumer repository, reads `bgen.json`, loads a TypeScript schema, and generates database migration SQL plus TypeScript database model/types. CRUD service/controller generation is optional.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
Public npm package:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -D @scmbwis/bpg-gen
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If your npm organization scope is not `@scmbwis`, change the package scope in `package.json` before publishing.
|
|
16
|
+
|
|
17
|
+
## Consumer Script
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"scripts": {
|
|
22
|
+
"codegen": "bpg-gen generate"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The legacy `bgen` binary is still exposed as an alias.
|
|
28
|
+
|
|
29
|
+
## bgen.json
|
|
30
|
+
|
|
31
|
+
Create `bgen.json` at the consumer project root:
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"schema": "./src/schema/schema.ts",
|
|
36
|
+
"output": {
|
|
37
|
+
"types": "./src/generated/types",
|
|
38
|
+
"db": "./src/generated/db"
|
|
39
|
+
},
|
|
40
|
+
"options": {
|
|
41
|
+
"clean": true
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
CRUD service/controller generation is off by default. Enable it explicitly:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"schema": "./src/schema/schema.ts",
|
|
51
|
+
"output": {
|
|
52
|
+
"types": "./src/generated/types",
|
|
53
|
+
"db": "./src/generated/db",
|
|
54
|
+
"crud": "./src/generated/crud"
|
|
55
|
+
},
|
|
56
|
+
"options": {
|
|
57
|
+
"clean": true,
|
|
58
|
+
"generateCrud": true
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Schema
|
|
64
|
+
|
|
65
|
+
```ts
|
|
66
|
+
import { defineSchema } from '@scmbwis/bpg-gen'
|
|
67
|
+
import type { InDataModel } from '@scmbwis/bpg-gen'
|
|
68
|
+
|
|
69
|
+
export default defineSchema<InDataModel>({
|
|
70
|
+
schemaName: 'public',
|
|
71
|
+
tables: [
|
|
72
|
+
{
|
|
73
|
+
name: 'user',
|
|
74
|
+
cols: [
|
|
75
|
+
{ name: 'identity_key', dataType: 'string', required: true, immutable: true },
|
|
76
|
+
{ name: 'display_name', dataType: 'string', stringFormat: 'title', required: true }
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
})
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Run:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
npm run codegen
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Build And Test
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npm run build
|
|
93
|
+
npm run test:hardening
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Publish
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm login
|
|
100
|
+
npm publish
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
`publishConfig.access=public` is already set for public scoped npm publishing.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface BgenConfig {
|
|
2
|
+
schema: string;
|
|
3
|
+
output: {
|
|
4
|
+
types: string;
|
|
5
|
+
crud?: string;
|
|
6
|
+
db: string;
|
|
7
|
+
};
|
|
8
|
+
options?: {
|
|
9
|
+
clean?: boolean;
|
|
10
|
+
generateCrud?: boolean;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export declare function readBgenConfig(projectRoot: string): Promise<BgenConfig>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.readBgenConfig = readBgenConfig;
|
|
46
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
47
|
+
const path = __importStar(require("node:path"));
|
|
48
|
+
function readBgenConfig(projectRoot) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const configPath = path.resolve(projectRoot, 'bgen.json');
|
|
51
|
+
let parsed;
|
|
52
|
+
try {
|
|
53
|
+
const file = yield fs.readFile(configPath, 'utf8');
|
|
54
|
+
parsed = JSON.parse(file);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
throw new Error(`Unable to read bgen config at ${configPath}. Ensure bgen.json exists and contains valid JSON.`);
|
|
58
|
+
}
|
|
59
|
+
validateConfig(parsed);
|
|
60
|
+
return parsed;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function validateConfig(value) {
|
|
64
|
+
if (!value || typeof value !== 'object')
|
|
65
|
+
throw new Error('bgen.json must be a JSON object.');
|
|
66
|
+
const v = value;
|
|
67
|
+
if (typeof v.schema !== 'string' || v.schema.trim().length === 0) {
|
|
68
|
+
throw new Error('bgen.json requires a non-empty string: schema');
|
|
69
|
+
}
|
|
70
|
+
if (!v.output || typeof v.output !== 'object') {
|
|
71
|
+
throw new Error('bgen.json requires output object with keys: types, db');
|
|
72
|
+
}
|
|
73
|
+
const out = v.output;
|
|
74
|
+
for (const key of ['types', 'db']) {
|
|
75
|
+
const raw = out[key];
|
|
76
|
+
if (typeof raw !== 'string' || raw.trim().length === 0) {
|
|
77
|
+
throw new Error(`bgen.json output.${key} must be a non-empty string path`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (v.options !== undefined && typeof v.options !== 'object') {
|
|
81
|
+
throw new Error('bgen.json options must be an object when provided');
|
|
82
|
+
}
|
|
83
|
+
const options = v.options;
|
|
84
|
+
if ((options === null || options === void 0 ? void 0 : options.generateCrud) !== undefined && typeof options.generateCrud !== 'boolean') {
|
|
85
|
+
throw new Error('bgen.json options.generateCrud must be a boolean when provided');
|
|
86
|
+
}
|
|
87
|
+
if ((options === null || options === void 0 ? void 0 : options.generateCrud) === true) {
|
|
88
|
+
const crud = out.crud;
|
|
89
|
+
if (typeof crud !== 'string' || crud.trim().length === 0) {
|
|
90
|
+
throw new Error('bgen.json output.crud must be a non-empty string path when options.generateCrud=true');
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../lib/cli/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,wCAYC;AA5BD,qDAAsC;AACtC,gDAAiC;AAejC,SAAsB,cAAc,CAAC,WAAmB;;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACzD,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;YAClD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,oDAAoD,CAAC,CAAA;QAClH,CAAC;QAED,cAAc,CAAC,MAAM,CAAC,CAAA;QACtB,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAC5F,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAClE,CAAC;IACD,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;IAC1E,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAiC,CAAA;IAC/C,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAU,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,kCAAkC,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,OAA8C,CAAA;IAChE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,SAAS,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IACD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;QACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAA;QACzG,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InDataModel } from '../datamodel/db-model/in-data-model';
|
|
2
|
+
import { BgenConfig } from './config';
|
|
3
|
+
export interface ResolvedBgenOutput {
|
|
4
|
+
types: string;
|
|
5
|
+
crud?: string;
|
|
6
|
+
db: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function generateFromConfig(projectRoot: string, config: BgenConfig, schema: InDataModel): Promise<ResolvedBgenOutput>;
|
|
9
|
+
export declare function resolveOutputPaths(projectRoot: string, config: BgenConfig): ResolvedBgenOutput;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.generateFromConfig = generateFromConfig;
|
|
46
|
+
exports.resolveOutputPaths = resolveOutputPaths;
|
|
47
|
+
const fs = __importStar(require("node:fs/promises"));
|
|
48
|
+
const path = __importStar(require("node:path"));
|
|
49
|
+
const gendb_1 = require("../commands/gendb");
|
|
50
|
+
const gentsaccessmodel_1 = require("../commands/nest-express/gentsaccessmodel");
|
|
51
|
+
const gennestservicemodels_1 = require("../commands/nest-express/gennestservicemodels");
|
|
52
|
+
const data_model_builder_1 = require("../datamodel/db-model/data-model-builder");
|
|
53
|
+
function generateFromConfig(projectRoot, config, schema) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
const output = resolveOutputPaths(projectRoot, config);
|
|
57
|
+
if ((_a = config.options) === null || _a === void 0 ? void 0 : _a.clean) {
|
|
58
|
+
const cleanTargets = [
|
|
59
|
+
cleanOutputDir(output.types),
|
|
60
|
+
cleanOutputDir(output.db),
|
|
61
|
+
];
|
|
62
|
+
if (config.options.generateCrud && output.crud) {
|
|
63
|
+
cleanTargets.push(cleanOutputDir(output.crud));
|
|
64
|
+
}
|
|
65
|
+
yield Promise.all(cleanTargets);
|
|
66
|
+
}
|
|
67
|
+
const dataModel = (0, data_model_builder_1.getDataModel)(schema);
|
|
68
|
+
yield (0, gendb_1.genDbScriptFromDataModel)(dataModel, output.db);
|
|
69
|
+
yield (0, gentsaccessmodel_1.createTsAccessFromDataModel)(dataModel, [output.types]);
|
|
70
|
+
if (((_b = config.options) === null || _b === void 0 ? void 0 : _b.generateCrud) && output.crud) {
|
|
71
|
+
yield (0, gennestservicemodels_1.genNestServicesFromDataModel)(dataModel, output.crud);
|
|
72
|
+
}
|
|
73
|
+
return output;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function resolveOutputPaths(projectRoot, config) {
|
|
77
|
+
return {
|
|
78
|
+
types: resolveProjectPath(projectRoot, config.output.types, 'output.types'),
|
|
79
|
+
crud: config.output.crud ? resolveProjectPath(projectRoot, config.output.crud, 'output.crud') : undefined,
|
|
80
|
+
db: resolveProjectPath(projectRoot, config.output.db, 'output.db'),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function resolveProjectPath(projectRoot, rawPath, label) {
|
|
84
|
+
const root = path.resolve(projectRoot);
|
|
85
|
+
const resolved = path.resolve(root, rawPath);
|
|
86
|
+
const relative = path.relative(root, resolved);
|
|
87
|
+
if (relative === '' || relative.startsWith('..') || path.isAbsolute(relative)) {
|
|
88
|
+
throw new Error(`Refusing to write outside project root: ${label} resolves to ${resolved}`);
|
|
89
|
+
}
|
|
90
|
+
return resolved;
|
|
91
|
+
}
|
|
92
|
+
function cleanOutputDir(dirPath) {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
yield fs.rm(dirPath, { recursive: true, force: true });
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../lib/cli/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,gDAsBC;AAED,gDAMC;AA7CD,qDAAsC;AACtC,gDAAiC;AACjC,6CAA4D;AAC5D,gFAAuF;AACvF,wFAA4F;AAC5F,iFAAuE;AAUvE,SAAsB,kBAAkB,CAAC,WAAmB,EAAE,MAAkB,EAAE,MAAmB;;;QACpG,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAEtD,IAAI,MAAA,MAAM,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG;gBACpB,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC5B,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;aACzB,CAAA;YACD,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChD,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;YAC/C,CAAC;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,iCAAY,EAAC,MAAM,CAAC,CAAA;QACtC,MAAM,IAAA,gCAAwB,EAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QACpD,MAAM,IAAA,8CAA2B,EAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,YAAY,KAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,IAAA,mDAA4B,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3D,CAAC;QAED,OAAO,MAAM,CAAA;IACd,CAAC;CAAA;AAED,SAAgB,kBAAkB,CAAC,WAAmB,EAAE,MAAkB;IACzE,OAAO;QACN,KAAK,EAAE,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC;QAC3E,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;QACzG,EAAE,EAAE,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC;KAClE,CAAA;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB,EAAE,OAAe,EAAE,KAAa;IAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAE9C,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,2CAA2C,KAAK,gBAAgB,QAAQ,EAAE,CAAC,CAAA;IAC5F,CAAC;IAED,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED,SAAe,cAAc,CAAC,OAAe;;QAC5C,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,CAAC;CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
5
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
6
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
7
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
8
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
9
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const config_1 = require("./config");
|
|
14
|
+
const generate_1 = require("./generate");
|
|
15
|
+
const schema_loader_1 = require("./schema-loader");
|
|
16
|
+
function run() {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
var _a;
|
|
19
|
+
const command = process.argv[2];
|
|
20
|
+
if (command !== 'generate') {
|
|
21
|
+
console.error('Unknown command. Usage: bgen generate');
|
|
22
|
+
process.exitCode = 1;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const projectRoot = process.cwd();
|
|
26
|
+
const config = yield (0, config_1.readBgenConfig)(projectRoot);
|
|
27
|
+
const schema = yield (0, schema_loader_1.loadSchema)(projectRoot, config.schema);
|
|
28
|
+
const output = yield (0, generate_1.generateFromConfig)(projectRoot, config, schema);
|
|
29
|
+
const crudMessage = ((_a = config.options) === null || _a === void 0 ? void 0 : _a.generateCrud) && output.crud ? `, and crud output to ${output.crud}` : '';
|
|
30
|
+
console.log(`bgen generate: wrote db output to ${output.db}, types output to ${output.types}${crudMessage}`);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
run().catch((err) => {
|
|
34
|
+
console.error(err instanceof Error ? err.message : err);
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qCAAyC;AACzC,yCAA+C;AAC/C,mDAA4C;AAE5C,SAAe,GAAG;;;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAA;YACtD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAc,EAAC,WAAW,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAU,EAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAkB,EAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAEpE,MAAM,WAAW,GAAG,CAAA,MAAA,MAAM,CAAC,OAAO,0CAAE,YAAY,KAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5G,OAAO,CAAC,GAAG,CAAC,qCAAqC,MAAM,CAAC,EAAE,qBAAqB,MAAM,CAAC,KAAK,GAAG,WAAW,EAAE,CAAC,CAAA;IAC9G,CAAC;CAAA;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAClB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.loadSchema = loadSchema;
|
|
46
|
+
const path = __importStar(require("node:path"));
|
|
47
|
+
const node_url_1 = require("node:url");
|
|
48
|
+
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
49
|
+
const { require: tsxRequire } = require('tsx/cjs/api');
|
|
50
|
+
const moduleBuiltin = require('node:module');
|
|
51
|
+
const schemaHelperPackages = new Set(['@scmbwis/bpg-gen', 'bpg-gen', 'bgen']);
|
|
52
|
+
function loadSchema(projectRoot, schemaPath) {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
const resolved = path.resolve(projectRoot, schemaPath);
|
|
55
|
+
const moduleUrl = (0, node_url_1.pathToFileURL)(resolved).href;
|
|
56
|
+
const loaded = yield loadSchemaModule(resolved, moduleUrl, projectRoot);
|
|
57
|
+
const schema = getSchemaExport(loaded);
|
|
58
|
+
if (!schema) {
|
|
59
|
+
throw new Error(`Schema module loaded from ${resolved}, but no schema export was found. Use \`export default schema\` or \`export const schema = ...\`.`);
|
|
60
|
+
}
|
|
61
|
+
return schema;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function loadSchemaModule(resolved, moduleUrl, projectRoot) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
if (/\.[cm]?tsx?$/.test(resolved)) {
|
|
67
|
+
return loadTypeScriptSchema(resolved, projectRoot);
|
|
68
|
+
}
|
|
69
|
+
return yield dynamicImport(moduleUrl);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function loadTypeScriptSchema(resolved, projectRoot) {
|
|
73
|
+
const originalLoad = moduleBuiltin._load;
|
|
74
|
+
moduleBuiltin._load = function patchedLoad(request, parent, isMain) {
|
|
75
|
+
if (schemaHelperPackages.has(request) && isProjectSchemaParent(parent, projectRoot)) {
|
|
76
|
+
return {
|
|
77
|
+
defineSchema: (schema) => schema,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
return originalLoad(request, parent, isMain);
|
|
81
|
+
};
|
|
82
|
+
try {
|
|
83
|
+
return tsxRequire(resolved, path.join(projectRoot, 'bgen.json'));
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
moduleBuiltin._load = originalLoad;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function isProjectSchemaParent(parent, projectRoot) {
|
|
90
|
+
const filename = typeof parent === 'object' && parent !== null && 'filename' in parent
|
|
91
|
+
? String(parent.filename)
|
|
92
|
+
: '';
|
|
93
|
+
return filename.length > 0 && path.resolve(filename).startsWith(path.resolve(projectRoot));
|
|
94
|
+
}
|
|
95
|
+
function getSchemaExport(value, depth = 0) {
|
|
96
|
+
var _a;
|
|
97
|
+
if (!value || typeof value !== 'object' || depth > 4)
|
|
98
|
+
return undefined;
|
|
99
|
+
const record = value;
|
|
100
|
+
if (Array.isArray(record.tables))
|
|
101
|
+
return value;
|
|
102
|
+
return (_a = getSchemaExport(record.schema, depth + 1)) !== null && _a !== void 0 ? _a : getSchemaExport(record.default, depth + 1);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=schema-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-loader.js","sourceRoot":"","sources":["../../lib/cli/schema-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function genMockDataScript(modelKey: string): Promise<void>;
|