@balena/pinejs 23.2.4-build-renovate-postgres-18-x-d54e05a34f38c2b551c30b37f70c95f053bd59d8-1 → 23.2.4-build-odata-response-37ad9263d98e1f823538c52c5d87ab4ed9cde91d-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.
@@ -1,16 +1,34 @@
1
1
  - commits:
2
- - subject: Update postgres Docker tag to v18
3
- hash: d54e05a34f38c2b551c30b37f70c95f053bd59d8
4
- body: |
5
- Update postgres from 17 to 18
2
+ - subject: "odata-response: avoid iterating the field names when there are no
3
+ webresource fields"
4
+ hash: 37ad9263d98e1f823538c52c5d87ab4ed9cde91d
5
+ body: ""
6
6
  footer:
7
7
  Change-type: patch
8
8
  change-type: patch
9
- author: balena-renovate[bot]
9
+ author: Pagan Gazzard
10
+ nested: []
11
+ - subject: "odata-response: use native functions for creating
12
+ `fetchProcessingFields`"
13
+ hash: 1e283f7e4913b9d185d1c4f43437bf682f571521
14
+ body: ""
15
+ footer:
16
+ Change-type: patch
17
+ change-type: patch
18
+ author: Pagan Gazzard
19
+ nested: []
20
+ - subject: "odata-response: use `Set`s for `localFields`/`webresourceFields`
21
+ lookups"
22
+ hash: 24f0a65e6cf629578d245584833c7673ef1e7e15
23
+ body: ""
24
+ footer:
25
+ Change-type: patch
26
+ change-type: patch
27
+ author: Pagan Gazzard
10
28
  nested: []
11
29
  version: 23.2.4
12
30
  title: ""
13
- date: 2025-10-29T16:10:45.035Z
31
+ date: 2025-10-29T17:23:20.248Z
14
32
  - commits:
15
33
  - subject: "Translations: remove dead code when namespacing relationships"
16
34
  hash: a00806079ad2bd2edad1d0ffd3cf5b178fa67c6e
package/CHANGELOG.md CHANGED
@@ -7,7 +7,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
7
7
  # v23.2.4
8
8
  ## (2025-10-29)
9
9
 
10
- * Update postgres Docker tag to v18 [balena-renovate[bot]]
10
+ * odata-response: avoid iterating the field names when there are no webresource fields [Pagan Gazzard]
11
+ * odata-response: use native functions for creating `fetchProcessingFields` [Pagan Gazzard]
12
+ * odata-response: use `Set`s for `localFields`/`webresourceFields` lookups [Pagan Gazzard]
11
13
 
12
14
  # v23.2.3
13
15
  ## (2025-10-29)
@@ -1,7 +1,7 @@
1
1
  version: "2.1"
2
2
  services:
3
3
  postgres:
4
- image: postgres:18-alpine
4
+ image: postgres:17-alpine
5
5
  environment:
6
6
  POSTGRES_USER: docker
7
7
  POSTGRES_PASSWORD: docker
@@ -4,12 +4,8 @@ declare module '@balena/abstract-sql-compiler' {
4
4
  fetchProcessingFields?: {
5
5
  [field: string]: NonNullable<SbvrType['fetchProcessing']>;
6
6
  };
7
- localFields?: {
8
- [odataName: string]: true;
9
- };
10
- webresourceFields?: {
11
- [odataName: string]: true;
12
- };
7
+ localFields?: Set<string>;
8
+ webresourceFields?: Set<string>;
13
9
  }
14
10
  }
15
11
  import type { Result, Row } from '../database-layer/db.js';
@@ -44,10 +44,10 @@ export function resourceURI(vocab, resourceName, id) {
44
44
  }
