@balena/pinejs 17.1.6-build-renovate-major-12-commander-2fc655ed065961925d3b3146ab83dba470134a36-1 → 17.1.6-build-migraates-sbvr-server-to-ts-ed2267c4b4cbe448b6062263b90a97492176663c-2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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