@scenar/cli 0.2.1 → 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.
- package/example-bundle/embed.js +1 -0
- package/example-bundle/pack-manifest.json +6 -0
- package/package.json +4 -8
- package/src/__tests__/embed-loader.test.ts +29 -0
- package/src/__tests__/embed-snippet.test.ts +48 -1
- package/src/__tests__/install-command.test.ts +97 -0
- package/src/__tests__/local-url.test.ts +17 -0
- package/src/__tests__/run-install.test.ts +222 -0
- package/src/api.d.ts +3 -1
- package/src/api.d.ts.map +1 -1
- package/src/api.js +3 -1
- package/src/api.js.map +1 -1
- package/src/api.ts +10 -1
- package/src/commands/install.d.ts +3 -0
- package/src/commands/install.d.ts.map +1 -0
- package/src/commands/install.js +67 -0
- package/src/commands/install.js.map +1 -0
- package/src/commands/install.ts +89 -0
- package/src/commands/pack.js +2 -2
- package/src/commands/pack.js.map +1 -1
- package/src/commands/pack.ts +2 -2
- package/src/commands/publish.d.ts.map +1 -1
- package/src/commands/publish.js +3 -1
- package/src/commands/publish.js.map +1 -1
- package/src/commands/publish.ts +5 -1
- package/src/commands/serve.d.ts.map +1 -1
- package/src/commands/serve.js +3 -2
- package/src/commands/serve.js.map +1 -1
- package/src/commands/serve.ts +5 -2
- package/src/commands/try.js +1 -1
- package/src/commands/try.ts +1 -1
- package/src/{deploy → embed}/embed-snippet.d.ts +16 -0
- package/src/embed/embed-snippet.d.ts.map +1 -0
- package/src/{deploy → embed}/embed-snippet.js +27 -0
- package/src/embed/embed-snippet.js.map +1 -0
- package/src/{deploy → embed}/embed-snippet.ts +28 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +3 -5
- package/src/index.js.map +1 -1
- package/src/index.ts +3 -5
- package/src/install/run-install.d.ts +72 -0
- package/src/install/run-install.d.ts.map +1 -0
- package/src/install/run-install.js +378 -0
- package/src/install/run-install.js.map +1 -0
- package/src/install/run-install.ts +461 -0
- package/src/install/scaffold.d.ts +29 -0
- package/src/install/scaffold.d.ts.map +1 -0
- package/src/install/scaffold.js +233 -0
- package/src/install/scaffold.js.map +1 -0
- package/src/install/scaffold.ts +255 -0
- package/src/pack/embed-loader.d.ts +18 -0
- package/src/pack/embed-loader.d.ts.map +1 -0
- package/src/pack/embed-loader.js +25 -0
- package/src/pack/embed-loader.js.map +1 -0
- package/src/pack/embed-loader.ts +27 -0
- package/src/pack/pack-manifest.d.ts +1 -1
- package/src/pack/pack-manifest.d.ts.map +1 -1
- package/src/pack/pack-manifest.ts +1 -1
- package/src/pack/run-pack.d.ts.map +1 -1
- package/src/pack/run-pack.js +6 -0
- package/src/pack/run-pack.js.map +1 -1
- package/src/pack/run-pack.ts +7 -0
- package/src/publish/publish-flow.d.ts +3 -3
- package/src/publish/publish-flow.js +3 -3
- package/src/publish/publish-flow.ts +3 -3
- package/src/publish/run-publish.d.ts +2 -0
- package/src/publish/run-publish.d.ts.map +1 -1
- package/src/publish/run-publish.js +3 -2
- package/src/publish/run-publish.js.map +1 -1
- package/src/publish/run-publish.ts +5 -2
- package/src/render/detect-render-export.d.ts +2 -2
- package/src/render/detect-render-export.js +2 -2
- package/src/render/detect-render-export.ts +2 -2
- package/src/serve/local-url.d.ts +8 -0
- package/src/serve/local-url.d.ts.map +1 -0
- package/src/serve/local-url.js +21 -0
- package/src/serve/local-url.js.map +1 -0
- package/src/serve/local-url.ts +20 -0
- package/src/serve/run-serve.d.ts +2 -0
- package/src/serve/run-serve.d.ts.map +1 -1
- package/src/serve/run-serve.js +4 -3
- package/src/serve/run-serve.js.map +1 -1
- package/src/serve/run-serve.ts +6 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/src/__tests__/deploy-command.test.ts +0 -45
- package/src/__tests__/deploy-flow.test.ts +0 -125
- package/src/__tests__/deploy-upload.test.ts +0 -39
- package/src/commands/deploy.d.ts +0 -3
- package/src/commands/deploy.d.ts.map +0 -1
- package/src/commands/deploy.js +0 -150
- package/src/commands/deploy.js.map +0 -1
- package/src/commands/deploy.ts +0 -186
- package/src/commands/preview.d.ts +0 -3
- package/src/commands/preview.d.ts.map +0 -1
- package/src/commands/preview.js +0 -93
- package/src/commands/preview.js.map +0 -1
- package/src/commands/preview.ts +0 -138
- package/src/deploy/client.d.ts +0 -20
- package/src/deploy/client.d.ts.map +0 -1
- package/src/deploy/client.js +0 -22
- package/src/deploy/client.js.map +0 -1
- package/src/deploy/client.ts +0 -28
- package/src/deploy/deploy-flow.d.ts +0 -78
- package/src/deploy/deploy-flow.d.ts.map +0 -1
- package/src/deploy/deploy-flow.js +0 -53
- package/src/deploy/deploy-flow.js.map +0 -1
- package/src/deploy/deploy-flow.ts +0 -115
- package/src/deploy/embed-snippet.d.ts.map +0 -1
- package/src/deploy/embed-snippet.js.map +0 -1
- package/src/deploy/upload.d.ts +0 -10
- package/src/deploy/upload.d.ts.map +0 -1
- package/src/deploy/upload.js +0 -23
- package/src/deploy/upload.js.map +0 -1
- package/src/deploy/upload.ts +0 -29
package/src/pack/run-pack.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { detectRenderExport } from "../render/detect-render-export.js";
|
|
|
4
4
|
import { resolveProvidersPath } from "../render/resolve-providers.js";
|
|
5
5
|
import { generateEmbedEntry, generateEmbedHtml } from "./generate-embed-entry.js";
|
|
6
6
|
import { runViteBuild } from "./build.js";
|
|
7
|
+
import { copyEmbedLoader } from "./embed-loader.js";
|
|
7
8
|
import {
|
|
8
9
|
buildPackManifest,
|
|
9
10
|
writePackManifest,
|
|
@@ -119,6 +120,12 @@ export async function runPack(options: RunPackOptions): Promise<PackResult> {
|
|
|
119
120
|
height: shellHeight,
|
|
120
121
|
});
|
|
121
122
|
|
|
123
|
+
// 4b. Copy the optional <scenar-embed> loader into the bundle as embed.js
|
|
124
|
+
// (sibling of index.html), so the enhanced snippet works on any static
|
|
125
|
+
// host (GitHub Pages, `serve`, the edge) with no extra setup. It lands
|
|
126
|
+
// before the manifest pass below so it ships as a first-class bundle file.
|
|
127
|
+
await copyEmbedLoader(outDir);
|
|
128
|
+
|
|
122
129
|
// 5. Compute + write the deploy-facing pack manifest (validates the bundle
|
|
123
130
|
// against the backend allowlist; throws on any violation).
|
|
124
131
|
const manifest = await buildPackManifest(outDir, scenarioId);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Pages publishing — the OSS "permanent public URL" path of Phase 1.
|
|
3
3
|
*
|
|
4
|
-
* The flow is dependency-injected
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The flow is dependency-injected so its ordering and payloads are unit-testable
|
|
5
|
+
* against fakes, with zero live GitHub calls in the test suite. The real
|
|
6
|
+
* `gh`/`git` implementations live in ./github.ts.
|
|
7
7
|
*/
|
|
8
8
|
/** Identity for the target GitHub repository + how to write to it. */
|
|
9
9
|
export interface PublishOptions {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Pages publishing — the OSS "permanent public URL" path of Phase 1.
|
|
3
3
|
*
|
|
4
|
-
* The flow is dependency-injected
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The flow is dependency-injected so its ordering and payloads are unit-testable
|
|
5
|
+
* against fakes, with zero live GitHub calls in the test suite. The real
|
|
6
|
+
* `gh`/`git` implementations live in ./github.ts.
|
|
7
7
|
*/
|
|
8
8
|
/** A repo name's allowed characters (GitHub: alphanumerics, ., _, -). */
|
|
9
9
|
const REPO_NAME_PATTERN = /^[A-Za-z0-9._-]+$/;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GitHub Pages publishing — the OSS "permanent public URL" path of Phase 1.
|
|
3
3
|
*
|
|
4
|
-
* The flow is dependency-injected
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* The flow is dependency-injected so its ordering and payloads are unit-testable
|
|
5
|
+
* against fakes, with zero live GitHub calls in the test suite. The real
|
|
6
|
+
* `gh`/`git` implementations live in ./github.ts.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
/** A repo name's allowed characters (GitHub: alphanumerics, ., _, -). */
|
|
@@ -30,6 +30,8 @@ export interface PublishRunResult {
|
|
|
30
30
|
readonly viewport: Viewport;
|
|
31
31
|
readonly recordedViewport: boolean;
|
|
32
32
|
readonly snippet: string;
|
|
33
|
+
/** The optional <scenar-embed> loader snippet (auto-fit + theme sync). */
|
|
34
|
+
readonly enhancedSnippet: string;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Validate a packed bundle and publish it to GitHub Pages — the orchestration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-publish.d.ts","sourceRoot":"","sources":["../../../src/publish/run-publish.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAc3B,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;CAC9C;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"run-publish.d.ts","sourceRoot":"","sources":["../../../src/publish/run-publish.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAc3B,sCAAsC;AACtC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;CAC9C;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgDtF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve, join, basename } from "node:path";
|
|
2
2
|
import { stat, readFile } from "node:fs/promises";
|
|
3
3
|
import { PACK_MANIFEST_FILE } from "../pack/pack-manifest.js";
|
|
4
|
-
import { buildEmbedSnippet } from "../
|
|
4
|
+
import { buildEmbedSnippet, buildEnhancedEmbedSnippet } from "../embed/embed-snippet.js";
|
|
5
5
|
import { readBundleViewport } from "../bundle/read-viewport.js";
|
|
6
6
|
import { createGithubPublisher } from "./github.js";
|
|
7
7
|
import { runPublishFlow, validateRepoName, validatePublishPath, normalizePath, } from "./publish-flow.js";
|
|
@@ -55,7 +55,8 @@ export async function runPublish(options) {
|
|
|
55
55
|
});
|
|
56
56
|
const { viewport, recorded } = await readBundleViewport(resolvedDir);
|
|
57
57
|
const snippet = buildEmbedSnippet({ embedUrl: result.pagesUrl, viewport });
|
|
58
|
-
|
|
58
|
+
const enhancedSnippet = buildEnhancedEmbedSnippet({ embedUrl: result.pagesUrl, viewport });
|
|
59
|
+
return { result, viewport, recordedViewport: recorded, snippet, enhancedSnippet };
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
61
62
|
* The packed scenario slug (from pack-manifest.json), falling back to the bundle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-publish.js","sourceRoot":"","sources":["../../../src/publish/run-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"run-publish.js","sourceRoot":"","sources":["../../../src/publish/run-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,GAGd,MAAM,mBAAmB,CAAC;AAE3B,mEAAmE;AACnE,MAAM,UAAU,GAAG,YAAY,CAAC;AAEhC,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,2BAA2B,CAAC;AAE1D;;;GAGG;AACH,MAAM,YAAY,GAAG,eAAe,CAAC;AAqCrC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA0B;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,SAAS,iEAAiE,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,MAAM,UAAU,OAAO,OAAO,CAAC,SAAS,2DAA2D,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mCAAmC,CAAC,CAAC;IACnE,CAAC;IAED,+EAA+E;IAC/E,0CAA0C;IAC1C,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,sCAAsC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,IAAI,GAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,qBAAqB,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IAC3F,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE;QACxC,SAAS,EAAE,WAAW;QACtB,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,sBAAsB;KACnD,CAAC,CAAC;IAEH,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,MAAM,eAAe,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE3F,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACpF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,EAAE,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC,UAAU,CAAC;QACpE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;IAC3D,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve, join, basename } from "node:path";
|
|
2
2
|
import { stat, readFile } from "node:fs/promises";
|
|
3
3
|
import { PACK_MANIFEST_FILE } from "../pack/pack-manifest.js";
|
|
4
|
-
import { buildEmbedSnippet } from "../
|
|
4
|
+
import { buildEmbedSnippet, buildEnhancedEmbedSnippet } from "../embed/embed-snippet.js";
|
|
5
5
|
import { readBundleViewport } from "../bundle/read-viewport.js";
|
|
6
6
|
import type { Viewport } from "../pack/viewport.js";
|
|
7
7
|
import { createGithubPublisher } from "./github.js";
|
|
@@ -57,6 +57,8 @@ export interface PublishRunResult {
|
|
|
57
57
|
readonly viewport: Viewport;
|
|
58
58
|
readonly recordedViewport: boolean;
|
|
59
59
|
readonly snippet: string;
|
|
60
|
+
/** The optional <scenar-embed> loader snippet (auto-fit + theme sync). */
|
|
61
|
+
readonly enhancedSnippet: string;
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
/**
|
|
@@ -110,8 +112,9 @@ export async function runPublish(options: RunPublishOptions): Promise<PublishRun
|
|
|
110
112
|
|
|
111
113
|
const { viewport, recorded } = await readBundleViewport(resolvedDir);
|
|
112
114
|
const snippet = buildEmbedSnippet({ embedUrl: result.pagesUrl, viewport });
|
|
115
|
+
const enhancedSnippet = buildEnhancedEmbedSnippet({ embedUrl: result.pagesUrl, viewport });
|
|
113
116
|
|
|
114
|
-
return { result, viewport, recordedViewport: recorded, snippet };
|
|
117
|
+
return { result, viewport, recordedViewport: recorded, snippet, enhancedSnippet };
|
|
115
118
|
}
|
|
116
119
|
|
|
117
120
|
/**
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Checks `render.tsx` first (recommended — a lean file that only imports
|
|
5
5
|
* view components), then falls back to `index.tsx`. Using a dedicated
|
|
6
|
-
* `render.tsx` avoids pulling browser-only dependencies (
|
|
7
|
-
*
|
|
6
|
+
* `render.tsx` avoids pulling browser-only dependencies (a product SDK
|
|
7
|
+
* client, data-mock wiring, etc.) into the Remotion webpack bundle.
|
|
8
8
|
*
|
|
9
9
|
* Uses a lightweight source-text scan rather than a dynamic import.
|
|
10
10
|
* The actual module resolution and type checking happens later when
|
|
@@ -7,8 +7,8 @@ const RENDER_FILE_CANDIDATES = ["render.tsx", "render.ts", "index.tsx", "index.t
|
|
|
7
7
|
*
|
|
8
8
|
* Checks `render.tsx` first (recommended — a lean file that only imports
|
|
9
9
|
* view components), then falls back to `index.tsx`. Using a dedicated
|
|
10
|
-
* `render.tsx` avoids pulling browser-only dependencies (
|
|
11
|
-
*
|
|
10
|
+
* `render.tsx` avoids pulling browser-only dependencies (a product SDK
|
|
11
|
+
* client, data-mock wiring, etc.) into the Remotion webpack bundle.
|
|
12
12
|
*
|
|
13
13
|
* Uses a lightweight source-text scan rather than a dynamic import.
|
|
14
14
|
* The actual module resolution and type checking happens later when
|
|
@@ -9,8 +9,8 @@ const RENDER_FILE_CANDIDATES = ["render.tsx", "render.ts", "index.tsx", "index.t
|
|
|
9
9
|
*
|
|
10
10
|
* Checks `render.tsx` first (recommended — a lean file that only imports
|
|
11
11
|
* view components), then falls back to `index.tsx`. Using a dedicated
|
|
12
|
-
* `render.tsx` avoids pulling browser-only dependencies (
|
|
13
|
-
*
|
|
12
|
+
* `render.tsx` avoids pulling browser-only dependencies (a product SDK
|
|
13
|
+
* client, data-mock wiring, etc.) into the Remotion webpack bundle.
|
|
14
14
|
*
|
|
15
15
|
* Uses a lightweight source-text scan rather than a dynamic import.
|
|
16
16
|
* The actual module resolution and type checking happens later when
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive a locally-viewable URL from an embed URL. Some local edges serve over
|
|
3
|
+
* http on `*.localhost` even when the URL is emitted as https; for those hosts
|
|
4
|
+
* we downgrade the scheme so the printed link is clickable. Production https
|
|
5
|
+
* URLs and non-URL input are returned unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export declare function localViewUrl(embedUrl: string): string;
|
|
8
|
+
//# sourceMappingURL=local-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-url.d.ts","sourceRoot":"","sources":["../../../src/serve/local-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAarD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive a locally-viewable URL from an embed URL. Some local edges serve over
|
|
3
|
+
* http on `*.localhost` even when the URL is emitted as https; for those hosts
|
|
4
|
+
* we downgrade the scheme so the printed link is clickable. Production https
|
|
5
|
+
* URLs and non-URL input are returned unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export function localViewUrl(embedUrl) {
|
|
8
|
+
try {
|
|
9
|
+
const url = new URL(embedUrl);
|
|
10
|
+
const isLocal = url.hostname === "localhost" || url.hostname.endsWith(".localhost");
|
|
11
|
+
if (isLocal && url.protocol === "https:") {
|
|
12
|
+
url.protocol = "http:";
|
|
13
|
+
return url.toString();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// Not a parseable URL — return as-is.
|
|
18
|
+
}
|
|
19
|
+
return embedUrl;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=local-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-url.js","sourceRoot":"","sources":["../../../src/serve/local-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,OAAO,GACX,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Derive a locally-viewable URL from an embed URL. Some local edges serve over
|
|
3
|
+
* http on `*.localhost` even when the URL is emitted as https; for those hosts
|
|
4
|
+
* we downgrade the scheme so the printed link is clickable. Production https
|
|
5
|
+
* URLs and non-URL input are returned unchanged.
|
|
6
|
+
*/
|
|
7
|
+
export function localViewUrl(embedUrl: string): string {
|
|
8
|
+
try {
|
|
9
|
+
const url = new URL(embedUrl);
|
|
10
|
+
const isLocal =
|
|
11
|
+
url.hostname === "localhost" || url.hostname.endsWith(".localhost");
|
|
12
|
+
if (isLocal && url.protocol === "https:") {
|
|
13
|
+
url.protocol = "http:";
|
|
14
|
+
return url.toString();
|
|
15
|
+
}
|
|
16
|
+
} catch {
|
|
17
|
+
// Not a parseable URL — return as-is.
|
|
18
|
+
}
|
|
19
|
+
return embedUrl;
|
|
20
|
+
}
|
package/src/serve/run-serve.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export interface ServeResult {
|
|
|
16
16
|
readonly url: string;
|
|
17
17
|
/** A ready-to-paste responsive <iframe> snippet for this URL. */
|
|
18
18
|
readonly snippet: string;
|
|
19
|
+
/** The optional <scenar-embed> loader snippet (auto-fit + theme sync). */
|
|
20
|
+
readonly enhancedSnippet: string;
|
|
19
21
|
/** The viewport used for the snippet (recorded, or the default). */
|
|
20
22
|
readonly viewport: Viewport;
|
|
21
23
|
/** Whether the snippet's viewport came from the bundle (vs. the default). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-serve.d.ts","sourceRoot":"","sources":["../../../src/serve/run-serve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKhF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"run-serve.d.ts","sourceRoot":"","sources":["../../../src/serve/run-serve.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAKhF,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,WAAW,WAAW;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA4B7E"}
|
package/src/serve/run-serve.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve, join } from "node:path";
|
|
2
2
|
import { stat } from "node:fs/promises";
|
|
3
|
-
import { buildEmbedSnippet } from "../
|
|
4
|
-
import { localViewUrl } from "
|
|
3
|
+
import { buildEmbedSnippet, buildEnhancedEmbedSnippet } from "../embed/embed-snippet.js";
|
|
4
|
+
import { localViewUrl } from "./local-url.js";
|
|
5
5
|
import { readBundleViewport } from "../bundle/read-viewport.js";
|
|
6
6
|
import { startBundleServer } from "./static-server.js";
|
|
7
7
|
/** The servable entry every packed bundle contains at its root. */
|
|
@@ -30,6 +30,7 @@ export async function runServe(options) {
|
|
|
30
30
|
const url = localViewUrl(handle.url);
|
|
31
31
|
const { viewport, recorded } = await readBundleViewport(resolvedDir);
|
|
32
32
|
const snippet = buildEmbedSnippet({ embedUrl: url, viewport });
|
|
33
|
-
|
|
33
|
+
const enhancedSnippet = buildEnhancedEmbedSnippet({ embedUrl: url, viewport });
|
|
34
|
+
return { handle, url, snippet, enhancedSnippet, viewport, recordedViewport: recorded };
|
|
34
35
|
}
|
|
35
36
|
//# sourceMappingURL=run-serve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-serve.js","sourceRoot":"","sources":["../../../src/serve/run-serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"run-serve.js","sourceRoot":"","sources":["../../../src/serve/run-serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,oBAAoB,CAAC;AAEhF,mEAAmE;AACnE,MAAM,UAAU,GAAG,YAAY,CAAC;AA2BhC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,SAAS,iEAAiE,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,MAAM,UAAU,OAAO,OAAO,CAAC,SAAS,2DAA2D,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,yBAAyB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE/E,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACzF,CAAC"}
|
package/src/serve/run-serve.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolve, join } from "node:path";
|
|
2
2
|
import { stat } from "node:fs/promises";
|
|
3
|
-
import { buildEmbedSnippet } from "../
|
|
4
|
-
import { localViewUrl } from "
|
|
3
|
+
import { buildEmbedSnippet, buildEnhancedEmbedSnippet } from "../embed/embed-snippet.js";
|
|
4
|
+
import { localViewUrl } from "./local-url.js";
|
|
5
5
|
import { readBundleViewport } from "../bundle/read-viewport.js";
|
|
6
6
|
import type { Viewport } from "../pack/viewport.js";
|
|
7
7
|
import { startBundleServer, type BundleServerHandle } from "./static-server.js";
|
|
@@ -26,6 +26,8 @@ export interface ServeResult {
|
|
|
26
26
|
readonly url: string;
|
|
27
27
|
/** A ready-to-paste responsive <iframe> snippet for this URL. */
|
|
28
28
|
readonly snippet: string;
|
|
29
|
+
/** The optional <scenar-embed> loader snippet (auto-fit + theme sync). */
|
|
30
|
+
readonly enhancedSnippet: string;
|
|
29
31
|
/** The viewport used for the snippet (recorded, or the default). */
|
|
30
32
|
readonly viewport: Viewport;
|
|
31
33
|
/** Whether the snippet's viewport came from the bundle (vs. the default). */
|
|
@@ -63,6 +65,7 @@ export async function runServe(options: RunServeOptions): Promise<ServeResult> {
|
|
|
63
65
|
const url = localViewUrl(handle.url);
|
|
64
66
|
const { viewport, recorded } = await readBundleViewport(resolvedDir);
|
|
65
67
|
const snippet = buildEmbedSnippet({ embedUrl: url, viewport });
|
|
68
|
+
const enhancedSnippet = buildEnhancedEmbedSnippet({ embedUrl: url, viewport });
|
|
66
69
|
|
|
67
|
-
return { handle, url, snippet, viewport, recordedViewport: recorded };
|
|
70
|
+
return { handle, url, snippet, enhancedSnippet, viewport, recordedViewport: recorded };
|
|
68
71
|
}
|