@primate/core 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/private/App.d.ts +76 -149
- package/lib/private/App.js +22 -6
- package/lib/private/Flags.d.ts +5 -3
- package/lib/private/Flags.js +4 -2
- package/lib/private/app/Facade.d.ts +77 -156
- package/lib/private/app/Facade.js +4 -1
- package/lib/private/build/App.d.ts +4 -2
- package/lib/private/build/App.js +13 -4
- package/lib/private/build/client/index.js +24 -10
- package/lib/private/build/client/plugin/routes.d.ts +4 -0
- package/lib/private/build/client/plugin/routes.js +74 -0
- package/lib/private/build/hook.js +14 -6
- package/lib/private/build/index.d.ts +3 -2
- package/lib/private/build/index.js +9 -15
- package/lib/private/build/preclient/index.d.ts +3 -0
- package/lib/private/build/preclient/index.js +69 -0
- package/lib/private/build/preclient/plugin/routes.d.ts +4 -0
- package/lib/private/build/preclient/plugin/routes.js +44 -0
- package/lib/private/build/server/index.js +8 -5
- package/lib/private/build/server/plugin/assets.js +3 -3
- package/lib/private/build/server/plugin/native-addons.js +6 -8
- package/lib/private/build/server/plugin/node-imports.js +5 -7
- package/lib/private/build/server/plugin/route-client.d.ts +4 -0
- package/lib/private/build/server/plugin/route-client.js +110 -0
- package/lib/private/build/server/plugin/route.js +3 -10
- package/lib/private/build/server/plugin/virtual-pages.js +3 -3
- package/lib/private/build/server/plugin/virtual-routes.d.ts +2 -1
- package/lib/private/build/server/plugin/virtual-routes.js +27 -8
- package/lib/private/build/server/plugin/wasm.js +3 -2
- package/lib/private/client/Data.d.ts +1 -1
- package/lib/private/client/boot.js +2 -2
- package/lib/private/client/create-form.d.ts +11 -1
- package/lib/private/client/create-form.js +21 -3
- package/lib/private/client/index.d.ts +2 -2
- package/lib/private/client/navigate.d.ts +1 -0
- package/lib/private/client/navigate.js +7 -6
- package/lib/private/client/submit.d.ts +2 -1
- package/lib/private/client/submit.js +8 -7
- package/lib/private/client/{http.d.ts → transport.d.ts} +3 -3
- package/lib/private/client/{http.js → transport.js} +7 -9
- package/lib/private/config/schema.d.ts +5 -13
- package/lib/private/config/schema.js +1 -5
- package/lib/private/db/DB.d.ts +3 -1
- package/lib/private/db/MemoryDB.d.ts +5 -2
- package/lib/private/db/MemoryDB.js +33 -19
- package/lib/private/db/SQLDB.d.ts +23 -0
- package/lib/private/db/SQLDB.js +2 -0
- package/lib/private/db/errors.d.ts +74 -7
- package/lib/private/db/errors.js +31 -7
- package/lib/private/db/migrate/apply.js +8 -9
- package/lib/private/db/migrate/bundle.js +3 -2
- package/lib/private/db/migrate/create.js +18 -20
- package/lib/private/db/migrate/status.js +9 -10
- package/lib/private/db/migrate/store.d.ts +3 -3
- package/lib/private/db/migrate/store.js +5 -5
- package/lib/private/db/test.js +256 -115
- package/lib/private/db/testSQL.d.ts +50 -0
- package/lib/private/db/testSQL.js +196 -0
- package/lib/private/errors.d.ts +66 -9
- package/lib/private/errors.js +37 -16
- package/lib/private/frontend.d.ts +4 -4
- package/lib/private/frontend.js +11 -8
- package/lib/private/i18n/errors.d.ts +7 -1
- package/lib/private/i18n/errors.js +1 -1
- package/lib/private/i18n/index/types.d.ts +1 -1
- package/lib/private/i18n/locale.d.ts +1 -1
- package/lib/private/i18n/module.js +6 -5
- package/lib/private/index.d.ts +10 -2
- package/lib/private/index.js +13 -1
- package/lib/private/logger.d.ts +24 -0
- package/lib/private/logger.js +66 -0
- package/lib/private/module/Setup.d.ts +3 -0
- package/lib/private/module/create.d.ts +2 -1
- package/lib/private/module/create.js +4 -0
- package/lib/private/paths.d.ts +2 -3
- package/lib/private/paths.js +6 -12
- package/lib/private/request/ContentType.d.ts +3 -0
- package/lib/private/request/ContentType.js +2 -0
- package/lib/private/request/RequestBag.d.ts +2 -18
- package/lib/private/request/RequestBag.js +4 -16
- package/lib/private/request/RequestBody.d.ts +20 -28
- package/lib/private/request/RequestBody.js +63 -86
- package/lib/private/request/RequestFacade.d.ts +2 -2
- package/lib/private/request/handle.js +2 -2
- package/lib/private/request/parse.js +2 -4
- package/lib/private/request/route.js +15 -8
- package/lib/private/response/binary.d.ts +2 -2
- package/lib/private/response/binary.js +6 -6
- package/lib/private/response/error.js +6 -2
- package/lib/private/response/json.js +2 -2
- package/lib/private/response/null.d.ts +3 -0
- package/lib/private/response/null.js +6 -0
- package/lib/private/response/redirect.js +4 -3
- package/lib/private/response/respond.js +4 -4
- package/lib/private/response/sse.js +2 -2
- package/lib/private/response/text.js +2 -2
- package/lib/private/route/ContentTypeMap.d.ts +10 -0
- package/lib/private/route/ContentTypeMap.js +2 -0
- package/lib/private/route/Handler.d.ts +3 -2
- package/lib/private/route/NarrowedRequest.d.ts +23 -0
- package/lib/private/route/NarrowedRequest.js +2 -0
- package/lib/private/route/Options.d.ts +6 -1
- package/lib/private/route/Path.d.ts +2 -2
- package/lib/private/route/hook.d.ts +3 -1
- package/lib/private/route/hook.js +1 -2
- package/lib/private/route/router.d.ts +7 -11
- package/lib/private/route/router.js +13 -20
- package/lib/private/route.client.d.ts +36 -0
- package/lib/private/route.client.js +8 -0
- package/lib/private/route.d.ts +21 -5
- package/lib/private/route.js +21 -5
- package/lib/private/serve/App.d.ts +1 -2
- package/lib/private/serve/App.js +64 -58
- package/lib/private/serve/Init.d.ts +2 -0
- package/lib/private/serve/dev-module.js +2 -3
- package/lib/private/serve/index.js +5 -6
- package/lib/private/server/TAG.d.ts +1 -1
- package/lib/private/server/TAG.js +1 -1
- package/lib/private/session/index.d.ts +1 -1
- package/lib/private/session/index.js +3 -2
- package/lib/private/session/module.js +3 -3
- package/lib/private/session/schema.d.ts +3 -3
- package/lib/private/session/schema.js +4 -3
- package/lib/private/store/ExtractRelation.d.ts +7 -0
- package/lib/private/store/ExtractRelation.js +2 -0
- package/lib/private/store/ExtractSchema.d.ts +10 -0
- package/lib/private/{orm → store}/ForeignKey.d.ts +1 -1
- package/lib/private/store/Init.d.ts +13 -0
- package/lib/private/store/Init.js +2 -0
- package/lib/private/{orm/store.d.ts → store/Store.d.ts} +50 -50
- package/lib/private/{orm/store.js → store/Store.js} +163 -107
- package/lib/private/store/StoreInput.d.ts +11 -0
- package/lib/private/store/key.d.ts +8 -0
- package/lib/private/store/key.js +8 -0
- package/lib/private/{orm → store}/parse.d.ts +3 -3
- package/lib/private/{orm → store}/parse.js +7 -2
- package/lib/private/store/relation.d.ts +29 -0
- package/lib/private/store/relation.js +26 -0
- package/lib/private/store.d.ts +24 -0
- package/lib/private/store.js +10 -0
- package/lib/public/db/errors.d.ts +1 -1
- package/lib/public/db/errors.js +1 -1
- package/lib/public/db/testSQL.d.ts +2 -0
- package/lib/public/db/testSQL.js +2 -0
- package/lib/public/db.d.ts +1 -0
- package/lib/public/index.d.ts +1 -0
- package/lib/public/index.js +1 -1
- package/lib/public/response.d.ts +6 -6
- package/lib/public/response.js +4 -1
- package/lib/public/route.client.d.ts +2 -0
- package/lib/public/route.client.js +2 -0
- package/lib/public/store.d.ts +2 -0
- package/lib/public/store.js +2 -0
- package/package.json +24 -17
- package/lib/private/bye.d.ts +0 -3
- package/lib/private/bye.js +0 -4
- package/lib/private/log.d.ts +0 -20
- package/lib/private/log.js +0 -47
- package/lib/private/orm/ExtractSchema.d.ts +0 -9
- package/lib/private/orm/StoreInput.d.ts +0 -10
- package/lib/private/orm/key.d.ts +0 -8
- package/lib/private/orm/key.js +0 -8
- package/lib/private/orm/relation.d.ts +0 -43
- package/lib/private/orm/relation.js +0 -26
- package/lib/private/request/Verb.d.ts +0 -4
- package/lib/private/request/Verb.js +0 -2
- package/lib/private/request/verbs.d.ts +0 -3
- package/lib/private/request/verbs.js +0 -12
- package/lib/private/route/wrap.d.ts +0 -2
- package/lib/private/route/wrap.js +0 -12
- package/lib/public/log.d.ts +0 -2
- package/lib/public/log.js +0 -2
- package/lib/public/orm/key.d.ts +0 -2
- package/lib/public/orm/key.js +0 -2
- package/lib/public/orm/relation.d.ts +0 -2
- package/lib/public/orm/relation.js +0 -2
- package/lib/public/orm/store.d.ts +0 -2
- package/lib/public/orm/store.js +0 -2
- package/lib/public/request/verbs.d.ts +0 -2
- package/lib/public/request/verbs.js +0 -2
- /package/lib/private/{orm → store}/ExtractSchema.js +0 -0
- /package/lib/private/{orm → store}/ForeignKey.js +0 -0
- /package/lib/private/{orm → store}/PrimaryKey.d.ts +0 -0
- /package/lib/private/{orm → store}/PrimaryKey.js +0 -0
- /package/lib/private/{orm → store}/StoreInput.js +0 -0
package/lib/private/App.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ import type { FileRef } from "@rcompat/fs";
|
|
|
9
9
|
export default class App {
|
|
10
10
|
#private;
|
|
11
11
|
constructor(root: FileRef, config: Config, flags: typeof Flags.infer);
|
|
12
|
+
get log(): {
|
|
13
|
+
readonly level: string;
|
|
14
|
+
print(strings: TemplateStringsArray, ...params: unknown[]): void;
|
|
15
|
+
system(strings: TemplateStringsArray, ...params: unknown[]): void;
|
|
16
|
+
trace(strings: TemplateStringsArray, ...params: unknown[]): void;
|
|
17
|
+
info(strings: TemplateStringsArray, ...params: unknown[]): void;
|
|
18
|
+
warn(strings: TemplateStringsArray, ...params: unknown[]): void;
|
|
19
|
+
error(error: unknown): void;
|
|
20
|
+
};
|
|
12
21
|
init(): Promise<this>;
|
|
13
22
|
register(created: Created): void;
|
|
14
23
|
build_hooks(app: BuildApp): Promise<BuildApp>;
|
|
@@ -44,13 +53,16 @@ export default class App {
|
|
|
44
53
|
build: FileRef;
|
|
45
54
|
};
|
|
46
55
|
get mode(): Mode;
|
|
56
|
+
get secure(): boolean;
|
|
57
|
+
get url(): string;
|
|
47
58
|
get livereload(): {
|
|
48
59
|
host: string;
|
|
49
60
|
port: number;
|
|
50
61
|
};
|
|
51
62
|
get<T>(key: symbol): T;
|
|
52
63
|
set(key: symbol, value: unknown): void;
|
|
53
|
-
config<P extends string>(path: P): P extends `${infer P1}.${infer Rest}` ? P1 extends "http" | "livereload" | "db" | "env" | "
|
|
64
|
+
config<P extends string>(path: P): P extends `${infer P1}.${infer Rest}` ? P1 extends "http" | "livereload" | "db" | "env" | "conditions" | "modules" ? (Rest extends `${infer P1}.${infer Rest}` ? P1 extends keyof Exclude<{
|
|
65
|
+
conditions: string[];
|
|
54
66
|
http: {
|
|
55
67
|
csp: Record<string, string[]> | undefined;
|
|
56
68
|
headers: Record<string, string> | undefined;
|
|
@@ -72,21 +84,17 @@ export default class App {
|
|
|
72
84
|
db: {
|
|
73
85
|
migrations: {
|
|
74
86
|
table: string;
|
|
75
|
-
db: import("./db/DB.js").default
|
|
87
|
+
db: import("./db/DB.js").default<unknown>;
|
|
76
88
|
} | undefined;
|
|
77
89
|
};
|
|
78
90
|
env: {
|
|
79
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
91
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
80
92
|
[x: string]: unknown;
|
|
81
93
|
}> | undefined;
|
|
82
94
|
};
|
|
83
95
|
modules: import("./Module.js").default[];
|
|
84
|
-
request: {
|
|
85
|
-
body: {
|
|
86
|
-
parse: boolean;
|
|
87
|
-
};
|
|
88
|
-
};
|
|
89
96
|
}[P1], undefined> ? (Rest extends `${infer P1}.${infer Rest}` ? P1 extends keyof Exclude<Exclude<{
|
|
97
|
+
conditions: string[];
|
|
90
98
|
http: {
|
|
91
99
|
csp: Record<string, string[]> | undefined;
|
|
92
100
|
headers: Record<string, string> | undefined;
|
|
@@ -108,21 +116,17 @@ export default class App {
|
|
|
108
116
|
db: {
|
|
109
117
|
migrations: {
|
|
110
118
|
table: string;
|
|
111
|
-
db: import("./db/DB.js").default
|
|
119
|
+
db: import("./db/DB.js").default<unknown>;
|
|
112
120
|
} | undefined;
|
|
113
121
|
};
|
|
114
122
|
env: {
|
|
115
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
123
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
116
124
|
[x: string]: unknown;
|
|
117
125
|
}> | undefined;
|
|
118
126
|
};
|
|
119
127
|
modules: import("./Module.js").default[];
|
|
120
|
-
request: {
|
|
121
|
-
body: {
|
|
122
|
-
parse: boolean;
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
128
|
}[P1], undefined>[P1], undefined> ? (Rest extends `${infer P1}.${infer Rest}` ? P1 extends keyof Exclude<Exclude<Exclude<{
|
|
129
|
+
conditions: string[];
|
|
126
130
|
http: {
|
|
127
131
|
csp: Record<string, string[]> | undefined;
|
|
128
132
|
headers: Record<string, string> | undefined;
|
|
@@ -144,21 +148,17 @@ export default class App {
|
|
|
144
148
|
db: {
|
|
145
149
|
migrations: {
|
|
146
150
|
table: string;
|
|
147
|
-
db: import("./db/DB.js").default
|
|
151
|
+
db: import("./db/DB.js").default<unknown>;
|
|
148
152
|
} | undefined;
|
|
149
153
|
};
|
|
150
154
|
env: {
|
|
151
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
155
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
152
156
|
[x: string]: unknown;
|
|
153
157
|
}> | undefined;
|
|
154
158
|
};
|
|
155
159
|
modules: import("./Module.js").default[];
|
|
156
|
-
request: {
|
|
157
|
-
body: {
|
|
158
|
-
parse: boolean;
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
160
|
}[P1], undefined>[P1], undefined>[P1], undefined> ? (Rest extends `${infer P1}.${infer Rest}` ? P1 extends keyof Exclude<Exclude<Exclude<Exclude<{
|
|
161
|
+
conditions: string[];
|
|
162
162
|
http: {
|
|
163
163
|
csp: Record<string, string[]> | undefined;
|
|
164
164
|
headers: Record<string, string> | undefined;
|
|
@@ -180,21 +180,17 @@ export default class App {
|
|
|
180
180
|
db: {
|
|
181
181
|
migrations: {
|
|
182
182
|
table: string;
|
|
183
|
-
db: import("./db/DB.js").default
|
|
183
|
+
db: import("./db/DB.js").default<unknown>;
|
|
184
184
|
} | undefined;
|
|
185
185
|
};
|
|
186
186
|
env: {
|
|
187
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
187
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
188
188
|
[x: string]: unknown;
|
|
189
189
|
}> | undefined;
|
|
190
190
|
};
|
|
191
191
|
modules: import("./Module.js").default[];
|
|
192
|
-
request: {
|
|
193
|
-
body: {
|
|
194
|
-
parse: boolean;
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
192
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined> ? (Rest extends `${infer P1}.${infer Rest}` ? P1 extends keyof Exclude<Exclude<Exclude<Exclude<Exclude<{
|
|
193
|
+
conditions: string[];
|
|
198
194
|
http: {
|
|
199
195
|
csp: Record<string, string[]> | undefined;
|
|
200
196
|
headers: Record<string, string> | undefined;
|
|
@@ -216,21 +212,17 @@ export default class App {
|
|
|
216
212
|
db: {
|
|
217
213
|
migrations: {
|
|
218
214
|
table: string;
|
|
219
|
-
db: import("./db/DB.js").default
|
|
215
|
+
db: import("./db/DB.js").default<unknown>;
|
|
220
216
|
} | undefined;
|
|
221
217
|
};
|
|
222
218
|
env: {
|
|
223
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
219
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
224
220
|
[x: string]: unknown;
|
|
225
221
|
}> | undefined;
|
|
226
222
|
};
|
|
227
223
|
modules: import("./Module.js").default[];
|
|
228
|
-
request: {
|
|
229
|
-
body: {
|
|
230
|
-
parse: boolean;
|
|
231
|
-
};
|
|
232
|
-
};
|
|
233
224
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined> ? unknown : undefined : Rest extends keyof Exclude<Exclude<Exclude<Exclude<Exclude<{
|
|
225
|
+
conditions: string[];
|
|
234
226
|
http: {
|
|
235
227
|
csp: Record<string, string[]> | undefined;
|
|
236
228
|
headers: Record<string, string> | undefined;
|
|
@@ -252,21 +244,17 @@ export default class App {
|
|
|
252
244
|
db: {
|
|
253
245
|
migrations: {
|
|
254
246
|
table: string;
|
|
255
|
-
db: import("./db/DB.js").default
|
|
247
|
+
db: import("./db/DB.js").default<unknown>;
|
|
256
248
|
} | undefined;
|
|
257
249
|
};
|
|
258
250
|
env: {
|
|
259
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
251
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
260
252
|
[x: string]: unknown;
|
|
261
253
|
}> | undefined;
|
|
262
254
|
};
|
|
263
255
|
modules: import("./Module.js").default[];
|
|
264
|
-
request: {
|
|
265
|
-
body: {
|
|
266
|
-
parse: boolean;
|
|
267
|
-
};
|
|
268
|
-
};
|
|
269
256
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined> ? Exclude<Exclude<Exclude<Exclude<Exclude<{
|
|
257
|
+
conditions: string[];
|
|
270
258
|
http: {
|
|
271
259
|
csp: Record<string, string[]> | undefined;
|
|
272
260
|
headers: Record<string, string> | undefined;
|
|
@@ -288,21 +276,17 @@ export default class App {
|
|
|
288
276
|
db: {
|
|
289
277
|
migrations: {
|
|
290
278
|
table: string;
|
|
291
|
-
db: import("./db/DB.js").default
|
|
279
|
+
db: import("./db/DB.js").default<unknown>;
|
|
292
280
|
} | undefined;
|
|
293
281
|
};
|
|
294
282
|
env: {
|
|
295
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
283
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
296
284
|
[x: string]: unknown;
|
|
297
285
|
}> | undefined;
|
|
298
286
|
};
|
|
299
287
|
modules: import("./Module.js").default[];
|
|
300
|
-
request: {
|
|
301
|
-
body: {
|
|
302
|
-
parse: boolean;
|
|
303
|
-
};
|
|
304
|
-
};
|
|
305
288
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[Rest] : undefined) | (Exclude<Exclude<Exclude<Exclude<{
|
|
289
|
+
conditions: string[];
|
|
306
290
|
http: {
|
|
307
291
|
csp: Record<string, string[]> | undefined;
|
|
308
292
|
headers: Record<string, string> | undefined;
|
|
@@ -324,21 +308,17 @@ export default class App {
|
|
|
324
308
|
db: {
|
|
325
309
|
migrations: {
|
|
326
310
|
table: string;
|
|
327
|
-
db: import("./db/DB.js").default
|
|
311
|
+
db: import("./db/DB.js").default<unknown>;
|
|
328
312
|
} | undefined;
|
|
329
313
|
};
|
|
330
314
|
env: {
|
|
331
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
315
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
332
316
|
[x: string]: unknown;
|
|
333
317
|
}> | undefined;
|
|
334
318
|
};
|
|
335
319
|
modules: import("./Module.js").default[];
|
|
336
|
-
request: {
|
|
337
|
-
body: {
|
|
338
|
-
parse: boolean;
|
|
339
|
-
};
|
|
340
|
-
};
|
|
341
320
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[P1] & undefined) : undefined : Rest extends keyof Exclude<Exclude<Exclude<Exclude<{
|
|
321
|
+
conditions: string[];
|
|
342
322
|
http: {
|
|
343
323
|
csp: Record<string, string[]> | undefined;
|
|
344
324
|
headers: Record<string, string> | undefined;
|
|
@@ -360,21 +340,17 @@ export default class App {
|
|
|
360
340
|
db: {
|
|
361
341
|
migrations: {
|
|
362
342
|
table: string;
|
|
363
|
-
db: import("./db/DB.js").default
|
|
343
|
+
db: import("./db/DB.js").default<unknown>;
|
|
364
344
|
} | undefined;
|
|
365
345
|
};
|
|
366
346
|
env: {
|
|
367
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
347
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
368
348
|
[x: string]: unknown;
|
|
369
349
|
}> | undefined;
|
|
370
350
|
};
|
|
371
351
|
modules: import("./Module.js").default[];
|
|
372
|
-
request: {
|
|
373
|
-
body: {
|
|
374
|
-
parse: boolean;
|
|
375
|
-
};
|
|
376
|
-
};
|
|
377
352
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined> ? Exclude<Exclude<Exclude<Exclude<{
|
|
353
|
+
conditions: string[];
|
|
378
354
|
http: {
|
|
379
355
|
csp: Record<string, string[]> | undefined;
|
|
380
356
|
headers: Record<string, string> | undefined;
|
|
@@ -396,21 +372,17 @@ export default class App {
|
|
|
396
372
|
db: {
|
|
397
373
|
migrations: {
|
|
398
374
|
table: string;
|
|
399
|
-
db: import("./db/DB.js").default
|
|
375
|
+
db: import("./db/DB.js").default<unknown>;
|
|
400
376
|
} | undefined;
|
|
401
377
|
};
|
|
402
378
|
env: {
|
|
403
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
379
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
404
380
|
[x: string]: unknown;
|
|
405
381
|
}> | undefined;
|
|
406
382
|
};
|
|
407
383
|
modules: import("./Module.js").default[];
|
|
408
|
-
request: {
|
|
409
|
-
body: {
|
|
410
|
-
parse: boolean;
|
|
411
|
-
};
|
|
412
|
-
};
|
|
413
384
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1], undefined>[Rest] : undefined) | (Exclude<Exclude<Exclude<{
|
|
385
|
+
conditions: string[];
|
|
414
386
|
http: {
|
|
415
387
|
csp: Record<string, string[]> | undefined;
|
|
416
388
|
headers: Record<string, string> | undefined;
|
|
@@ -432,21 +404,17 @@ export default class App {
|
|
|
432
404
|
db: {
|
|
433
405
|
migrations: {
|
|
434
406
|
table: string;
|
|
435
|
-
db: import("./db/DB.js").default
|
|
407
|
+
db: import("./db/DB.js").default<unknown>;
|
|
436
408
|
} | undefined;
|
|
437
409
|
};
|
|
438
410
|
env: {
|
|
439
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
411
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
440
412
|
[x: string]: unknown;
|
|
441
413
|
}> | undefined;
|
|
442
414
|
};
|
|
443
415
|
modules: import("./Module.js").default[];
|
|
444
|
-
request: {
|
|
445
|
-
body: {
|
|
446
|
-
parse: boolean;
|
|
447
|
-
};
|
|
448
|
-
};
|
|
449
416
|
}[P1], undefined>[P1], undefined>[P1], undefined>[P1] & undefined) : undefined : Rest extends keyof Exclude<Exclude<Exclude<{
|
|
417
|
+
conditions: string[];
|
|
450
418
|
http: {
|
|
451
419
|
csp: Record<string, string[]> | undefined;
|
|
452
420
|
headers: Record<string, string> | undefined;
|
|
@@ -468,21 +436,17 @@ export default class App {
|
|
|
468
436
|
db: {
|
|
469
437
|
migrations: {
|
|
470
438
|
table: string;
|
|
471
|
-
db: import("./db/DB.js").default
|
|
439
|
+
db: import("./db/DB.js").default<unknown>;
|
|
472
440
|
} | undefined;
|
|
473
441
|
};
|
|
474
442
|
env: {
|
|
475
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
443
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
476
444
|
[x: string]: unknown;
|
|
477
445
|
}> | undefined;
|
|
478
446
|
};
|
|
479
447
|
modules: import("./Module.js").default[];
|
|
480
|
-
request: {
|
|
481
|
-
body: {
|
|
482
|
-
parse: boolean;
|
|
483
|
-
};
|
|
484
|
-
};
|
|
485
448
|
}[P1], undefined>[P1], undefined>[P1], undefined> ? Exclude<Exclude<Exclude<{
|
|
449
|
+
conditions: string[];
|
|
486
450
|
http: {
|
|
487
451
|
csp: Record<string, string[]> | undefined;
|
|
488
452
|
headers: Record<string, string> | undefined;
|
|
@@ -504,21 +468,17 @@ export default class App {
|
|
|
504
468
|
db: {
|
|
505
469
|
migrations: {
|
|
506
470
|
table: string;
|
|
507
|
-
db: import("./db/DB.js").default
|
|
471
|
+
db: import("./db/DB.js").default<unknown>;
|
|
508
472
|
} | undefined;
|
|
509
473
|
};
|
|
510
474
|
env: {
|
|
511
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
475
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
512
476
|
[x: string]: unknown;
|
|
513
477
|
}> | undefined;
|
|
514
478
|
};
|
|
515
479
|
modules: import("./Module.js").default[];
|
|
516
|
-
request: {
|
|
517
|
-
body: {
|
|
518
|
-
parse: boolean;
|
|
519
|
-
};
|
|
520
|
-
};
|
|
521
480
|
}[P1], undefined>[P1], undefined>[P1], undefined>[Rest] : undefined) | (Exclude<Exclude<{
|
|
481
|
+
conditions: string[];
|
|
522
482
|
http: {
|
|
523
483
|
csp: Record<string, string[]> | undefined;
|
|
524
484
|
headers: Record<string, string> | undefined;
|
|
@@ -540,21 +500,17 @@ export default class App {
|
|
|
540
500
|
db: {
|
|
541
501
|
migrations: {
|
|
542
502
|
table: string;
|
|
543
|
-
db: import("./db/DB.js").default
|
|
503
|
+
db: import("./db/DB.js").default<unknown>;
|
|
544
504
|
} | undefined;
|
|
545
505
|
};
|
|
546
506
|
env: {
|
|
547
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
507
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
548
508
|
[x: string]: unknown;
|
|
549
509
|
}> | undefined;
|
|
550
510
|
};
|
|
551
511
|
modules: import("./Module.js").default[];
|
|
552
|
-
request: {
|
|
553
|
-
body: {
|
|
554
|
-
parse: boolean;
|
|
555
|
-
};
|
|
556
|
-
};
|
|
557
512
|
}[P1], undefined>[P1], undefined>[P1] & undefined) : undefined : Rest extends keyof Exclude<Exclude<{
|
|
513
|
+
conditions: string[];
|
|
558
514
|
http: {
|
|
559
515
|
csp: Record<string, string[]> | undefined;
|
|
560
516
|
headers: Record<string, string> | undefined;
|
|
@@ -576,21 +532,17 @@ export default class App {
|
|
|
576
532
|
db: {
|
|
577
533
|
migrations: {
|
|
578
534
|
table: string;
|
|
579
|
-
db: import("./db/DB.js").default
|
|
535
|
+
db: import("./db/DB.js").default<unknown>;
|
|
580
536
|
} | undefined;
|
|
581
537
|
};
|
|
582
538
|
env: {
|
|
583
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
539
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
584
540
|
[x: string]: unknown;
|
|
585
541
|
}> | undefined;
|
|
586
542
|
};
|
|
587
543
|
modules: import("./Module.js").default[];
|
|
588
|
-
request: {
|
|
589
|
-
body: {
|
|
590
|
-
parse: boolean;
|
|
591
|
-
};
|
|
592
|
-
};
|
|
593
544
|
}[P1], undefined>[P1], undefined> ? Exclude<Exclude<{
|
|
545
|
+
conditions: string[];
|
|
594
546
|
http: {
|
|
595
547
|
csp: Record<string, string[]> | undefined;
|
|
596
548
|
headers: Record<string, string> | undefined;
|
|
@@ -612,21 +564,17 @@ export default class App {
|
|
|
612
564
|
db: {
|
|
613
565
|
migrations: {
|
|
614
566
|
table: string;
|
|
615
|
-
db: import("./db/DB.js").default
|
|
567
|
+
db: import("./db/DB.js").default<unknown>;
|
|
616
568
|
} | undefined;
|
|
617
569
|
};
|
|
618
570
|
env: {
|
|
619
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
571
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
620
572
|
[x: string]: unknown;
|
|
621
573
|
}> | undefined;
|
|
622
574
|
};
|
|
623
575
|
modules: import("./Module.js").default[];
|
|
624
|
-
request: {
|
|
625
|
-
body: {
|
|
626
|
-
parse: boolean;
|
|
627
|
-
};
|
|
628
|
-
};
|
|
629
576
|
}[P1], undefined>[P1], undefined>[Rest] : undefined) | (Exclude<{
|
|
577
|
+
conditions: string[];
|
|
630
578
|
http: {
|
|
631
579
|
csp: Record<string, string[]> | undefined;
|
|
632
580
|
headers: Record<string, string> | undefined;
|
|
@@ -648,21 +596,17 @@ export default class App {
|
|
|
648
596
|
db: {
|
|
649
597
|
migrations: {
|
|
650
598
|
table: string;
|
|
651
|
-
db: import("./db/DB.js").default
|
|
599
|
+
db: import("./db/DB.js").default<unknown>;
|
|
652
600
|
} | undefined;
|
|
653
601
|
};
|
|
654
602
|
env: {
|
|
655
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
603
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
656
604
|
[x: string]: unknown;
|
|
657
605
|
}> | undefined;
|
|
658
606
|
};
|
|
659
607
|
modules: import("./Module.js").default[];
|
|
660
|
-
request: {
|
|
661
|
-
body: {
|
|
662
|
-
parse: boolean;
|
|
663
|
-
};
|
|
664
|
-
};
|
|
665
608
|
}[P1], undefined>[P1] & undefined) : undefined : Rest extends keyof Exclude<{
|
|
609
|
+
conditions: string[];
|
|
666
610
|
http: {
|
|
667
611
|
csp: Record<string, string[]> | undefined;
|
|
668
612
|
headers: Record<string, string> | undefined;
|
|
@@ -684,21 +628,17 @@ export default class App {
|
|
|
684
628
|
db: {
|
|
685
629
|
migrations: {
|
|
686
630
|
table: string;
|
|
687
|
-
db: import("./db/DB.js").default
|
|
631
|
+
db: import("./db/DB.js").default<unknown>;
|
|
688
632
|
} | undefined;
|
|
689
633
|
};
|
|
690
634
|
env: {
|
|
691
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
635
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
692
636
|
[x: string]: unknown;
|
|
693
637
|
}> | undefined;
|
|
694
638
|
};
|
|
695
639
|
modules: import("./Module.js").default[];
|
|
696
|
-
request: {
|
|
697
|
-
body: {
|
|
698
|
-
parse: boolean;
|
|
699
|
-
};
|
|
700
|
-
};
|
|
701
640
|
}[P1], undefined> ? Exclude<{
|
|
641
|
+
conditions: string[];
|
|
702
642
|
http: {
|
|
703
643
|
csp: Record<string, string[]> | undefined;
|
|
704
644
|
headers: Record<string, string> | undefined;
|
|
@@ -720,21 +660,17 @@ export default class App {
|
|
|
720
660
|
db: {
|
|
721
661
|
migrations: {
|
|
722
662
|
table: string;
|
|
723
|
-
db: import("./db/DB.js").default
|
|
663
|
+
db: import("./db/DB.js").default<unknown>;
|
|
724
664
|
} | undefined;
|
|
725
665
|
};
|
|
726
666
|
env: {
|
|
727
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
667
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
728
668
|
[x: string]: unknown;
|
|
729
669
|
}> | undefined;
|
|
730
670
|
};
|
|
731
671
|
modules: import("./Module.js").default[];
|
|
732
|
-
request: {
|
|
733
|
-
body: {
|
|
734
|
-
parse: boolean;
|
|
735
|
-
};
|
|
736
|
-
};
|
|
737
672
|
}[P1], undefined>[Rest] : undefined) | ({
|
|
673
|
+
conditions: string[];
|
|
738
674
|
http: {
|
|
739
675
|
csp: Record<string, string[]> | undefined;
|
|
740
676
|
headers: Record<string, string> | undefined;
|
|
@@ -756,21 +692,17 @@ export default class App {
|
|
|
756
692
|
db: {
|
|
757
693
|
migrations: {
|
|
758
694
|
table: string;
|
|
759
|
-
db: import("./db/DB.js").default
|
|
695
|
+
db: import("./db/DB.js").default<unknown>;
|
|
760
696
|
} | undefined;
|
|
761
697
|
};
|
|
762
698
|
env: {
|
|
763
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
699
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
764
700
|
[x: string]: unknown;
|
|
765
701
|
}> | undefined;
|
|
766
702
|
};
|
|
767
703
|
modules: import("./Module.js").default[];
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
parse: boolean;
|
|
771
|
-
};
|
|
772
|
-
};
|
|
773
|
-
}[P1] & undefined) : undefined : P extends "http" | "livereload" | "db" | "env" | "request" | "modules" ? {
|
|
704
|
+
}[P1] & undefined) : undefined : P extends "http" | "livereload" | "db" | "env" | "conditions" | "modules" ? {
|
|
705
|
+
conditions: string[];
|
|
774
706
|
http: {
|
|
775
707
|
csp: Record<string, string[]> | undefined;
|
|
776
708
|
headers: Record<string, string> | undefined;
|
|
@@ -792,20 +724,15 @@ export default class App {
|
|
|
792
724
|
db: {
|
|
793
725
|
migrations: {
|
|
794
726
|
table: string;
|
|
795
|
-
db: import("./db/DB.js").default
|
|
727
|
+
db: import("./db/DB.js").default<unknown>;
|
|
796
728
|
} | undefined;
|
|
797
729
|
};
|
|
798
730
|
env: {
|
|
799
|
-
schema: import("pema").ObjectType<import("@rcompat/
|
|
731
|
+
schema: import("pema").ObjectType<import("@rcompat/type").Dict<import("pema").Parsed<unknown>>, {
|
|
800
732
|
[x: string]: unknown;
|
|
801
733
|
}> | undefined;
|
|
802
734
|
};
|
|
803
735
|
modules: import("./Module.js").default[];
|
|
804
|
-
request: {
|
|
805
|
-
body: {
|
|
806
|
-
parse: boolean;
|
|
807
|
-
};
|
|
808
|
-
};
|
|
809
736
|
}[P] : undefined;
|
|
810
737
|
runpath(...directories: string[]): FileRef;
|
|
811
738
|
}
|
package/lib/private/App.js
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import E from "#errors";
|
|
2
2
|
import location from "#location";
|
|
3
|
+
import logger from "#logger";
|
|
3
4
|
import create from "#module/create";
|
|
4
5
|
import TargetManager from "#target/Manager";
|
|
5
6
|
import dict from "@rcompat/dict";
|
|
6
|
-
import
|
|
7
|
+
import is from "@rcompat/is";
|
|
7
8
|
import p from "pema";
|
|
8
9
|
export default class App {
|
|
9
10
|
#path;
|
|
10
11
|
#root;
|
|
11
12
|
#config;
|
|
13
|
+
#log;
|
|
12
14
|
#hooks = {
|
|
13
15
|
init: [],
|
|
14
16
|
build: [],
|
|
15
17
|
serve: [],
|
|
16
18
|
handle: [],
|
|
17
19
|
route: [],
|
|
20
|
+
log: [],
|
|
18
21
|
};
|
|
19
22
|
#module_names = new Set();
|
|
20
23
|
#kv = new Map();
|
|
@@ -22,20 +25,24 @@ export default class App {
|
|
|
22
25
|
#target;
|
|
23
26
|
#target_name;
|
|
24
27
|
constructor(root, config, flags) {
|
|
25
|
-
if (Object.values(location).includes(flags.
|
|
26
|
-
throw E.app_reserved_directory(flags.
|
|
28
|
+
if (Object.values(location).includes(flags.outdir)) {
|
|
29
|
+
throw E.app_reserved_directory(flags.outdir);
|
|
27
30
|
}
|
|
28
31
|
this.#root = root;
|
|
29
32
|
this.#config = config;
|
|
30
33
|
for (const module of config.modules)
|
|
31
34
|
this.register(create(module));
|
|
32
|
-
this.#path =
|
|
35
|
+
this.#path = dict.map({
|
|
33
36
|
...location,
|
|
34
|
-
build: flags.
|
|
35
|
-
}
|
|
37
|
+
build: flags.outdir,
|
|
38
|
+
}, (_, path) => root.join(path));
|
|
36
39
|
this.#mode = flags.mode;
|
|
37
40
|
this.#target = new TargetManager(this);
|
|
38
41
|
this.#target_name = flags.target;
|
|
42
|
+
this.#log = logger(flags.log, this.#hooks.log);
|
|
43
|
+
}
|
|
44
|
+
get log() {
|
|
45
|
+
return this.#log;
|
|
39
46
|
}
|
|
40
47
|
async init() {
|
|
41
48
|
for (const hook of this.#hooks.init)
|
|
@@ -53,6 +60,7 @@ export default class App {
|
|
|
53
60
|
this.#hooks.serve.push(...created.hooks.serve);
|
|
54
61
|
this.#hooks.handle.push(...created.hooks.handle);
|
|
55
62
|
this.#hooks.route.push(...created.hooks.route);
|
|
63
|
+
this.#hooks.log.push(...created.hooks.log);
|
|
56
64
|
}
|
|
57
65
|
async build_hooks(app) {
|
|
58
66
|
for (const hook of this.#hooks.build)
|
|
@@ -85,6 +93,14 @@ export default class App {
|
|
|
85
93
|
get mode() {
|
|
86
94
|
return this.#mode;
|
|
87
95
|
}
|
|
96
|
+
get secure() {
|
|
97
|
+
const ssl = this.config("http.ssl");
|
|
98
|
+
return is.defined(ssl.key) && is.defined(ssl.cert);
|
|
99
|
+
}
|
|
100
|
+
get url() {
|
|
101
|
+
const { host, port } = this.config("http");
|
|
102
|
+
return `http${this.secure ? "s" : ""}://${host}:${port}`;
|
|
103
|
+
}
|
|
88
104
|
get livereload() {
|
|
89
105
|
const { host = this.config("http.host"), port = p.uint.port().parse(this.config("http.port") - 1), } = this.config("livereload");
|
|
90
106
|
return { host, port };
|
package/lib/private/Flags.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
declare const _default: import("pema").ObjectType<import("pema").NormalizeSchemaObject<{
|
|
2
|
-
readonly mode: import("pema").UnionType<[import("pema").LiteralType<"production">, import("pema").LiteralType<"development">, import("pema").LiteralType<"testing">]>;
|
|
2
|
+
readonly mode: import("pema").DefaultType<import("pema").UnionType<[import("pema").LiteralType<"production">, import("pema").LiteralType<"development">, import("pema").LiteralType<"testing">]>, "development" | "production" | "testing">;
|
|
3
3
|
readonly target: import("pema").DefaultType<import("pema").StringType, "web">;
|
|
4
|
-
readonly
|
|
4
|
+
readonly outdir: import("pema").DefaultType<import("pema").StringType, "build">;
|
|
5
|
+
readonly log: import("pema").DefaultType<import("pema").UnionType<[import("pema").LiteralType<"error">, import("pema").LiteralType<"warn">, import("pema").LiteralType<"info">, import("pema").LiteralType<"trace">]>, "trace" | "info" | "error" | "warn">;
|
|
5
6
|
}>, {
|
|
6
7
|
mode: "development" | "production" | "testing";
|
|
7
8
|
target: string;
|
|
8
|
-
|
|
9
|
+
outdir: string;
|
|
10
|
+
log: "trace" | "info" | "error" | "warn";
|
|
9
11
|
}>;
|
|
10
12
|
export default _default;
|
|
11
13
|
//# sourceMappingURL=Flags.d.ts.map
|
package/lib/private/Flags.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { Schema as log } from "#logger";
|
|
1
2
|
import p from "pema";
|
|
2
3
|
export default p({
|
|
3
|
-
mode: p.union("production", "development", "testing"),
|
|
4
|
+
mode: p.union("production", "development", "testing").default("production"),
|
|
4
5
|
target: p.string.default("web"),
|
|
5
|
-
|
|
6
|
+
outdir: p.string.default("build"),
|
|
7
|
+
log,
|
|
6
8
|
});
|
|
7
9
|
//# sourceMappingURL=Flags.js.map
|