45
45
  const getLocalFields = (table) => {
46
46
  if (table.localFields == null) {
47
- table.localFields = {};
47
+ table.localFields = new Set();
48
48
  for (const { fieldName, dataType } of table.fields) {
49
49
  if (!['ForeignKey', 'ConceptType'].includes(dataType)) {
50
- table.localFields[sqlNameToODataName(fieldName)] = true;
50
+ table.localFields.add(sqlNameToODataName(fieldName));
51
51
  }
52
52
  }
53
53
  }
@@ -55,17 +55,17 @@ const getLocalFields = (table) => {
55
55
  };
56
56
  const getWebResourceFields = (table) => {
57
57
  if (table.webresourceFields == null) {
58
- table.webresourceFields = {};
58
+ table.webresourceFields = new Set();
59
59
  for (const { fieldName, dataType } of table.fields) {
60
60
  if (dataType === 'WebResource') {
61
- table.webresourceFields[sqlNameToODataName(fieldName)] = true;
61
+ table.webresourceFields.add(sqlNameToODataName(fieldName));
62
62
  }
63
63
  }
64
64
  }
65
65
  return table.webresourceFields;
66
66
  };
67
67
  const getFetchProcessingFields = (table) => {
68
- return (table.fetchProcessingFields ??= _(table.fields)
68
+ return (table.fetchProcessingFields ??= Object.fromEntries(table.fields
69
69
  .filter(({ dataType }) => sbvrTypes[dataType]
70
70
  ?.fetchProcessing != null)
71
71
  .map(({ fieldName, dataType }) => {
@@ -74,9 +74,7 @@ const getFetchProcessingFields = (table) => {
74
74
  sbvrTypes[dataType]
75
75
  .fetchProcessing,
76
76
  ];
77
- })
78
- .fromPairs()
79
- .value());
77
+ })));
80
78
  };
