@hozu/runtime-server 0.6.0 → 0.8.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/dist/app.d.ts +28 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +15 -0
- package/dist/app.js.map +1 -0
- package/dist/forms.d.ts +9 -6
- package/dist/forms.d.ts.map +1 -1
- package/dist/forms.js +56 -17
- package/dist/forms.js.map +1 -1
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +4 -0
- package/dist/generate.js.map +1 -1
- package/dist/handler.d.ts +9 -2
- package/dist/handler.d.ts.map +1 -1
- package/dist/handler.js +245 -130
- package/dist/handler.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/render.d.ts +4 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +49 -44
- package/dist/render.js.map +1 -1
- package/dist/search.d.ts +1 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -0
- package/dist/search.js.map +1 -1
- package/dist/security.d.ts +2 -1
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +3 -1
- package/dist/security.js.map +1 -1
- package/dist/seed.d.ts +3 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +22 -0
- package/dist/seed.js.map +1 -0
- package/dist/session.d.ts +16 -5
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +64 -10
- package/dist/session.js.map +1 -1
- package/package.json +6 -6
- package/dist/compile.d.ts +0 -43
- package/dist/compile.d.ts.map +0 -1
- package/dist/compile.js +0 -170
- package/dist/compile.js.map +0 -1
package/dist/search.js
CHANGED
|
@@ -37,4 +37,14 @@ export function parseSearch(schema, query) {
|
|
|
37
37
|
}
|
|
38
38
|
return out;
|
|
39
39
|
}
|
|
40
|
+
export function queryInput(schema, query) {
|
|
41
|
+
const props = obj(schema?.properties) ?? {};
|
|
42
|
+
const out = {};
|
|
43
|
+
for (const [key, raw] of query) {
|
|
44
|
+
const s = obj(props[key]);
|
|
45
|
+
const parsed = s ? coerce(s, raw) : undefined;
|
|
46
|
+
out[key] = parsed === undefined ? raw : parsed;
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
40
50
|
//# sourceMappingURL=search.js.map
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/security.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type CspSources = Partial<Record<'script' | 'style' | 'img' | 'connect' | 'font' | 'frame' | 'media', string[]>>;
|
|
2
2
|
export declare const crossSite: (request: Request) => boolean;
|
|
3
3
|
export declare function contentSecurityPolicy(extra: CspSources, scriptHashes: string[]): string;
|
|
4
|
-
export declare const ERROR_HTML
|
|
4
|
+
export declare const ERROR_HTML: string;
|
|
5
|
+
export declare const NOT_FOUND_HTML: string;
|
|
5
6
|
//# sourceMappingURL=security.d.ts.map
|
package/dist/security.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CACtF,CAAA;AAED,eAAO,MAAM,SAAS,YAAa,OAAO,KAAG,OAS5C,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBvF;
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,MAAM,CAAC,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,CACtF,CAAA;AAED,eAAO,MAAM,SAAS,YAAa,OAAO,KAAG,OAS5C,CAAA;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAgBvF;AAKD,eAAO,MAAM,UAAU,QAA8D,CAAA;AAErF,eAAO,MAAM,cAAc,QAA6D,CAAA"}
|
package/dist/security.js
CHANGED
|
@@ -28,5 +28,7 @@ export function contentSecurityPolicy(extra, scriptHashes) {
|
|
|
28
28
|
"object-src 'none'",
|
|
29
29
|
].join('; ');
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
const fallback = (title, text) => `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="robots" content="noindex"><style>@view-transition { navigation: auto; }</style><title>${title}</title></head><body><h1>${title}</h1><p>${text}</p></body></html>`;
|
|
32
|
+
export const ERROR_HTML = fallback('Something went wrong', 'Please try again later.');
|
|
33
|
+
export const NOT_FOUND_HTML = fallback('Not found', 'There is no page at this address.');
|
|
32
34
|
//# sourceMappingURL=security.js.map
|
package/dist/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAW,EAAE;IACrD,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,YAAY;QAAE,OAAO,IAAI,CAAA;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB,EAAE,YAAsB;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,IAAI,GAAa,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClF,OAAO;QACL,oBAAoB;QACpB,cAAc,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;QACpF,aAAa,IAAI,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QAC/D,WAAW,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;QAC1D,eAAe,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAChD,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;QACnD,aAAa,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACrD,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QAC5C,wBAAwB;QACxB,iBAAiB;QACjB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAW,EAAE;IACrD,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,YAAY;QAAE,OAAO,IAAI,CAAA;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAiB,EAAE,YAAsB;IAC7E,MAAM,IAAI,GAAG,CAAC,IAAc,EAAE,IAAI,GAAa,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClF,OAAO;QACL,oBAAoB;QACpB,cAAc,IAAI,CAAC,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;QACpF,aAAa,IAAI,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QAC/D,WAAW,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;QAC1D,eAAe,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAChD,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;QACnD,aAAa,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACrD,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QAC5C,wBAAwB;QACxB,iBAAiB;QACjB,oBAAoB;QACpB,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE,CAC/C,oOAAoO,KAAK,4BAA4B,KAAK,WAAW,IAAI,oBAAoB,CAAA;AAE/S,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,CAAA;AAErF,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,EAAE,mCAAmC,CAAC,CAAA"}
|
package/dist/seed.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { FeatureIR, Json, ProjectIR } from '@hozu/core/ir';
|
|
2
|
+
export declare function seededContext(ir: ProjectIR, route: string, feature: FeatureIR, fns: Record<string, (x: never) => unknown>, params: Json, search: Json): Json | null;
|
|
3
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG/D,wBAAgB,aAAa,CAC3B,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,EAC1C,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,IAAI,GACX,IAAI,GAAG,IAAI,CAeb"}
|
package/dist/seed.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { compileValue } from '@hozu/machine';
|
|
2
|
+
export function seededContext(ir, route, feature, fns, params, search) {
|
|
3
|
+
const machine = feature.machine;
|
|
4
|
+
const page = ir.pages[route];
|
|
5
|
+
if (!machine || !page)
|
|
6
|
+
return null;
|
|
7
|
+
for (const ref of page.views) {
|
|
8
|
+
const dot = ref.indexOf('.');
|
|
9
|
+
if (ref.slice(0, dot) !== feature.id)
|
|
10
|
+
continue;
|
|
11
|
+
const seed = feature.views[ref.slice(dot + 1)]?.seed;
|
|
12
|
+
if (!seed)
|
|
13
|
+
continue;
|
|
14
|
+
const env = { context: machine.initialContext, state: null, bindings: [], params, search };
|
|
15
|
+
const context = { ...machine.initialContext };
|
|
16
|
+
for (const [key, v] of Object.entries(seed))
|
|
17
|
+
context[key] = compileValue(v, fns)(env);
|
|
18
|
+
return context;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=seed.js.map
|
package/dist/seed.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,UAAU,aAAa,CAC3B,EAAa,EACb,KAAa,EACb,OAAkB,EAClB,GAA0C,EAC1C,MAAY,EACZ,MAAY;IAEZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,EAAE;YAAE,SAAQ;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;QACpD,IAAI,CAAC,IAAI;YAAE,SAAQ;QACnB,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAW,CAAA;QACnG,MAAM,OAAO,GAAG,EAAE,GAAI,OAAO,CAAC,cAAuC,EAAE,CAAA;QACvE,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;QACrF,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/session.d.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
export interface SessionStore {
|
|
2
2
|
read(request: Request): Promise<unknown>;
|
|
3
|
-
write(value: unknown): Promise<string>;
|
|
3
|
+
write(value: unknown, request?: Request): Promise<string>;
|
|
4
|
+
issue(value: unknown): Promise<string>;
|
|
4
5
|
}
|
|
5
|
-
export interface
|
|
6
|
-
name
|
|
7
|
-
secret
|
|
6
|
+
export interface MemorySessionsOptions {
|
|
7
|
+
name?: string;
|
|
8
|
+
secret?: string | undefined;
|
|
8
9
|
maxAge?: number;
|
|
9
10
|
secure?: boolean;
|
|
11
|
+
now?: () => number;
|
|
10
12
|
}
|
|
11
|
-
export declare function
|
|
13
|
+
export declare function memorySessions({ name, secret: given, maxAge, secure, now, }?: MemorySessionsOptions): SessionStore;
|
|
14
|
+
export declare function signedCookie({ name, secret, maxAge, secure, }: {
|
|
15
|
+
name: string;
|
|
16
|
+
secret: string;
|
|
17
|
+
maxAge: number;
|
|
18
|
+
secure?: boolean;
|
|
19
|
+
}): {
|
|
20
|
+
read(request: Request): Promise<unknown>;
|
|
21
|
+
write(value: unknown): Promise<string>;
|
|
22
|
+
};
|
|
12
23
|
//# sourceMappingURL=session.d.ts.map
|
package/dist/session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACxC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACzD,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAuCD,wBAAgB,cAAc,CAAC,EAC7B,IAAY,EACZ,MAAM,EAAE,KAAK,EACb,MAA0B,EAC1B,MAAa,EACb,GAAc,GACf,GAAE,qBAA0B,GAAG,YAAY,CAkC3C;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,MAAM,EACN,MAAM,EACN,MAAa,GACd,EAAE;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;IAIS,IAAI,UAAU,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IASxC,KAAK,QAAQ,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;EAM/C"}
|
package/dist/session.js
CHANGED
|
@@ -4,20 +4,75 @@ const base64url = (bytes) => btoa(String.fromCharCode(...bytes))
|
|
|
4
4
|
.replace(/\//g, '_')
|
|
5
5
|
.replace(/=+$/, '');
|
|
6
6
|
const fromBase64url = (text) => Uint8Array.from(atob(text.replace(/-/g, '+').replace(/_/g, '/')), (c) => c.charCodeAt(0));
|
|
7
|
-
|
|
7
|
+
const random = (bytes) => base64url(crypto.getRandomValues(new Uint8Array(bytes)));
|
|
8
|
+
const cookieValue = (request, name) => new RegExp(`(?:^|;\\s*)${name}=([^;]+)`).exec(request.headers.get('cookie') ?? '')?.[1];
|
|
9
|
+
function signer(secret) {
|
|
10
|
+
const key = crypto.subtle.importKey('raw', encoder.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify']);
|
|
11
|
+
return {
|
|
12
|
+
sign: async (text) => base64url(new Uint8Array(await crypto.subtle.sign('HMAC', await key, encoder.encode(text)))),
|
|
13
|
+
verify: async (text, signature) => {
|
|
14
|
+
try {
|
|
15
|
+
return await crypto.subtle.verify('HMAC', await key, fromBase64url(signature), encoder.encode(text));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function memorySessions({ name = 'sid', secret: given, maxAge = 60 * 60 * 24 * 30, secure = true, now = Date.now, } = {}) {
|
|
24
|
+
const secret = given ?? random(32);
|
|
8
25
|
if (secret.length < 32)
|
|
9
|
-
throw new Error('
|
|
26
|
+
throw new Error('memorySessions secret must be at least 32 characters');
|
|
10
27
|
const attributes = `; Path=/; HttpOnly; SameSite=Lax${secure ? '; Secure' : ''}`;
|
|
11
|
-
const
|
|
28
|
+
const { sign, verify } = signer(secret);
|
|
29
|
+
const sessions = new Map();
|
|
30
|
+
const idOf = async (request) => {
|
|
31
|
+
const [id, signature] = cookieValue(request, name)?.split('.') ?? [];
|
|
32
|
+
return id && signature && (await verify(id, signature)) ? id : null;
|
|
33
|
+
};
|
|
34
|
+
const create = async (value) => {
|
|
35
|
+
const at = now();
|
|
36
|
+
if (sessions.size > 1000)
|
|
37
|
+
for (const [k, s] of sessions)
|
|
38
|
+
if (s.expires <= at)
|
|
39
|
+
sessions.delete(k);
|
|
40
|
+
const id = random(18);
|
|
41
|
+
sessions.set(id, { json: JSON.stringify(value), expires: at + maxAge * 1000 });
|
|
42
|
+
return `${name}=${id}.${await sign(id)}`;
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
async read(request) {
|
|
46
|
+
const id = await idOf(request);
|
|
47
|
+
const s = id ? sessions.get(id) : undefined;
|
|
48
|
+
if (!s)
|
|
49
|
+
return null;
|
|
50
|
+
if (s.expires > now())
|
|
51
|
+
return JSON.parse(s.json);
|
|
52
|
+
sessions.delete(id);
|
|
53
|
+
return null;
|
|
54
|
+
},
|
|
55
|
+
async write(value, request) {
|
|
56
|
+
const old = request ? await idOf(request) : null;
|
|
57
|
+
if (old)
|
|
58
|
+
sessions.delete(old);
|
|
59
|
+
if (value === null)
|
|
60
|
+
return `${name}=${attributes}; Max-Age=0`;
|
|
61
|
+
return `${await create(value)}${attributes}; Max-Age=${maxAge}`;
|
|
62
|
+
},
|
|
63
|
+
issue: create,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function signedCookie({ name, secret, maxAge, secure = true, }) {
|
|
67
|
+
const attributes = `; Path=/; HttpOnly; SameSite=Lax${secure ? '; Secure' : ''}`;
|
|
68
|
+
const { sign, verify } = signer(secret);
|
|
12
69
|
return {
|
|
13
70
|
async read(request) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
if (!payload || !signature)
|
|
71
|
+
const [payload, signature] = cookieValue(request, name)?.split('.') ?? [];
|
|
72
|
+
if (!payload || !signature || !(await verify(payload, signature)))
|
|
17
73
|
return null;
|
|
18
74
|
try {
|
|
19
|
-
|
|
20
|
-
return valid ? JSON.parse(new TextDecoder().decode(fromBase64url(payload))) : null;
|
|
75
|
+
return JSON.parse(new TextDecoder().decode(fromBase64url(payload)));
|
|
21
76
|
}
|
|
22
77
|
catch {
|
|
23
78
|
return null;
|
|
@@ -27,8 +82,7 @@ export function sessionCookie({ name, secret, maxAge = 60 * 60 * 24 * 30, secure
|
|
|
27
82
|
if (value === null)
|
|
28
83
|
return `${name}=${attributes}; Max-Age=0`;
|
|
29
84
|
const payload = base64url(encoder.encode(JSON.stringify(value)));
|
|
30
|
-
|
|
31
|
-
return `${name}=${payload}.${signature}${attributes}; Max-Age=${maxAge}`;
|
|
85
|
+
return `${name}=${payload}.${await sign(payload)}${attributes}; Max-Age=${maxAge}`;
|
|
32
86
|
},
|
|
33
87
|
};
|
|
34
88
|
}
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hozu/runtime-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "Hozu server runtime: generated render functions, in-order streaming SSR and a web-standard handler",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"hozu",
|
|
@@ -39,11 +39,11 @@
|
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@hozu/compiler": "0.
|
|
43
|
-
"@hozu/core": "0.
|
|
44
|
-
"@hozu/
|
|
45
|
-
"@hozu/
|
|
46
|
-
"@hozu/
|
|
42
|
+
"@hozu/compiler": "0.8.0",
|
|
43
|
+
"@hozu/core": "0.8.0",
|
|
44
|
+
"@hozu/machine": "0.8.0",
|
|
45
|
+
"@hozu/data": "0.8.0",
|
|
46
|
+
"@hozu/runtime-client": "0.8.0"
|
|
47
47
|
},
|
|
48
48
|
"sideEffects": false
|
|
49
49
|
}
|
package/dist/compile.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { type FeatureIR, type Json, type ValueExpr, type ViewNode, type WidgetIR } from '@tenon/core/ir';
|
|
2
|
-
import { type Fns, type Getter } from '@tenon/machine';
|
|
3
|
-
import { text } from '@tenon/runtime-client';
|
|
4
|
-
export interface Scope {
|
|
5
|
-
feature: FeatureIR;
|
|
6
|
-
context: Json;
|
|
7
|
-
state: string | null;
|
|
8
|
-
bindings: Json[];
|
|
9
|
-
params: Json;
|
|
10
|
-
search: Json;
|
|
11
|
-
routes: Record<string, string>;
|
|
12
|
-
url: string;
|
|
13
|
-
locale: string;
|
|
14
|
-
alternate: Record<string, string>;
|
|
15
|
-
env: Json;
|
|
16
|
-
}
|
|
17
|
-
export interface Runtime {
|
|
18
|
-
open(n: ViewNode, scope: Scope): string;
|
|
19
|
-
embed(view: string): {
|
|
20
|
-
root: ViewNode;
|
|
21
|
-
scope: Scope;
|
|
22
|
-
} | null;
|
|
23
|
-
widget(ref: string): void;
|
|
24
|
-
}
|
|
25
|
-
export interface Compile {
|
|
26
|
-
islands: Set<string>;
|
|
27
|
-
fns: Fns;
|
|
28
|
-
widgets: Record<string, WidgetIR>;
|
|
29
|
-
}
|
|
30
|
-
export type Frag = string | ((scope: Scope, r: Runtime) => string);
|
|
31
|
-
export declare const SEP = "<!---->";
|
|
32
|
-
export declare const OPEN = "<!--[-->";
|
|
33
|
-
export declare const CLOSE = "<!--]-->";
|
|
34
|
-
export { text };
|
|
35
|
-
export declare const expr: (v: ValueExpr, fns: Fns) => Getter;
|
|
36
|
-
type El = Pick<Extract<ViewNode, {
|
|
37
|
-
kind: 'el';
|
|
38
|
-
}>, 'class' | 'toggle' | 'vars'>;
|
|
39
|
-
export declare function classAndStyle(n: El, value: (v: ValueExpr) => Json): string;
|
|
40
|
-
export declare const run: (f: Frag, s: Scope, r: Runtime) => string;
|
|
41
|
-
export declare const separated: (list: ViewNode[], i: number) => boolean;
|
|
42
|
-
export declare function compileNode(n: ViewNode, island: boolean, c: Compile, sep?: boolean): Frag;
|
|
43
|
-
//# sourceMappingURL=compile.d.ts.map
|
package/dist/compile.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAGd,KAAK,IAAI,EACT,KAAK,SAAS,EACd,KAAK,QAAQ,EAEb,KAAK,QAAQ,EACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAA8B,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAClF,OAAO,EAAkC,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAG5E,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,IAAI,EAAE,CAAA;IAChB,MAAM,EAAE,IAAI,CAAA;IACZ,MAAM,EAAE,IAAI,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjC,GAAG,EAAE,IAAI,CAAA;CACV;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;IACvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACpB,GAAG,EAAE,GAAG,CAAA;IACR,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAClC;AAED,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC,CAAA;AAIlE,eAAO,MAAM,GAAG,YAAY,CAAA;AAC5B,eAAO,MAAM,IAAI,aAAa,CAAA;AAC9B,eAAO,MAAM,KAAK,aAAa,CAAA;AAE/B,OAAO,EAAE,IAAI,EAAE,CAAA;AAEf,eAAO,MAAM,IAAI,MAAO,SAAS,OAAO,GAAG,KAAG,MAA8B,CAAA;AAO5E,KAAK,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAA;AAK9E,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,GAAG,MAAM,CAO1E;AAkCD,eAAO,MAAM,GAAG,MAAO,IAAI,KAAK,KAAK,KAAK,OAAO,WAA0C,CAAA;AAE3F,eAAO,MAAM,SAAS,SAAU,QAAQ,EAAE,KAAK,MAAM,YAAiC,CAAA;AAEtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,UAAQ,GAAG,IAAI,CAqGvF"}
|
package/dist/compile.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { FORM_FIELD, formRunnable, voidTags, } from '@tenon/core/ir';
|
|
2
|
-
import { compileGuard, compileValue } from '@tenon/machine';
|
|
3
|
-
import { attrText, classText, styleText, text } from '@tenon/runtime-client';
|
|
4
|
-
import { escapeHtml } from './escape.js';
|
|
5
|
-
const voids = new Set(voidTags);
|
|
6
|
-
export const SEP = '<!---->';
|
|
7
|
-
export const OPEN = '<!--[-->';
|
|
8
|
-
export const CLOSE = '<!--]-->';
|
|
9
|
-
export { text };
|
|
10
|
-
export const expr = (v, fns) => compileValue(v, fns);
|
|
11
|
-
const attr = (name, x) => {
|
|
12
|
-
const s = attrText(name, x);
|
|
13
|
-
return s === null ? '' : s === '' ? ` ${name}` : ` ${name}="${escapeHtml(s)}"`;
|
|
14
|
-
};
|
|
15
|
-
const classAttr = (c) => (c ? ` class="${escapeHtml(c)}"` : '');
|
|
16
|
-
const styleAttr = (s) => (s ? ` style="${escapeHtml(s)}"` : '');
|
|
17
|
-
export function classAndStyle(n, value) {
|
|
18
|
-
const active = [];
|
|
19
|
-
for (const c in n.toggle)
|
|
20
|
-
if (value(n.toggle[c]) === true)
|
|
21
|
-
active.push(c);
|
|
22
|
-
return (classAttr(classText(n.class, active)) +
|
|
23
|
-
styleAttr(styleText(Object.entries(n.vars).map(([k, v]) => [k, value(v)]))));
|
|
24
|
-
}
|
|
25
|
-
function classAndStyleFrag(n, fns) {
|
|
26
|
-
const toggles = Object.entries(n.toggle).map(([c, v]) => [c, expr(v, fns)]);
|
|
27
|
-
const vars = Object.entries(n.vars).map(([k, v]) => [k, expr(v, fns)]);
|
|
28
|
-
const base = n.class;
|
|
29
|
-
const cls = toggles.length
|
|
30
|
-
? (s) => {
|
|
31
|
-
const active = [];
|
|
32
|
-
for (const [c, get] of toggles)
|
|
33
|
-
if (get(s) === true)
|
|
34
|
-
active.push(c);
|
|
35
|
-
return classAttr(classText(base, active));
|
|
36
|
-
}
|
|
37
|
-
: classAttr(base ?? '');
|
|
38
|
-
const style = vars.length ? (s) => styleAttr(styleText(vars.map(([k, get]) => [k, get(s)]))) : '';
|
|
39
|
-
return seq([cls, style]);
|
|
40
|
-
}
|
|
41
|
-
function seq(parts) {
|
|
42
|
-
const merged = [];
|
|
43
|
-
for (const p of parts) {
|
|
44
|
-
const last = merged.at(-1);
|
|
45
|
-
if (typeof p === 'string' && typeof last === 'string')
|
|
46
|
-
merged[merged.length - 1] = last + p;
|
|
47
|
-
else if (p !== '')
|
|
48
|
-
merged.push(p);
|
|
49
|
-
}
|
|
50
|
-
if (merged.length === 0)
|
|
51
|
-
return '';
|
|
52
|
-
if (merged.length === 1)
|
|
53
|
-
return merged[0];
|
|
54
|
-
const list = merged;
|
|
55
|
-
return (s, r) => {
|
|
56
|
-
let out = '';
|
|
57
|
-
for (const p of list)
|
|
58
|
-
out += typeof p === 'string' ? p : p(s, r);
|
|
59
|
-
return out;
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
export const run = (f, s, r) => (typeof f === 'string' ? f : f(s, r));
|
|
63
|
-
export const separated = (list, i) => list[i + 1]?.kind === 'text';
|
|
64
|
-
export function compileNode(n, island, c, sep = false) {
|
|
65
|
-
const { fns } = c;
|
|
66
|
-
const children = (list) => list.map((x, i) => compileNode(x, island, c, separated(list, i)));
|
|
67
|
-
if (!island && c.islands.has(n.id)) {
|
|
68
|
-
const inner = compileNode(n, true, c, sep);
|
|
69
|
-
return (s, r) => r.open(n, s) + run(inner, s, r);
|
|
70
|
-
}
|
|
71
|
-
const wrap = (body) => (island ? seq([OPEN, body, CLOSE]) : body);
|
|
72
|
-
switch (n.kind) {
|
|
73
|
-
case 'text': {
|
|
74
|
-
const tail = island && sep ? SEP : '';
|
|
75
|
-
if ('literal' in n.value)
|
|
76
|
-
return escapeHtml(text(n.value.literal)) + tail;
|
|
77
|
-
const get = expr(n.value, fns);
|
|
78
|
-
return (s) => escapeHtml(text(get(s))) + tail;
|
|
79
|
-
}
|
|
80
|
-
case 'el': {
|
|
81
|
-
const parts = [`<${n.tag}`, classAndStyleFrag(n, fns)];
|
|
82
|
-
let content = null;
|
|
83
|
-
for (const [name, v] of Object.entries(n.attrs)) {
|
|
84
|
-
if (n.tag === 'textarea' && name === 'value') {
|
|
85
|
-
const get = expr(v, fns);
|
|
86
|
-
content = 'literal' in v ? escapeHtml(text(v.literal)) : (s) => escapeHtml(text(get(s)));
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
if ('literal' in v) {
|
|
90
|
-
parts.push(attr(name, v.literal));
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
const get = expr(v, fns);
|
|
94
|
-
parts.push((s) => attr(name, get(s)));
|
|
95
|
-
}
|
|
96
|
-
const submit = n.tag === 'form' ? n.on.submit : undefined;
|
|
97
|
-
if (submit && !('method' in n.attrs) && formRunnable(submit.payload)) {
|
|
98
|
-
const id = encodeURIComponent(n.id);
|
|
99
|
-
parts.push(' method="post"', (s) => attr('action', `${s.url}${s.url.includes('?') ? '&' : '?'}${FORM_FIELD}=${id}`));
|
|
100
|
-
}
|
|
101
|
-
parts.push('>');
|
|
102
|
-
if (voids.has(n.tag))
|
|
103
|
-
return seq(parts);
|
|
104
|
-
if (content !== null)
|
|
105
|
-
parts.push(content);
|
|
106
|
-
else
|
|
107
|
-
parts.push(...children(n.children));
|
|
108
|
-
parts.push(`</${n.tag}>`);
|
|
109
|
-
return seq(parts);
|
|
110
|
-
}
|
|
111
|
-
case 'when': {
|
|
112
|
-
const body = seq(children(n.children));
|
|
113
|
-
const states = n.states;
|
|
114
|
-
return wrap((s, r) => (s.state !== null && states.includes(s.state) ? run(body, s, r) : ''));
|
|
115
|
-
}
|
|
116
|
-
case 'each': {
|
|
117
|
-
const item = compileNode(n.item, island, c, true);
|
|
118
|
-
const source = expr(n.source, fns);
|
|
119
|
-
return wrap((s, r) => {
|
|
120
|
-
const items = source(s);
|
|
121
|
-
let out = '';
|
|
122
|
-
if (Array.isArray(items))
|
|
123
|
-
for (const x of items)
|
|
124
|
-
out += run(item, { ...s, bindings: [...s.bindings, x] }, r);
|
|
125
|
-
return out;
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
case 'embed': {
|
|
129
|
-
const view = n.view;
|
|
130
|
-
const cache = new WeakMap();
|
|
131
|
-
return wrap((_, r) => {
|
|
132
|
-
const e = r.embed(view);
|
|
133
|
-
if (!e)
|
|
134
|
-
return '';
|
|
135
|
-
let f = cache.get(e.root);
|
|
136
|
-
if (f === undefined) {
|
|
137
|
-
f = compileNode(e.root, island, c);
|
|
138
|
-
cache.set(e.root, f);
|
|
139
|
-
}
|
|
140
|
-
return run(f, e.scope, r);
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
case 'if': {
|
|
144
|
-
const test = compileGuard(n.test, fns);
|
|
145
|
-
const yes = seq(children(n.ifTrue));
|
|
146
|
-
const no = seq(children(n.ifFalse));
|
|
147
|
-
return wrap((s, r) => run(test(s) ? yes : no, s, r));
|
|
148
|
-
}
|
|
149
|
-
case 'html': {
|
|
150
|
-
const get = expr(n.value, fns);
|
|
151
|
-
return wrap((s) => text(get(s)));
|
|
152
|
-
}
|
|
153
|
-
case 'global':
|
|
154
|
-
return '<!--g-->';
|
|
155
|
-
case 'widget': {
|
|
156
|
-
const tag = c.widgets[n.widget]?.tag ?? 'div';
|
|
157
|
-
const ref = n.widget;
|
|
158
|
-
const use = (_, r) => {
|
|
159
|
-
r.widget(ref);
|
|
160
|
-
return '';
|
|
161
|
-
};
|
|
162
|
-
const own = island && c.islands.has(n.id);
|
|
163
|
-
const kids = n.children.map((x, i) => compileNode(x, !own && island, c, separated(n.children, i)));
|
|
164
|
-
return seq([use, `<${tag}`, classAndStyleFrag(n, fns), '>', ...kids, `</${tag}>`]);
|
|
165
|
-
}
|
|
166
|
-
default:
|
|
167
|
-
return '';
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=compile.js.map
|
package/dist/compile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|