@balena/abstract-sql-to-typescript 3.1.0 → 3.1.1-build-reference-aliases-ef99ea06ebdb35456940db014e92764bada5a8fc-1

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.
@@ -1,3 +1,15 @@
1
+ - commits:
2
+ - subject: Include reference aliases in generated types
3
+ hash: ef99ea06ebdb35456940db014e92764bada5a8fc
4
+ body: ""
5
+ footer:
6
+ Change-type: patch
7
+ change-type: patch
8
+ author: Pagan Gazzard
9
+ nested: []
10
+ version: 3.1.1
11
+ title: ""
12
+ date: 2024-06-03T17:48:27.735Z
1
13
  - commits:
2
14
  - subject: Add a default export which maps OData names to typescript interfaces
3
15
  hash: 877a7987da8cdbaf1f1bfaa4ddd1eff0792692ff
@@ -9,7 +21,7 @@
9
21
  nested: []
10
22
  version: 3.1.0
11
23
  title: ""
12
- date: 2024-05-28T15:15:56.036Z
24
+ date: 2024-05-28T15:19:24.280Z
13
25
  - commits:
14
26
  - subject: Improve `Resource` typing
15
27
  hash: ba1301734f1a71dc2a920d1f378173a6bfa7c4a5
package/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ 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
+ ## 3.1.1 - 2024-06-03
8
+
9
+ * Include reference aliases in generated types [Pagan Gazzard]
10
+
7
11
  ## 3.1.0 - 2024-05-28
8
12
 
9
13
  * Add a default export which maps OData names to typescript interfaces [Pagan Gazzard]
package/out/generate.js CHANGED
@@ -35,30 +35,48 @@ const sqlTypeToTypescriptType = (m, f, mode) => {
35
35
  return `Types['${f.dataType}']['${mode}']`;
36
36
  }
37
37
  };
