@balena/abstract-sql-to-typescript 4.0.1 → 4.0.2
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/.versionbot/CHANGELOG.yml +21 -1
- package/CHANGELOG.md +5 -0
- package/out/generate.js +17 -5
- package/out/generate.js.map +1 -1
- package/package.json +2 -2
- package/src/generate.ts +20 -6
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: Fix computed fields to correctly be omitted from `Write` typings
|
|
3
|
+
hash: 17f5875cb59e83318b2cdddb7886008f1a48c214
|
|
4
|
+
body: ""
|
|
5
|
+
footer:
|
|
6
|
+
Change-type: patch
|
|
7
|
+
change-type: patch
|
|
8
|
+
author: Pagan Gazzard
|
|
9
|
+
nested: []
|
|
10
|
+
- subject: Fix tables with definitions to correctly have no writable fields
|
|
11
|
+
hash: 55e0d492587f74b711bc119e89d04113d0cb3c88
|
|
12
|
+
body: ""
|
|
13
|
+
footer:
|
|
14
|
+
Change-type: patch
|
|
15
|
+
change-type: patch
|
|
16
|
+
author: Pagan Gazzard
|
|
17
|
+
nested: []
|
|
18
|
+
version: 4.0.2
|
|
19
|
+
title: ""
|
|
20
|
+
date: 2024-09-06T14:50:04.605Z
|
|
1
21
|
- commits:
|
|
2
22
|
- subject: Update dependencies
|
|
3
23
|
hash: 037567bd7927fb26f8096431ac5c23f497bc8f25
|
|
@@ -413,7 +433,7 @@
|
|
|
413
433
|
date: 2024-08-26T13:17:55.861Z
|
|
414
434
|
version: 4.0.1
|
|
415
435
|
title: ""
|
|
416
|
-
date: 2024-09-06T14:
|
|
436
|
+
date: 2024-09-06T14:37:16.617Z
|
|
417
437
|
- commits:
|
|
418
438
|
- subject: Allow for sbvr-types v7, v8, and v9
|
|
419
439
|
hash: 574f9d591d56dfc31ae4f256e1e4708a5dd893cc
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## 4.0.2 - 2024-09-06
|
|
8
|
+
|
|
9
|
+
* Fix computed fields to correctly be omitted from `Write` typings [Pagan Gazzard]
|
|
10
|
+
* Fix tables with definitions to correctly have no writable fields [Pagan Gazzard]
|
|
11
|
+
|
|
7
12
|
## 4.0.1 - 2024-09-06
|
|
8
13
|
|
|
9
14
|
|
package/out/generate.js
CHANGED
|
@@ -36,10 +36,15 @@ const sqlTypeToTypescriptType = (m, f, mode) => {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
const fieldToInterfaceProps = (key, m, f, mode) => {
|
|
39
|
+
if (f.computed != null) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
39
42
|
const nullable = f.required ? '' : ' | null';
|
|
40
43
|
return `${(0, odata_to_abstract_sql_1.sqlNameToODataName)(key)}: ${sqlTypeToTypescriptType(m, f, mode)}${nullable};`;
|
|
41
44
|
};
|
|
42
|
-
const fieldsToInterfaceProps = (m, fields, mode) => fields
|
|
45
|
+
const fieldsToInterfaceProps = (m, fields, mode) => fields
|
|
46
|
+
.map((f) => fieldToInterfaceProps(f.fieldName, m, f, mode))
|
|
47
|
+
.filter((f) => f != null);
|
|
43
48
|
const getSynonyms = (s, inverseSynonyms) => {
|
|
44
49
|
const synonyms = [];
|
|
45
50
|
for (const inverseSynonym of Object.keys(inverseSynonyms)) {
|
|
@@ -74,7 +79,10 @@ const recurseRelationships = (m, relationships, inverseSynonyms, mode, currentTa
|
|
|
74
79
|
const propDefinitons = [];
|
|
75
80
|
const addDefinition = (propName) => {
|
|
76
81
|
if (f.fieldName !== propName) {
|
|
77
|
-
|
|
82
|
+
const propDefiniton = fieldToInterfaceProps(propName, m, f, mode);
|
|
83
|
+
if (propDefiniton != null) {
|
|
84
|
+
propDefinitons.push(propDefiniton);
|
|
85
|
+
}
|
|
78
86
|
}
|
|
79
87
|
};
|
|
80
88
|
addDefinition(parentKey);
|
|
@@ -108,6 +116,12 @@ const relationshipsToInterfaceProps = (m, table, mode) => {
|
|
|
108
116
|
});
|
|
109
117
|
};
|
|
110
118
|
const tableToInterface = (m, table) => {
|
|
119
|
+
const writeType = table.definition != null
|
|
120
|
+
?
|
|
121
|
+
'Record<string, never>'
|
|
122
|
+
: `{
|
|
123
|
+
${[...fieldsToInterfaceProps(m, table.fields, 'Write')].join('\n\t\t')}
|
|
124
|
+
}`;
|
|
111
125
|
return trimNL `
|
|
112
126
|
export interface ${modelNameToCamelCaseName(table.name)} {
|
|
113
127
|
Read: {
|
|
@@ -116,9 +130,7 @@ export interface ${modelNameToCamelCaseName(table.name)} {
|
|
|
116
130
|
...relationshipsToInterfaceProps(m, table, 'Read'),
|
|
117
131
|
].join('\n\t\t')}
|
|
118
132
|
};
|
|
119
|
-
Write: {
|
|
120
|
-
${[...fieldsToInterfaceProps(m, table.fields, 'Write')].join('\n\t\t')}
|
|
121
|
-
};
|
|
133
|
+
Write: ${writeType};
|
|
122
134
|
}
|
|
123
135
|
`;
|
|
124
136
|
};
|
package/out/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":";;;AASA,yEAAmE;AACnE,6CAAoE;AAGpE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAO/C,MAAM,MAAM,GAAG,IAAI,yBAAW,CAC7B,IAAA,sCAAwB,EAAC,oBAAoB,EAAE,EAAE,CAAC,CAClD,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,CAAS,EAAU,EAAE,CACtD,CAAC;KACC,KAAK,CAAC,MAAM,CAAC;KACb,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACjD,IAAI,CAAC,EAAE,CAAC,CAAC;AAEZ,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAE,IAAU,EAAE,EAAE,CAChE,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC;AAErD,MAAM,uBAAuB,GAAG,CAC/B,CAAsB,EACtB,CAAmB,EACnB,IAAU,EACD,EAAE;IACX,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAwB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAC5D,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,aAAa,CAAC,GAAG,QAAQ,CAAC;YACxC,OAAO,aAAa;iBAClB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;iBAChE,IAAI,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,aAAa,CAAC;QACnB,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,MAAM,mBAAmB,GAAG,sBAAsB,CACjD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EACzC,IAAI,CACJ,CAAC;YACF,MAAM,mBAAmB,GAAG,GAAG,mBAAmB,KAAK,CAAC,CAAC,UAAW,CAAC,SAAS,IAAI,CAAC;YACnF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtB,OAAO,mBAAmB,CAAC;YAC5B,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3C,OAAO,WAAW,mBAAmB,SAAS,mBAAmB,IAAI,QAAQ,EAAE,CAAC;QACjF,CAAC;QACD;YACC,OAAO,UAAU,CAAC,CAAC,QAAQ,OAAO,IAAI,IAAI,CAAC;IAC7C,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC7B,GAAW,EACX,CAAsB,EACtB,CAAmB,EACnB,IAAU,
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/abstract-sql-to-typescript",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "A translator for abstract sql into typescript types.",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"types": "out/index.d.ts",
|
|
@@ -53,6 +53,6 @@
|
|
|
53
53
|
"_": "test/**/*.ts"
|
|
54
54
|
},
|
|
55
55
|
"versionist": {
|
|
56
|
-
"publishedAt": "2024-09-06T14:
|
|
56
|
+
"publishedAt": "2024-09-06T14:50:04.855Z"
|
|
57
57
|
}
|
|
58
58
|
}
|
package/src/generate.ts
CHANGED
|
@@ -73,7 +73,11 @@ const fieldToInterfaceProps = (
|
|
|
73
73
|
m: RequiredModelSubset,
|
|
74
74
|
f: AbstractSqlField,
|
|
75
75
|
mode: Mode,
|
|
76
|
-
): string => {
|
|
76
|
+
): string | undefined => {
|
|
77
|
+
if (f.computed != null) {
|
|
78
|
+
// Computed terms cannot be written to
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
77
81
|
const nullable = f.required ? '' : ' | null';
|
|
78
82
|
return `${sqlNameToODataName(key)}: ${sqlTypeToTypescriptType(
|
|
79
83
|
m,
|
|
@@ -87,7 +91,9 @@ const fieldsToInterfaceProps = (
|
|
|
87
91
|
fields: AbstractSqlField[],
|
|
88
92
|
mode: Mode,
|
|
89
93
|
): string[] =>
|
|
90
|
-
fields
|
|
94
|
+
fields
|
|
95
|
+
.map((f) => fieldToInterfaceProps(f.fieldName, m, f, mode))
|
|
96
|
+
.filter((f) => f != null);
|
|
91
97
|
|
|
92
98
|
const getSynonyms = (
|
|
93
99
|
s: string,
|
|
@@ -144,7 +150,10 @@ const recurseRelationships = (
|
|
|
144
150
|
const addDefinition = (propName: string) => {
|
|
145
151
|
// Only add the relationship if it doesn't directly match the field name to avoid duplicates
|
|
146
152
|
if (f.fieldName !== propName) {
|
|
147
|
-
|
|
153
|
+
const propDefiniton = fieldToInterfaceProps(propName, m, f, mode);
|
|
154
|
+
if (propDefiniton != null) {
|
|
155
|
+
propDefinitons.push(propDefiniton);
|
|
156
|
+
}
|
|
148
157
|
}
|
|
149
158
|
};
|
|
150
159
|
addDefinition(parentKey);
|
|
@@ -201,6 +210,13 @@ const relationshipsToInterfaceProps = (
|
|
|
201
210
|
};
|
|
202
211
|
|
|
203
212
|
const tableToInterface = (m: RequiredModelSubset, table: AbstractSqlTable) => {
|
|
213
|
+
const writeType =
|
|
214
|
+
table.definition != null
|
|
215
|
+
? // If there's a table definition then we cannot write anything
|
|
216
|
+
'Record<string, never>'
|
|
217
|
+
: `{
|
|
218
|
+
${[...fieldsToInterfaceProps(m, table.fields, 'Write')].join('\n\t\t')}
|
|
219
|
+
}`;
|
|
204
220
|
return trimNL`
|
|
205
221
|
export interface ${modelNameToCamelCaseName(table.name)} {
|
|
206
222
|
Read: {
|
|
@@ -209,9 +225,7 @@ export interface ${modelNameToCamelCaseName(table.name)} {
|
|
|
209
225
|
...relationshipsToInterfaceProps(m, table, 'Read'),
|
|
210
226
|
].join('\n\t\t')}
|
|
211
227
|
};
|
|
212
|
-
Write: {
|
|
213
|
-
${[...fieldsToInterfaceProps(m, table.fields, 'Write')].join('\n\t\t')}
|
|
214
|
-
};
|
|
228
|
+
Write: ${writeType};
|
|
215
229
|
}
|
|
216
230
|
`;
|
|
217
231
|
};
|