@client-compose/client 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/README.md +55 -3
- package/dist/index.d.ts +69 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +175 -14
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +3 -1
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +20 -0
- package/dist/proxy.js.map +1 -1
- package/dist/strings.d.ts +26 -0
- package/dist/strings.d.ts.map +1 -0
- package/dist/strings.js +130 -0
- package/dist/strings.js.map +1 -0
- package/dist/testing.d.ts +52 -7
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +121 -10
- package/dist/testing.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +250 -22
- package/src/proxy.ts +28 -0
- package/src/strings.ts +178 -0
- package/src/testing.ts +178 -12
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type AppStringsDescriptor, type ClientContext, type PluralRules, type StringParams, type Strings, type StringsResponse, type StringTemplate } from "@client-compose/protocol";
|
|
2
|
+
/** A count's plural category in a language: the first whose condition holds, or "other". */
|
|
3
|
+
export declare function pluralCategory(rules: PluralRules | undefined, count: number): string;
|
|
4
|
+
/** The values a string's params take. A counted string's `count` picks its variant. */
|
|
5
|
+
export type StringValues = Record<string, string | number>;
|
|
6
|
+
/**
|
|
7
|
+
* A string's words with its params filled in. Variants are chosen by the exact count, then its
|
|
8
|
+
* plural category, then `#*`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function formatString(template: StringTemplate | undefined, values?: StringValues, plurals?: PluralRules): string;
|
|
11
|
+
/**
|
|
12
|
+
* Strings as a renderer receives them: each declared string with no params as its text, each with
|
|
13
|
+
* params as a function filling them in. A string the composer didn't send is empty.
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildStrings<S>(declared: StringParams, strings: Strings | undefined, plurals: PluralRules | undefined): S;
|
|
16
|
+
/** The app strings, typed by their generated descriptor: `appStrings(AppStrings, response).retry`. */
|
|
17
|
+
export declare function appStrings<S>(descriptor: AppStringsDescriptor<S>, response: StringsResponse): S;
|
|
18
|
+
/** Thrown for a strings request the composer didn't answer with 200 and its strings. */
|
|
19
|
+
export declare class StringsFetchError extends Error {
|
|
20
|
+
readonly status: number;
|
|
21
|
+
readonly body: string;
|
|
22
|
+
constructor(status: number, body: string);
|
|
23
|
+
}
|
|
24
|
+
/** Fetch the app strings in the client's language (spec §4.7). */
|
|
25
|
+
export declare function fetchStrings(baseUrl: string, client: ClientContext, init?: RequestInit, fetchImpl?: typeof fetch): Promise<StringsResponse>;
|
|
26
|
+
//# sourceMappingURL=strings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAIlC,4FAA4F;AAC5F,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpF;AA8BD,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,MAAM,GAAE,YAAiB,EACzB,OAAO,CAAC,EAAE,WAAW,GACpB,MAAM,CAQR;AAqBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,EAAE,WAAW,GAAG,SAAS,GAC/B,CAAC,CAYH;AAID,sGAAsG;AACtG,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,eAAe,GAAG,CAAC,CAE/F;AAED,wFAAwF;AACxF,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAKzC;AAYD,kEAAkE;AAClE,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EACrB,IAAI,GAAE,WAAgB,EACtB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,eAAe,CAAC,CAyB1B"}
|
package/dist/strings.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
// Strings (spec §4.7): the words a client shows, from the composer. Templates are filled in here,
|
|
2
|
+
// counted strings pick their variant by the language's plural rules, and an island's strings
|
|
3
|
+
// become the typed `t` its renderer receives.
|
|
4
|
+
import { PROTOCOL_VERSION, } from "@client-compose/protocol";
|
|
5
|
+
// ---- Plural rules ----
|
|
6
|
+
/** A count's plural category in a language: the first whose condition holds, or "other". */
|
|
7
|
+
export function pluralCategory(rules, count) {
|
|
8
|
+
for (const [category, condition] of Object.entries(rules ?? {})) {
|
|
9
|
+
if (condition !== undefined && holds(condition, count)) {
|
|
10
|
+
return category;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return "other";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Whether a CLDR plural condition holds for a whole number: `or` of `and`s of relations like
|
|
17
|
+
* `i % 10 = 2..4` or `v = 0`. For a whole number, `n` and `i` are the number, and `v`, `w`, `f`,
|
|
18
|
+
* `t`, `c` and `e` are zero.
|
|
19
|
+
*/
|
|
20
|
+
function holds(condition, count) {
|
|
21
|
+
return condition.split(" or ").some((all) => all.split(" and ").every((r) => relates(r, count)));
|
|
22
|
+
}
|
|
23
|
+
const RELATION = /^\s*([nivwftce])\s*(?:%\s*(\d+))?\s*(!=|=)\s*(.+?)\s*$/;
|
|
24
|
+
function relates(relation, count) {
|
|
25
|
+
const match = RELATION.exec(relation);
|
|
26
|
+
if (!match) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const [, operand = "", modulus, op, ranges = ""] = match;
|
|
30
|
+
const base = operand === "n" || operand === "i" ? Math.abs(Math.trunc(count)) : 0;
|
|
31
|
+
const value = modulus === undefined ? base : base % Number(modulus);
|
|
32
|
+
const inRanges = ranges.split(",").some((range) => {
|
|
33
|
+
const [from = "", to] = range.trim().split("..");
|
|
34
|
+
return to === undefined ? value === Number(from) : value >= Number(from) && value <= Number(to);
|
|
35
|
+
});
|
|
36
|
+
return op === "=" ? inRanges : !inRanges;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A string's words with its params filled in. Variants are chosen by the exact count, then its
|
|
40
|
+
* plural category, then `#*`.
|
|
41
|
+
*/
|
|
42
|
+
export function formatString(template, values = {}, plurals) {
|
|
43
|
+
if (template === undefined) {
|
|
44
|
+
return "";
|
|
45
|
+
}
|
|
46
|
+
const text = typeof template === "string" ? template : variant(template, values.count, plurals);
|
|
47
|
+
return text.replace(/\{([A-Za-z0-9]+)\}/g, (slot, name) => name in values ? String(values[name]) : slot);
|
|
48
|
+
}
|
|
49
|
+
function variant(variants, count, plurals) {
|
|
50
|
+
const n = Number(count);
|
|
51
|
+
if (Number.isFinite(n)) {
|
|
52
|
+
const exact = variants[`#${n}`];
|
|
53
|
+
if (exact !== undefined) {
|
|
54
|
+
return exact;
|
|
55
|
+
}
|
|
56
|
+
const category = variants[`#${pluralCategory(plurals, n)}`];
|
|
57
|
+
if (category !== undefined) {
|
|
58
|
+
return category;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return variants["#*"] ?? "";
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Strings as a renderer receives them: each declared string with no params as its text, each with
|
|
65
|
+
* params as a function filling them in. A string the composer didn't send is empty.
|
|
66
|
+
*/
|
|
67
|
+
export function buildStrings(declared, strings, plurals) {
|
|
68
|
+
const t = {};
|
|
69
|
+
for (const [key, params] of Object.entries(declared)) {
|
|
70
|
+
const template = strings?.[key];
|
|
71
|
+
t[key] =
|
|
72
|
+
params.length === 0
|
|
73
|
+
? formatString(template, {}, plurals)
|
|
74
|
+
: (values) => formatString(template, values, plurals);
|
|
75
|
+
}
|
|
76
|
+
// The declared keys and params are the ones codegen typed S with.
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
78
|
+
return t;
|
|
79
|
+
}
|
|
80
|
+
// ---- App strings ----
|
|
81
|
+
/** The app strings, typed by their generated descriptor: `appStrings(AppStrings, response).retry`. */
|
|
82
|
+
export function appStrings(descriptor, response) {
|
|
83
|
+
return buildStrings(descriptor.strings, response.strings, response.plurals);
|
|
84
|
+
}
|
|
85
|
+
/** Thrown for a strings request the composer didn't answer with 200 and its strings. */
|
|
86
|
+
export class StringsFetchError extends Error {
|
|
87
|
+
status;
|
|
88
|
+
body;
|
|
89
|
+
constructor(status, body) {
|
|
90
|
+
super(`Strings request failed with status ${status}`);
|
|
91
|
+
this.status = status;
|
|
92
|
+
this.body = body;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
96
|
+
function isStringsResponse(value) {
|
|
97
|
+
if (!isRecord(value) || typeof value.locale !== "string") {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
return isRecord(value.plurals) && isRecord(value.strings);
|
|
101
|
+
}
|
|
102
|
+
/** Fetch the app strings in the client's language (spec §4.7). */
|
|
103
|
+
export async function fetchStrings(baseUrl, client, init = {}, fetchImpl = fetch) {
|
|
104
|
+
const headers = new Headers(init.headers);
|
|
105
|
+
if (!headers.has("content-type")) {
|
|
106
|
+
headers.set("content-type", "application/json");
|
|
107
|
+
}
|
|
108
|
+
const res = await fetchImpl(`${baseUrl}/strings`, {
|
|
109
|
+
...init,
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers,
|
|
112
|
+
body: JSON.stringify({ protocol: PROTOCOL_VERSION, client }),
|
|
113
|
+
});
|
|
114
|
+
const text = await res.text();
|
|
115
|
+
if (!res.ok) {
|
|
116
|
+
throw new StringsFetchError(res.status, text);
|
|
117
|
+
}
|
|
118
|
+
let parsed;
|
|
119
|
+
try {
|
|
120
|
+
parsed = JSON.parse(text);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
throw new StringsFetchError(res.status, text);
|
|
124
|
+
}
|
|
125
|
+
if (!isStringsResponse(parsed)) {
|
|
126
|
+
throw new StringsFetchError(res.status, text);
|
|
127
|
+
}
|
|
128
|
+
return parsed;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=strings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.js","sourceRoot":"","sources":["../src/strings.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { type ActionDescriptor, type ActionEffects, type Capabilities, type ClientContext, type DeclaredError, type IslandDescriptor, type IslandEntry, type IslandError, type ScreenMeta } from "@client-compose/protocol";
|
|
2
|
-
/**
|
|
1
|
+
import { type ActionDescriptor, type ActionEffects, type Capabilities, type ClientContext, type DeclaredError, type IslandDescriptor, type IslandEntry, type IslandError, type PendingIsland, type PluralRules, type ScreenMeta, type Strings } from "@client-compose/protocol";
|
|
2
|
+
/**
|
|
3
|
+
* A response for the fake composer to send: a JSON body, or a screen's stream (spec §4.6), as
|
|
4
|
+
* lines that come when they're given.
|
|
5
|
+
*/
|
|
3
6
|
export interface FakeResponse {
|
|
4
7
|
status: number;
|
|
5
|
-
body
|
|
8
|
+
body?: unknown;
|
|
9
|
+
/** Opens the stream's body, for each request answered with it. */
|
|
10
|
+
stream?: () => ReadableStream<Uint8Array>;
|
|
6
11
|
}
|
|
7
12
|
/** A request the fake composer received. */
|
|
8
13
|
export interface RecordedRequest {
|
|
@@ -35,6 +40,10 @@ export interface RecordedActionRequest extends RecordedRequest {
|
|
|
35
40
|
client: ClientContext | undefined;
|
|
36
41
|
idempotencyKey: string | undefined;
|
|
37
42
|
}
|
|
43
|
+
/** A strings request (spec §4.7): the app strings, in the client's language. */
|
|
44
|
+
export interface RecordedStringsRequest extends RecordedRequest {
|
|
45
|
+
client: ClientContext | undefined;
|
|
46
|
+
}
|
|
38
47
|
export interface FakeGatewayHandlers {
|
|
39
48
|
/** By screen id. */
|
|
40
49
|
screens?: Record<string, (request: RecordedScreenRequest) => FakeResponse>;
|
|
@@ -42,6 +51,8 @@ export interface FakeGatewayHandlers {
|
|
|
42
51
|
actions?: Record<string, (request: RecordedActionRequest) => FakeResponse>;
|
|
43
52
|
/** Island requests, by `"{screen}/{key}"`. */
|
|
44
53
|
islands?: Record<string, (request: RecordedIslandRequest) => FakeResponse>;
|
|
54
|
+
/** The app strings (POST /strings). */
|
|
55
|
+
strings?: (request: RecordedStringsRequest) => FakeResponse;
|
|
45
56
|
/** Anything else, e.g. uploads to storage: return undefined to leave a request to the others. */
|
|
46
57
|
other?: (request: RecordedRequest) => FakeResponse | undefined;
|
|
47
58
|
}
|
|
@@ -53,6 +64,7 @@ export interface FakeGateway {
|
|
|
53
64
|
screenRequests(): RecordedScreenRequest[];
|
|
54
65
|
islandRequests(): RecordedIslandRequest[];
|
|
55
66
|
actionRequests(): RecordedActionRequest[];
|
|
67
|
+
stringsRequests(): RecordedStringsRequest[];
|
|
56
68
|
}
|
|
57
69
|
/** A composer whose screens and actions are the handlers given. */
|
|
58
70
|
export declare function createFakeGateway(handlers?: FakeGatewayHandlers): FakeGateway;
|
|
@@ -65,17 +77,50 @@ export interface InstalledFakeGateway extends FakeGateway {
|
|
|
65
77
|
* app rendered in a test). Call `restore()` after the test.
|
|
66
78
|
*/
|
|
67
79
|
export declare function installFakeGateway(handlers?: FakeGatewayHandlers): InstalledFakeGateway;
|
|
80
|
+
/** More of an island's entry: its next page's cursor (spec §4.5), and its strings (spec §4.7). */
|
|
81
|
+
export interface IslandOptions {
|
|
82
|
+
next?: string;
|
|
83
|
+
strings?: Strings;
|
|
84
|
+
}
|
|
68
85
|
/**
|
|
69
86
|
* An island in a screen or island response, typed by its generated descriptor. Give `next` for an
|
|
70
|
-
* island with more pages (spec §4.5)
|
|
87
|
+
* island with more pages (spec §4.5), or `{ next, strings }`.
|
|
71
88
|
*/
|
|
72
|
-
export declare function island<P>(key: string, descriptor: IslandDescriptor<P>, props: P,
|
|
89
|
+
export declare function island<P, S>(key: string, descriptor: IslandDescriptor<P, S>, props: P, more?: string | IslandOptions): IslandEntry<P>;
|
|
90
|
+
/** The language a screen is in, and its plural rules (spec §4.7). */
|
|
91
|
+
export interface ScreenLanguage {
|
|
92
|
+
locale: string;
|
|
93
|
+
plurals: PluralRules;
|
|
94
|
+
}
|
|
73
95
|
/** An island that failed on the composer (spec §3.4). */
|
|
74
96
|
export declare function islandError(key: string, descriptor: IslandDescriptor<unknown>, error: IslandError): IslandEntry;
|
|
75
|
-
/** A screen
|
|
76
|
-
export declare function screen(id: string, islands: IslandEntry<unknown>[], meta?: ScreenMeta): FakeResponse;
|
|
97
|
+
/** A screen, all of it at once: its stream's head with every island, then its end (spec §4.6). */
|
|
98
|
+
export declare function screen(id: string, islands: IslandEntry<unknown>[], meta?: ScreenMeta, language?: ScreenLanguage): FakeResponse;
|
|
99
|
+
/** An island still being resolved, in a streamed screen's head (spec §4.6). */
|
|
100
|
+
export declare function pending(key: string, descriptor: IslandDescriptor<unknown>): PendingIsland;
|
|
101
|
+
/** A streamed screen whose lines a test sends, so it controls when each island arrives. */
|
|
102
|
+
export interface StreamedScreen extends FakeResponse {
|
|
103
|
+
/** Sends a pending island's entry. */
|
|
104
|
+
send(entry: IslandEntry<unknown>): void;
|
|
105
|
+
/** Sends the end line. */
|
|
106
|
+
end(): void;
|
|
107
|
+
/** Ends the stream without its end line, as a dropped connection would. */
|
|
108
|
+
cut(): void;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* A screen whose head is sent at once, with its islands resolved or `pending(…)`, and whose other
|
|
112
|
+
* lines are sent when the test says (spec §4.6). Answer one request with it.
|
|
113
|
+
*
|
|
114
|
+
* const results = streamedScreen("search", [island("box", BoxV1, {}), pending("results", ResultsV1)]);
|
|
115
|
+
* // render, check the placeholder, then:
|
|
116
|
+
* results.send(island("results", ResultsV1, { items: [] }));
|
|
117
|
+
* results.end();
|
|
118
|
+
*/
|
|
119
|
+
export declare function streamedScreen(id: string, islands: (IslandEntry<unknown> | PendingIsland)[], meta?: ScreenMeta, language?: ScreenLanguage): StreamedScreen;
|
|
77
120
|
/** An island response (spec §4.5): a page of one island, or the island resolved again. */
|
|
78
121
|
export declare function islandResponse(screen: string, entry: IslandEntry<unknown>): FakeResponse;
|
|
122
|
+
/** The app strings in a language (spec §4.7), with its plural rules if its counted strings need them. */
|
|
123
|
+
export declare function stringsResponse(locale: string, strings: Strings, plurals?: PluralRules): FakeResponse;
|
|
79
124
|
/** A screen request that fails, e.g. `screenError(404, "not_found")` or `screenError(401, "unauthenticated")`. */
|
|
80
125
|
export declare function screenError(status: number, code: string): FakeResponse;
|
|
81
126
|
/** An action that succeeded, with its result typed by the descriptor. */
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// screens: { profile: () => screen("profile", [island("header", ProfileHeaderV1, { name: "Ada" })]) },
|
|
7
7
|
// actions: { follow: () => actionOk(FollowUserV1, { followers: 8 }) },
|
|
8
8
|
// islands: { "profile/posts": (r) => islandResponse("profile", island("posts", PostsV1, …, "page:3")) },
|
|
9
|
+
// strings: () => stringsResponse("en", { retry: "Try again" }),
|
|
9
10
|
// });
|
|
10
11
|
// // pass gateway.fetch as the client's fetch, then assert on gateway.actionRequests()
|
|
11
12
|
//
|
|
@@ -110,7 +111,20 @@ function asActionRequest(request) {
|
|
|
110
111
|
idempotencyKey: typeof body.idempotencyKey === "string" ? body.idempotencyKey : undefined,
|
|
111
112
|
};
|
|
112
113
|
}
|
|
114
|
+
function asStringsRequest(request) {
|
|
115
|
+
const path = request.url.split("?")[0] ?? "";
|
|
116
|
+
if (!/\/strings\/?$/.test(path) || !isRecord(request.body)) {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
return { ...request, client: clientContext(request.body.client) };
|
|
120
|
+
}
|
|
113
121
|
function respond(response) {
|
|
122
|
+
if (response.stream) {
|
|
123
|
+
return new Response(response.stream(), {
|
|
124
|
+
status: response.status,
|
|
125
|
+
headers: { "content-type": "application/jsonl" },
|
|
126
|
+
});
|
|
127
|
+
}
|
|
114
128
|
return new Response(JSON.stringify(response.body), {
|
|
115
129
|
status: response.status,
|
|
116
130
|
headers: { "content-type": "application/json" },
|
|
@@ -146,6 +160,10 @@ export function createFakeGateway(handlers = {}) {
|
|
|
146
160
|
if (actionRequest && actionHandler) {
|
|
147
161
|
return respond(actionHandler(actionRequest));
|
|
148
162
|
}
|
|
163
|
+
const stringsRequest = asStringsRequest(request);
|
|
164
|
+
if (stringsRequest && handlers.strings) {
|
|
165
|
+
return respond(handlers.strings(stringsRequest));
|
|
166
|
+
}
|
|
149
167
|
throw new Error(`fake gateway: no handler for ${request.method} ${request.url} ${JSON.stringify(request.body)}`);
|
|
150
168
|
}
|
|
151
169
|
return {
|
|
@@ -154,6 +172,7 @@ export function createFakeGateway(handlers = {}) {
|
|
|
154
172
|
screenRequests: () => requests.flatMap((r) => asScreenRequest(r) ?? []),
|
|
155
173
|
islandRequests: () => requests.flatMap((r) => asIslandRequest(r) ?? []),
|
|
156
174
|
actionRequests: () => requests.flatMap((r) => asActionRequest(r) ?? []),
|
|
175
|
+
stringsRequests: () => requests.flatMap((r) => asStringsRequest(r) ?? []),
|
|
157
176
|
};
|
|
158
177
|
}
|
|
159
178
|
/**
|
|
@@ -171,12 +190,12 @@ export function installFakeGateway(handlers = {}) {
|
|
|
171
190
|
},
|
|
172
191
|
};
|
|
173
192
|
}
|
|
174
|
-
// ---- Responses ----
|
|
175
193
|
/**
|
|
176
194
|
* An island in a screen or island response, typed by its generated descriptor. Give `next` for an
|
|
177
|
-
* island with more pages (spec §4.5)
|
|
195
|
+
* island with more pages (spec §4.5), or `{ next, strings }`.
|
|
178
196
|
*/
|
|
179
|
-
export function island(key, descriptor, props,
|
|
197
|
+
export function island(key, descriptor, props, more) {
|
|
198
|
+
const { next, strings } = typeof more === "string" ? { next: more, strings: undefined } : (more ?? {});
|
|
180
199
|
return {
|
|
181
200
|
key,
|
|
182
201
|
type: descriptor.type,
|
|
@@ -184,6 +203,7 @@ export function island(key, descriptor, props, next) {
|
|
|
184
203
|
status: "ok",
|
|
185
204
|
props,
|
|
186
205
|
...(next !== undefined && { next }),
|
|
206
|
+
...(strings !== undefined && { strings }),
|
|
187
207
|
};
|
|
188
208
|
}
|
|
189
209
|
/** An island that failed on the composer (spec §3.4). */
|
|
@@ -196,18 +216,97 @@ export function islandError(key, descriptor, error) {
|
|
|
196
216
|
error,
|
|
197
217
|
};
|
|
198
218
|
}
|
|
199
|
-
/** A screen
|
|
200
|
-
export function screen(id, islands, meta) {
|
|
219
|
+
/** A screen, all of it at once: its stream's head with every island, then its end (spec §4.6). */
|
|
220
|
+
export function screen(id, islands, meta, language) {
|
|
221
|
+
const head = {
|
|
222
|
+
kind: "head",
|
|
223
|
+
protocol: PROTOCOL_VERSION,
|
|
224
|
+
screen: id,
|
|
225
|
+
islands,
|
|
226
|
+
...(meta && { meta }),
|
|
227
|
+
...language,
|
|
228
|
+
};
|
|
201
229
|
return {
|
|
202
230
|
status: 200,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
231
|
+
stream: () => linesStream([head, { kind: "end" }]),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/** An island still being resolved, in a streamed screen's head (spec §4.6). */
|
|
235
|
+
export function pending(key, descriptor) {
|
|
236
|
+
return {
|
|
237
|
+
key,
|
|
238
|
+
type: descriptor.type,
|
|
239
|
+
version: descriptor.version,
|
|
240
|
+
status: "pending",
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* A screen whose head is sent at once, with its islands resolved or `pending(…)`, and whose other
|
|
245
|
+
* lines are sent when the test says (spec §4.6). Answer one request with it.
|
|
246
|
+
*
|
|
247
|
+
* const results = streamedScreen("search", [island("box", BoxV1, {}), pending("results", ResultsV1)]);
|
|
248
|
+
* // render, check the placeholder, then:
|
|
249
|
+
* results.send(island("results", ResultsV1, { items: [] }));
|
|
250
|
+
* results.end();
|
|
251
|
+
*/
|
|
252
|
+
export function streamedScreen(id, islands, meta, language) {
|
|
253
|
+
const encoder = new TextEncoder();
|
|
254
|
+
const queued = [];
|
|
255
|
+
let controller;
|
|
256
|
+
let closed = false;
|
|
257
|
+
const write = (line) => {
|
|
258
|
+
const text = `${JSON.stringify(line)}\n`;
|
|
259
|
+
if (controller) {
|
|
260
|
+
controller.enqueue(encoder.encode(text));
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
queued.push(text);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
const close = () => {
|
|
267
|
+
closed = true;
|
|
268
|
+
controller?.close();
|
|
269
|
+
};
|
|
270
|
+
write({
|
|
271
|
+
kind: "head",
|
|
272
|
+
protocol: PROTOCOL_VERSION,
|
|
273
|
+
screen: id,
|
|
274
|
+
islands,
|
|
275
|
+
...(meta && { meta }),
|
|
276
|
+
...language,
|
|
277
|
+
});
|
|
278
|
+
return {
|
|
279
|
+
status: 200,
|
|
280
|
+
stream: () => new ReadableStream({
|
|
281
|
+
start(c) {
|
|
282
|
+
controller = c;
|
|
283
|
+
for (const text of queued.splice(0)) {
|
|
284
|
+
c.enqueue(encoder.encode(text));
|
|
285
|
+
}
|
|
286
|
+
if (closed) {
|
|
287
|
+
c.close();
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
}),
|
|
291
|
+
send: (entry) => write({ kind: "island", island: entry }),
|
|
292
|
+
end: () => {
|
|
293
|
+
write({ kind: "end" });
|
|
294
|
+
close();
|
|
208
295
|
},
|
|
296
|
+
cut: close,
|
|
209
297
|
};
|
|
210
298
|
}
|
|
299
|
+
function linesStream(lines) {
|
|
300
|
+
const encoder = new TextEncoder();
|
|
301
|
+
return new ReadableStream({
|
|
302
|
+
start(controller) {
|
|
303
|
+
for (const line of lines) {
|
|
304
|
+
controller.enqueue(encoder.encode(`${JSON.stringify(line)}\n`));
|
|
305
|
+
}
|
|
306
|
+
controller.close();
|
|
307
|
+
},
|
|
308
|
+
});
|
|
309
|
+
}
|
|
211
310
|
/** An island response (spec §4.5): a page of one island, or the island resolved again. */
|
|
212
311
|
export function islandResponse(screen, entry) {
|
|
213
312
|
return {
|
|
@@ -219,6 +318,18 @@ export function islandResponse(screen, entry) {
|
|
|
219
318
|
},
|
|
220
319
|
};
|
|
221
320
|
}
|
|
321
|
+
/** The app strings in a language (spec §4.7), with its plural rules if its counted strings need them. */
|
|
322
|
+
export function stringsResponse(locale, strings, plurals = {}) {
|
|
323
|
+
return {
|
|
324
|
+
status: 200,
|
|
325
|
+
body: {
|
|
326
|
+
protocol: PROTOCOL_VERSION,
|
|
327
|
+
locale,
|
|
328
|
+
plurals,
|
|
329
|
+
strings,
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
222
333
|
/** A screen request that fails, e.g. `screenError(404, "not_found")` or `screenError(401, "unauthenticated")`. */
|
|
223
334
|
export function screenError(status, code) {
|
|
224
335
|
return { status, body: { protocol: PROTOCOL_VERSION, error: { code } } };
|
package/dist/testing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@client-compose/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Framework-agnostic Client Compose client: island registry, screen requests and render planning.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"client-compose",
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"LICENSE"
|
|
45
45
|
],
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@client-compose/protocol": "0.
|
|
47
|
+
"@client-compose/protocol": "0.6.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@client-compose/conformance": "0.
|
|
50
|
+
"@client-compose/conformance": "0.9.0"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|