@balena/pinejs 17.1.0-build-joshbwlng-tasks-e8a81b1d884e0039e67661a25a5cb81d46966640-1 → 17.1.0-build-model-based-typings-86a981c89f828217571c93fa010174529a5345f9-1
Sign up to get free protection for your applications and to get access to all the features.
- package/.pinejs-cache.json +1 -1
- package/.versionbot/CHANGELOG.yml +220 -7
- package/CHANGELOG.md +65 -2
- package/out/config-loader/env.d.ts +0 -4
- package/out/config-loader/env.js +1 -5
- package/out/config-loader/env.js.map +1 -1
- package/out/data-server/sbvr-server.js +3 -2
- package/out/data-server/sbvr-server.js.map +1 -1
- package/out/database-layer/db.d.ts +0 -3
- package/out/database-layer/db.js +0 -17
- package/out/database-layer/db.js.map +1 -1
- package/out/migrator/migrations.d.ts +113 -0
- package/out/migrator/migrations.js +3 -0
- package/out/migrator/migrations.js.map +1 -0
- package/out/migrator/sync.d.ts +17 -0
- package/out/migrator/sync.js +39 -40
- package/out/migrator/sync.js.map +1 -1
- package/out/sbvr-api/dev.d.ts +41 -0
- package/out/sbvr-api/dev.js +3 -0
- package/out/sbvr-api/dev.js.map +1 -0
- package/out/sbvr-api/hooks.d.ts +26 -26
- package/out/sbvr-api/hooks.js.map +1 -1
- package/out/sbvr-api/permissions.d.ts +26 -2
- package/out/sbvr-api/permissions.js +39 -40
- package/out/sbvr-api/permissions.js.map +1 -1
- package/out/sbvr-api/sbvr-utils.d.ts +46 -6
- package/out/sbvr-api/sbvr-utils.js +44 -44
- package/out/sbvr-api/sbvr-utils.js.map +1 -1
- package/out/sbvr-api/user.d.ts +467 -0
- package/out/sbvr-api/user.js +3 -0
- package/out/sbvr-api/user.js.map +1 -0
- package/out/server-glue/module.d.ts +0 -1
- package/out/server-glue/module.js +1 -4
- package/out/server-glue/module.js.map +1 -1
- package/package.json +18 -19
- package/src/config-loader/env.ts +1 -6
- package/src/data-server/sbvr-server.js +3 -2
- package/src/database-layer/db.ts +0 -25
- package/src/migrator/migrations.ts +120 -0
- package/src/migrator/sync.ts +46 -41
- package/src/sbvr-api/dev.ts +44 -0
- package/src/sbvr-api/hooks.ts +21 -18
- package/src/sbvr-api/permissions.ts +50 -44
- package/src/sbvr-api/sbvr-utils.ts +90 -53
- package/src/sbvr-api/user.ts +421 -0
- package/src/server-glue/module.ts +0 -3
- package/out/tasks/common.d.ts +0 -4
- package/out/tasks/common.js +0 -13
- package/out/tasks/common.js.map +0 -1
- package/out/tasks/index.d.ts +0 -8
- package/out/tasks/index.js +0 -142
- package/out/tasks/index.js.map +0 -1
- package/out/tasks/tasks.sbvr +0 -60
- package/out/tasks/types.d.ts +0 -38
- package/out/tasks/types.js +0 -10
- package/out/tasks/types.js.map +0 -1
- package/out/tasks/worker.d.ts +0 -16
- package/out/tasks/worker.js +0 -228
- package/out/tasks/worker.js.map +0 -1
- package/src/tasks/common.ts +0 -14
- package/src/tasks/index.ts +0 -158
- package/src/tasks/tasks.sbvr +0 -60
- package/src/tasks/types.ts +0 -58
- package/src/tasks/worker.ts +0 -281
@@ -0,0 +1,467 @@
|
|
1
|
+
import type { Types } from '@balena/abstract-sql-to-typescript';
|
2
|
+
export interface Permission {
|
3
|
+
Read: {
|
4
|
+
created_at: Types['Date Time']['Read'];
|
5
|
+
modified_at: Types['Date Time']['Read'];
|
6
|
+
id: Types['Serial']['Read'];
|
7
|
+
name: Types['Text']['Read'];
|
8
|
+
is_of__role?: Array<RoleHasPermission['Read']>;
|
9
|
+
is_of__user?: Array<UserHasPermission['Read']>;
|
10
|
+
is_of__api_key?: Array<ApiKeyHasPermission['Read']>;
|
11
|
+
user__has__permission?: Array<UserHasPermission['Read']>;
|
12
|
+
user_permission?: Array<UserHasPermission['Read']>;
|
13
|
+
};
|
14
|
+
Write: {
|
15
|
+
created_at: Types['Date Time']['Write'];
|
16
|
+
modified_at: Types['Date Time']['Write'];
|
17
|
+
id: Types['Serial']['Write'];
|
18
|
+
name: Types['Text']['Write'];
|
19
|
+
};
|
20
|
+
}
|
21
|
+
export interface Role {
|
22
|
+
Read: {
|
23
|
+
created_at: Types['Date Time']['Read'];
|
24
|
+
modified_at: Types['Date Time']['Read'];
|
25
|
+
id: Types['Serial']['Read'];
|
26
|
+
name: Types['Text']['Read'];
|
27
|
+
role__has__permission?: Array<RoleHasPermission['Read']>;
|
28
|
+
user__has__role?: Array<UserHasRole['Read']>;
|
29
|
+
user_role?: Array<UserHasRole['Read']>;
|
30
|
+
is_of__user?: Array<UserHasRole['Read']>;
|
31
|
+
is_of__api_key?: Array<ApiKeyHasRole['Read']>;
|
32
|
+
};
|
33
|
+
Write: {
|
34
|
+
created_at: Types['Date Time']['Write'];
|
35
|
+
modified_at: Types['Date Time']['Write'];
|
36
|
+
id: Types['Serial']['Write'];
|
37
|
+
name: Types['Text']['Write'];
|
38
|
+
};
|
39
|
+
}
|
40
|
+
export interface RoleHasPermission {
|
41
|
+
Read: {
|
42
|
+
created_at: Types['Date Time']['Read'];
|
43
|
+
modified_at: Types['Date Time']['Read'];
|
44
|
+
role: {
|
45
|
+
__id: Role['Read']['id'];
|
46
|
+
} | [Role['Read']];
|
47
|
+
permission: {
|
48
|
+
__id: Permission['Read']['id'];
|
49
|
+
} | [Permission['Read']];
|
50
|
+
id: Types['Serial']['Read'];
|
51
|
+
is_of__role: {
|
52
|
+
__id: Role['Read']['id'];
|
53
|
+
} | [Role['Read']];
|
54
|
+
};
|
55
|
+
Write: {
|
56
|
+
created_at: Types['Date Time']['Write'];
|
57
|
+
modified_at: Types['Date Time']['Write'];
|
58
|
+
role: Role['Write']['id'];
|
59
|
+
permission: Permission['Write']['id'];
|
60
|
+
id: Types['Serial']['Write'];
|
61
|
+
};
|
62
|
+
}
|
63
|
+
export interface Actor {
|
64
|
+
Read: {
|
65
|
+
created_at: Types['Date Time']['Read'];
|
66
|
+
modified_at: Types['Date Time']['Read'];
|
67
|
+
id: Types['Serial']['Read'];
|
68
|
+
is_of__user?: Array<User['Read']>;
|
69
|
+
api_key?: Array<ApiKey['Read']>;
|
70
|
+
};
|
71
|
+
Write: {
|
72
|
+
created_at: Types['Date Time']['Write'];
|
73
|
+
modified_at: Types['Date Time']['Write'];
|
74
|
+
id: Types['Serial']['Write'];
|
75
|
+
};
|
76
|
+
}
|
77
|
+
export interface User {
|
78
|
+
Read: {
|
79
|
+
created_at: Types['Date Time']['Read'];
|
80
|
+
modified_at: Types['Date Time']['Read'];
|
81
|
+
id: Types['Serial']['Read'];
|
82
|
+
actor: {
|
83
|
+
__id: Actor['Read']['id'];
|
84
|
+
} | [Actor['Read']];
|
85
|
+
username: Types['Short Text']['Read'];
|
86
|
+
password: Types['Hashed']['Read'];
|
87
|
+
user__has__role?: Array<UserHasRole['Read']>;
|
88
|
+
user_role?: Array<UserHasRole['Read']>;
|
89
|
+
user__has__permission?: Array<UserHasPermission['Read']>;
|
90
|
+
user_permission?: Array<UserHasPermission['Read']>;
|
91
|
+
};
|
92
|
+
Write: {
|
93
|
+
created_at: Types['Date Time']['Write'];
|
94
|
+
modified_at: Types['Date Time']['Write'];
|
95
|
+
id: Types['Serial']['Write'];
|
96
|
+
actor: Actor['Write']['id'];
|
97
|
+
username: Types['Short Text']['Write'];
|
98
|
+
password: Types['Hashed']['Write'];
|
99
|
+
};
|
100
|
+
}
|
101
|
+
export interface UserHasRole {
|
102
|
+
Read: {
|
103
|
+
created_at: Types['Date Time']['Read'];
|
104
|
+
modified_at: Types['Date Time']['Read'];
|
105
|
+
user: {
|
106
|
+
__id: User['Read']['id'];
|
107
|
+
} | [User['Read']];
|
108
|
+
role: {
|
109
|
+
__id: Role['Read']['id'];
|
110
|
+
} | [Role['Read']];
|
111
|
+
id: Types['Serial']['Read'];
|
112
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
113
|
+
is_of__user: {
|
114
|
+
__id: User['Read']['id'];
|
115
|
+
} | [User['Read']];
|
116
|
+
};
|
117
|
+
Write: {
|
118
|
+
created_at: Types['Date Time']['Write'];
|
119
|
+
modified_at: Types['Date Time']['Write'];
|
120
|
+
user: User['Write']['id'];
|
121
|
+
role: Role['Write']['id'];
|
122
|
+
id: Types['Serial']['Write'];
|
123
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
124
|
+
};
|
125
|
+
}
|
126
|
+
export interface UserHasPermission {
|
127
|
+
Read: {
|
128
|
+
created_at: Types['Date Time']['Read'];
|
129
|
+
modified_at: Types['Date Time']['Read'];
|
130
|
+
user: {
|
131
|
+
__id: User['Read']['id'];
|
132
|
+
} | [User['Read']];
|
133
|
+
permission: {
|
134
|
+
__id: Permission['Read']['id'];
|
135
|
+
} | [Permission['Read']];
|
136
|
+
id: Types['Serial']['Read'];
|
137
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
138
|
+
is_of__user: {
|
139
|
+
__id: User['Read']['id'];
|
140
|
+
} | [User['Read']];
|
141
|
+
};
|
142
|
+
Write: {
|
143
|
+
created_at: Types['Date Time']['Write'];
|
144
|
+
modified_at: Types['Date Time']['Write'];
|
145
|
+
user: User['Write']['id'];
|
146
|
+
permission: Permission['Write']['id'];
|
147
|
+
id: Types['Serial']['Write'];
|
148
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
149
|
+
};
|
150
|
+
}
|
151
|
+
export interface ApiKey {
|
152
|
+
Read: {
|
153
|
+
created_at: Types['Date Time']['Read'];
|
154
|
+
modified_at: Types['Date Time']['Read'];
|
155
|
+
id: Types['Serial']['Read'];
|
156
|
+
key: Types['Short Text']['Read'];
|
157
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
158
|
+
is_of__actor: {
|
159
|
+
__id: Actor['Read']['id'];
|
160
|
+
} | [Actor['Read']];
|
161
|
+
name: Types['Text']['Read'] | null;
|
162
|
+
description: Types['Text']['Read'] | null;
|
163
|
+
api_key__has__role?: Array<ApiKeyHasRole['Read']>;
|
164
|
+
api_key__has__permission?: Array<ApiKeyHasPermission['Read']>;
|
165
|
+
};
|
166
|
+
Write: {
|
167
|
+
created_at: Types['Date Time']['Write'];
|
168
|
+
modified_at: Types['Date Time']['Write'];
|
169
|
+
id: Types['Serial']['Write'];
|
170
|
+
key: Types['Short Text']['Write'];
|
171
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
172
|
+
is_of__actor: Actor['Write']['id'];
|
173
|
+
name: Types['Text']['Write'] | null;
|
174
|
+
description: Types['Text']['Write'] | null;
|
175
|
+
};
|
176
|
+
}
|
177
|
+
export interface ApiKeyHasRole {
|
178
|
+
Read: {
|
179
|
+
created_at: Types['Date Time']['Read'];
|
180
|
+
modified_at: Types['Date Time']['Read'];
|
181
|
+
api_key: {
|
182
|
+
__id: ApiKey['Read']['id'];
|
183
|
+
} | [ApiKey['Read']];
|
184
|
+
role: {
|
185
|
+
__id: Role['Read']['id'];
|
186
|
+
} | [Role['Read']];
|
187
|
+
id: Types['Serial']['Read'];
|
188
|
+
is_of__api_key: {
|
189
|
+
__id: ApiKey['Read']['id'];
|
190
|
+
} | [ApiKey['Read']];
|
191
|
+
};
|
192
|
+
Write: {
|
193
|
+
created_at: Types['Date Time']['Write'];
|
194
|
+
modified_at: Types['Date Time']['Write'];
|
195
|
+
api_key: ApiKey['Write']['id'];
|
196
|
+
role: Role['Write']['id'];
|
197
|
+
id: Types['Serial']['Write'];
|
198
|
+
};
|
199
|
+
}
|
200
|
+
export interface ApiKeyHasPermission {
|
201
|
+
Read: {
|
202
|
+
created_at: Types['Date Time']['Read'];
|
203
|
+
modified_at: Types['Date Time']['Read'];
|
204
|
+
api_key: {
|
205
|
+
__id: ApiKey['Read']['id'];
|
206
|
+
} | [ApiKey['Read']];
|
207
|
+
permission: {
|
208
|
+
__id: Permission['Read']['id'];
|
209
|
+
} | [Permission['Read']];
|
210
|
+
id: Types['Serial']['Read'];
|
211
|
+
is_of__api_key: {
|
212
|
+
__id: ApiKey['Read']['id'];
|
213
|
+
} | [ApiKey['Read']];
|
214
|
+
};
|
215
|
+
Write: {
|
216
|
+
created_at: Types['Date Time']['Write'];
|
217
|
+
modified_at: Types['Date Time']['Write'];
|
218
|
+
api_key: ApiKey['Write']['id'];
|
219
|
+
permission: Permission['Write']['id'];
|
220
|
+
id: Types['Serial']['Write'];
|
221
|
+
};
|
222
|
+
}
|
223
|
+
export interface Permission {
|
224
|
+
Read: {
|
225
|
+
created_at: Types['Date Time']['Read'];
|
226
|
+
modified_at: Types['Date Time']['Read'];
|
227
|
+
id: Types['Serial']['Read'];
|
228
|
+
name: Types['Text']['Read'];
|
229
|
+
is_of__role?: Array<RoleHasPermission['Read']>;
|
230
|
+
is_of__user?: Array<UserHasPermission['Read']>;
|
231
|
+
is_of__api_key?: Array<ApiKeyHasPermission['Read']>;
|
232
|
+
user__has__permission?: Array<UserHasPermission['Read']>;
|
233
|
+
user_permission?: Array<UserHasPermission['Read']>;
|
234
|
+
};
|
235
|
+
Write: {
|
236
|
+
created_at: Types['Date Time']['Write'];
|
237
|
+
modified_at: Types['Date Time']['Write'];
|
238
|
+
id: Types['Serial']['Write'];
|
239
|
+
name: Types['Text']['Write'];
|
240
|
+
};
|
241
|
+
}
|
242
|
+
export interface Role {
|
243
|
+
Read: {
|
244
|
+
created_at: Types['Date Time']['Read'];
|
245
|
+
modified_at: Types['Date Time']['Read'];
|
246
|
+
id: Types['Serial']['Read'];
|
247
|
+
name: Types['Text']['Read'];
|
248
|
+
role__has__permission?: Array<RoleHasPermission['Read']>;
|
249
|
+
user__has__role?: Array<UserHasRole['Read']>;
|
250
|
+
user_role?: Array<UserHasRole['Read']>;
|
251
|
+
is_of__user?: Array<UserHasRole['Read']>;
|
252
|
+
is_of__api_key?: Array<ApiKeyHasRole['Read']>;
|
253
|
+
};
|
254
|
+
Write: {
|
255
|
+
created_at: Types['Date Time']['Write'];
|
256
|
+
modified_at: Types['Date Time']['Write'];
|
257
|
+
id: Types['Serial']['Write'];
|
258
|
+
name: Types['Text']['Write'];
|
259
|
+
};
|
260
|
+
}
|
261
|
+
export interface RoleHasPermission {
|
262
|
+
Read: {
|
263
|
+
created_at: Types['Date Time']['Read'];
|
264
|
+
modified_at: Types['Date Time']['Read'];
|
265
|
+
role: {
|
266
|
+
__id: Role['Read']['id'];
|
267
|
+
} | [Role['Read']];
|
268
|
+
permission: {
|
269
|
+
__id: Permission['Read']['id'];
|
270
|
+
} | [Permission['Read']];
|
271
|
+
id: Types['Serial']['Read'];
|
272
|
+
is_of__role: {
|
273
|
+
__id: Role['Read']['id'];
|
274
|
+
} | [Role['Read']];
|
275
|
+
};
|
276
|
+
Write: {
|
277
|
+
created_at: Types['Date Time']['Write'];
|
278
|
+
modified_at: Types['Date Time']['Write'];
|
279
|
+
role: Role['Write']['id'];
|
280
|
+
permission: Permission['Write']['id'];
|
281
|
+
id: Types['Serial']['Write'];
|
282
|
+
};
|
283
|
+
}
|
284
|
+
export interface Actor {
|
285
|
+
Read: {
|
286
|
+
created_at: Types['Date Time']['Read'];
|
287
|
+
modified_at: Types['Date Time']['Read'];
|
288
|
+
id: Types['Serial']['Read'];
|
289
|
+
is_of__user?: Array<User['Read']>;
|
290
|
+
api_key?: Array<ApiKey['Read']>;
|
291
|
+
};
|
292
|
+
Write: {
|
293
|
+
created_at: Types['Date Time']['Write'];
|
294
|
+
modified_at: Types['Date Time']['Write'];
|
295
|
+
id: Types['Serial']['Write'];
|
296
|
+
};
|
297
|
+
}
|
298
|
+
export interface User {
|
299
|
+
Read: {
|
300
|
+
created_at: Types['Date Time']['Read'];
|
301
|
+
modified_at: Types['Date Time']['Read'];
|
302
|
+
id: Types['Serial']['Read'];
|
303
|
+
actor: {
|
304
|
+
__id: Actor['Read']['id'];
|
305
|
+
} | [Actor['Read']];
|
306
|
+
username: Types['Short Text']['Read'];
|
307
|
+
password: Types['Hashed']['Read'];
|
308
|
+
user__has__role?: Array<UserHasRole['Read']>;
|
309
|
+
user_role?: Array<UserHasRole['Read']>;
|
310
|
+
user__has__permission?: Array<UserHasPermission['Read']>;
|
311
|
+
user_permission?: Array<UserHasPermission['Read']>;
|
312
|
+
};
|
313
|
+
Write: {
|
314
|
+
created_at: Types['Date Time']['Write'];
|
315
|
+
modified_at: Types['Date Time']['Write'];
|
316
|
+
id: Types['Serial']['Write'];
|
317
|
+
actor: Actor['Write']['id'];
|
318
|
+
username: Types['Short Text']['Write'];
|
319
|
+
password: Types['Hashed']['Write'];
|
320
|
+
};
|
321
|
+
}
|
322
|
+
export interface UserHasRole {
|
323
|
+
Read: {
|
324
|
+
created_at: Types['Date Time']['Read'];
|
325
|
+
modified_at: Types['Date Time']['Read'];
|
326
|
+
user: {
|
327
|
+
__id: User['Read']['id'];
|
328
|
+
} | [User['Read']];
|
329
|
+
role: {
|
330
|
+
__id: Role['Read']['id'];
|
331
|
+
} | [Role['Read']];
|
332
|
+
id: Types['Serial']['Read'];
|
333
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
334
|
+
is_of__user: {
|
335
|
+
__id: User['Read']['id'];
|
336
|
+
} | [User['Read']];
|
337
|
+
};
|
338
|
+
Write: {
|
339
|
+
created_at: Types['Date Time']['Write'];
|
340
|
+
modified_at: Types['Date Time']['Write'];
|
341
|
+
user: User['Write']['id'];
|
342
|
+
role: Role['Write']['id'];
|
343
|
+
id: Types['Serial']['Write'];
|
344
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
345
|
+
};
|
346
|
+
}
|
347
|
+
export interface UserHasPermission {
|
348
|
+
Read: {
|
349
|
+
created_at: Types['Date Time']['Read'];
|
350
|
+
modified_at: Types['Date Time']['Read'];
|
351
|
+
user: {
|
352
|
+
__id: User['Read']['id'];
|
353
|
+
} | [User['Read']];
|
354
|
+
permission: {
|
355
|
+
__id: Permission['Read']['id'];
|
356
|
+
} | [Permission['Read']];
|
357
|
+
id: Types['Serial']['Read'];
|
358
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
359
|
+
is_of__user: {
|
360
|
+
__id: User['Read']['id'];
|
361
|
+
} | [User['Read']];
|
362
|
+
};
|
363
|
+
Write: {
|
364
|
+
created_at: Types['Date Time']['Write'];
|
365
|
+
modified_at: Types['Date Time']['Write'];
|
366
|
+
user: User['Write']['id'];
|
367
|
+
permission: Permission['Write']['id'];
|
368
|
+
id: Types['Serial']['Write'];
|
369
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
370
|
+
};
|
371
|
+
}
|
372
|
+
export interface ApiKey {
|
373
|
+
Read: {
|
374
|
+
created_at: Types['Date Time']['Read'];
|
375
|
+
modified_at: Types['Date Time']['Read'];
|
376
|
+
id: Types['Serial']['Read'];
|
377
|
+
key: Types['Short Text']['Read'];
|
378
|
+
expiry_date: Types['Date Time']['Read'] | null;
|
379
|
+
is_of__actor: {
|
380
|
+
__id: Actor['Read']['id'];
|
381
|
+
} | [Actor['Read']];
|
382
|
+
name: Types['Text']['Read'] | null;
|
383
|
+
description: Types['Text']['Read'] | null;
|
384
|
+
api_key__has__role?: Array<ApiKeyHasRole['Read']>;
|
385
|
+
api_key__has__permission?: Array<ApiKeyHasPermission['Read']>;
|
386
|
+
};
|
387
|
+
Write: {
|
388
|
+
created_at: Types['Date Time']['Write'];
|
389
|
+
modified_at: Types['Date Time']['Write'];
|
390
|
+
id: Types['Serial']['Write'];
|
391
|
+
key: Types['Short Text']['Write'];
|
392
|
+
expiry_date: Types['Date Time']['Write'] | null;
|
393
|
+
is_of__actor: Actor['Write']['id'];
|
394
|
+
name: Types['Text']['Write'] | null;
|
395
|
+
description: Types['Text']['Write'] | null;
|
396
|
+
};
|
397
|
+
}
|
398
|
+
export interface ApiKeyHasRole {
|
399
|
+
Read: {
|
400
|
+
created_at: Types['Date Time']['Read'];
|
401
|
+
modified_at: Types['Date Time']['Read'];
|
402
|
+
api_key: {
|
403
|
+
__id: ApiKey['Read']['id'];
|
404
|
+
} | [ApiKey['Read']];
|
405
|
+
role: {
|
406
|
+
__id: Role['Read']['id'];
|
407
|
+
} | [Role['Read']];
|
408
|
+
id: Types['Serial']['Read'];
|
409
|
+
is_of__api_key: {
|
410
|
+
__id: ApiKey['Read']['id'];
|
411
|
+
} | [ApiKey['Read']];
|
412
|
+
};
|
413
|
+
Write: {
|
414
|
+
created_at: Types['Date Time']['Write'];
|
415
|
+
modified_at: Types['Date Time']['Write'];
|
416
|
+
api_key: ApiKey['Write']['id'];
|
417
|
+
role: Role['Write']['id'];
|
418
|
+
id: Types['Serial']['Write'];
|
419
|
+
};
|
420
|
+
}
|
421
|
+
export interface ApiKeyHasPermission {
|
422
|
+
Read: {
|
423
|
+
created_at: Types['Date Time']['Read'];
|
424
|
+
modified_at: Types['Date Time']['Read'];
|
425
|
+
api_key: {
|
426
|
+
__id: ApiKey['Read']['id'];
|
427
|
+
} | [ApiKey['Read']];
|
428
|
+
permission: {
|
429
|
+
__id: Permission['Read']['id'];
|
430
|
+
} | [Permission['Read']];
|
431
|
+
id: Types['Serial']['Read'];
|
432
|
+
is_of__api_key: {
|
433
|
+
__id: ApiKey['Read']['id'];
|
434
|
+
} | [ApiKey['Read']];
|
435
|
+
};
|
436
|
+
Write: {
|
437
|
+
created_at: Types['Date Time']['Write'];
|
438
|
+
modified_at: Types['Date Time']['Write'];
|
439
|
+
api_key: ApiKey['Write']['id'];
|
440
|
+
permission: Permission['Write']['id'];
|
441
|
+
id: Types['Serial']['Write'];
|
442
|
+
};
|
443
|
+
}
|
444
|
+
export default interface $Model {
|
445
|
+
permission: Permission;
|
446
|
+
role: Role;
|
447
|
+
role__has__permission: RoleHasPermission;
|
448
|
+
actor: Actor;
|
449
|
+
user: User;
|
450
|
+
user__has__role: UserHasRole;
|
451
|
+
user__has__permission: UserHasPermission;
|
452
|
+
api_key: ApiKey;
|
453
|
+
api_key__has__role: ApiKeyHasRole;
|
454
|
+
api_key__has__permission: ApiKeyHasPermission;
|
455
|
+
permission$sbvr__compiler: Permission;
|
456
|
+
role$sbvr__compiler: Role;
|
457
|
+
role__has__permission$sbvr__compiler: RoleHasPermission;
|
458
|
+
actor$sbvr__compiler: Actor;
|
459
|
+
user$sbvr__compiler: User;
|
460
|
+
user__has__role$sbvr__compiler: UserHasRole;
|
461
|
+
user__has__permission$sbvr__compiler: UserHasPermission;
|
462
|
+
api_key$sbvr__compiler: ApiKey;
|
463
|
+
api_key__has__role$sbvr__compiler: ApiKeyHasRole;
|
464
|
+
api_key__has__permission$sbvr__compiler: ApiKeyHasPermission;
|
465
|
+
user_role: UserHasRole;
|
466
|
+
user_permission: UserHasPermission;
|
467
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/sbvr-api/user.ts"],"names":[],"mappings":""}
|
@@ -12,7 +12,6 @@ export * as errors from '../sbvr-api/errors';
|
|
12
12
|
export * as env from '../config-loader/env';
|
13
13
|
export * as types from '../sbvr-api/common-types';
|
14
14
|
export * as hooks from '../sbvr-api/hooks';
|
15
|
-
export * as tasks from '../tasks';
|
16
15
|
export * as webResourceHandler from '../webresource-handler';
|
17
16
|
export type { configLoader as ConfigLoader };
|
18
17
|
export type { migratorUtils as Migrator };
|
@@ -23,12 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
23
|
return result;
|
24
24
|
};
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
26
|
-
exports.init = exports.webResourceHandler = exports.
|
26
|
+
exports.init = exports.webResourceHandler = exports.hooks = exports.types = exports.env = exports.errors = exports.permissions = exports.sbvrUtils = exports.mountLoginRouter = exports.PinejsSessionStore = exports.dbModule = void 0;
|
27
27
|
require("./sbvr-loader");
|
28
28
|
const dbModule = __importStar(require("../database-layer/db"));
|
29
29
|
const configLoader = __importStar(require("../config-loader/config-loader"));
|
30
30
|
const migrator = __importStar(require("../migrator/sync"));
|
31
|
-
const tasks = __importStar(require("../tasks"));
|
32
31
|
const sbvrUtils = __importStar(require("../sbvr-api/sbvr-utils"));
|
33
32
|
const env_1 = require("../config-loader/env");
|
34
33
|
exports.dbModule = __importStar(require("../database-layer/db"));
|
@@ -42,7 +41,6 @@ exports.errors = __importStar(require("../sbvr-api/errors"));
|
|
42
41
|
exports.env = __importStar(require("../config-loader/env"));
|
43
42
|
exports.types = __importStar(require("../sbvr-api/common-types"));
|
44
43
|
exports.hooks = __importStar(require("../sbvr-api/hooks"));
|
45
|
-
exports.tasks = __importStar(require("../tasks"));
|
46
44
|
exports.webResourceHandler = __importStar(require("../webresource-handler"));
|
47
45
|
let envDatabaseOptions;
|
48
46
|
if (dbModule.engines.websql != null) {
|
@@ -77,7 +75,6 @@ const init = async (app, config, databaseOptions = envDatabaseOptions) => {
|
|
77
75
|
await sbvrUtils.setup(app, db);
|
78
76
|
const cfgLoader = await configLoader.setup(app);
|
79
77
|
await cfgLoader.loadConfig(migrator.config);
|
80
|
-
await cfgLoader.loadConfig(tasks.config);
|
81
78
|
const promises = [];
|
82
79
|
if (process.env.SBVR_SERVER_ENABLED) {
|
83
80
|
const sbvrServer = await import('../data-server/sbvr-server.js');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/server-glue/module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yBAAuB;AAEvB,+DAAiD;AACjD,6EAA+D;AAC/D,2DAA6C;
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/server-glue/module.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.0-build-
|
3
|
+
"version": "17.1.0-build-model-based-typings-86a981c89f828217571c93fa010174529a5345f9-1",
|
4
4
|
"main": "out/server-glue/module",
|
5
5
|
"type": "commonjs",
|
6
6
|
"repository": "git@github.com:balena-io/pinejs.git",
|
@@ -19,27 +19,29 @@
|
|
19
19
|
"webpack-server": "grunt server",
|
20
20
|
"webpack-build": "npm run webpack-browser && npm run webpack-module && npm run webpack-server",
|
21
21
|
"lint": "balena-lint -t tsconfig.dev.json -e js -e ts src build typings Gruntfile.ts && npx tsc --project tsconfig.dev.json --noEmit",
|
22
|
-
"test": "npm run lint && npm run build && npm run webpack-build && npm run test:compose",
|
23
|
-
"test:compose": "trap 'docker compose -f docker-compose.npm-test.yml down ; echo Stopped ; exit 0' INT; docker compose -f docker-compose.npm-test.yml up -d && sleep 2 && DATABASE_URL=postgres://docker:docker@localhost:5431/postgres PINEJS_WEBRESOURCE_MAXFILESIZE=1000000000 S3_ENDPOINT=http://localhost:43680 S3_ACCESS_KEY=USERNAME S3_SECRET_KEY=PASSWORD S3_STORAGE_ADAPTER_BUCKET=balena-pine-web-resources S3_REGION=us-east-1
|
22
|
+
"test": "npm run lint && npm run build && npm run webpack-build && npm run test:compose && npm run test:generated-types",
|
23
|
+
"test:compose": "trap 'docker compose -f docker-compose.npm-test.yml down ; echo Stopped ; exit 0' INT; docker compose -f docker-compose.npm-test.yml up -d && sleep 2 && DATABASE_URL=postgres://docker:docker@localhost:5431/postgres PINEJS_WEBRESOURCE_MAXFILESIZE=1000000000 S3_ENDPOINT=http://localhost:43680 S3_ACCESS_KEY=USERNAME S3_SECRET_KEY=PASSWORD S3_STORAGE_ADAPTER_BUCKET=balena-pine-web-resources S3_REGION=us-east-1 npm run mocha",
|
24
|
+
"test:generated-types": "npm run generate-types && git diff --exit-code ./src/sbvr-api/user.ts ./src/migrator/migrations.ts ./src/sbvr-api/dev.ts",
|
24
25
|
"mocha": "TS_NODE_FILES=true mocha",
|
25
|
-
"prettify": "balena-lint -t tsconfig.dev.json -e js -e ts --fix src test build typings Gruntfile.ts"
|
26
|
+
"prettify": "balena-lint -t tsconfig.dev.json -e js -e ts --fix src test build typings Gruntfile.ts",
|
27
|
+
"generate-types": "node ./bin/sbvr-compiler.js generate-types ./src/sbvr-api/user.sbvr ./src/sbvr-api/user.ts && node ./bin/sbvr-compiler.js generate-types ./src/migrator/migrations.sbvr ./src/migrator/migrations.ts && node ./bin/sbvr-compiler.js generate-types ./src/sbvr-api/dev.sbvr ./src/sbvr-api/dev.ts && balena-lint -t tsconfig.dev.json --fix ./src/sbvr-api/user.ts ./src/migrator/migrations.ts ./src/sbvr-api/dev.ts"
|
26
28
|
},
|
27
29
|
"dependencies": {
|
28
|
-
"@balena/abstract-sql-compiler": "^9.
|
29
|
-
"@balena/abstract-sql-to-typescript": "^3.1.
|
30
|
+
"@balena/abstract-sql-compiler": "^9.2.0",
|
31
|
+
"@balena/abstract-sql-to-typescript": "^3.1.2",
|
30
32
|
"@balena/env-parsing": "^1.1.12",
|
31
33
|
"@balena/lf-to-abstract-sql": "^5.0.2",
|
32
34
|
"@balena/odata-parser": "^3.0.8",
|
33
35
|
"@balena/odata-to-abstract-sql": "^6.2.7",
|
34
36
|
"@balena/sbvr-parser": "^1.4.4",
|
35
|
-
"@balena/sbvr-types": "^7.1.
|
37
|
+
"@balena/sbvr-types": "^7.1.3",
|
36
38
|
"@types/body-parser": "^1.19.5",
|
37
39
|
"@types/compression": "^1.7.5",
|
38
40
|
"@types/cookie-parser": "^1.4.7",
|
39
41
|
"@types/deep-freeze": "^0.1.5",
|
40
42
|
"@types/express": "^4.17.21",
|
41
43
|
"@types/express-session": "^1.18.0",
|
42
|
-
"@types/lodash": "^4.17.
|
44
|
+
"@types/lodash": "^4.17.5",
|
43
45
|
"@types/memoizee": "^0.4.11",
|
44
46
|
"@types/method-override": "^0.0.35",
|
45
47
|
"@types/multer": "^1.4.11",
|
@@ -51,16 +53,14 @@
|
|
51
53
|
"@types/pg": "^8.11.6",
|
52
54
|
"@types/randomstring": "^1.3.0",
|
53
55
|
"@types/websql": "^0.0.30",
|
54
|
-
"ajv": "^8.12.0",
|
55
56
|
"busboy": "^1.6.0",
|
56
57
|
"commander": "^11.1.0",
|
57
|
-
"cron-parser": "^4.9.0",
|
58
58
|
"deep-freeze": "^0.0.1",
|
59
59
|
"eventemitter3": "^5.0.1",
|
60
60
|
"express-session": "^1.18.0",
|
61
61
|
"lodash": "^4.17.21",
|
62
62
|
"memoizee": "^0.4.17",
|
63
|
-
"pinejs-client-core": "^6.
|
63
|
+
"pinejs-client-core": "^6.15.0",
|
64
64
|
"randomstring": "^1.3.0",
|
65
65
|
"typed-error": "^3.2.2"
|
66
66
|
},
|
@@ -91,12 +91,11 @@
|
|
91
91
|
"grunt-ts": "^6.0.0-beta.22",
|
92
92
|
"grunt-webpack": "^6.0.0",
|
93
93
|
"husky": "^9.0.11",
|
94
|
-
"
|
95
|
-
"lint-staged": "^15.2.5",
|
94
|
+
"lint-staged": "^15.2.7",
|
96
95
|
"load-grunt-tasks": "^5.1.0",
|
97
96
|
"mocha": "^10.4.0",
|
98
97
|
"on-finished": "^2.4.1",
|
99
|
-
"pinejs-client-supertest": "^2.0.
|
98
|
+
"pinejs-client-supertest": "^2.0.4",
|
100
99
|
"raw-loader": "^4.0.2",
|
101
100
|
"request": "^2.88.2",
|
102
101
|
"require-npm4-to-publish": "^1.0.0",
|
@@ -105,13 +104,13 @@
|
|
105
104
|
"ts-loader": "^9.5.1",
|
106
105
|
"ts-node": "^10.9.2",
|
107
106
|
"typescript": "^5.4.5",
|
108
|
-
"webpack": "^5.
|
107
|
+
"webpack": "^5.92.0",
|
109
108
|
"webpack-dev-server": "^4.15.2"
|
110
109
|
},
|
111
110
|
"optionalDependencies": {
|
112
|
-
"@aws-sdk/client-s3": "^3.
|
113
|
-
"@aws-sdk/lib-storage": "^3.
|
114
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
111
|
+
"@aws-sdk/client-s3": "^3.596.0",
|
112
|
+
"@aws-sdk/lib-storage": "^3.596.0",
|
113
|
+
"@aws-sdk/s3-request-presigner": "^3.596.0",
|
115
114
|
"bcrypt": "^5.1.1",
|
116
115
|
"body-parser": "^1.20.2",
|
117
116
|
"compression": "^1.7.4",
|
@@ -147,6 +146,6 @@
|
|
147
146
|
"recursive": true
|
148
147
|
},
|
149
148
|
"versionist": {
|
150
|
-
"publishedAt": "2024-06-
|
149
|
+
"publishedAt": "2024-06-14T14:22:13.242Z"
|
151
150
|
}
|
152
151
|
}
|
package/src/config-loader/env.ts
CHANGED
@@ -49,7 +49,7 @@ export const cache = {
|
|
49
49
|
apiKeyActorId: false as CacheOpts,
|
50
50
|
};
|
51
51
|
|
52
|
-
import { boolVar
|
52
|
+
import { boolVar } from '@balena/env-parsing';
|
53
53
|
import memoize from 'memoizee';
|
54
54
|
import memoizeWeak = require('memoizee/weak');
|
55
55
|
export const createCache = <T extends (...args: any[]) => any>(
|
@@ -146,8 +146,3 @@ export const migrator = {
|
|
146
146
|
*/
|
147
147
|
asyncMigrationIsEnabled: boolVar('PINEJS_ASYNC_MIGRATION_ENABLED', true),
|
148
148
|
};
|
149
|
-
|
150
|
-
export const tasks = {
|
151
|
-
queueConcurrency: intVar('PINEJS_QUEUE_CONCURRENCY', 0),
|
152
|
-
queueIntervalMS: intVar('PINEJS_QUEUE_INTERVAL_MS', 1000),
|
153
|
-
};
|
@@ -133,14 +133,15 @@ export async function setup(app, sbvrUtils, db) {
|
|
133
133
|
},
|
134
134
|
},
|
135
135
|
})
|
136
|
-
.then(async (
|
136
|
+
.then(async (result) => {
|
137
137
|
if (result.length === 0) {
|
138
138
|
throw new Error('No SE data model found');
|
139
139
|
}
|
140
140
|
const instance = result[0];
|
141
141
|
await sbvrUtils.executeModel(tx, {
|
142
142
|
apiRoot: instance.is_of__vocabulary,
|
143
|
-
|
143
|
+
// prettier-ignore
|
144
|
+
modelText: /** @type { string } */ (instance.model_value.value),
|
144
145
|
});
|
145
146
|
});
|
146
147
|
await isServerOnAir(true);
|