@tyndall/core 0.0.1

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 (59) hide show
  1. package/README.md +34 -0
  2. package/dist/client-router-bootstrap.d.ts +11 -0
  3. package/dist/client-router-bootstrap.d.ts.map +1 -0
  4. package/dist/client-router-bootstrap.js +319 -0
  5. package/dist/config.d.ts +197 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +552 -0
  8. package/dist/dynamic-manifest.d.ts +78 -0
  9. package/dist/dynamic-manifest.d.ts.map +1 -0
  10. package/dist/dynamic-manifest.js +189 -0
  11. package/dist/dynamic-page-api.d.ts +34 -0
  12. package/dist/dynamic-page-api.d.ts.map +1 -0
  13. package/dist/dynamic-page-api.js +136 -0
  14. package/dist/errors.d.ts +10 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +31 -0
  17. package/dist/head.d.ts +3 -0
  18. package/dist/head.d.ts.map +1 -0
  19. package/dist/head.js +33 -0
  20. package/dist/index.d.ts +33 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +18 -0
  23. package/dist/layouts.d.ts +14 -0
  24. package/dist/layouts.d.ts.map +1 -0
  25. package/dist/layouts.js +51 -0
  26. package/dist/manifest.d.ts +81 -0
  27. package/dist/manifest.d.ts.map +1 -0
  28. package/dist/manifest.js +139 -0
  29. package/dist/page-api.d.ts +56 -0
  30. package/dist/page-api.d.ts.map +1 -0
  31. package/dist/page-api.js +100 -0
  32. package/dist/plugin.d.ts +35 -0
  33. package/dist/plugin.d.ts.map +1 -0
  34. package/dist/plugin.js +133 -0
  35. package/dist/program-sandbox.d.ts +18 -0
  36. package/dist/program-sandbox.d.ts.map +1 -0
  37. package/dist/program-sandbox.js +84 -0
  38. package/dist/props.d.ts +2 -0
  39. package/dist/props.d.ts.map +1 -0
  40. package/dist/props.js +14 -0
  41. package/dist/render-policy.d.ts +8 -0
  42. package/dist/render-policy.d.ts.map +1 -0
  43. package/dist/render-policy.js +12 -0
  44. package/dist/resolver-fallback.d.ts +49 -0
  45. package/dist/resolver-fallback.d.ts.map +1 -0
  46. package/dist/resolver-fallback.js +99 -0
  47. package/dist/route-graph.d.ts +9 -0
  48. package/dist/route-graph.d.ts.map +1 -0
  49. package/dist/route-graph.js +157 -0
  50. package/dist/route-meta.d.ts +4 -0
  51. package/dist/route-meta.d.ts.map +1 -0
  52. package/dist/route-meta.js +48 -0
  53. package/dist/router.d.ts +27 -0
  54. package/dist/router.d.ts.map +1 -0
  55. package/dist/router.js +83 -0
  56. package/dist/ui-adapter.d.ts +67 -0
  57. package/dist/ui-adapter.d.ts.map +1 -0
  58. package/dist/ui-adapter.js +27 -0
  59. package/package.json +23 -0
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # @tyndall/core
2
+
3
+ ## Overview
4
+ Core framework contracts, routing, configuration schemas, and shared runtime/build orchestration interfaces.
5
+
6
+ ## Responsibilities
7
+ - Define framework-wide types, schemas, and contracts
8
+ - Build route graphs and route metadata
9
+ - Attach nested layout metadata for UI adapters when enabled
10
+ - Provide route matching, fallback policy evaluation, and page API contracts
11
+ - Resolve strict project config including logging and SSR client-routing policies (`logging.level`, `routing.ssrClientRouting`)
12
+ - Validate build version configuration for downstream manifest/HTML version stamping
13
+ - Provide client-bootstrap payload application behavior that remains compatible with mounted UI adapter roots
14
+ - Provide UI adapter streaming interfaces for SSR runtimes that support streaming responses
15
+
16
+ ## Public API Highlights
17
+ - loadConfig
18
+ - createRouteGraph
19
+ - resolveRouteWithPolicyFallback
20
+ - resolveUIAdapter
21
+
22
+ ## Development
23
+ - Build: bun run --filter @tyndall/core build
24
+ - Test (from workspace root): bun test
25
+
26
+ ## Documentation
27
+ - Package specification: [spec.md](./spec.md)
28
+ - Package architecture: [architecture.md](./architecture.md)
29
+ - Package changes: [CHANGELOG.md](./CHANGELOG.md)
30
+
31
+ ## Maintenance Rules
32
+ - Keep this document aligned with implemented package behavior.
33
+ - Update spec.md and architecture.md whenever package contracts or design boundaries change.
34
+ - Record user-visible package changes in CHANGELOG.md.
@@ -0,0 +1,11 @@
1
+ import type { ClientRenderMode, NavigationMode } from "./config.js";
2
+ export type LinkInterceptionMode = "marked" | "all";
3
+ export interface ClientRouterBootstrapOptions {
4
+ navigationMode: NavigationMode;
5
+ clientRenderMode: ClientRenderMode;
6
+ prefetchPath?: string;
7
+ linkInterceptionMode?: LinkInterceptionMode;
8
+ }
9
+ export declare const CLIENT_ROUTER_BOOTSTRAP_PATH = "/_hyper/client-bootstrap.js";
10
+ export declare const renderClientRouterBootstrap: (options: ClientRouterBootstrapOptions) => string;
11
+ //# sourceMappingURL=client-router-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-router-bootstrap.d.ts","sourceRoot":"","sources":["../src/client-router-bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpD,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED,eAAO,MAAM,4BAA4B,gCAAgC,CAAC;AAE1E,eAAO,MAAM,2BAA2B,GACtC,SAAS,4BAA4B,KACpC,MA8TF,CAAC"}
@@ -0,0 +1,319 @@
1
+ export const CLIENT_ROUTER_BOOTSTRAP_PATH = "/_hyper/client-bootstrap.js";
2
+ export const renderClientRouterBootstrap = (options) => {
3
+ const navigationMode = JSON.stringify(options.navigationMode);
4
+ const clientRenderMode = JSON.stringify(options.clientRenderMode);
5
+ const prefetchPath = JSON.stringify(options.prefetchPath ?? "/__hyper/prefetch");
6
+ const linkInterceptionMode = JSON.stringify(options.linkInterceptionMode ?? "marked");
7
+ return `(() => {
8
+ if (typeof window === "undefined") return;
9
+ if (window.__HYPER_CLIENT_BOOTSTRAP__) return;
10
+ window.__HYPER_CLIENT_BOOTSTRAP__ = true;
11
+
12
+ const navigationMode = ${navigationMode};
13
+ const clientRenderMode = ${clientRenderMode};
14
+ const prefetchPath = ${prefetchPath};
15
+ const linkInterceptionMode = ${linkInterceptionMode};
16
+
17
+ if (navigationMode !== "client") {
18
+ return;
19
+ }
20
+
21
+ const NAVIGATION_HEADER = "x-hyper-navigation";
22
+ const NAVIGATION_MODE = "csr";
23
+ const MANAGED_HEAD_ATTR = "data-hyper-head";
24
+ const ROUTE_PAYLOAD_EVENT = "hyper:route-payload-applied";
25
+
26
+ const isRecord = (value) =>
27
+ typeof value === "object" && value !== null && !Array.isArray(value);
28
+
29
+ const findAnchor = (target) => {
30
+ if (!target || typeof target.closest !== "function") {
31
+ return null;
32
+ }
33
+ return target.closest("a[href]");
34
+ };
35
+
36
+ const isModifiedClick = (event) =>
37
+ event.metaKey || event.ctrlKey || event.shiftKey || event.altKey;
38
+
39
+ const shouldInterceptAnchor = (anchor) => {
40
+ if (!anchor) return false;
41
+ if (anchor.getAttribute("data-hyper-link") === "false") return false;
42
+ if (linkInterceptionMode === "all") return true;
43
+ return anchor.hasAttribute("data-hyper-link");
44
+ };
45
+
46
+ const canHandleAnchor = (anchor, event) => {
47
+ if (!anchor) return false;
48
+ if (event && event.button !== 0) return false;
49
+ if (event && isModifiedClick(event)) return false;
50
+ if (anchor.hasAttribute("download")) return false;
51
+ if (anchor.getAttribute("target")) return false;
52
+ if (anchor.getAttribute("rel") === "external") return false;
53
+ if (!shouldInterceptAnchor(anchor)) return false;
54
+
55
+ const url = new URL(anchor.href, window.location.href);
56
+ if (url.origin !== window.location.origin) return false;
57
+ if (
58
+ url.hash &&
59
+ url.pathname === window.location.pathname &&
60
+ url.search === window.location.search
61
+ ) {
62
+ return false;
63
+ }
64
+ return true;
65
+ };
66
+
67
+ const removeManagedHead = () => {
68
+ const managed = document.head.querySelectorAll("[" + MANAGED_HEAD_ATTR + "]");
69
+ for (const node of managed) {
70
+ node.remove();
71
+ }
72
+ };
73
+
74
+ const appendHeadNode = (tagName, attrs) => {
75
+ const node = document.createElement(tagName);
76
+ for (const [key, value] of Object.entries(attrs)) {
77
+ if (value === undefined || value === null) continue;
78
+ node.setAttribute(key, String(value));
79
+ }
80
+ node.setAttribute(MANAGED_HEAD_ATTR, "true");
81
+ document.head.appendChild(node);
82
+ };
83
+
84
+ const applyHead = (head) => {
85
+ if (!isRecord(head)) return;
86
+ if (typeof head.title === "string") {
87
+ document.title = head.title;
88
+ }
89
+ removeManagedHead();
90
+ if (Array.isArray(head.meta)) {
91
+ for (const meta of head.meta) {
92
+ if (isRecord(meta)) {
93
+ appendHeadNode("meta", meta);
94
+ }
95
+ }
96
+ }
97
+ if (Array.isArray(head.link)) {
98
+ for (const link of head.link) {
99
+ if (isRecord(link)) {
100
+ appendHeadNode("link", link);
101
+ }
102
+ }
103
+ }
104
+ if (Array.isArray(head.script)) {
105
+ for (const script of head.script) {
106
+ if (isRecord(script)) {
107
+ appendHeadNode("script", script);
108
+ }
109
+ }
110
+ }
111
+ };
112
+
113
+ const isRoutePayload = (value) => {
114
+ if (!isRecord(value)) return false;
115
+ if (value.kind !== "hyper-route-payload") return false;
116
+ if (typeof value.routeId !== "string") return false;
117
+ if (typeof value.appHtml !== "string") return false;
118
+ if (typeof value.propsPayload !== "string") return false;
119
+ return true;
120
+ };
121
+
122
+ const applyPayload = (payload) => {
123
+ const app = document.getElementById("app");
124
+ const hasMountedClientApp =
125
+ payload.hydration !== "islands" && Boolean(window.__HYPER_CLIENT_APP_MOUNTED__);
126
+ if (app) {
127
+ if (!hasMountedClientApp) {
128
+ app.innerHTML = payload.appHtml;
129
+ }
130
+ app.setAttribute("data-hyper-route", payload.routeId);
131
+ if (payload.hydration === "full" || payload.hydration === "islands") {
132
+ app.setAttribute("data-hyper-hydration", payload.hydration);
133
+ }
134
+ app.setAttribute("data-hyper-hydrated", "false");
135
+ if (payload.hydration === "islands") {
136
+ app.setAttribute("data-hyper-island-root", "router");
137
+ } else {
138
+ app.removeAttribute("data-hyper-island-root");
139
+ }
140
+ }
141
+
142
+ const propsScript = document.getElementById("__HYPER_PROPS__");
143
+ if (propsScript) {
144
+ propsScript.textContent = payload.propsPayload;
145
+ }
146
+
147
+ applyHead(payload.head);
148
+ window.__HYPER_ROUTE_ID__ = payload.routeId;
149
+ window.__HYPER_HYDRATED__ = false;
150
+
151
+ try {
152
+ window.dispatchEvent(
153
+ new CustomEvent(ROUTE_PAYLOAD_EVENT, {
154
+ detail: { routeId: payload.routeId },
155
+ }),
156
+ );
157
+ } catch {
158
+ // Keep navigation resilient even when CustomEvent is unavailable.
159
+ }
160
+ };
161
+
162
+ const resolveModuleMap = () => {
163
+ const raw = window.__HYPER_CLIENT_ROUTE_MODULES__;
164
+ return isRecord(raw) ? raw : null;
165
+ };
166
+
167
+ const tryModuleRender = async (url) => {
168
+ if (clientRenderMode !== "module") return false;
169
+ const moduleMap = resolveModuleMap();
170
+ if (!moduleMap) return false;
171
+ const loader = moduleMap[url.pathname];
172
+ if (typeof loader !== "function") return false;
173
+ try {
174
+ const loaded = await loader();
175
+ const renderFn =
176
+ (isRecord(loaded) && typeof loaded.render === "function" && loaded.render) ||
177
+ (isRecord(loaded) && typeof loaded.default === "function" && loaded.default) ||
178
+ (typeof loaded === "function" && loaded);
179
+ if (typeof renderFn !== "function") return false;
180
+ const rendered = await renderFn({
181
+ href: url.toString(),
182
+ pathname: url.pathname,
183
+ routeId: url.pathname,
184
+ params: {},
185
+ query: {},
186
+ });
187
+ if (!isRecord(rendered) || typeof rendered.appHtml !== "string") {
188
+ return false;
189
+ }
190
+ applyPayload({
191
+ kind: "hyper-route-payload",
192
+ routeId: typeof rendered.routeId === "string" ? rendered.routeId : url.pathname,
193
+ appHtml: rendered.appHtml,
194
+ propsPayload:
195
+ typeof rendered.propsPayload === "string" ? rendered.propsPayload : "{}",
196
+ head: rendered.head,
197
+ hydration: rendered.hydration,
198
+ });
199
+ return true;
200
+ } catch {
201
+ return false;
202
+ }
203
+ };
204
+
205
+ const fetchPayload = async (url) => {
206
+ try {
207
+ const response = await fetch(url.toString(), {
208
+ method: "GET",
209
+ headers: {
210
+ [NAVIGATION_HEADER]: NAVIGATION_MODE,
211
+ accept: "application/json",
212
+ },
213
+ });
214
+ if (!response.ok) return null;
215
+ const contentType = response.headers.get("content-type") || "";
216
+ if (!contentType.includes("application/json")) return null;
217
+ const json = await response.json();
218
+ return isRoutePayload(json) ? json : null;
219
+ } catch {
220
+ return null;
221
+ }
222
+ };
223
+
224
+ const updateHistory = (url, replace) => {
225
+ if (replace) {
226
+ window.history.replaceState(null, "", url.toString());
227
+ return;
228
+ }
229
+ window.history.pushState(null, "", url.toString());
230
+ };
231
+
232
+ const navigateByUrl = (url, replace) => {
233
+ const href = url.toString();
234
+ if (replace) {
235
+ window.location.replace(href);
236
+ return;
237
+ }
238
+ window.location.assign(href);
239
+ };
240
+
241
+ const navigate = async (href, options = {}) => {
242
+ const url = new URL(href, window.location.href);
243
+ if (await tryModuleRender(url)) {
244
+ if (!options.skipHistory) {
245
+ updateHistory(url, Boolean(options.replace));
246
+ }
247
+ return true;
248
+ }
249
+ const payload = await fetchPayload(url);
250
+ if (payload) {
251
+ applyPayload(payload);
252
+ if (!options.skipHistory) {
253
+ updateHistory(url, Boolean(options.replace));
254
+ }
255
+ return true;
256
+ }
257
+ if (!options.disableUrlFallback) {
258
+ navigateByUrl(url, Boolean(options.replace));
259
+ }
260
+ return false;
261
+ };
262
+
263
+ const prefetch = async (href) => {
264
+ try {
265
+ const url = new URL(href, window.location.href);
266
+ const prefetchUrl = new URL(prefetchPath, window.location.origin);
267
+ prefetchUrl.searchParams.set("path", url.pathname + url.search);
268
+ await fetch(prefetchUrl.toString(), { method: "POST" });
269
+ } catch {
270
+ // Best-effort prefetch only.
271
+ }
272
+ };
273
+
274
+ document.addEventListener(
275
+ "click",
276
+ (event) => {
277
+ const anchor = findAnchor(event.target);
278
+ if (!canHandleAnchor(anchor, event)) {
279
+ return;
280
+ }
281
+ event.preventDefault();
282
+ void navigate(anchor.href);
283
+ },
284
+ true,
285
+ );
286
+
287
+ document.addEventListener(
288
+ "mouseover",
289
+ (event) => {
290
+ const anchor = findAnchor(event.target);
291
+ if (!anchor || !shouldInterceptAnchor(anchor)) {
292
+ return;
293
+ }
294
+ void prefetch(anchor.href);
295
+ },
296
+ true,
297
+ );
298
+
299
+ document.addEventListener(
300
+ "focusin",
301
+ (event) => {
302
+ const anchor = findAnchor(event.target);
303
+ if (!anchor || !shouldInterceptAnchor(anchor)) {
304
+ return;
305
+ }
306
+ void prefetch(anchor.href);
307
+ },
308
+ true,
309
+ );
310
+
311
+ window.addEventListener("popstate", () => {
312
+ void navigate(window.location.href, {
313
+ replace: true,
314
+ skipHistory: true,
315
+ disableUrlFallback: false,
316
+ });
317
+ });
318
+ })();`;
319
+ };
@@ -0,0 +1,197 @@
1
+ import type { UIAdapterFactory } from "./ui-adapter.js";
2
+ export type RenderMode = "ssg" | "ssr" | "auto";
3
+ export type ProjectMode = "ssg" | "ssr";
4
+ export type JsxRuntime = "classic" | "automatic";
5
+ export type Engine = "bun" | "node";
6
+ export type Bundler = "bun" | "esbuild" | "swc";
7
+ export type TranspileStrategy = "typescript-native" | "tsc";
8
+ export type LintTool = "biome" | "eslint";
9
+ export type FormatTool = "biome" | "eslint" | "prettier";
10
+ export type RuntimeAdapter = "node" | "express" | "fastify";
11
+ export type LegacyPolyfills = "auto" | string[];
12
+ export type LegacyChunking = "auto" | "safe";
13
+ export type E2EMode = "dev" | "ssg" | "ssr";
14
+ export type E2EReporter = "console" | "json" | "html";
15
+ export type NavigationMode = "url" | "client";
16
+ export type ClientRenderMode = "payload" | "module";
17
+ export type LoggingLevel = "fatal" | "error" | "warn" | "info";
18
+ export interface Plugin {
19
+ name?: string;
20
+ [key: string]: unknown;
21
+ }
22
+ export interface HyperConfig {
23
+ mode?: ProjectMode;
24
+ ssr?: boolean;
25
+ outDir?: string;
26
+ basePath?: string;
27
+ assetsDir?: string;
28
+ publicDir?: string;
29
+ routesDir?: string;
30
+ jsxRuntime?: JsxRuntime;
31
+ target?: string;
32
+ build?: {
33
+ version?: string;
34
+ };
35
+ lint?: Record<string, unknown> & {
36
+ tool?: LintTool;
37
+ };
38
+ format?: Record<string, unknown> & {
39
+ tool?: FormatTool;
40
+ };
41
+ plugins?: Plugin[];
42
+ ssrAdapters?: RuntimeAdapter[];
43
+ revalidateDefault?: number | false;
44
+ dev?: {
45
+ onDemandRoutes?: boolean;
46
+ prewarmRoutes?: string[];
47
+ };
48
+ ui?: {
49
+ adapter?: string | UIAdapterFactory;
50
+ options?: Record<string, unknown>;
51
+ };
52
+ render?: {
53
+ mode?: RenderMode;
54
+ };
55
+ routing?: {
56
+ nestedLayouts?: boolean;
57
+ routeGroups?: boolean;
58
+ routeMeta?: boolean;
59
+ navigation?: NavigationMode;
60
+ clientRender?: ClientRenderMode;
61
+ ssrClientRouting?: boolean;
62
+ };
63
+ cache?: {
64
+ enabled?: boolean;
65
+ dir?: string;
66
+ maxSizeMB?: number;
67
+ maxAgeDays?: number;
68
+ propsTTLSeconds?: number | false;
69
+ renderCache?: boolean;
70
+ chunkCache?: boolean;
71
+ };
72
+ testing?: {
73
+ e2e?: {
74
+ enabled?: boolean;
75
+ defaultMode?: E2EMode;
76
+ headless?: boolean;
77
+ retry?: number;
78
+ reporters?: E2EReporter[];
79
+ environmentScript?: string;
80
+ };
81
+ };
82
+ logging?: {
83
+ level?: LoggingLevel;
84
+ };
85
+ modules?: {
86
+ dynamicManifest?: {
87
+ enabled?: boolean;
88
+ program?: {
89
+ integrityRequired?: boolean;
90
+ allow?: string[];
91
+ timeoutMs?: number;
92
+ memoryMb?: number;
93
+ };
94
+ };
95
+ };
96
+ engine?: Engine | {
97
+ runtime?: Engine;
98
+ build?: Engine;
99
+ };
100
+ bundler?: Bundler;
101
+ transpile?: TranspileStrategy;
102
+ legacy?: {
103
+ enabled?: boolean;
104
+ polyfills?: LegacyPolyfills;
105
+ chunking?: LegacyChunking;
106
+ test?: boolean;
107
+ };
108
+ }
109
+ export interface ResolvedConfig {
110
+ mode: ProjectMode;
111
+ ssr: boolean;
112
+ outDir: string;
113
+ basePath: string;
114
+ assetsDir: string;
115
+ publicDir: string;
116
+ routesDir: string;
117
+ jsxRuntime: JsxRuntime;
118
+ target: string;
119
+ build: {
120
+ version: string;
121
+ };
122
+ lint: Record<string, unknown> & {
123
+ tool: LintTool;
124
+ };
125
+ format: Record<string, unknown> & {
126
+ tool: FormatTool;
127
+ };
128
+ plugins: Plugin[];
129
+ ssrAdapters: RuntimeAdapter[];
130
+ revalidateDefault: number | false;
131
+ dev: {
132
+ onDemandRoutes: boolean;
133
+ prewarmRoutes: string[];
134
+ };
135
+ ui: {
136
+ adapter: string | UIAdapterFactory;
137
+ options: Record<string, unknown>;
138
+ };
139
+ render: {
140
+ mode: RenderMode;
141
+ };
142
+ routing: {
143
+ nestedLayouts: boolean;
144
+ routeGroups: boolean;
145
+ routeMeta: boolean;
146
+ navigation: NavigationMode;
147
+ clientRender: ClientRenderMode;
148
+ ssrClientRouting: boolean;
149
+ };
150
+ cache: {
151
+ enabled: boolean;
152
+ dir: string;
153
+ maxSizeMB: number;
154
+ maxAgeDays: number;
155
+ propsTTLSeconds: number | false;
156
+ renderCache: boolean;
157
+ chunkCache: boolean;
158
+ };
159
+ testing: {
160
+ e2e: {
161
+ enabled: boolean;
162
+ defaultMode: E2EMode;
163
+ headless: boolean;
164
+ retry: number;
165
+ reporters: E2EReporter[];
166
+ environmentScript?: string;
167
+ };
168
+ };
169
+ logging: {
170
+ level: LoggingLevel;
171
+ };
172
+ modules: {
173
+ dynamicManifest: {
174
+ enabled: boolean;
175
+ program: {
176
+ integrityRequired: boolean;
177
+ allow: string[];
178
+ timeoutMs: number;
179
+ memoryMb: number;
180
+ };
181
+ };
182
+ };
183
+ engine: {
184
+ build: Engine;
185
+ runtime: Engine;
186
+ };
187
+ bundler: Bundler;
188
+ transpile: TranspileStrategy;
189
+ legacy: {
190
+ enabled: boolean;
191
+ polyfills: LegacyPolyfills;
192
+ chunking: LegacyChunking;
193
+ test: boolean;
194
+ };
195
+ }
196
+ export declare const loadConfig: (cwd: string) => Promise<ResolvedConfig>;
197
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,CAAC;AACxC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AACjD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AACpC,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;AAChD,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,GAAG,KAAK,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AACzD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAChD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAC5C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/D,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACnC,GAAG,CAAC,EAAE;QACJ,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,EAAE,CAAC,EAAE;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;QACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,UAAU,CAAC;KACnB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,cAAc,CAAC;QAC5B,YAAY,CAAC,EAAE,gBAAgB,CAAC;QAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACjC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE;YACJ,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;YAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,eAAe,CAAC,EAAE;YAChB,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,OAAO,CAAC,EAAE;gBACR,iBAAiB,CAAC,EAAE,OAAO,CAAC;gBAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;gBACjB,SAAS,CAAC,EAAE,MAAM,CAAC;gBACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;aACnB,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,eAAe,CAAC;QAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;QAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QACL,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAC;IACnD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IACvD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,KAAK,CAAC;IAClC,GAAG,EAAE;QACH,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,EAAE,EAAE;QACF,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,MAAM,EAAE;QACN,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,aAAa,EAAE,OAAO,CAAC;QACvB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,cAAc,CAAC;QAC3B,YAAY,EAAE,gBAAgB,CAAC;QAC/B,gBAAgB,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,GAAG,KAAK,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC;QACrB,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,GAAG,EAAE;YACH,OAAO,EAAE,OAAO,CAAC;YACjB,WAAW,EAAE,OAAO,CAAC;YACrB,QAAQ,EAAE,OAAO,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,EAAE,WAAW,EAAE,CAAC;YACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,CAAC;IACF,OAAO,EAAE;QACP,KAAK,EAAE,YAAY,CAAC;KACrB,CAAC;IACF,OAAO,EAAE;QACP,eAAe,EAAE;YACf,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE;gBACP,iBAAiB,EAAE,OAAO,CAAC;gBAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;gBAChB,SAAS,EAAE,MAAM,CAAC;gBAClB,QAAQ,EAAE,MAAM,CAAC;aAClB,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE,cAAc,CAAC;QACzB,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAsLD,eAAO,MAAM,UAAU,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,cAAc,CAMpE,CAAC"}