-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrite-plugin-sdk-entry-dts.ts
More file actions
80 lines (76 loc) · 2.69 KB
/
write-plugin-sdk-entry-dts.ts
File metadata and controls
80 lines (76 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import fs from "node:fs";
import path from "node:path";
import { pluginSdkEntrypoints } from "./lib/plugin-sdk-entries.mjs";
const RUNTIME_SHIMS: Partial<Record<string, string>> = {
"secret-input-runtime": [
"export {",
" hasConfiguredSecretInput,",
" normalizeResolvedSecretInputString,",
" normalizeSecretInputString,",
'} from "./config-runtime.js";',
"",
].join("\n"),
"webhook-path": [
"/** Normalize webhook paths into the canonical registry form used by route lookup. */",
"export function normalizeWebhookPath(raw) {",
" const trimmed = raw.trim();",
" if (!trimmed) {",
' return "/";',
" }",
' const withSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`;',
' if (withSlash.length > 1 && withSlash.endsWith("/")) {',
" return withSlash.slice(0, -1);",
" }",
" return withSlash;",
"}",
"",
"/** Resolve the effective webhook path from explicit path, URL, or default fallback. */",
"export function resolveWebhookPath(params) {",
" const trimmedPath = params.webhookPath?.trim();",
" if (trimmedPath) {",
" return normalizeWebhookPath(trimmedPath);",
" }",
" if (params.webhookUrl?.trim()) {",
" try {",
" const parsed = new URL(params.webhookUrl);",
' return normalizeWebhookPath(parsed.pathname || "/");',
" } catch {",
" return null;",
" }",
" }",
" return params.defaultPath ?? null;",
"}",
"",
].join("\n"),
};
const TYPE_SHIMS: Partial<Record<string, string>> = {
"secret-input-runtime": [
"export {",
" hasConfiguredSecretInput,",
" normalizeResolvedSecretInputString,",
" normalizeSecretInputString,",
'} from "./config-runtime.js";',
"",
].join("\n"),
};
// `tsc` emits declarations under `dist/plugin-sdk/src/plugin-sdk/*` because the source lives
// at `src/plugin-sdk/*` and `rootDir` is `.` (repo root, to support cross-src/extensions refs).
//
// Our package export map points subpath `types` at `dist/plugin-sdk/<entry>.d.ts`, so we
// generate stable entry d.ts files that re-export the real declarations.
for (const entry of pluginSdkEntrypoints) {
const typeOut = path.join(process.cwd(), `dist/plugin-sdk/${entry}.d.ts`);
fs.mkdirSync(path.dirname(typeOut), { recursive: true });
fs.writeFileSync(
typeOut,
TYPE_SHIMS[entry] ?? `export * from "./src/plugin-sdk/${entry}.js";\n`,
"utf8",
);
const runtimeShim = RUNTIME_SHIMS[entry];
if (!runtimeShim) {
continue;
}
const runtimeOut = path.join(process.cwd(), `dist/plugin-sdk/${entry}.js`);
fs.mkdirSync(path.dirname(runtimeOut), { recursive: true });
fs.writeFileSync(runtimeOut, runtimeShim, "utf8");
}