@lovision/plugin-dev 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +49 -0
  2. package/dist/build.d.ts +16 -0
  3. package/dist/build.d.ts.map +1 -0
  4. package/dist/build.js +108 -0
  5. package/dist/build.js.map +1 -0
  6. package/dist/cli.d.ts +3 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +123 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/create-plugin.d.ts +19 -0
  11. package/dist/create-plugin.d.ts.map +1 -0
  12. package/dist/create-plugin.js +186 -0
  13. package/dist/create-plugin.js.map +1 -0
  14. package/dist/dev.d.ts +13 -0
  15. package/dist/dev.d.ts.map +1 -0
  16. package/dist/dev.js +206 -0
  17. package/dist/dev.js.map +1 -0
  18. package/dist/index.d.ts +13 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +7 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/publish.d.ts +15 -0
  23. package/dist/publish.d.ts.map +1 -0
  24. package/dist/publish.js +55 -0
  25. package/dist/publish.js.map +1 -0
  26. package/dist/shared.d.ts +93 -0
  27. package/dist/shared.d.ts.map +1 -0
  28. package/dist/shared.js +436 -0
  29. package/dist/shared.js.map +1 -0
  30. package/dist/templates/ai-layout-assistant/README.md.template +24 -0
  31. package/dist/templates/ai-layout-assistant/eslint.config.mjs +19 -0
  32. package/dist/templates/ai-layout-assistant/manifest.json.template +38 -0
  33. package/dist/templates/ai-layout-assistant/package.json.template +18 -0
  34. package/dist/templates/ai-layout-assistant/src/main.ts.template +345 -0
  35. package/dist/templates/ai-layout-assistant/tsconfig.json +14 -0
  36. package/dist/templates/ai-layout-assistant/ui.html.template +114 -0
  37. package/dist/templates/asset-browser/README.md.template +24 -0
  38. package/dist/templates/asset-browser/eslint.config.mjs +19 -0
  39. package/dist/templates/asset-browser/manifest.json.template +29 -0
  40. package/dist/templates/asset-browser/package.json.template +18 -0
  41. package/dist/templates/asset-browser/src/main.ts.template +177 -0
  42. package/dist/templates/asset-browser/tsconfig.json +14 -0
  43. package/dist/templates/asset-browser/ui.html.template +137 -0
  44. package/dist/templates/base/README.md.template +34 -0
  45. package/dist/templates/base/eslint.config.mjs +19 -0
  46. package/dist/templates/base/manifest.json.template +22 -0
  47. package/dist/templates/base/package.json.template +18 -0
  48. package/dist/templates/base/src/main.ts.template +20 -0
  49. package/dist/templates/base/tsconfig.json +14 -0
  50. package/dist/templates/batch-layout-organizer/README.md.template +24 -0
  51. package/dist/templates/batch-layout-organizer/eslint.config.mjs +19 -0
  52. package/dist/templates/batch-layout-organizer/manifest.json.template +31 -0
  53. package/dist/templates/batch-layout-organizer/package.json.template +18 -0
  54. package/dist/templates/batch-layout-organizer/src/main.ts.template +324 -0
  55. package/dist/templates/batch-layout-organizer/tsconfig.json +14 -0
  56. package/dist/templates/batch-layout-organizer/ui.html.template +116 -0
  57. package/dist/templates/data-filler-full/README.md.template +32 -0
  58. package/dist/templates/data-filler-full/eslint.config.mjs +19 -0
  59. package/dist/templates/data-filler-full/manifest.json.template +31 -0
  60. package/dist/templates/data-filler-full/package.json.template +18 -0
  61. package/dist/templates/data-filler-full/src/main.ts.template +412 -0
  62. package/dist/templates/data-filler-full/tsconfig.json +14 -0
  63. package/dist/templates/data-filler-full/ui.html.template +221 -0
  64. package/dist/templates/data-filler-lite/README.md.template +47 -0
  65. package/dist/templates/data-filler-lite/eslint.config.mjs +19 -0
  66. package/dist/templates/data-filler-lite/manifest.json.template +29 -0
  67. package/dist/templates/data-filler-lite/package.json.template +18 -0
  68. package/dist/templates/data-filler-lite/src/main.ts.template +222 -0
  69. package/dist/templates/data-filler-lite/tsconfig.json +14 -0
  70. package/dist/templates/data-filler-lite/ui.html.template +180 -0
  71. package/dist/templates/design-lint-panel/README.md.template +33 -0
  72. package/dist/templates/design-lint-panel/eslint.config.mjs +19 -0
  73. package/dist/templates/design-lint-panel/manifest.json.template +29 -0
  74. package/dist/templates/design-lint-panel/package.json.template +18 -0
  75. package/dist/templates/design-lint-panel/src/main.ts.template +221 -0
  76. package/dist/templates/design-lint-panel/tsconfig.json +14 -0
  77. package/dist/templates/design-lint-panel/ui.html.template +172 -0
  78. package/dist/templates/export-selection/README.md.template +26 -0
  79. package/dist/templates/export-selection/eslint.config.mjs +19 -0
  80. package/dist/templates/export-selection/manifest.json.template +31 -0
  81. package/dist/templates/export-selection/package.json.template +18 -0
  82. package/dist/templates/export-selection/src/main.ts.template +386 -0
  83. package/dist/templates/export-selection/tsconfig.json +14 -0
  84. package/dist/templates/export-selection/ui.html.template +163 -0
  85. package/dist/templates/review-submitter/README.md.template +24 -0
  86. package/dist/templates/review-submitter/eslint.config.mjs +19 -0
  87. package/dist/templates/review-submitter/manifest.json.template +35 -0
  88. package/dist/templates/review-submitter/package.json.template +18 -0
  89. package/dist/templates/review-submitter/src/main.ts.template +306 -0
  90. package/dist/templates/review-submitter/tsconfig.json +14 -0
  91. package/dist/templates/review-submitter/ui.html.template +114 -0
  92. package/dist/validate.d.ts +8 -0
  93. package/dist/validate.d.ts.map +1 -0
  94. package/dist/validate.js +42 -0
  95. package/dist/validate.js.map +1 -0
  96. package/package.json +46 -0
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # @lovision/plugin-dev
2
+
3
+ Local development toolchain for Instinct plugins.
4
+
5
+ Provides:
6
+
7
+ - `plugin-dev dev`
8
+ - serves `manifest.json` and the built worker bundle over local HTTPS
9
+ - compatible with the existing sideload/session flow
10
+ - `plugin-dev build`
11
+ - emits a single-file bundle JSON accepted by the host upload flow
12
+ - `plugin-dev validate`
13
+ - runs manifest and bundle validation with actionable diagnostics
14
+ - `create-instinct-plugin`
15
+ - scaffolds a starter plugin project
16
+
17
+ This package is tooling-only. Worker runtime APIs stay in
18
+ `@lovision/plugin-sdk`.
19
+
20
+ Task-first external-developer guides live under:
21
+
22
+ - [`docs/plugin-system-guides/external-developers/README.md`](../../docs/plugin-system-guides/external-developers/README.md)
23
+ - [`Getting Started`](../../docs/plugin-system-guides/external-developers/getting-started.md)
24
+ - [`Manifest, Permissions, and Network Allowlist`](../../docs/plugin-system-guides/external-developers/manifest-permissions-and-network.md)
25
+ - [`Diagnostics: Lanes, Rows, and Traces`](../../docs/plugin-system-guides/external-developers/diagnostics.md)
26
+
27
+ ## Typical flow
28
+
29
+ ```bash
30
+ create-instinct-plugin my-plugin
31
+ cd my-plugin
32
+ npm install
33
+ bun run dev
34
+ ```
35
+
36
+ The `dev` command prints a `manifestUrl` that can be added through the editor's
37
+ plugin development surface.
38
+
39
+ To build a formal-installable artifact:
40
+
41
+ ```bash
42
+ bun run build
43
+ ```
44
+
45
+ To validate the current project:
46
+
47
+ ```bash
48
+ bun run validate
49
+ ```
@@ -0,0 +1,16 @@
1
+ import { type PluginBundle } from "@lovision/plugin-spec";
2
+ import { type ToolDiagnostic } from "./shared.js";
3
+ export type BuildPluginBundleOptions = {
4
+ outfile?: string;
5
+ projectRoot?: string;
6
+ write?: boolean;
7
+ };
8
+ export type BuildPluginBundleResult = {
9
+ bundle: PluginBundle;
10
+ outputFile: string | null;
11
+ warnings: readonly ToolDiagnostic[];
12
+ };
13
+ export declare function buildPluginBundle(options?: BuildPluginBundleOptions): Promise<BuildPluginBundleResult>;
14
+ export declare function buildMainBundleSource(entrypointPath: string): Promise<string>;
15
+ export declare function buildRuntimeSource(entrypointPath: string): Promise<string>;
16
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,YAAY,EAGlB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAQL,KAAK,cAAc,EAEpB,MAAM,aAAa,CAAC;AAIrB,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA4DlC;AAED,wBAAsB,qBAAqB,CACzC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,CAyDjB"}
package/dist/build.js ADDED
@@ -0,0 +1,108 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { dirname, join, resolve } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { loadBundle } from "@lovision/plugin-host";
7
+ import { SUPPORTED_PACKAGE_FORMAT, SUPPORTED_PACKAGE_FORMAT_V2, } from "@lovision/plugin-spec";
8
+ import { createCryptoRandomUuidPolyfill, ensurePluginProjectExists, manifestDiagnosticToToolDiagnostic, parseJsonText, readOptionalUiEntry, readProjectResourceText, sanitizeFileStem, ToolingError, } from "./shared.js";
9
+ const execFileAsync = promisify(execFile);
10
+ export async function buildPluginBundle(options = {}) {
11
+ const paths = await ensurePluginProjectExists(options.projectRoot);
12
+ const manifestText = await Bun.file(paths.manifestPath).text();
13
+ const manifest = parseJsonText(manifestText, "manifest.json");
14
+ const mainBundleSource = await buildMainBundleSource(paths.sourceEntryPath);
15
+ const uiEntry = readOptionalUiEntry(manifest);
16
+ const bundleCandidate = uiEntry === null
17
+ ? {
18
+ packageFormat: SUPPORTED_PACKAGE_FORMAT,
19
+ manifest,
20
+ mainBundle: mainBundleSource,
21
+ }
22
+ : {
23
+ packageFormat: SUPPORTED_PACKAGE_FORMAT_V2,
24
+ manifest,
25
+ mainBundle: mainBundleSource,
26
+ uiResources: {
27
+ [uiEntry]: {
28
+ contentType: "text/html; charset=utf-8",
29
+ source: await readProjectResourceText(paths.projectRoot, uiEntry),
30
+ },
31
+ },
32
+ };
33
+ const validation = loadBundle(bundleCandidate);
34
+ if (!validation.ok) {
35
+ throw new ToolingError("Plugin bundle validation failed", validation.errors
36
+ .map(manifestDiagnosticToToolDiagnostic)
37
+ .concat(validation.warnings.map(manifestDiagnosticToToolDiagnostic)));
38
+ }
39
+ const outputFile = options.write === false
40
+ ? null
41
+ : resolve(options.outfile ??
42
+ join(paths.distDir, `${sanitizeFileStem(validation.manifest.id)}.bundle.json`));
43
+ if (outputFile) {
44
+ await mkdir(dirname(outputFile), { recursive: true });
45
+ await writeFile(outputFile, JSON.stringify(validation.bundle, null, 2), "utf8");
46
+ }
47
+ return {
48
+ bundle: validation.bundle,
49
+ outputFile,
50
+ warnings: validation.warnings.map(manifestDiagnosticToToolDiagnostic),
51
+ };
52
+ }
53
+ export async function buildMainBundleSource(entrypointPath) {
54
+ const runtimeSource = await buildRuntimeSource(entrypointPath);
55
+ return `${createCryptoRandomUuidPolyfill()}\n${runtimeSource}`;
56
+ }
57
+ export async function buildRuntimeSource(entrypointPath) {
58
+ const outdir = await mkdtemp(join(tmpdir(), "plugin-dev-build-"));
59
+ const outfile = join(outdir, "main.js");
60
+ const projectRoot = resolve(entrypointPath, "..", "..");
61
+ try {
62
+ await execFileAsync("bun", [
63
+ "build",
64
+ "--target=browser",
65
+ "--format=esm",
66
+ "--sourcemap=none",
67
+ "--outfile",
68
+ outfile,
69
+ entrypointPath,
70
+ ], {
71
+ cwd: projectRoot,
72
+ maxBuffer: 20 * 1024 * 1024,
73
+ });
74
+ return await readFile(outfile, "utf8");
75
+ }
76
+ catch (error) {
77
+ const stderr = error != null &&
78
+ typeof error === "object" &&
79
+ "stderr" in error &&
80
+ typeof error.stderr === "string"
81
+ ? error.stderr.trim()
82
+ : "";
83
+ const stdout = error != null &&
84
+ typeof error === "object" &&
85
+ "stdout" in error &&
86
+ typeof error.stdout === "string"
87
+ ? error.stdout.trim()
88
+ : "";
89
+ const message = stderr.length > 0
90
+ ? stderr
91
+ : stdout.length > 0
92
+ ? stdout
93
+ : error instanceof Error
94
+ ? error.message
95
+ : String(error);
96
+ throw new ToolingError("Plugin source build failed", [
97
+ {
98
+ severity: "error",
99
+ path: "<build>",
100
+ message,
101
+ },
102
+ ]);
103
+ }
104
+ finally {
105
+ await rm(outdir, { force: true, recursive: true });
106
+ }
107
+ }
108
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export declare function runPluginDevCli(args?: string[]): Promise<void>;
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AASA,wBAAsB,eAAe,CACnC,IAAI,WAAwB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
package/dist/cli.js ADDED
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env bun
2
+ import { buildPluginBundle } from "./build.js";
3
+ import { runCreatePluginCli } from "./create-plugin.js";
4
+ import { startPluginDevServer } from "./dev.js";
5
+ import { publishPluginProject } from "./publish.js";
6
+ import { printDiagnostics, ToolingError } from "./shared.js";
7
+ import { validateBundleFile, validatePluginProject } from "./validate.js";
8
+ export async function runPluginDevCli(args = process.argv.slice(2)) {
9
+ const [command, ...rest] = args;
10
+ switch (command) {
11
+ case "build":
12
+ await runBuildCli(rest);
13
+ return;
14
+ case "create":
15
+ await runCreatePluginCli(rest);
16
+ return;
17
+ case "dev":
18
+ await runDevCli(rest);
19
+ return;
20
+ case "publish":
21
+ await runPublishCli(rest);
22
+ return;
23
+ case "validate":
24
+ await runValidateCli(rest);
25
+ return;
26
+ default:
27
+ printHelp();
28
+ process.exitCode = 1;
29
+ }
30
+ }
31
+ async function runBuildCli(args) {
32
+ const projectRoot = readFlag(args, "--project");
33
+ const outfile = readFlag(args, "--outfile");
34
+ const result = await buildPluginBundle({
35
+ outfile: outfile ?? undefined,
36
+ projectRoot: projectRoot ?? undefined,
37
+ });
38
+ if (result.warnings.length > 0) {
39
+ printDiagnostics(result.warnings);
40
+ }
41
+ if (result.outputFile) {
42
+ console.log(`Built bundle at ${result.outputFile}`);
43
+ }
44
+ }
45
+ async function runDevCli(args) {
46
+ const host = readFlag(args, "--host");
47
+ const portValue = readFlag(args, "--port");
48
+ const projectRoot = readFlag(args, "--project");
49
+ const port = portValue == null || portValue.length === 0 ? undefined : Number(portValue);
50
+ const server = await startPluginDevServer({
51
+ host: host ?? undefined,
52
+ port,
53
+ projectRoot: projectRoot ?? undefined,
54
+ });
55
+ console.log(`manifestUrl=${server.manifestUrl}`);
56
+ console.log("Press Ctrl+C to stop.");
57
+ const teardown = async () => {
58
+ await server.close();
59
+ process.exit(0);
60
+ };
61
+ process.once("SIGINT", () => {
62
+ void teardown();
63
+ });
64
+ process.once("SIGTERM", () => {
65
+ void teardown();
66
+ });
67
+ await new Promise(() => undefined);
68
+ }
69
+ async function runValidateCli(args) {
70
+ const bundleFile = readFlag(args, "--bundle");
71
+ const projectRoot = readFlag(args, "--project");
72
+ const result = bundleFile != null
73
+ ? await validateBundleFile(bundleFile)
74
+ : await validatePluginProject(projectRoot ?? undefined);
75
+ if (result.diagnostics.length > 0) {
76
+ printDiagnostics(result.diagnostics);
77
+ }
78
+ if (!result.ok) {
79
+ process.exitCode = 1;
80
+ return;
81
+ }
82
+ console.log(bundleFile ? "Bundle validation passed." : "Project validation passed.");
83
+ }
84
+ async function runPublishCli(args) {
85
+ const projectRoot = readFlag(args, "--project");
86
+ const server = readFlag(args, "--server");
87
+ const token = readFlag(args, "--token");
88
+ const changelog = readFlag(args, "--changelog");
89
+ const result = await publishPluginProject({
90
+ changelog: changelog ?? undefined,
91
+ projectRoot: projectRoot ?? undefined,
92
+ server: server ?? undefined,
93
+ token: token ?? undefined,
94
+ });
95
+ console.log(`versionId=${result.version.id}`);
96
+ console.log(`status=${result.version.status}`);
97
+ console.log(`artifactPath=${result.version.artifact_path}`);
98
+ }
99
+ function readFlag(args, name) {
100
+ const index = args.indexOf(name);
101
+ if (index === -1)
102
+ return null;
103
+ return args[index + 1] ?? null;
104
+ }
105
+ function printHelp() {
106
+ console.log(`Usage:
107
+ plugin-dev dev [--project <dir>] [--host <host>] [--port <port>]
108
+ plugin-dev build [--project <dir>] [--outfile <path>]
109
+ plugin-dev publish [--project <dir>] [--server <url>] [--token <token>] [--changelog <text>]
110
+ plugin-dev validate [--project <dir>] [--bundle <file>]
111
+ plugin-dev create <target-directory> [--template base|data-filler-lite|design-lint-panel|batch-layout-organizer|data-filler-full|export-selection|asset-browser] [--force] [--file-deps]`);
112
+ }
113
+ if (import.meta.main) {
114
+ runPluginDevCli().catch((error) => {
115
+ if (error instanceof ToolingError) {
116
+ printDiagnostics(error.diagnostics);
117
+ process.exitCode = 1;
118
+ return;
119
+ }
120
+ throw error;
121
+ });
122
+ }
123
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5B,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEhC,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,KAAK;YACR,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO;QACT,KAAK,SAAS;YACZ,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1B,OAAO;QACT,KAAK,UAAU;YACb,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT;YACE,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAuB;IAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,OAAO,EAAE,OAAO,IAAI,SAAS;QAC7B,WAAW,EAAE,WAAW,IAAI,SAAS;KACtC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAuB;IAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,IAAI,GACR,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,SAAS;KACtC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,KAAK,IAAmB,EAAE;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC1B,KAAK,QAAQ,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;QAC3B,KAAK,QAAQ,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAuB;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GACV,UAAU,IAAI,IAAI;QAChB,CAAC,CAAC,MAAM,kBAAkB,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC,MAAM,qBAAqB,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC;IAE5D,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CACT,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,4BAA4B,CACxE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAuB;IAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,SAAS,EAAE,SAAS,IAAI,SAAS;QACjC,WAAW,EAAE,WAAW,IAAI,SAAS;QACrC,MAAM,EAAE,MAAM,IAAI,SAAS;QAC3B,KAAK,EAAE,KAAK,IAAI,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;2LAK6K,CAAC,CAAC;AAC7L,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QAChC,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,gBAAgB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACpC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env bun
2
+ import { type DependencyMode, type PluginTemplateName } from "./shared.js";
3
+ export type CreatePluginProjectOptions = {
4
+ dependencyMode?: DependencyMode;
5
+ force?: boolean;
6
+ pluginId?: string;
7
+ pluginNameEn?: string;
8
+ pluginNameZh?: string;
9
+ targetDirectory: string;
10
+ template?: PluginTemplateName;
11
+ };
12
+ export type CreatedPluginProject = {
13
+ packageName: string;
14
+ pluginId: string;
15
+ projectRoot: string;
16
+ };
17
+ export declare function createPluginProject(options: CreatePluginProjectOptions): Promise<CreatedPluginProject>;
18
+ export declare function runCreatePluginCli(args?: string[]): Promise<void>;
19
+ //# sourceMappingURL=create-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-plugin.d.ts","sourceRoot":"","sources":["../src/create-plugin.ts"],"names":[],"mappings":";AAIA,OAAO,EAGL,KAAK,cAAc,EAInB,KAAK,kBAAkB,EASxB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,0BAA0B,GAAG;IACvC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CAiE/B;AAED,wBAAsB,kBAAkB,CACtC,IAAI,WAAwB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -0,0 +1,186 @@
1
+ #!/usr/bin/env bun
2
+ import { writeFile } from "node:fs/promises";
3
+ import { dirname, join, relative, resolve } from "node:path";
4
+ import { buildTemplateTokens, collectTemplateFiles, dependencySpecsForMode, directoryHasEntries, ensureDirectory, packageNameFromTarget, readTextFile, renderTemplate, sanitizePluginId, TEMPLATE_ROOTS, ToolingError, titleCaseSlug, toOutputTemplatePath, } from "./shared.js";
5
+ export async function createPluginProject(options) {
6
+ const projectRoot = resolve(options.targetDirectory);
7
+ const packageName = packageNameFromTarget(projectRoot);
8
+ const projectHasEntries = await directoryHasEntries(projectRoot);
9
+ if (projectHasEntries && !options.force) {
10
+ throw new ToolingError("Target directory is not empty", [
11
+ {
12
+ severity: "error",
13
+ path: projectRoot,
14
+ message: "Refusing to scaffold into a non-empty directory without --force",
15
+ },
16
+ ]);
17
+ }
18
+ const pluginId = options.pluginId ?? sanitizePluginId(packageName);
19
+ const pluginNameEn = options.pluginNameEn ?? titleCaseSlug(packageName);
20
+ const pluginNameZh = options.pluginNameZh ?? `${pluginNameEn} 插件`;
21
+ const template = options.template ?? "base";
22
+ const templateRoot = TEMPLATE_ROOTS[template];
23
+ if (!templateRoot) {
24
+ throw new ToolingError("Unknown plugin template", [
25
+ {
26
+ severity: "error",
27
+ path: "template",
28
+ message: `Unsupported plugin template: ${template}`,
29
+ },
30
+ ]);
31
+ }
32
+ const commandNameEn = commandNameForTemplate(template, pluginNameEn, "en");
33
+ const commandNameZh = commandNameForTemplate(template, pluginNameEn, "zh-CN");
34
+ const dependencySpecs = dependencySpecsForMode(projectRoot, options.dependencyMode);
35
+ const tokens = buildTemplateTokens({
36
+ commandNameEn,
37
+ commandNameZh,
38
+ engineSpec: dependencySpecs.engineSpec,
39
+ packageName,
40
+ pluginDevSpec: dependencySpecs.pluginDevSpec,
41
+ pluginHostSpec: dependencySpecs.pluginHostSpec,
42
+ pluginId,
43
+ pluginNameEn,
44
+ pluginNameZh,
45
+ pluginSdkSpec: dependencySpecs.pluginSdkSpec,
46
+ pluginSpecSpec: dependencySpecs.pluginSpecSpec,
47
+ utilsSpec: dependencySpecs.utilsSpec,
48
+ });
49
+ await ensureDirectory(projectRoot);
50
+ const templateFiles = await collectTemplateFiles(templateRoot);
51
+ for (const templateFile of templateFiles) {
52
+ const relativePath = relative(templateRoot, templateFile);
53
+ const outputPath = join(projectRoot, toOutputTemplatePath(relativePath));
54
+ const templateText = await readTextFile(templateFile);
55
+ await ensureDirectory(dirname(outputPath));
56
+ await writeFile(outputPath, renderTemplate(templateText, tokens), "utf8");
57
+ }
58
+ return {
59
+ packageName,
60
+ pluginId,
61
+ projectRoot,
62
+ };
63
+ }
64
+ export async function runCreatePluginCli(args = process.argv.slice(2)) {
65
+ const force = args.includes("--force");
66
+ const fileDeps = args.includes("--file-deps");
67
+ const hasTemplateFlag = args.includes("--template");
68
+ const templateValue = readFlag(args, "--template");
69
+ const template = parseTemplate(templateValue, hasTemplateFlag);
70
+ const targetDirectory = positionalArgs(args)[0] ?? "instinct-plugin";
71
+ const created = await createPluginProject({
72
+ dependencyMode: fileDeps ? { kind: "file" } : { kind: "registry" },
73
+ force,
74
+ targetDirectory,
75
+ template,
76
+ });
77
+ console.log(`Created plugin project at ${created.projectRoot}`);
78
+ console.log(`pluginId=${created.pluginId}`);
79
+ }
80
+ function parseTemplate(value, hasTemplateFlag) {
81
+ if (!hasTemplateFlag)
82
+ return undefined;
83
+ if (value == null || value.length === 0 || value.startsWith("--")) {
84
+ throw new ToolingError("Missing plugin template", [
85
+ {
86
+ severity: "error",
87
+ path: "--template",
88
+ message: "Expected a plugin template name after --template",
89
+ },
90
+ ]);
91
+ }
92
+ if (value === "ai-layout-assistant" ||
93
+ value === "asset-browser" ||
94
+ value === "base" ||
95
+ value === "batch-layout-organizer" ||
96
+ value === "data-filler-full" ||
97
+ value === "data-filler-lite" ||
98
+ value === "design-lint-panel" ||
99
+ value === "export-selection" ||
100
+ value === "review-submitter") {
101
+ return value;
102
+ }
103
+ throw new ToolingError("Unknown plugin template", [
104
+ {
105
+ severity: "error",
106
+ path: "--template",
107
+ message: `Unsupported plugin template: ${value}`,
108
+ },
109
+ ]);
110
+ }
111
+ function commandNameForTemplate(template, pluginNameEn, locale) {
112
+ if (template === "ai-layout-assistant") {
113
+ return locale === "zh-CN"
114
+ ? "打开 AI Layout Assistant"
115
+ : "Open AI Layout Assistant";
116
+ }
117
+ if (template === "asset-browser") {
118
+ return locale === "zh-CN" ? "打开 Asset Browser" : "Open Asset Browser";
119
+ }
120
+ if (template === "batch-layout-organizer") {
121
+ return locale === "zh-CN"
122
+ ? "打开 Batch Layout Organizer"
123
+ : "Open Batch Layout Organizer";
124
+ }
125
+ if (template === "data-filler-full") {
126
+ return locale === "zh-CN" ? "打开 Data Filler" : "Open Data Filler";
127
+ }
128
+ if (template === "data-filler-lite") {
129
+ return locale === "zh-CN"
130
+ ? "打开 Data Filler Lite"
131
+ : "Open Data Filler Lite";
132
+ }
133
+ if (template === "design-lint-panel") {
134
+ return locale === "zh-CN"
135
+ ? "打开 Design Lint Panel"
136
+ : "Open Design Lint Panel";
137
+ }
138
+ if (template === "export-selection") {
139
+ return locale === "zh-CN"
140
+ ? "打开 Export Selection"
141
+ : "Open Export Selection";
142
+ }
143
+ if (template === "review-submitter") {
144
+ return locale === "zh-CN"
145
+ ? "打开 Review Submitter"
146
+ : "Open Review Submitter";
147
+ }
148
+ return locale === "zh-CN" ? `运行 ${pluginNameEn}` : `Run ${pluginNameEn}`;
149
+ }
150
+ function readFlag(args, name) {
151
+ const index = args.indexOf(name);
152
+ if (index === -1)
153
+ return null;
154
+ return args[index + 1] ?? null;
155
+ }
156
+ function positionalArgs(args) {
157
+ const values = [];
158
+ for (let index = 0; index < args.length; index += 1) {
159
+ const arg = args[index];
160
+ if (!arg)
161
+ continue;
162
+ if (arg === "--template") {
163
+ index += 1;
164
+ continue;
165
+ }
166
+ if (arg === "--force" || arg === "--file-deps")
167
+ continue;
168
+ if (arg.startsWith("--"))
169
+ continue;
170
+ values.push(arg);
171
+ }
172
+ return values;
173
+ }
174
+ if (import.meta.main) {
175
+ runCreatePluginCli().catch((error) => {
176
+ if (error instanceof ToolingError) {
177
+ for (const diagnostic of error.diagnostics) {
178
+ console.error(`[${diagnostic.severity}] ${diagnostic.path}: ${diagnostic.message}`);
179
+ }
180
+ process.exitCode = 1;
181
+ return;
182
+ }
183
+ throw error;
184
+ });
185
+ }
186
+ //# sourceMappingURL=create-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-plugin.js","sourceRoot":"","sources":["../src/create-plugin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EAEpB,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EAEf,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAkBrB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAmC;IAEnC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACjE,IAAI,iBAAiB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,YAAY,CAAC,+BAA+B,EAAE;YACtD;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,WAAW;gBACjB,OAAO,EACL,iEAAiE;aACpE;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,YAAY,KAAK,CAAC;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC5C,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE;YAChD;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,gCAAgC,QAAQ,EAAE;aACpD;SACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,sBAAsB,CAC5C,WAAW,EACX,OAAO,CAAC,cAAc,CACvB,CAAC;IACF,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACjC,aAAa;QACb,aAAa;QACb,UAAU,EAAE,eAAe,CAAC,UAAU;QACtC,WAAW;QACX,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,cAAc,EAAE,eAAe,CAAC,cAAc;QAC9C,SAAS,EAAE,eAAe,CAAC,SAAS;KACrC,CAAC,CAAC;IAEH,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC/D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,CAAC,UAAU,EAAE,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,WAAW;QACX,QAAQ;QACR,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE;QAClE,KAAK;QACL,eAAe;QACf,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,aAAa,CACpB,KAAoB,EACpB,eAAwB;IAExB,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE;YAChD;gBACE,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,kDAAkD;aAC5D;SACF,CAAC,CAAC;IACL,CAAC;IACD,IACE,KAAK,KAAK,qBAAqB;QAC/B,KAAK,KAAK,eAAe;QACzB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,wBAAwB;QAClC,KAAK,KAAK,kBAAkB;QAC5B,KAAK,KAAK,kBAAkB;QAC5B,KAAK,KAAK,mBAAmB;QAC7B,KAAK,KAAK,kBAAkB;QAC5B,KAAK,KAAK,kBAAkB,EAC5B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,YAAY,CAAC,yBAAyB,EAAE;QAChD;YACE,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gCAAgC,KAAK,EAAE;SACjD;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA4B,EAC5B,YAAoB,EACpB,MAAsB;IAEtB,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,0BAA0B,CAAC;IACjC,CAAC;IACD,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;QACjC,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC;IACxE,CAAC;IACD,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;QAC1C,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,6BAA6B,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACpE,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,uBAAuB,CAAC;IAC9B,CAAC;IACD,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;QACrC,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,wBAAwB,CAAC;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,uBAAuB,CAAC;IAC9B,CAAC;IACD,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,MAAM,KAAK,OAAO;YACvB,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,uBAAuB,CAAC;IAC9B,CAAC;IACD,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,YAAY,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAuB,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,IAAuB;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,aAAa;YAAE,SAAS;QACzD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,kBAAkB,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;YAClC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC3C,OAAO,CAAC,KAAK,CACX,IAAI,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,OAAO,EAAE,CACrE,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/dev.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export type StartPluginDevServerOptions = {
2
+ host?: string;
3
+ port?: number;
4
+ projectRoot?: string;
5
+ };
6
+ export type PluginDevServer = {
7
+ close(): Promise<void>;
8
+ host: string;
9
+ manifestUrl: string;
10
+ port: number;
11
+ };
12
+ export declare function startPluginDevServer(options?: StartPluginDevServerOptions): Promise<PluginDevServer>;
13
+ //# sourceMappingURL=dev.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAkEA,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,eAAe,CAAC,CA0D1B"}