@marko/run 0.2.6 → 0.2.7

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.
@@ -28,14 +28,15 @@ import path2 from "path";
28
28
  import crypto from "crypto";
29
29
  import fs2 from "fs";
30
30
  import glob from "glob";
31
+ import { fileURLToPath } from "url";
32
+ import browserslist from "browserslist";
33
+ import { resolveToEsbuildTarget } from "esbuild-plugin-browserslist";
31
34
  import { mergeConfig } from "vite";
32
35
  import markoVitePlugin, { FileStore } from "@marko/vite";
33
36
 
34
37
  // src/vite/constants.ts
35
38
  var markoRunFilePrefix = "__marko-run__";
36
39
  var virtualFilePrefix = "virtual:marko-run";
37
- var virtualRoutesPrefix = `${virtualFilePrefix}/routes`;
38
- var virtualRuntimePrefix = `${virtualFilePrefix}/internal`;
39
40
  var httpVerbs = ["get", "post", "put", "delete"];
40
41
  var serverEntryQuery = "?marko-server-entry";
41
42
  var RoutableFileTypes = {
@@ -50,7 +51,7 @@ var RoutableFileTypes = {
50
51
 
51
52
  // src/vite/routes/vdir.ts
52
53
  var _dirs, _pathlessDirs;
53
- var _VDir = class {
54
+ var _VDir = class _VDir {
54
55
  constructor(parent, segment, source) {
55
56
  __privateAdd(this, _dirs, void 0);
56
57
  __privateAdd(this, _pathlessDirs, void 0);
@@ -187,9 +188,9 @@ var _VDir = class {
187
188
  return dirs;
188
189
  }
189
190
  };
190
- var VDir = _VDir;
191
191
  _dirs = new WeakMap();
192
192
  _pathlessDirs = new WeakMap();
193
+ var VDir = _VDir;
193
194
 
194
195
  // src/vite/routes/parse.ts
195
196
  function parseFlatRoute(pattern) {
@@ -710,23 +711,35 @@ function renderRouteTemplate(route) {
710
711
  if (!route.page) {
711
712
  throw new Error(`Route ${route.key} has no page to render`);
712
713
  }
714
+ return renderEntryTemplate(
715
+ route.entryName,
716
+ [...route.layouts, route.page].map((file) => `./${file.importPath}`)
717
+ );
718
+ }
719
+ function renderEntryTemplate(name, files) {
720
+ if (!name) {
721
+ throw new Error(`Invalid argument - 'name' cannot be empty`);
722
+ }
723
+ if (!files.length) {
724
+ throw new Error(`Invalid argument - 'files' cannot be empty`);
725
+ }
713
726
  const writer = createStringWriter();
714
- writer.writeLines(`// ${virtualFilePrefix}/${route.entryName}.marko`);
727
+ writer.writeLines(`// ${virtualFilePrefix}/${name}.marko`);
715
728
  writer.branch("imports");
716
729
  writer.writeLines("");
717
- writeRouteTemplateTag(writer, [...route.layouts, route.page]);
730
+ writeEntryTemplateTag(writer, files);
718
731
  return writer.end();
719
732
  }
720
- function writeRouteTemplateTag(writer, [file, ...rest], index = 1) {
733
+ function writeEntryTemplateTag(writer, [file, ...rest], index = 1) {
721
734
  if (file) {
722
735
  const isLast = !rest.length;
723
736
  const tag = isLast ? "page" : `layout${index}`;
724
- writer.branch("imports").writeLines(`import ${tag} from './${file.importPath}';`);
737
+ writer.branch("imports").writeLines(`import ${tag} from '${file}';`);
725
738
  if (isLast) {
726
- writer.writeLines(`<${tag} ...input />`);
739
+ writer.writeLines(`<${tag} ...input/>`);
727
740
  } else {
728
741
  writer.writeBlockStart(`<${tag} ...input>`);
729
- writeRouteTemplateTag(writer, rest, index + 1);
742
+ writeEntryTemplateTag(writer, rest, index + 1);
730
743
  writer.writeBlockEnd(`</>`);
731
744
  }
732
745
  }
@@ -758,7 +771,9 @@ function renderRouteEntry(route) {
758
771
  }
759
772
  if (runtimeImports.length) {
760
773
  imports.writeLines(
761
- `import { ${runtimeImports.join(", ")} } from '${virtualRuntimePrefix}';`
774
+ `import { ${runtimeImports.join(
775
+ ", "
776
+ )} } from '${virtualFilePrefix}/runtime/internal';`
762
777
  );
763
778
  }
764
779
  if (middleware.length) {
@@ -872,6 +887,45 @@ function writeRouteEntryHandler(writer, route, verb) {
872
887
  continuations.join();
873
888
  writer.writeBlockEnd("}");
874
889
  }
890
+ function renderErrorRouter(error, options = {
891
+ trailingSlashes: "RedirectWithout"
892
+ }) {
893
+ const writer = createStringWriter();
894
+ writer.write(`
895
+ // @marko/run/router
896
+ import { createContext } from '${virtualFilePrefix}/runtime/internal';
897
+ import errorPage from '${virtualFilePrefix}/${markoRunFilePrefix}error.marko${serverEntryQuery}';
898
+
899
+ const error = new Error(\`${error.message}\`);
900
+ error.name = '${error.name}';`);
901
+ if (error.stack) {
902
+ writer.write(`
903
+ error.stack = \`${error.stack}\`;`);
904
+ }
905
+ writer.write(`
906
+
907
+ globalThis.__marko_run__ = { match, fetch, invoke };
908
+
909
+ export function match() {
910
+ return { handler: errorPage, params: {}, meta: {}, path: '/*' }; // /$$
911
+ }
912
+
913
+ export async function invoke(route, request, platform, url) {
914
+ const [context, buildInput] = createContext(route, request, platform, url);
915
+ if (context.request.headers.get('Accept')?.includes('text/html')) {
916
+ return new Response(errorPage.stream(buildInput({ error })), {
917
+ status: 500,
918
+ headers: { "content-type": "text/html;charset=UTF-8" },
919
+ });
920
+ }
921
+ return new Response(error, {
922
+ status: 500,
923
+ });
924
+ }
925
+ `);
926
+ renderFetch(writer, options);
927
+ return writer.end();
928
+ }
875
929
  function renderRouter(routes, options = {
876
930
  trailingSlashes: "RedirectWithout"
877
931
  }) {
@@ -879,7 +933,7 @@ function renderRouter(routes, options = {
879
933
  writer.writeLines(`// @marko/run/router`);
880
934
  const imports = writer.branch("imports");
881
935
  imports.writeLines(
882
- `import { NotHandled, NotMatched, createContext } from 'virtual:marko-run/internal';`
936
+ `import { NotHandled, NotMatched, createContext } from '${virtualFilePrefix}/runtime/internal';`
883
937
  );
884
938
  for (const route of routes.list) {
885
939
  const verbs = getVerbs(route);
@@ -915,24 +969,24 @@ globalThis.__marko_run__ = { match, fetch, invoke };
915
969
  }
916
970
  }
917
971
  writer.writeBlockEnd("}").writeLines("return null;").writeBlockEnd("}");
918
- writer.write(`
919
- export async function invoke(route, request, platform, url) {
920
- const [context, buildInput] = createContext(route, request, platform, url);
921
- try {
922
- if (route) {
923
- try {
924
- const response = await route.handler(context, buildInput);
925
- if (response) return response;
926
- } catch (error) {
927
- if (error === NotHandled) {
928
- return;
929
- } else if (error !== NotMatched) {
930
- throw error;
931
- }
932
- }
933
- `);
972
+ writer.writeLines("").writeBlockStart(
973
+ "export async function invoke(route, request, platform, url) {"
974
+ ).writeLines(
975
+ "const [context, buildInput] = createContext(route, request, platform, url);"
976
+ );
977
+ const hasErrorPage = Boolean(routes.special[RoutableFileTypes.Error]);
978
+ if (hasErrorPage) {
979
+ writer.writeBlockStart("try {");
980
+ }
981
+ writer.writeBlockStart("if (route) {").writeBlockStart("try {").writeLines(
982
+ "const response = await route.handler(context, buildInput);",
983
+ "if (response) return response;"
984
+ ).indent--;
985
+ writer.writeBlockStart("} catch (error) {").writeLines(
986
+ "if (error === NotHandled) return;",
987
+ "if (error !== NotMatched) throw error;"
988
+ ).writeBlockEnd("}").writeBlockEnd("}");
934
989
  if (routes.special[RoutableFileTypes.NotFound]) {
935
- writer.indent = 2;
936
990
  imports.writeLines(
937
991
  `
938
992
  const page404ResponseInit = {
@@ -940,33 +994,31 @@ const page404ResponseInit = {
940
994
  headers: { "content-type": "text/html;charset=UTF-8" },
941
995
  };`
942
996
  );
943
- writer.write(
944
- ` } else {
945
- }
997
+ writer.write(`
946
998
  if (context.request.headers.get('Accept')?.includes('text/html')) {
947
999
  return new Response(page404.stream(buildInput()), page404ResponseInit);
948
1000
  }
949
- `
950
- );
951
- } else {
952
- writer.indent = 3;
953
- writer.writeBlockEnd("}");
1001
+ `);
954
1002
  }
955
1003
  writer.indent--;
956
- writer.writeBlockStart(`} catch (error) {`);
957
- if (routes.special[RoutableFileTypes.Error]) {
1004
+ if (hasErrorPage) {
958
1005
  imports.writeLines(`
959
1006
  const page500ResponseInit = {
960
1007
  status: 500,
961
1008
  headers: { "content-type": "text/html;charset=UTF-8" },
962
1009
  };`);
963
- writer.writeBlockStart(
1010
+ writer.writeBlockStart(`} catch (error) {`).writeBlockStart(
964
1011
  `if (context.request.headers.get('Accept')?.includes('text/html')) {`
965
1012
  ).writeLines(
966
1013
  `return new Response(page500.stream(buildInput({ error })), page500ResponseInit);`
967
- ).writeBlockEnd("}");
1014
+ ).writeBlockEnd("}").writeLines("throw error;").writeBlockEnd("}");
968
1015
  }
969
- writer.writeLines(`throw error;`).writeBlockEnd("}").writeBlockEnd("}").write(`
1016
+ writer.writeBlockEnd("}");
1017
+ renderFetch(writer, options);
1018
+ return writer.end();
1019
+ }
1020
+ function renderFetch(writer, options) {
1021
+ writer.write(`
970
1022
  export async function fetch(request, platform) {
971
1023
  try {
972
1024
  const url = new URL(request.url);
@@ -1012,7 +1064,6 @@ export async function fetch(request, platform) {
1012
1064
  });
1013
1065
  }
1014
1066
  }`);
1015
- return writer.end();
1016
1067
  }
1017
1068
  function writeRouterVerb(writer, trie, verb, level = 0, offset = 1) {
1018
1069
  const { route, dynamic, catchAll } = trie;
@@ -1134,7 +1185,12 @@ function writeRouterVerb(writer, trie, verb, level = 0, offset = 1) {
1134
1185
  }
1135
1186
  if (catchAll) {
1136
1187
  writer.writeLines(
1137
- `return ${renderMatch(verb, catchAll.route, catchAll.path, String(offset))}; // ${catchAll.path.path}`
1188
+ `return ${renderMatch(
1189
+ verb,
1190
+ catchAll.route,
1191
+ catchAll.path,
1192
+ String(offset)
1193
+ )}; // ${catchAll.path.path}`
1138
1194
  );
1139
1195
  } else if (level === 0) {
1140
1196
  writer.writeLines("return null;");
@@ -1176,7 +1232,9 @@ function renderMiddleware(middleware) {
1176
1232
  `// ${virtualFilePrefix}/${markoRunFilePrefix}middleware.js`
1177
1233
  );
1178
1234
  const imports = writer.branch("imports");
1179
- imports.writeLines(`import { normalize } from 'virtual:marko-run/internal';`);
1235
+ imports.writeLines(
1236
+ `import { normalize } from '${virtualFilePrefix}/runtime/internal';`
1237
+ );
1180
1238
  writer.writeLines("");
1181
1239
  for (const { id, importPath } of middleware) {
1182
1240
  const importName = `middleware${id}`;
@@ -1582,7 +1640,6 @@ var setExternalPluginOptions = (viteConfig, value) => setConfig(viteConfig, Plug
1582
1640
  var getExternalAdapterOptions = (viteConfig) => getConfig(viteConfig, AdapterConfigKey);
1583
1641
 
1584
1642
  // src/vite/plugin.ts
1585
- import { fileURLToPath } from "url";
1586
1643
  var __dirname = path2.dirname(fileURLToPath(import.meta.url));
1587
1644
  var PLUGIN_NAME_PREFIX = "marko-run-vite";
1588
1645
  var POSIX_SEP = "/";
@@ -1615,14 +1672,14 @@ function markoRun(opts = {}) {
1615
1672
  routesBuild: 0,
1616
1673
  routesRender: 0
1617
1674
  };
1618
- async function writeTypesFile() {
1619
- if (tsConfigExists ?? (tsConfigExists = await globFileExists(
1675
+ async function writeTypesFile(routes2) {
1676
+ if (routes2 && (tsConfigExists ?? (tsConfigExists = await globFileExists(
1620
1677
  root,
1621
1678
  "{.tsconfig*,tsconfig*.json}"
1622
- ))) {
1679
+ )))) {
1623
1680
  const filepath = path2.join(typesDir, "routes.d.ts");
1624
1681
  const data = await renderRouteTypeInfo(
1625
- routes,
1682
+ routes2,
1626
1683
  normalizePath(path2.relative(typesDir, resolvedRoutesDir)),
1627
1684
  adapter
1628
1685
  );
@@ -1632,65 +1689,95 @@ function markoRun(opts = {}) {
1632
1689
  }
1633
1690
  }
1634
1691
  }
1635
- async function setVirtualFiles(render = false) {
1636
- for (const route of routes.list) {
1637
- if (render && route.handler) {
1638
- route.handler.verbs = await extractVerbs(route.handler.filePath);
1639
- if (!route.handler.verbs.length) {
1640
- console.warn(
1641
- `Did not find any valid exports in middleware entry file:'${route.handler.filePath}' - expected to find any of 'GET', 'POST', 'PUT' or 'DELETE'`
1692
+ const buildVirtualFiles = single(async (render) => {
1693
+ var _a;
1694
+ const routerOptions = {
1695
+ trailingSlashes: opts.trailingSlashes || "RedirectWithout"
1696
+ };
1697
+ if (!render) {
1698
+ virtualFiles.clear();
1699
+ isRendered = false;
1700
+ }
1701
+ try {
1702
+ if (isStale) {
1703
+ const buildStartTime = performance.now();
1704
+ routes = await buildRoutes(
1705
+ createFSWalker(resolvedRoutesDir),
1706
+ routesDir
1707
+ );
1708
+ times.routesBuild = performance.now() - buildStartTime;
1709
+ if (!routes.list.length) {
1710
+ throw new Error("No routes generated");
1711
+ }
1712
+ }
1713
+ const renderStartTime = performance.now();
1714
+ for (const route of routes.list) {
1715
+ if (render && route.handler) {
1716
+ route.handler.verbs = await extractVerbs(route.handler.filePath);
1717
+ if (!route.handler.verbs.length) {
1718
+ throw new Error(
1719
+ `Did not find any valid exports in middleware entry file:'${route.handler.filePath}' - expected to find any of 'GET', 'POST', 'PUT' or 'DELETE'`
1720
+ );
1721
+ }
1722
+ }
1723
+ if (route.page) {
1724
+ virtualFiles.set(
1725
+ path2.posix.join(root, `${route.entryName}.marko`),
1726
+ render ? renderRouteTemplate(route) : ""
1642
1727
  );
1643
1728
  }
1729
+ virtualFiles.set(
1730
+ path2.posix.join(root, `${route.entryName}.js`),
1731
+ render ? renderRouteEntry(route) : ""
1732
+ );
1644
1733
  }
1645
- if (route.page) {
1734
+ for (const route of Object.values(routes.special)) {
1646
1735
  virtualFiles.set(
1647
1736
  path2.posix.join(root, `${route.entryName}.marko`),
1648
1737
  render ? renderRouteTemplate(route) : ""
1649
1738
  );
1650
1739
  }
1740
+ if (routes.middleware.length) {
1741
+ virtualFiles.set(
1742
+ path2.posix.join(root, `${markoRunFilePrefix}middleware.js`),
1743
+ render ? renderMiddleware(routes.middleware) : ""
1744
+ );
1745
+ }
1651
1746
  virtualFiles.set(
1652
- path2.posix.join(root, `${route.entryName}.js`),
1653
- render ? renderRouteEntry(route) : ""
1747
+ "@marko/run/router",
1748
+ render ? renderRouter(routes, routerOptions) : ""
1654
1749
  );
1655
- }
1656
- for (const route of Object.values(routes.special)) {
1750
+ times.routesRender = performance.now() - renderStartTime;
1751
+ if (render) {
1752
+ await writeTypesFile(routes);
1753
+ if (!isBuild) {
1754
+ await ((_a = opts == null ? void 0 : opts.emitRoutes) == null ? void 0 : _a.call(opts, routes.list));
1755
+ }
1756
+ isRendered = true;
1757
+ }
1758
+ } catch (err) {
1759
+ if (isBuild) {
1760
+ throw err;
1761
+ }
1762
+ console.error(err);
1657
1763
  virtualFiles.set(
1658
- path2.posix.join(root, `${route.entryName}.marko`),
1659
- render ? renderRouteTemplate(route) : ""
1764
+ path2.posix.join(root, `${markoRunFilePrefix}error.marko`),
1765
+ renderEntryTemplate(`${markoRunFilePrefix}error`, ["<dev-error-page>"])
1660
1766
  );
1767
+ virtualFiles.set(
1768
+ "@marko/run/router",
1769
+ renderErrorRouter(err, routerOptions)
1770
+ );
1771
+ isRendered = true;
1661
1772
  }
1662
- virtualFiles.set(
1663
- "@marko/run/router",
1664
- render ? renderRouter(routes, {
1665
- trailingSlashes: opts.trailingSlashes || "RedirectWithout"
1666
- }) : ""
1667
- );
1668
- virtualFiles.set(
1669
- path2.posix.join(root, `${markoRunFilePrefix}middleware.js`),
1670
- render ? renderMiddleware(routes.middleware) : ""
1671
- );
1672
- }
1673
- const buildVirtualFiles = single(async () => {
1674
- const startTime = performance.now();
1675
- routes = await buildRoutes(createFSWalker(resolvedRoutesDir), routesDir);
1676
- times.routesBuild = performance.now() - startTime;
1677
- await setVirtualFiles(false);
1678
1773
  isStale = false;
1679
- isRendered = false;
1680
- });
1681
- const renderVirtualFiles = single(async () => {
1682
- const startTime = performance.now();
1683
- await setVirtualFiles(true);
1684
- await writeTypesFile();
1685
- times.routesRender = performance.now() - startTime;
1686
- isRendered = true;
1687
1774
  });
1688
1775
  return [
1689
1776
  {
1690
1777
  name: `${PLUGIN_NAME_PREFIX}:pre`,
1691
1778
  enforce: "pre",
1692
1779
  async config(config2, env) {
1693
- var _a, _b, _c, _d, _e, _f;
1780
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1694
1781
  const externalPluginOptions = getExternalPluginOptions(config2);
1695
1782
  if (externalPluginOptions) {
1696
1783
  opts = mergeConfig(opts, externalPluginOptions);
@@ -1716,6 +1803,11 @@ function markoRun(opts = {}) {
1716
1803
  }
1717
1804
  compiler ?? (compiler = await import(opts.compiler || "@marko/compiler"));
1718
1805
  compiler.taglib.register("@marko/run", {
1806
+ "<dev-error-page>": {
1807
+ template: normalizePath(
1808
+ path2.resolve(__dirname, "../components/dev-error-page.marko")
1809
+ )
1810
+ },
1719
1811
  "<*>": {
1720
1812
  transform: path2.resolve(
1721
1813
  __dirname,
@@ -1780,11 +1872,26 @@ function markoRun(opts = {}) {
1780
1872
  noExternal: /@marko\/run/
1781
1873
  },
1782
1874
  build: {
1875
+ target: isBuild && !((_g = config2.build) == null ? void 0 : _g.target) ? resolveToEsbuildTarget(
1876
+ browserslist(void 0, {
1877
+ path: root
1878
+ }),
1879
+ { printUnknownTargets: false }
1880
+ ) : void 0,
1783
1881
  emptyOutDir: isSSRBuild,
1882
+ // Avoid server & client deleting files from each other.
1784
1883
  rollupOptions: {
1785
1884
  output: rollupOutputOptions
1786
1885
  }
1787
1886
  },
1887
+ optimizeDeps: {
1888
+ entries: !((_h = config2.optimizeDeps) == null ? void 0 : _h.entries) ? [
1889
+ "src/pages/**/*+{page,layout}.marko",
1890
+ "!**/__snapshots__/**",
1891
+ `!**/__tests__/**`,
1892
+ `!**/coverage/**`
1893
+ ] : void 0
1894
+ },
1788
1895
  resolve: isBuild ? {
1789
1896
  browserField: isSSRBuild ? false : void 0,
1790
1897
  conditions: [
@@ -1869,40 +1976,38 @@ function markoRun(opts = {}) {
1869
1976
  },
1870
1977
  async resolveId(importee, importer) {
1871
1978
  let resolved;
1872
- if (importee.startsWith(virtualRuntimePrefix)) {
1873
- return this.resolve(
1874
- path2.resolve(__dirname, "../runtime/internal"),
1875
- importer,
1876
- { skipSelf: true }
1877
- );
1878
- } else if (importee.startsWith(virtualFilePrefix)) {
1879
- importee = path2.resolve(
1880
- root,
1881
- importee.slice(virtualFilePrefix.length + 1)
1882
- );
1979
+ let virtualFilePath;
1980
+ if (importee.startsWith(virtualFilePrefix)) {
1981
+ virtualFilePath = importee.slice(virtualFilePrefix.length + 1);
1982
+ importee = path2.resolve(root, virtualFilePath);
1883
1983
  } else if (!isBuild && importer && (importer === devEntryFile || normalizePath(importer) === devEntryFilePosix) && importee.startsWith(`/${markoRunFilePrefix}`)) {
1884
1984
  importee = path2.resolve(root, "." + importee);
1885
1985
  }
1886
1986
  importee = normalizePath(importee);
1887
1987
  if (isStale) {
1888
- await buildVirtualFiles();
1988
+ await buildVirtualFiles(false);
1889
1989
  }
1890
1990
  if (virtualFiles.has(importee)) {
1891
1991
  resolved = importee;
1992
+ } else if (virtualFilePath) {
1993
+ const resolution = await this.resolve(
1994
+ path2.resolve(__dirname, "..", virtualFilePath),
1995
+ importer,
1996
+ {
1997
+ skipSelf: true
1998
+ }
1999
+ );
2000
+ return resolution;
1892
2001
  }
1893
2002
  return resolved || null;
1894
2003
  },
1895
2004
  async load(id) {
1896
- var _a;
1897
2005
  if (id.endsWith(serverEntryQuery)) {
1898
2006
  id = id.slice(0, -serverEntryQuery.length);
1899
2007
  }
1900
2008
  if (virtualFiles.has(id)) {
1901
2009
  if (!isRendered) {
1902
- await renderVirtualFiles();
1903
- if (!isBuild) {
1904
- await ((_a = opts == null ? void 0 : opts.emitRoutes) == null ? void 0 : _a.call(opts, routes.list));
1905
- }
2010
+ await buildVirtualFiles(true);
1906
2011
  }
1907
2012
  return virtualFiles.get(id);
1908
2013
  }
@@ -1945,12 +2050,12 @@ function markoRun(opts = {}) {
1945
2050
  }
1946
2051
  await store.set(routeDataFilename, JSON.stringify(routeData));
1947
2052
  await ((_a = opts == null ? void 0 : opts.emitRoutes) == null ? void 0 : _a.call(opts, routes.list));
1948
- } else if (isBuild) {
2053
+ } else {
1949
2054
  logRoutesTable(routes, bundle, options);
1950
2055
  }
1951
2056
  },
1952
2057
  async closeBundle() {
1953
- if (isBuild && !isSSRBuild && (adapter == null ? void 0 : adapter.buildEnd)) {
2058
+ if (isBuild && !isSSRBuild && (adapter == null ? void 0 : adapter.buildEnd) && routes) {
1954
2059
  await adapter.buildEnd(
1955
2060
  resolvedConfig,
1956
2061
  routes.list,
@@ -71,11 +71,11 @@ export interface RoutableFile {
71
71
  importPath: string;
72
72
  verbs?: HttpVerb[];
73
73
  }
74
- export interface BuiltRoutes {
74
+ export type BuiltRoutes = {
75
75
  list: Route[];
76
76
  special: SpecialRoutes;
77
77
  middleware: RoutableFile[];
78
- }
78
+ };
79
79
  export interface PackageData {
80
80
  name?: string;
81
81
  version?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marko/run",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "The Marko application framework.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/marko-js/run/tree/main/packages/run",
@@ -54,7 +54,8 @@
54
54
  "types": "./dist/adapter/index.d.ts",
55
55
  "import": "./dist/adapter/index.js",
56
56
  "require": "./dist/adapter/index.cjs"
57
- }
57
+ },
58
+ "./dist/components/dev-error-page.marko": "./dist/components/dev-error-page.marko"
58
59
  },
59
60
  "typesVersions": {
60
61
  "*": {
@@ -97,7 +98,7 @@
97
98
  "@types/node": "^20.3.1",
98
99
  "acorn": "^8.8.0",
99
100
  "cross-env": "^7.0.3",
100
- "esbuild": "^0.15.7",
101
+ "esbuild": "^0.19.0",
101
102
  "jsdom": "^21.1.1",
102
103
  "marko": "^5.23.0",
103
104
  "mocha": "^10.2.0",
@@ -113,9 +114,11 @@
113
114
  },
114
115
  "dependencies": {
115
116
  "@marko/vite": "^3",
117
+ "browserslist": "^4.22.1",
116
118
  "cli-table3": "^0.6.3",
117
119
  "compression": "^1.7.4",
118
120
  "dotenv": "^16.0.3",
121
+ "esbuild-plugin-browserslist": "^0.9.1",
119
122
  "glob": "^8.1.0",
120
123
  "human-format": "^1.0.0",
121
124
  "kleur": "^4.1.5",
@@ -124,7 +127,7 @@
124
127
  "serve-static": "^1.15.0",
125
128
  "strip-ansi": "^7.0.1",
126
129
  "undici": "^5.20.0",
127
- "vite": "^4.1.4",
130
+ "vite": "^4.4.0",
128
131
  "warp10": "^2.1.0"
129
132
  }
130
133
  }
@@ -1,2 +0,0 @@
1
- import type { Route, RouteTrie } from "../types";
2
- export declare function createRouteTrie(routes: Route[]): RouteTrie;