@slicemedia/devkit-cli 0.0.0-bootstrap.0 → 0.1.1
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 +46 -3
- package/bin/slicemedia-devkit.js +2 -0
- package/dist/args.d.ts +10 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +48 -0
- package/dist/args.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +4 -0
- package/dist/bin.js.map +1 -0
- package/dist/build.d.ts +19 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +73 -0
- package/dist/build.js.map +1 -0
- package/dist/commands.d.ts +18 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +286 -0
- package/dist/commands.js.map +1 -0
- package/dist/dev.d.ts +8 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +20 -0
- package/dist/dev.js.map +1 -0
- package/dist/discovery.d.ts +3 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +216 -0
- package/dist/discovery.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +8 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +28 -0
- package/dist/output.js.map +1 -0
- package/dist/sanitize.d.ts +22 -0
- package/dist/sanitize.d.ts.map +1 -0
- package/dist/sanitize.js +342 -0
- package/dist/sanitize.js.map +1 -0
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/webflow/client.d.ts +75 -0
- package/dist/webflow/client.d.ts.map +1 -0
- package/dist/webflow/client.js +186 -0
- package/dist/webflow/client.js.map +1 -0
- package/dist/webflow/scan.d.ts +17 -0
- package/dist/webflow/scan.d.ts.map +1 -0
- package/dist/webflow/scan.js +51 -0
- package/dist/webflow/scan.js.map +1 -0
- package/package.json +48 -8
package/README.md
CHANGED
|
@@ -1,4 +1,47 @@
|
|
|
1
|
-
#
|
|
1
|
+
# `@slicemedia/devkit-cli`
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Local development, project builds, sanitization, addon metadata, and read-only Webflow inspection.
|
|
4
|
+
The CLI contains no Webflow write or publish commands.
|
|
5
|
+
|
|
6
|
+
Run the `0.1.0` release candidate directly through the npm `next` tag:
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm exec --package=@slicemedia/devkit-cli@next -- slicemedia-devkit help
|
|
10
|
+
pnpm dlx @slicemedia/devkit-cli@next help
|
|
11
|
+
yarn dlx @slicemedia/devkit-cli@next help
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
For repeated use, install it in a project and call `slicemedia-devkit` from that project's scripts,
|
|
15
|
+
or install it globally with `npm install --global @slicemedia/devkit-cli@next`.
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
slicemedia-devkit dev
|
|
19
|
+
slicemedia-devkit build
|
|
20
|
+
slicemedia-devkit doctor
|
|
21
|
+
slicemedia-devkit catalog
|
|
22
|
+
slicemedia-devkit explain example
|
|
23
|
+
slicemedia-devkit sanitize
|
|
24
|
+
slicemedia-devkit webflow components --site "$SLICEMEDIA_WEBFLOW_SITE_ID"
|
|
25
|
+
slicemedia-devkit webflow scan --url https://example.webflow.io
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`slicemedia-devkit build` compiles `src/main.ts` into `dist/project.js` as one ES2018 IIFE. If the entry imports
|
|
29
|
+
CSS, it also emits `dist/project.css`. Paths can be changed with `--entry`, `--out-dir`,
|
|
30
|
+
`--script-file`, and `--css-file`.
|
|
31
|
+
|
|
32
|
+
Every command supports `--json`. API-backed inspection accepts `WEBFLOW_OAUTH_ACCESS_TOKEN` or
|
|
33
|
+
`WEBFLOW_API_TOKEN` where the endpoint permits it. Site custom-code scanning specifically requires
|
|
34
|
+
an OAuth access token.
|
|
35
|
+
|
|
36
|
+
## Support and security
|
|
37
|
+
|
|
38
|
+
See Slice Media's [support policy](https://github.com/slicemedia/.github/blob/main/SUPPORT.md) for
|
|
39
|
+
help and maintenance expectations. Report vulnerabilities through the
|
|
40
|
+
[DevKit security policy](../../SECURITY.md), not a public issue.
|
|
41
|
+
|
|
42
|
+
## Project notice
|
|
43
|
+
|
|
44
|
+
Licensed under MIT. This package is independently developed by Slice Media and is not affiliated
|
|
45
|
+
with, endorsed by, or sponsored by Webflow, Inc. Webflow and related marks belong to their
|
|
46
|
+
respective owners. AI tools materially assisted its implementation and documentation; production
|
|
47
|
+
use still requires human review, accessibility and security checks, and project-specific testing.
|
package/dist/args.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface ParsedArgs {
|
|
2
|
+
readonly positionals: readonly string[];
|
|
3
|
+
readonly options: ReadonlyMap<string, readonly string[]>;
|
|
4
|
+
}
|
|
5
|
+
export declare function parseArgs(argv: readonly string[]): ParsedArgs;
|
|
6
|
+
export declare function hasFlag(args: ParsedArgs, name: string): boolean;
|
|
7
|
+
export declare function getOption(args: ParsedArgs, name: string): string | undefined;
|
|
8
|
+
export declare function getOptions(args: ParsedArgs, name: string): readonly string[];
|
|
9
|
+
export declare function getIntegerOption(args: ParsedArgs, name: string, fallback: number): number;
|
|
10
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CAC1D;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CA0B7D;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG/D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzF"}
|
package/dist/args.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const booleanOptions = new Set(["git-history", "help", "json", "yes"]);
|
|
2
|
+
export function parseArgs(argv) {
|
|
3
|
+
const positionals = [];
|
|
4
|
+
const options = new Map();
|
|
5
|
+
for (let index = 0; index < argv.length; index += 1) {
|
|
6
|
+
const value = argv[index];
|
|
7
|
+
if (value === undefined)
|
|
8
|
+
continue;
|
|
9
|
+
if (!value.startsWith("--")) {
|
|
10
|
+
positionals.push(value);
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
const equalsAt = value.indexOf("=");
|
|
14
|
+
const key = value.slice(2, equalsAt === -1 ? undefined : equalsAt);
|
|
15
|
+
const inlineValue = equalsAt === -1 ? undefined : value.slice(equalsAt + 1);
|
|
16
|
+
const next = argv[index + 1];
|
|
17
|
+
const optionValue = inlineValue ??
|
|
18
|
+
(!booleanOptions.has(key) && next !== undefined && !next.startsWith("--") ? next : "true");
|
|
19
|
+
if (inlineValue === undefined && optionValue === next)
|
|
20
|
+
index += 1;
|
|
21
|
+
const values = options.get(key) ?? [];
|
|
22
|
+
values.push(optionValue);
|
|
23
|
+
options.set(key, values);
|
|
24
|
+
}
|
|
25
|
+
return { positionals, options };
|
|
26
|
+
}
|
|
27
|
+
export function hasFlag(args, name) {
|
|
28
|
+
const value = args.options.get(name)?.at(-1);
|
|
29
|
+
return value !== undefined && value !== "false";
|
|
30
|
+
}
|
|
31
|
+
export function getOption(args, name) {
|
|
32
|
+
const value = args.options.get(name)?.at(-1);
|
|
33
|
+
return value === "true" ? undefined : value;
|
|
34
|
+
}
|
|
35
|
+
export function getOptions(args, name) {
|
|
36
|
+
return (args.options.get(name) ?? []).filter((value) => value !== "true");
|
|
37
|
+
}
|
|
38
|
+
export function getIntegerOption(args, name, fallback) {
|
|
39
|
+
const value = getOption(args, name);
|
|
40
|
+
if (value === undefined)
|
|
41
|
+
return fallback;
|
|
42
|
+
const parsed = Number.parseInt(value, 10);
|
|
43
|
+
if (!Number.isSafeInteger(parsed) || parsed < 0) {
|
|
44
|
+
throw new Error(`--${name} must be a non-negative integer.`);
|
|
45
|
+
}
|
|
46
|
+
return parsed;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=args.js.map
|
package/dist/args.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/build.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type InlineConfig } from "vite";
|
|
2
|
+
export type ViteBuild = (config: InlineConfig) => Promise<unknown>;
|
|
3
|
+
export interface BuildSiteBundleOptions {
|
|
4
|
+
readonly root: string;
|
|
5
|
+
readonly entry?: string;
|
|
6
|
+
readonly outDir?: string;
|
|
7
|
+
readonly scriptFileName?: string;
|
|
8
|
+
readonly cssFileName?: string;
|
|
9
|
+
readonly build?: ViteBuild;
|
|
10
|
+
}
|
|
11
|
+
export interface BuildSiteBundleResult {
|
|
12
|
+
readonly entryPath: string;
|
|
13
|
+
readonly outDir: string;
|
|
14
|
+
readonly scriptPath: string;
|
|
15
|
+
readonly cssPath?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Build one project-owned browser bundle without making any hosting assumptions. */
|
|
18
|
+
export declare function buildSiteBundle(options: BuildSiteBundleOptions): Promise<BuildSiteBundleResult>;
|
|
19
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qFAAqF;AACrF,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA8BhC"}
|
package/dist/build.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { access } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { build as viteBuild } from "vite";
|
|
4
|
+
/** Build one project-owned browser bundle without making any hosting assumptions. */
|
|
5
|
+
export async function buildSiteBundle(options) {
|
|
6
|
+
const root = path.resolve(options.root);
|
|
7
|
+
const entryPath = path.resolve(root, options.entry ?? "src/main.ts");
|
|
8
|
+
const outDir = path.resolve(root, options.outDir ?? "dist");
|
|
9
|
+
const scriptFileName = validateOutputFileName(options.scriptFileName ?? "project.js", ".js", "scriptFileName");
|
|
10
|
+
const cssFileName = validateOutputFileName(options.cssFileName ?? "project.css", ".css", "cssFileName");
|
|
11
|
+
await assertFile(entryPath, "Project entry");
|
|
12
|
+
await (options.build ?? viteBuild)(createBuildConfig({ root, entryPath, outDir, scriptFileName, cssFileName }));
|
|
13
|
+
const scriptPath = path.join(outDir, scriptFileName);
|
|
14
|
+
await assertFile(scriptPath, "Built script");
|
|
15
|
+
const cssPath = path.join(outDir, cssFileName);
|
|
16
|
+
return {
|
|
17
|
+
entryPath,
|
|
18
|
+
outDir,
|
|
19
|
+
scriptPath,
|
|
20
|
+
...((await exists(cssPath)) ? { cssPath } : {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function createBuildConfig(input) {
|
|
24
|
+
return {
|
|
25
|
+
root: input.root,
|
|
26
|
+
configFile: false,
|
|
27
|
+
logLevel: "silent",
|
|
28
|
+
build: {
|
|
29
|
+
target: "es2018",
|
|
30
|
+
outDir: input.outDir,
|
|
31
|
+
emptyOutDir: true,
|
|
32
|
+
minify: "oxc",
|
|
33
|
+
sourcemap: false,
|
|
34
|
+
cssCodeSplit: false,
|
|
35
|
+
// Webflow project bundles should not create an implicit asset-hosting contract.
|
|
36
|
+
assetsInlineLimit: Number.MAX_SAFE_INTEGER,
|
|
37
|
+
rollupOptions: {
|
|
38
|
+
input: input.entryPath,
|
|
39
|
+
output: {
|
|
40
|
+
format: "iife",
|
|
41
|
+
entryFileNames: input.scriptFileName,
|
|
42
|
+
assetFileNames: (asset) => asset.name === "style.css" ? input.cssFileName : "assets/[name]-[hash][extname]",
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function validateOutputFileName(value, extension, field) {
|
|
49
|
+
if (value.trim() === "" ||
|
|
50
|
+
value !== path.basename(value) ||
|
|
51
|
+
!value.toLowerCase().endsWith(extension)) {
|
|
52
|
+
throw new Error(`${field} must be a plain ${extension} file name.`);
|
|
53
|
+
}
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
async function assertFile(target, label) {
|
|
57
|
+
try {
|
|
58
|
+
await access(target);
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
throw new Error(`${label} does not exist: ${target}`, { cause: error });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function exists(target) {
|
|
65
|
+
try {
|
|
66
|
+
await access(target);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ViteDevServer } from "vite";
|
|
2
|
+
import { buildSiteBundle, type BuildSiteBundleOptions } from "./build.js";
|
|
3
|
+
import { type DevServerOptions } from "./dev.js";
|
|
4
|
+
import { type OutputWriter } from "./output.js";
|
|
5
|
+
import { WebflowClient } from "./webflow/client.js";
|
|
6
|
+
export interface CliDependencies {
|
|
7
|
+
readonly cwd?: string;
|
|
8
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
9
|
+
readonly writer?: OutputWriter;
|
|
10
|
+
readonly fetch?: typeof fetch;
|
|
11
|
+
readonly createClient?: () => WebflowClient;
|
|
12
|
+
readonly createScriptInspectionClient?: () => WebflowClient;
|
|
13
|
+
readonly buildBundle?: (options: BuildSiteBundleOptions) => ReturnType<typeof buildSiteBundle>;
|
|
14
|
+
readonly startDev?: (options: DevServerOptions) => Promise<Pick<ViteDevServer, "resolvedUrls">>;
|
|
15
|
+
}
|
|
16
|
+
export declare function runCli(argv: readonly string[], dependencies?: CliDependencies): Promise<number>;
|
|
17
|
+
export declare function isSupportedNodeVersion(version: string): boolean;
|
|
18
|
+
//# sourceMappingURL=commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjE,OAAO,EAA8B,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAoC,MAAM,qBAAqB,CAAC;AAGtF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,aAAa,CAAC;IAC5C,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,aAAa,CAAC;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC/F,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;CACjG;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,YAAY,GAAE,eAAoB,GACjC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAiFD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM/D"}
|
package/dist/commands.js
ADDED
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { access } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getIntegerOption, getOption, getOptions, hasFlag, parseArgs } from "./args.js";
|
|
4
|
+
import { buildSiteBundle } from "./build.js";
|
|
5
|
+
import { startDevServer } from "./dev.js";
|
|
6
|
+
import { discoverAddonEntries } from "./discovery.js";
|
|
7
|
+
import { consoleWriter, writeResult } from "./output.js";
|
|
8
|
+
import { forbiddenTermsFromEnvironment, sanitizeTree } from "./sanitize.js";
|
|
9
|
+
import { WebflowClient, webflowOAuthTokenFromEnvironment } from "./webflow/client.js";
|
|
10
|
+
import { scanApiScripts, scanRenderedScripts } from "./webflow/scan.js";
|
|
11
|
+
export async function runCli(argv, dependencies = {}) {
|
|
12
|
+
const args = parseArgs(argv);
|
|
13
|
+
const json = hasFlag(args, "json");
|
|
14
|
+
const writer = dependencies.writer ?? consoleWriter;
|
|
15
|
+
const cwd = path.resolve(dependencies.cwd ?? process.cwd());
|
|
16
|
+
const env = dependencies.env ?? process.env;
|
|
17
|
+
try {
|
|
18
|
+
const result = await dispatch(args.positionals, args, {
|
|
19
|
+
cwd,
|
|
20
|
+
env,
|
|
21
|
+
fetch: dependencies.fetch ?? fetch,
|
|
22
|
+
createClient: dependencies.createClient ??
|
|
23
|
+
(() => new WebflowClient({ fetch: dependencies.fetch ?? fetch, token: tokenFromEnv(env) })),
|
|
24
|
+
createScriptInspectionClient: dependencies.createScriptInspectionClient ??
|
|
25
|
+
dependencies.createClient ??
|
|
26
|
+
(() => new WebflowClient({
|
|
27
|
+
fetch: dependencies.fetch ?? fetch,
|
|
28
|
+
token: webflowOAuthTokenFromEnvironment(env),
|
|
29
|
+
})),
|
|
30
|
+
buildBundle: dependencies.buildBundle ?? buildSiteBundle,
|
|
31
|
+
startDev: dependencies.startDev ?? startDevServer,
|
|
32
|
+
});
|
|
33
|
+
writeResult(result, json, writer);
|
|
34
|
+
return result.ok ? 0 : 1;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
const result = {
|
|
39
|
+
ok: false,
|
|
40
|
+
command: args.positionals.join(" ") || "help",
|
|
41
|
+
summary: message,
|
|
42
|
+
data: { error: message },
|
|
43
|
+
};
|
|
44
|
+
if (json)
|
|
45
|
+
writeResult(result, true, writer);
|
|
46
|
+
else
|
|
47
|
+
writer.error(`[ERROR] ${message}`);
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function dispatch(positionals, args, context) {
|
|
52
|
+
const command = positionals[0] ?? "help";
|
|
53
|
+
if (command === "help" || command === "--help")
|
|
54
|
+
return helpResult();
|
|
55
|
+
if (command === "doctor")
|
|
56
|
+
return runDoctor(context.cwd, context.env);
|
|
57
|
+
if (command === "sanitize")
|
|
58
|
+
return runSanitize(args, context);
|
|
59
|
+
if (command === "catalog")
|
|
60
|
+
return runCatalog(args, context.cwd);
|
|
61
|
+
if (command === "explain")
|
|
62
|
+
return runExplain(positionals[1], args, context.cwd);
|
|
63
|
+
if (command === "build")
|
|
64
|
+
return runBuild(args, context);
|
|
65
|
+
if (command === "dev")
|
|
66
|
+
return runDev(args, context);
|
|
67
|
+
if (command === "webflow")
|
|
68
|
+
return runWebflow(positionals.slice(1), args, context);
|
|
69
|
+
throw new Error(`Unknown command ${JSON.stringify(command)}. Run slicemedia-devkit help.`);
|
|
70
|
+
}
|
|
71
|
+
function helpResult() {
|
|
72
|
+
return {
|
|
73
|
+
ok: true,
|
|
74
|
+
command: "help",
|
|
75
|
+
summary: "Slice Media DevKit CLI commands",
|
|
76
|
+
data: [
|
|
77
|
+
"doctor",
|
|
78
|
+
"sanitize [--git-history]",
|
|
79
|
+
"catalog",
|
|
80
|
+
"explain <addon>",
|
|
81
|
+
"build [--entry src/main.ts] [--out-dir dist] [--script-file project.js] [--css-file project.css]",
|
|
82
|
+
"dev [--host 127.0.0.1] [--port 5173]",
|
|
83
|
+
"webflow components --site <id>",
|
|
84
|
+
"webflow scan (--site <id> | --url <url>)",
|
|
85
|
+
],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
async function runDoctor(root, env) {
|
|
89
|
+
const checks = [];
|
|
90
|
+
const supportedNode = isSupportedNodeVersion(process.versions.node);
|
|
91
|
+
checks.push({
|
|
92
|
+
name: "node",
|
|
93
|
+
status: supportedNode ? "pass" : "fail",
|
|
94
|
+
detail: supportedNode
|
|
95
|
+
? `Node ${process.versions.node}`
|
|
96
|
+
: `Expected Node 22.13+ or Node 24; found ${process.versions.node}`,
|
|
97
|
+
});
|
|
98
|
+
checks.push({
|
|
99
|
+
name: "package",
|
|
100
|
+
status: (await exists(path.join(root, "package.json"))) ? "pass" : "fail",
|
|
101
|
+
detail: path.join(root, "package.json"),
|
|
102
|
+
});
|
|
103
|
+
checks.push({
|
|
104
|
+
name: "project-entry",
|
|
105
|
+
status: (await exists(path.join(root, "src/main.ts"))) ? "pass" : "warn",
|
|
106
|
+
detail: path.join(root, "src/main.ts"),
|
|
107
|
+
});
|
|
108
|
+
checks.push({
|
|
109
|
+
name: "webflow-auth",
|
|
110
|
+
status: hasToken(env) ? "pass" : "warn",
|
|
111
|
+
detail: hasToken(env) ? "Configured" : "Not configured; required only for API commands",
|
|
112
|
+
});
|
|
113
|
+
const ok = !checks.some((check) => check.status === "fail");
|
|
114
|
+
return {
|
|
115
|
+
ok,
|
|
116
|
+
command: "doctor",
|
|
117
|
+
summary: ok ? "Environment is ready." : "Environment checks failed.",
|
|
118
|
+
data: checks,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export function isSupportedNodeVersion(version) {
|
|
122
|
+
const [major = 0, minor = 0] = version
|
|
123
|
+
.split(".")
|
|
124
|
+
.slice(0, 2)
|
|
125
|
+
.map((part) => Number.parseInt(part, 10));
|
|
126
|
+
return (major === 22 && minor >= 13) || major === 24;
|
|
127
|
+
}
|
|
128
|
+
async function runSanitize(args, context) {
|
|
129
|
+
const root = path.resolve(context.cwd, getOption(args, "root") ?? ".");
|
|
130
|
+
const result = await sanitizeTree({
|
|
131
|
+
root,
|
|
132
|
+
forbiddenTerms: forbiddenTermsFromEnvironment(context.env.SLICEMEDIA_FORBIDDEN_TERMS),
|
|
133
|
+
includeGitHistory: hasFlag(args, "git-history"),
|
|
134
|
+
additionalIgnores: getOptions(args, "ignore"),
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
ok: result.ok,
|
|
138
|
+
command: "sanitize",
|
|
139
|
+
summary: result.ok
|
|
140
|
+
? `Sanitization passed across ${result.scannedFiles} files.`
|
|
141
|
+
: `Sanitization found ${result.findings.length} issue(s).`,
|
|
142
|
+
data: result.findings,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
async function runCatalog(args, cwd) {
|
|
146
|
+
const root = path.resolve(cwd, getOption(args, "root") ?? ".");
|
|
147
|
+
const entries = await discoverAddonEntries(root);
|
|
148
|
+
return {
|
|
149
|
+
ok: true,
|
|
150
|
+
command: "catalog",
|
|
151
|
+
summary: `Discovered ${entries.length} addon(s).`,
|
|
152
|
+
data: entries.map((entry) => ({ ...entry, input: normalizeRelative(root, entry.input) })),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
async function runExplain(name, args, cwd) {
|
|
156
|
+
if (name === undefined)
|
|
157
|
+
throw new Error("Usage: slicemedia-devkit explain <addon>.");
|
|
158
|
+
const root = path.resolve(cwd, getOption(args, "root") ?? ".");
|
|
159
|
+
const entry = (await discoverAddonEntries(root)).find((candidate) => candidate.name === name);
|
|
160
|
+
if (entry === undefined)
|
|
161
|
+
throw new Error(`Unknown addon ${JSON.stringify(name)}.`);
|
|
162
|
+
return {
|
|
163
|
+
ok: true,
|
|
164
|
+
command: "explain",
|
|
165
|
+
summary: `${entry.name}: ${entry.description}`,
|
|
166
|
+
data: { ...entry, input: normalizeRelative(root, entry.input) },
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
async function runBuild(args, context) {
|
|
170
|
+
const root = path.resolve(context.cwd, getOption(args, "root") ?? ".");
|
|
171
|
+
const entry = getOption(args, "entry");
|
|
172
|
+
const outDir = getOption(args, "out-dir");
|
|
173
|
+
const scriptFileName = getOption(args, "script-file");
|
|
174
|
+
const cssFileName = getOption(args, "css-file");
|
|
175
|
+
const buildOptions = {
|
|
176
|
+
root,
|
|
177
|
+
...(entry === undefined ? {} : { entry }),
|
|
178
|
+
...(outDir === undefined ? {} : { outDir }),
|
|
179
|
+
...(scriptFileName === undefined ? {} : { scriptFileName }),
|
|
180
|
+
...(cssFileName === undefined ? {} : { cssFileName }),
|
|
181
|
+
};
|
|
182
|
+
const result = await context.buildBundle(buildOptions);
|
|
183
|
+
const files = [result.scriptPath, ...(result.cssPath === undefined ? [] : [result.cssPath])];
|
|
184
|
+
return {
|
|
185
|
+
ok: true,
|
|
186
|
+
command: "build",
|
|
187
|
+
summary: `Built ${files.length === 1 ? "one site bundle" : "one site bundle and CSS"}.`,
|
|
188
|
+
data: result,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
async function runDev(args, context) {
|
|
192
|
+
const root = path.resolve(context.cwd, getOption(args, "root") ?? ".");
|
|
193
|
+
const host = getOption(args, "host");
|
|
194
|
+
const server = await context.startDev({
|
|
195
|
+
root,
|
|
196
|
+
...(host === undefined ? {} : { host }),
|
|
197
|
+
port: getIntegerOption(args, "port", 5173),
|
|
198
|
+
});
|
|
199
|
+
const firstUrl = server.resolvedUrls?.local[0] ?? server.resolvedUrls?.network[0];
|
|
200
|
+
return {
|
|
201
|
+
ok: true,
|
|
202
|
+
command: "dev",
|
|
203
|
+
summary: `CORS-enabled Vite development server started${firstUrl === undefined ? "." : ` at ${firstUrl}`}`,
|
|
204
|
+
data: { urls: server.resolvedUrls },
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
async function runWebflow(positionals, args, context) {
|
|
208
|
+
const command = positionals[0];
|
|
209
|
+
if (command === "components") {
|
|
210
|
+
const siteId = requireSiteId(args, context.env);
|
|
211
|
+
const componentId = getOption(args, "component");
|
|
212
|
+
if (componentId !== undefined) {
|
|
213
|
+
const properties = await context.createClient().listComponentProperties(siteId, componentId);
|
|
214
|
+
return {
|
|
215
|
+
ok: true,
|
|
216
|
+
command: "webflow components",
|
|
217
|
+
summary: `Found ${properties.length} component ${properties.length === 1 ? "property" : "properties"}.`,
|
|
218
|
+
data: properties,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const components = await context.createClient().listComponents(siteId);
|
|
222
|
+
return {
|
|
223
|
+
ok: true,
|
|
224
|
+
command: "webflow components",
|
|
225
|
+
summary: `Found ${components.length} component(s).`,
|
|
226
|
+
data: components,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
if (command === "scan") {
|
|
230
|
+
const pageUrl = getOption(args, "url");
|
|
231
|
+
if (pageUrl !== undefined) {
|
|
232
|
+
const scripts = await scanRenderedScripts(pageUrl, context.fetch);
|
|
233
|
+
return {
|
|
234
|
+
ok: true,
|
|
235
|
+
command: "webflow scan",
|
|
236
|
+
summary: `Found ${scripts.length} rendered script tag(s).`,
|
|
237
|
+
data: scripts,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const siteId = requireSiteId(args, context.env);
|
|
241
|
+
const scan = await scanApiScripts(context.createScriptInspectionClient(), siteId);
|
|
242
|
+
return {
|
|
243
|
+
ok: true,
|
|
244
|
+
command: "webflow scan",
|
|
245
|
+
summary: `Found ${scan.registered.length} registered and ${scan.applied.length} applied script(s).`,
|
|
246
|
+
data: scan,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
throw new Error("Usage: slicemedia-devkit webflow <components|scan>.");
|
|
250
|
+
}
|
|
251
|
+
function requireSiteId(args, env) {
|
|
252
|
+
const siteId = getOption(args, "site") ?? env.SLICEMEDIA_WEBFLOW_SITE_ID ?? env.WEBFLOW_SITE_ID;
|
|
253
|
+
if (siteId === undefined || siteId.trim() === "") {
|
|
254
|
+
throw new Error("Provide --site or set SLICEMEDIA_WEBFLOW_SITE_ID.");
|
|
255
|
+
}
|
|
256
|
+
return siteId;
|
|
257
|
+
}
|
|
258
|
+
function tokenFromEnv(env) {
|
|
259
|
+
const token = env.WEBFLOW_OAUTH_ACCESS_TOKEN ?? env.WEBFLOW_OAUTH_TOKEN ?? env.WEBFLOW_API_TOKEN;
|
|
260
|
+
if (token === undefined || token.trim() === "") {
|
|
261
|
+
throw new Error("Set WEBFLOW_OAUTH_ACCESS_TOKEN or WEBFLOW_API_TOKEN.");
|
|
262
|
+
}
|
|
263
|
+
return token;
|
|
264
|
+
}
|
|
265
|
+
function hasToken(env) {
|
|
266
|
+
try {
|
|
267
|
+
tokenFromEnv(env);
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
async function exists(target) {
|
|
275
|
+
try {
|
|
276
|
+
await access(target);
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
function normalizeRelative(root, target) {
|
|
284
|
+
return path.relative(root, target).split(path.sep).join("/");
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
|
package/dist/dev.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ViteDevServer } from "vite";
|
|
2
|
+
export interface DevServerOptions {
|
|
3
|
+
readonly root: string;
|
|
4
|
+
readonly host?: string;
|
|
5
|
+
readonly port?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function startDevServer(options: DevServerOptions): Promise<ViteDevServer>;
|
|
8
|
+
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,MAAM,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAiBtF"}
|
package/dist/dev.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createServer } from "vite";
|
|
2
|
+
export async function startDevServer(options) {
|
|
3
|
+
const server = await createServer({
|
|
4
|
+
root: options.root,
|
|
5
|
+
logLevel: "silent",
|
|
6
|
+
server: {
|
|
7
|
+
host: options.host ?? "127.0.0.1",
|
|
8
|
+
port: options.port ?? 5173,
|
|
9
|
+
strictPort: true,
|
|
10
|
+
cors: true,
|
|
11
|
+
headers: {
|
|
12
|
+
"Access-Control-Allow-Origin": "*",
|
|
13
|
+
"Cache-Control": "no-store",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
await server.listen();
|
|
18
|
+
return server;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=dev.js.map
|
package/dist/dev.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAsB,MAAM,MAAM,CAAC;AAQxD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAyB;IAC5D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;YACjC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,6BAA6B,EAAE,GAAG;gBAClC,eAAe,EAAE,UAAU;aAC5B;SACF;KACF,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,YAAY,CAAC;AA2C9D,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAYvF"}
|