@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapter/dev-server.d.ts +10 -1
- package/dist/adapter/index.cjs +77 -13
- package/dist/adapter/index.d.ts +3 -1
- package/dist/adapter/index.js +71 -11
- package/dist/adapter/load-dev-worker.mjs +6 -5
- package/dist/adapter/middleware.cjs +34 -61
- package/dist/adapter/middleware.d.ts +1 -3
- package/dist/adapter/middleware.js +30 -61
- package/dist/cli/index.mjs +215 -108
- package/dist/components/dev-error-page.marko +14 -0
- package/dist/vite/codegen/index.d.ts +2 -0
- package/dist/vite/constants.d.ts +0 -2
- package/dist/vite/index.cjs +217 -108
- package/dist/vite/index.js +213 -108
- package/dist/vite/types.d.ts +2 -2
- package/package.json +7 -4
- package/dist/vite/routes/routeTrie.d.ts +0 -2
package/dist/vite/index.js
CHANGED
|
@@ -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}/${
|
|
727
|
+
writer.writeLines(`// ${virtualFilePrefix}/${name}.marko`);
|
|
715
728
|
writer.branch("imports");
|
|
716
729
|
writer.writeLines("");
|
|
717
|
-
|
|
730
|
+
writeEntryTemplateTag(writer, files);
|
|
718
731
|
return writer.end();
|
|
719
732
|
}
|
|
720
|
-
function
|
|
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 '
|
|
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
|
-
|
|
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(
|
|
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 '
|
|
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.
|
|
919
|
-
export async function invoke(route, request, platform, url) {
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1653
|
-
render ?
|
|
1747
|
+
"@marko/run/router",
|
|
1748
|
+
render ? renderRouter(routes, routerOptions) : ""
|
|
1654
1749
|
);
|
|
1655
|
-
|
|
1656
|
-
|
|
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, `${
|
|
1659
|
-
|
|
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
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
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
|
|
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
|
|
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,
|
package/dist/vite/types.d.ts
CHANGED
|
@@ -71,11 +71,11 @@ export interface RoutableFile {
|
|
|
71
71
|
importPath: string;
|
|
72
72
|
verbs?: HttpVerb[];
|
|
73
73
|
}
|
|
74
|
-
export
|
|
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.
|
|
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.
|
|
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.
|
|
130
|
+
"vite": "^4.4.0",
|
|
128
131
|
"warp10": "^2.1.0"
|
|
129
132
|
}
|
|
130
133
|
}
|