@balena/pinejs 15.0.0-true-boolean-7896b116c446d891d7a0d5e4085c02a13bc9c725 → 15.0.1-build-migrations-clarify-marking-sbvr-optional-d6d0ded8eccc6eadb2492f4697918cf0afd00215-1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. package/.dockerignore +4 -0
  2. package/.github/workflows/flowzone.yml +21 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.pinejs-cache.json +1 -0
  5. package/.resinci.yml +1 -0
  6. package/.versionbot/CHANGELOG.yml +9678 -2002
  7. package/CHANGELOG.md +2976 -2
  8. package/Dockerfile +14 -0
  9. package/Gruntfile.ts +3 -6
  10. package/README.md +10 -1
  11. package/VERSION +1 -0
  12. package/build/browser.ts +1 -1
  13. package/build/config.ts +0 -1
  14. package/docker-compose.npm-test.yml +11 -0
  15. package/docs/AdvancedUsage.md +77 -63
  16. package/docs/GettingStarted.md +90 -41
  17. package/docs/Migrations.md +102 -1
  18. package/docs/ProjectConfig.md +12 -21
  19. package/docs/Testing.md +7 -0
  20. package/out/bin/abstract-sql-compiler.js +17 -17
  21. package/out/bin/abstract-sql-compiler.js.map +1 -1
  22. package/out/bin/odata-compiler.js +23 -20
  23. package/out/bin/odata-compiler.js.map +1 -1
  24. package/out/bin/sbvr-compiler.js +22 -22
  25. package/out/bin/sbvr-compiler.js.map +1 -1
  26. package/out/bin/utils.d.ts +2 -2
  27. package/out/bin/utils.js +3 -3
  28. package/out/bin/utils.js.map +1 -1
  29. package/out/config-loader/config-loader.d.ts +9 -8
  30. package/out/config-loader/config-loader.js +135 -78
  31. package/out/config-loader/config-loader.js.map +1 -1
  32. package/out/config-loader/env.d.ts +41 -16
  33. package/out/config-loader/env.js +46 -2
  34. package/out/config-loader/env.js.map +1 -1
  35. package/out/data-server/sbvr-server.d.ts +2 -19
  36. package/out/data-server/sbvr-server.js +44 -38
  37. package/out/data-server/sbvr-server.js.map +1 -1
  38. package/out/database-layer/db.d.ts +32 -14
  39. package/out/database-layer/db.js +120 -41
  40. package/out/database-layer/db.js.map +1 -1
  41. package/out/express-emulator/express.js +10 -11
  42. package/out/express-emulator/express.js.map +1 -1
  43. package/out/http-transactions/transactions.d.ts +2 -18
  44. package/out/http-transactions/transactions.js +29 -21
  45. package/out/http-transactions/transactions.js.map +1 -1
  46. package/out/migrator/async.d.ts +7 -0
  47. package/out/migrator/async.js +168 -0
  48. package/out/migrator/async.js.map +1 -0
  49. package/out/migrator/migrations.sbvr +43 -0
  50. package/out/migrator/sync.d.ts +9 -0
  51. package/out/migrator/sync.js +106 -0
  52. package/out/migrator/sync.js.map +1 -0
  53. package/out/migrator/utils.d.ts +78 -0
  54. package/out/migrator/utils.js +283 -0
  55. package/out/migrator/utils.js.map +1 -0
  56. package/out/odata-metadata/odata-metadata-generator.js +10 -13
  57. package/out/odata-metadata/odata-metadata-generator.js.map +1 -1
  58. package/out/passport-pinejs/passport-pinejs.d.ts +1 -1
  59. package/out/passport-pinejs/passport-pinejs.js +8 -7
  60. package/out/passport-pinejs/passport-pinejs.js.map +1 -1
  61. package/out/pinejs-session-store/pinejs-session-store.d.ts +1 -1
  62. package/out/pinejs-session-store/pinejs-session-store.js +20 -6
  63. package/out/pinejs-session-store/pinejs-session-store.js.map +1 -1
  64. package/out/sbvr-api/abstract-sql.d.ts +3 -2
  65. package/out/sbvr-api/abstract-sql.js +9 -9
  66. package/out/sbvr-api/abstract-sql.js.map +1 -1
  67. package/out/sbvr-api/cached-compile.js +1 -1
  68. package/out/sbvr-api/cached-compile.js.map +1 -1
  69. package/out/sbvr-api/common-types.d.ts +6 -5
  70. package/out/sbvr-api/control-flow.d.ts +8 -1
  71. package/out/sbvr-api/control-flow.js +36 -9
  72. package/out/sbvr-api/control-flow.js.map +1 -1
  73. package/out/sbvr-api/errors.d.ts +47 -40
  74. package/out/sbvr-api/errors.js +78 -77
  75. package/out/sbvr-api/errors.js.map +1 -1
  76. package/out/sbvr-api/express-extension.d.ts +4 -0
  77. package/out/sbvr-api/hooks.d.ts +16 -15
  78. package/out/sbvr-api/hooks.js +74 -48
  79. package/out/sbvr-api/hooks.js.map +1 -1
  80. package/out/sbvr-api/odata-response.d.ts +2 -2
  81. package/out/sbvr-api/odata-response.js +28 -30
  82. package/out/sbvr-api/odata-response.js.map +1 -1
  83. package/out/sbvr-api/permissions.d.ts +17 -16
  84. package/out/sbvr-api/permissions.js +369 -304
  85. package/out/sbvr-api/permissions.js.map +1 -1
  86. package/out/sbvr-api/sbvr-utils.d.ts +33 -15
  87. package/out/sbvr-api/sbvr-utils.js +397 -235
  88. package/out/sbvr-api/sbvr-utils.js.map +1 -1
  89. package/out/sbvr-api/translations.d.ts +6 -0
  90. package/out/sbvr-api/translations.js +150 -0
  91. package/out/sbvr-api/translations.js.map +1 -0
  92. package/out/sbvr-api/uri-parser.d.ts +23 -17
  93. package/out/sbvr-api/uri-parser.js +33 -27
  94. package/out/sbvr-api/uri-parser.js.map +1 -1
  95. package/out/sbvr-api/user.sbvr +2 -0
  96. package/out/server-glue/module.d.ts +6 -6
  97. package/out/server-glue/module.js +4 -2
  98. package/out/server-glue/module.js.map +1 -1
  99. package/out/server-glue/server.js +5 -5
  100. package/out/server-glue/server.js.map +1 -1
  101. package/package.json +89 -73
  102. package/pinejs.png +0 -0
  103. package/repo.yml +9 -9
  104. package/src/bin/abstract-sql-compiler.ts +5 -7
  105. package/src/bin/odata-compiler.ts +11 -13
  106. package/src/bin/sbvr-compiler.ts +11 -17
  107. package/src/bin/utils.ts +3 -5
  108. package/src/config-loader/config-loader.ts +167 -53
  109. package/src/config-loader/env.ts +106 -6
  110. package/src/data-server/sbvr-server.js +44 -38
  111. package/src/database-layer/db.ts +205 -64
  112. package/src/express-emulator/express.js +10 -11
  113. package/src/http-transactions/transactions.js +29 -21
  114. package/src/migrator/async.ts +323 -0
  115. package/src/migrator/migrations.sbvr +43 -0
  116. package/src/migrator/sync.ts +152 -0
  117. package/src/migrator/utils.ts +458 -0
  118. package/src/odata-metadata/odata-metadata-generator.ts +12 -15
  119. package/src/passport-pinejs/passport-pinejs.ts +9 -7
  120. package/src/pinejs-session-store/pinejs-session-store.ts +15 -1
  121. package/src/sbvr-api/abstract-sql.ts +17 -14
  122. package/src/sbvr-api/common-types.ts +2 -1
  123. package/src/sbvr-api/control-flow.ts +45 -11
  124. package/src/sbvr-api/errors.ts +82 -77
  125. package/src/sbvr-api/express-extension.ts +6 -1
  126. package/src/sbvr-api/hooks.ts +123 -50
  127. package/src/sbvr-api/odata-response.ts +23 -28
  128. package/src/sbvr-api/permissions.ts +548 -415
  129. package/src/sbvr-api/sbvr-utils.ts +581 -259
  130. package/src/sbvr-api/translations.ts +248 -0
  131. package/src/sbvr-api/uri-parser.ts +63 -49
  132. package/src/sbvr-api/user.sbvr +2 -0
  133. package/src/server-glue/module.ts +16 -10
  134. package/src/server-glue/server.ts +5 -5
  135. package/tsconfig.dev.json +1 -0
  136. package/tsconfig.json +1 -2
  137. package/typings/lf-to-abstract-sql.d.ts +6 -9
  138. package/typings/memoizee.d.ts +1 -1
  139. package/.github/CODEOWNERS +0 -1
  140. package/circle.yml +0 -37
  141. package/docs/todo.txt +0 -22
  142. package/out/migrator/migrator.d.ts +0 -20
  143. package/out/migrator/migrator.js +0 -188
  144. package/out/migrator/migrator.js.map +0 -1
  145. package/src/migrator/migrator.ts +0 -286
