@eighty4/dank 0.0.5-4 → 0.0.5-5
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/config.ts +44 -4
- package/lib/registry.ts +3 -4
- package/lib_js/config.js +30 -2
- package/lib_js/registry.js +1 -2
- package/package.json +1 -1
package/lib/config.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { createBuildTag } from './build_tag.ts'
|
|
|
3
3
|
import type {
|
|
4
4
|
DankConfig,
|
|
5
5
|
DankDetails,
|
|
6
|
+
DevPageMapping,
|
|
6
7
|
EsbuildConfig,
|
|
7
8
|
PageMapping,
|
|
8
9
|
ServiceWorkerBuilder,
|
|
@@ -33,12 +34,16 @@ export type ResolvedDankConfig = {
|
|
|
33
34
|
get esbuildPort(): number
|
|
34
35
|
get esbuild(): Readonly<Omit<EsbuildConfig, 'port'>> | undefined
|
|
35
36
|
get pages(): Readonly<Record<`/${string}`, PageMapping>>
|
|
36
|
-
get devPages(): Readonly<
|
|
37
|
+
get devPages(): Readonly<
|
|
38
|
+
Record<`/${string}`, Omit<DevPageMapping & PageMapping, 'pattern'>>
|
|
39
|
+
>
|
|
37
40
|
get services(): Readonly<DankConfig['services']>
|
|
38
41
|
get serviceWorkerBuilder(): DankConfig['serviceWorker']
|
|
39
42
|
|
|
40
43
|
buildTag(): Promise<string>
|
|
41
44
|
|
|
45
|
+
pageMappings(): Record<`/${string}`, PageMapping>
|
|
46
|
+
|
|
42
47
|
reload(): Promise<void>
|
|
43
48
|
}
|
|
44
49
|
|
|
@@ -77,7 +82,7 @@ class DankConfigInternal implements ResolvedDankConfig {
|
|
|
77
82
|
#esbuildPort: number = DEFAULT_ESBUILD_PORT
|
|
78
83
|
#esbuild: Readonly<Omit<EsbuildConfig, 'port'>> | undefined
|
|
79
84
|
#pages: Readonly<Record<`/${string}`, PageMapping>> = {}
|
|
80
|
-
#devPages: Readonly<
|
|
85
|
+
#devPages: Readonly<ResolvedDankConfig['devPages']> = {}
|
|
81
86
|
#services: Readonly<DankConfig['services']>
|
|
82
87
|
|
|
83
88
|
constructor(
|
|
@@ -119,7 +124,7 @@ class DankConfigInternal implements ResolvedDankConfig {
|
|
|
119
124
|
return this.#pages
|
|
120
125
|
}
|
|
121
126
|
|
|
122
|
-
get devPages(): Readonly<
|
|
127
|
+
get devPages(): Readonly<ResolvedDankConfig['devPages']> {
|
|
123
128
|
return this.#devPages
|
|
124
129
|
}
|
|
125
130
|
|
|
@@ -142,6 +147,17 @@ class DankConfigInternal implements ResolvedDankConfig {
|
|
|
142
147
|
return this.#buildTag
|
|
143
148
|
}
|
|
144
149
|
|
|
150
|
+
pageMappings(): ResolvedDankConfig['pages'] {
|
|
151
|
+
if (this.#mode === 'serve') {
|
|
152
|
+
return {
|
|
153
|
+
...this.#pages,
|
|
154
|
+
...this.#devPages,
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
return this.#pages
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
145
161
|
async reload() {
|
|
146
162
|
const userConfig = await resolveConfig(
|
|
147
163
|
this.#modulePath,
|
|
@@ -153,7 +169,7 @@ class DankConfigInternal implements ResolvedDankConfig {
|
|
|
153
169
|
this.#esbuildPort = resolveEsbuildPort(this.#flags, userConfig)
|
|
154
170
|
this.#esbuild = Object.freeze(userConfig.esbuild)
|
|
155
171
|
this.#pages = Object.freeze(normalizePages(userConfig.pages))
|
|
156
|
-
this.#devPages = Object.freeze(userConfig.devPages)
|
|
172
|
+
this.#devPages = Object.freeze(normalizeDevPages(userConfig.devPages))
|
|
157
173
|
this.#services = Object.freeze(userConfig.services)
|
|
158
174
|
this.#serviceWorkerBuilder = userConfig.serviceWorker
|
|
159
175
|
}
|
|
@@ -433,3 +449,27 @@ function normalizePages(
|
|
|
433
449
|
}
|
|
434
450
|
return result
|
|
435
451
|
}
|
|
452
|
+
|
|
453
|
+
function normalizeDevPages(
|
|
454
|
+
pages: DankConfig['devPages'],
|
|
455
|
+
): Record<string, Omit<DevPageMapping & PageMapping, 'pattern'>> {
|
|
456
|
+
if (pages) {
|
|
457
|
+
const result: Record<
|
|
458
|
+
string,
|
|
459
|
+
Omit<DevPageMapping & PageMapping, 'pattern'>
|
|
460
|
+
> = {}
|
|
461
|
+
for (const [url, mapping] of Object.entries(pages)) {
|
|
462
|
+
if (typeof mapping === 'string') {
|
|
463
|
+
result[url] = {
|
|
464
|
+
label: '',
|
|
465
|
+
webpage: mapping,
|
|
466
|
+
}
|
|
467
|
+
} else {
|
|
468
|
+
result[url] = mapping
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return result
|
|
472
|
+
} else {
|
|
473
|
+
return {}
|
|
474
|
+
}
|
|
475
|
+
}
|
package/lib/registry.ts
CHANGED
|
@@ -231,11 +231,10 @@ export class WebsiteRegistry extends EventEmitter<WebsiteRegistryEvents> {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
#configDiff() {
|
|
234
|
-
const updatePages: ResolvedDankConfig['pages'] = this.#c.devPages
|
|
235
|
-
? { ...this.#c.pages, ...this.#c.devPages }
|
|
236
|
-
: { ...this.#c.pages }
|
|
237
234
|
const prevPages = new Set(Object.keys(this.#pages))
|
|
238
|
-
for (const [urlPath, mapping] of Object.entries(
|
|
235
|
+
for (const [urlPath, mapping] of Object.entries(
|
|
236
|
+
this.#c.pageMappings(),
|
|
237
|
+
)) {
|
|
239
238
|
const existingPage = prevPages.delete(urlPath as `/${string}`)
|
|
240
239
|
if (existingPage) {
|
|
241
240
|
this.#configPageUpdate(urlPath as `/${string}`, mapping)
|
package/lib_js/config.js
CHANGED
|
@@ -36,7 +36,7 @@ class DankConfigInternal {
|
|
|
36
36
|
#esbuildPort = DEFAULT_ESBUILD_PORT;
|
|
37
37
|
#esbuild;
|
|
38
38
|
#pages = {};
|
|
39
|
-
#devPages;
|
|
39
|
+
#devPages = {};
|
|
40
40
|
#services;
|
|
41
41
|
constructor(mode, modulePath, dirs) {
|
|
42
42
|
this.#dirs = dirs;
|
|
@@ -80,6 +80,16 @@ class DankConfigInternal {
|
|
|
80
80
|
}
|
|
81
81
|
return this.#buildTag;
|
|
82
82
|
}
|
|
83
|
+
pageMappings() {
|
|
84
|
+
if (this.#mode === "serve") {
|
|
85
|
+
return {
|
|
86
|
+
...this.#pages,
|
|
87
|
+
...this.#devPages
|
|
88
|
+
};
|
|
89
|
+
} else {
|
|
90
|
+
return this.#pages;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
83
93
|
async reload() {
|
|
84
94
|
const userConfig = await resolveConfig(this.#modulePath, resolveDankDetails(this.#mode, this.#flags));
|
|
85
95
|
this.#buildTag = null;
|
|
@@ -88,7 +98,7 @@ class DankConfigInternal {
|
|
|
88
98
|
this.#esbuildPort = resolveEsbuildPort(this.#flags, userConfig);
|
|
89
99
|
this.#esbuild = Object.freeze(userConfig.esbuild);
|
|
90
100
|
this.#pages = Object.freeze(normalizePages(userConfig.pages));
|
|
91
|
-
this.#devPages = Object.freeze(userConfig.devPages);
|
|
101
|
+
this.#devPages = Object.freeze(normalizeDevPages(userConfig.devPages));
|
|
92
102
|
this.#services = Object.freeze(userConfig.services);
|
|
93
103
|
this.#serviceWorkerBuilder = userConfig.serviceWorker;
|
|
94
104
|
}
|
|
@@ -280,6 +290,24 @@ function normalizePages(pages) {
|
|
|
280
290
|
}
|
|
281
291
|
return result;
|
|
282
292
|
}
|
|
293
|
+
function normalizeDevPages(pages) {
|
|
294
|
+
if (pages) {
|
|
295
|
+
const result = {};
|
|
296
|
+
for (const [url, mapping] of Object.entries(pages)) {
|
|
297
|
+
if (typeof mapping === "string") {
|
|
298
|
+
result[url] = {
|
|
299
|
+
label: "",
|
|
300
|
+
webpage: mapping
|
|
301
|
+
};
|
|
302
|
+
} else {
|
|
303
|
+
result[url] = mapping;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return result;
|
|
307
|
+
} else {
|
|
308
|
+
return {};
|
|
309
|
+
}
|
|
310
|
+
}
|
|
283
311
|
export {
|
|
284
312
|
loadConfig
|
|
285
313
|
};
|
package/lib_js/registry.js
CHANGED
|
@@ -125,9 +125,8 @@ class WebsiteRegistry extends EventEmitter {
|
|
|
125
125
|
return manifest;
|
|
126
126
|
}
|
|
127
127
|
#configDiff() {
|
|
128
|
-
const updatePages = this.#c.devPages ? { ...this.#c.pages, ...this.#c.devPages } : { ...this.#c.pages };
|
|
129
128
|
const prevPages = new Set(Object.keys(this.#pages));
|
|
130
|
-
for (const [urlPath, mapping] of Object.entries(
|
|
129
|
+
for (const [urlPath, mapping] of Object.entries(this.#c.pageMappings())) {
|
|
131
130
|
const existingPage = prevPages.delete(urlPath);
|
|
132
131
|
if (existingPage) {
|
|
133
132
|
this.#configPageUpdate(urlPath, mapping);
|