executable-stories-showcase 0.0.0-stage → 0.0.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.
Files changed (67) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +17 -2
  3. package/dist/adapters/cookies.d.ts +11 -0
  4. package/dist/adapters/cookies.js +27 -0
  5. package/dist/adapters/cookies.js.map +1 -0
  6. package/dist/adapters/redux.d.ts +23 -0
  7. package/dist/adapters/redux.js +28 -0
  8. package/dist/adapters/redux.js.map +1 -0
  9. package/dist/adapters/tanstack-query.d.ts +17 -0
  10. package/dist/adapters/tanstack-query.js +43 -0
  11. package/dist/adapters/tanstack-query.js.map +1 -0
  12. package/dist/adapters/xstate.d.ts +33 -0
  13. package/dist/adapters/xstate.js +36 -0
  14. package/dist/adapters/xstate.js.map +1 -0
  15. package/dist/adapters/zustand.d.ts +17 -0
  16. package/dist/adapters/zustand.js +16 -0
  17. package/dist/adapters/zustand.js.map +1 -0
  18. package/dist/capture-GCESXDQD.js +10 -0
  19. package/dist/capture-GCESXDQD.js.map +1 -0
  20. package/dist/capture.d.ts +26 -0
  21. package/dist/catalog.d.ts +27 -0
  22. package/dist/chunk-7VEOUHJP.js +40 -0
  23. package/dist/chunk-7VEOUHJP.js.map +1 -0
  24. package/dist/chunk-BK4EEQXV.js +98 -0
  25. package/dist/chunk-BK4EEQXV.js.map +1 -0
  26. package/dist/chunk-MCC3CAWQ.js +208 -0
  27. package/dist/chunk-MCC3CAWQ.js.map +1 -0
  28. package/dist/chunk-PKGBYTBX.js +46 -0
  29. package/dist/chunk-PKGBYTBX.js.map +1 -0
  30. package/dist/chunk-QDLRQPTA.js +125 -0
  31. package/dist/chunk-QDLRQPTA.js.map +1 -0
  32. package/dist/chunk-XLNYICOI.js +234 -0
  33. package/dist/chunk-XLNYICOI.js.map +1 -0
  34. package/dist/chunk-Z664X6AQ.js +148 -0
  35. package/dist/chunk-Z664X6AQ.js.map +1 -0
  36. package/dist/index.d.ts +9 -0
  37. package/dist/index.js +531 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/jwt.d.ts +7 -0
  40. package/dist/link.d.ts +32 -0
  41. package/dist/network-4UFPO74C.js +7 -0
  42. package/dist/network-4UFPO74C.js.map +1 -0
  43. package/dist/network.d.ts +3 -0
  44. package/dist/next.d.ts +21 -0
  45. package/dist/next.js +30 -0
  46. package/dist/next.js.map +1 -0
  47. package/dist/no-msw-browser.d.ts +2 -0
  48. package/dist/no-msw-browser.js +8 -0
  49. package/dist/no-msw-browser.js.map +1 -0
  50. package/dist/panel.d.ts +30 -0
  51. package/dist/panel.js +608 -0
  52. package/dist/panel.js.map +1 -0
  53. package/dist/playwright.d.ts +31 -0
  54. package/dist/playwright.js +92 -0
  55. package/dist/playwright.js.map +1 -0
  56. package/dist/ready-4MENAMNI.js +13 -0
  57. package/dist/ready-4MENAMNI.js.map +1 -0
  58. package/dist/ready.d.ts +39 -0
  59. package/dist/record.d.ts +49 -0
  60. package/dist/redact.d.ts +19 -0
  61. package/dist/runtime.d.ts +191 -0
  62. package/dist/save.d.ts +27 -0
  63. package/dist/schema.d.ts +161 -0
  64. package/dist/vite.d.ts +11 -0
  65. package/dist/vite.js +26 -0
  66. package/dist/vite.js.map +1 -0
  67. package/package.json +118 -3