@@ -1,28 +1,33 @@
1
1
  import type { Resolvable } from './common-types';
2
2
 
3
3
  import * as _ from 'lodash';
4
+ import { TypedError } from 'typed-error';
4
5
 
5
6
  export type MappingFunction = <T, U>(
6
7
  a: T[],
7
8
  fn: (v: T) => Resolvable<U>,
8
9
  ) => Promise<Array<U | Error>>;
9
10
 
11
+ export const mapSeries = async <T, U>(a: T[], fn: (v: T) => Resolvable<U>) => {
12
+ const results: U[] = [];
13
+ for (const p of a) {
14
+ results.push(await fn(p));
15
+ }
16
+ return results;
17
+ };
18
+
10
19
  // The settle version of `Promise.mapSeries`
11
20
  export const settleMapSeries: MappingFunction = async <T, U>(
12
21
  a: T[],
13
22
  fn: (v: T) => Resolvable<U>,
14
- ) => {
15
- const results: Array<U | Error> = [];
16
- for (const p of a) {
23
+ ) =>
24
+ await mapSeries(a, async (p) => {
17
25
  try {
18
- const result = await fn(p);
19
- results.push(result);
20
- } catch (err) {
21
- results.push(ensureError(err));
26
+ return await fn(p);
27
+ } catch (err: any) {
28
+ return ensureError(err);
22
29
  }
23
- }
24
- return results;
25
- };
30
+ });
26
31
 
