blokd 0.1.0-beta.0
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 +28 -0
- package/dist/LICENSE +21 -0
- package/dist/client.d.ts +9 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +48 -0
- package/dist/client.js.map +1 -0
- package/dist/core.d.ts +25 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +206 -0
- package/dist/core.js.map +1 -0
- package/dist/dom.d.ts +16 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +140 -0
- package/dist/dom.js.map +1 -0
- package/dist/hono.d.ts +49 -0
- package/dist/hono.d.ts.map +1 -0
- package/dist/hono.js +310 -0
- package/dist/hono.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-runtime.d.ts +45 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +264 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/resume.d.ts +46 -0
- package/dist/resume.d.ts.map +1 -0
- package/dist/resume.js +231 -0
- package/dist/resume.js.map +1 -0
- package/dist/server.d.ts +39 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +232 -0
- package/dist/server.js.map +1 -0
- package/dist/vite.d.ts +20 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +421 -0
- package/dist/vite.js.map +1 -0
- package/package.json +92 -0
- package/src/client.ts +50 -0
- package/src/core.ts +234 -0
- package/src/dom.ts +142 -0
- package/src/hono.ts +368 -0
- package/src/index.ts +7 -0
- package/src/jsx-runtime.ts +306 -0
- package/src/resume.ts +274 -0
- package/src/server.ts +241 -0
- package/src/vite.ts +413 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { runWithEffectsDisabled } from './core.js';
|
|
2
|
+
import { isLazy } from './jsx-runtime.js';
|
|
3
|
+
import { eventAttributeName, isResumableHandler } from './resume.js';
|
|
4
|
+
export class HttpError extends Error {
|
|
5
|
+
response;
|
|
6
|
+
constructor(response) {
|
|
7
|
+
super(`${response.status} ${response.statusText}`.trim());
|
|
8
|
+
this.name = 'HttpError';
|
|
9
|
+
this.response = response;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export class Redirect extends HttpError {
|
|
13
|
+
constructor(location, status = 302) {
|
|
14
|
+
validateRedirect(location, status);
|
|
15
|
+
super(new Response(null, { status, headers: { location } }));
|
|
16
|
+
this.name = 'Redirect';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function redirect(location, status = 302) {
|
|
20
|
+
throw new Redirect(location, status);
|
|
21
|
+
}
|
|
22
|
+
export function notFound(message = 'Not Found') {
|
|
23
|
+
throw new HttpError(new Response(message, { status: 404, statusText: 'Not Found' }));
|
|
24
|
+
}
|
|
25
|
+
export function httpError(status, message, init) {
|
|
26
|
+
if (!Number.isInteger(status) || status < 400 || status > 599)
|
|
27
|
+
throw new Error(`httpError() requires a 4xx or 5xx status. Received ${status}.`);
|
|
28
|
+
throw new HttpError(new Response(message ?? defaultStatusText(status), { ...init, status }));
|
|
29
|
+
}
|
|
30
|
+
export function isHttpError(error) {
|
|
31
|
+
return error instanceof HttpError;
|
|
32
|
+
}
|
|
33
|
+
export function json(data, init = {}) {
|
|
34
|
+
const headers = new Headers(init.headers);
|
|
35
|
+
if (!headers.has('content-type'))
|
|
36
|
+
headers.set('content-type', 'application/json; charset=utf-8');
|
|
37
|
+
return new Response(JSON.stringify(data) ?? 'null', { ...init, headers });
|
|
38
|
+
}
|
|
39
|
+
export function html(body, init = {}) {
|
|
40
|
+
const headers = new Headers(init.headers);
|
|
41
|
+
if (!headers.has('content-type'))
|
|
42
|
+
headers.set('content-type', 'text/html; charset=utf-8');
|
|
43
|
+
return new Response(body, { ...init, headers });
|
|
44
|
+
}
|
|
45
|
+
export function escapeHtml(value) {
|
|
46
|
+
return String(value)
|
|
47
|
+
.replaceAll('&', '&')
|
|
48
|
+
.replaceAll('<', '<')
|
|
49
|
+
.replaceAll('>', '>')
|
|
50
|
+
.replaceAll('"', '"')
|
|
51
|
+
.replaceAll("'", ''');
|
|
52
|
+
}
|
|
53
|
+
export function safeJsonScript(data) {
|
|
54
|
+
return (JSON.stringify(data) ?? 'null')
|
|
55
|
+
.replaceAll('<', '\\u003c')
|
|
56
|
+
.replaceAll('>', '\\u003e')
|
|
57
|
+
.replaceAll('&', '\\u0026')
|
|
58
|
+
.replaceAll('\u2028', '\\u2028')
|
|
59
|
+
.replaceAll('\u2029', '\\u2029');
|
|
60
|
+
}
|
|
61
|
+
export function renderToString(input) {
|
|
62
|
+
return runWithEffectsDisabled(() => renderValue(typeof input === 'function' ? input() : input));
|
|
63
|
+
}
|
|
64
|
+
function renderValue(value) {
|
|
65
|
+
if (value === null || value === undefined || value === false || value === true)
|
|
66
|
+
return '';
|
|
67
|
+
if (Array.isArray(value))
|
|
68
|
+
return value.map(renderValue).join('');
|
|
69
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint')
|
|
70
|
+
return escapeHtml(value);
|
|
71
|
+
if (isLazy(value))
|
|
72
|
+
return renderValue(value.fn());
|
|
73
|
+
if (typeof Node !== 'undefined' && value instanceof Node)
|
|
74
|
+
return escapeHtml(value.textContent ?? '');
|
|
75
|
+
if (typeof value === 'object' && value && 'kind' in value) {
|
|
76
|
+
const kind = value.kind;
|
|
77
|
+
if (kind === 'element')
|
|
78
|
+
return renderElement(value);
|
|
79
|
+
if (kind === 'fragment')
|
|
80
|
+
return renderFragment(value);
|
|
81
|
+
if (kind === 'dynamic')
|
|
82
|
+
return renderValue(value.fn());
|
|
83
|
+
}
|
|
84
|
+
return escapeHtml(String(value));
|
|
85
|
+
}
|
|
86
|
+
const voidElements = new Set(['area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'source', 'track', 'wbr']);
|
|
87
|
+
const rawTextElements = new Set(['script', 'style']);
|
|
88
|
+
const blockedAttrs = new Set(['innerHTML', 'outerHTML']);
|
|
89
|
+
function renderElement(element) {
|
|
90
|
+
const attrs = renderAttrs(element.props);
|
|
91
|
+
if (voidElements.has(element.tag))
|
|
92
|
+
return `<${element.tag}${attrs}>`;
|
|
93
|
+
const children = rawTextElements.has(element.tag)
|
|
94
|
+
? element.children.map(child => child == null ? '' : String(resolveOnce(child))).join('')
|
|
95
|
+
: element.children.map(renderValue).join('');
|
|
96
|
+
return `<${element.tag}${attrs}>${children}</${element.tag}>`;
|
|
97
|
+
}
|
|
98
|
+
function renderFragment(fragment) {
|
|
99
|
+
return fragment.children.map(renderValue).join('');
|
|
100
|
+
}
|
|
101
|
+
function resolveOnce(value) {
|
|
102
|
+
if (isLazy(value))
|
|
103
|
+
return value.fn();
|
|
104
|
+
return value;
|
|
105
|
+
}
|
|
106
|
+
function renderAttrs(props) {
|
|
107
|
+
let out = '';
|
|
108
|
+
const explicitClass = props.class ?? props.className;
|
|
109
|
+
const classList = props.classList;
|
|
110
|
+
const classListValue = classList && typeof classList === 'object'
|
|
111
|
+
? Object.entries(classList)
|
|
112
|
+
.filter(([, v]) => Boolean(isLazy(v) ? v.fn() : v))
|
|
113
|
+
.map(([k]) => k)
|
|
114
|
+
.join(' ')
|
|
115
|
+
: '';
|
|
116
|
+
for (const [rawName, rawValue] of Object.entries(props)) {
|
|
117
|
+
if (rawName === 'children' || rawName === 'ref' || rawName === 'classList')
|
|
118
|
+
continue;
|
|
119
|
+
if (blockedAttrs.has(rawName))
|
|
120
|
+
throw new Error(`Blokd blocks ${rawName} during SSR. Use text children or an explicit sanitization boundary.`);
|
|
121
|
+
const eventMatch = /^on([A-Z].*|[a-z].*)$/.exec(rawName);
|
|
122
|
+
if (eventMatch) {
|
|
123
|
+
const value = isLazy(rawValue) ? rawValue.fn() : rawValue;
|
|
124
|
+
if (isResumableHandler(value))
|
|
125
|
+
out += ` ${eventAttributeName(eventMatch[1].toLowerCase())}="${escapeHtml(value.ref)}"`;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
const name = rawName === 'className' ? 'class' : rawName;
|
|
129
|
+
let value = isLazy(rawValue) ? rawValue.fn() : rawValue;
|
|
130
|
+
if (name === 'class' && classListValue)
|
|
131
|
+
value = [value, classListValue].filter(Boolean).join(' ');
|
|
132
|
+
if (value === false || value === null || value === undefined)
|
|
133
|
+
continue;
|
|
134
|
+
if (value === true) {
|
|
135
|
+
out += ` ${escapeHtml(name)}`;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (name === 'style' && value && typeof value === 'object') {
|
|
139
|
+
const style = Object.entries(value)
|
|
140
|
+
.filter(([, v]) => v !== null && v !== undefined && v !== false)
|
|
141
|
+
.map(([k, v]) => `${k}:${String(isLazy(v) ? v.fn() : v)}`)
|
|
142
|
+
.join(';');
|
|
143
|
+
if (style)
|
|
144
|
+
out += ` style="${escapeHtml(style)}"`;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
out += ` ${escapeHtml(name)}="${escapeHtml(value)}"`;
|
|
148
|
+
}
|
|
149
|
+
if (classListValue && explicitClass === undefined)
|
|
150
|
+
out += ` class="${escapeHtml(classListValue)}"`;
|
|
151
|
+
return out;
|
|
152
|
+
}
|
|
153
|
+
export function renderDocument(options) {
|
|
154
|
+
const meta = options.meta ?? {};
|
|
155
|
+
const htmlAttrs = attrsToString(meta.htmlAttrs ?? { lang: 'en' });
|
|
156
|
+
const bodyAttrs = attrsToString(meta.bodyAttrs ?? {});
|
|
157
|
+
const head = renderHead(meta);
|
|
158
|
+
const body = renderToString(options.body);
|
|
159
|
+
const data = options.data === undefined ? '' : `<script id="__BLOKD_DATA__" type="application/json">${safeJsonScript(options.data)}</script>`;
|
|
160
|
+
const client = options.entryClient ? `<script type="module" src="${escapeHtml(options.entryClient)}"></script>` : '';
|
|
161
|
+
const init = { status: options.status ?? 200 };
|
|
162
|
+
if (options.headers !== undefined)
|
|
163
|
+
init.headers = options.headers;
|
|
164
|
+
return html(`<!doctype html><html${htmlAttrs}><head>${head}</head><body${bodyAttrs}>${body}${data}${client}</body></html>`, init);
|
|
165
|
+
}
|
|
166
|
+
export function renderHead(meta) {
|
|
167
|
+
const pieces = ['<meta charset="utf-8">', '<meta name="viewport" content="width=device-width, initial-scale=1">'];
|
|
168
|
+
if (meta.title)
|
|
169
|
+
pieces.push(`<title>${escapeHtml(meta.title)}</title>`);
|
|
170
|
+
if (meta.description)
|
|
171
|
+
pieces.push(`<meta name="description" content="${escapeHtml(meta.description)}">`);
|
|
172
|
+
for (const item of meta.meta ?? [])
|
|
173
|
+
pieces.push(`<meta${attrsToString(item)}>`);
|
|
174
|
+
for (const item of meta.links ?? [])
|
|
175
|
+
pieces.push(`<link${attrsToString(item)}>`);
|
|
176
|
+
for (const item of meta.scripts ?? [])
|
|
177
|
+
pieces.push(`<script${attrsToString(item)}></script>`);
|
|
178
|
+
return pieces.join('');
|
|
179
|
+
}
|
|
180
|
+
export function mergeMeta(...metas) {
|
|
181
|
+
const out = { htmlAttrs: {}, bodyAttrs: {}, meta: [], links: [], scripts: [] };
|
|
182
|
+
for (const meta of metas) {
|
|
183
|
+
if (!meta)
|
|
184
|
+
continue;
|
|
185
|
+
if (meta.title !== undefined)
|
|
186
|
+
out.title = meta.title;
|
|
187
|
+
if (meta.description !== undefined)
|
|
188
|
+
out.description = meta.description;
|
|
189
|
+
out.htmlAttrs = { ...(out.htmlAttrs ?? {}), ...(meta.htmlAttrs ?? {}) };
|
|
190
|
+
out.bodyAttrs = { ...(out.bodyAttrs ?? {}), ...(meta.bodyAttrs ?? {}) };
|
|
191
|
+
out.meta = [...(out.meta ?? []), ...(meta.meta ?? [])];
|
|
192
|
+
out.links = [...(out.links ?? []), ...(meta.links ?? [])];
|
|
193
|
+
out.scripts = [...(out.scripts ?? []), ...(meta.scripts ?? [])];
|
|
194
|
+
}
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
export function attrsToString(attrs) {
|
|
198
|
+
let out = '';
|
|
199
|
+
for (const [name, value] of Object.entries(attrs)) {
|
|
200
|
+
if (value === false || value === null || value === undefined)
|
|
201
|
+
continue;
|
|
202
|
+
if (value === true)
|
|
203
|
+
out += ` ${escapeHtml(name)}`;
|
|
204
|
+
else
|
|
205
|
+
out += ` ${escapeHtml(name)}="${escapeHtml(value)}"`;
|
|
206
|
+
}
|
|
207
|
+
return out;
|
|
208
|
+
}
|
|
209
|
+
function validateRedirect(location, status) {
|
|
210
|
+
if (!/^(301|302|303|307|308)$/.test(String(status)))
|
|
211
|
+
throw new Error(`redirect() status must be one of 301, 302, 303, 307, or 308. Received ${status}.`);
|
|
212
|
+
if (/\r|\n/.test(location))
|
|
213
|
+
throw new Error('redirect() location must not contain CR or LF characters.');
|
|
214
|
+
}
|
|
215
|
+
function defaultStatusText(status) {
|
|
216
|
+
const map = {
|
|
217
|
+
400: 'Bad Request',
|
|
218
|
+
401: 'Unauthorized',
|
|
219
|
+
403: 'Forbidden',
|
|
220
|
+
404: 'Not Found',
|
|
221
|
+
405: 'Method Not Allowed',
|
|
222
|
+
409: 'Conflict',
|
|
223
|
+
422: 'Unprocessable Content',
|
|
224
|
+
429: 'Too Many Requests',
|
|
225
|
+
500: 'Internal Server Error',
|
|
226
|
+
502: 'Bad Gateway',
|
|
227
|
+
503: 'Service Unavailable',
|
|
228
|
+
504: 'Gateway Timeout'
|
|
229
|
+
};
|
|
230
|
+
return map[status] ?? 'Error';
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
export type BlokdPluginOptions = {
|
|
3
|
+
routesDir?: string;
|
|
4
|
+
extensions?: string[];
|
|
5
|
+
/** Throw when two files map to the same URL path. Enabled by default. */
|
|
6
|
+
strictRoutes?: boolean;
|
|
7
|
+
/** Infer whether a route needs the client entry. Enabled by default. */
|
|
8
|
+
analyzeClient?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function slash(path: string): string;
|
|
11
|
+
export declare function walkRoutes(dir: string, extensions: string[], files?: string[]): string[];
|
|
12
|
+
export declare function segmentToPath(segment: string): string;
|
|
13
|
+
export declare function fileToRoutePath(routesDir: string, file: string): string;
|
|
14
|
+
export declare function assertNoDuplicateRoutes(routesDir: string, files: string[]): void;
|
|
15
|
+
export declare function layoutFilesFor(routesDir: string, file: string, extensions: string[]): string[];
|
|
16
|
+
export declare function nearestSpecialFile(routesDir: string, file: string, name: '_error' | '_404', extensions: string[]): string | null;
|
|
17
|
+
export declare function makeManifestCode(root: string, routesDir: string, extensions?: string[], strictRoutes?: boolean, analyzeClient?: boolean): string;
|
|
18
|
+
export declare function blokd(options?: BlokdPluginOptions): Plugin;
|
|
19
|
+
export default blokd;
|
|
20
|
+
//# sourceMappingURL=vite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAKF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAS5F;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAQhF;AAcD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAU9F;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAShI;AAkHD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,WAAiC,EAAE,YAAY,UAAO,EAAE,aAAa,UAAO,GAAG,MAAM,CAgChK;AA8HD,wBAAgB,KAAK,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CA8C9D;AAED,eAAe,KAAK,CAAC"}
|