@hozu/testing 0.7.0 → 0.9.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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Json } from '@hozu/core/ir';
2
- import { type HandlerOptions } from '@hozu/runtime-server';
1
+ import type { Diagnostic, Json } from '@hozu/core/ir';
2
+ import { type App, type AppHost, type OgCard, type SessionStore } from '@hozu/runtime-server';
3
3
  export interface TestPage {
4
4
  status: number;
5
5
  headers: Headers;
@@ -9,10 +9,19 @@ export interface TestPage {
9
9
  }
10
10
  export interface TestApp {
11
11
  get(path: string, init?: RequestInit): Promise<TestPage>;
12
- post(path: string, form: Record<string, string>, init?: RequestInit): Promise<TestPage>;
12
+ post(path: string, form: Record<string, string> | [string, string][], init?: RequestInit): Promise<TestPage>;
13
13
  }
14
14
  export declare const visibleText: (html: string) => string;
15
- export declare function testApp(options: HandlerOptions & {
15
+ export interface TestAppOptions {
16
16
  origin?: string;
17
- }): TestApp;
17
+ session?: SessionStore;
18
+ env?: AppHost['env'];
19
+ og?: ((card: OgCard) => Promise<Uint8Array>) | null;
20
+ }
21
+ export declare class BuildErrors extends Error {
22
+ name: string;
23
+ readonly diagnostics: Diagnostic[];
24
+ constructor(diagnostics: Diagnostic[]);
25
+ }
26
+ export declare function testApp(app: App, { origin, env, session, og }?: TestAppOptions): TestApp;
18
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAiB,KAAK,cAAc,EAAe,MAAM,sBAAsB,CAAA;AAEtF,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACxF;AAID,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAchC,CAAA;AAEX,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAsC9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EACL,KAAK,GAAG,EACR,KAAK,OAAO,EAIZ,KAAK,MAAM,EACX,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAA;AAE7B,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC7G;AAID,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAchC,CAAA;AAEX,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IACpB,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAA;CACpD;AAED,qBAAa,WAAY,SAAQ,KAAK;IAC3B,IAAI,SAAgB;IAC7B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAA;IAClC,YAAY,WAAW,EAAE,UAAU,EAAE,EAOpC;CACF;AAED,wBAAgB,OAAO,CACrB,GAAG,EAAE,GAAG,EACR,EAAE,MAA2B,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,GAAE,cAAmB,GACrE,OAAO,CA8CT"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { createHandler, usedWidgets } from '@hozu/runtime-server';
1
+ import { appHandlerOptions, createHandler, usedClientComponents, } from '@hozu/runtime-server';
2
2
  const ENTITIES = { amp: '&', lt: '<', gt: '>', quot: '"', '#39': "'", nbsp: ' ' };
3
3
  export const visibleText = (html) => html
4
4
  .replace(/<head[\s\S]*?<\/head>/gi, ' ')
@@ -12,14 +12,32 @@ export const visibleText = (html) => html
12
12
  : (ENTITIES[e] ?? all))
13
13
  .replace(/\s+/g, ' ')
14
14
  .trim();
15
- export function testApp(options) {
16
- const { origin = 'http://localhost', ...rest } = options;
17
- const handler = createHandler(rest.widgets || rest.manifest
15
+ export class BuildErrors extends Error {
16
+ name = 'BuildErrors';
17
+ diagnostics;
18
+ constructor(diagnostics) {
19
+ super(`The build has ${diagnostics.length} error${diagnostics.length === 1 ? '' : 's'}, so nothing is rendered:\n${diagnostics
20
+ .map((d) => ` ${d.code} ${d.location.pointer} ${d.message}`)
21
+ .join('\n')}`);
22
+ this.diagnostics = diagnostics;
23
+ }
24
+ }
25
+ export function testApp(app, { origin = 'http://localhost', env, session, og } = {}) {
26
+ const rest = appHandlerOptions(app, {
27
+ ...(env ? { env } : {}),
28
+ ...(session ? { session } : {}),
29
+ });
30
+ if (og !== undefined)
31
+ rest.og = og;
32
+ const errors = rest.build.diagnostics.filter((d) => d.severity === 'error');
33
+ if (errors.length)
34
+ throw new BuildErrors(errors);
35
+ const handler = createHandler(rest.components || rest.manifest
18
36
  ? rest
19
37
  : {
20
38
  ...rest,
21
- widgets: {
22
- urls: Object.fromEntries(usedWidgets(rest.build.ir).map((ref) => [ref, `/_hozu/w/${ref}.js`])),
39
+ components: {
40
+ urls: Object.fromEntries(usedClientComponents(rest.build.ir).map((ref) => [ref, `/_hozu/c/${ref}.js`])),
23
41
  files: {},
24
42
  },
25
43
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hozu/testing",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Test rendered Hozu pages through the real handler: status, headers, visible text, payload, form posts",
5
5
  "keywords": [
6
6
  "hozu",
@@ -39,8 +39,8 @@
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@hozu/core": "0.7.0",
43
- "@hozu/runtime-server": "0.7.0"
42
+ "@hozu/core": "0.9.0",
43
+ "@hozu/runtime-server": "0.9.0"
44
44
  },
45
45
  "sideEffects": false
46
46
  }