@balena/pinejs 17.1.6-build-renovate-major-12-commander-2fc655ed065961925d3b3146ab83dba470134a36-1 → 17.1.6-build-migraates-sbvr-server-to-ts-ed2267c4b4cbe448b6062263b90a97492176663c-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,15 @@
1
1
  - commits:
2
- - subject: Update dependency commander to v12
3
- hash: 2fc655ed065961925d3b3146ab83dba470134a36
4
- body: |
5
- Update commander from 11.1.0 to 12.1.0
2
+ - subject: Migrate sbvr-server to typescript
3
+ hash: ed2267c4b4cbe448b6062263b90a97492176663c
4
+ body: ""
6
5
  footer:
7
6
  Change-type: patch
8
7
  change-type: patch
9
- author: Self-hosted Renovate Bot
8
+ author: Otavio Jacobi
10
9
  nested: []
11
10
  version: 17.1.6
12
11
  title: ""
13
- date: 2024-06-24T13:58:18.912Z
12
+ date: 2024-06-25T22:13:54.270Z
14
13
  - commits:
15
14
  - subject: Rollback sbvr-types back to v7
16
15
  hash: b61ee61f7b7318b0dd4269646d0272be820e806b
package/CHANGELOG.md CHANGED
@@ -5,9 +5,9 @@ automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
5
5
  This project adheres to [Semantic Versioning](http://semver.org/).
6
6
 
7
7
  # v17.1.6
8
- ## (2024-06-24)
8
+ ## (2024-06-25)
9
9
 
10
- * Update dependency commander to v12 [Self-hosted Renovate Bot]
10
+ * Migrate sbvr-server to typescript [Otavio Jacobi]
11
11
 
12
12
  # v17.1.5
13
13
  ## (2024-06-24)
@@ -1,2 +1,3 @@
1
- export function setup(app: import("express").Application, sbvrUtilsInstance: typeof import("../sbvr-api/sbvr-utils"), db: import("../database-layer/db").Database): import("../sbvr-api/common-types").Resolvable<void>;
2
- export const config: import("../config-loader/config-loader").Config;
1
+ import type { Config, SetupFunction } from '../config-loader/config-loader';
2
+ export declare const setup: SetupFunction;
3
+ export declare const config: Config;
@@ -1,5 +1,30 @@
1
- import * as permissions from '../sbvr-api/permissions';
2
-
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.config = exports.setup = void 0;
27
+ const permissions = __importStar(require("../sbvr-api/permissions"));
3
28
  const uiModel = `\
4
29
  Vocabulary: ui
5
30
 
@@ -16,399 +41,337 @@ Fact type: textarea has name
16
41
  Necessity: Each name is of exactly 1 textarea
17
42
  Fact type: textarea has text
18
43
  Necessity: Each textarea has exactly 1 text`;
19
-
20
- // Middleware
21
44
  const isServerOnAir = (() => {
22
- /** @type { ((thenableOrResult?: import('../sbvr-api/common-types').Resolvable<boolean>) => void) | undefined } */
23
- let resolve;
24
- let promise = new Promise(($resolve) => {
25
- resolve = $resolve;
26
- });
27
- return (/** @type {boolean} */ value) => {
28
- if (value != null) {
29
- if (resolve != null) {
30
- resolve(value);
31
- resolve = undefined;
32
- } else {
33
- promise = Promise.resolve(value);
34
- }
35
- }
36
- return promise;
37
- };
45
+ let resolve;
46
+ let promise = new Promise(($resolve) => {
47
+ resolve = $resolve;
48
+ });
49
+ return (value) => {
50
+ if (value != null) {
51
+ if (resolve != null) {
52
+ resolve(value);
53
+ resolve = undefined;
54
+ }
55
+ else {
56
+ promise = Promise.resolve(value);
57
+ }
58
+ }
59
+ return promise;
60
+ };
38
61
  })();
39
-
40
- /** @type { import('express').Handler } */
41
62
  const serverIsOnAir = async (_req, _res, next) => {
42
- const onAir = await isServerOnAir();
43
- if (onAir) {
44
- next();
45
- } else {
46
- next('route');
47
- }
63
+ const onAir = await isServerOnAir();
64
+ if (onAir) {
65
+ next();
66
+ }
67
+ else {
68
+ next('route');
69
+ }
48
70
  };
49
-
50
- /** @type {import('../config-loader/config-loader').Config} */
51
- export const config = {
52
- models: [
53
- {
54
- modelName: 'ui',
55
- modelText: uiModel,
56
- apiRoot: 'ui',
57
- customServerCode: { setup },
58
- migrations: {
59
- '11.0.0-modified-at': `\
71
+ const setup = async (app, sbvrUtils, db) => {
72
+ const uiApi = sbvrUtils.api.ui;
73
+ const devApi = sbvrUtils.api.dev;
74
+ const setupModels = async (tx) => {
75
+ try {
76
+ const uiApiTx = uiApi.clone({
77
+ passthrough: {
78
+ tx,
79
+ req: permissions.root,
80
+ },
81
+ });
82
+ await uiApiTx
83
+ .get({
84
+ resource: 'textarea',
85
+ id: {
86
+ name: 'model_area',
87
+ },
88
+ options: {
89
+ $select: 'id',
90
+ },
91
+ })
92
+ .then(async (result) => {
93
+ if (result == null) {
94
+ return await uiApiTx.post({
95
+ resource: 'textarea',
96
+ body: {
97
+ name: 'model_area',
98
+ text: ' ',
99
+ },
100
+ });
101
+ }
102
+ });
103
+ await devApi
104
+ .get({
105
+ resource: 'model',
106
+ passthrough: {
107
+ tx,
108
+ req: permissions.rootRead,
109
+ },
110
+ options: {
111
+ $select: ['is_of__vocabulary', 'model_value'],
112
+ $filter: {
113
+ model_type: 'se',
114
+ is_of__vocabulary: 'data',
115
+ },
116
+ },
117
+ })
118
+ .then(async (result) => {
119
+ if (result.length === 0) {
120
+ throw new Error('No SE data model found');
121
+ }
122
+ const instance = result[0];
123
+ const modelValue = instance.model_value;
124
+ await sbvrUtils.executeModel(tx, {
125
+ apiRoot: instance.is_of__vocabulary,
126
+ modelText: modelValue.value,
127
+ });
128
+ });
129
+ await isServerOnAir(true);
130
+ }
131
+ catch {
132
+ await isServerOnAir(false);
133
+ }
134
+ };
135
+ app.get('/onAir', async (_req, res) => {
136
+ const onAir = await isServerOnAir();
137
+ res.json(onAir);
138
+ });
139
+ app.post('/update', permissions.checkPermissionsMiddleware('all'), serverIsOnAir, (_req, res) => {
140
+ res.status(404).end();
141
+ });
142
+ app.post('/execute', permissions.checkPermissionsMiddleware('all'), async (_req, res) => {
143
+ try {
144
+ await uiApi
145
+ .get({
146
+ resource: 'textarea',
147
+ passthrough: { req: permissions.rootRead },
148
+ id: {
149
+ name: 'model_area',
150
+ },
151
+ options: {
152
+ $select: 'text',
153
+ },
154
+ })
155
+ .then(async (result) => {
156
+ if (result == null) {
157
+ throw new Error('Could not find the model to execute');
158
+ }
159
+ const modelText = result.text;
160
+ await db.transaction(async (tx) => {
161
+ await sbvrUtils.executeModel(tx, {
162
+ apiRoot: 'data',
163
+ modelText,
164
+ });
165
+ await uiApi.patch({
166
+ resource: 'textarea',
167
+ passthrough: {
168
+ tx,
169
+ req: permissions.root,
170
+ },
171
+ id: {
172
+ name: 'model_area',
173
+ },
174
+ body: {
175
+ is_disabled: true,
176
+ },
177
+ });
178
+ });
179
+ });
180
+ await isServerOnAir(true);
181
+ res.status(200).end();
182
+ }
183
+ catch (err) {
184
+ await isServerOnAir(false);
185
+ res.status(404).json(err);
186
+ }
187
+ });
188
+ app.post('/validate', permissions.checkPermissionsMiddleware('read'), async (req, res) => {
189
+ try {
190
+ const results = await sbvrUtils.runRule('data', req.body.rule);
191
+ res.json(results);
192
+ }
193
+ catch (err) {
194
+ console.log('Error validating', err);
195
+ res.status(404).end();
196
+ }
197
+ });
198
+ app.delete('/cleardb', permissions.checkPermissionsMiddleware('delete'), async (_req, res) => {
199
+ try {
200
+ await db.transaction(async (tx) => {
201
+ const result = await tx.tableList();
202
+ await Promise.all(result.rows.map((table) => tx.dropTable(table.name)));
203
+ await sbvrUtils.executeStandardModels(tx);
204
+ console.warn('DEL /cleardb is very destructive and should really be followed by a full restart/reload.');
205
+ await sbvrUtils.executeModels(tx, exports.config.models);
206
+ await setupModels(tx);
207
+ });
208
+ res.status(200).end();
209
+ }
210
+ catch (err) {
211
+ console.error('Error clearing db', err);
212
+ res.status(503).end();
213
+ }
214
+ });
215
+ app.put('/importdb', permissions.checkPermissionsMiddleware({
216
+ and: ['create', 'update', 'delete'],
217
+ }), async (req, res) => {
218
+ try {
219
+ const queries = req.body.split(';');
220
+ await db.transaction(async (tx) => {
221
+ for (let query of queries) {
222
+ query = query.trim();
223
+ if (query.length > 0) {
224
+ try {
225
+ await tx.executeSql(query);
226
+ }
227
+ catch (err) {
228
+ throw [query, err];
229
+ }
230
+ }
231
+ }
232
+ });
233
+ res.status(200).end();
234
+ }
235
+ catch (err) {
236
+ console.error('Error importing db', err);
237
+ res.status(404).end();
238
+ }
239
+ });
240
+ app.get('/exportdb', permissions.checkPermissionsMiddleware('read'), async (_req, res) => {
241
+ try {
242
+ let exported = '';
243
+ await db.transaction(async (tx) => {
244
+ const tables = await tx.tableList("name NOT LIKE '%_buk'");
245
+ await Promise.all(tables.rows.map(async (table) => {
246
+ const tableName = table.name;
247
+ exported += 'DROP TABLE IF EXISTS "' + tableName + '";\n';
248
+ exported += table.sql + ';\n';
249
+ const result = await tx.executeSql('SELECT * FROM "' + tableName + '";');
250
+ let insQuery = '';
251
+ for (const currRow of result.rows) {
252
+ let notFirst = false;
253
+ insQuery += 'INSERT INTO "' + tableName + '" (';
254
+ let valQuery = '';
255
+ for (const propName of Object.keys(currRow)) {
256
+ if (notFirst) {
257
+ insQuery += ',';
258
+ valQuery += ',';
259
+ }
260
+ else {
261
+ notFirst = true;
262
+ }
263
+ insQuery += '"' + propName + '"';
264
+ valQuery += "'" + currRow[propName] + "'";
265
+ }
266
+ insQuery += ') values (' + valQuery + ');\n';
267
+ }
268
+ exported += insQuery;
269
+ }));
270
+ });
271
+ res.json(exported);
272
+ }
273
+ catch (err) {
274
+ console.error('Error exporting db', err);
275
+ res.status(503).end();
276
+ }
277
+ });
278
+ app.post('/backupdb', permissions.checkPermissionsMiddleware('all'), serverIsOnAir, async (_req, res) => {
279
+ try {
280
+ await db.transaction(async (tx) => {
281
+ const result = await tx.tableList("name NOT LIKE '%_buk'");
282
+ await Promise.all(result.rows.map(async (currRow) => {
283
+ const tableName = currRow.name;
284
+ await tx.dropTable(tableName + '_buk', true);
285
+ await tx.executeSql('ALTER TABLE "' +
286
+ tableName +
287
+ '" RENAME TO "' +
288
+ tableName +
289
+ '_buk";');
290
+ }));
291
+ });
292
+ res.status(200).end();
293
+ }
294
+ catch (err) {
295
+ console.error('Error backing up db', err);
296
+ res.status(404).end();
297
+ }
298
+ });
299
+ app.post('/restoredb', permissions.checkPermissionsMiddleware('all'), serverIsOnAir, async (_req, res) => {
300
+ try {
301
+ await db.transaction(async (tx) => {
302
+ const result = await tx.tableList("name LIKE '%_buk'");
303
+ await Promise.all(result.rows.map(async (currRow) => {
304
+ const tableName = currRow.name;
305
+ await tx.dropTable(tableName.slice(0, -4), true);
306
+ await tx.executeSql('ALTER TABLE "' +
307
+ tableName +
308
+ '" RENAME TO "' +
309
+ tableName.slice(0, -4) +
310
+ '";');
311
+ }));
312
+ });
313
+ res.status(200).end();
314
+ }
315
+ catch (err) {
316
+ console.error('Error restoring db', err);
317
+ res.status(404).end();
318
+ }
319
+ });
320
+ app.all('/data/*', serverIsOnAir, sbvrUtils.handleODataRequest);
321
+ app.get('/Auth/*', serverIsOnAir, sbvrUtils.handleODataRequest);
322
+ app.merge('/ui/*', sbvrUtils.handleODataRequest);
323
+ app.patch('/ui/*', sbvrUtils.handleODataRequest);
324
+ app.delete('/', serverIsOnAir, async (_req, res) => {
325
+ await Promise.all([
326
+ uiApi.patch({
327
+ resource: 'textarea',
328
+ passthrough: { req: permissions.root },
329
+ id: {
330
+ name: 'model_area',
331
+ },
332
+ body: {
333
+ text: '',
334
+ is_disabled: false,
335
+ },
336
+ }),
337
+ sbvrUtils.deleteModel('data'),
338
+ ]);
339
+ await isServerOnAir(false);
340
+ res.status(200).end();
341
+ });
342
+ await db.transaction(setupModels);
343
+ };
344
+ exports.setup = setup;
345
+ exports.config = {
346
+ models: [
347
+ {
348
+ modelName: 'ui',
349
+ modelText: uiModel,
350
+ apiRoot: 'ui',
351
+ customServerCode: { setup: exports.setup },
352
+ migrations: {
353
+ '11.0.0-modified-at': `\
60
354
  ALTER TABLE "textarea"
61
355
  ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\
62
356
  `,
63
- '15.0.0-data-types': async (tx, sbvrUtils) => {
64
- switch (sbvrUtils.db.engine) {
65
- case 'mysql':
66
- await tx.executeSql(`\
357
+ '15.0.0-data-types': async (tx, sbvrUtils) => {
358
+ switch (sbvrUtils.db.engine) {
359
+ case 'mysql':
360
+ await tx.executeSql(`\
67
361
  ALTER TABLE "textarea"
68
362
  MODIFY "is disabled" BOOLEAN NOT NULL;`);
69
- break;
70
- case 'postgres':
71
- await tx.executeSql(`\
363
+ break;
364
+ case 'postgres':
365
+ await tx.executeSql(`\
72
366
  ALTER TABLE "textarea"
73
367
  ALTER COLUMN "is disabled" DROP DEFAULT,
74
368
  ALTER COLUMN "is disabled" SET DATA TYPE BOOLEAN USING "is disabled"::BOOLEAN,
75
369
  ALTER COLUMN "is disabled" SET DEFAULT FALSE;`);
76
- break;
77
- // No need to migrate for websql
78
- }
79
- },
80
- },
81
- },
82
- ],
370
+ break;
371
+ }
372
+ },
373
+ },
374
+ },
375
+ ],
83
376
  };
84
-
85
- /** @type { import('../config-loader/config-loader').SetupFunction } */
86
- export async function setup(app, sbvrUtils, db) {
87
- const uiApi = sbvrUtils.api.ui;
88
- const devApi = sbvrUtils.api.dev;
89
- const setupModels = async (
90
- /** @type { import('../database-layer/db').Tx } */ tx,
91
- ) => {
92
- try {
93
- const uiApiTx = uiApi.clone({
94
- passthrough: {
95
- tx,
96
- req: permissions.root,
97
- },
98
- });
99
- await uiApiTx
100
- .get({
101
- resource: 'textarea',
102
- id: {
103
- name: 'model_area',
104
- },
105
- options: {
106
- $select: 'id',
107
- },
108
- })
109
- .then(async (/** @type { { [key: string]: any } } */ result) => {
110
- if (result == null) {
111
- // Add a model_area entry if it doesn't already exist.
112
- return await uiApiTx.post({
113
- resource: 'textarea',
114
- body: {
115
- name: 'model_area',
116
- text: ' ',
117
- },
118
- });
119
- }
120
- });
121
- await devApi
122
- .get({
123
- resource: 'model',
124
- passthrough: {
125
- tx,
126
- req: permissions.rootRead,
127
- },
128
- options: {
129
- $select: ['is_of__vocabulary', 'model_value'],
130
- $filter: {
131
- model_type: 'se',
132
- is_of__vocabulary: 'data',
133
- },
134
- },
135
- })
136
- .then(async (result) => {
137
- if (result.length === 0) {
138
- throw new Error('No SE data model found');
139
- }
140
- const instance = result[0];
141
- await sbvrUtils.executeModel(tx, {
142
- apiRoot: instance.is_of__vocabulary,
143
- // prettier-ignore
144
- modelText: /** @type { string } */ (instance.model_value.value),
145
- });
146
- });
147
- await isServerOnAir(true);
148
- } catch {
149
- await isServerOnAir(false);
150
- }
151
- };
152
-
153
- app.get('/onAir', async (_req, res) => {
154
- const onAir = await isServerOnAir();
155
- res.json(onAir);
156
- });
157
-
158
- app.post(
159
- '/update',
160
- permissions.checkPermissionsMiddleware('all'),
161
- serverIsOnAir,
162
- (_req, res) => {
163
- res.status(404).end();
164
- },
165
- );
166
-
167
- app.post(
168
- '/execute',
169
- permissions.checkPermissionsMiddleware('all'),
170
- async (_req, res) => {
171
- try {
172
- await uiApi
173
- .get({
174
- resource: 'textarea',
175
- passthrough: { req: permissions.rootRead },
176
- id: {
177
- name: 'model_area',
178
- },
179
- options: {
180
- $select: 'text',
181
- },
182
- })
183
- .then(async (/** @type { { [key: string]: any } } */ result) => {
184
- if (result == null) {
185
- throw new Error('Could not find the model to execute');
186
- }
187
- const modelText = result.text;
188
- await db.transaction(async (tx) => {
189
- await sbvrUtils.executeModel(tx, {
190
- apiRoot: 'data',
191
- modelText,
192
- });
193
- await uiApi.patch({
194
- resource: 'textarea',
195
- passthrough: {
196
- tx,
197
- req: permissions.root,
198
- },
199
- id: {
200
- name: 'model_area',
201
- },
202
- body: {
203
- is_disabled: true,
204
- },
205
- });
206
- });
207
- });
208
- await isServerOnAir(true);
209
- res.status(200).end();
210
- } catch (err) {
211
- await isServerOnAir(false);
212
- res.status(404).json(err);
213
- }
214
- },
215
- );
216
- app.post(
217
- '/validate',
218
- permissions.checkPermissionsMiddleware('read'),
219
- async (req, res) => {
220
- try {
221
- const results = await sbvrUtils.runRule('data', req.body.rule);
222
- res.json(results);
223
- } catch (err) {
224
- console.log('Error validating', err);
225
- res.status(404).end();
226
- }
227
- },
228
- );
229
- app.delete(
230
- '/cleardb',
231
- permissions.checkPermissionsMiddleware('delete'),
232
- async (_req, res) => {
233
- try {
234
- await db.transaction(async (tx) => {
235
- const result = await tx.tableList();
236
-
237
- await Promise.all(
238
- result.rows.map((table) => tx.dropTable(table.name)),
239
- );
240
- await sbvrUtils.executeStandardModels(tx);
241
- // TODO: HACK: This is usually done by config-loader and should be done there
242
- // In general cleardb is very destructive and should really go through a full "reboot" procedure to set everything up again.
243
- console.warn(
244
- 'DEL /cleardb is very destructive and should really be followed by a full restart/reload.',
245
- );
246
- await sbvrUtils.executeModels(tx, exports.config.models);
247
- await setupModels(tx);
248
- });
249
- res.status(200).end();
250
- } catch (/** @type any */ err) {
251
- console.error('Error clearing db', err);
252
- res.status(503).end();
253
- }
254
- },
255
- );
256
- app.put(
257
- '/importdb',
258
- permissions.checkPermissionsMiddleware({
259
- and: ['create', 'update', 'delete'],
260
- }),
261
- async (req, res) => {
262
- try {
263
- const queries = req.body.split(';');
264
- await db.transaction(async (tx) => {
265
- for (let query of queries) {
266
- query = query.trim();
267
- if (query.length > 0) {
268
- try {
269
- await tx.executeSql(query);
270
- } catch (err) {
271
- // TODO: Consider changing this to a custom Error
272
- // eslint-disable-next-line no-throw-literal
273
- throw [query, err];
274
- }
275
- }
276
- }
277
- });
278
- res.status(200).end();
279
- } catch (/** @type any */ err) {
280
- console.error('Error importing db', err);
281
- res.status(404).end();
282
- }
283
- },
284
- );
285
- app.get(
286
- '/exportdb',
287
- permissions.checkPermissionsMiddleware('read'),
288
- async (_req, res) => {
289
- try {
290
- let exported = '';
291
- await db.transaction(async (tx) => {
292
- const tables = await tx.tableList("name NOT LIKE '%_buk'");
293
- await Promise.all(
294
- tables.rows.map(async (table) => {
295
- const tableName = table.name;
296
- exported += 'DROP TABLE IF EXISTS "' + tableName + '";\n';
297
- exported += table.sql + ';\n';
298
- const result = await tx.executeSql(
299
- 'SELECT * FROM "' + tableName + '";',
300
- );
301
- let insQuery = '';
302
- for (const currRow of result.rows) {
303
- let notFirst = false;
304
- insQuery += 'INSERT INTO "' + tableName + '" (';
305
- let valQuery = '';
306
- for (const propName of Object.keys(currRow)) {
307
- if (notFirst) {
308
- insQuery += ',';
309
- valQuery += ',';
310
- } else {
311
- notFirst = true;
312
- }
313
- insQuery += '"' + propName + '"';
314
- valQuery += "'" + currRow[propName] + "'";
315
- }
316
- insQuery += ') values (' + valQuery + ');\n';
317
- }
318
- exported += insQuery;
319
- }),
320
- );
321
- });
322
- res.json(exported);
323
- } catch (/** @type any */ err) {
324
- console.error('Error exporting db', err);
325
- res.status(503).end();
326
- }
327
- },
328
- );
329
- app.post(
330
- '/backupdb',
331
- permissions.checkPermissionsMiddleware('all'),
332
- serverIsOnAir,
333
- async (_req, res) => {
334
- try {
335
- await db.transaction(async (tx) => {
336
- const result = await tx.tableList("name NOT LIKE '%_buk'");
337
- await Promise.all(
338
- result.rows.map(async (currRow) => {
339
- const tableName = currRow.name;
340
- await tx.dropTable(tableName + '_buk', true);
341
-
342
- await tx.executeSql(
343
- 'ALTER TABLE "' +
344
- tableName +
345
- '" RENAME TO "' +
346
- tableName +
347
- '_buk";',
348
- );
349
- }),
350
- );
351
- });
352
- res.status(200).end();
353
- } catch (/** @type any */ err) {
354
- console.error('Error backing up db', err);
355
- res.status(404).end();
356
- }
357
- },
358
- );
359
- app.post(
360
- '/restoredb',
361
- permissions.checkPermissionsMiddleware('all'),
362
- serverIsOnAir,
363
- async (_req, res) => {
364
- try {
365
- await db.transaction(async (tx) => {
366
- const result = await tx.tableList("name LIKE '%_buk'");
367
- await Promise.all(
368
- result.rows.map(async (currRow) => {
369
- const tableName = currRow.name;
370
- await tx.dropTable(tableName.slice(0, -4), true);
371
- await tx.executeSql(
372
- 'ALTER TABLE "' +
373
- tableName +
374
- '" RENAME TO "' +
375
- tableName.slice(0, -4) +
376
- '";',
377
- );
378
- }),
379
- );
380
- });
381
- res.status(200).end();
382
- } catch (/** @type any */ err) {
383
- console.error('Error restoring db', err);
384
- res.status(404).end();
385
- }
386
- },
387
- );
388
-
389
- app.all('/data/*', serverIsOnAir, sbvrUtils.handleODataRequest);
390
- app.get('/Auth/*', serverIsOnAir, sbvrUtils.handleODataRequest);
391
- app.merge('/ui/*', sbvrUtils.handleODataRequest);
392
- app.patch('/ui/*', sbvrUtils.handleODataRequest);
393
-
394
- app.delete('/', serverIsOnAir, async (_req, res) => {
395
- await Promise.all([
396
- uiApi.patch({
397
- resource: 'textarea',
398
- passthrough: { req: permissions.root },
399
- id: {
400
- name: 'model_area',
401
- },
402
- body: {
403
- text: '',
404
- is_disabled: false,
405
- },
406
- }),
407
- sbvrUtils.deleteModel('data'),
408
- ]);
409
- await isServerOnAir(false);
410
- res.status(200).end();
411
- });
412
-
413
- await db.transaction(setupModels);
414
- }
377
+ //# sourceMappingURL=sbvr-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sbvr-server.js","sourceRoot":"","sources":["../../src/data-server/sbvr-server.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sbvr-server.js","sourceRoot":"","sources":["../../src/data-server/sbvr-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balena/pinejs",
3
- "version": "17.1.6-build-renovate-major-12-commander-2fc655ed065961925d3b3146ab83dba470134a36-1",
3
+ "version": "17.1.6-build-migraates-sbvr-server-to-ts-ed2267c4b4cbe448b6062263b90a97492176663c-2",
4
4
  "main": "out/server-glue/module",
5
5
  "type": "commonjs",
6
6
  "repository": "git@github.com:balena-io/pinejs.git",
@@ -54,7 +54,7 @@
54
54
  "@types/randomstring": "^1.3.0",
55
55
  "@types/websql": "^0.0.30",
56
56
  "busboy": "^1.6.0",
57
- "commander": "^12.0.0",
57
+ "commander": "^11.1.0",
58
58
  "deep-freeze": "^0.0.1",
59
59
  "eventemitter3": "^5.0.1",
60
60
  "express-session": "^1.18.0",
@@ -146,6 +146,6 @@
146
146
  "recursive": true
147
147
  },
148
148
  "versionist": {
149
- "publishedAt": "2024-06-24T13:58:19.661Z"
149
+ "publishedAt": "2024-06-25T22:13:55.001Z"
150
150
  }
151
151
  }
@@ -1,4 +1,8 @@
1
1
  import * as permissions from '../sbvr-api/permissions';
2
+ import type { Resolvable } from '../sbvr-api/common-types';
3
+ import type { Handler } from 'express';
4
+ import type { Config, SetupFunction } from '../config-loader/config-loader';
5
+ import type { Tx } from '../database-layer/db';
2
6
 
3
7
  const uiModel = `\
4
8
  Vocabulary: ui
@@ -19,12 +23,11 @@ Fact type: textarea has text
19
23
 
20
24
  // Middleware
21
25
  const isServerOnAir = (() => {
22
- /** @type { ((thenableOrResult?: import('../sbvr-api/common-types').Resolvable<boolean>) => void) | undefined } */
23
- let resolve;
24
- let promise = new Promise(($resolve) => {
26
+ let resolve: ((thenableOrResult?: Resolvable<boolean>) => void) | undefined;
27
+ let promise = new Promise<boolean>(($resolve) => {
25
28
  resolve = $resolve;
26
29
  });
27
- return (/** @type {boolean} */ value) => {
30
+ return (value?: boolean) => {
28
31
  if (value != null) {
29
32
  if (resolve != null) {
30
33
  resolve(value);
@@ -37,8 +40,7 @@ const isServerOnAir = (() => {
37
40
  };
38
41
  })();
39
42
 
40
- /** @type { import('express').Handler } */
41
- const serverIsOnAir = async (_req, _res, next) => {
43
+ const serverIsOnAir: Handler = async (_req, _res, next) => {
42
44
  const onAir = await isServerOnAir();
43
45
  if (onAir) {
44
46
  next();
@@ -47,48 +49,10 @@ const serverIsOnAir = async (_req, _res, next) => {
47
49
  }
48
50
  };
49
51
 
50
- /** @type {import('../config-loader/config-loader').Config} */
51
- export const config = {
52
- models: [
53
- {
54
- modelName: 'ui',
55
- modelText: uiModel,
56
- apiRoot: 'ui',
57
- customServerCode: { setup },
58
- migrations: {
59
- '11.0.0-modified-at': `\
60
- ALTER TABLE "textarea"
61
- ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\
62
- `,
63
- '15.0.0-data-types': async (tx, sbvrUtils) => {
64
- switch (sbvrUtils.db.engine) {
65
- case 'mysql':
66
- await tx.executeSql(`\
67
- ALTER TABLE "textarea"
68
- MODIFY "is disabled" BOOLEAN NOT NULL;`);
69
- break;
70
- case 'postgres':
71
- await tx.executeSql(`\
72
- ALTER TABLE "textarea"
73
- ALTER COLUMN "is disabled" DROP DEFAULT,
74
- ALTER COLUMN "is disabled" SET DATA TYPE BOOLEAN USING "is disabled"::BOOLEAN,
75
- ALTER COLUMN "is disabled" SET DEFAULT FALSE;`);
76
- break;
77
- // No need to migrate for websql
78
- }
79
- },
80
- },
81
- },
82
- ],
83
- };
84
-
85
- /** @type { import('../config-loader/config-loader').SetupFunction } */
86
- export async function setup(app, sbvrUtils, db) {
52
+ export const setup: SetupFunction = async (app, sbvrUtils, db) => {
87
53
  const uiApi = sbvrUtils.api.ui;
88
54
  const devApi = sbvrUtils.api.dev;
89
- const setupModels = async (
90
- /** @type { import('../database-layer/db').Tx } */ tx,
91
- ) => {
55
+ const setupModels = async (tx: Tx) => {
92
56
  try {
93
57
  const uiApiTx = uiApi.clone({
94
58
  passthrough: {
@@ -138,10 +102,10 @@ export async function setup(app, sbvrUtils, db) {
138
102
  throw new Error('No SE data model found');
139
103
  }
140
104
  const instance = result[0];
105
+ const modelValue = instance.model_value as { [key: string]: string };
141
106
  await sbvrUtils.executeModel(tx, {
142
107
  apiRoot: instance.is_of__vocabulary,
143
- // prettier-ignore
144
- modelText: /** @type { string } */ (instance.model_value.value),
108
+ modelText: modelValue.value,
145
109
  });
146
110
  });
147
111
  await isServerOnAir(true);
@@ -411,4 +375,38 @@ export async function setup(app, sbvrUtils, db) {
411
375
  });
412
376
 
413
377
  await db.transaction(setupModels);
414
- }
378
+ };
379
+
380
+ export const config: Config = {
381
+ models: [
382
+ {
383
+ modelName: 'ui',
384
+ modelText: uiModel,
385
+ apiRoot: 'ui',
386
+ customServerCode: { setup },
387
+ migrations: {
388
+ '11.0.0-modified-at': `\
389
+ ALTER TABLE "textarea"
390
+ ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\
391
+ `,
392
+ '15.0.0-data-types': async (tx, sbvrUtils) => {
393
+ switch (sbvrUtils.db.engine) {
394
+ case 'mysql':
395
+ await tx.executeSql(`\
396
+ ALTER TABLE "textarea"
397
+ MODIFY "is disabled" BOOLEAN NOT NULL;`);
398
+ break;
399
+ case 'postgres':
400
+ await tx.executeSql(`\
401
+ ALTER TABLE "textarea"
402
+ ALTER COLUMN "is disabled" DROP DEFAULT,
403
+ ALTER COLUMN "is disabled" SET DATA TYPE BOOLEAN USING "is disabled"::BOOLEAN,
404
+ ALTER COLUMN "is disabled" SET DEFAULT FALSE;`);
405
+ break;
406
+ // No need to migrate for websql
407
+ }
408
+ },
409
+ },
410
+ },
411
+ ],
412
+ };
@@ -1,4 +1,4 @@
1
- // These types were generated by @balena/abstract-sql-to-typescript v3.2.1
1
+ // These types were generated by @balena/abstract-sql-to-typescript v3.2.3
2
2
 
3
3
  import type { Types } from '@balena/abstract-sql-to-typescript';
4
4
 
@@ -1,4 +1,4 @@
1
- // These types were generated by @balena/abstract-sql-to-typescript v3.2.1
1
+ // These types were generated by @balena/abstract-sql-to-typescript v3.2.3
2
2
 
3
3
  import type { Types } from '@balena/abstract-sql-to-typescript';
4
4
 
@@ -1,4 +1,4 @@
1
- // These types were generated by @balena/abstract-sql-to-typescript v3.2.1
1
+ // These types were generated by @balena/abstract-sql-to-typescript v3.2.3
2
2
 
3
3
  import type { Types } from '@balena/abstract-sql-to-typescript';
4
4