@moku-labs/web 0.1.0-alpha.3 → 0.1.0-alpha.4

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.
Files changed (33) hide show
  1. package/README.md +36 -1
  2. package/dist/bin/moku.cjs +2 -2
  3. package/dist/bin/moku.mjs +1 -1
  4. package/dist/chunk-DQk6qfdC.mjs +18 -0
  5. package/dist/{factory-DVcAQYEZ.cjs → factory-CMOo4n6a.cjs} +13 -1
  6. package/dist/{factory-BHhulW27.d.mts → factory-DRFGSslp.d.mts} +26 -2
  7. package/dist/{factory-DwpBwjDk.mjs → factory-DiKypQqs.mjs} +2 -2
  8. package/dist/{factory-D0m7Xil2.d.cts → factory-k-YoScgB.d.cts} +26 -2
  9. package/dist/{index-CddOHo8I.d.mts → index-DH3jlpNi.d.mts} +107 -17
  10. package/dist/{route-builder-CKvvehVO.d.cts → index-DaY7vTuo.d.cts} +107 -17
  11. package/dist/index.cjs +73 -2
  12. package/dist/index.d.cts +5 -4
  13. package/dist/index.d.mts +5 -4
  14. package/dist/index.mjs +4 -4
  15. package/dist/plugins/head/build.d.cts +1 -1
  16. package/dist/plugins/head/build.d.mts +1 -1
  17. package/dist/plugins/head/build.mjs +1 -1
  18. package/dist/plugins/spa/index.cjs +1 -1
  19. package/dist/plugins/spa/index.d.cts +1 -1
  20. package/dist/plugins/spa/index.d.mts +1 -1
  21. package/dist/plugins/spa/index.mjs +1 -1
  22. package/dist/{primitives-BBo4wxUL.d.cts → primitives-DKgZfRAO.d.mts} +4 -2
  23. package/dist/{primitives-Dlfi3JTx.d.mts → primitives-yZqQkOVR.d.cts} +4 -2
  24. package/dist/{project-1pAh4RxJ.cjs → project-B8z4jeMC.cjs} +115 -2
  25. package/dist/{project-BaG_ipVz.mjs → project-guCYpUeD.mjs} +44 -3
  26. package/dist/test.cjs +2 -2
  27. package/dist/test.d.cts +1 -1
  28. package/dist/test.d.mts +1 -1
  29. package/dist/test.mjs +2 -2
  30. package/dist/{wrangler-BHdkyMRj.cjs → wrangler-Bomk9mU-.cjs} +1 -1
  31. package/package.json +1 -1
  32. /package/dist/{primitives-gO5i1tD8.mjs → primitives-Dhko-oLM.mjs} +0 -0
  33. /package/dist/{wrangler-Coyrznz4.mjs → wrangler-BlZWVmX9.mjs} +0 -0
package/README.md CHANGED
@@ -28,10 +28,45 @@ await app.build.run()
28
28
 
29
29
  ## Architecture
30
30
 
31
- - **9 domain-grouped plugins** wired via `@moku-labs/core` micro-kernel
31
+ - **10 domain-grouped plugins** (`log`, `env`, `site`, `i18n`, `content`, `router`, `head`, `build`, `spa`, `deploy`) wired via `@moku-labs/core` micro-kernel
32
32
  - **Bun-native bundler** (no Vite subprocess)
33
33
  - **Generic-preserving `createApp` wrapper** projects flat config → `pluginConfigs`
34
34
  - **Dev mode** lives in `bin/moku.ts dev` (NOT a plugin)
35
+ - **Cloudflare Pages deploy** via the `deploy` plugin and `moku deploy` CLI (see `src/plugins/deploy/README.md`)
36
+
37
+ ## Writing custom plugins
38
+
39
+ Consumer apps can extend the framework with their own plugins using the framework-bound `createPlugin` (NOT the raw one from `@moku-labs/core`):
40
+
41
+ ```ts
42
+ import { createApp, createPlugin, i18n, type Site } from '@moku-labs/web'
43
+
44
+ const analytics = createPlugin('analytics', {
45
+ depends: [i18n],
46
+ config: { trackingId: '' },
47
+ createState: () => ({ events: [] as string[] }),
48
+ api: (ctx) => ({ track: (name: string) => { ctx.state.events.push(name) } }),
49
+ })
50
+
51
+ const siteConfig: Site.SiteConfig = {
52
+ name: 'My Blog',
53
+ url: 'https://example.com',
54
+ author: 'Jane Doe',
55
+ description: 'Personal blog',
56
+ }
57
+ ```
58
+
59
+ All 10 plugin instances (`log, env, site, i18n, content, router, head, build, spa, deploy`) and their namespaced config types (`Log, Env, Site, I18n, Content, Router, Head, Build, Spa, Deploy`) are exported from the main entry — use them for `ctx.require(...)` access and for typing `pluginConfigs` overrides.
60
+
61
+ ## Test helpers (`@moku-labs/web/test`)
62
+
63
+ Framework-aware test factories for isolating plugin behavior in unit tests:
64
+
65
+ ```ts
66
+ import { createTestApp, createTestLog, createTestEnv } from '@moku-labs/web/test'
67
+ ```
68
+
69
+ Each factory returns a FRESH instance per call — never a module-level singleton — safe for parallel vitest workers.
35
70
 
36
71
  ## License
37
72
 
package/dist/bin/moku.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env bun
2
- const require_project = require('../project-1pAh4RxJ.cjs');
3
- const require_wrangler = require('../wrangler-BHdkyMRj.cjs');
2
+ const require_project = require('../project-B8z4jeMC.cjs');
3
+ const require_wrangler = require('../wrangler-Bomk9mU-.cjs');
4
4
  let node_fs = require("node:fs");
5
5
  let node_fs_promises = require("node:fs/promises");
6
6
  let node_path = require("node:path");
package/dist/bin/moku.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env bun
2
- import { a as runWrangler, c as readWranglerConfig, l as writeWranglerConfig, n as WRANGLER_ACTION_SHA, o as diffWranglerConfig, r as buildWranglerArgs, s as generateWranglerConfig, t as MOKU_WRANGLER_VERSION } from "../wrangler-Coyrznz4.mjs";
2
+ import { a as runWrangler, c as readWranglerConfig, l as writeWranglerConfig, n as WRANGLER_ACTION_SHA, o as diffWranglerConfig, r as buildWranglerArgs, s as generateWranglerConfig, t as MOKU_WRANGLER_VERSION } from "../wrangler-BlZWVmX9.mjs";
3
3
  import { existsSync, mkdirSync, readFileSync, statSync, watch } from "node:fs";
4
4
  import { writeFile } from "node:fs/promises";
5
5
  import { dirname, extname, join, normalize, resolve, sep } from "node:path";
@@ -0,0 +1,18 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (!no_symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __exportAll as t };
@@ -1,4 +1,4 @@
1
- const require_project = require('./project-1pAh4RxJ.cjs');
1
+ const require_project = require('./project-B8z4jeMC.cjs');
2
2
  const require_primitives = require('./primitives-BYUp6kae.cjs');
3
3
  const require_plugins_head_build = require('./plugins/head/build.cjs');
4
4
  let _moku_labs_core = require("@moku-labs/core");
@@ -1666,6 +1666,12 @@ Object.defineProperty(exports, 'createSpaState', {
1666
1666
  return createSpaState;
1667
1667
  }
1668
1668
  });
