@balena/pinejs 15.0.0-true-boolean-911aca4062d3132ad3c34712014739b6849fa13a → 15.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.dockerignore +4 -0
- package/.github/workflows/flowzone.yml +21 -0
- package/.husky/pre-commit +4 -0
- package/.pinejs-cache.json +1 -0
- package/.resinci.yml +1 -0
- package/.versionbot/CHANGELOG.yml +9678 -2001
- package/CHANGELOG.md +2975 -2
- package/Dockerfile +14 -0
- package/Gruntfile.ts +3 -6
- package/README.md +10 -1
- package/VERSION +1 -0
- package/build/browser.ts +1 -1
- package/build/config.ts +0 -1
- package/docker-compose.npm-test.yml +11 -0
- package/docs/AdvancedUsage.md +77 -63
- package/docs/GettingStarted.md +90 -41
- package/docs/Migrations.md +102 -1
- package/docs/ProjectConfig.md +12 -21
- package/docs/Testing.md +7 -0
- package/out/bin/abstract-sql-compiler.js +17 -17
- package/out/bin/abstract-sql-compiler.js.map +1 -1
- package/out/bin/odata-compiler.js +23 -20
- package/out/bin/odata-compiler.js.map +1 -1
- package/out/bin/sbvr-compiler.js +22 -22
- package/out/bin/sbvr-compiler.js.map +1 -1
- package/out/bin/utils.d.ts +2 -2
- package/out/bin/utils.js +3 -3
- package/out/bin/utils.js.map +1 -1
- package/out/config-loader/config-loader.d.ts +9 -8
- package/out/config-loader/config-loader.js +135 -78
- package/out/config-loader/config-loader.js.map +1 -1
- package/out/config-loader/env.d.ts +41 -16
- package/out/config-loader/env.js +46 -2
- package/out/config-loader/env.js.map +1 -1
- package/out/data-server/sbvr-server.d.ts +2 -19
- package/out/data-server/sbvr-server.js +44 -38
- package/out/data-server/sbvr-server.js.map +1 -1
- package/out/database-layer/db.d.ts +32 -14
- package/out/database-layer/db.js +120 -41
- package/out/database-layer/db.js.map +1 -1
- package/out/express-emulator/express.js +10 -11
- package/out/express-emulator/express.js.map +1 -1
- package/out/http-transactions/transactions.d.ts +2 -18
- package/out/http-transactions/transactions.js +29 -21
- package/out/http-transactions/transactions.js.map +1 -1
- package/out/migrator/async.d.ts +7 -0
- package/out/migrator/async.js +168 -0
- package/out/migrator/async.js.map +1 -0
- package/out/migrator/migrations.sbvr +43 -0
- package/out/migrator/sync.d.ts +9 -0
- package/out/migrator/sync.js +106 -0
- package/out/migrator/sync.js.map +1 -0
- package/out/migrator/utils.d.ts +78 -0
- package/out/migrator/utils.js +283 -0
- package/out/migrator/utils.js.map +1 -0
- package/out/odata-metadata/odata-metadata-generator.js +10 -13
- package/out/odata-metadata/odata-metadata-generator.js.map +1 -1
- package/out/passport-pinejs/passport-pinejs.d.ts +1 -1
- package/out/passport-pinejs/passport-pinejs.js +8 -7
- package/out/passport-pinejs/passport-pinejs.js.map +1 -1
- package/out/pinejs-session-store/pinejs-session-store.d.ts +1 -1
- package/out/pinejs-session-store/pinejs-session-store.js +20 -6
- package/out/pinejs-session-store/pinejs-session-store.js.map +1 -1
- package/out/sbvr-api/abstract-sql.d.ts +3 -2
- package/out/sbvr-api/abstract-sql.js +9 -9
- package/out/sbvr-api/abstract-sql.js.map +1 -1
- package/out/sbvr-api/cached-compile.js +1 -1
- package/out/sbvr-api/cached-compile.js.map +1 -1
- package/out/sbvr-api/common-types.d.ts +6 -5
- package/out/sbvr-api/control-flow.d.ts +8 -1
- package/out/sbvr-api/control-flow.js +36 -9
- package/out/sbvr-api/control-flow.js.map +1 -1
- package/out/sbvr-api/errors.d.ts +47 -40
- package/out/sbvr-api/errors.js +78 -77
- package/out/sbvr-api/errors.js.map +1 -1
- package/out/sbvr-api/express-extension.d.ts +4 -0
- package/out/sbvr-api/hooks.d.ts +16 -15
- package/out/sbvr-api/hooks.js +74 -48
- package/out/sbvr-api/hooks.js.map +1 -1
- package/out/sbvr-api/odata-response.d.ts +2 -2
- package/out/sbvr-api/odata-response.js +28 -30
- package/out/sbvr-api/odata-response.js.map +1 -1
- package/out/sbvr-api/permissions.d.ts +17 -16
- package/out/sbvr-api/permissions.js +369 -304
- package/out/sbvr-api/permissions.js.map +1 -1
- package/out/sbvr-api/sbvr-utils.d.ts +33 -15
- package/out/sbvr-api/sbvr-utils.js +397 -235
- package/out/sbvr-api/sbvr-utils.js.map +1 -1
- package/out/sbvr-api/translations.d.ts +6 -0
- package/out/sbvr-api/translations.js +150 -0
- package/out/sbvr-api/translations.js.map +1 -0
- package/out/sbvr-api/uri-parser.d.ts +23 -17
- package/out/sbvr-api/uri-parser.js +33 -27
- package/out/sbvr-api/uri-parser.js.map +1 -1
- package/out/sbvr-api/user.sbvr +2 -0
- package/out/server-glue/module.d.ts +6 -6
- package/out/server-glue/module.js +4 -2
- package/out/server-glue/module.js.map +1 -1
- package/out/server-glue/server.js +5 -5
- package/out/server-glue/server.js.map +1 -1
- package/package.json +89 -73
- package/pinejs.png +0 -0
- package/repo.yml +9 -9
- package/src/bin/abstract-sql-compiler.ts +5 -7
- package/src/bin/odata-compiler.ts +11 -13
- package/src/bin/sbvr-compiler.ts +11 -17
- package/src/bin/utils.ts +3 -5
- package/src/config-loader/config-loader.ts +167 -53
- package/src/config-loader/env.ts +106 -6
- package/src/data-server/sbvr-server.js +44 -38
- package/src/database-layer/db.ts +205 -64
- package/src/express-emulator/express.js +10 -11
- package/src/http-transactions/transactions.js +29 -21
- package/src/migrator/async.ts +323 -0
- package/src/migrator/migrations.sbvr +43 -0
- package/src/migrator/sync.ts +152 -0
- package/src/migrator/utils.ts +458 -0
- package/src/odata-metadata/odata-metadata-generator.ts +12 -15
- package/src/passport-pinejs/passport-pinejs.ts +9 -7
- package/src/pinejs-session-store/pinejs-session-store.ts +15 -1
- package/src/sbvr-api/abstract-sql.ts +17 -14
- package/src/sbvr-api/common-types.ts +2 -1
- package/src/sbvr-api/control-flow.ts +45 -11
- package/src/sbvr-api/errors.ts +82 -77
- package/src/sbvr-api/express-extension.ts +6 -1
- package/src/sbvr-api/hooks.ts +123 -50
- package/src/sbvr-api/odata-response.ts +23 -28
- package/src/sbvr-api/permissions.ts +548 -415
- package/src/sbvr-api/sbvr-utils.ts +581 -259
- package/src/sbvr-api/translations.ts +248 -0
- package/src/sbvr-api/uri-parser.ts +63 -49
- package/src/sbvr-api/user.sbvr +2 -0
- package/src/server-glue/module.ts +16 -10
- package/src/server-glue/server.ts +5 -5
- package/tsconfig.dev.json +1 -0
- package/tsconfig.json +1 -2
- package/typings/lf-to-abstract-sql.d.ts +6 -9
- package/typings/memoizee.d.ts +1 -1
- package/.github/CODEOWNERS +0 -1
- package/circle.yml +0 -37
- package/docs/todo.txt +0 -22
- package/out/migrator/migrator.d.ts +0 -20
- package/out/migrator/migrator.js +0 -188
- package/out/migrator/migrator.js.map +0 -1
- 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
|
-
|
16
|
-
for (const p of a) {
|
23
|
+
) =>
|
24
|
+
await mapSeries(a, async (p) => {
|
17
25
|
try {
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
+
]);
|
package/src/sbvr-api/errors.ts
CHANGED
@@ -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(
|
30
|
-
super(400,
|
34
|
+
constructor(...args: HttpErrorTailArgs) {
|
35
|
+
super(400, ...args);
|
31
36
|
}
|
32
37
|
}
|
33
38
|
|
34
39
|
export class UnauthorizedError extends HttpError {
|
35
|
-
constructor(
|
36
|
-
super(401,
|
40
|
+
constructor(...args: HttpErrorTailArgs) {
|
41
|
+
super(401, ...args);
|
37
42
|
}
|
38
43
|
}
|
39
44
|
|
40
45
|
export class PaymentRequired extends HttpError {
|
41
|
-
constructor(
|
42
|
-
super(402,
|
46
|
+
constructor(...args: HttpErrorTailArgs) {
|
47
|
+
super(402, ...args);
|
43
48
|
}
|
44
49
|
}
|
45
50
|
|
46
51
|
export class ForbiddenError extends HttpError {
|
47
|
-
constructor(
|
48
|
-
super(403,
|
52
|
+
constructor(...args: HttpErrorTailArgs) {
|
53
|
+
super(403, ...args);
|
49
54
|
}
|
50
55
|
}
|
51
56
|
|
52
57
|
export class NotFoundError extends HttpError {
|
53
|
-
constructor(
|
54
|
-
super(404,
|
58
|
+
constructor(...args: HttpErrorTailArgs) {
|
59
|
+
super(404, ...args);
|
55
60
|
}
|
56
61
|
}
|
57
62
|
|
58
63
|
export class MethodNotAllowedError extends HttpError {
|
59
|
-
constructor(
|
60
|
-
super(405,
|
64
|
+
constructor(...args: HttpErrorTailArgs) {
|
65
|
+
super(405, ...args);
|
61
66
|
}
|
62
67
|
}
|
63
68
|
|
64
69
|
export class NotAcceptableError extends HttpError {
|
65
|
-
constructor(
|
66
|
-
super(406,
|
70
|
+
constructor(...args: HttpErrorTailArgs) {
|
71
|
+
super(406, ...args);
|
67
72
|
}
|
68
73
|
}
|
69
74
|
|
70
75
|
export class ProxyAuthenticationRequiredError extends HttpError {
|
71
|
-
constructor(
|
72
|
-
super(407,
|
76
|
+
constructor(...args: HttpErrorTailArgs) {
|
77
|
+
super(407, ...args);
|
73
78
|
}
|
74
79
|
}
|
75
80
|
|
76
81
|
export class RequestTimeoutError extends HttpError {
|
77
|
-
constructor(
|
78
|
-
super(408,
|
82
|
+
constructor(...args: HttpErrorTailArgs) {
|
83
|
+
super(408, ...args);
|
79
84
|
}
|
80
85
|
}
|
81
86
|
|
82
87
|
export class ConflictError extends HttpError {
|
83
|
-
constructor(
|
84
|
-
super(409,
|
88
|
+
constructor(...args: HttpErrorTailArgs) {
|
89
|
+
super(409, ...args);
|
85
90
|
}
|
86
91
|
}
|
87
92
|
|
88
93
|
export class GoneError extends HttpError {
|
89
|
-
constructor(
|
90
|
-
super(410,
|
94
|
+
constructor(...args: HttpErrorTailArgs) {
|
95
|
+
super(410, ...args);
|
91
96
|
}
|
92
97
|
}
|
93
98
|
|
94
99
|
export class LengthRequiredError extends HttpError {
|
95
|
-
constructor(
|
96
|
-
super(411,
|
100
|
+
constructor(...args: HttpErrorTailArgs) {
|
101
|
+
super(411, ...args);
|
97
102
|
}
|
98
103
|
}
|
99
104
|
|
100
105
|
export class PreconditionFailedError extends HttpError {
|
101
|
-
constructor(
|
102
|
-
super(412,
|
106
|
+
constructor(...args: HttpErrorTailArgs) {
|
107
|
+
super(412, ...args);
|
103
108
|
}
|
104
109
|
}
|
105
110
|
|
106
111
|
export class PayloadTooLargeError extends HttpError {
|
107
|
-
constructor(
|
108
|
-
super(413,
|
112
|
+
constructor(...args: HttpErrorTailArgs) {
|
113
|
+
super(413, ...args);
|
109
114
|
}
|
110
115
|
}
|
111
116
|
|
112
117
|
export class URITooLongError extends HttpError {
|
113
|
-
constructor(
|
114
|
-
super(414,
|
118
|
+
constructor(...args: HttpErrorTailArgs) {
|
119
|
+
super(414, ...args);
|
115
120
|
}
|
116
121
|
}
|
117
122
|
|
118
123
|
export class UnsupportedMediaTypeError extends HttpError {
|
119
|
-
constructor(
|
120
|
-
super(415,
|
124
|
+
constructor(...args: HttpErrorTailArgs) {
|
125
|
+
super(415, ...args);
|
121
126
|
}
|
122
127
|
}
|
123
128
|
|
124
129
|
export class RequestedRangeNotSatisfiableError extends HttpError {
|
125
|
-
constructor(
|
126
|
-
super(416,
|
130
|
+
constructor(...args: HttpErrorTailArgs) {
|
131
|
+
super(416, ...args);
|
127
132
|
}
|
128
133
|
}
|
129
134
|
|
130
135
|
export class ExpectationFailedError extends HttpError {
|
131
|
-
constructor(
|
132
|
-
super(417,
|
136
|
+
constructor(...args: HttpErrorTailArgs) {
|
137
|
+
super(417, ...args);
|
133
138
|
}
|
134
139
|
}
|
135
140
|
|
136
141
|
export class MisdirectedRequestError extends HttpError {
|
137
|
-
constructor(
|
138
|
-
super(421,
|
142
|
+
constructor(...args: HttpErrorTailArgs) {
|
143
|
+
super(421, ...args);
|
139
144
|
}
|
140
145
|
}
|
141
146
|
|
142
147
|
export class UnprocessableEntityError extends HttpError {
|
143
|
-
constructor(
|
144
|
-
super(422,
|
148
|
+
constructor(...args: HttpErrorTailArgs) {
|
149
|
+
super(422, ...args);
|
145
150
|
}
|
146
151
|
}
|
147
152
|
|
148
153
|
export class LockedError extends HttpError {
|
149
|
-
constructor(
|
150
|
-
super(423,
|
154
|
+
constructor(...args: HttpErrorTailArgs) {
|
155
|
+
super(423, ...args);
|
151
156
|
}
|
152
157
|
}
|
153
158
|
|
154
159
|
export class FailedDependencyError extends HttpError {
|
155
|
-
constructor(
|
156
|
-
super(424,
|
160
|
+
constructor(...args: HttpErrorTailArgs) {
|
161
|
+
super(424, ...args);
|
157
162
|
}
|
158
163
|
}
|
159
164
|
|
160
165
|
export class UpgradeRequiredError extends HttpError {
|
161
|
-
constructor(
|
162
|
-
super(426,
|
166
|
+
constructor(...args: HttpErrorTailArgs) {
|
167
|
+
super(426, ...args);
|
163
168
|
}
|
164
169
|
}
|
165
170
|
|
166
171
|
export class PreconditionRequiredError extends HttpError {
|
167
|
-
constructor(
|
168
|
-
super(428,
|
172
|
+
constructor(...args: HttpErrorTailArgs) {
|
173
|
+
super(428, ...args);
|
169
174
|
}
|
170
175
|
}
|
171
176
|
|
172
177
|
export class TooManyRequestsError extends HttpError {
|
173
|
-
constructor(
|
174
|
-
super(429,
|
178
|
+
constructor(...args: HttpErrorTailArgs) {
|
179
|
+
super(429, ...args);
|
175
180
|
}
|
176
181
|
}
|
177
182
|
|
178
183
|
export class RequestHeaderFieldsTooLargeError extends HttpError {
|
179
|
-
constructor(
|
180
|
-
super(431,
|
184
|
+
constructor(...args: HttpErrorTailArgs) {
|
185
|
+
super(431, ...args);
|
181
186
|
}
|
182
187
|
}
|
183
188
|
|
184
189
|
export class UnavailableForLegalReasonsError extends HttpError {
|
185
|
-
constructor(
|
186
|
-
super(451,
|
190
|
+
constructor(...args: HttpErrorTailArgs) {
|
191
|
+
super(451, ...args);
|
187
192
|
}
|
188
193
|
}
|
189
194
|
|
190
195
|
export class InternalRequestError extends HttpError {
|
191
|
-
constructor(
|
192
|
-
super(500,
|
196
|
+
constructor(...args: HttpErrorTailArgs) {
|
197
|
+
super(500, ...args);
|
193
198
|
}
|
194
199
|
}
|
195
200
|
|
196
201
|
export class NotImplementedError extends HttpError {
|
197
|
-
constructor(
|
198
|
-
super(501,
|
202
|
+
constructor(...args: HttpErrorTailArgs) {
|
203
|
+
super(501, ...args);
|
199
204
|
}
|
200
205
|
}
|
201
206
|
|
202
207
|
export class BadGatewayError extends HttpError {
|
203
|
-
constructor(
|
204
|
-
super(502,
|
208
|
+
constructor(...args: HttpErrorTailArgs) {
|
209
|
+
super(502, ...args);
|
205
210
|
}
|
206
211
|
}
|
207
212
|
|
208
213
|
export class ServiceUnavailableError extends HttpError {
|
209
|
-
constructor(
|
210
|
-
super(503,
|
214
|
+
constructor(...args: HttpErrorTailArgs) {
|
215
|
+
super(503, ...args);
|
211
216
|
}
|
212
217
|
}
|
213
218
|
|
214
219
|
export class GatewayTimeoutError extends HttpError {
|
215
|
-
constructor(
|
216
|
-
super(504,
|
220
|
+
constructor(...args: HttpErrorTailArgs) {
|
221
|
+
super(504, ...args);
|
217
222
|
}
|
218
223
|
}
|
219
224
|
|
220
225
|
export class HTTPVersionNotSupportedError extends HttpError {
|
221
|
-
constructor(
|
222
|
-
super(505,
|
226
|
+
constructor(...args: HttpErrorTailArgs) {
|
227
|
+
super(505, ...args);
|
223
228
|
}
|
224
229
|
}
|
225
230
|
|
226
231
|
export class VariantAlsoNegotiatesError extends HttpError {
|
227
|
-
constructor(
|
228
|
-
super(506,
|
232
|
+
constructor(...args: HttpErrorTailArgs) {
|
233
|
+
super(506, ...args);
|
229
234
|
}
|
230
235
|
}
|
231
236
|
|
232
237
|
export class InsufficientStorageError extends HttpError {
|
233
|
-
constructor(
|
234
|
-
super(507,
|
238
|
+
constructor(...args: HttpErrorTailArgs) {
|
239
|
+
super(507, ...args);
|
235
240
|
}
|
236
241
|
}
|
237
242
|
|
238
243
|
export class LoopDetectedError extends HttpError {
|
239
|
-
constructor(
|
240
|
-
super(508,
|
244
|
+
constructor(...args: HttpErrorTailArgs) {
|
245
|
+
super(508, ...args);
|
241
246
|
}
|
242
247
|
}
|
243
248
|
|
244
249
|
export class NotExtendedError extends HttpError {
|
245
|
-
constructor(
|
246
|
-
super(510,
|
250
|
+
constructor(...args: HttpErrorTailArgs) {
|
251
|
+
super(510, ...args);
|
247
252
|
}
|
248
253
|
}
|
249
254
|
|
250
255
|
export class NetworkAuthenticationRequiredError extends HttpError {
|
251
|
-
constructor(
|
252
|
-
super(511,
|
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
|
-
|
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
|
}
|