@slicemedia/devkit-cli 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/dist/args.js +1 -1
- package/dist/args.js.map +1 -1
- package/dist/build.d.ts +5 -0
- package/dist/build.d.ts.map +1 -1
- package/dist/build.js +115 -4
- package/dist/build.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +75 -10
- package/dist/commands.js.map +1 -1
- package/dist/dev.d.ts.map +1 -1
- package/dist/dev.js +12 -0
- package/dist/dev.js.map +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +84 -14
- package/dist/discovery.js.map +1 -1
- package/dist/documentation.d.ts +18 -0
- package/dist/documentation.d.ts.map +1 -0
- package/dist/documentation.js +139 -0
- package/dist/documentation.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +5 -1
- package/dist/output.js.map +1 -1
- package/dist/scripts-build.d.ts +25 -0
- package/dist/scripts-build.d.ts.map +1 -0
- package/dist/scripts-build.js +110 -0
- package/dist/scripts-build.js.map +1 -0
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/discovery.js
CHANGED
|
@@ -5,28 +5,36 @@ const sourceExtensions = new Set([".ts", ".tsx", ".js", ".mjs"]);
|
|
|
5
5
|
const namePattern = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
6
6
|
export async function discoverAddonEntries(root) {
|
|
7
7
|
const configured = await readConfig(root);
|
|
8
|
+
const candidates = await discoverCandidates(root);
|
|
8
9
|
if (configured?.entries !== undefined) {
|
|
9
10
|
const entries = await Promise.all(configured.entries.map((entry) => normalizeConfiguredEntry(root, entry)));
|
|
11
|
+
// Configured metadata overrides the same source; new public addons remain discoverable.
|
|
12
|
+
const inputs = new Set(entries.map((entry) => path.resolve(root, entry.bundle?.input ?? entry.input)));
|
|
13
|
+
for (const input of candidates) {
|
|
14
|
+
if (publicKind(root, input) && !inputs.has(input))
|
|
15
|
+
entries.push(await entryFromPath(root, input));
|
|
16
|
+
}
|
|
17
|
+
assertUniqueNames(entries);
|
|
10
18
|
return enrichFromExportedCatalog(root, entries);
|
|
11
19
|
}
|
|
12
|
-
const
|
|
13
|
-
|
|
20
|
+
const entries = await Promise.all(candidates.map((input) => entryFromPath(root, input)));
|
|
21
|
+
assertUniqueNames(entries);
|
|
14
22
|
return enrichFromExportedCatalog(root, entries);
|
|
15
23
|
}
|
|
16
24
|
async function enrichFromExportedCatalog(root, entries) {
|
|
17
25
|
if (entries.length === 0)
|
|
18
26
|
return entries;
|
|
19
27
|
const indexPath = path.join(root, "src", "index.ts");
|
|
20
|
-
let source;
|
|
28
|
+
let source = "";
|
|
21
29
|
try {
|
|
22
30
|
source = await readFile(indexPath, "utf8");
|
|
23
31
|
}
|
|
24
32
|
catch (error) {
|
|
25
|
-
if (isMissing(error))
|
|
26
|
-
|
|
27
|
-
throw error;
|
|
33
|
+
if (!isMissing(error))
|
|
34
|
+
throw error;
|
|
28
35
|
}
|
|
29
|
-
|
|
36
|
+
const hasCatalog = /\baddonDefinitions\b/u.test(source);
|
|
37
|
+
if (!hasCatalog && !entries.some((entry) => entry.definition))
|
|
30
38
|
return entries;
|
|
31
39
|
const server = await createServer({
|
|
32
40
|
root,
|
|
@@ -39,7 +47,7 @@ async function enrichFromExportedCatalog(root, entries) {
|
|
|
39
47
|
server: { middlewareMode: true, hmr: false, watch: null },
|
|
40
48
|
});
|
|
41
49
|
try {
|
|
42
|
-
const loaded = (await server.ssrLoadModule("/src/index.ts"));
|
|
50
|
+
const loaded = (hasCatalog ? await server.ssrLoadModule("/src/index.ts") : { addonDefinitions: [] });
|
|
43
51
|
if (!Array.isArray(loaded.addonDefinitions)) {
|
|
44
52
|
throw new Error(`${indexPath} exports addonDefinitions, but it is not an array.`);
|
|
45
53
|
}
|
|
@@ -50,10 +58,23 @@ async function enrichFromExportedCatalog(root, entries) {
|
|
|
50
58
|
}
|
|
51
59
|
definitions.set(candidate.name, candidate);
|
|
52
60
|
}
|
|
53
|
-
|
|
61
|
+
const enriched = [];
|
|
62
|
+
for (const entry of entries) {
|
|
63
|
+
let definition = definitions.get(entry.name);
|
|
64
|
+
if (entry.definition) {
|
|
65
|
+
const module = (await server.ssrLoadModule(path.resolve(root, entry.definition.module).split(path.sep).join("/")));
|
|
66
|
+
const candidate = module[entry.definition.export];
|
|
67
|
+
if (!isRecord(candidate) || candidate.name !== entry.name) {
|
|
68
|
+
throw new Error(`Metadata export ${entry.definition.export} must describe ${entry.name}.`);
|
|
69
|
+
}
|
|
70
|
+
definition = candidate;
|
|
71
|
+
}
|
|
72
|
+
enriched.push(enrichEntry(entry, definition));
|
|
73
|
+
}
|
|
74
|
+
return enriched;
|
|
54
75
|
}
|
|
55
76
|
catch (error) {
|
|
56
|
-
throw new Error(`Cannot load
|
|
77
|
+
throw new Error(`Cannot load addon metadata: ${errorMessage(error)}`, {
|
|
57
78
|
cause: error,
|
|
58
79
|
});
|
|
59
80
|
}
|
|
@@ -86,7 +107,15 @@ function enrichEntry(entry, definition) {
|
|
|
86
107
|
description,
|
|
87
108
|
placement,
|
|
88
109
|
attributes,
|
|
110
|
+
...(Array.isArray(definition.attributes)
|
|
111
|
+
? {
|
|
112
|
+
attributeDetails: definition.attributes
|
|
113
|
+
.filter(isRecord)
|
|
114
|
+
.filter((attribute) => typeof attribute.name === "string"),
|
|
115
|
+
}
|
|
116
|
+
: {}),
|
|
89
117
|
dependencies,
|
|
118
|
+
...(definition.usage ? { usage: definition.usage } : {}),
|
|
90
119
|
...(isRecord(definition.defaultOptions) && !Array.isArray(definition.defaultOptions)
|
|
91
120
|
? { defaultOptions: definition.defaultOptions }
|
|
92
121
|
: {}),
|
|
@@ -111,10 +140,12 @@ async function readConfig(root) {
|
|
|
111
140
|
}
|
|
112
141
|
async function normalizeConfiguredEntry(root, entry) {
|
|
113
142
|
validateName(entry.name);
|
|
143
|
+
if (entry.kind !== undefined && entry.kind !== "addon" && entry.kind !== "project")
|
|
144
|
+
throw new Error(`Invalid entry kind for ${entry.name}. Expected addon or project.`);
|
|
114
145
|
const input = path.resolve(root, entry.input);
|
|
115
146
|
await access(input);
|
|
116
147
|
const sidecar = await readSidecar(input);
|
|
117
|
-
return mergeEntry(entry.name, input, entry, sidecar);
|
|
148
|
+
return withBrowserBundle(root, mergeEntry(entry.name, input, entry, sidecar));
|
|
118
149
|
}
|
|
119
150
|
async function discoverCandidates(root) {
|
|
120
151
|
const sourceRoot = path.join(root, "src");
|
|
@@ -125,21 +156,53 @@ async function discoverCandidates(root) {
|
|
|
125
156
|
if (!sourceExtensions.has(extension))
|
|
126
157
|
return false;
|
|
127
158
|
const relative = path.relative(sourceRoot, file).split(path.sep).join("/");
|
|
128
|
-
|
|
159
|
+
if (relative.split("/").some((part) => part.startsWith("_") || part.startsWith(".")))
|
|
160
|
+
return false;
|
|
161
|
+
if (/\.(?:test|spec|d)\.[^.]+$/u.test(relative))
|
|
162
|
+
return false;
|
|
163
|
+
return (publicKind(root, file) !== undefined ||
|
|
164
|
+
relative.startsWith("entries/") ||
|
|
129
165
|
/^[^/]+\/index\.(?:ts|tsx|js|mjs)$/.test(relative) ||
|
|
130
166
|
/(?:^|\/)addons\/[^/]+\/index\.(?:ts|tsx|js|mjs)$/.test(relative) ||
|
|
131
167
|
/(?:^|\/)addons\/[^/]+\.entry\.(?:ts|tsx|js|mjs)$/.test(relative));
|
|
132
168
|
})
|
|
133
169
|
.sort((left, right) => left.localeCompare(right));
|
|
134
170
|
}
|
|
135
|
-
async function entryFromPath(input) {
|
|
171
|
+
async function entryFromPath(root, input) {
|
|
136
172
|
const parsed = path.parse(input);
|
|
137
173
|
const parent = path.basename(parsed.dir);
|
|
138
174
|
const rawName = parsed.name === "index" ? parent : parsed.name.replace(/\.entry$/, "");
|
|
139
175
|
const name = kebabCase(rawName);
|
|
140
176
|
validateName(name);
|
|
141
177
|
const sidecar = await readSidecar(input);
|
|
142
|
-
return mergeEntry(name, input, {}, sidecar);
|
|
178
|
+
return withBrowserBundle(root, mergeEntry(name, input, {}, sidecar));
|
|
179
|
+
}
|
|
180
|
+
function publicKind(root, input) {
|
|
181
|
+
const relative = path.relative(root, input).split(path.sep).join("/");
|
|
182
|
+
const match = /^src\/(addons|projects|entries)\/(?:[^/]+\.(?:ts|tsx|js|mjs)|[^/]+\/index\.(?:ts|tsx|js|mjs))$/u.exec(relative);
|
|
183
|
+
return match ? (match[1] === "projects" ? "project" : "addon") : undefined;
|
|
184
|
+
}
|
|
185
|
+
function withBrowserBundle(root, entry) {
|
|
186
|
+
const kind = entry.kind ?? publicKind(root, entry.input);
|
|
187
|
+
if (!kind)
|
|
188
|
+
return entry;
|
|
189
|
+
return {
|
|
190
|
+
...entry,
|
|
191
|
+
kind,
|
|
192
|
+
bundle: entry.bundle ?? {
|
|
193
|
+
input: path.relative(root, entry.input).split(path.sep).join("/"),
|
|
194
|
+
scriptFile: `${kind === "project" ? "projects" : "addons"}/${entry.name}.js`,
|
|
195
|
+
cssFile: `${kind === "project" ? "projects" : "addons"}/${entry.name}.css`,
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
function assertUniqueNames(entries) {
|
|
200
|
+
const names = new Set();
|
|
201
|
+
for (const entry of entries) {
|
|
202
|
+
if (names.has(entry.name))
|
|
203
|
+
throw new Error(`Duplicate public entry name: ${entry.name}.`);
|
|
204
|
+
names.add(entry.name);
|
|
205
|
+
}
|
|
143
206
|
}
|
|
144
207
|
async function readSidecar(input) {
|
|
145
208
|
const parsed = path.parse(input);
|
|
@@ -159,9 +222,12 @@ async function readSidecar(input) {
|
|
|
159
222
|
}
|
|
160
223
|
function mergeEntry(name, input, preferred, fallback) {
|
|
161
224
|
const metadata = { ...fallback, ...preferred };
|
|
225
|
+
if (metadata.kind !== undefined && metadata.kind !== "addon" && metadata.kind !== "project")
|
|
226
|
+
throw new Error(`Invalid entry kind for ${name}. Expected addon or project.`);
|
|
162
227
|
return {
|
|
163
228
|
name,
|
|
164
229
|
input,
|
|
230
|
+
...(metadata.kind ? { kind: metadata.kind } : {}),
|
|
165
231
|
...(metadata.version === undefined ? {} : { version: metadata.version }),
|
|
166
232
|
description: metadata.description ?? `Reusable ${name} addon.`,
|
|
167
233
|
placement: metadata.placement ?? "body-end",
|
|
@@ -170,6 +236,10 @@ function mergeEntry(name, input, preferred, fallback) {
|
|
|
170
236
|
scriptAttributes: metadata.scriptAttributes ?? {},
|
|
171
237
|
...(metadata.defaultOptions === undefined ? {} : { defaultOptions: metadata.defaultOptions }),
|
|
172
238
|
api: metadata.api ?? { entry: name },
|
|
239
|
+
...(metadata.usage ? { usage: metadata.usage } : {}),
|
|
240
|
+
...(metadata.attributeDetails ? { attributeDetails: metadata.attributeDetails } : {}),
|
|
241
|
+
...(metadata.definition ? { definition: metadata.definition } : {}),
|
|
242
|
+
...(metadata.bundle ? { bundle: metadata.bundle } : {}),
|
|
173
243
|
};
|
|
174
244
|
}
|
|
175
245
|
async function walkIfPresent(directory) {
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAgDpC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AACjE,MAAM,WAAW,GAAG,4BAA4B,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,UAAU,EAAE,OAAO,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACzE,CAAC;QACF,wFAAwF;QACxF,MAAM,MAAM,GAAG,IAAI,GAAG,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAC/E,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACzF,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,IAAY,EACZ,OAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACrD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;IACrC,CAAC;IACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAE9E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,IAAI;QACJ,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,QAAQ;QAClB,0EAA0E;QAC1E,0EAA0E;QAC1E,gDAAgD;QAChD,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;KAC1D,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CACb,UAAU,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAGpF,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,oDAAoD,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;QACzD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,mCAAmC,CAAC,CAAC;YACnE,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CACxC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACtE,CAA4B,CAAC;gBAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC1D,MAAM,IAAI,KAAK,CACb,mBAAmB,KAAK,CAAC,UAAU,CAAC,MAAM,kBAAkB,KAAK,CAAC,IAAI,GAAG,CAC1E,CAAC;gBACJ,CAAC;gBACD,UAAU,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE;YACpE,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAiB,EAAE,UAAyC;IAC/E,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,WAAW,GACf,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAC1F,MAAM,SAAS,GACb,UAAU,CAAC,SAAS,KAAK,MAAM,IAAI,UAAU,CAAC,SAAS,KAAK,UAAU;QACpE,CAAC,CAAC,UAAU,CAAC,SAAS;QACtB,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACtB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QACrD,CAAC,CAAC,UAAU,CAAC,UAAU;aAClB,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC,CAAC,SAA2B,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;aACpD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;QAC/D,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IACrB,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;QACzD,CAAC,CAAC,UAAU,CAAC,YAAY;aACpB,MAAM,CAAC,QAAQ,CAAC;aAChB,GAAG,CAAC,CAAC,UAA6B,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;aACvD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;QAC/D,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;IACvB,OAAO;QACL,GAAG,KAAK;QACR,GAAG,CAAC,OAAO,UAAU,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,WAAW;QACX,SAAS;QACT,UAAU;QACV,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YACtC,CAAC,CAAC;gBACE,gBAAgB,EAAE,UAAU,CAAC,UAAU;qBACpC,MAAM,CAAC,QAAQ,CAAC;qBAChB,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,CACF;aACpD;YACH,CAAC,CAAC,EAAE,CAAC;QACP,YAAY;QACZ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAClF,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE;YAC/C,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,EAAE;YACH,GAAG,KAAK,CAAC,GAAG;YACZ,GAAG,CAAC,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAA0B,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,IAAY,EAAE,KAAkB;IACtE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAChF,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,IAAI,8BAA8B,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3E,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,OAAO,CACL,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,SAAS;YACpC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC;YAC/B,mCAAmC,CAAC,IAAI,CAAC,QAAQ,CAAC;YAClD,kDAAkD,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjE,kDAAkD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAClE,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,KAAa;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,KAAK,GACT,iGAAiG,CAAC,IAAI,CACpG,QAAQ,CACT,CAAC;IACJ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAiB;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO;QACL,GAAG,KAAK;QACR,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI;YACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACjE,UAAU,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK;YAC5E,OAAO,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,MAAM;SAC3E;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA8B;IACvD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1F,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,KAAK,OAAO;QACrB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;IACjF,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAyB,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,8BAA8B,WAAW,KAAK,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE;YACnF,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,IAAY,EACZ,KAAa,EACb,SAA+B,EAC/B,QAA8B;IAE9B,MAAM,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QACzF,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,8BAA8B,CAAC,CAAC;IAChF,OAAO;QACL,IAAI;QACJ,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxE,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,YAAY,IAAI,SAAS;QAC9D,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,UAAU;QAC3C,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE;QACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,EAAE;QACjD,GAAG,CAAC,QAAQ,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7F,GAAG,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;YACtD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC,CACH,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA4B,CAAC,IAAI,KAAK,QAAQ,CAChD,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AddonEntry, ProjectBundle } from "./types.js";
|
|
2
|
+
export interface DocumentationOptions {
|
|
3
|
+
readonly devUrl?: string;
|
|
4
|
+
readonly publicBaseUrl?: string;
|
|
5
|
+
readonly hmr?: boolean;
|
|
6
|
+
readonly bundle?: ProjectBundle;
|
|
7
|
+
}
|
|
8
|
+
export interface DocumentedEntry extends AddonEntry {
|
|
9
|
+
readonly snippets: {
|
|
10
|
+
readonly development?: string;
|
|
11
|
+
readonly production?: string;
|
|
12
|
+
readonly stylesheet?: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function documentEntry(entry: AddonEntry, options?: DocumentationOptions): DocumentedEntry;
|
|
16
|
+
export declare function renderSetupGuide(entry: DocumentedEntry): string;
|
|
17
|
+
export declare function renderCatalog(entries: readonly DocumentedEntry[]): string;
|
|
18
|
+
//# sourceMappingURL=documentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../src/documentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,oBAAyB,GACjC,eAAe,CA0CjB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CA8E/D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,MAAM,CAEzE"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
export function documentEntry(entry, options = {}) {
|
|
2
|
+
const bundle = options.bundle ?? entry.bundle;
|
|
3
|
+
if (!bundle)
|
|
4
|
+
return { ...entry, snippets: {} };
|
|
5
|
+
const devUrl = baseUrl(options.devUrl ?? "http://localhost:5173");
|
|
6
|
+
const development = [
|
|
7
|
+
...((options.hmr ?? true)
|
|
8
|
+
? [
|
|
9
|
+
`<script type="module" src="${escapeHtml(new URL("@vite/client", devUrl).href)}"></script>`,
|
|
10
|
+
]
|
|
11
|
+
: []),
|
|
12
|
+
`<script type="module" src="${escapeHtml(assetUrl(bundle.input, devUrl))}"></script>`,
|
|
13
|
+
].join("\n");
|
|
14
|
+
const publicBase = options.publicBaseUrl ? baseUrl(options.publicBaseUrl) : undefined;
|
|
15
|
+
const attributes = Object.entries(entry.scriptAttributes)
|
|
16
|
+
.map(([name, value]) => {
|
|
17
|
+
if (!/^(?:data-[a-z0-9-]+|integrity|crossorigin|nonce|referrerpolicy|fetchpriority|defer|async)$/u.test(name)) {
|
|
18
|
+
throw new Error(`Unsupported script attribute in documentation: ${name}.`);
|
|
19
|
+
}
|
|
20
|
+
return ` ${name}="${escapeHtml(value)}"`;
|
|
21
|
+
})
|
|
22
|
+
.join("");
|
|
23
|
+
return {
|
|
24
|
+
...entry,
|
|
25
|
+
bundle,
|
|
26
|
+
snippets: {
|
|
27
|
+
development,
|
|
28
|
+
...(publicBase
|
|
29
|
+
? {
|
|
30
|
+
production: `<script${entry.placement === "head" && !("defer" in entry.scriptAttributes) ? " defer" : ""} src="${escapeHtml(assetUrl(bundle.scriptFile, publicBase))}"${attributes}></script>`,
|
|
31
|
+
...(bundle.cssFile
|
|
32
|
+
? {
|
|
33
|
+
stylesheet: `<link rel="stylesheet" href="${escapeHtml(assetUrl(bundle.cssFile, publicBase))}">`,
|
|
34
|
+
}
|
|
35
|
+
: {}),
|
|
36
|
+
}
|
|
37
|
+
: {}),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function renderSetupGuide(entry) {
|
|
42
|
+
const lines = [
|
|
43
|
+
`# ${entry.name}${entry.version ? ` (${entry.version})` : ""}`,
|
|
44
|
+
"",
|
|
45
|
+
entry.description,
|
|
46
|
+
"",
|
|
47
|
+
`Source: ${inline(entry.input)}`,
|
|
48
|
+
`Script placement: ${entry.placement === "head" ? "head, deferred" : "before the closing body tag"}.`,
|
|
49
|
+
"",
|
|
50
|
+
"## Webflow setup",
|
|
51
|
+
"",
|
|
52
|
+
...(entry.usage?.setup.length
|
|
53
|
+
? entry.usage.setup.map((step, index) => `${index + 1}. ${step}`)
|
|
54
|
+
: ["No additional setup steps documented."]),
|
|
55
|
+
];
|
|
56
|
+
if (entry.usage?.markup)
|
|
57
|
+
lines.push("", fence(entry.usage.markup, "html"));
|
|
58
|
+
lines.push("", "## Attributes", "");
|
|
59
|
+
const details = new Map(entry.attributeDetails?.map((attribute) => [attribute.name, attribute]));
|
|
60
|
+
for (const name of entry.attributes) {
|
|
61
|
+
const detail = details.get(name);
|
|
62
|
+
lines.push(`- ${inline(name)}${detail?.required ? " (required)" : ""}${detail?.type ? ` — ${detail.type}` : ""}${detail?.description ? `: ${detail.description}` : ""}${detail?.values ? ` Values: ${detail.values.map(inline).join(", ")}.` : ""}${detail?.option ? ` Maps to option ${inline(detail.option)}.` : ""}`);
|
|
63
|
+
}
|
|
64
|
+
if (entry.attributes.length === 0)
|
|
65
|
+
lines.push("No attributes declared.");
|
|
66
|
+
lines.push("", "## Options and defaults", "");
|
|
67
|
+
const options = Array.isArray(entry.api.options) ? entry.api.options : [];
|
|
68
|
+
for (const value of options) {
|
|
69
|
+
if (typeof value !== "object" || value === null || !("name" in value))
|
|
70
|
+
continue;
|
|
71
|
+
const option = value;
|
|
72
|
+
lines.push(`- ${inline(String(option.name))}${option.required ? " (required)" : ""}${typeof option.type === "string" ? ` — ${option.type}` : ""}${typeof option.description === "string" ? `: ${option.description}` : ""}`);
|
|
73
|
+
}
|
|
74
|
+
lines.push(fence(JSON.stringify(entry.defaultOptions ?? {}, null, 2), "json"));
|
|
75
|
+
lines.push("", "## Runtime API", "", fence(JSON.stringify(entry.api, null, 2), "json"));
|
|
76
|
+
lines.push("", "## Dependencies", "", ...(entry.dependencies.length
|
|
77
|
+
? entry.dependencies.map((name) => `- ${inline(name)}`)
|
|
78
|
+
: ["No dependencies declared."]));
|
|
79
|
+
lines.push("", "## Local Webflow testing", "");
|
|
80
|
+
if (entry.snippets.development) {
|
|
81
|
+
lines.push("Start the project dev server. Use this snippet only on an approved testing page; remove it before production handoff.", "", fence(entry.snippets.development, "html"));
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
lines.push("This is a reusable source module. Create a browser entry under src/addons/<name>.ts that initializes and registers its API, or declare an explicit browser bundle in devkit.config.json.");
|
|
85
|
+
}
|
|
86
|
+
lines.push("", "## Production handoff", "");
|
|
87
|
+
if (entry.snippets.production) {
|
|
88
|
+
lines.push("Build and deploy this standalone script first. Load it once on each page that needs this enhancement. Other addon scripts are selected independently.", "");
|
|
89
|
+
if (entry.snippets.stylesheet)
|
|
90
|
+
lines.push("Place the stylesheet in the head, when the build emits this CSS file:", "", fence(entry.snippets.stylesheet, "html"), "");
|
|
91
|
+
lines.push(fence(entry.snippets.production, "html"));
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
lines.push("Supply the project's deployed asset base URL with --public-base-url to generate production tags. Hosting is never inferred.");
|
|
95
|
+
}
|
|
96
|
+
if (entry.usage?.notes?.length)
|
|
97
|
+
lines.push("", "## Notes", "", ...entry.usage.notes.map((note) => `- ${note}`));
|
|
98
|
+
return `${lines.join("\n")}\n`;
|
|
99
|
+
}
|
|
100
|
+
export function renderCatalog(entries) {
|
|
101
|
+
return `# Webflow enhancement catalog\n\nGenerated from project configuration and inert addon metadata.\n\n${entries.map((entry) => renderSetupGuide(entry).replace(/^(#{1,5}) /gmu, "#$1 ")).join("\n---\n\n")}`;
|
|
102
|
+
}
|
|
103
|
+
function baseUrl(value) {
|
|
104
|
+
const url = new URL(value);
|
|
105
|
+
if (!["http:", "https:"].includes(url.protocol) ||
|
|
106
|
+
url.username ||
|
|
107
|
+
url.password ||
|
|
108
|
+
url.search ||
|
|
109
|
+
url.hash) {
|
|
110
|
+
throw new Error("Documentation base URLs must use HTTP(S), without credentials, a query, or fragment.");
|
|
111
|
+
}
|
|
112
|
+
if (!url.pathname.endsWith("/"))
|
|
113
|
+
url.pathname += "/";
|
|
114
|
+
return url;
|
|
115
|
+
}
|
|
116
|
+
function assetUrl(value, base) {
|
|
117
|
+
const segments = value.replaceAll("\\", "/").split("/");
|
|
118
|
+
if (segments.some((part) => part === ".." || part === "." || part === "") ||
|
|
119
|
+
/[:?#]/u.test(value)) {
|
|
120
|
+
throw new Error("Documented bundle paths must be relative asset paths without traversal.");
|
|
121
|
+
}
|
|
122
|
+
return new URL(segments.map(encodeURIComponent).join("/"), base).href;
|
|
123
|
+
}
|
|
124
|
+
function escapeHtml(value) {
|
|
125
|
+
return value
|
|
126
|
+
.replaceAll("&", "&")
|
|
127
|
+
.replaceAll('"', """)
|
|
128
|
+
.replaceAll("<", "<")
|
|
129
|
+
.replaceAll(">", ">");
|
|
130
|
+
}
|
|
131
|
+
function fence(value, language) {
|
|
132
|
+
const marker = "`".repeat(Math.max(3, ...[...value.matchAll(/`+/gu)].map(([run]) => run.length + 1)));
|
|
133
|
+
return `${marker}${language}\n${value}\n${marker}`;
|
|
134
|
+
}
|
|
135
|
+
function inline(value) {
|
|
136
|
+
const marker = value.includes("`") ? "``" : "`";
|
|
137
|
+
return `${marker}${value}${marker}`;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../src/documentation.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { runCli, type CliDependencies } from "./commands.js";
|
|
2
2
|
export { buildSiteBundle, type BuildSiteBundleOptions, type BuildSiteBundleResult, } from "./build.js";
|
|
3
3
|
export { discoverAddonEntries } from "./discovery.js";
|
|
4
|
+
export { buildScripts, type BuildScriptsOptions, type BuildScriptsResult, type BuiltScript, } from "./scripts-build.js";
|
|
5
|
+
export { documentEntry, renderCatalog, renderSetupGuide, type DocumentationOptions, type DocumentedEntry, } from "./documentation.js";
|
|
4
6
|
export { forbiddenTermsFromEnvironment, sanitizeTree, type SanitizeFinding, type SanitizeOptions, type SanitizeResult, } from "./sanitize.js";
|
|
5
|
-
export type { AddonEntry, CommandResult } from "./types.js";
|
|
7
|
+
export type { AddonEntry, AttributeDocumentation, CommandResult, EntryUsage, ProjectBundle, } from "./types.js";
|
|
6
8
|
export { WebflowClient, WebflowHttpError, webflowOAuthTokenFromEnvironment, webflowTokenFromEnvironment, type AppliedScript, type RegisteredScript, type SiteCustomCode, type WebflowComponentProperty, type WebflowClientOptions, type WebflowSite, } from "./webflow/client.js";
|
|
7
9
|
export { parseRenderedScripts, scanApiScripts, scanRenderedScripts } from "./webflow/scan.js";
|
|
8
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,UAAU,EACV,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gCAAgC,EAChC,2BAA2B,EAC3B,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { runCli } from "./commands.js";
|
|
2
2
|
export { buildSiteBundle, } from "./build.js";
|
|
3
3
|
export { discoverAddonEntries } from "./discovery.js";
|
|
4
|
+
export { buildScripts, } from "./scripts-build.js";
|
|
5
|
+
export { documentEntry, renderCatalog, renderSetupGuide, } from "./documentation.js";
|
|
4
6
|
export { forbiddenTermsFromEnvironment, sanitizeTree, } from "./sanitize.js";
|
|
5
7
|
export { WebflowClient, WebflowHttpError, webflowOAuthTokenFromEnvironment, webflowTokenFromEnvironment, } from "./webflow/client.js";
|
|
6
8
|
export { parseRenderedScripts, scanApiScripts, scanRenderedScripts } from "./webflow/scan.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,eAAe,GAGhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,6BAA6B,EAC7B,YAAY,GAIb,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAwB,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,eAAe,GAGhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,YAAY,GAIb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,GAGjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,6BAA6B,EAC7B,YAAY,GAIb,MAAM,eAAe,CAAC;AAQvB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gCAAgC,EAChC,2BAA2B,GAO5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,aAAa,EAAE,YAG3B,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,YAA4B,GACnC,IAAI,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,aAAa,EAAE,YAG3B,CAAC;AAEF,wBAAgB,WAAW,CACzB,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,OAAO,EACb,MAAM,GAAE,YAA4B,GACnC,IAAI,CAsBN"}
|
package/dist/output.js
CHANGED
|
@@ -4,7 +4,11 @@ export const consoleWriter = {
|
|
|
4
4
|
};
|
|
5
5
|
export function writeResult(result, json, writer = consoleWriter) {
|
|
6
6
|
if (json) {
|
|
7
|
-
writer.info(JSON.stringify(result, null, 2));
|
|
7
|
+
writer.info(JSON.stringify({ ok: result.ok, command: result.command, summary: result.summary, data: result.data }, null, 2));
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (result.text !== undefined) {
|
|
11
|
+
writer.info(result.text);
|
|
8
12
|
return;
|
|
9
13
|
}
|
|
10
14
|
const marker = result.ok ? "OK" : "ERROR";
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,IAAa,EACb,SAAuB,aAAa;IAEpC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,IAAa,EACb,SAAuB,aAAa;IAEpC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,SAAS,CACZ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EACtF,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,IAAI,EAAE,CAAC;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,SAAS,CAAC;QAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,KAAK,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ViteBuild } from "./build.js";
|
|
2
|
+
export interface BuildScriptsOptions {
|
|
3
|
+
readonly root: string;
|
|
4
|
+
readonly outDir?: string;
|
|
5
|
+
readonly sourcemap?: boolean;
|
|
6
|
+
readonly build?: ViteBuild;
|
|
7
|
+
}
|
|
8
|
+
export interface BuiltScript {
|
|
9
|
+
readonly name: string;
|
|
10
|
+
readonly kind: "addon" | "project";
|
|
11
|
+
readonly input: string;
|
|
12
|
+
readonly scriptFile: string;
|
|
13
|
+
readonly cssFile?: string;
|
|
14
|
+
readonly scriptPath: string;
|
|
15
|
+
readonly cssPath?: string;
|
|
16
|
+
readonly sourceMapPaths?: readonly string[];
|
|
17
|
+
}
|
|
18
|
+
export interface BuildScriptsResult {
|
|
19
|
+
readonly outDir: string;
|
|
20
|
+
readonly entries: readonly BuiltScript[];
|
|
21
|
+
readonly manifestPath: string;
|
|
22
|
+
}
|
|
23
|
+
/** Each public browser entry is a standalone IIFE with its own optional stylesheet. */
|
|
24
|
+
export declare function buildScripts(options: BuildScriptsOptions): Promise<BuildScriptsResult>;
|
|
25
|
+
//# sourceMappingURL=scripts-build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts-build.d.ts","sourceRoot":"","sources":["../src/scripts-build.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAI7D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,uFAAuF;AACvF,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyE5F"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { access, mkdir, realpath, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { buildSiteBundle } from "./build.js";
|
|
4
|
+
import { discoverAddonEntries } from "./discovery.js";
|
|
5
|
+
/** Each public browser entry is a standalone IIFE with its own optional stylesheet. */
|
|
6
|
+
export async function buildScripts(options) {
|
|
7
|
+
const root = path.resolve(options.root);
|
|
8
|
+
const outDir = path.resolve(root, options.outDir ?? "dist");
|
|
9
|
+
const entries = (await discoverAddonEntries(root)).filter((entry) => entry.bundle);
|
|
10
|
+
const outputs = new Set(["webflow-scripts.json"]);
|
|
11
|
+
const planned = entries.map((entry) => planEntry(root, entry));
|
|
12
|
+
for (const entry of planned) {
|
|
13
|
+
for (const output of [entry.scriptFile, entry.cssFile]) {
|
|
14
|
+
const normalized = output.toLowerCase();
|
|
15
|
+
if ([...outputs].some((existing) => existing === normalized ||
|
|
16
|
+
existing.startsWith(`${normalized}/`) ||
|
|
17
|
+
normalized.startsWith(`${existing}/`)))
|
|
18
|
+
throw new Error(`Duplicate build output: ${output}.`);
|
|
19
|
+
outputs.add(output.toLowerCase());
|
|
20
|
+
}
|
|
21
|
+
await access(entry.input);
|
|
22
|
+
}
|
|
23
|
+
// Validate the complete plan before clearing output. Never erase source or private artifacts.
|
|
24
|
+
const canonicalOutput = await resolveRealPath(outDir);
|
|
25
|
+
const protectedPaths = [
|
|
26
|
+
root,
|
|
27
|
+
path.join(root, "src"),
|
|
28
|
+
path.join(root, ".slicemedia"),
|
|
29
|
+
path.join(root, "node_modules"),
|
|
30
|
+
...planned.map((entry) => entry.input),
|
|
31
|
+
];
|
|
32
|
+
for (const target of protectedPaths) {
|
|
33
|
+
const canonicalTarget = await resolveRealPath(target);
|
|
34
|
+
if (contains(canonicalOutput, canonicalTarget) ||
|
|
35
|
+
(target !== root && contains(canonicalTarget, canonicalOutput))) {
|
|
36
|
+
throw new Error("Build output must be separate from project source, dependencies, and private storage.");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
await rm(outDir, { recursive: true, force: true });
|
|
40
|
+
await mkdir(outDir, { recursive: true });
|
|
41
|
+
const built = [];
|
|
42
|
+
for (const entry of planned) {
|
|
43
|
+
const result = await buildSiteBundle({
|
|
44
|
+
root,
|
|
45
|
+
entry: entry.input,
|
|
46
|
+
outDir: path.join(outDir, path.posix.dirname(entry.scriptFile)),
|
|
47
|
+
scriptFileName: path.posix.basename(entry.scriptFile),
|
|
48
|
+
cssFileName: path.posix.basename(entry.cssFile),
|
|
49
|
+
emptyOutDir: false,
|
|
50
|
+
...(options.sourcemap === undefined ? {} : { sourcemap: options.sourcemap }),
|
|
51
|
+
...(options.build ? { build: options.build } : {}),
|
|
52
|
+
});
|
|
53
|
+
built.push({
|
|
54
|
+
name: entry.name,
|
|
55
|
+
kind: entry.kind,
|
|
56
|
+
input: path.relative(root, entry.input).split(path.sep).join("/"),
|
|
57
|
+
scriptFile: entry.scriptFile,
|
|
58
|
+
scriptPath: result.scriptPath,
|
|
59
|
+
...(result.cssPath ? { cssFile: entry.cssFile, cssPath: result.cssPath } : {}),
|
|
60
|
+
...(result.sourceMapPaths ? { sourceMapPaths: result.sourceMapPaths } : {}),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
const manifestPath = path.join(outDir, "webflow-scripts.json");
|
|
64
|
+
// Public manifest contains public paths only; never private map locations or source contents.
|
|
65
|
+
await writeFile(manifestPath, `${JSON.stringify({ schemaVersion: 1, entries: built.map(({ name, kind, input, scriptFile, cssFile }) => ({ name, kind, input, bundle: { input, scriptFile, ...(cssFile ? { cssFile } : {}) } })) }, null, 2)}\n`);
|
|
66
|
+
return { outDir, entries: built, manifestPath };
|
|
67
|
+
}
|
|
68
|
+
function planEntry(root, entry) {
|
|
69
|
+
const bundle = entry.bundle;
|
|
70
|
+
const scriptFile = outputPath(bundle.scriptFile, ".js");
|
|
71
|
+
const cssFile = outputPath(bundle.cssFile ?? scriptFile.replace(/\.js$/u, ".css"), ".css");
|
|
72
|
+
if (path.posix.dirname(scriptFile) !== path.posix.dirname(cssFile)) {
|
|
73
|
+
throw new Error(`Script and stylesheet must share an output directory: ${entry.name}.`);
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
name: entry.name,
|
|
77
|
+
kind: entry.kind ?? "addon",
|
|
78
|
+
input: path.resolve(root, bundle.input),
|
|
79
|
+
scriptFile,
|
|
80
|
+
cssFile,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function outputPath(value, extension) {
|
|
84
|
+
if (!value.endsWith(extension) ||
|
|
85
|
+
value.split("/").some((part) => !/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/u.test(part)) ||
|
|
86
|
+
value.includes("\\") ||
|
|
87
|
+
path.isAbsolute(value)) {
|
|
88
|
+
throw new Error(`Build output must be a relative ${extension} path without traversal: ${value}.`);
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
function contains(parent, child) {
|
|
93
|
+
const relative = path.relative(parent, child);
|
|
94
|
+
return (relative === "" ||
|
|
95
|
+
(!relative.startsWith(`..${path.sep}`) && relative !== ".." && !path.isAbsolute(relative)));
|
|
96
|
+
}
|
|
97
|
+
async function resolveRealPath(target) {
|
|
98
|
+
try {
|
|
99
|
+
return await realpath(target);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (typeof error !== "object" ||
|
|
103
|
+
error === null ||
|
|
104
|
+
!("code" in error) ||
|
|
105
|
+
error.code !== "ENOENT")
|
|
106
|
+
throw error;
|
|
107
|
+
return path.join(await resolveRealPath(path.dirname(target)), path.basename(target));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=scripts-build.js.map
|