1669
+ Object.defineProperty(exports, 'env', {
1670
+ enumerable: true,
1671
+ get: function () {
1672
+ return env;
1673
+ }
1674
+ });
1669
1675
  Object.defineProperty(exports, 'head', {
1670
1676
  enumerable: true,
1671
1677
  get: function () {
@@ -1678,6 +1684,12 @@ Object.defineProperty(exports, 'i18n', {
1678
1684
  return i18n;
1679
1685
  }
1680
1686
  });
1687
+ Object.defineProperty(exports, 'log', {
1688
+ enumerable: true,
1689
+ get: function () {
1690
+ return log;
1691
+ }
1692
+ });
1681
1693
  Object.defineProperty(exports, 'registerSpaEvents', {
1682
1694
  enumerable: true,
1683
1695
  get: function () {
@@ -1,4 +1,6 @@
1
- //#region src/plugins/spa/types.d.ts
1
+ declare namespace types_d_exports {
2
+ export { ComponentDef, ComponentHooks, ComponentInstance, ComponentMap, ComponentsSubApi, EventBus, EventBusListener, HeadSubApi, LifecycleEventMap, MountContext, NavEndContext, NavStartContext, PageData, ProgressSubApi, RouterHandlers, RouterSubApi, SpaApi, SpaConfig, SpaRuntime, SpaState, UnMountContext };
3
+ }
2
4
  /** @file spa plugin shared types — config envelope, composed state, composed API, ComponentDef. */
3
5
  type ComponentHooks = {
4
6
  onCreate?(element: Element): void;
@@ -39,6 +41,7 @@ type SpaConfig = {
39
41
  config: SpaRuntime;
40
42
  components: ComponentDef[];
41
43
  };
44
+ type ComponentMap = ComponentDef[];
42
45
  type EventBusListener = (payload: unknown) => void;
43
46
  type EventBus = {
44
47
  on(event: string, listener: EventBusListener): () => void;
@@ -83,8 +86,29 @@ type SpaApi = {
83
86
  progress: ProgressSubApi;
84
87
  components: ComponentsSubApi;
85
88
  };
89
+ type MountContext = {
90
+ container: Element;
91
+ pageData?: unknown;
92
+ url: string;
93
+ };
94
+ type NavStartContext = {
95
+ url: string;
96
+ fromUrl: string;
97
+ };
98
+ type NavEndContext = {
99
+ url: string;
100
+ pageData?: unknown;
101
+ doc?: Document;
102
+ };
103
+ type UnMountContext = {
104
+ reason: 'navigation' | 'destroy';
105
+ element: Element;
106
+ };
107
+ type PageData = unknown;
108
+ type RouterHandlers = unknown;
109
+ type LifecycleEventMap = unknown;
86
110
  //#endregion
87
111
  //#region src/plugins/spa/components/factory.d.ts
88
112
  declare const createComponent: (name: string, hooks: ComponentHooks) => ComponentDef;
89
113
  //#endregion
90
- export { SpaConfig as a, SpaApi as i, ComponentDef as n, SpaState as o, ComponentHooks as r, createComponent as t };
114
+ export { SpaConfig as a, SpaApi as i, ComponentDef as n, SpaState as o, ComponentHooks as r, types_d_exports as s, createComponent as t };
@@ -1,4 +1,4 @@
1
- import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-gO5i1tD8.mjs";
1
+ import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-Dhko-oLM.mjs";
2
2
  import { buildArticleHead } from "./plugins/head/build.mjs";
3
3
  import { createCoreConfig, createCorePlugin } from "@moku-labs/core";
4
4
 
@@ -1599,4 +1599,4 @@ const createComponent = (name, hooks) => {
1599
1599
  };
1600
1600
 
1601
1601
  //#endregion
1602
- export { createEnvState as _, createSpaApi as a, route as c, coreConfig as d, createCore as f, validateSchema as g, createLogApi as h, createClientRuntime as i, site as l, createLogState as m, createSpaState as n, head as o, createPlugin as p, registerSpaEvents as r, router as s, createComponent as t, i18n as u, createEnvApi as v };
1602
+ export { env as _, createSpaApi as a, createEnvApi as b, route as c, coreConfig as d, createCore as f, createLogApi as g, createLogState as h, createClientRuntime as i, site as l, log as m, createSpaState as n, head as o, createPlugin as p, registerSpaEvents as r, router as s, createComponent as t, i18n as u, validateSchema as v, createEnvState as y };
@@ -1,4 +1,6 @@
1
- //#region src/plugins/spa/types.d.ts
1
+ declare namespace types_d_exports {
2
+ export { ComponentDef, ComponentHooks, ComponentInstance, ComponentMap, ComponentsSubApi, EventBus, EventBusListener, HeadSubApi, LifecycleEventMap, MountContext, NavEndContext, NavStartContext, PageData, ProgressSubApi, RouterHandlers, RouterSubApi, SpaApi, SpaConfig, SpaRuntime, SpaState, UnMountContext };
3
+ }
2
4
  /** @file spa plugin shared types — config envelope, composed state, composed API, ComponentDef. */
3
5
  type ComponentHooks = {
4
6
  onCreate?(element: Element): void;
@@ -39,6 +41,7 @@ type SpaConfig = {
39
41
  config: SpaRuntime;
40
42
  components: ComponentDef[];
41
43
  };
44
+ type ComponentMap = ComponentDef[];
42
45
  type EventBusListener = (payload: unknown) => void;
43
46
  type EventBus = {
44
47
  on(event: string, listener: EventBusListener): () => void;
@@ -83,8 +86,29 @@ type SpaApi = {
83
86
  progress: ProgressSubApi;
84
87
  components: ComponentsSubApi;
85
88
  };
89
+ type MountContext = {
90
+ container: Element;
91
+ pageData?: unknown;
92
+ url: string;
93
+ };
94
+ type NavStartContext = {
95
+ url: string;
96
+ fromUrl: string;
97
+ };
98
+ type NavEndContext = {
99
+ url: string;
100
+ pageData?: unknown;
101
+ doc?: Document;
102
+ };
103
+ type UnMountContext = {
104
+ reason: 'navigation' | 'destroy';
105
+ element: Element;
106
+ };
107
+ type PageData = unknown;
108
+ type RouterHandlers = unknown;
109
+ type LifecycleEventMap = unknown;
86
110
  //#endregion
87
111
  //#region src/plugins/spa/components/factory.d.ts
88
112
  declare const createComponent: (name: string, hooks: ComponentHooks) => ComponentDef;
89
113
  //#endregion
90
- export { SpaConfig as a, SpaApi as i, ComponentDef as n, SpaState as o, ComponentHooks as r, createComponent as t };
114
+ export { SpaConfig as a, SpaApi as i, ComponentDef as n, SpaState as o, ComponentHooks as r, types_d_exports as s, createComponent as t };
@@ -1,8 +1,12 @@
1
- import { p as OGImageConfig } from "./primitives-Dlfi3JTx.mjs";
2
- import { n as ComponentDef } from "./factory-BHhulW27.mjs";
1
+ import { d as HeadPluginConfig, f as HeadState, l as HeadApi, p as OGImageConfig } from "./primitives-DKgZfRAO.mjs";
2
+ import { n as ComponentDef } from "./factory-DRFGSslp.mjs";
3
+ import * as _moku_labs_core0 from "@moku-labs/core";
3
4
  import { Processor } from "unified";
4
5
 
5
6
  //#region src/plugins/log/types.d.ts
7
+ declare namespace types_d_exports$7 {
8
+ export { ExpectChain, LogApi, LogConfig, LogEntry, LogLevel, LogSink, LogState };
9
+ }
6
10
  /** @file log plugin types — LogEntry, LogSink, ExpectChain, LogState, LogApi. */
7
11
  type LogLevel = 'debug' | 'info' | 'warn' | 'error';
8
12
  type LogEntry = {
@@ -24,6 +28,10 @@ type LogState = {
24
28
  entries: LogEntry[];
25
29
  sinks: LogSink[];
26
30
  };
31
+ type LogConfig = {
32
+ level: LogLevel;
33
+ mode: 'auto' | 'production' | 'test' | 'dev';
34
+ };
27
35
  type LogApi = {
28
36
  info(event: string, data?: unknown): void;
29
37
  debug(event: string, data?: unknown): void;
@@ -34,8 +42,9 @@ type LogApi = {
34
42
  addSink(sink: LogSink): void;
35
43
  reset(): void;
36
44
  };
37
- //#endregion
38
- //#region src/plugins/env/types.d.ts
45
+ declare namespace types_d_exports$6 {
46
+ export { EnvApi, EnvConfig, EnvProvider, EnvState, EnvVarSpec };
47
+ }
39
48
  /** @file env plugin types — schema, provider, EnvApi. */
40
49
  type EnvVarSpec = {
41
50
  public: boolean;
@@ -110,8 +119,24 @@ type Events = {
110
119
  url: string;
111
120
  };
112
121
  };
113
- //#endregion
114
- //#region src/plugins/site/types.d.ts
122
+ declare const createPlugin: _moku_labs_core0.BoundCreatePluginFunction<Config, Events, _moku_labs_core0.CoreApisFromTuple<[_moku_labs_core0.CorePluginInstance<"log", {
123
+ level: "info";
124
+ mode: "auto";
125
+ }, LogState, LogApi>, _moku_labs_core0.CorePluginInstance<"env", {
126
+ schema: {};
127
+ providers: never[];
128
+ publicPrefix: string;
129
+ }, EnvState, EnvApi>]>>, createCore: _moku_labs_core0.BoundCreateCoreFunction<Config, Events, [_moku_labs_core0.CorePluginInstance<"log", {
130
+ level: "info";
131
+ mode: "auto";
132
+ }, LogState, LogApi>, _moku_labs_core0.CorePluginInstance<"env", {
133
+ schema: {};
134
+ providers: never[];
135
+ publicPrefix: string;
136
+ }, EnvState, EnvApi>]>;
137
+ declare namespace types_d_exports$5 {
138
+ export { SiteApi, SiteConfig, SiteState };
139
+ }
115
140
  /** @file site plugin types — SiteConfig + SiteState + SiteApi. */
116
141
  type SiteConfig = {
117
142
  /** Display name of the site. */name: string; /** Base URL of the site (no trailing slash). */
@@ -129,8 +154,9 @@ type SiteApi = {
129
154
  author(): string;
130
155
  description(): string;
131
156
  };
132
- //#endregion
133
- //#region src/plugins/i18n/types.d.ts
157
+ declare namespace types_d_exports$4 {
158
+ export { I18nApi, I18nConfig, I18nState };
159
+ }
134
160
  /** @file i18n plugin types — I18nConfig (generic over locale tuple), I18nState, I18nApi. */
135
161
  type I18nConfig<TLocales extends readonly string[] = readonly string[]> = {
136
162
  /** Active locale codes (literal tuple preserved). */locales: TLocales; /** Default locale (must be member of locales). */
@@ -149,8 +175,9 @@ type I18nApi<TLocales extends readonly string[] = readonly string[]> = {
149
175
  ogLocale(locale: TLocales[number]): string;
150
176
  t(locale: TLocales[number], key: string): string;
151
177
  };
152
- //#endregion
153
- //#region src/plugins/content/types.d.ts
178
+ declare namespace types_d_exports$3 {
179
+ export { Article, ComputedFields, ContentApi, ContentConfig, ContentState, Frontmatter, RehypePluginEntry, RemarkPluginEntry };
180
+ }
154
181
  type Frontmatter = {
155
182
  title: string;
156
183
  date: string;
@@ -197,8 +224,9 @@ type ContentApi = {
197
224
  invalidate(paths: string[]): void;
198
225
  reset(): void;
199
226
  };
200
- //#endregion
201
- //#region src/plugins/router/types.d.ts
227
+ declare namespace types_d_exports$2 {
228
+ export { HeadConfig, LayoutComponent, RenderContext, RouteBuilder, RouteEntry, RouteSpec, RouterApi, RouterConfig, RouterState, VNode };
229
+ }
202
230
  /** @file router plugin types — RouteSpec (non-accumulating), RouteBuilder, RouterApi. */
203
231
  /** Render context passed to route handlers. */
204
232
  type RenderContext = {
@@ -269,8 +297,11 @@ type RouterApi<Routes extends Record<string, RouteSpec> = Record<string, RouteSp
269
297
  } | null;
270
298
  entries(): ReadonlyArray<RouteEntry>;
271
299
  };
272
- //#endregion
273
- //#region src/plugins/build/types.d.ts
300
+ declare namespace types_d_exports$1 {
301
+ export { BuildApi, BuildConfig, BuildPhase, BuildResult, BuildState, BundleManifest };
302
+ }
303
+ /** @file build plugin types — BuildConfig, BuildState, BuildApi, BundleManifest, BuildResult. */
304
+ type BuildPhase = 'bundle' | 'content' | 'pages' | 'feeds' | 'sitemap' | 'og' | 'images';
274
305
  type BuildConfig = {
275
306
  outdir: string;
276
307
  mode: 'production' | 'development';
@@ -298,8 +329,9 @@ type BuildApi = {
298
329
  run(): Promise<BuildResult>;
299
330
  getManifest(): Readonly<BundleManifest> | null;
300
331
  };
301
- //#endregion
302
- //#region src/plugins/deploy/types.d.ts
332
+ declare namespace types_d_exports {
333
+ export { DeployApi, DeployConfig, DeployResult, DeployState, DeployTarget, RunOptions };
334
+ }
303
335
  /** @file deploy plugin types — DeployConfig, DeployState, DeployResult, RunOptions, DeployApi. */
304
336
  /**
305
337
  * Deployment target. Phase 1 ships `'pages'` only; `'workers'` is reserved
@@ -392,6 +424,49 @@ type WebAppConfig<Routes extends Record<string, RouteBuilder>> = {
392
424
  trustedContent?: boolean;
393
425
  };
394
426
  //#endregion
427
+ //#region src/plugins/build/index.d.ts
428
+ declare const build: _moku_labs_core0.PluginInstance<"build", BuildConfig, BuildState, BuildApi, {
429
+ 'build:phase': {
430
+ phase: "bundle" | "content" | "pages" | "feeds" | "sitemap" | "og" | "images";
431
+ };
432
+ 'build:complete': {
433
+ pages: number;
434
+ durationMs: number;
435
+ };
436
+ }> & Record<never, never>;
437
+ //#endregion
438
+ //#region src/plugins/content/index.d.ts
439
+ declare const content: _moku_labs_core0.PluginInstance<"content", ContentConfig, ContentState, ContentApi, {
440
+ 'content:ready': {
441
+ articles: Map<string, Article[]>;
442
+ };
443
+ 'content:invalidated': {
444
+ paths: string[];
445
+ };
446
+ }> & Record<never, never>;
447
+ //#endregion
448
+ //#region src/plugins/deploy/index.d.ts
449
+ declare const deploy: _moku_labs_core0.PluginInstance<"deploy", DeployConfig, DeployState, DeployApi, {}> & Record<never, never>;
450
+ //#endregion
451
+ //#region src/plugins/env/index.d.ts
452
+ declare const env: _moku_labs_core0.CorePluginInstance<"env", {
453
+ schema: {};
454
+ providers: never[];
455
+ publicPrefix: string;
456
+ }, EnvState, EnvApi>;
457
+ //#endregion
458
+ //#region src/plugins/head/index.d.ts
459
+ declare const head: _moku_labs_core0.PluginInstance<"head", HeadPluginConfig, HeadState, HeadApi, {}> & Record<never, never>;
460
+ //#endregion
461
+ //#region src/plugins/i18n/index.d.ts
462
+ declare const i18n: _moku_labs_core0.PluginInstance<"i18n", I18nConfig, I18nState<readonly string[]>, I18nApi<readonly string[]>, {}> & Record<never, never>;
463
+ //#endregion
464
+ //#region src/plugins/log/index.d.ts
465
+ declare const log: _moku_labs_core0.CorePluginInstance<"log", {
466
+ level: "info";
467
+ mode: "auto";
468
+ }, LogState, LogApi>;
469
+ //#endregion
395
470
  //#region src/plugins/router/route-builder.d.ts
396
471
  /**
397
472
  * Build a `RouteSpec` via a fluent, non-accumulating builder.
@@ -410,4 +485,19 @@ type WebAppConfig<Routes extends Record<string, RouteBuilder>> = {
410
485
  */
411
486
  declare function route(pattern: string): RouteBuilder;
412
487
  //#endregion
413
- export { EnvVarSpec as A, SiteState as C, EnvConfig as D, EnvApi as E, LogState as M, EnvProvider as O, SiteApi as S, Events as T, ContentConfig as _, DeployConfig as a, I18nConfig as b, BuildConfig as c, RouteSpec as d, RouterApi as f, ContentApi as g, Article as h, DeployApi as i, LogApi as j, EnvState as k, BuildState as l, RouterState as m, RouteSpecMap as n, DeployState as o, RouterConfig as p, WebAppConfig as r, BuildApi as s, route as t, RouteBuilder as u, ContentState as v, Config as w, I18nState as x, I18nApi as y };
488
+ //#region src/plugins/router/index.d.ts
489
+ declare const router: _moku_labs_core0.PluginInstance<"router", RouterConfig, RouterState, RouterApi, {
490
+ 'router:registered': {
491
+ routeCount: number;
492
+ };
493
+ }> & Record<never, never>;
494
+ //#endregion
495
+ //#region src/plugins/site/index.d.ts
496
+ declare const site: _moku_labs_core0.PluginInstance<"site", {
497
+ name: string;
498
+ url: string;
499
+ author: string;
500
+ description: string;
501
+ }, SiteState, SiteApi, {}> & Record<never, never>;
502
+ //#endregion
503
+ export { ContentState as A, Events as B, RouterApi as C, Article as D, types_d_exports$2 as E, types_d_exports$4 as F, EnvState as G, EnvApi as H, SiteApi as I, LogApi as J, EnvVarSpec as K, SiteState as L, I18nApi as M, I18nConfig as N, ContentApi as O, I18nState as P, types_d_exports$5 as R, RouteSpec as S, RouterState as T, EnvConfig as U, createPlugin as V, EnvProvider as W, types_d_exports$7 as X, LogState as Y, BuildApi as _, i18n as a, types_d_exports$1 as b, deploy as c, RouteSpecMap as d, WebAppConfig as f, types_d_exports as g, DeployState as h, log as i, types_d_exports$3 as j, ContentConfig as k, content as l, DeployConfig as m, router as n, head as o, DeployApi as p, types_d_exports$6 as q, route as r, env as s, site as t, build as u, BuildConfig as v, RouterConfig as w, RouteBuilder as x, BuildState as y, Config as z };
@@ -1,8 +1,12 @@
1
- import { p as OGImageConfig } from "./primitives-BBo4wxUL.cjs";
2
- import { n as ComponentDef } from "./factory-D0m7Xil2.cjs";
1
+ import { d as HeadPluginConfig, f as HeadState, l as HeadApi, p as OGImageConfig } from "./primitives-yZqQkOVR.cjs";
2
+ import { n as ComponentDef } from "./factory-k-YoScgB.cjs";
3
+ import * as _moku_labs_core0 from "@moku-labs/core";
3
4
  import { Processor } from "unified";
4
5
 
5
6
  //#region src/plugins/log/types.d.ts
7
+ declare namespace types_d_exports$7 {
8
+ export { ExpectChain, LogApi, LogConfig, LogEntry, LogLevel, LogSink, LogState };
9
+ }
6
10
  /** @file log plugin types — LogEntry, LogSink, ExpectChain, LogState, LogApi. */
7
11
  type LogLevel = 'debug' | 'info' | 'warn' | 'error';
8
12
  type LogEntry = {
@@ -24,6 +28,10 @@ type LogState = {
24
28
  entries: LogEntry[];
25
29
  sinks: LogSink[];
26
30
  };
31
+ type LogConfig = {
32
+ level: LogLevel;
33
+ mode: 'auto' | 'production' | 'test' | 'dev';
34
+ };
27
35
  type LogApi = {
28
36
  info(event: string, data?: unknown): void;
29
37
  debug(event: string, data?: unknown): void;
@@ -34,8 +42,9 @@ type LogApi = {
34
42
  addSink(sink: LogSink): void;
35
43
  reset(): void;
36
44
  };
37
- //#endregion
38
- //#region src/plugins/env/types.d.ts
45
+ declare namespace types_d_exports$6 {
46
+ export { EnvApi, EnvConfig, EnvProvider, EnvState, EnvVarSpec };
47
+ }
39
48
  /** @file env plugin types — schema, provider, EnvApi. */
40
49
  type EnvVarSpec = {
41
50
  public: boolean;
@@ -110,8 +119,24 @@ type Events = {
110
119
  url: string;
111
120
  };
112
121
  };
113
- //#endregion
114
- //#region src/plugins/site/types.d.ts
122
+ declare const createPlugin: _moku_labs_core0.BoundCreatePluginFunction<Config, Events, _moku_labs_core0.CoreApisFromTuple<[_moku_labs_core0.CorePluginInstance<"log", {
123
+ level: "info";
124
+ mode: "auto";
125
+ }, LogState, LogApi>, _moku_labs_core0.CorePluginInstance<"env", {
126
+ schema: {};
127
+ providers: never[];
128
+ publicPrefix: string;
129
+ }, EnvState, EnvApi>]>>, createCore: _moku_labs_core0.BoundCreateCoreFunction<Config, Events, [_moku_labs_core0.CorePluginInstance<"log", {
130
+ level: "info";
131
+ mode: "auto";
132
+ }, LogState, LogApi>, _moku_labs_core0.CorePluginInstance<"env", {
133
+ schema: {};
134
+ providers: never[];
135
+ publicPrefix: string;
136
+ }, EnvState, EnvApi>]>;
137
+ declare namespace types_d_exports$5 {
138
+ export { SiteApi, SiteConfig, SiteState };
139
+ }
115
140
  /** @file site plugin types — SiteConfig + SiteState + SiteApi. */
116
141
  type SiteConfig = {
117
142
  /** Display name of the site. */name: string; /** Base URL of the site (no trailing slash). */
@@ -129,8 +154,9 @@ type SiteApi = {
129
154
  author(): string;
130
155
  description(): string;
131
156
  };
132
- //#endregion
133
- //#region src/plugins/i18n/types.d.ts
157
+ declare namespace types_d_exports$4 {
158
+ export { I18nApi, I18nConfig, I18nState };
159
+ }
134
160
  /** @file i18n plugin types — I18nConfig (generic over locale tuple), I18nState, I18nApi. */
135
161
  type I18nConfig<TLocales extends readonly string[] = readonly string[]> = {
136
162
  /** Active locale codes (literal tuple preserved). */locales: TLocales; /** Default locale (must be member of locales). */
@@ -149,8 +175,9 @@ type I18nApi<TLocales extends readonly string[] = readonly string[]> = {
149
175
  ogLocale(locale: TLocales[number]): string;
150
176
  t(locale: TLocales[number], key: string): string;
151
177
  };
152
- //#endregion
153
- //#region src/plugins/content/types.d.ts
178
+ declare namespace types_d_exports$3 {
179
+ export { Article, ComputedFields, ContentApi, ContentConfig, ContentState, Frontmatter, RehypePluginEntry, RemarkPluginEntry };
180
+ }
154
181
  type Frontmatter = {
155
182
  title: string;
156
183
  date: string;
@@ -197,8 +224,9 @@ type ContentApi = {
197
224
  invalidate(paths: string[]): void;
198
225
  reset(): void;
199
226
  };
200
- //#endregion
201
- //#region src/plugins/router/types.d.ts
227
+ declare namespace types_d_exports$2 {
228
+ export { HeadConfig, LayoutComponent, RenderContext, RouteBuilder, RouteEntry, RouteSpec, RouterApi, RouterConfig, RouterState, VNode };
229
+ }
202
230
  /** @file router plugin types — RouteSpec (non-accumulating), RouteBuilder, RouterApi. */
203
231
  /** Render context passed to route handlers. */
204
232
  type RenderContext = {
@@ -269,8 +297,11 @@ type RouterApi<Routes extends Record<string, RouteSpec> = Record<string, RouteSp
269
297
  } | null;
270
298
  entries(): ReadonlyArray<RouteEntry>;
271
299
  };
272
- //#endregion
273
- //#region src/plugins/build/types.d.ts
300
+ declare namespace types_d_exports$1 {
301
+ export { BuildApi, BuildConfig, BuildPhase, BuildResult, BuildState, BundleManifest };
302
+ }
303
+ /** @file build plugin types — BuildConfig, BuildState, BuildApi, BundleManifest, BuildResult. */
304
+ type BuildPhase = 'bundle' | 'content' | 'pages' | 'feeds' | 'sitemap' | 'og' | 'images';
274
305
  type BuildConfig = {
275
306
  outdir: string;
276
307
  mode: 'production' | 'development';
@@ -298,8 +329,9 @@ type BuildApi = {
298
329
  run(): Promise<BuildResult>;
299
330
  getManifest(): Readonly<BundleManifest> | null;
300
331
  };
301
- //#endregion
302
- //#region src/plugins/deploy/types.d.ts
332
+ declare namespace types_d_exports {
333
+ export { DeployApi, DeployConfig, DeployResult, DeployState, DeployTarget, RunOptions };
334
+ }
303
335
  /** @file deploy plugin types — DeployConfig, DeployState, DeployResult, RunOptions, DeployApi. */
304
336
  /**
305
337
  * Deployment target. Phase 1 ships `'pages'` only; `'workers'` is reserved
@@ -392,6 +424,49 @@ type WebAppConfig<Routes extends Record<string, RouteBuilder>> = {
392
424
  trustedContent?: boolean;
393
425
  };
394
426
  //#endregion
427
+ //#region src/plugins/build/index.d.ts
428
+ declare const build: _moku_labs_core0.PluginInstance<"build", BuildConfig, BuildState, BuildApi, {
429
+ 'build:phase': {
430
+ phase: "bundle" | "content" | "pages" | "feeds" | "sitemap" | "og" | "images";
431
+ };
432
+ 'build:complete': {
433
+ pages: number;
434
+ durationMs: number;
435
+ };
436
+ }> & Record<never, never>;
437
+ //#endregion
438
+ //#region src/plugins/content/index.d.ts
439
+ declare const content: _moku_labs_core0.PluginInstance<"content", ContentConfig, ContentState, ContentApi, {
440
+ 'content:ready': {
441
+ articles: Map<string, Article[]>;
442
+ };
443
+ 'content:invalidated': {
444
+ paths: string[];
445
+ };
446
+ }> & Record<never, never>;
447
+ //#endregion
448
+ //#region src/plugins/deploy/index.d.ts
449
+ declare const deploy: _moku_labs_core0.PluginInstance<"deploy", DeployConfig, DeployState, DeployApi, {}> & Record<never, never>;
450
+ //#endregion
451
+ //#region src/plugins/env/index.d.ts
452
+ declare const env: _moku_labs_core0.CorePluginInstance<"env", {
453
+ schema: {};
454
+ providers: never[];
455
+ publicPrefix: string;
456
+ }, EnvState, EnvApi>;
457
+ //#endregion
458
+ //#region src/plugins/head/index.d.ts
459
+ declare const head: _moku_labs_core0.PluginInstance<"head", HeadPluginConfig, HeadState, HeadApi, {}> & Record<never, never>;
460
+ //#endregion
461
+ //#region src/plugins/i18n/index.d.ts
462
+ declare const i18n: _moku_labs_core0.PluginInstance<"i18n", I18nConfig, I18nState<readonly string[]>, I18nApi<readonly string[]>, {}> & Record<never, never>;
463
+ //#endregion
464
+ //#region src/plugins/log/index.d.ts
465
+ declare const log: _moku_labs_core0.CorePluginInstance<"log", {
466
+ level: "info";
467
+ mode: "auto";
468
+ }, LogState, LogApi>;
469
+ //#endregion
395
470
  //#region src/plugins/router/route-builder.d.ts
396
471
  /**
397
472
  * Build a `RouteSpec` via a fluent, non-accumulating builder.
@@ -410,4 +485,19 @@ type WebAppConfig<Routes extends Record<string, RouteBuilder>> = {
410
485
  */
411
486
  declare function route(pattern: string): RouteBuilder;
412
487
  //#endregion
413
- export { EnvVarSpec as A, SiteState as C, EnvConfig as D, EnvApi as E, LogState as M, EnvProvider as O, SiteApi as S, Events as T, ContentConfig as _, DeployConfig as a, I18nConfig as b, BuildConfig as c, RouteSpec as d, RouterApi as f, ContentApi as g, Article as h, DeployApi as i, LogApi as j, EnvState as k, BuildState as l, RouterState as m, RouteSpecMap as n, DeployState as o, RouterConfig as p, WebAppConfig as r, BuildApi as s, route as t, RouteBuilder as u, ContentState as v, Config as w, I18nState as x, I18nApi as y };
488
+ //#region src/plugins/router/index.d.ts
489
+ declare const router: _moku_labs_core0.PluginInstance<"router", RouterConfig, RouterState, RouterApi, {
490
+ 'router:registered': {
491
+ routeCount: number;
492
+ };
493
+ }> & Record<never, never>;
494
+ //#endregion
495
+ //#region src/plugins/site/index.d.ts
496
+ declare const site: _moku_labs_core0.PluginInstance<"site", {
497
+ name: string;
498
+ url: string;
499
+ author: string;
500
+ description: string;
501
+ }, SiteState, SiteApi, {}> & Record<never, never>;
502
+ //#endregion
503
+ export { ContentState as A, Events as B, RouterApi as C, Article as D, types_d_exports$2 as E, types_d_exports$4 as F, EnvState as G, EnvApi as H, SiteApi as I, LogApi as J, EnvVarSpec as K, SiteState as L, I18nApi as M, I18nConfig as N, ContentApi as O, I18nState as P, types_d_exports$5 as R, RouteSpec as S, RouterState as T, EnvConfig as U, createPlugin as V, EnvProvider as W, types_d_exports$7 as X, LogState as Y, BuildApi as _, i18n as a, types_d_exports$1 as b, deploy as c, RouteSpecMap as d, WebAppConfig as f, types_d_exports as g, DeployState as h, log as i, types_d_exports$3 as j, ContentConfig as k, content as l, DeployConfig as m, router as n, head as o, DeployApi as p, types_d_exports$6 as q, route as r, env as s, site as t, build as u, BuildConfig as v, RouterConfig as w, RouteBuilder as x, BuildState as y, Config as z };
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_project = require('./project-1pAh4RxJ.cjs');
3
- const require_factory = require('./factory-DVcAQYEZ.cjs');
2
+ const require_project = require('./project-B8z4jeMC.cjs');
3
+ const require_factory = require('./factory-CMOo4n6a.cjs');
4
4
  const require_primitives = require('./primitives-BYUp6kae.cjs');
5
5
  const require_plugins_spa_index = require('./plugins/spa/index.cjs');
6
6
 
@@ -35,13 +35,84 @@ function createApp(input) {
35
35
  }
36
36
 
37
37
  //#endregion
38
+ Object.defineProperty(exports, 'Build', {
39
+ enumerable: true,
40
+ get: function () {
41
+ return require_project.types_exports$9;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, 'Content', {
45
+ enumerable: true,
46
+ get: function () {
47
+ return require_project.types_exports$8;
48
+ }
49
+ });
50
+ Object.defineProperty(exports, 'Deploy', {
51
+ enumerable: true,
52
+ get: function () {
53
+ return require_project.types_exports$7;
54
+ }
55
+ });
56
+ Object.defineProperty(exports, 'Env', {
57
+ enumerable: true,
58
+ get: function () {
59
+ return require_project.types_exports$6;
60
+ }
61
+ });
62
+ Object.defineProperty(exports, 'Head', {
63
+ enumerable: true,
64
+ get: function () {
65
+ return require_project.types_exports$5;
66
+ }
67
+ });
68
+ Object.defineProperty(exports, 'I18n', {
69
+ enumerable: true,
70
+ get: function () {
71
+ return require_project.types_exports$4;
72
+ }
73
+ });
74
+ Object.defineProperty(exports, 'Log', {
75
+ enumerable: true,
76
+ get: function () {
77
+ return require_project.types_exports$3;
78
+ }
79
+ });
80
+ Object.defineProperty(exports, 'Router', {
81
+ enumerable: true,
82
+ get: function () {
83
+ return require_project.types_exports$2;
84
+ }
85
+ });
86
+ Object.defineProperty(exports, 'Site', {
87
+ enumerable: true,
88
+ get: function () {
89
+ return require_project.types_exports$1;
90
+ }
91
+ });
92
+ Object.defineProperty(exports, 'Spa', {
93
+ enumerable: true,
94
+ get: function () {
95
+ return require_project.types_exports;
96
+ }
97
+ });
98
+ exports.build = require_project.build;
38
99
  exports.canonical = require_primitives.canonical;
100
+ exports.content = require_project.content;
39
101
  exports.createApp = createApp;
40
102
  exports.createComponent = require_factory.createComponent;
103
+ exports.createPlugin = require_factory.createPlugin;
104
+ exports.deploy = require_project.deploy;
105
+ exports.env = require_factory.env;
41
106
  exports.feedLink = require_primitives.feedLink;
107
+ exports.head = require_factory.head;
42
108
  exports.hreflang = require_primitives.hreflang;
109
+ exports.i18n = require_factory.i18n;
43
110
  exports.jsonLd = require_primitives.jsonLd;
111
+ exports.log = require_factory.log;
44
112
  exports.meta = require_primitives.meta;
45
113
  exports.og = require_primitives.og;
46
114
  exports.route = require_factory.route;
115
+ exports.router = require_factory.router;
116
+ exports.site = require_factory.site;
117
+ exports.spa = require_plugins_spa_index.spa;
47
118
  exports.twitter = require_primitives.twitter;
package/dist/index.d.cts CHANGED
@@ -1,6 +1,7 @@
1
- import { C as SiteState, E as EnvApi, M as LogState, S as SiteApi, T as Events, _ as ContentConfig, a as DeployConfig, b as I18nConfig, c as BuildConfig, d as RouteSpec, f as RouterApi, g as ContentApi, h as Article, i as DeployApi, j as LogApi, k as EnvState, l as BuildState, m as RouterState, n as RouteSpecMap, o as DeployState, p as RouterConfig, r as WebAppConfig, s as BuildApi, t as route, u as RouteBuilder, v as ContentState, w as Config, x as I18nState, y as I18nApi } from "./route-builder-CKvvehVO.cjs";
2
- import { a as meta, d as HeadPluginConfig, f as HeadState, i as jsonLd, l as HeadApi, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-BBo4wxUL.cjs";
3
- import { a as SpaConfig, i as SpaApi, n as ComponentDef, o as SpaState, r as ComponentHooks, t as createComponent } from "./factory-D0m7Xil2.cjs";
1
+ import { A as ContentState, B as Events, C as RouterApi, D as Article, E as types_d_exports$7, F as types_d_exports$5, G as EnvState, H as EnvApi, I as SiteApi, J as LogApi, L as SiteState, M as I18nApi, N as I18nConfig, O as ContentApi, P as I18nState, R as types_d_exports$8, S as RouteSpec, T as RouterState, V as createPlugin, X as types_d_exports$6, Y as LogState, _ as BuildApi, a as i18n, b as types_d_exports, c as deploy, d as RouteSpecMap, f as WebAppConfig, g as types_d_exports$2, h as DeployState, i as log, j as types_d_exports$1, k as ContentConfig, l as content, m as DeployConfig, n as router, o as head, p as DeployApi, q as types_d_exports$3, r as route, s as env, t as site, u as build, v as BuildConfig, w as RouterConfig, x as RouteBuilder, y as BuildState, z as Config } from "./index-DaY7vTuo.cjs";
2
+ import { a as meta, d as HeadPluginConfig, f as HeadState, i as jsonLd, l as HeadApi, m as types_d_exports$4, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-yZqQkOVR.cjs";
3
+ import { a as SpaConfig, i as SpaApi, n as ComponentDef, o as SpaState, r as ComponentHooks, s as types_d_exports$9, t as createComponent } from "./factory-k-YoScgB.cjs";
4
+ import { spa } from "./plugins/spa/index.cjs";
4
5
  import * as _moku_labs_core0 from "@moku-labs/core";
5
6
 
6
7
  //#region src/index.d.ts
@@ -132,4 +133,4 @@ type WebApp<Routes extends Record<string, RouteBuilder>> = Omit<ReturnType<typeo
132
133
  */
133
134
  declare function createApp<Routes extends Record<string, RouteBuilder>>(input: WebAppConfig<Routes>): WebApp<Routes>;
134
135
  //#endregion
135
- export { type ComponentDef, type ComponentHooks, type Config, type Events, type RouteBuilder, type RouteSpec, WebApp, type WebAppConfig, canonical, createApp, createComponent, feedLink, hreflang, jsonLd, meta, og, route, twitter };
136
+ export { types_d_exports as Build, type ComponentDef, type ComponentHooks, type Config, types_d_exports$1 as Content, types_d_exports$2 as Deploy, types_d_exports$3 as Env, type Events, types_d_exports$4 as Head, types_d_exports$5 as I18n, types_d_exports$6 as Log, type RouteBuilder, type RouteSpec, types_d_exports$7 as Router, types_d_exports$8 as Site, types_d_exports$9 as Spa, WebApp, type WebAppConfig, build, canonical, content, createApp, createComponent, createPlugin, deploy, env, feedLink, head, hreflang, i18n, jsonLd, log, meta, og, route, router, site, spa, twitter };
package/dist/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
- import { C as SiteState, E as EnvApi, M as LogState, S as SiteApi, T as Events, _ as ContentConfig, a as DeployConfig, b as I18nConfig, c as BuildConfig, d as RouteSpec, f as RouterApi, g as ContentApi, h as Article, i as DeployApi, j as LogApi, k as EnvState, l as BuildState, m as RouterState, n as RouteSpecMap, o as DeployState, p as RouterConfig, r as WebAppConfig, s as BuildApi, t as route, u as RouteBuilder, v as ContentState, w as Config, x as I18nState, y as I18nApi } from "./index-CddOHo8I.mjs";
2
- import { a as meta, d as HeadPluginConfig, f as HeadState, i as jsonLd, l as HeadApi, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-Dlfi3JTx.mjs";
3
- import { a as SpaConfig, i as SpaApi, n as ComponentDef, o as SpaState, r as ComponentHooks, t as createComponent } from "./factory-BHhulW27.mjs";
1
+ import { A as ContentState, B as Events, C as RouterApi, D as Article, E as types_d_exports$7, F as types_d_exports$5, G as EnvState, H as EnvApi, I as SiteApi, J as LogApi, L as SiteState, M as I18nApi, N as I18nConfig, O as ContentApi, P as I18nState, R as types_d_exports$8, S as RouteSpec, T as RouterState, V as createPlugin, X as types_d_exports$6, Y as LogState, _ as BuildApi, a as i18n, b as types_d_exports, c as deploy, d as RouteSpecMap, f as WebAppConfig, g as types_d_exports$2, h as DeployState, i as log, j as types_d_exports$1, k as ContentConfig, l as content, m as DeployConfig, n as router, o as head, p as DeployApi, q as types_d_exports$3, r as route, s as env, t as site, u as build, v as BuildConfig, w as RouterConfig, x as RouteBuilder, y as BuildState, z as Config } from "./index-DH3jlpNi.mjs";
2
+ import { a as meta, d as HeadPluginConfig, f as HeadState, i as jsonLd, l as HeadApi, m as types_d_exports$4, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-DKgZfRAO.mjs";
3
+ import { a as SpaConfig, i as SpaApi, n as ComponentDef, o as SpaState, r as ComponentHooks, s as types_d_exports$9, t as createComponent } from "./factory-DRFGSslp.mjs";
4
+ import { spa } from "./plugins/spa/index.mjs";
4
5
  import * as _moku_labs_core0 from "@moku-labs/core";
5
6
 
6
7
  //#region src/index.d.ts
@@ -132,4 +133,4 @@ type WebApp<Routes extends Record<string, RouteBuilder>> = Omit<ReturnType<typeo
132
133
  */
133
134
  declare function createApp<Routes extends Record<string, RouteBuilder>>(input: WebAppConfig<Routes>): WebApp<Routes>;
134
135
  //#endregion
135
- export { type ComponentDef, type ComponentHooks, type Config, type Events, type RouteBuilder, type RouteSpec, WebApp, type WebAppConfig, canonical, createApp, createComponent, feedLink, hreflang, jsonLd, meta, og, route, twitter };
136
+ export { types_d_exports as Build, type ComponentDef, type ComponentHooks, type Config, types_d_exports$1 as Content, types_d_exports$2 as Deploy, types_d_exports$3 as Env, type Events, types_d_exports$4 as Head, types_d_exports$5 as I18n, types_d_exports$6 as Log, type RouteBuilder, type RouteSpec, types_d_exports$7 as Router, types_d_exports$8 as Site, types_d_exports$9 as Spa, WebApp, type WebAppConfig, build, canonical, content, createApp, createComponent, createPlugin, deploy, env, feedLink, head, hreflang, i18n, jsonLd, log, meta, og, route, router, site, spa, twitter };
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { c as route, d as coreConfig, f as createCore, l as site, o as head, s as router, t as createComponent, u as i18n } from "./factory-DwpBwjDk.mjs";
2
- import { i as content, n as deploy, r as build, t as project } from "./project-BaG_ipVz.mjs";
3
- import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-gO5i1tD8.mjs";
1
+ import { _ as env, c as route, d as coreConfig, f as createCore, l as site, m as log, o as head, p as createPlugin, s as router, t as createComponent, u as i18n } from "./factory-DiKypQqs.mjs";
2
+ import { a as types_exports$6, c as types_exports$3, d as types_exports$1, f as types_exports, i as types_exports$7, l as types_exports$2, m as content, n as types_exports$9, o as types_exports$5, p as build, r as types_exports$8, s as types_exports$4, t as project, u as deploy } from "./project-guCYpUeD.mjs";
3
+ import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "./primitives-Dhko-oLM.mjs";
4
4
  import { spa } from "./plugins/spa/index.mjs";
5
5
 
6
6
  //#region src/index.ts
@@ -34,4 +34,4 @@ function createApp(input) {
34
34
  }
35
35
 
36
36
  //#endregion
37
- export { canonical, createApp, createComponent, feedLink, hreflang, jsonLd, meta, og, route, twitter };
37
+ export { types_exports as Build, types_exports$1 as Content, types_exports$2 as Deploy, types_exports$3 as Env, types_exports$4 as Head, types_exports$5 as I18n, types_exports$6 as Log, types_exports$7 as Router, types_exports$8 as Site, types_exports$9 as Spa, build, canonical, content, createApp, createComponent, createPlugin, deploy, env, feedLink, head, hreflang, i18n, jsonLd, log, meta, og, route, router, site, spa, twitter };
@@ -1,4 +1,4 @@
1
- import { a as meta, c as ArticleMeta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical, u as HeadElement } from "../../primitives-BBo4wxUL.cjs";
1
+ import { a as meta, c as ArticleMeta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical, u as HeadElement } from "../../primitives-yZqQkOVR.cjs";
2
2
 
3
3
  //#region src/plugins/head/build.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { a as meta, c as ArticleMeta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical, u as HeadElement } from "../../primitives-Dlfi3JTx.mjs";
1
+ import { a as meta, c as ArticleMeta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical, u as HeadElement } from "../../primitives-DKgZfRAO.mjs";
2
2
 
3
3
  //#region src/plugins/head/build.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "../../primitives-gO5i1tD8.mjs";
1
+ import { a as meta, i as jsonLd, n as feedLink, o as og, r as hreflang, s as twitter, t as canonical } from "../../primitives-Dhko-oLM.mjs";
2
2
 
3
3
  //#region src/plugins/head/build.ts
4
4
  /** @file Sub-path /build entry — pure build-time helpers (no plugin state access). */
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_factory = require('../../factory-DVcAQYEZ.cjs');
2
+ const require_factory = require('../../factory-CMOo4n6a.cjs');
3
3
 
4
4
  //#region src/plugins/spa/index.ts
5
5
  /** @file spa plugin: Very Complex tier — router + head + progress + components sub-modules. */
@@ -1,4 +1,4 @@
1
- import { a as SpaConfig, i as SpaApi, o as SpaState, t as createComponent } from "../../factory-D0m7Xil2.cjs";
1
+ import { a as SpaConfig, i as SpaApi, o as SpaState, t as createComponent } from "../../factory-k-YoScgB.cjs";
2
2
  import * as _moku_labs_core0 from "@moku-labs/core";
3
3
 
4
4
  //#region src/plugins/spa/index.d.ts
@@ -1,4 +1,4 @@
1
- import { a as SpaConfig, i as SpaApi, o as SpaState, t as createComponent } from "../../factory-BHhulW27.mjs";
1
+ import { a as SpaConfig, i as SpaApi, o as SpaState, t as createComponent } from "../../factory-DRFGSslp.mjs";
2
2
  import * as _moku_labs_core0 from "@moku-labs/core";
3
3
 
4
4
  //#region src/plugins/spa/index.d.ts
@@ -1,4 +1,4 @@
1
- import { a as createSpaApi, i as createClientRuntime, n as createSpaState, o as head, p as createPlugin, r as registerSpaEvents, s as router, t as createComponent } from "../../factory-DwpBwjDk.mjs";
1
+ import { a as createSpaApi, i as createClientRuntime, n as createSpaState, o as head, p as createPlugin, r as registerSpaEvents, s as router, t as createComponent } from "../../factory-DiKypQqs.mjs";
2
2
 
3
3
  //#region src/plugins/spa/index.ts
4
4
  /** @file spa plugin: Very Complex tier — router + head + progress + components sub-modules. */
@@ -1,4 +1,6 @@
1
- //#region src/plugins/head/types.d.ts
1
+ declare namespace types_d_exports {
2
+ export { ArticleMeta, HeadApi, HeadConfig, HeadElement, HeadPluginConfig, HeadState, OGFontConfig, OGImageConfig, RenderContext };
3
+ }
2
4
  /** @file head plugin types — HeadElement, HeadConfig, ArticleMeta, OGImageConfig. */
3
5
  type HeadElement = {
4
6
  tag: 'meta' | 'link' | 'script' | 'title';
@@ -66,4 +68,4 @@ declare const hreflang: (locale: string, url: string) => HeadElement;
66
68
  declare const twitter: (name: string, content: string) => HeadElement;
67
69
  declare const feedLink: (title: string, url: string, type?: "rss" | "atom") => HeadElement;
68
70
  //#endregion
69
- export { meta as a, ArticleMeta as c, HeadPluginConfig as d, HeadState as f, jsonLd as i, HeadApi as l, feedLink as n, og as o, OGImageConfig as p, hreflang as r, twitter as s, canonical as t, HeadElement as u };
71
+ export { meta as a, ArticleMeta as c, HeadPluginConfig as d, HeadState as f, jsonLd as i, HeadApi as l, types_d_exports as m, feedLink as n, og as o, OGImageConfig as p, hreflang as r, twitter as s, canonical as t, HeadElement as u };
@@ -1,4 +1,6 @@
1
- //#region src/plugins/head/types.d.ts
1
+ declare namespace types_d_exports {
2
+ export { ArticleMeta, HeadApi, HeadConfig, HeadElement, HeadPluginConfig, HeadState, OGFontConfig, OGImageConfig, RenderContext };
3
+ }
2
4
  /** @file head plugin types — HeadElement, HeadConfig, ArticleMeta, OGImageConfig. */
3
5
  type HeadElement = {
4
6
  tag: 'meta' | 'link' | 'script' | 'title';
@@ -66,4 +68,4 @@ declare const hreflang: (locale: string, url: string) => HeadElement;
66
68
  declare const twitter: (name: string, content: string) => HeadElement;
67
69
  declare const feedLink: (title: string, url: string, type?: "rss" | "atom") => HeadElement;
68
70
  //#endregion
69
- export { meta as a, ArticleMeta as c, HeadPluginConfig as d, HeadState as f, jsonLd as i, HeadApi as l, feedLink as n, og as o, OGImageConfig as p, hreflang as r, twitter as s, canonical as t, HeadElement as u };
71
+ export { meta as a, ArticleMeta as c, HeadPluginConfig as d, HeadState as f, jsonLd as i, HeadApi as l, types_d_exports as m, feedLink as n, og as o, OGImageConfig as p, hreflang as r, twitter as s, canonical as t, HeadElement as u };
@@ -5,6 +5,19 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __exportAll = (all, no_symbols) => {
9
+ let target = {};
10
+ for (var name in all) {
11
+ __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
15
+ }
16
+ if (!no_symbols) {
17
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
18
+ }
19
+ return target;
20
+ };
8
21
  var __copyProps = (to, from, except, desc) => {
9
22
  if (from && typeof from === "object" || typeof from === "function") {
10
23
  for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
@@ -25,8 +38,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
38
  }) : target, mod));
26
39
 
27
40
  //#endregion
28
- const require_factory = require('./factory-DVcAQYEZ.cjs');
29
- const require_wrangler = require('./wrangler-BHdkyMRj.cjs');
41
+ const require_factory = require('./factory-CMOo4n6a.cjs');
42
+ const require_wrangler = require('./wrangler-Bomk9mU-.cjs');
30
43
  let node_fs = require("node:fs");
31
44
  let node_fs_promises = require("node:fs/promises");
32
45
  let node_path = require("node:path");
@@ -1004,6 +1017,14 @@ const build = require_factory.createPlugin("build", {
1004
1017
  onInit: validateBuildConfig
1005
1018
  });
1006
1019
 
1020
+ //#endregion
1021
+ //#region src/plugins/build/types.ts
1022
+ var types_exports$9 = /* @__PURE__ */ __exportAll({});
1023
+
1024
+ //#endregion
1025
+ //#region src/plugins/content/types.ts
1026
+ var types_exports$8 = /* @__PURE__ */ __exportAll({});
1027
+
1007
1028
  //#endregion
1008
1029
  //#region src/plugins/deploy/api.ts
1009
1030
  /** @file deploy plugin API factory — orchestrates app.deploy.run(). */
@@ -1186,6 +1207,38 @@ const deploy = require_factory.createPlugin("deploy", {
1186
1207
  onInit: validateDeployConfig
1187
1208
  });
1188
1209
 
1210
+ //#endregion
1211
+ //#region src/plugins/deploy/types.ts
1212
+ var types_exports$7 = /* @__PURE__ */ __exportAll({});
1213
+
1214
+ //#endregion
1215
+ //#region src/plugins/env/types.ts
1216
+ var types_exports$6 = /* @__PURE__ */ __exportAll({});
1217
+
1218
+ //#endregion
1219
+ //#region src/plugins/head/types.ts
1220
+ var types_exports$5 = /* @__PURE__ */ __exportAll({});
1221
+
1222
+ //#endregion
1223
+ //#region src/plugins/i18n/types.ts
1224
+ var types_exports$4 = /* @__PURE__ */ __exportAll({});
1225
+
1226
+ //#endregion
1227
+ //#region src/plugins/log/types.ts
1228
+ var types_exports$3 = /* @__PURE__ */ __exportAll({});
1229
+
1230
+ //#endregion
1231
+ //#region src/plugins/router/types.ts
1232
+ var types_exports$2 = /* @__PURE__ */ __exportAll({});
1233
+
1234
+ //#endregion
1235
+ //#region src/plugins/site/types.ts
1236
+ var types_exports$1 = /* @__PURE__ */ __exportAll({});
1237
+
1238
+ //#endregion
1239
+ //#region src/plugins/spa/types.ts
1240
+ var types_exports = /* @__PURE__ */ __exportAll({});
1241
+
1189
1242
  //#endregion
1190
1243
  //#region src/project.ts
1191
1244
  /**
@@ -1267,4 +1320,64 @@ Object.defineProperty(exports, 'project', {
1267
1320
  get: function () {
1268
1321
  return project;
1269
1322
  }
1323
+ });
1324
+ Object.defineProperty(exports, 'types_exports', {
1325
+ enumerable: true,
1326
+ get: function () {
1327
+ return types_exports;
1328
+ }
1329
+ });
1330
+ Object.defineProperty(exports, 'types_exports$1', {
1331
+ enumerable: true,
1332
+ get: function () {
1333
+ return types_exports$1;
1334
+ }
1335
+ });
1336
+ Object.defineProperty(exports, 'types_exports$2', {
1337
+ enumerable: true,
1338
+ get: function () {
1339
+ return types_exports$2;
1340
+ }
1341
+ });
1342
+ Object.defineProperty(exports, 'types_exports$3', {
1343
+ enumerable: true,
1344
+ get: function () {
1345
+ return types_exports$3;
1346
+ }
1347
+ });
1348
+ Object.defineProperty(exports, 'types_exports$4', {
1349
+ enumerable: true,
1350
+ get: function () {
1351
+ return types_exports$4;
1352
+ }
1353
+ });
1354
+ Object.defineProperty(exports, 'types_exports$5', {
1355
+ enumerable: true,
1356
+ get: function () {
1357
+ return types_exports$5;
1358
+ }
1359
+ });
1360
+ Object.defineProperty(exports, 'types_exports$6', {
1361
+ enumerable: true,
1362
+ get: function () {
1363
+ return types_exports$6;
1364
+ }
1365
+ });
1366
+ Object.defineProperty(exports, 'types_exports$7', {
1367
+ enumerable: true,
1368
+ get: function () {
1369
+ return types_exports$7;
1370
+ }
1371
+ });
1372
+ Object.defineProperty(exports, 'types_exports$8', {
1373
+ enumerable: true,
1374
+ get: function () {
1375
+ return types_exports$8;
1376
+ }
1377
+ });
1378
+ Object.defineProperty(exports, 'types_exports$9', {
1379
+ enumerable: true,
1380
+ get: function () {
1381
+ return types_exports$9;
1382
+ }
1270
1383
  });
@@ -1,5 +1,6 @@
1
- import { l as site, o as head, p as createPlugin, s as router, u as i18n } from "./factory-DwpBwjDk.mjs";
2
- import { a as runWrangler, c as readWranglerConfig, i as extractDeploymentInfo, r as buildWranglerArgs } from "./wrangler-Coyrznz4.mjs";
1
+ import { t as __exportAll } from "./chunk-DQk6qfdC.mjs";
2
+ import { l as site, o as head, p as createPlugin, s as router, u as i18n } from "./factory-DiKypQqs.mjs";
3
+ import { a as runWrangler, c as readWranglerConfig, i as extractDeploymentInfo, r as buildWranglerArgs } from "./wrangler-BlZWVmX9.mjs";
3
4
  import { existsSync, readdirSync, statSync } from "node:fs";
4
5
  import { readFile, readdir } from "node:fs/promises";
5
6
  import { isAbsolute, join, resolve, sep } from "node:path";
@@ -966,6 +967,14 @@ const build = createPlugin("build", {
966
967
  onInit: validateBuildConfig
967
968
  });
968
969
 
970
+ //#endregion
971
+ //#region src/plugins/build/types.ts
972
+ var types_exports$9 = /* @__PURE__ */ __exportAll({});
973
+
974
+ //#endregion
975
+ //#region src/plugins/content/types.ts
976
+ var types_exports$8 = /* @__PURE__ */ __exportAll({});
977
+
969
978
  //#endregion
970
979
  //#region src/plugins/deploy/api.ts
971
980
  /** @file deploy plugin API factory — orchestrates app.deploy.run(). */
@@ -1148,6 +1157,38 @@ const deploy = createPlugin("deploy", {
1148
1157
  onInit: validateDeployConfig
1149
1158
  });
1150
1159
 
1160
+ //#endregion
1161
+ //#region src/plugins/deploy/types.ts
1162
+ var types_exports$7 = /* @__PURE__ */ __exportAll({});
1163
+
1164
+ //#endregion
1165
+ //#region src/plugins/env/types.ts
1166
+ var types_exports$6 = /* @__PURE__ */ __exportAll({});
1167
+
1168
+ //#endregion
1169
+ //#region src/plugins/head/types.ts
1170
+ var types_exports$5 = /* @__PURE__ */ __exportAll({});
1171
+
1172
+ //#endregion
1173
+ //#region src/plugins/i18n/types.ts
1174
+ var types_exports$4 = /* @__PURE__ */ __exportAll({});
1175
+
1176
+ //#endregion
1177
+ //#region src/plugins/log/types.ts
1178
+ var types_exports$3 = /* @__PURE__ */ __exportAll({});
1179
+
1180
+ //#endregion
1181
+ //#region src/plugins/router/types.ts
1182
+ var types_exports$2 = /* @__PURE__ */ __exportAll({});
1183
+
1184
+ //#endregion
1185
+ //#region src/plugins/site/types.ts
1186
+ var types_exports$1 = /* @__PURE__ */ __exportAll({});
1187
+
1188
+ //#endregion
1189
+ //#region src/plugins/spa/types.ts
1190
+ var types_exports = /* @__PURE__ */ __exportAll({});
1191
+
1151
1192
  //#endregion
1152
1193
  //#region src/project.ts
1153
1194
  /**
@@ -1200,4 +1241,4 @@ function extractSpecs(routes) {
1200
1241
  }
1201
1242
 
1202
1243
  //#endregion
1203
- export { content as i, deploy as n, build as r, project as t };
1244
+ export { types_exports$3 as a, types_exports$6 as c, types_exports$8 as d, types_exports$9 as f, types_exports$2 as i, types_exports$7 as l, content as m, types_exports as n, types_exports$4 as o, build as p, types_exports$1 as r, types_exports$5 as s, project as t, deploy as u };
package/dist/test.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_project = require('./project-1pAh4RxJ.cjs');
3
- const require_factory = require('./factory-DVcAQYEZ.cjs');
2
+ const require_project = require('./project-B8z4jeMC.cjs');
3
+ const require_factory = require('./factory-CMOo4n6a.cjs');
4
4
  const require_index = require('./index.cjs');
5
5
  let _moku_labs_core = require("@moku-labs/core");
6
6
 
package/dist/test.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as EnvVarSpec, D as EnvConfig, E as EnvApi, M as LogState, O as EnvProvider, j as LogApi, k as EnvState, r as WebAppConfig, u as RouteBuilder } from "./route-builder-CKvvehVO.cjs";
1
+ import { G as EnvState, H as EnvApi, J as LogApi, K as EnvVarSpec, U as EnvConfig, W as EnvProvider, Y as LogState, f as WebAppConfig, x as RouteBuilder } from "./index-DaY7vTuo.cjs";
2
2
  import { WebApp } from "./index.cjs";
3
3
  import * as _moku_labs_core0 from "@moku-labs/core";
4
4
 
package/dist/test.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as EnvVarSpec, D as EnvConfig, E as EnvApi, M as LogState, O as EnvProvider, j as LogApi, k as EnvState, r as WebAppConfig, u as RouteBuilder } from "./index-CddOHo8I.mjs";
1
+ import { G as EnvState, H as EnvApi, J as LogApi, K as EnvVarSpec, U as EnvConfig, W as EnvProvider, Y as LogState, f as WebAppConfig, x as RouteBuilder } from "./index-DH3jlpNi.mjs";
2
2
  import { WebApp } from "./index.mjs";
3
3
  import * as _moku_labs_core0 from "@moku-labs/core";
4
4
 
package/dist/test.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { _ as createEnvState, g as validateSchema, h as createLogApi, m as createLogState, v as createEnvApi } from "./factory-DwpBwjDk.mjs";
2
- import "./project-BaG_ipVz.mjs";
1
+ import { b as createEnvApi, g as createLogApi, h as createLogState, v as validateSchema, y as createEnvState } from "./factory-DiKypQqs.mjs";
2
+ import "./project-guCYpUeD.mjs";
3
3
  import { createApp } from "./index.mjs";
4
4
  import { createCorePlugin } from "@moku-labs/core";
5
5
 
@@ -1,4 +1,4 @@
1
- const require_project = require('./project-1pAh4RxJ.cjs');
1
+ const require_project = require('./project-B8z4jeMC.cjs');
2
2
  let node_fs = require("node:fs");
3
3
  let node_fs_promises = require("node:fs/promises");
4
4
  let node_path = require("node:path");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moku-labs/web",
3
- "version": "0.1.0-alpha.3",
3
+ "version": "0.1.0-alpha.4",
4
4
  "author": "Alex Kucherenko",
5
5
  "license": "MIT",
6
6
  "repository": {