27
32
  // This is used to guarantee that we convert a `.catch` result into an error, so that later code checking `_.isError` will work as expected
28
33
  const ensureError = (err: any): Error => {
@@ -44,7 +49,7 @@ const mapTill: MappingFunction = async <T, U>(
44
49
  try {
45
50
  const result = await fn(p);
46
51
  results.push(result);
47
- } catch (err) {
52
+ } catch (err: any) {
48
53
  results.push(ensureError(err));
49
54
  break;
50
55
  }
@@ -64,3 +69,32 @@ export const getMappingFn = (headers?: {
64
69
  return mapTill;
65
70
  }
66
71
  };
72
+
73
+ export const delay = (ms: number) =>
74
+ new Promise<void>((resolve) => setTimeout(resolve, ms));
75
+
76
+ export const fromCallback = <T>(
77
+ resolver: (callback: (err: any, result?: T) => void) => void,
78
+ ): Promise<T> =>
79
+ new Promise<T>((resolve, reject) => {
80
+ resolver((err, result?: T) => {
81
+ if (err) {
82
+ reject(err);
83
+ } else {
84
+ resolve(result as T);
85
+ }
86
+ });
87
+ });
88
+
89
+ export class TimeoutError extends TypedError {}
90
+ export const timeout = async <T>(
91
+ promise: Promise<T>,
92
+ ms: number,
93
+ msg = 'operation timed out',
94
+ ): Promise<T> =>
95
+ await Promise.race([
96
+ promise,
97
+ delay(ms).then(() => {
98
+ throw new TimeoutError(msg);
99
+ }),
100
+ ]);
@@ -1,4 +1,4 @@
1
- import type { AnyObject } from './common-types';
1
+ import type { AnyObject, Tail } from './common-types';
2
2
 
3
3
  import { TypedError } from 'typed-error';
4
4
 
@@ -16,6 +16,9 @@ export class HttpError extends TypedError {
16
16
  public status: number,
17
17
  error: string | Error = '',
18
18
  public body?: string | AnyObject,
19
+ public headers?: {
20
+ [headerName: string]: any;
21
+ },
19
22
  ) {
20
23
  super(error);
21
24
  }
@@ -25,231 +28,233 @@ export class HttpError extends TypedError {
25
28
  }
26
29
  }
27
30
 
31
+ type HttpErrorTailArgs = Tail<ConstructorParameters<typeof HttpError>>;
32
+
28
33
  export class BadRequestError extends HttpError {
29
- constructor(error?: string | Error, body?: string | AnyObject) {
30
- super(400, error, body);
34
+ constructor(...args: HttpErrorTailArgs) {
35
+ super(400, ...args);
31
36
  }
32
37
  }
33
38
 
34
39
  export class UnauthorizedError extends HttpError {
35
- constructor(error?: string | Error, body?: string | AnyObject) {
36
- super(401, error, body);
40
+ constructor(...args: HttpErrorTailArgs) {
41
+ super(401, ...args);
37
42
  }
38
43
  }
39
44
 
40
45
  export class PaymentRequired extends HttpError {
41
- constructor(error?: string | Error, body?: string | AnyObject) {
42
- super(402, error, body);
46
+ constructor(...args: HttpErrorTailArgs) {
47
+ super(402, ...args);
43
48
  }
44
49
  }
45
50
 
46
51
  export class ForbiddenError extends HttpError {
47
- constructor(error?: string | Error, body?: string | AnyObject) {
48
- super(403, error, body);
52
+ constructor(...args: HttpErrorTailArgs) {
53
+ super(403, ...args);
49
54
  }
50
55
  }
51
56
 
52
57
  export class NotFoundError extends HttpError {
53
- constructor(error?: string | Error, body?: string | AnyObject) {
54
- super(404, error, body);
58
+ constructor(...args: HttpErrorTailArgs) {
59
+ super(404, ...args);
55
60
  }
56
61
  }
57
62
 
58
63
  export class MethodNotAllowedError extends HttpError {
59
- constructor(error?: string | Error, body?: string | AnyObject) {
60
- super(405, error, body);
64
+ constructor(...args: HttpErrorTailArgs) {
65
+ super(405, ...args);
61
66
  }
62
67
  }
63
68
 
64
69
  export class NotAcceptableError extends HttpError {
65
- constructor(error?: string | Error, body?: string | AnyObject) {
66
- super(406, error, body);
70
+ constructor(...args: HttpErrorTailArgs) {
71
+ super(406, ...args);
67
72
  }
68
73
  }
69
74
 
70
75
  export class ProxyAuthenticationRequiredError extends HttpError {
71
- constructor(error?: string | Error, body?: string | AnyObject) {
72
- super(407, error, body);
76
+ constructor(...args: HttpErrorTailArgs) {
77
+ super(407, ...args);
73
78
  }
74
79
  }
75
80
 
76
81
  export class RequestTimeoutError extends HttpError {
77
- constructor(error?: string | Error, body?: string | AnyObject) {
78
- super(408, error, body);
82
+ constructor(...args: HttpErrorTailArgs) {
83
+ super(408, ...args);
79
84
  }
80
85
  }
81
86
 
82
87
  export class ConflictError extends HttpError {
83
- constructor(error?: string | Error, body?: string | AnyObject) {
84
- super(409, error, body);
88
+ constructor(...args: HttpErrorTailArgs) {
89
+ super(409, ...args);
85
90
  }
86
91
  }
87
92
 
88
93
  export class GoneError extends HttpError {
89
- constructor(error?: string | Error, body?: string | AnyObject) {
90
- super(410, error, body);
94
+ constructor(...args: HttpErrorTailArgs) {
95
+ super(410, ...args);
91
96
  }
92
97
  }
93
98
 
94
99
  export class LengthRequiredError extends HttpError {
95
- constructor(error?: string | Error, body?: string | AnyObject) {
96
- super(411, error, body);
100
+ constructor(...args: HttpErrorTailArgs) {
101
+ super(411, ...args);
97
102
  }
98
103
  }
99
104
 
100
105
  export class PreconditionFailedError extends HttpError {
101
- constructor(error?: string | Error, body?: string | AnyObject) {
102
- super(412, error, body);
106
+ constructor(...args: HttpErrorTailArgs) {
107
+ super(412, ...args);
103
108
  }
104
109
  }
105
110
 
106
111
  export class PayloadTooLargeError extends HttpError {
107
- constructor(error?: string | Error, body?: string | AnyObject) {
108
- super(413, error, body);
112
+ constructor(...args: HttpErrorTailArgs) {
113
+ super(413, ...args);
109
114
  }
110
115
  }
111
116
 
112
117
  export class URITooLongError extends HttpError {
113
- constructor(error?: string | Error, body?: string | AnyObject) {
114
- super(414, error, body);
118
+ constructor(...args: HttpErrorTailArgs) {
119
+ super(414, ...args);
115
120
  }
116
121
  }
117
122
 
118
123
  export class UnsupportedMediaTypeError extends HttpError {
119
- constructor(error?: string | Error, body?: string | AnyObject) {
120
- super(415, error, body);
124
+ constructor(...args: HttpErrorTailArgs) {
125
+ super(415, ...args);
121
126
  }
122
127
  }
123
128
 
124
129
  export class RequestedRangeNotSatisfiableError extends HttpError {
125
- constructor(error?: string | Error, body?: string | AnyObject) {
126
- super(416, error, body);
130
+ constructor(...args: HttpErrorTailArgs) {
131
+ super(416, ...args);
127
132
  }
128
133
  }
129
134
 
130
135
  export class ExpectationFailedError extends HttpError {
131
- constructor(error?: string | Error, body?: string | AnyObject) {
132
- super(417, error, body);
136
+ constructor(...args: HttpErrorTailArgs) {
137
+ super(417, ...args);
133
138
  }
134
139
  }
135
140
 
136
141
  export class MisdirectedRequestError extends HttpError {
137
- constructor(error?: string | Error, body?: string | AnyObject) {
138
- super(421, error, body);
142
+ constructor(...args: HttpErrorTailArgs) {
143
+ super(421, ...args);
139
144
  }
140
145
  }
141
146
 
142
147
  export class UnprocessableEntityError extends HttpError {
143
- constructor(error?: string | Error, body?: string | AnyObject) {
144
- super(422, error, body);
148
+ constructor(...args: HttpErrorTailArgs) {
149
+ super(422, ...args);
145
150
  }
146
151
  }
147
152
 
148
153
  export class LockedError extends HttpError {
149
- constructor(error?: string | Error, body?: string | AnyObject) {
150
- super(423, error, body);
154
+ constructor(...args: HttpErrorTailArgs) {
155
+ super(423, ...args);
151
156
  }
152
157
  }
153
158
 
154
159
  export class FailedDependencyError extends HttpError {
155
- constructor(error?: string | Error, body?: string | AnyObject) {
156
- super(424, error, body);
160
+ constructor(...args: HttpErrorTailArgs) {
161
+ super(424, ...args);
157
162
  }
158
163
  }
159
164
 
160
165
  export class UpgradeRequiredError extends HttpError {
161
- constructor(error?: string | Error, body?: string | AnyObject) {
162
- super(426, error, body);
166
+ constructor(...args: HttpErrorTailArgs) {
167
+ super(426, ...args);
163
168
  }
164
169
  }
165
170
 
166
171
  export class PreconditionRequiredError extends HttpError {
167
- constructor(error?: string | Error, body?: string | AnyObject) {
168
- super(428, error, body);
172
+ constructor(...args: HttpErrorTailArgs) {
173
+ super(428, ...args);
169
174
  }
170
175
  }
171
176
 
172
177
  export class TooManyRequestsError extends HttpError {
173
- constructor(error?: string | Error, body?: string | AnyObject) {
174
- super(429, error, body);
178
+ constructor(...args: HttpErrorTailArgs) {
179
+ super(429, ...args);
175
180
  }
176
181
  }
177
182
 
178
183
  export class RequestHeaderFieldsTooLargeError extends HttpError {
179
- constructor(error?: string | Error, body?: string | AnyObject) {
180
- super(431, error, body);
184
+ constructor(...args: HttpErrorTailArgs) {
185
+ super(431, ...args);
181
186
  }
182
187
  }
183
188
 
184
189
  export class UnavailableForLegalReasonsError extends HttpError {
185
- constructor(error?: string | Error, body?: string | AnyObject) {
186
- super(451, error, body);
190
+ constructor(...args: HttpErrorTailArgs) {
191
+ super(451, ...args);
187
192
  }
188
193
  }
189
194
 
190
195
  export class InternalRequestError extends HttpError {
191
- constructor(error?: string | Error, body?: string | AnyObject) {
192
- super(500, error, body);
196
+ constructor(...args: HttpErrorTailArgs) {
197
+ super(500, ...args);
193
198
  }
194
199
  }
195
200
 
196
201
  export class NotImplementedError extends HttpError {
197
- constructor(error?: string | Error, body?: string | AnyObject) {
198
- super(501, error, body);
202
+ constructor(...args: HttpErrorTailArgs) {
203
+ super(501, ...args);
199
204
  }
200
205
  }
201
206
 
202
207
  export class BadGatewayError extends HttpError {
203
- constructor(error?: string | Error, body?: string | AnyObject) {
204
- super(502, error, body);
208
+ constructor(...args: HttpErrorTailArgs) {
209
+ super(502, ...args);
205
210
  }
206
211
  }
207
212
 
208
213
  export class ServiceUnavailableError extends HttpError {
209
- constructor(error?: string | Error, body?: string | AnyObject) {
210
- super(503, error, body);
214
+ constructor(...args: HttpErrorTailArgs) {
215
+ super(503, ...args);
211
216
  }
212
217
  }
213
218
 
214
219
  export class GatewayTimeoutError extends HttpError {
215
- constructor(error?: string | Error, body?: string | AnyObject) {
216
- super(504, error, body);
220
+ constructor(...args: HttpErrorTailArgs) {
221
+ super(504, ...args);
217
222
  }
218
223
  }
219
224
 
220
225
  export class HTTPVersionNotSupportedError extends HttpError {
221
- constructor(error?: string | Error, body?: string | AnyObject) {
222
- super(505, error, body);
226
+ constructor(...args: HttpErrorTailArgs) {
227
+ super(505, ...args);
223
228
  }
224
229
  }
225
230
 
226
231
  export class VariantAlsoNegotiatesError extends HttpError {
227
- constructor(error?: string | Error, body?: string | AnyObject) {
228
- super(506, error, body);
232
+ constructor(...args: HttpErrorTailArgs) {
233
+ super(506, ...args);
229
234
  }
230
235
  }
231
236
 
232
237
  export class InsufficientStorageError extends HttpError {
233
- constructor(error?: string | Error, body?: string | AnyObject) {
234
- super(507, error, body);
238
+ constructor(...args: HttpErrorTailArgs) {
239
+ super(507, ...args);
235
240
  }
236
241
  }
237
242
 
238
243
  export class LoopDetectedError extends HttpError {
239
- constructor(error?: string | Error, body?: string | AnyObject) {
240
- super(508, error, body);
244
+ constructor(...args: HttpErrorTailArgs) {
245
+ super(508, ...args);
241
246
  }
242
247
  }
243
248
 
244
249
  export class NotExtendedError extends HttpError {
245
- constructor(error?: string | Error, body?: string | AnyObject) {
246
- super(510, error, body);
250
+ constructor(...args: HttpErrorTailArgs) {
251
+ super(510, ...args);
247
252
  }
248
253
  }
249
254
 
250
255
  export class NetworkAuthenticationRequiredError extends HttpError {
251
- constructor(error?: string | Error, body?: string | AnyObject) {
252
- super(511, error, body);
256
+ constructor(...args: HttpErrorTailArgs) {
257
+ super(511, ...args);
253
258
  }
254
259
  }
255
260
 
@@ -2,7 +2,12 @@
2
2
 
3
3
  // tslint:disable-next-line:no-namespace
4
4
  declare namespace Express {
5
- export interface Request {
5
+ type PineUser = import('./sbvr-utils').User;
6
+
7
+ // tslint:disable-next-line:no-empty-interface
8
+ interface User extends PineUser {}
9
+ interface Request {
10
+ user?: User;
6
11
  apiKey?: import('./sbvr-utils').ApiKey;
7
12
  }
8
13
  }