@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 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<DankConfig['devPages']>
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<DankConfig['devPages']>
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<DankConfig['devPages']> {
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(updatePages)) {
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
  };
@@ -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(updatePages)) {
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eighty4/dank",
3
- "version": "0.0.5-4",
3
+ "version": "0.0.5-5",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Adam McKee Bennett <adam.be.g84d@gmail.com>",