38
- const fieldsToInterfaceProps = (m, fields, mode) => fields.map((f) => {
38
+ const fieldToInterfaceProps = (key, m, f, mode) => {
39
39
  const nullable = f.required ? '' : ' | null';
40
- return `${(0, odata_to_abstract_sql_1.sqlNameToODataName)(f.fieldName)}: ${sqlTypeToTypescriptType(m, f, mode)}${nullable};`;
41
- });
40
+ return `${(0, odata_to_abstract_sql_1.sqlNameToODataName)(key)}: ${sqlTypeToTypescriptType(m, f, mode)}${nullable};`;
41
+ };
42
+ const fieldsToInterfaceProps = (m, fields, mode) => fields.map((f) => fieldToInterfaceProps(f.fieldName, m, f, mode));
42
43
  const recurseRelationships = (m, relationships, inverseSynonyms, mode, currentTable, parentKey) => Object.keys(relationships).flatMap((key) => {
43
44
  if (key === '$') {
44
45
  const [localField, referencedField] = relationships.$;
45
- if (currentTable.idField === localField && referencedField != null) {
46
- const referencedTable = m.tables[referencedField[0]];
47
- if (referencedTable != null) {
48
- const referencedInterface = getReferencedInterface(referencedTable.name, mode);
49
- const propDefinitons = [
50
- `${parentKey}?: Array<${referencedInterface}>;`,
51
- ];
52
- const synonym = inverseSynonyms[(0, odata_to_abstract_sql_1.odataNameToSqlName)(parentKey)];
46
+ if (referencedField != null) {
47
+ if (currentTable.idField === localField) {
48
+ const referencedTable = m.tables[referencedField[0]];
49
+ if (referencedTable != null) {
50
+ const referencedInterface = getReferencedInterface(referencedTable.name, mode);
51
+ const propDefinitons = [
52
+ `${(0, odata_to_abstract_sql_1.sqlNameToODataName)(parentKey)}?: Array<${referencedInterface}>;`,
53
+ ];
54
+ const synonym = inverseSynonyms[parentKey];
55
+ if (synonym != null) {
56
+ propDefinitons.push(`${(0, odata_to_abstract_sql_1.sqlNameToODataName)(synonym)}?: Array<${referencedInterface}>;`);
57
+ }
58
+ return propDefinitons;
59
+ }
60
+ }
61
+ else {
62
+ const f = currentTable.fields.find(({ fieldName }) => fieldName === localField);
63
+ const propDefinitons = [];
64
+ const addDefinition = (propName) => {
65
+ if (f.fieldName !== propName) {
66
+ propDefinitons.push(fieldToInterfaceProps(propName, m, f, mode));
67
+ }
68
+ };
69
+ addDefinition(parentKey);
70
+ const synonym = inverseSynonyms[parentKey];
53
71
  if (synonym != null) {
54
- propDefinitons.push(`${(0, odata_to_abstract_sql_1.sqlNameToODataName)(synonym)}?: Array<${referencedInterface}>;`);
72
+ addDefinition(synonym);
55
73
  }
56
74
  return propDefinitons;
57
75
  }
58
76
  }
59
77
  return [];
60
78
  }
61
- return recurseRelationships(m, relationships[key], inverseSynonyms, mode, currentTable, `${parentKey}__${key.replace(/ /g, '_')}`);
79
+ return recurseRelationships(m, relationships[key], inverseSynonyms, mode, currentTable, `${parentKey}-${key}`);
62
80
  });
63
81
  const relationshipsToInterfaceProps = (m, table, mode) => {
64
82
  const relationships = m.relationships[table.resourceName];
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
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": "3.1.0",
3
+ "version": "3.1.1-build-reference-aliases-ef99ea06ebdb35456940db014e92764bada5a8fc-1",
4
4
  "description": "A translator for abstract sql into typescript types.",
5
5
  "main": "out/index.js",
6
6
  "types": "out/index.d.ts",
@@ -50,6 +50,6 @@
50
50
  "_": "test/**/*.ts"
51
51
  },
52
52
  "versionist": {
53
- "publishedAt": "2024-05-28T15:15:56.246Z"
53
+ "publishedAt": "2024-06-03T17:48:27.945Z"
54
54
  }
55
55
  }
package/src/generate.ts CHANGED
@@ -7,10 +7,7 @@ import type {
7
7
  RelationshipInternalNode,
8
8
  RelationshipLeafNode,
9
9
  } from '@balena/abstract-sql-compiler';
10
- import {
11
- odataNameToSqlName,
12
- sqlNameToODataName,
13
- } from '@balena/odata-to-abstract-sql';
10
+ import { sqlNameToODataName } from '@balena/odata-to-abstract-sql';
14
11
  import { replaceResultTransformer, TemplateTag } from 'common-tags';
15
12
 
16
13
  type RequiredModelSubset = Pick<
@@ -70,19 +67,26 @@ const sqlTypeToTypescriptType = (
70
67
  }
71
68
  };
72
69
 
70
+ const fieldToInterfaceProps = (
71
+ key: string,
72
+ m: RequiredModelSubset,
73
+ f: AbstractSqlField,
74
+ mode: Mode,
75
+ ): string => {
76
+ const nullable = f.required ? '' : ' | null';
77
+ return `${sqlNameToODataName(key)}: ${sqlTypeToTypescriptType(
78
+ m,
79
+ f,
80
+ mode,
81
+ )}${nullable};`;
82
+ };
83
+
73
84
  const fieldsToInterfaceProps = (
74
85
  m: RequiredModelSubset,
75
86
  fields: AbstractSqlField[],
76
87
  mode: Mode,
77
88
  ): string[] =>
78
- fields.map((f) => {
79
- const nullable = f.required ? '' : ' | null';
80
- return `${sqlNameToODataName(f.fieldName)}: ${sqlTypeToTypescriptType(
81
- m,
82
- f,
83
- mode,
84
- )}${nullable};`;
85
- });
89
+ fields.map((f) => fieldToInterfaceProps(f.fieldName, m, f, mode));
86
90
 