@@ -0,0 +1,161 @@
1
+ import { z } from 'zod';
2
+ /** Scenarios live in JSON files and URLs, so everything they carry is JSON. */
3
+ export declare const JsonSchema: z.ZodJSONSchema;
4
+ export type Json = z.output<typeof JsonSchema>;
5
+ export type JsonObject = {
6
+ [key: string]: Json;
7
+ };
8
+ /** Anything an app can hand over to be stored as JSON. */
9
+ export type Serializable = object | string | number | boolean | null;
10
+ /**
11
+ * Decode JSON text. Pair with `JSON.stringify` to copy app state into the format scenarios
12
+ * are stored in: functions and undefined drop out, and the result is checked to be JSON.
13
+ */
14
+ export declare const parseJson: (text: string) => Json;
15
+ export declare const MethodSchema: z.ZodEnum<{
16
+ GET: "GET";
17
+ POST: "POST";
18
+ PUT: "PUT";
19
+ PATCH: "PATCH";
20
+ DELETE: "DELETE";
21
+ HEAD: "HEAD";
22
+ OPTIONS: "OPTIONS";
23
+ }>;
24
+ declare const ResponseSchema: z.ZodObject<{
25
+ status: z.ZodDefault<z.ZodNumber>;
26
+ body: z.ZodOptional<z.ZodJSONSchema>;
27
+ text: z.ZodOptional<z.ZodString>;
28
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
29
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
30
+ }, z.core.$strip>;
31
+ declare const NetworkEntrySchema: z.ZodObject<{
32
+ method: z.ZodDefault<z.ZodEnum<{
33
+ GET: "GET";
34
+ POST: "POST";
35
+ PUT: "PUT";
36
+ PATCH: "PATCH";
37
+ DELETE: "DELETE";
38
+ HEAD: "HEAD";
39
+ OPTIONS: "OPTIONS";
40
+ }>>;
41
+ path: z.ZodString;
42
+ query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
43
+ response: z.ZodOptional<z.ZodObject<{
44
+ status: z.ZodDefault<z.ZodNumber>;
45
+ body: z.ZodOptional<z.ZodJSONSchema>;
46
+ text: z.ZodOptional<z.ZodString>;
47
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
48
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
49
+ }, z.core.$strip>>;
50
+ sequence: z.ZodOptional<z.ZodArray<z.ZodObject<{
51
+ status: z.ZodDefault<z.ZodNumber>;
52
+ body: z.ZodOptional<z.ZodJSONSchema>;
53
+ text: z.ZodOptional<z.ZodString>;
54
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
55
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
56
+ }, z.core.$strip>>>;
57
+ remove: z.ZodOptional<z.ZodLiteral<true>>;
58
+ }, z.core.$strip>;
59
+ export declare const ScenarioSchema: z.ZodObject<{
60
+ $schema: z.ZodOptional<z.ZodString>;
61
+ name: z.ZodString;
62
+ description: z.ZodOptional<z.ZodString>;
63
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
+ extends: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
65
+ path: z.ZodOptional<z.ZodString>;
66
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodString>>>;
67
+ network: z.ZodOptional<z.ZodArray<z.ZodObject<{
68
+ method: z.ZodDefault<z.ZodEnum<{
69
+ GET: "GET";
70
+ POST: "POST";
71
+ PUT: "PUT";
72
+ PATCH: "PATCH";
73
+ DELETE: "DELETE";
74
+ HEAD: "HEAD";
75
+ OPTIONS: "OPTIONS";
76
+ }>>;
77
+ path: z.ZodString;
78
+ query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
79
+ response: z.ZodOptional<z.ZodObject<{
80
+ status: z.ZodDefault<z.ZodNumber>;
81
+ body: z.ZodOptional<z.ZodJSONSchema>;
82
+ text: z.ZodOptional<z.ZodString>;
83
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
84
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
85
+ }, z.core.$strip>>;
86
+ sequence: z.ZodOptional<z.ZodArray<z.ZodObject<{
87
+ status: z.ZodDefault<z.ZodNumber>;
88
+ body: z.ZodOptional<z.ZodJSONSchema>;
89
+ text: z.ZodOptional<z.ZodString>;
90
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
91
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
92
+ }, z.core.$strip>>>;
93
+ remove: z.ZodOptional<z.ZodLiteral<true>>;
94
+ }, z.core.$strip>>>;
95
+ handlers: z.ZodOptional<z.ZodArray<z.ZodString>>;
96
+ state: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
97
+ ready: z.ZodOptional<z.ZodString>;
98
+ viewport: z.ZodOptional<z.ZodObject<{
99
+ width: z.ZodNumber;
100
+ height: z.ZodNumber;
101
+ }, z.core.$strip>>;
102
+ }, z.core.$strip>;
103
+ export type Scenario = z.output<typeof ScenarioSchema>;
104
+ export type ScenarioInput = z.input<typeof ScenarioSchema>;
105
+ export type NetworkEntry = z.output<typeof NetworkEntrySchema>;
106
+ export type ScenarioResponse = z.output<typeof ResponseSchema>;
107
+ /**
108
+ * JSON Schema for editors, validators and AI generators.
109
+ * Pass adapter state schemas so `state` is described too.
110
+ */
111
+ export declare function scenarioJsonSchema({ state }?: {
112
+ state?: Record<string, z.ZodType>;
113
+ }): z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
114
+ $schema: z.ZodOptional<z.ZodString>;
115
+ name: z.ZodString;
116
+ description: z.ZodOptional<z.ZodString>;
117
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
118
+ extends: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
119
+ path: z.ZodOptional<z.ZodString>;
120
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNullable<z.ZodString>>>;
121
+ network: z.ZodOptional<z.ZodArray<z.ZodObject<{
122
+ method: z.ZodDefault<z.ZodEnum<{
123
+ GET: "GET";
124
+ POST: "POST";
125
+ PUT: "PUT";
126
+ PATCH: "PATCH";
127
+ DELETE: "DELETE";
128
+ HEAD: "HEAD";
129
+ OPTIONS: "OPTIONS";
130
+ }>>;
131
+ path: z.ZodString;
132
+ query: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
133
+ response: z.ZodOptional<z.ZodObject<{
134
+ status: z.ZodDefault<z.ZodNumber>;
135
+ body: z.ZodOptional<z.ZodJSONSchema>;
136
+ text: z.ZodOptional<z.ZodString>;
137
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
138
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
139
+ }, z.core.$strip>>;
140
+ sequence: z.ZodOptional<z.ZodArray<z.ZodObject<{
141
+ status: z.ZodDefault<z.ZodNumber>;
142
+ body: z.ZodOptional<z.ZodJSONSchema>;
143
+ text: z.ZodOptional<z.ZodString>;
144
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
145
+ delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"infinite">]>>;
146
+ }, z.core.$strip>>>;
147
+ remove: z.ZodOptional<z.ZodLiteral<true>>;
148
+ }, z.core.$strip>>>;
149
+ handlers: z.ZodOptional<z.ZodArray<z.ZodString>>;
150
+ ready: z.ZodOptional<z.ZodString>;
151
+ viewport: z.ZodOptional<z.ZodObject<{
152
+ width: z.ZodNumber;
153
+ height: z.ZodNumber;
154
+ }, z.core.$strip>>;
155
+ state: z.ZodOptional<z.ZodObject<{
156
+ [x: string]: z.ZodOptional<z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
157
+ }, z.core.$catchall<z.ZodJSONSchema>>>;
158
+ }, z.core.$strip>>;
159
+ /** Validate scenario input (from a file, URL or editor) into a Scenario, with readable errors. */
160
+ export declare function parseScenario(data: ScenarioInput, source?: string): Scenario;
161
+ export {};
package/dist/vite.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Plugin } from 'vite';
2
+ export { SAVE_ENDPOINT } from './link.js';
3
+ export interface ExecutableStoriesShowcasePluginOptions {
4
+ /** Folder the panel's "Save to project" writes into, relative to the Vite root. Default "src/scenarios". */
5
+ dir?: string;
6
+ }
7
+ /**
8
+ * Dev-server plugin: lets the panel save a captured scenario straight into the project
9
+ * instead of the Downloads folder. Only runs under `vite dev`, and only for this machine.
10
+ */
11
+ export declare function executableStoriesShowcase({ dir }?: ExecutableStoriesShowcasePluginOptions): Plugin;
package/dist/vite.js ADDED
@@ -0,0 +1,26 @@
1
+ import {
2
+ createSaveHandler
3
+ } from "./chunk-Z664X6AQ.js";
4
+ import {
5
+ SAVE_ENDPOINT
6
+ } from "./chunk-PKGBYTBX.js";
7
+ import "./chunk-BK4EEQXV.js";
8
+
9
+ // src/vite.ts
10
+ import { resolve } from "path";
11
+ function executableStoriesShowcase({ dir = "src/scenarios" } = {}) {
12
+ return {
13
+ name: "executable-stories-showcase",
14
+ apply: "serve",
15
+ configureServer(server) {
16
+ const root = server.config.root;
17
+ const handler = createSaveHandler({ dir: resolve(root, dir), root });
18
+ server.middlewares.use(SAVE_ENDPOINT, (req, res) => void handler(req, res));
19
+ }
20
+ };
21
+ }
22
+ export {
23
+ SAVE_ENDPOINT,
24
+ executableStoriesShowcase
25
+ };
26
+ //# sourceMappingURL=vite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vite.ts"],"sourcesContent":["import { resolve } from 'node:path';\nimport type { Plugin } from 'vite';\nimport { SAVE_ENDPOINT } from './link.js';\nimport { createSaveHandler } from './save.js';\n\nexport { SAVE_ENDPOINT } from './link.js';\n\nexport interface ExecutableStoriesShowcasePluginOptions {\n /** Folder the panel's \"Save to project\" writes into, relative to the Vite root. Default \"src/scenarios\". */\n dir?: string;\n}\n\n/**\n * Dev-server plugin: lets the panel save a captured scenario straight into the project\n * instead of the Downloads folder. Only runs under `vite dev`, and only for this machine.\n */\nexport function executableStoriesShowcase({ dir = 'src/scenarios' }: ExecutableStoriesShowcasePluginOptions = {}): Plugin {\n return {\n name: 'executable-stories-showcase',\n apply: 'serve',\n configureServer(server) {\n const root = server.config.root;\n const handler = createSaveHandler({ dir: resolve(root, dir), root });\n server.middlewares.use(SAVE_ENDPOINT, (req, res) => void handler(req, res));\n },\n };\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,eAAe;AAgBjB,SAAS,0BAA0B,EAAE,MAAM,gBAAgB,IAA4C,CAAC,GAAW;AACxH,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,IACP,gBAAgB,QAAQ;AACtB,YAAM,OAAO,OAAO,OAAO;AAC3B,YAAM,UAAU,kBAAkB,EAAE,KAAK,QAAQ,MAAM,GAAG,GAAG,KAAK,CAAC;AACnE,aAAO,YAAY,IAAI,eAAe,CAAC,KAAK,QAAQ,KAAK,QAAQ,KAAK,GAAG,CAAC;AAAA,IAC5E;AAAA,EACF;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,121 @@
1
1
  {
2
2
  "name": "executable-stories-showcase",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.0.0",
4
+ "description": "Put a running app into any state from a URL: shareable JSON scenarios for network, URL and app state, with a dev panel, Playwright helpers and adapters.",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/jagreehal/executable-stories.git",
9
+ "directory": "packages/executable-stories-showcase"
10
+ },
11
+ "type": "module",
12
+ "files": [
13
+ "dist",
14
+ "LICENSE"
15
+ ],
16
+ "sideEffects": false,
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "source": "./src/index.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./panel": {
24
+ "types": "./dist/panel.d.ts",
25
+ "source": "./src/panel.ts",
26
+ "import": "./dist/panel.js"
27
+ },
28
+ "./playwright": {
29
+ "types": "./dist/playwright.d.ts",
30
+ "source": "./src/playwright.ts",
31
+ "import": "./dist/playwright.js"
32
+ },
33
+ "./vite": {
34
+ "types": "./dist/vite.d.ts",
35
+ "source": "./src/vite.ts",
36
+ "import": "./dist/vite.js"
37
+ },
38
+ "./next": {
39
+ "types": "./dist/next.d.ts",
40
+ "source": "./src/next.ts",
41
+ "import": "./dist/next.js"
42
+ },
43
+ "./tanstack-query": {
44
+ "types": "./dist/adapters/tanstack-query.d.ts",
45
+ "source": "./src/adapters/tanstack-query.ts",
46
+ "import": "./dist/adapters/tanstack-query.js"
47
+ },
48
+ "./zustand": {
49
+ "types": "./dist/adapters/zustand.d.ts",
50
+ "source": "./src/adapters/zustand.ts",
51
+ "import": "./dist/adapters/zustand.js"
52
+ },
53
+ "./redux": {
54
+ "types": "./dist/adapters/redux.d.ts",
55
+ "source": "./src/adapters/redux.ts",
56
+ "import": "./dist/adapters/redux.js"
57
+ },
58
+ "./xstate": {
59
+ "types": "./dist/adapters/xstate.d.ts",
60
+ "source": "./src/adapters/xstate.ts",
61
+ "import": "./dist/adapters/xstate.js"
62
+ },
63
+ "./cookies": {
64
+ "types": "./dist/adapters/cookies.d.ts",
65
+ "source": "./src/adapters/cookies.ts",
66
+ "import": "./dist/adapters/cookies.js"
67
+ }
68
+ },
69
+ "imports": {
70
+ "#msw-browser": {
71
+ "node": {
72
+ "source": "./src/no-msw-browser.ts",
73
+ "default": "./dist/no-msw-browser.js"
74
+ },
75
+ "default": "msw/browser"
76
+ }
77
+ },
78
+ "publishConfig": {
79
+ "access": "public"
80
+ },
81
+ "peerDependencies": {
82
+ "msw": "^2.4.0 || ^3.0.0",
83
+ "zod": "^4.1.0",
84
+ "@playwright/test": ">=1.40",
85
+ "@tanstack/react-query": ">=5",
86
+ "vite": ">=5"
87
+ },
88
+ "peerDependenciesMeta": {
89
+ "msw": {
90
+ "optional": true
91
+ },
92
+ "@playwright/test": {
93
+ "optional": true
94
+ },
95
+ "@tanstack/react-query": {
96
+ "optional": true
97
+ },
98
+ "vite": {
99
+ "optional": true
100
+ }
101
+ },
102
+ "devDependencies": {
103
+ "@playwright/test": "1.63.0",
104
+ "@tanstack/react-query": "5.104.1",
105
+ "msw": "3.0.2",
106
+ "tsup": "^8.5.1",
107
+ "typescript": "~6.0.3",
108
+ "vite": "8.3.2",
109
+ "zod": "4.6.5",
110
+ "eslint-config-executable-stories": "0.2.0"
111
+ },
112
+ "engines": {
113
+ "node": ">=22.12.0"
114
+ },
115
+ "scripts": {
116
+ "build": "tsup && tsc -p tsconfig.json --noEmit false --declaration --emitDeclarationOnly --outDir dist",
117
+ "dev": "tsup --watch",
118
+ "type-check": "tsc --noEmit",
119
+ "lint": "eslint ."
120
+ }
6
121
  }