@torpor/build 1.0.0 → 1.0.2

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 (174) hide show
  1. package/dist/{flattenHeaders-C_YYLdOq.mjs → Server-BnjLJleZ.mjs} +2 -12
  2. package/dist/Server-BnjLJleZ.mjs.map +1 -0
  3. package/dist/{Server-C_IKav_e.d.mts → Server-Cler2w5O.d.mts} +3 -48
  4. package/dist/Server-Cler2w5O.d.mts.map +1 -0
  5. package/dist/ServerEvent-CTx3Q-hk.d.mts +48 -0
  6. package/dist/ServerEvent-CTx3Q-hk.d.mts.map +1 -0
  7. package/dist/{Site-CMa153FA.d.mts → Site-CE0_o5Ci.d.mts} +3 -2
  8. package/dist/Site-CE0_o5Ci.d.mts.map +1 -0
  9. package/dist/bin/index.js +1 -1
  10. package/dist/clientEntry.d.mts +1 -0
  11. package/dist/clientEntry.mjs +59 -0
  12. package/dist/clientEntry.mjs.map +1 -0
  13. package/dist/clientEntryDev.d.mts +1 -0
  14. package/dist/clientEntryDev.mjs +7 -0
  15. package/dist/clientEntryDev.mjs.map +1 -0
  16. package/dist/dev.d.mts +3 -0
  17. package/dist/dev.mjs +3 -0
  18. package/dist/endpoint-EULRGCKA.mjs +108 -0
  19. package/dist/endpoint-EULRGCKA.mjs.map +1 -0
  20. package/dist/flattenHeaders-DM5qsSqO.mjs +13 -0
  21. package/dist/flattenHeaders-DM5qsSqO.mjs.map +1 -0
  22. package/dist/index.d.mts +1 -1
  23. package/dist/load-BntzvmwL.mjs +228 -0
  24. package/dist/load-BntzvmwL.mjs.map +1 -0
  25. package/dist/nav.mjs +1 -225
  26. package/dist/nav.mjs.map +1 -1
  27. package/dist/openapi.d.mts +1 -1
  28. package/dist/run.d.mts +1 -1
  29. package/dist/run.d.mts.map +1 -1
  30. package/dist/run.mjs +1 -1
  31. package/dist/{runOpenApi-BUi1RH1l.mjs → runOpenApi-C8eI2Fh0.mjs} +54 -16
  32. package/dist/runOpenApi-C8eI2Fh0.mjs.map +1 -0
  33. package/dist/server/Server.d.mts +2 -0
  34. package/dist/server/Server.mjs +2 -0
  35. package/dist/server.d.mts +2 -1
  36. package/dist/server.d.mts.map +1 -1
  37. package/dist/server.mjs +2 -1
  38. package/dist/server.mjs.map +1 -1
  39. package/dist/serverEntry-1qY3wZig.mjs +351 -0
  40. package/dist/serverEntry-1qY3wZig.mjs.map +1 -0
  41. package/dist/serverEntry-BAO8m03V.d.mts +6 -0
  42. package/dist/serverEntry-BAO8m03V.d.mts.map +1 -0
  43. package/dist/serverEntry.d.mts +2 -0
  44. package/dist/serverEntry.mjs +2 -0
  45. package/dist/test.d.mts +2 -2
  46. package/dist/test.mjs +2 -104
  47. package/dist/test.mjs.map +1 -1
  48. package/package.json +9 -8
  49. package/dist/Server-C_IKav_e.d.mts.map +0 -1
  50. package/dist/Site-CMa153FA.d.mts.map +0 -1
  51. package/dist/flattenHeaders-C_YYLdOq.mjs.map +0 -1
  52. package/dist/runOpenApi-BUi1RH1l.mjs.map +0 -1
  53. package/src/bin/index.ts +0 -22
  54. package/src/dev.ts +0 -10
  55. package/src/form/formDataToRecord.ts +0 -23
  56. package/src/form/readForm.ts +0 -71
  57. package/src/form.ts +0 -4
  58. package/src/index.ts +0 -82
  59. package/src/nav/api.test-d.ts +0 -79
  60. package/src/nav/api.ts +0 -104
  61. package/src/nav/formSubmit.ts +0 -70
  62. package/src/nav/load.ts +0 -9
  63. package/src/nav/loadData.ts +0 -134
  64. package/src/nav/navigate.ts +0 -189
  65. package/src/nav/reload.ts +0 -9
  66. package/src/nav/route.ts +0 -38
  67. package/src/nav.ts +0 -6
  68. package/src/openapi/docsHtml.ts +0 -25
  69. package/src/openapi/document.ts +0 -154
  70. package/src/openapi/plugin.ts +0 -78
  71. package/src/openapi/types.ts +0 -82
  72. package/src/openapi.ts +0 -14
  73. package/src/response/TypedResponse.ts +0 -17
  74. package/src/response/badRequest.ts +0 -31
  75. package/src/response/created.ts +0 -31
  76. package/src/response/forbidden.ts +0 -21
  77. package/src/response/found.ts +0 -30
  78. package/src/response/methodNotAllowed.ts +0 -18
  79. package/src/response/movedPermanently.ts +0 -25
  80. package/src/response/notFound.ts +0 -24
  81. package/src/response/notModified.ts +0 -34
  82. package/src/response/ok.ts +0 -38
  83. package/src/response/permanentRedirect.ts +0 -30
  84. package/src/response/response.ts +0 -22
  85. package/src/response/seeOther.ts +0 -19
  86. package/src/response/serverError.ts +0 -24
  87. package/src/response/temporaryRedirect.ts +0 -31
  88. package/src/response/transfer.ts +0 -14
  89. package/src/response/unauthorized.ts +0 -21
  90. package/src/response/unprocessable.ts +0 -30
  91. package/src/response.ts +0 -37
  92. package/src/run/depCache.ts +0 -175
  93. package/src/run/devPlugin.ts +0 -128
  94. package/src/run/prepareTemplate.ts +0 -42
  95. package/src/run/run.ts +0 -86
  96. package/src/run/runBuild.ts +0 -128
  97. package/src/run/runDev.ts +0 -177
  98. package/src/run/runOpenApi.ts +0 -52
  99. package/src/run/runPreview.ts +0 -84
  100. package/src/run/staleTorpCopies.ts +0 -100
  101. package/src/run.ts +0 -7
  102. package/src/schema.ts +0 -7
  103. package/src/server/CookieHelper.ts +0 -46
  104. package/src/server/HeaderHelper.ts +0 -25
  105. package/src/server/Server.ts +0 -168
  106. package/src/server/ServerEvent.ts +0 -62
  107. package/src/server/connect/connectMiddleware.ts +0 -85
  108. package/src/server/connect/flattenHeaders.ts +0 -22
  109. package/src/server/connect/nodeMessageToNodeResponse.ts +0 -89
  110. package/src/server/connect/requestToNodeMessage.ts +0 -29
  111. package/src/server/contentType.ts +0 -85
  112. package/src/server/types/HttpMethod.ts +0 -12
  113. package/src/server/types/MiddlewareFunction.ts +0 -22
  114. package/src/server/types/ServerFunction.ts +0 -7
  115. package/src/server.ts +0 -7
  116. package/src/site/Router.ts +0 -175
  117. package/src/site/Site.ts +0 -388
  118. package/src/site/checkLayoutSlots.ts +0 -114
  119. package/src/site/checkRoutes.ts +0 -435
  120. package/src/site/clientEntry.ts +0 -121
  121. package/src/site/clientEntryDev.ts +0 -3
  122. package/src/site/defaultAdapter.ts +0 -11
  123. package/src/site/layoutSlots.ts +0 -53
  124. package/src/site/manifest.ts +0 -173
  125. package/src/site/serverEntry.ts +0 -648
  126. package/src/state/$page.ts +0 -25
  127. package/src/state/$serverPage.ts +0 -22
  128. package/src/state/client.ts +0 -15
  129. package/src/state.ts +0 -3
  130. package/src/test/runTest.ts +0 -538
  131. package/src/test.ts +0 -3
  132. package/src/types/Adapter.ts +0 -20
  133. package/src/types/ClientState.ts +0 -8
  134. package/src/types/InternalState.ts +0 -7
  135. package/src/types/Jsonify.ts +0 -20
  136. package/src/types/LayoutHandler.ts +0 -5
  137. package/src/types/LayoutPath.ts +0 -10
  138. package/src/types/ManifestRoute.ts +0 -6
  139. package/src/types/PageData.test-d.ts +0 -136
  140. package/src/types/PageData.ts +0 -35
  141. package/src/types/PageEndPoint.ts +0 -55
  142. package/src/types/PageForm.test-d.ts +0 -78
  143. package/src/types/PageForm.ts +0 -29
  144. package/src/types/PageLoadEvent.ts +0 -26
  145. package/src/types/PageLoadReturn.ts +0 -13
  146. package/src/types/PageProps.ts +0 -14
  147. package/src/types/PageServerAction.ts +0 -13
  148. package/src/types/PageServerEndPoint.test-d.ts +0 -105
  149. package/src/types/PageServerEndPoint.ts +0 -110
  150. package/src/types/PageServerLoad.ts +0 -15
  151. package/src/types/PageState.ts +0 -8
  152. package/src/types/ParseRouteParams.test-d.ts +0 -84
  153. package/src/types/ParseRouteParams.ts +0 -64
  154. package/src/types/Route.ts +0 -30
  155. package/src/types/RouteHandler.ts +0 -23
  156. package/src/types/RouteLayoutHandler.ts +0 -5
  157. package/src/types/RouteMatchResult.ts +0 -7
  158. package/src/types/RouteType.ts +0 -19
  159. package/src/types/ServerEndPoint.test-d.ts +0 -77
  160. package/src/types/ServerEndPoint.ts +0 -169
  161. package/src/types/ServerHook.ts +0 -18
  162. package/src/types/ServerLoadEvent.ts +0 -82
  163. package/src/types/ServerRequest.ts +0 -15
  164. package/src/types/SitePlugin.ts +0 -24
  165. package/src/types/StandardSchema.ts +0 -109
  166. package/src/utils/pathToRegex.ts +0 -17
  167. package/src/utils/pathTrie.ts +0 -182
  168. package/src/utils/searchParamsToRecord.ts +0 -18
  169. package/src/utils/torporPackages.ts +0 -150
  170. package/src/utils/tsconfigAliases.ts +0 -90
  171. package/src/validation/ValidationError.ts +0 -18
  172. package/src/validation/endpoint.ts +0 -83
  173. package/src/validation/validate.ts +0 -26
  174. package/src/vite-env.d.ts +0 -2