81
79
  export const process = async (vocab, abstractSqlModel, resourceName, rows, { includeMetadata }) => {
82
80
  if (rows.length === 0) {
@@ -98,9 +96,11 @@ export const process = async (vocab, abstractSqlModel, resourceName, rows, { inc
98
96
  const fetchProcessingFields = getFetchProcessingFields(table);
99
97
  const processedFields = fieldNames.filter((fieldName) => Object.hasOwn(fetchProcessingFields, fieldName));
100
98
  const localFields = getLocalFields(table);
101
- const expandableFields = fieldNames.filter((fieldName) => !Object.hasOwn(localFields, fieldName));
99
+ const expandableFields = fieldNames.filter((fieldName) => !localFields.has(fieldName));
102
100
  const webresourceFields = getWebResourceFields(table);
103
- const requiredSigningFields = fieldNames.filter((fieldName) => Object.hasOwn(webresourceFields, fieldName));
101
+ const requiredSigningFields = webresourceFields.size > 0
102
+ ? fieldNames.filter((fieldName) => webresourceFields.has(fieldName))
103
+ : [];
104
104
  const odataIdField = sqlNameToODataName(table.idField);
105
105
  for (const row of rows) {
106
106
  for (const fieldName of processedFields) {
@@ -1 +1 @@
1
- {"version":3,"file":"odata-response.js","sourceRoot":"","sources":["../../src/sbvr-api/odata-response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odata-response.js","sourceRoot":"","sources":["../../src/sbvr-api/odata-response.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EACN,SAAS,EACT,yBAAyB,EACzB,cAAc,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,iBAAiB,GAAG,KAAK,EAC9B,KAAa,EACb,gBAAkC,EAClC,kBAA0B,EAC1B,SAAiB,EACjB,GAAQ,EACR,IAAkC,EACjC,EAAE;IACH,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACJ,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;IACF,CAAC;IAED,MAAM,mBAAmB,GAAG,yBAAyB,CACpD;QACC,gBAAgB;QAChB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,kBAAkB;KAChC,EACD,SAAS,CACT,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,OAAO,CAC7B,KAAK,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,EACL,IAAI,CACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACP,GAAG,CAAC,SAAS,CAAC,GAAG;YAChB,IAAI,EAAE,KAAK;SACX,CAAC;QACF,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,GAAG,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG;gBAC3B,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,KAAK,CAAC;aACnD,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC,CAAC;AAYF,MAAM,UAAU,WAAW,CAC1B,KAAa,EACb,YAAoB,EACpB,EAAsC;IAEtC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,EAAE,GAAG,GAAG,GAAG,kBAAkB,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,KAAK,IAAI,YAAY,aAAa,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,EAAE;IAClD,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACpD,IAAI,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvD,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;YACtD,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,WAAW,CAAC;AAC1B,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,KAAuB,EAAE,EAAE;IACxD,IAAI,KAAK,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;QACrC,KAAK,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5C,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACpD,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAChC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC;YAC5D,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC,iBAAiB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,KAAuB,EAAE,EAAE;IAC5D,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,MAAM,CAAC,WAAW,CACzD,KAAK,CAAC,MAAM;SACV,MAAM,CACN,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACf,SAAS,CAAC,QAAkC,CAAc;QAC1D,EAAE,eAAe,IAAI,IAAI,CAC3B;SACA,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChC,OAAO;YACN,kBAAkB,CAAC,SAAS,CAAC;YAC5B,SAAS,CAAC,QAAkC,CAAc;iBACzD,eAAgB;SACT,CAAC;IACZ,CAAC,CAAC,CACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAC3B,KAAa,EACb,gBAAkC,EAClC,YAAoB,EACpB,IAAoB,EACpB,EAAE,eAAe,EAAgC,EACvB,EAAE;IAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;YAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC;QACtC,gBAAgB;QAChB,UAAU,EAAE,KAAK;QACjB,YAAY;KACZ,CAAC,CAAC;IACH,MAAM,4BAA4B,GAAG,qBAAqB,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CACvD,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAC/C,CAAC;IAEF,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAG1C,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,CACzC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAC1C,CAAC;IAEF,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,qBAAqB,GAC1B,iBAAiB,CAAC,IAAI,GAAG,CAAC;QACzB,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,YAAY,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;YACzC,GAAG,CAAC,SAAS,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,GAAG;gBAChB,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;aACxD,CAAC;QACH,CAAC;IACF,CAAC;IAED,IACC,qBAAqB,CAAC,MAAM,GAAG,CAAC;QAChC,4BAA4B,IAAI,IAAI,EACnC,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtB,MAAM,OAAO,CAAC,GAAG,CAChB,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBAC7C,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,4BAA4B,CAAC,YAAY,CAC/D,GAAG,CAAC,SAAS,CAAC,CACd,CAAC;gBACH,CAAC;YACF,CAAC,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtB,MAAM,OAAO,CAAC,GAAG,CAChB,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;gBACxC,MAAM,iBAAiB,CACtB,KAAK,EACL,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,GAAG,EACH,EAAE,eAAe,EAAE,CACnB,CAAC;YACH,CAAC,CAAC,CACF,CAAC;QACH,CAAC,CAAC,CACF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,gBAAkC,EAAE,EAAE;IAClE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAC5C,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/pinejs",
3
- "version": "23.2.4-build-renovate-postgres-18-x-d54e05a34f38c2b551c30b37f70c95f053bd59d8-1",
3
+ "version": "23.2.4-build-odata-response-37ad9263d98e1f823538c52c5d87ab4ed9cde91d-2",
4
4
  "main": "out/server-glue/module.js",
5
5
  "type": "module",
6
6
  "repository": "git@github.com:balena-io/pinejs.git",
@@ -149,6 +149,6 @@
149
149
  "recursive": true
150
150
  },
151
151
  "versionist": {
152
- "publishedAt": "2025-10-29T16:10:46.026Z"
152
+ "publishedAt": "2025-10-29T17:23:21.317Z"
153
153
  }
154
154
  }
@@ -9,12 +9,8 @@ declare module '@balena/abstract-sql-compiler' {
9
9
  fetchProcessingFields?: {
10
10
  [field: string]: NonNullable<SbvrType['fetchProcessing']>;
11
11
  };
12
- localFields?: {
13
- [odataName: string]: true;
14
- };
15
- webresourceFields?: {
16
- [odataName: string]: true;
17
- };
12
+ localFields?: Set<string>;
13
+ webresourceFields?: Set<string>;
18
14
  }
19
15
  }
20
16
 
@@ -105,10 +101,10 @@ export function resourceURI(
105
101
 
106
102
  const getLocalFields = (table: AbstractSqlTable) => {
107
103
  if (table.localFields == null) {
108
- table.localFields = {};
104
+ table.localFields = new Set<string>();
109
105
  for (const { fieldName, dataType } of table.fields) {
110
106
  if (!['ForeignKey', 'ConceptType'].includes(dataType)) {
111
- table.localFields[sqlNameToODataName(fieldName)] = true;
107
+ table.localFields.add(sqlNameToODataName(fieldName));
112
108
  }
113
109
  }
114
110
  }
@@ -117,10 +113,10 @@ const getLocalFields = (table: AbstractSqlTable) => {
117
113
 
118
114
  const getWebResourceFields = (table: AbstractSqlTable) => {
119
115
  if (table.webresourceFields == null) {
120
- table.webresourceFields = {};
116
+ table.webresourceFields = new Set<string>();
121
117
  for (const { fieldName, dataType } of table.fields) {
122
118
  if (dataType === 'WebResource') {
123
- table.webresourceFields[sqlNameToODataName(fieldName)] = true;
119
+ table.webresourceFields.add(sqlNameToODataName(fieldName));
124
120
  }
125
121
  }
126
122
  }
@@ -128,21 +124,21 @@ const getWebResourceFields = (table: AbstractSqlTable) => {
128
124
  };
129
125
 
130
126
  const getFetchProcessingFields = (table: AbstractSqlTable) => {
131
- return (table.fetchProcessingFields ??= _(table.fields)
132
- .filter(
133
- ({ dataType }) =>
134
- (sbvrTypes[dataType as keyof typeof sbvrTypes] as SbvrType)
135
- ?.fetchProcessing != null,
136
- )
137
- .map(({ fieldName, dataType }) => {
138
- return [
139
- sqlNameToODataName(fieldName),
140
- (sbvrTypes[dataType as keyof typeof sbvrTypes] as SbvrType)
141
- .fetchProcessing,
142
- ];
143
- })
144
- .fromPairs()
145
- .value());
127
+ return (table.fetchProcessingFields ??= Object.fromEntries(
128
+ table.fields
129
+ .filter(
130
+ ({ dataType }) =>
131
+ (sbvrTypes[dataType as keyof typeof sbvrTypes] as SbvrType)
132
+ ?.fetchProcessing != null,
133
+ )
134
+ .map(({ fieldName, dataType }) => {
135
+ return [
136
+ sqlNameToODataName(fieldName),
137
+ (sbvrTypes[dataType as keyof typeof sbvrTypes] as SbvrType)
138
+ .fetchProcessing!,
139
+ ] as const;
140
+ }),
141
+ ));
146
142
  };
147
143
 
148
144
  export const process = async (
@@ -181,13 +177,14 @@ export const process = async (
181
177
  // We check that it's not a local field, rather than that it is a foreign key because of the case where the foreign key is on the other resource
182
178
  // and hence not known to this resource
183
179
  const expandableFields = fieldNames.filter(
184
- (fieldName) => !Object.hasOwn(localFields, fieldName),
180
+ (fieldName) => !localFields.has(fieldName),
185
181
  );
186
182
 
187
183
  const webresourceFields = getWebResourceFields(table);
188
- const requiredSigningFields = fieldNames.filter((fieldName) =>
189
- Object.hasOwn(webresourceFields, fieldName),
190
- );
184
+ const requiredSigningFields =
185
+ webresourceFields.size > 0
186
+ ? fieldNames.filter((fieldName) => webresourceFields.has(fieldName))
187
+ : [];
191
188
 
192
189
  const odataIdField = sqlNameToODataName(table.idField);
193
190
  for (const row of rows) {