@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/dist/dev.js ADDED
@@ -0,0 +1,206 @@
1
+ import { createServer } from "node:https";
2
+ import { buildMainBundleSource } from "./build.js";
3
+ import { computeEtag, DEFAULT_HOST, DEFAULT_MAIN_ROUTE, DEFAULT_MANIFEST_ROUTE, ensurePluginProjectExists, readOptionalUiEntry, readProjectResourceText, readTextFile, resolveProjectResourceRoute, ToolingError, tryParseJsonText, } from "./shared.js";
4
+ const DEV_TLS_KEY = `-----BEGIN PRIVATE KEY-----
5
+ MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7+KRiIu9MOLAO
6
+ 1PsRx2OWEqCNzzznOcfnLrk8b1zNZpWqSJfFY6dXVxxGjwkwz+do9id/p/qx3oBs
7
+ CDexi807sDIEhs94Hj35E4Ow/wCEggQxplQVZOmI+V+xSlri+Ramety5vcLaDbN7
8
+ LbWciiKfQ/g+MGcQa4Tg2UQO0He/AiPh2dX46l1jiWfPvftMkL3lNlAY/SPMT1Qh
9
+ P5DyXmfuRsPw+aRqFkWo6SCHxzy0+n+8+CPw7P8o71FifmosgDGNT6aDmCsiD7rf
10
+ S+uQdMSVWd9fYs1aDuSahjZQoK5bzedXCCt/8ysagL5JeXICXdvaDSbpTouNEU8J
11
+ OcCCoo6HAgMBAAECggEAWQoas/HgcLaZjy0MEQvl/HyuWP5F1zHjo3rae+o0h4eE
12
+ dbkVS4c9CX5WAoZW0CxrbajMZQfpFMBVDNeHqi6S9SctSj+hn0CUEpxP0VO5pwr/
13
+ eZVUVx4KEbwuvAiArOtY81tXmxRsbGX5EuxADvrQE6laufqrl3eW5fuE5Y+SaYOF
14
+ UBQzTmenG46paD4soNc8txQt0cndx3oHfKyYWVxRwDQytLV5tvN1nkBTVichYqUe
15
+ nqRLYFvE3PFqwLNE+tejTiw90nwQnQ3YX+LBZ/8Cf/QEzl3jhCypD8G5nuciOjgX
16
+ /ZkKZsTELZ1kZmCggWPzpu4ctEKqXM2hE6oWAzYUIQKBgQDwfQ01cjIXHTLOD4Sb
17
+ xLaYBuP4Uu+SZEaUYzIfW8sJxo3X6zTFZNnajD5D0TR+U0pqqHqHn8SLaImNOYxA
18
+ FWacscAeYUfD6E/Dl0TdWhZiYkEYhpXKS8pOtRVbwrcRvwc1ppzPqTtAnI10BYgn
19
+ 7US/AY6kke9keqEv2dZiw1mbiwKBgQDIGGzw/T6+YZpHXL5Ujf0REYppJAf2yuSj
20
+ c5qMBsDtklCybCeCuULHp69eOf/2V97YY4hhVWuRRIS1h6nYsp8F2dDxIx+Gt6sC
21
+ Jvu7GW/g1tlGBOFQwJ5lCpeqjiuSxYbqPsaplkWQbA8t3ej8e+jyAb6R5A9OZSHu
22
+ Sj7FgjpodQKBgC6nc+qMbt9BENwc8pLthKbVn2BLZqK1xWOAIvcmbatF07qxrJkm
23
+ yYS2dFXfvhlLu0IZ0TuCaTTKYPT+1xCPlkqLyUObh7qf1OmS7Q8sLO+FNC+33FNU
24
+ hLjkNHKKwc01jAaCfiVjJVWRiXeaoyFrzExp1uxiS1jo2WBZGFgsobOlAoGAPpld
25
+ o7smoPr6AC9koCFXtbpOGfyavTvWcchd5kbKnshylI8/gSciXEH6nDj6+f+diQcC
26
+ iKjnoSfVeNE7cr7W/0aYlogNeeEGEANQJ8WaebXdfYlTUCcipqu8rTATM7S2M5x2
27
+ HGIV20vjJ89P74V4aBXhn9TAcR80kU8K+lF2om0CgYEAvN4eDUXz4+IKV384wCT9
28
+ +KJV7UBhlfXoQ+cS4+lQ9naClnONGNSB7XcAfFrmkEQpcG6w7BTHsLSlwjoVpzV3
29
+ sqLVwxIkRkbDJRvwZ3Z9xdBB9rDxO7U6DzRXoOD9I5cTw+DtCzUpZuaBH7p7xu1P
30
+ YsO1j/ur41d9sMEstZjq7u8=
31
+ -----END PRIVATE KEY-----`;
32
+ const DEV_TLS_CERT = `-----BEGIN CERTIFICATE-----
33
+ MIIDMjCCAhqgAwIBAgIUQ8p4zLzAtmYqCe/JeEXoqI0mkQ0wDQYJKoZIhvcNAQEL
34
+ BQAwFDESMBAGA1UEAwwJMTI3LjAuMC4xMB4XDTI2MDQyMjA1MjM0OFoXDTI2MDQy
35
+ OTA1MjM0OFowFDESMBAGA1UEAwwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEF
36
+ AAOCAQ8AMIIBCgKCAQEAu/ikYiLvTDiwDtT7EcdjlhKgjc885znH5y65PG9czWaV
37
+ qkiXxWOnV1ccRo8JMM/naPYnf6f6sd6AbAg3sYvNO7AyBIbPeB49+RODsP8AhIIE
38
+ MaZUFWTpiPlfsUpa4vkWpnrcub3C2g2zey21nIoin0P4PjBnEGuE4NlEDtB3vwIj
39
+ 4dnV+OpdY4lnz737TJC95TZQGP0jzE9UIT+Q8l5n7kbD8PmkahZFqOkgh8c8tPp/
40
+ vPgj8Oz/KO9RYn5qLIAxjU+mg5grIg+630vrkHTElVnfX2LNWg7kmoY2UKCuW83n
41
+ Vwgrf/MrGoC+SXlyAl3b2g0m6U6LjRFPCTnAgqKOhwIDAQABo3wwejAsBgNVHREE
42
+ JTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwCwYDVR0PBAQD
43
+ AgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAkGA1UdEwQCMAAwHQYDVR0OBBYEFL7V
44
+ x8eeuBtBjWjnZHkTMNu+bnmhMA0GCSqGSIb3DQEBCwUAA4IBAQCUpJ1NFvbgAVxm
45
+ 4E4We0CxMN16OMYMbqoOx7iBwkAU4MQxEw3oROuq9zqnIQz8w6CgZVVa7zAdfyUL
46
+ Ihra/ENOzYfqzIcyi8GCd3lRtnunAEC4BvQj1aZAX1QcTdrqhmFmSLtmUK0MHvrb
47
+ JcCgnAktZQdQip41/b9gh0ZY8vdbODopMn2IhXH3HnUzYvtPC7Da7SxfBZhI750O
48
+ F36lhQ1sm4SN+pRGy/ROMsK/vud83CIWoqUGwQZX3nGK1o6jeV1f4NEBRKrxBZIE
49
+ IsU2et3yMaeMhKoZAGRVkBIHUXwz7nmRKVHkGalCgYwd8Y6co2ZDbQcin97HhmXm
50
+ +FAI/dzD
51
+ -----END CERTIFICATE-----`;
52
+ export async function startPluginDevServer(options = {}) {
53
+ const paths = await ensurePluginProjectExists(options.projectRoot);
54
+ const host = options.host ?? DEFAULT_HOST;
55
+ const server = createServer({
56
+ key: DEV_TLS_KEY,
57
+ cert: DEV_TLS_CERT,
58
+ }, async (request, response) => {
59
+ try {
60
+ await handleRequest(paths.projectRoot, paths.sourceEntryPath, paths.manifestPath, request.method ?? "GET", request.url ?? "/", response);
61
+ }
62
+ catch (error) {
63
+ const message = error instanceof Error ? error.message : String(error);
64
+ writeHeaders(response, 500, "text/plain; charset=utf-8");
65
+ response.end(request.method === "HEAD" ? undefined : message);
66
+ }
67
+ });
68
+ const port = await new Promise((resolvePromise, reject) => {
69
+ server.once("error", reject);
70
+ server.listen(options.port ?? 0, host, () => {
71
+ server.off("error", reject);
72
+ const address = server.address();
73
+ if (!address || typeof address === "string") {
74
+ reject(new ToolingError("Failed to start dev server", [
75
+ {
76
+ severity: "error",
77
+ path: "<dev-server>",
78
+ message: "HTTPS server did not expose a TCP address",
79
+ },
80
+ ]));
81
+ return;
82
+ }
83
+ resolvePromise(address.port);
84
+ });
85
+ });
86
+ const manifestUrl = new URL(DEFAULT_MANIFEST_ROUTE, `https://${host}:${port}`)
87
+ .href;
88
+ return {
89
+ async close() {
90
+ await closeServer(server);
91
+ },
92
+ host,
93
+ manifestUrl,
94
+ port,
95
+ };
96
+ }
97
+ async function handleRequest(projectRoot, sourceEntryPath, manifestPath, method, requestUrl, response) {
98
+ if (method === "OPTIONS") {
99
+ writeHeaders(response, 204);
100
+ response.end();
101
+ return;
102
+ }
103
+ const manifestText = await readTextFile(manifestPath);
104
+ const manifestJson = tryParseJsonText(manifestText);
105
+ const mainRoute = resolveMainRoute(manifestJson);
106
+ if (requestUrl === DEFAULT_MANIFEST_ROUTE) {
107
+ writeHeaders(response, 200, "application/json; charset=utf-8", computeEtag(manifestText));
108
+ response.end(method === "HEAD" ? undefined : manifestText);
109
+ return;
110
+ }
111
+ if (mainRoute && requestUrl === mainRoute) {
112
+ const mainBundleSource = await buildMainBundleSource(sourceEntryPath);
113
+ writeHeaders(response, 200, "text/javascript; charset=utf-8", computeEtag(mainBundleSource));
114
+ response.end(method === "HEAD" ? undefined : mainBundleSource);
115
+ return;
116
+ }
117
+ const uiEntryResult = resolveRequestUiEntry(manifestJson);
118
+ if (!uiEntryResult.ok) {
119
+ writeHeaders(response, 400, "text/plain; charset=utf-8");
120
+ response.end(method === "HEAD" ? undefined : uiEntryResult.message);
121
+ return;
122
+ }
123
+ if (uiEntryResult.uiEntry !== null && requestUrl === uiEntryResult.route) {
124
+ try {
125
+ const uiSource = await readProjectResourceText(projectRoot, uiEntryResult.uiEntry);
126
+ writeHeaders(response, 200, "text/html; charset=utf-8", computeEtag(uiSource));
127
+ response.end(method === "HEAD" ? undefined : uiSource);
128
+ }
129
+ catch (error) {
130
+ const message = error instanceof ToolingError
131
+ ? (error.diagnostics[0]?.message ?? error.message)
132
+ : error instanceof Error
133
+ ? error.message
134
+ : String(error);
135
+ writeHeaders(response, 500, "text/plain; charset=utf-8");
136
+ response.end(method === "HEAD" ? undefined : message);
137
+ }
138
+ return;
139
+ }
140
+ writeHeaders(response, 404, "text/plain; charset=utf-8");
141
+ response.end(method === "HEAD" ? undefined : "Not found");
142
+ }
143
+ function resolveMainRoute(manifest) {
144
+ if (!manifest)
145
+ return DEFAULT_MAIN_ROUTE;
146
+ const main = manifest.main;
147
+ if (typeof main !== "string" || main.length === 0)
148
+ return DEFAULT_MAIN_ROUTE;
149
+ try {
150
+ const resolved = new URL(main, `https://${DEFAULT_HOST}${DEFAULT_MANIFEST_ROUTE}`);
151
+ const expectedOrigin = `https://${DEFAULT_HOST}`;
152
+ return resolved.origin === expectedOrigin
153
+ ? `${resolved.pathname}${resolved.search}`
154
+ : null;
155
+ }
156
+ catch {
157
+ return DEFAULT_MAIN_ROUTE;
158
+ }
159
+ }
160
+ function resolveRequestUiEntry(manifest) {
161
+ if (!manifest) {
162
+ return { ok: true, route: null, uiEntry: null };
163
+ }
164
+ try {
165
+ const uiEntry = readOptionalUiEntry(manifest);
166
+ if (uiEntry === null) {
167
+ return { ok: true, route: null, uiEntry: null };
168
+ }
169
+ return {
170
+ ok: true,
171
+ route: resolveProjectResourceRoute(uiEntry),
172
+ uiEntry,
173
+ };
174
+ }
175
+ catch (error) {
176
+ const message = error instanceof ToolingError
177
+ ? (error.diagnostics[0]?.message ?? error.message)
178
+ : error instanceof Error
179
+ ? error.message
180
+ : String(error);
181
+ return { ok: false, message };
182
+ }
183
+ }
184
+ function writeHeaders(response, statusCode, contentType = "text/plain; charset=utf-8", etag) {
185
+ response.statusCode = statusCode;
186
+ response.setHeader("access-control-allow-origin", "*");
187
+ response.setHeader("access-control-allow-methods", "GET,HEAD,OPTIONS");
188
+ response.setHeader("access-control-expose-headers", "ETag, Content-Type");
189
+ response.setHeader("cache-control", "no-store");
190
+ response.setHeader("content-type", contentType);
191
+ if (etag) {
192
+ response.setHeader("etag", etag);
193
+ }
194
+ }
195
+ async function closeServer(server) {
196
+ await new Promise((resolve, reject) => {
197
+ server.close((error) => {
198
+ if (error) {
199
+ reject(error);
200
+ return;
201
+ }
202
+ resolve();
203
+ });
204
+ });
205
+ }
206
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type { BuildPluginBundleOptions, BuildPluginBundleResult, } from "./build.js";
2
+ export { buildMainBundleSource, buildPluginBundle, buildRuntimeSource, } from "./build.js";
3
+ export type { CreatedPluginProject, CreatePluginProjectOptions, } from "./create-plugin.js";
4
+ export { createPluginProject, runCreatePluginCli } from "./create-plugin.js";
5
+ export type { PluginDevServer, StartPluginDevServerOptions, } from "./dev.js";
6
+ export { startPluginDevServer } from "./dev.js";
7
+ export type { PublishPluginProjectOptions, PublishPluginProjectResult, } from "./publish.js";
8
+ export { publishPluginProject } from "./publish.js";
9
+ export type { ToolDiagnostic, ToolDiagnosticSeverity } from "./shared.js";
10
+ export { ToolingError } from "./shared.js";
11
+ export type { ValidationReport } from "./validate.js";
12
+ export { validateBundleFile, validatePluginProject } from "./validate.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,YAAY,EACV,eAAe,EACf,2BAA2B,GAC5B,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,YAAY,EACV,2BAA2B,EAC3B,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export { buildMainBundleSource, buildPluginBundle, buildRuntimeSource, } from "./build.js";
2
+ export { createPluginProject, runCreatePluginCli } from "./create-plugin.js";
3
+ export { startPluginDevServer } from "./dev.js";
4
+ export { publishPluginProject } from "./publish.js";
5
+ export { ToolingError } from "./shared.js";
6
+ export { validateBundleFile, validatePluginProject } from "./validate.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAK7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type PublishPluginProjectOptions = {
2
+ projectRoot?: string;
3
+ server?: string;
4
+ token?: string;
5
+ changelog?: string;
6
+ };
7
+ export type PublishPluginProjectResult = {
8
+ version: {
9
+ id: string;
10
+ status: string;
11
+ artifact_path: string;
12
+ };
13
+ };
14
+ export declare function publishPluginProject(options?: PublishPluginProjectOptions): Promise<PublishPluginProjectResult>;
15
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,0BAA0B,CAAC,CA2DrC"}
@@ -0,0 +1,55 @@
1
+ import { buildPluginBundle } from "./build.js";
2
+ import { ToolingError } from "./shared.js";
3
+ export async function publishPluginProject(options = {}) {
4
+ const build = await buildPluginBundle({
5
+ projectRoot: options.projectRoot,
6
+ write: false,
7
+ });
8
+ const manifest = build.bundle.manifest;
9
+ const pluginId = typeof manifest === "object" &&
10
+ manifest !== null &&
11
+ "id" in manifest &&
12
+ typeof manifest.id === "string"
13
+ ? manifest.id
14
+ : null;
15
+ if (!pluginId) {
16
+ throw new ToolingError("Plugin bundle manifest is missing id", [
17
+ {
18
+ message: "manifest.id is required",
19
+ path: "manifest.id",
20
+ severity: "error",
21
+ },
22
+ ]);
23
+ }
24
+ const server = normaliseServerUrl(options.server ??
25
+ process.env.LOVISION_PLUGIN_SERVER ??
26
+ "http://localhost:3000");
27
+ const response = await fetch(`${server}/resources/${encodeURIComponent(pluginId)}/versions`, {
28
+ body: JSON.stringify({
29
+ bundle: build.bundle,
30
+ changelog: options.changelog ?? "",
31
+ }),
32
+ headers: {
33
+ "content-type": "application/json",
34
+ ...(options.token ? { authorization: `Bearer ${options.token}` } : {}),
35
+ },
36
+ method: "POST",
37
+ });
38
+ if (!response.ok) {
39
+ const detail = await response.text().catch(() => "");
40
+ throw new ToolingError("Plugin publish failed", [
41
+ {
42
+ message: detail.length > 0
43
+ ? `Server returned ${response.status}: ${detail}`
44
+ : `Server returned ${response.status}`,
45
+ path: "<publish>",
46
+ severity: "error",
47
+ },
48
+ ]);
49
+ }
50
+ return (await response.json());
51
+ }
52
+ function normaliseServerUrl(server) {
53
+ return server.replace(/\/+$/, "");
54
+ }
55
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiB3C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC;QACpC,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;IACvC,MAAM,QAAQ,GACZ,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,IAAI,IAAI,QAAQ;QAChB,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ;QAC7B,CAAC,CAAC,QAAQ,CAAC,EAAE;QACb,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,YAAY,CAAC,sCAAsC,EAAE;YAC7D;gBACE,OAAO,EAAE,yBAAyB;gBAClC,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAC/B,OAAO,CAAC,MAAM;QACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,uBAAuB,CAC1B,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,MAAM,cAAc,kBAAkB,CAAC,QAAQ,CAAC,WAAW,EAC9D;QACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;SACnC,CAAC;QACF,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvE;QACD,MAAM,EAAE,MAAM;KACf,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,YAAY,CAAC,uBAAuB,EAAE;YAC9C;gBACE,OAAO,EACL,MAAM,CAAC,MAAM,GAAG,CAAC;oBACf,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;oBACjD,CAAC,CAAC,mBAAmB,QAAQ,CAAC,MAAM,EAAE;gBAC1C,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA+B,CAAC;AAC/D,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,93 @@
1
+ import type { ManifestError, ManifestWarning } from "@lovision/plugin-spec";
2
+ export type ToolDiagnosticSeverity = "error" | "warning";
3
+ export type ToolDiagnostic = {
4
+ severity: ToolDiagnosticSeverity;
5
+ path: string;
6
+ message: string;
7
+ code?: string;
8
+ };
9
+ export declare class ToolingError extends Error {
10
+ readonly diagnostics: readonly ToolDiagnostic[];
11
+ constructor(message: string, diagnostics: readonly ToolDiagnostic[]);
12
+ }
13
+ export type PluginProjectPaths = {
14
+ projectRoot: string;
15
+ manifestPath: string;
16
+ sourceEntryPath: string;
17
+ distDir: string;
18
+ };
19
+ export type DependencyMode = {
20
+ kind: "registry";
21
+ pluginHostSpec?: string;
22
+ pluginDevSpec?: string;
23
+ pluginSpecSpec?: string;
24
+ pluginSdkSpec?: string;
25
+ } | {
26
+ kind: "file";
27
+ pluginHostPath?: string;
28
+ pluginDevPath?: string;
29
+ pluginSpecPath?: string;
30
+ pluginSdkPath?: string;
31
+ };
32
+ export declare const PACKAGE_ROOT: string;
33
+ export declare const TEMPLATE_ROOT: string;
34
+ export type PluginTemplateName = "ai-layout-assistant" | "asset-browser" | "base" | "batch-layout-organizer" | "data-filler-full" | "data-filler-lite" | "design-lint-panel" | "export-selection" | "review-submitter";
35
+ export declare const TEMPLATE_ROOTS: Record<PluginTemplateName, string>;
36
+ export declare const WORKSPACE_PLUGIN_SDK_ROOT: string;
37
+ export declare const WORKSPACE_PLUGIN_SPEC_ROOT: string;
38
+ export declare const WORKSPACE_ENGINE_ROOT: string;
39
+ export declare const WORKSPACE_UTILS_ROOT: string;
40
+ export declare const DEFAULT_MANIFEST_FILE = "manifest.json";
41
+ export declare const DEFAULT_SOURCE_ENTRY_FILE = "src/main.ts";
42
+ export declare const DEFAULT_MANIFEST_ROUTE = "/manifest.json";
43
+ export declare const DEFAULT_MAIN_ROUTE = "/dist/main.js";
44
+ export declare const DEFAULT_HOST = "localhost";
45
+ export declare function resolvePluginProjectPaths(projectRoot?: string): PluginProjectPaths;
46
+ export declare function ensurePluginProjectExists(projectRoot?: string): Promise<PluginProjectPaths>;
47
+ export declare function assertPathExists(filePath: string, label: string): Promise<void>;
48
+ export declare function ensureDirectory(directoryPath: string): Promise<void>;
49
+ export declare function readTextFile(filePath: string): Promise<string>;
50
+ export declare function parseJsonText(text: string, sourceLabel: string): Record<string, unknown>;
51
+ export declare function tryParseJsonText(text: string): Record<string, unknown> | null;
52
+ export declare function readOptionalUiEntry(manifest: Record<string, unknown>): string | null;
53
+ export declare function resolveProjectResourceRoute(resourceEntry: string): string;
54
+ export declare function resolveProjectResourcePath(projectRoot: string, resourceEntry: string): Promise<string>;
55
+ export declare function readProjectResourceText(projectRoot: string, resourceEntry: string): Promise<string>;
56
+ export declare function computeEtag(text: string): string;
57
+ export declare function createCryptoRandomUuidPolyfill(): string;
58
+ export declare function manifestDiagnosticToToolDiagnostic(diagnostic: ManifestError | ManifestWarning): ToolDiagnostic;
59
+ export declare function formatPath(path: ReadonlyArray<string | number>): string;
60
+ export declare function sanitizePackageName(input: string): string;
61
+ export declare function sanitizePluginId(input: string): string;
62
+ export declare function titleCaseSlug(input: string): string;
63
+ export declare function sanitizeFileStem(input: string): string;
64
+ export declare function directoryHasEntries(directoryPath: string): Promise<boolean>;
65
+ export declare function toFileDependencySpecifier(_fromDirectory: string, absoluteDependencyPath: string): string;
66
+ export declare function buildTemplateTokens(opts: {
67
+ packageName: string;
68
+ pluginId: string;
69
+ pluginNameEn: string;
70
+ pluginNameZh: string;
71
+ commandNameEn: string;
72
+ commandNameZh: string;
73
+ engineSpec: string;
74
+ pluginHostSpec: string;
75
+ pluginSpecSpec: string;
76
+ pluginSdkSpec: string;
77
+ pluginDevSpec: string;
78
+ utilsSpec: string;
79
+ }): Record<string, string>;
80
+ export declare function renderTemplate(source: string, tokens: Record<string, string>): string;
81
+ export declare function toOutputTemplatePath(templatePath: string): string;
82
+ export declare function printDiagnostics(diagnostics: readonly ToolDiagnostic[]): void;
83
+ export declare function collectTemplateFiles(root: string): Promise<readonly string[]>;
84
+ export declare function dependencySpecsForMode(targetDirectory: string, mode: DependencyMode | undefined): {
85
+ engineSpec: string;
86
+ pluginDevSpec: string;
87
+ pluginHostSpec: string;
88
+ pluginSdkSpec: string;
89
+ pluginSpecSpec: string;
90
+ utilsSpec: string;
91
+ };
92
+ export declare function packageNameFromTarget(targetDirectory: string): string;
93
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"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"}