@@ -1,173 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import path from "node:path";
3
- import { Plugin } from "vite";
4
- import type { ResolvedOpenApiOptions } from "../openapi/types";
5
- import { OPEN_API_STATE_KEY } from "../openapi/plugin";
6
- import Site from "./Site";
7
- import { SERVER_ROUTE } from "../types/RouteType";
8
-
9
- const moduleId = "@torpor/build/manifest";
10
-
11
- const LOAD_EXPORT_RE =
12
- /[{,]\s*load\s*[:(]|\bexport\s+(?:async\s+)?(?:function|const|let|var)\s+load\b|\bexport\s*\{[^}]*\bload\b/;
13
-
14
- export function hasLoadExport(source: string): boolean {
15
- return LOAD_EXPORT_RE.test(source);
16
- }
17
-
18
- /**
19
- * A Vite plugin that provides information about the app to both clientEntry and
20
- * serverEntry.
21
- */
22
- export default function manifest(site: Site, server = false): Plugin {
23
- return {
24
- name: "torpor-manifest",
25
- resolveId: {
26
- order: "pre",
27
- handler(id) {
28
- if (id === moduleId) {
29
- return id;
30
- }
31
- },
32
- },
33
- // @ts-ignore
34
- load(id, viteOptions) {
35
- if (id === moduleId) {
36
- let serverRequest = server && !!viteOptions?.ssr;
37
-
38
- // If there are inline endpoints, site plugins or an OpenAPI
39
- // document, and we're building for the server, we need to import
40
- // the config file to access them. On the client, the config file
41
- // is never imported, keeping server code out of the client bundle.
42
- const hasInline = site.routes.some((r) => r.endPoint && !r.file);
43
- const hasPlugins = site.plugins.length > 0;
44
- const hasOpenApi = site.pluginState.has(OPEN_API_STATE_KEY);
45
- const configImport =
46
- hasInline || hasPlugins || hasOpenApi
47
- ? serverRequest && site.configFile
48
- ? `import __site from ${JSON.stringify(site.configFile)};`
49
- : ""
50
- : "";
51
-
52
- // Site plugins are run when the server starts up (in dev and in
53
- // production), so that routes they register are available at
54
- // runtime. Top-level await is fine here: this module is only
55
- // loaded through Vite's SSR pipeline
56
- const pluginLoop =
57
- serverRequest && hasPlugins
58
- ? `for (const __plugin of __site.plugins ?? []) { await __plugin(__site); }`
59
- : "";
60
-
61
- // The OpenAPI document endpoint is generated code (rather than an
62
- // inline endpoint) because it must load each route file -- which
63
- // only works from module code that Vite processes/bundles. The
64
- // options live in `site.pluginState` (set by the plugin), so they
65
- // are available both here and in the generated runtime code
66
- const openApiOptions = site.pluginState.get(OPEN_API_STATE_KEY) as
67
- | ResolvedOpenApiOptions
68
- | undefined;
69
- const openApiGlue =
70
- serverRequest && openApiOptions && site.configFile
71
- ? openApiGlueCode(site, openApiOptions)
72
- : "";
73
-
74
- const openApiRoute =
75
- serverRequest && openApiOptions
76
- ? `{ path: ${JSON.stringify(openApiOptions.path)}, type: ${SERVER_ROUTE}, endPoint: () => Promise.resolve({ default: { get: __openApiGet } }), subFolder: undefined },`
77
- : "";
78
-
79
- return `
80
- ${!serverRequest ? "const load = { default: { load: true } };" : ""}
81
- ${configImport}
82
- ${pluginLoop}
83
- ${openApiGlue}
84
- export default {
85
- routes: [
86
- ${site.routes
87
- .map((r) => {
88
- let endPoint: string;
89
- if (!r.file) {
90
- // Inline endpoint (no file)
91
- if (serverRequest) {
92
- const key = `${r.path}:${r.type}`;
93
- endPoint = `() => Promise.resolve({ default: __site.inlineEndPoints[${JSON.stringify(key)}] })`;
94
- } else {
95
- // Client-side stub: check if the inline
96
- // endpoint has a load function
97
- const haveLoad =
98
- typeof (r.endPoint as Record<string, unknown> | undefined)?.load === "function";
99
- endPoint = haveLoad ? "() => load" : "undefined";
100
- }
101
- } else if (serverRequest || !/server\.(ts|js)$/.test(r.file)) {
102
- const filePath = path.join(site.root, r.file);
103
- // NOTE: No `@vite-ignore` here, so that Vite processes the import:
104
- // in dev the module runner transforms the file on the fly, and in
105
- // a production build Rollup bundles the route into a chunk and
106
- // rewrites the import -- leaving the raw source path in place
107
- // would hand Node/wrangler `.ts`/`.torp` files it can't load
108
- const importExpr = `() => import("${filePath}")`;
109
- // A .torp file's default export is a component, so wrap it
110
- // as a PageEndPoint ({ component }) for the entries
111
- endPoint = r.file.endsWith(".torp")
112
- ? `${importExpr}.then((m) => ({ default: { component: m.default } }))`
113
- : importExpr;
114
- } else {
115
- // On the client, for a server route, we need to check
116
- // whether there's a load function and set a dummy endPoint
117
- // if so. The correct endpoint will be hit in clientEntry
118
- const haveLoad = hasLoadExport(readFileSync(path.join(site.root, r.file), "utf8"));
119
- endPoint = haveLoad ? "() => load" : "undefined";
120
- }
121
- const sub = r.subFolder ? `"${r.subFolder}"` : "undefined";
122
- return `{ path: "${r.path}", type: ${r.type}, endPoint: ${endPoint}, subFolder: ${sub} },`;
123
- })
124
- .join("\n ")}
125
- ${openApiRoute}
126
- ],
127
- };
128
- `;
129
- }
130
- },
131
- };
132
- }
133
-
134
- /**
135
- * Generates the module code for the OpenAPI document endpoint: a map of
136
- * route path to endpoint loader, and a cached handler that loads every
137
- * endpoint and builds the document on first use.
138
- */
139
- function openApiGlueCode(site: Site, options: ResolvedOpenApiOptions): string {
140
- const loaders = site.routes
141
- .filter((r) => r.type === SERVER_ROUTE)
142
- // Don't document the docs page itself
143
- .filter((r) => r.path !== options.docs)
144
- .map((r) => {
145
- if (!r.file) {
146
- const key = `${r.path}:${r.type}`;
147
- return `${JSON.stringify(r.path)}: () => Promise.resolve({ default: __site.inlineEndPoints[${JSON.stringify(key)}] })`;
148
- }
149
- const filePath = path.join(site.root, r.file);
150
- return `${JSON.stringify(r.path)}: () => import(${JSON.stringify(filePath)})`;
151
- })
152
- .join(",\n ");
153
-
154
- return `
155
- import { buildOpenApiDocument, OPEN_API_STATE_KEY } from "@torpor/build/openapi";
156
- let __openApiDoc;
157
- const __openApiRoutes = {
158
- ${loaders}
159
- };
160
- async function __openApiGet() {
161
- if (!__openApiDoc) {
162
- const __entries = [];
163
- for (const [__path, __loader] of Object.entries(__openApiRoutes)) {
164
- __entries.push({ path: __path, endPoint: (await __loader()).default });
165
- }
166
- __openApiDoc = buildOpenApiDocument(__entries, __site.pluginState.get(OPEN_API_STATE_KEY));
167
- }
168
- return new Response(JSON.stringify(__openApiDoc), {
169
- headers: { "Content-Type": "application/json" },
170
- });
171
- }
172
- `;
173
- }