@marko/run 0.9.4 → 0.9.6
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/README.md +57 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapter/index.cjs +2 -2
- package/dist/adapter/index.js +2 -2
- package/dist/cli/index.mjs +39 -11
- package/dist/runtime/index.d.ts +13 -3
- package/dist/runtime/internal.cjs +49 -3
- package/dist/runtime/internal.d.ts +2 -1
- package/dist/runtime/internal.js +47 -2
- package/dist/runtime/namespace.d.ts +1 -1
- package/dist/runtime/types.d.ts +24 -18
- package/dist/vite/index.cjs +73 -18
- package/dist/vite/index.d.ts +2 -2
- package/dist/vite/index.js +65 -11
- package/dist/vite/utils/meta-data.d.ts +3 -0
- package/package.json +1 -1
package/dist/vite/index.js
CHANGED
|
@@ -310,7 +310,10 @@ function renderRouteEntry(route, rootDir) {
|
|
|
310
310
|
const imports = writer.branch("imports");
|
|
311
311
|
const runtimeImports = [];
|
|
312
312
|
if (handler) {
|
|
313
|
-
runtimeImports.push("
|
|
313
|
+
runtimeImports.push("normalizeHandler");
|
|
314
|
+
}
|
|
315
|
+
if (meta) {
|
|
316
|
+
runtimeImports.push("normalizeMeta");
|
|
314
317
|
}
|
|
315
318
|
if (handler || middleware.length) {
|
|
316
319
|
runtimeImports.push("call");
|
|
@@ -342,7 +345,9 @@ function renderRouteEntry(route, rootDir) {
|
|
|
342
345
|
for (const verb of handler.verbs) {
|
|
343
346
|
const importName = verb.toUpperCase();
|
|
344
347
|
names.push(importName);
|
|
345
|
-
writer.writeLines(
|
|
348
|
+
writer.writeLines(
|
|
349
|
+
`const ${verb}Handler = normalizeHandler(${importName});`
|
|
350
|
+
);
|
|
346
351
|
}
|
|
347
352
|
imports.writeLines(
|
|
348
353
|
`import { ${names.join(", ")} } from "${normalizedRelativePath(rootDir, handler.filePath)}";`
|
|
@@ -354,8 +359,18 @@ function renderRouteEntry(route, rootDir) {
|
|
|
354
359
|
);
|
|
355
360
|
}
|
|
356
361
|
if (meta) {
|
|
362
|
+
const metaName = `meta${index}`;
|
|
363
|
+
const metaVerbsExports = verbs.map((verb) => {
|
|
364
|
+
var _a2;
|
|
365
|
+
const name = verb === "head" && !((_a2 = handler == null ? void 0 : handler.verbs) == null ? void 0 : _a2.includes(verb)) ? "GET" : verb.toUpperCase();
|
|
366
|
+
return `${name}: ${verb}${index}_meta`;
|
|
367
|
+
}).join(", ");
|
|
368
|
+
writer.writeLines("");
|
|
357
369
|
imports.writeLines(
|
|
358
|
-
`
|
|
370
|
+
`import ${metaName} from "${normalizedRelativePath(rootDir, meta.filePath)}";`
|
|
371
|
+
);
|
|
372
|
+
writer.writeLines(
|
|
373
|
+
`export const { ${metaVerbsExports} } = normalizeMeta(${metaName});`
|
|
359
374
|
);
|
|
360
375
|
}
|
|
361
376
|
for (const verb of verbs) {
|
|
@@ -474,10 +489,16 @@ function renderRouter(routes, rootDir, runtimeInclude, options = {
|
|
|
474
489
|
);
|
|
475
490
|
for (const route of routes.list) {
|
|
476
491
|
const verbs = getVerbs(route);
|
|
477
|
-
const
|
|
478
|
-
|
|
492
|
+
const routeImports = [];
|
|
493
|
+
for (const verb of verbs) {
|
|
494
|
+
const verbName = `${verb}${route.index}`;
|
|
495
|
+
routeImports.push(verbName);
|
|
496
|
+
if (route.meta) {
|
|
497
|
+
routeImports.push(`${verbName}_meta`);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
479
500
|
imports.writeLines(
|
|
480
|
-
`import { ${
|
|
501
|
+
`import { ${routeImports.join(", ")} } from "${virtualFilePrefix}/${getRouteVirtualFileName(route)}";`
|
|
481
502
|
);
|
|
482
503
|
}
|
|
483
504
|
for (const route of Object.values(routes.special)) {
|
|
@@ -769,14 +790,14 @@ function renderParams(params, pathIndex) {
|
|
|
769
790
|
function renderMatch(verb, route, path7, pathIndex) {
|
|
770
791
|
const handler = `${verb}${route.index}`;
|
|
771
792
|
const params = path7.params ? renderParams(path7.params, pathIndex) : "{}";
|
|
772
|
-
const meta = route.meta ?
|
|
793
|
+
const meta = route.meta ? `${verb}${route.index}_meta` : "{}";
|
|
773
794
|
return `{ handler: ${handler}, params: ${params}, meta: ${meta}, path: '${path7.path}' }`;
|
|
774
795
|
}
|
|
775
796
|
function renderMiddleware(middleware, rootDir) {
|
|
776
797
|
const writer = createStringWriter();
|
|
777
798
|
const imports = writer.branch("imports");
|
|
778
799
|
imports.writeLines(
|
|
779
|
-
`import {
|
|
800
|
+
`import { normalizeHandler } from "${virtualFilePrefix}/runtime/internal";`
|
|
780
801
|
);
|
|
781
802
|
writer.writeLines("");
|
|
782
803
|
for (const { id, filePath } of middleware) {
|
|
@@ -784,7 +805,9 @@ function renderMiddleware(middleware, rootDir) {
|
|
|
784
805
|
imports.writeLines(
|
|
785
806
|
`import ${importName} from "${normalizedRelativePath(rootDir, filePath)}";`
|
|
786
807
|
);
|
|
787
|
-
writer.writeLines(
|
|
808
|
+
writer.writeLines(
|
|
809
|
+
`export const mware${id} = normalizeHandler(${importName});`
|
|
810
|
+
);
|
|
788
811
|
}
|
|
789
812
|
imports.join();
|
|
790
813
|
return writer.end();
|
|
@@ -943,7 +966,12 @@ function writeModuleDeclaration(writer, name, routeType, moduleTypes) {
|
|
|
943
966
|
export { NotHandled, NotMatched, GetPaths, PostPaths, GetablePath, GetableHref, PostablePath, PostableHref, Platform };
|
|
944
967
|
export type Route = ${routeType};
|
|
945
968
|
export type Context = Run.MultiRouteContext<Route>${isMarko ? " & Marko.Global" : ""};
|
|
946
|
-
export type Handler = Run.HandlerLike<Route
|
|
969
|
+
export type Handler = Run.HandlerLike<Route>;`);
|
|
970
|
+
for (const verb of httpVerbs) {
|
|
971
|
+
writer.write(`
|
|
972
|
+
export type ${verb.toUpperCase()} = Run.HandlerLike<Route, "${verb.toUpperCase()}">;`);
|
|
973
|
+
}
|
|
974
|
+
writer.write(`
|
|
947
975
|
/** @deprecated use \`((context, next) => { ... }) satisfies MarkoRun.Handler\` instead */
|
|
948
976
|
export const route: Run.HandlerTypeFn<Route>;
|
|
949
977
|
}`);
|
|
@@ -1544,7 +1572,7 @@ function createFSWalker(dir) {
|
|
|
1544
1572
|
}
|
|
1545
1573
|
|
|
1546
1574
|
// src/vite/utils/ast.ts
|
|
1547
|
-
import
|
|
1575
|
+
import { types as t } from "@marko/compiler";
|
|
1548
1576
|
function getExportIdentifiers(astProgramNode) {
|
|
1549
1577
|
const result = [];
|
|
1550
1578
|
if (t.isProgram(astProgramNode)) {
|
|
@@ -2484,6 +2512,31 @@ var defaultConfigPlugin = {
|
|
|
2484
2512
|
}
|
|
2485
2513
|
};
|
|
2486
2514
|
|
|
2515
|
+
// src/vite/utils/meta-data.ts
|
|
2516
|
+
var verbKeys = new Set(httpVerbs.map((v) => v.toUpperCase()));
|
|
2517
|
+
function isObject(obj) {
|
|
2518
|
+
return obj && typeof obj === "object" && !Array.isArray(obj);
|
|
2519
|
+
}
|
|
2520
|
+
function getMetaDataForVerb(data, verb) {
|
|
2521
|
+
if (!httpVerbs.includes(verb.toLowerCase())) {
|
|
2522
|
+
throw new Error(
|
|
2523
|
+
`Invalid argument 'verb': expected one of ${[...verbKeys].join(", ")} but received ${verb}`
|
|
2524
|
+
);
|
|
2525
|
+
}
|
|
2526
|
+
if (isObject(data)) {
|
|
2527
|
+
return Object.keys(data).reduce(
|
|
2528
|
+
(result, key) => {
|
|
2529
|
+
if (!(key in result || verbKeys.has(key))) {
|
|
2530
|
+
result[key] = data[key];
|
|
2531
|
+
}
|
|
2532
|
+
return result;
|
|
2533
|
+
},
|
|
2534
|
+
isObject(data[verb]) ? { ...data[verb] } : {}
|
|
2535
|
+
);
|
|
2536
|
+
}
|
|
2537
|
+
return data;
|
|
2538
|
+
}
|
|
2539
|
+
|
|
2487
2540
|
// src/vite/utils/server.ts
|
|
2488
2541
|
import cp from "child_process";
|
|
2489
2542
|
import cluster from "cluster";
|
|
@@ -2634,6 +2687,7 @@ export {
|
|
|
2634
2687
|
defaultConfigPlugin,
|
|
2635
2688
|
getApi,
|
|
2636
2689
|
getAvailablePort,
|
|
2690
|
+
getMetaDataForVerb,
|
|
2637
2691
|
getPackageData,
|
|
2638
2692
|
isPortInUse,
|
|
2639
2693
|
loadEnv,
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { NormalizedMeta, NormalizedMetaLookup, Verb } from "../../runtime/types";
|
|
2
|
+
export declare function getMetaDataForVerb<T, TVerb extends Verb>(data: T, verb: TVerb): NormalizedMeta<T, TVerb>;
|
|
3
|
+
export declare function getMetaDataLookup<T>(data: T): NormalizedMetaLookup<T>;
|