@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.
@@ -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("normalize");
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(`const ${verb}Handler = normalize(${importName});`);
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
- `export { default as meta${index} } from "${normalizedRelativePath(rootDir, meta.filePath)}";`
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 names = verbs.map((verb) => `${verb}${route.index}`);
478
- route.meta && names.push(`meta${route.index}`);
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 { ${names.join(", ")} } from "${virtualFilePrefix}/${getRouteVirtualFileName(route)}";`
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 ? `meta${route.index}` : "{}";
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 { normalize } from "${virtualFilePrefix}/runtime/internal";`
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(`export const mware${id} = normalize(${importName});`);
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 * as t from "@babel/types";
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>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marko/run",
3
- "version": "0.9.4",
3
+ "version": "0.9.6",
4
4
  "description": "The Marko application framework.",
5
5
  "keywords": [
6
6
  "marko"