@navipartner/demo-video 0.0.0-stage → 0.4.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.
@@ -0,0 +1,255 @@
1
+ import { D as DemoAdapter } from './adapter-CWqMoNdw.js';
2
+ export { B as Brand, C as CardSpec, a as DemoAction, b as DirectorApi, T as Target, V as VideoBrand, d as defineAction, c as defineDemo } from './adapter-CWqMoNdw.js';
3
+ import { Page } from '@playwright/test';
4
+ import { z } from 'zod';
5
+ export { z } from 'zod';
6
+
7
+ interface Overlay {
8
+ /** Regex source matched against the request's pathname. */
9
+ path: string;
10
+ /**
11
+ * Where to merge, as dot-separated keys from the response root; `*` merges
12
+ * into every element of an array. Omitted = the root object.
13
+ */
14
+ at?: string;
15
+ values: Record<string, unknown>;
16
+ }
17
+ declare const overlayResponse: (page: Page, overlay: Overlay) => Promise<void>;
18
+
19
+ declare const coreStepSchemas: readonly [z.ZodObject<{
20
+ zoom: z.ZodOptional<z.ZodNumber>;
21
+ target: z.ZodString;
22
+ nth: z.ZodOptional<z.ZodNumber>;
23
+ do: z.ZodLiteral<"click">;
24
+ }, "strict", z.ZodTypeAny, {
25
+ do: "click";
26
+ target: string;
27
+ zoom?: number | undefined;
28
+ nth?: number | undefined;
29
+ }, {
30
+ do: "click";
31
+ target: string;
32
+ zoom?: number | undefined;
33
+ nth?: number | undefined;
34
+ }>, z.ZodObject<{
35
+ text: z.ZodString;
36
+ perCharMs: z.ZodOptional<z.ZodNumber>;
37
+ target: z.ZodString;
38
+ nth: z.ZodOptional<z.ZodNumber>;
39
+ do: z.ZodLiteral<"type">;
40
+ }, "strict", z.ZodTypeAny, {
41
+ text: string;
42
+ do: "type";
43
+ target: string;
44
+ nth?: number | undefined;
45
+ perCharMs?: number | undefined;
46
+ }, {
47
+ text: string;
48
+ do: "type";
49
+ target: string;
50
+ nth?: number | undefined;
51
+ perCharMs?: number | undefined;
52
+ }>, z.ZodObject<{
53
+ do: z.ZodLiteral<"press">;
54
+ key: z.ZodString;
55
+ }, "strict", z.ZodTypeAny, {
56
+ key: string;
57
+ do: "press";
58
+ }, {
59
+ key: string;
60
+ do: "press";
61
+ }>, z.ZodObject<{
62
+ scale: z.ZodDefault<z.ZodNumber>;
63
+ target: z.ZodString;
64
+ nth: z.ZodOptional<z.ZodNumber>;
65
+ do: z.ZodLiteral<"zoom">;
66
+ }, "strict", z.ZodTypeAny, {
67
+ do: "zoom";
68
+ target: string;
69
+ scale: number;
70
+ nth?: number | undefined;
71
+ }, {
72
+ do: "zoom";
73
+ target: string;
74
+ nth?: number | undefined;
75
+ scale?: number | undefined;
76
+ }>, z.ZodObject<{
77
+ do: z.ZodLiteral<"frame">;
78
+ targets: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
79
+ target: z.ZodString;
80
+ nth: z.ZodOptional<z.ZodNumber>;
81
+ }, "strict", z.ZodTypeAny, {
82
+ target: string;
83
+ nth?: number | undefined;
84
+ }, {
85
+ target: string;
86
+ nth?: number | undefined;
87
+ }>]>, "many">;
88
+ maxScale: z.ZodOptional<z.ZodNumber>;
89
+ }, "strict", z.ZodTypeAny, {
90
+ do: "frame";
91
+ targets: (string | {
92
+ target: string;
93
+ nth?: number | undefined;
94
+ })[];
95
+ maxScale?: number | undefined;
96
+ }, {
97
+ do: "frame";
98
+ targets: (string | {
99
+ target: string;
100
+ nth?: number | undefined;
101
+ })[];
102
+ maxScale?: number | undefined;
103
+ }>, z.ZodObject<{
104
+ do: z.ZodLiteral<"zoomOut">;
105
+ park: z.ZodOptional<z.ZodBoolean>;
106
+ }, "strict", z.ZodTypeAny, {
107
+ do: "zoomOut";
108
+ park?: boolean | undefined;
109
+ }, {
110
+ do: "zoomOut";
111
+ park?: boolean | undefined;
112
+ }>, z.ZodObject<{
113
+ do: z.ZodLiteral<"park">;
114
+ }, "strict", z.ZodTypeAny, {
115
+ do: "park";
116
+ }, {
117
+ do: "park";
118
+ }>, z.ZodObject<{
119
+ hidden: z.ZodOptional<z.ZodBoolean>;
120
+ timeout: z.ZodDefault<z.ZodNumber>;
121
+ target: z.ZodString;
122
+ nth: z.ZodOptional<z.ZodNumber>;
123
+ do: z.ZodLiteral<"waitFor">;
124
+ }, "strict", z.ZodTypeAny, {
125
+ do: "waitFor";
126
+ target: string;
127
+ timeout: number;
128
+ nth?: number | undefined;
129
+ hidden?: boolean | undefined;
130
+ }, {
131
+ do: "waitFor";
132
+ target: string;
133
+ nth?: number | undefined;
134
+ hidden?: boolean | undefined;
135
+ timeout?: number | undefined;
136
+ }>, z.ZodObject<{
137
+ text: z.ZodString;
138
+ contains: z.ZodOptional<z.ZodBoolean>;
139
+ timeout: z.ZodDefault<z.ZodNumber>;
140
+ target: z.ZodString;
141
+ nth: z.ZodOptional<z.ZodNumber>;
142
+ do: z.ZodLiteral<"expectText">;
143
+ }, "strict", z.ZodTypeAny, {
144
+ text: string;
145
+ do: "expectText";
146
+ target: string;
147
+ timeout: number;
148
+ nth?: number | undefined;
149
+ contains?: boolean | undefined;
150
+ }, {
151
+ text: string;
152
+ do: "expectText";
153
+ target: string;
154
+ nth?: number | undefined;
155
+ timeout?: number | undefined;
156
+ contains?: boolean | undefined;
157
+ }>, z.ZodObject<{
158
+ eyebrow: z.ZodOptional<z.ZodString>;
159
+ heading: z.ZodOptional<z.ZodString>;
160
+ sub: z.ZodOptional<z.ZodString>;
161
+ /** Show the brand's logo (open and end cards). */
162
+ logo: z.ZodOptional<z.ZodBoolean>;
163
+ /** "pale" = brand-tinted white; "brand" = full-bleed primary colour. */
164
+ style: z.ZodDefault<z.ZodEnum<["pale", "brand"]>>;
165
+ seconds: z.ZodDefault<z.ZodNumber>;
166
+ do: z.ZodLiteral<"card">;
167
+ }, "strict", z.ZodTypeAny, {
168
+ do: "card";
169
+ style: "pale" | "brand";
170
+ seconds: number;
171
+ logo?: boolean | undefined;
172
+ sub?: string | undefined;
173
+ eyebrow?: string | undefined;
174
+ heading?: string | undefined;
175
+ }, {
176
+ do: "card";
177
+ logo?: boolean | undefined;
178
+ sub?: string | undefined;
179
+ eyebrow?: string | undefined;
180
+ heading?: string | undefined;
181
+ style?: "pale" | "brand" | undefined;
182
+ seconds?: number | undefined;
183
+ }>, z.ZodObject<{
184
+ do: z.ZodLiteral<"hold">;
185
+ seconds: z.ZodNumber;
186
+ }, "strict", z.ZodTypeAny, {
187
+ do: "hold";
188
+ seconds: number;
189
+ }, {
190
+ do: "hold";
191
+ seconds: number;
192
+ }>];
193
+ type CoreStep = z.infer<(typeof coreStepSchemas)[number]>;
194
+ type ActionStep = {
195
+ do: string;
196
+ } & Record<string, unknown>;
197
+ type Step = CoreStep | ActionStep;
198
+ declare const cardSchema: z.ZodEffects<z.ZodObject<{
199
+ eyebrow: z.ZodOptional<z.ZodString>;
200
+ heading: z.ZodOptional<z.ZodString>;
201
+ sub: z.ZodOptional<z.ZodString>;
202
+ /** Show the brand's logo (open and end cards). */
203
+ logo: z.ZodOptional<z.ZodBoolean>;
204
+ /** "pale" = brand-tinted white; "brand" = full-bleed primary colour. */
205
+ style: z.ZodDefault<z.ZodEnum<["pale", "brand"]>>;
206
+ seconds: z.ZodDefault<z.ZodNumber>;
207
+ }, "strict", z.ZodTypeAny, {
208
+ style: "pale" | "brand";
209
+ seconds: number;
210
+ logo?: boolean | undefined;
211
+ sub?: string | undefined;
212
+ eyebrow?: string | undefined;
213
+ heading?: string | undefined;
214
+ }, {
215
+ logo?: boolean | undefined;
216
+ sub?: string | undefined;
217
+ eyebrow?: string | undefined;
218
+ heading?: string | undefined;
219
+ style?: "pale" | "brand" | undefined;
220
+ seconds?: number | undefined;
221
+ }>, {
222
+ style: "pale" | "brand";
223
+ seconds: number;
224
+ logo?: boolean | undefined;
225
+ sub?: string | undefined;
226
+ eyebrow?: string | undefined;
227
+ heading?: string | undefined;
228
+ }, {
229
+ logo?: boolean | undefined;
230
+ sub?: string | undefined;
231
+ eyebrow?: string | undefined;
232
+ heading?: string | undefined;
233
+ style?: "pale" | "brand" | undefined;
234
+ seconds?: number | undefined;
235
+ }>;
236
+ type Card = z.infer<typeof cardSchema>;
237
+ interface Storyboard {
238
+ app: string;
239
+ /** A variant's brand (see loadStoryboard): it is filmed with this one only. */
240
+ brand?: string;
241
+ /** The story a variant extends. */
242
+ variantOf?: string;
243
+ /** What the story shows, for people (and the Linear agent) choosing one. */
244
+ description?: string;
245
+ /** The app's primary journey: the story filmed when none is named. One per app. */
246
+ primary?: boolean;
247
+ title?: Card;
248
+ closing?: Card;
249
+ steps: Step[];
250
+ }
251
+ declare class StoryboardError extends Error {
252
+ }
253
+ declare const parseStoryboard: (raw: unknown, adapter: Pick<DemoAdapter, "app" | "actions">, source?: string) => Storyboard;
254
+
255
+ export { type Card, DemoAdapter, type Overlay, type Step, type Storyboard, StoryboardError, overlayResponse, parseStoryboard };
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ import {
2
+ StoryboardError,
3
+ parseStoryboard
4
+ } from "./chunk-BYAFDWPA.js";
5
+
6
+ // src/adapter.ts
7
+ var defineDemo = (adapter) => adapter;
8
+ var defineAction = (action) => action;
9
+
10
+ // src/overlay.ts
11
+ var overlayResponse = async (page, overlay) => {
12
+ await page.addInitScript(({ path, at, values }) => {
13
+ const pattern = new RegExp(path);
14
+ const merge = (node, keys) => {
15
+ if (node === null || typeof node !== "object") {
16
+ return;
17
+ }
18
+ const [key, ...rest] = keys;
19
+ if (key === void 0) {
20
+ Object.assign(node, values);
21
+ } else if (key === "*" && Array.isArray(node)) {
22
+ node.forEach((item) => merge(item, rest));
23
+ } else {
24
+ merge(node[key], rest);
25
+ }
26
+ };
27
+ const original = window.fetch.bind(window);
28
+ window.fetch = async (input, init) => {
29
+ const response = await original(input, init);
30
+ const url = new URL(
31
+ input instanceof Request ? input.url : String(input),
32
+ location.href
33
+ );
34
+ if (!pattern.test(url.pathname) || !response.ok) {
35
+ return response;
36
+ }
37
+ const body = await response.clone().json();
38
+ merge(body, at ? at.split(".") : []);
39
+ return new Response(JSON.stringify(body), {
40
+ status: response.status,
41
+ headers: response.headers
42
+ });
43
+ };
44
+ }, overlay);
45
+ };
46
+
47
+ // src/index.ts
48
+ import { z } from "zod";
49
+ export {
50
+ StoryboardError,
51
+ defineAction,
52
+ defineDemo,
53
+ overlayResponse,
54
+ parseStoryboard,
55
+ z
56
+ };
@@ -0,0 +1,23 @@
1
+ import { PlaywrightTestConfig, Page } from '@playwright/test';
2
+ import { D as DemoAdapter } from '../adapter-CWqMoNdw.js';
3
+ import 'zod';
4
+
5
+ /**
6
+ * The Playwright config for an app's demo. A plain object, so it needs no
7
+ * `defineConfig` and loads no Playwright of its own. `demoDir` is the app's
8
+ * demo/ folder; `runnerDir` holds the spec the CLI generated.
9
+ */
10
+ declare const createDemoConfig: (adapter: DemoAdapter, demoDir: string, runnerDir: string) => PlaywrightTestConfig;
11
+
12
+ /** The app's own Playwright `test`, passed in so only one Playwright loads. */
13
+ type DemoTest = (title: string, body: (args: {
14
+ page: Page;
15
+ }) => Promise<void>) => void;
16
+ /**
17
+ * Registers the one "test" that performs a story: a dry run in check mode, a
18
+ * recording otherwise. Called from the spec the CLI generates, with the app's
19
+ * own `test` and the app's demo/ folder.
20
+ */
21
+ declare const registerDemoTests: (test: DemoTest, adapter: DemoAdapter, demoDir: string) => void;
22
+
23
+ export { type DemoTest, createDemoConfig, registerDemoTests };