87
91
  const recurseRelationships = (
88
92
  m: RequiredModelSubset,
@@ -97,21 +101,40 @@ const recurseRelationships = (
97
101
  const [localField, referencedField] = (
98
102
  relationships as RelationshipLeafNode
99
103
  ).$;
100
- if (currentTable.idField === localField && referencedField != null) {
101
- const referencedTable = m.tables[referencedField[0]];
102
- if (referencedTable != null) {
103
- const referencedInterface = getReferencedInterface(
104
- referencedTable.name,
105
- mode,
106
- );
107
- const propDefinitons = [
108
- `${parentKey}?: Array<${referencedInterface}>;`,
109
- ];
110
- const synonym = inverseSynonyms[odataNameToSqlName(parentKey)];
111
- if (synonym != null) {
112
- propDefinitons.push(
113
- `${sqlNameToODataName(synonym)}?: Array<${referencedInterface}>;`,
104
+ if (referencedField != null) {
105
+ if (currentTable.idField === localField) {
106
+ const referencedTable = m.tables[referencedField[0]];
107
+ if (referencedTable != null) {
108
+ const referencedInterface = getReferencedInterface(
109
+ referencedTable.name,
110
+ mode,
114
111
  );
112
+ const propDefinitons = [
113
+ `${sqlNameToODataName(parentKey)}?: Array<${referencedInterface}>;`,
114
+ ];
115
+ const synonym = inverseSynonyms[parentKey];
116
+ if (synonym != null) {
117
+ propDefinitons.push(
118
+ `${sqlNameToODataName(synonym)}?: Array<${referencedInterface}>;`,
119
+ );
120
+ }
121
+ return propDefinitons;
122
+ }
123
+ } else {
124
+ const f = currentTable.fields.find(
125
+ ({ fieldName }) => fieldName === localField,
126
+ )!;
127
+ const propDefinitons: string[] = [];
128
+ const addDefinition = (propName: string) => {
129
+ // Only add the relationship if it doesn't directly match the field name to avoid duplicates
130
+ if (f.fieldName !== propName) {
131
+ propDefinitons.push(fieldToInterfaceProps(propName, m, f, mode));
132
+ }
133
+ };
134
+ addDefinition(parentKey);
135
+ const synonym = inverseSynonyms[parentKey];
136
+ if (synonym != null) {
137
+ addDefinition(synonym);
115
138
  }
116
139
  return propDefinitons;
117
140
  }
@@ -124,7 +147,7 @@ const recurseRelationships = (
124
147
  inverseSynonyms,
125
148
  mode,
126
149
  currentTable,
127
- `${parentKey}__${key.replace(/ /g, '_')}`,
150
+ `${parentKey}-${key}`,
128
151
  );
129
152
  });
130
153
 
package/test/index.ts CHANGED
@@ -243,6 +243,11 @@ const testTable: Partial<AbstractSqlModel> = {
243
243
  $: ['id', ['test-has-tag key', 'test']],
244
244
  },
245
245
  },
246
+ aliased: {
247
+ tag: {
248
+ $: ['id', ['test-has-tag key', 'test']],
249
+ },
250
+ },
246
251
  references: {
247
252
  other: {
248
253
  $: ['references-other', ['other', 'id']],
@@ -327,6 +332,7 @@ test(
327
332
  a_file: Types['WebResource']['Read'];
328
333
  parent: { __id: Parent['Read']['id'] } | [Parent['Read']];
329
334
  references__other: { __id: Other['Read']['id'] } | [Other['Read']];
335
+ aliased__tag?: Array<TestTag['Read']>;
330
336
  test__has__tag_key?: Array<TestTag['Read']>;
331
337
  test_tag?: Array<TestTag['Read']>;
332
338
  }