@design.estate/wcctools 6.1.0 → 6.2.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/changelog.md +20 -0
- package/dist_shell/bundle.js +405 -368
- package/dist_shell/bundle.js.map +1 -1
- package/dist_shell/bundle.js.third-party-notices.json +52 -0
- package/dist_shell/bundle.js.third-party-notices.txt +107 -1
- package/dist_shell/index.html +1 -1
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/classes.bundlestatus.d.ts +36 -0
- package/dist_ts/classes.bundlestatus.js +110 -0
- package/dist_ts/classes.devapi.d.ts +3 -0
- package/dist_ts/classes.devapi.js +8 -1
- package/dist_ts/classes.devserver.d.ts +45 -10
- package/dist_ts/classes.devserver.js +123 -49
- package/dist_ts/cli.js +5 -2
- package/dist_ts/index.d.ts +0 -2
- package/dist_ts/index.js +1 -3
- package/dist_ts_interfaces/requests.d.ts +35 -0
- package/dist_ts_shell/bundlestatus.d.ts +15 -0
- package/dist_ts_shell/bundlestatus.js +64 -0
- package/dist_ts_shell/elements/wcc-contextmenu.d.ts +3 -0
- package/dist_ts_shell/elements/wcc-contextmenu.js +18 -3
- package/dist_ts_shell/elements/wcc-preview-frame.d.ts +6 -0
- package/dist_ts_shell/elements/wcc-preview-frame.js +50 -2
- package/dist_ts_shell/elements/wcc-shell.d.ts +15 -0
- package/dist_ts_shell/elements/wcc-shell.js +45 -3
- package/dist_ts_shell/plugins.d.ts +2 -1
- package/dist_ts_shell/plugins.js +3 -2
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/package.json +5 -2
- package/readme.md +6 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/classes.bundlestatus.ts +123 -0
- package/ts/classes.devapi.ts +9 -0
- package/ts/classes.devserver.ts +127 -47
- package/ts/cli.ts +4 -1
- package/ts/index.ts +0 -2
- package/ts_interfaces/bridge.ts +95 -0
- package/ts_interfaces/catalog.ts +37 -0
- package/ts_interfaces/index.ts +4 -0
- package/ts_interfaces/plugins.ts +3 -0
- package/ts_interfaces/requests.ts +65 -0
- package/ts_interfaces/standard.ts +103 -0
- package/ts_shared/index.ts +1 -0
- package/ts_shared/plugins.ts +3 -0
- package/ts_shared/previewroute.ts +58 -0
- package/ts_shell/bundlestatus.ts +68 -0
- package/ts_shell/elements/wcc-contextmenu.ts +306 -0
- package/ts_shell/elements/wcc-preview-frame.ts +167 -0
- package/ts_shell/elements/wcc-properties.ts +998 -0
- package/ts_shell/elements/wcc-record-button.ts +108 -0
- package/ts_shell/elements/wcc-recording-panel.ts +1005 -0
- package/ts_shell/elements/wcc-shell.ts +485 -0
- package/ts_shell/elements/wcc-sidebar.ts +1419 -0
- package/ts_shell/index.html +21 -0
- package/ts_shell/index.ts +4 -0
- package/ts_shell/plugins.ts +12 -0
- package/ts_shell/previewconnection.ts +103 -0
- package/ts_shell/services/recorder.service.ts +451 -0
- package/ts_shell/types/dom-mediacapture-stub/index.d.ts +12 -0
- package/ts_shell/types/dom-mediacapture-stub/package.json +6 -0
- package/ts_shell/types/dom-webcodecs-stub/index.d.ts +2 -0
- package/ts_shell/types/dom-webcodecs-stub/package.json +6 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
|
@@ -13,81 +13,155 @@ const securityHeaders = {
|
|
|
13
13
|
};
|
|
14
14
|
const acceptAnyHostname = () => true;
|
|
15
15
|
/**
|
|
16
|
-
* `wcctools dev`: bundles the catalog of
|
|
17
|
-
*
|
|
16
|
+
* `wcctools dev`: bundles the catalog of a project with tswatch, as its `@git.zone/tswatch`
|
|
17
|
+
* configuration (or the `element` preset) describes, and serves on one port:
|
|
18
18
|
*
|
|
19
19
|
* - the shell on `/wcctools/` (`/` redirects there) and its routes `/wcctools-route/...`,
|
|
20
|
-
* - the typed API on `/wcctools/typedrequest`,
|
|
20
|
+
* - the typed API on `/wcctools/typedrequest`, including the bundles' status,
|
|
21
21
|
* - the catalog's preview document and bundle from the tswatch serve directory on every other
|
|
22
22
|
* path, with live reload that reloads only the preview document.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* The server owns no process lifecycle: while it runs, a process shutdown through smartexit's
|
|
25
|
+
* `ProcessLifecycle` stops it. The entry point installs that lifecycle with
|
|
26
|
+
* `getShutdownTimeoutMs()`.
|
|
26
27
|
*/
|
|
27
28
|
export class WccDevServer {
|
|
28
29
|
options;
|
|
29
30
|
/** The typed API on `/wcctools/typedrequest`; register further handlers before `start()`. */
|
|
30
31
|
api = new WccDevApi();
|
|
31
|
-
|
|
32
|
+
/** The project directory everything resolves against. */
|
|
33
|
+
cwd;
|
|
34
|
+
/** The project's tswatch configuration, or the `element` preset; read once, on construction. */
|
|
35
|
+
config;
|
|
36
|
+
/** Bundling and watching stay tswatch's; its own server stays off. */
|
|
37
|
+
tsWatch;
|
|
32
38
|
typedServer = null;
|
|
33
|
-
|
|
39
|
+
/** Stops the server on a process shutdown; registered by start(), released by stop(). */
|
|
40
|
+
smartExit = null;
|
|
41
|
+
unsubscribeBundleEvents = null;
|
|
42
|
+
running = false;
|
|
43
|
+
starting = null;
|
|
44
|
+
stopping = null;
|
|
34
45
|
constructor(options = {}) {
|
|
35
46
|
this.options = options;
|
|
36
|
-
this.
|
|
47
|
+
this.cwd = plugins.path.resolve(options.cwd ?? process.cwd());
|
|
48
|
+
const configHandler = new plugins.tswatch.ConfigHandler(this.cwd);
|
|
49
|
+
this.config = configHandler.loadConfig() ?? this.getElementPreset(configHandler);
|
|
50
|
+
this.tsWatch = new plugins.tswatch.TsWatch({ ...this.config, server: { enabled: false } }, { cwd: this.cwd });
|
|
37
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The shutdown deadline the server needs, tswatch's: the entry point installs smartexit's
|
|
54
|
+
* `ProcessLifecycle` with it, so every watcher command keeps its full grace period.
|
|
55
|
+
*/
|
|
56
|
+
getShutdownTimeoutMs() {
|
|
57
|
+
return this.tsWatch.getShutdownTimeoutMs();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Bundles the catalog, starts the watchers and serves. Refused while the server runs or stops;
|
|
61
|
+
* the server starts again after stop().
|
|
62
|
+
*/
|
|
38
63
|
async start() {
|
|
39
|
-
if (this.
|
|
40
|
-
throw new Error('wcctools: the dev server is already started.');
|
|
64
|
+
if (this.running || this.stopping) {
|
|
65
|
+
throw new Error('wcctools: the dev server is already started or still stopping.');
|
|
41
66
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
this.api.setServerInfo({
|
|
50
|
-
wcctoolsVersion: commitinfo.version,
|
|
51
|
-
projectName: await this.readProjectName(cwd),
|
|
52
|
-
});
|
|
53
|
-
const typedServer = new plugins.typedserver.TypedServer({
|
|
54
|
-
cors: false,
|
|
55
|
-
port,
|
|
56
|
-
surfaces: [
|
|
57
|
-
await this.createShellSurface(),
|
|
58
|
-
this.createPreviewSurface(serveDir),
|
|
59
|
-
],
|
|
60
|
-
});
|
|
61
|
-
this.typedServer = typedServer;
|
|
62
|
-
// Bundling and watching stay tswatch's; its own server stays off
|
|
63
|
-
this.tsWatch = new plugins.tswatch.TsWatch({ ...config, server: { enabled: false } });
|
|
67
|
+
this.running = true;
|
|
68
|
+
// A process shutdown stops the server from here on, also while it is still starting
|
|
69
|
+
const smartExit = new plugins.smartexit.SmartExit({ silent: true });
|
|
70
|
+
smartExit.addCleanupFunction(() => this.stop());
|
|
71
|
+
this.smartExit = smartExit;
|
|
72
|
+
const starting = this.startServing();
|
|
73
|
+
this.starting = starting;
|
|
64
74
|
try {
|
|
65
|
-
await
|
|
66
|
-
|
|
75
|
+
const address = await starting;
|
|
76
|
+
if (this.stopping) {
|
|
77
|
+
throw new Error('wcctools: the dev server was stopped while starting.');
|
|
78
|
+
}
|
|
79
|
+
return address;
|
|
67
80
|
}
|
|
68
81
|
catch (error) {
|
|
82
|
+
// A start that failed halfway releases what it opened
|
|
69
83
|
await this.stop();
|
|
70
84
|
throw error;
|
|
71
85
|
}
|
|
72
|
-
|
|
73
|
-
|
|
86
|
+
finally {
|
|
87
|
+
if (this.starting === starting) {
|
|
88
|
+
this.starting = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
74
91
|
}
|
|
75
|
-
/**
|
|
76
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Stops the server and tswatch's bundling and watching, and releases everything start()
|
|
94
|
+
* registered. A stop during start() waits for the start to settle first; concurrent and
|
|
95
|
+
* repeated calls share one stop.
|
|
96
|
+
*/
|
|
97
|
+
stop() {
|
|
98
|
+
this.stopping ??= this.release().finally(() => {
|
|
99
|
+
this.stopping = null;
|
|
100
|
+
});
|
|
101
|
+
return this.stopping;
|
|
102
|
+
}
|
|
103
|
+
async release() {
|
|
104
|
+
await this.starting?.catch(() => undefined);
|
|
105
|
+
const smartExit = this.smartExit;
|
|
77
106
|
const typedServer = this.typedServer;
|
|
78
|
-
const
|
|
107
|
+
const unsubscribeBundleEvents = this.unsubscribeBundleEvents;
|
|
108
|
+
this.smartExit = null;
|
|
79
109
|
this.typedServer = null;
|
|
80
|
-
this.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
110
|
+
this.unsubscribeBundleEvents = null;
|
|
111
|
+
smartExit?.deregister();
|
|
112
|
+
// Status requests waiting for a change are refused now, so none holds the server's stop, and
|
|
113
|
+
// requests until the server stops listening are refused too: the shell backs off
|
|
114
|
+
this.api.bundleStatus.close();
|
|
115
|
+
try {
|
|
116
|
+
await typedServer?.stop();
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
try {
|
|
120
|
+
await this.tsWatch.stop();
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
unsubscribeBundleEvents?.();
|
|
124
|
+
this.running = false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async startServing() {
|
|
129
|
+
const serveDir = plugins.path.resolve(this.cwd, this.config.server?.serveDir ?? defaultServeDir);
|
|
130
|
+
const port = this.options.port ?? this.config.server?.port ?? defaultPort;
|
|
131
|
+
// The preview surface watches the serve directory, which must exist before the first bundle
|
|
132
|
+
await plugins.fs.mkdir(serveDir, { recursive: true });
|
|
133
|
+
this.api.setServerInfo({
|
|
134
|
+
wcctoolsVersion: commitinfo.version,
|
|
135
|
+
projectName: await this.readProjectName(),
|
|
136
|
+
});
|
|
137
|
+
const surfaces = [await this.createShellSurface(), this.createPreviewSurface(serveDir)];
|
|
138
|
+
const typedServer = new plugins.typedserver.TypedServer({ cors: false, port, surfaces });
|
|
139
|
+
this.typedServer = typedServer;
|
|
140
|
+
this.api.bundleStatus.open();
|
|
141
|
+
const bundleStatus = this.api.bundleStatus;
|
|
142
|
+
this.unsubscribeBundleEvents = this.tsWatch.onBundleEvent((eventArg) => bundleStatus.record(eventArg));
|
|
143
|
+
// The initial bundles run here; a failed one is reported in the bundle status
|
|
144
|
+
await this.tsWatch.start();
|
|
145
|
+
await typedServer.start();
|
|
146
|
+
const boundPort = typedServer.listeningPort ?? port;
|
|
147
|
+
return { port: boundPort, url: `http://localhost:${boundPort}${shellPathPrefix}/` };
|
|
148
|
+
}
|
|
149
|
+
getElementPreset(configHandlerArg) {
|
|
150
|
+
const preset = configHandlerArg.getPreset('element');
|
|
151
|
+
if (!preset) {
|
|
152
|
+
throw new Error('wcctools: tswatch provides no `element` preset.');
|
|
153
|
+
}
|
|
154
|
+
return preset;
|
|
84
155
|
}
|
|
85
156
|
/**
|
|
86
157
|
* The shell: the prebuilt shell bundle and the typed API.
|
|
87
158
|
*
|
|
88
159
|
* Seam for side-effecting APIs (assistant, capture, standards fixes): before any handler with
|
|
89
|
-
* side effects is registered here,
|
|
90
|
-
* only
|
|
160
|
+
* side effects is registered here, the server binds to localhost by default (another interface
|
|
161
|
+
* only on explicit request), validates the Host header against the addresses it serves instead
|
|
162
|
+
* of accepting any hostname, and admits typedsocket connections and typed requests only from the
|
|
163
|
+
* shell's own origin (a `websocketAdmission`/`requestAdmission`), keeping surface mode's strict
|
|
164
|
+
* authority validation. Until then every handler here is read-only.
|
|
91
165
|
*/
|
|
92
166
|
async createShellSurface() {
|
|
93
167
|
return {
|
|
@@ -134,9 +208,9 @@ export class WccDevServer {
|
|
|
134
208
|
securityHeaders,
|
|
135
209
|
};
|
|
136
210
|
}
|
|
137
|
-
async readProjectName(
|
|
138
|
-
const packageJson = JSON.parse(await plugins.fs.readFile(plugins.path.join(
|
|
139
|
-
return packageJson.name ?? plugins.path.basename(
|
|
211
|
+
async readProjectName() {
|
|
212
|
+
const packageJson = JSON.parse(await plugins.fs.readFile(plugins.path.join(this.cwd, 'package.json'), 'utf8'));
|
|
213
|
+
return packageJson.name ?? plugins.path.basename(this.cwd);
|
|
140
214
|
}
|
|
141
215
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5kZXZzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9jbGFzc2VzLmRldnNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQWtCdEUsMEZBQTBGO0FBQzFGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQztBQUN6QixNQUFNLGVBQWUsR0FBRyxlQUFlLENBQUM7QUFFeEMsOEZBQThGO0FBQzlGLE1BQU0sZUFBZSxHQUF5QztJQUM1RCx1QkFBdUIsRUFBRSxhQUFhO0lBQ3RDLHlCQUF5QixFQUFFLGNBQWM7Q0FDMUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXJDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBaUJNO0lBaEI3Qiw2RkFBNkY7SUFDN0UsR0FBRyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7SUFDdEMseURBQXlEO0lBQ3pDLEdBQUcsQ0FBUztJQUM1QixnR0FBZ0c7SUFDL0UsTUFBTSxDQUFpQztJQUN4RCxzRUFBc0U7SUFDckQsT0FBTyxDQUEwQjtJQUMxQyxXQUFXLEdBQTJDLElBQUksQ0FBQztJQUNuRSx5RkFBeUY7SUFDakYsU0FBUyxHQUF1QyxJQUFJLENBQUM7SUFDckQsdUJBQXVCLEdBQXdCLElBQUksQ0FBQztJQUNwRCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFFBQVEsR0FBeUMsSUFBSSxDQUFDO0lBQ3RELFFBQVEs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
|
package/dist_ts/cli.js
CHANGED
|
@@ -21,7 +21,10 @@ export const registerCommands = (out) => {
|
|
|
21
21
|
},
|
|
22
22
|
},
|
|
23
23
|
}, async ({ options }) => {
|
|
24
|
-
const devServer = new WccDevServer({ port: options.port });
|
|
24
|
+
const devServer = new WccDevServer({ port: options.port, cwd: process.cwd() });
|
|
25
|
+
// The entry point owns process signals: SIGINT and SIGTERM run every registered cleanup, the
|
|
26
|
+
// dev server's stop among them, once within tswatch's shutdown deadline, then exit.
|
|
27
|
+
plugins.smartexit.ProcessLifecycle.install({ shutdownTimeoutMs: devServer.getShutdownTimeoutMs() });
|
|
25
28
|
const address = await devServer.start();
|
|
26
29
|
await out.log(`wcctools dev: ${address.url}`);
|
|
27
30
|
});
|
|
@@ -48,4 +51,4 @@ export const runCli = async () => {
|
|
|
48
51
|
await out.dispose();
|
|
49
52
|
}
|
|
50
53
|
};
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekc7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQXNDLEVBQVEsRUFBRTtJQUMvRSxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUNoQixJQUFJLEVBQUUsVUFBVTtRQUNoQixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU87UUFDM0IsV0FBVyxFQUFFLHVEQUF1RDtLQUNyRSxDQUFDLENBQUM7SUFFSCxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNkLElBQUksRUFBRSxLQUFLO1FBQ1gsV0FBVyxFQUFFLHdFQUF3RTtRQUNyRixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLDhFQUE4RTthQUM1RjtTQUNGO0tBQ0YsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0UsNkZBQTZGO1FBQzdGLG9GQUFvRjtRQUNwRixPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRyxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBRUgsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzdCLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFJLEVBQUU7SUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3BELElBQUksQ0FBQztRQUNILGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RSwwRUFBMEU7UUFDMUUsTUFBTSxVQUFVLEdBQUcsS0FBSyxZQUFZLE9BQU8sQ0FBQyxZQUFZLENBQUMsYUFBYTtlQUNqRSxLQUFLLFlBQVksbUJBQW1CO2VBQ3BDLEtBQUssWUFBWSxrQkFBa0IsQ0FBQztRQUN6QyxPQUFPLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztZQUFTLENBQUM7UUFDVCxNQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QixDQUFDO0FBQ0gsQ0FBQyxDQUFDIn0=
|
package/dist_ts/index.d.ts
CHANGED
package/dist_ts/index.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
1
|
export { runCli } from './cli.js';
|
|
2
|
-
|
|
3
|
-
export { WccDevApi } from './classes.devapi.js';
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQXdELE1BQU0sd0JBQXdCLENBQUM7QUFDNUcsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDIn0=
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDIn0=
|
|
@@ -13,3 +13,38 @@ export interface IReq_GetDevServerInfo extends plugins.typedrequestInterfaces.im
|
|
|
13
13
|
request: {};
|
|
14
14
|
response: IWccDevServerInfo;
|
|
15
15
|
}
|
|
16
|
+
/** The state of a catalog bundle: its latest run started, finished or failed. */
|
|
17
|
+
export type TWccBundleState = 'started' | 'finished' | 'failed';
|
|
18
|
+
/** The status of one catalog bundle the dev server builds with tswatch. */
|
|
19
|
+
export interface IWccBundleStatus {
|
|
20
|
+
/** The bundle's name in the tswatch configuration. */
|
|
21
|
+
name: string;
|
|
22
|
+
/** The latest run: `started` while it runs, then `finished` or `failed`. */
|
|
23
|
+
state: TWccBundleState;
|
|
24
|
+
/** Milliseconds the latest completed run took; absent before a run completed. */
|
|
25
|
+
durationMs?: number;
|
|
26
|
+
/**
|
|
27
|
+
* The bundler's error message when the latest completed run failed. It stays while the next
|
|
28
|
+
* run is in progress, so a failure is reported until a run finishes.
|
|
29
|
+
*/
|
|
30
|
+
errorMessage?: string;
|
|
31
|
+
}
|
|
32
|
+
/** The status of every catalog bundle, at a revision that changes with every bundle event. */
|
|
33
|
+
export interface IWccBundleStatusSnapshot {
|
|
34
|
+
revision: number;
|
|
35
|
+
bundles: IWccBundleStatus[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Reads the bundle status. With `afterRevision`, the server answers once the status differs from
|
|
39
|
+
* that revision, or with the unchanged status after its wait limit, so a client follows the
|
|
40
|
+
* status with one request at a time. While the server is not serving (it is stopping), the request
|
|
41
|
+
* is refused with a typed error.
|
|
42
|
+
*/
|
|
43
|
+
export interface IReq_GetBundleStatus extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetBundleStatus> {
|
|
44
|
+
method: 'getBundleStatus';
|
|
45
|
+
request: {
|
|
46
|
+
/** The revision the client knows; omitted: answer at once. */
|
|
47
|
+
afterRevision?: number;
|
|
48
|
+
};
|
|
49
|
+
response: IWccBundleStatusSnapshot;
|
|
50
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* Follows the dev server's bundle status: one `getBundleStatus` request at a time, each answered
|
|
4
|
+
* when the status changes. A failed request (the server restarting, for example) is sent again
|
|
5
|
+
* after a growing pause. `dispose()` aborts the request in flight and ends the loop.
|
|
6
|
+
*/
|
|
7
|
+
export declare class WccBundleStatusClient {
|
|
8
|
+
private readonly apiPath;
|
|
9
|
+
private readonly onStatus;
|
|
10
|
+
private abortController;
|
|
11
|
+
constructor(apiPath: string, onStatus: (snapshotArg: plugins.interfaces.IWccBundleStatusSnapshot) => void);
|
|
12
|
+
start(): void;
|
|
13
|
+
dispose(): void;
|
|
14
|
+
private follow;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/** The first and the longest pause before a failed status request is sent again. */
|
|
3
|
+
const retryDelayMinMs = 1_000;
|
|
4
|
+
const retryDelayMaxMs = 10_000;
|
|
5
|
+
/** Resolves after `msArg`, or at once when the signal aborts. */
|
|
6
|
+
const pause = (msArg, signalArg) => new Promise((resolve) => {
|
|
7
|
+
const done = () => {
|
|
8
|
+
clearTimeout(timer);
|
|
9
|
+
signalArg.removeEventListener('abort', done);
|
|
10
|
+
resolve();
|
|
11
|
+
};
|
|
12
|
+
const timer = setTimeout(done, msArg);
|
|
13
|
+
signalArg.addEventListener('abort', done, { once: true });
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Follows the dev server's bundle status: one `getBundleStatus` request at a time, each answered
|
|
17
|
+
* when the status changes. A failed request (the server restarting, for example) is sent again
|
|
18
|
+
* after a growing pause. `dispose()` aborts the request in flight and ends the loop.
|
|
19
|
+
*/
|
|
20
|
+
export class WccBundleStatusClient {
|
|
21
|
+
apiPath;
|
|
22
|
+
onStatus;
|
|
23
|
+
abortController = null;
|
|
24
|
+
constructor(apiPath, onStatus) {
|
|
25
|
+
this.apiPath = apiPath;
|
|
26
|
+
this.onStatus = onStatus;
|
|
27
|
+
}
|
|
28
|
+
start() {
|
|
29
|
+
if (this.abortController) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const abortController = new AbortController();
|
|
33
|
+
this.abortController = abortController;
|
|
34
|
+
void this.follow(abortController.signal);
|
|
35
|
+
}
|
|
36
|
+
dispose() {
|
|
37
|
+
this.abortController?.abort();
|
|
38
|
+
this.abortController = null;
|
|
39
|
+
}
|
|
40
|
+
async follow(signalArg) {
|
|
41
|
+
const request = new plugins.typedrequest.TypedRequest(this.apiPath, 'getBundleStatus');
|
|
42
|
+
let revision;
|
|
43
|
+
let retryDelay = retryDelayMinMs;
|
|
44
|
+
while (!signalArg.aborted) {
|
|
45
|
+
try {
|
|
46
|
+
const snapshot = await request.fire({ afterRevision: revision }, { abortSignal: signalArg });
|
|
47
|
+
retryDelay = retryDelayMinMs;
|
|
48
|
+
if (!signalArg.aborted && snapshot.revision !== revision) {
|
|
49
|
+
revision = snapshot.revision;
|
|
50
|
+
this.onStatus(snapshot);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (signalArg.aborted) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
console.warn('wcctools: reading the bundle status failed; retrying', error);
|
|
58
|
+
await pause(retryDelay, signalArg);
|
|
59
|
+
retryDelay = Math.min(retryDelay * 2, retryDelayMaxMs);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlc3RhdHVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfc2hlbGwvYnVuZGxlc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBRXhDLG9GQUFvRjtBQUNwRixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDOUIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDO0FBRS9CLGlFQUFpRTtBQUNqRSxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxTQUFzQixFQUFpQixFQUFFLENBQ3JFLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7SUFDdEIsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixTQUFTLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0lBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVELENBQUMsQ0FBQyxDQUFDO0FBRUw7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFJYjtJQUNBO0lBSlgsZUFBZSxHQUEyQixJQUFJLENBQUM7SUFFdkQsWUFDbUIsT0FBZSxFQUNmLFFBQTRFO1FBRDVFLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFvRTtJQUM1RixDQUFDO0lBRUcsS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUN2QyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxPQUFPO1FBQ1osSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFzQjtRQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUEwQyxJQUFJLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDaEksSUFBSSxRQUE0QixDQUFDO1FBQ2pDLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUNqQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQztnQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDN0YsVUFBVSxHQUFHLGVBQWUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDekQsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7b0JBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDdEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsc0RBQXNELEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzVFLE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbkMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN6RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -25,10 +25,13 @@ export declare class WccContextmenu extends DeesElement {
|
|
|
25
25
|
accessor visible: boolean;
|
|
26
26
|
private boundHandleOutsideClick;
|
|
27
27
|
private boundHandleKeydown;
|
|
28
|
+
/** The pending frame that adds the document listeners; cancelled on removal */
|
|
29
|
+
private listenerFrame;
|
|
28
30
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
29
31
|
render(): TemplateResult;
|
|
30
32
|
connectedCallback(): Promise<void>;
|
|
31
33
|
disconnectedCallback(): Promise<void>;
|
|
34
|
+
private cancelListenerFrame;
|
|
32
35
|
private adjustPosition;
|
|
33
36
|
private handleOutsideClick;
|
|
34
37
|
private handleKeydown;
|
|
@@ -108,6 +108,8 @@ let WccContextmenu = (() => {
|
|
|
108
108
|
set visible(value) { this.#visible_accessor_storage = value; }
|
|
109
109
|
boundHandleOutsideClick = (__runInitializers(this, _visible_extraInitializers), this.handleOutsideClick.bind(this));
|
|
110
110
|
boundHandleKeydown = this.handleKeydown.bind(this);
|
|
111
|
+
/** The pending frame that adds the document listeners; cancelled on removal */
|
|
112
|
+
listenerFrame = null;
|
|
111
113
|
static styles = [
|
|
112
114
|
css `
|
|
113
115
|
:host {
|
|
@@ -212,8 +214,13 @@ let WccContextmenu = (() => {
|
|
|
212
214
|
}
|
|
213
215
|
async connectedCallback() {
|
|
214
216
|
await super.connectedCallback();
|
|
217
|
+
// Removed again while connecting: there is nothing to listen for
|
|
218
|
+
if (!this.isConnected)
|
|
219
|
+
return;
|
|
215
220
|
// Delay adding listeners to avoid immediate close
|
|
216
|
-
|
|
221
|
+
this.cancelListenerFrame();
|
|
222
|
+
this.listenerFrame = requestAnimationFrame(() => {
|
|
223
|
+
this.listenerFrame = null;
|
|
217
224
|
document.addEventListener('click', this.boundHandleOutsideClick);
|
|
218
225
|
document.addEventListener('contextmenu', this.boundHandleOutsideClick);
|
|
219
226
|
document.addEventListener('keydown', this.boundHandleKeydown);
|
|
@@ -221,10 +228,18 @@ let WccContextmenu = (() => {
|
|
|
221
228
|
});
|
|
222
229
|
}
|
|
223
230
|
async disconnectedCallback() {
|
|
224
|
-
|
|
231
|
+
// A frame still pending would add the listeners after removal
|
|
232
|
+
this.cancelListenerFrame();
|
|
225
233
|
document.removeEventListener('click', this.boundHandleOutsideClick);
|
|
226
234
|
document.removeEventListener('contextmenu', this.boundHandleOutsideClick);
|
|
227
235
|
document.removeEventListener('keydown', this.boundHandleKeydown);
|
|
236
|
+
await super.disconnectedCallback();
|
|
237
|
+
}
|
|
238
|
+
cancelListenerFrame() {
|
|
239
|
+
if (this.listenerFrame !== null) {
|
|
240
|
+
cancelAnimationFrame(this.listenerFrame);
|
|
241
|
+
this.listenerFrame = null;
|
|
242
|
+
}
|
|
228
243
|
}
|
|
229
244
|
adjustPosition() {
|
|
230
245
|
const rect = this.getBoundingClientRect();
|
|
@@ -326,4 +341,4 @@ let WccContextmenu = (() => {
|
|
|
326
341
|
return WccContextmenu = _classThis;
|
|
327
342
|
})();
|
|
328
343
|
export { WccContextmenu };
|
|
329
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2NjLWNvbnRleHRtZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHNfc2hlbGwvZWxlbWVudHMvd2NjLWNvbnRleHRtZW51LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUF1QixLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0lBZXpILGNBQWM7NEJBRDFCLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQzs7OztzQkFDRyxXQUFXOzs7Ozs7Ozs7Ozs7OzhCQUFuQixTQUFRLFdBQVc7Ozs7cUNBc0M1QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7NkJBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQzs2QkFHMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO21DQUcxQixLQUFLLEVBQUU7WUFSUixnTEFBUyxTQUFTLDZCQUFULFNBQVMsNkZBQTBCO1lBRzVDLHdKQUFTLENBQUMsNkJBQUQsQ0FBQyw2RUFBYTtZQUd2Qix3SkFBUyxDQUFDLDZCQUFELENBQUMsNkVBQWE7WUFHdkIsMEtBQVMsT0FBTyw2QkFBUCxPQUFPLHlGQUFrQjtZQWhEcEMsNktBa1NDOzs7O1FBalNDOzs7O1dBSUc7UUFDSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDdEIsS0FBaUIsRUFDakIsU0FBNkIsRUFDN0IsVUFBK0IsRUFBRTtZQUVqQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXhCLG1DQUFtQztZQUNuQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDM0Qs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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DeesElement, type TemplateResult } from '@design.estate/dees-element';
|
|
2
|
+
import * as plugins from '../plugins.js';
|
|
2
3
|
export type TWccViewport = 'native' | 'desktop' | 'tablet' | 'phablet' | 'phone';
|
|
3
4
|
declare global {
|
|
4
5
|
interface HTMLElementTagNameMap {
|
|
@@ -17,6 +18,11 @@ export declare class WccPreviewFrame extends DeesElement {
|
|
|
17
18
|
accessor isNative: boolean;
|
|
18
19
|
accessor sidebarWidth: number;
|
|
19
20
|
accessor isResizing: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Catalog bundles whose latest run failed: shown over the preview, which shows an outdated
|
|
23
|
+
* bundle or none, until a run finishes and the preview reloads.
|
|
24
|
+
*/
|
|
25
|
+
accessor bundleFailures: plugins.interfaces.IWccBundleStatus[];
|
|
20
26
|
static styles: import("@design.estate/dees-element").CSSResult[];
|
|
21
27
|
get iframe(): HTMLIFrameElement | null;
|
|
22
28
|
render(): TemplateResult;
|