@setzkasten-cms/astro-admin 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/api-routes/_auth-guard.d.ts +47 -0
  2. package/dist/api-routes/_auth-guard.js +18 -0
  3. package/dist/api-routes/_commit-trailers.d.ts +8 -0
  4. package/dist/api-routes/_commit-trailers.js +8 -0
  5. package/dist/api-routes/_feature-gate.d.ts +23 -0
  6. package/dist/api-routes/_feature-gate.js +7 -0
  7. package/dist/api-routes/_github-cache.d.ts +4 -0
  8. package/dist/api-routes/_github-cache.js +8 -0
  9. package/dist/api-routes/_github-token.d.ts +27 -0
  10. package/dist/api-routes/_github-token.js +8 -0
  11. package/dist/api-routes/_license-tier.d.ts +22 -0
  12. package/dist/api-routes/_license-tier.js +6 -0
  13. package/dist/api-routes/_pages-meta-store.d.ts +32 -0
  14. package/dist/api-routes/_pages-meta-store.js +9 -0
  15. package/dist/api-routes/_role-resolver.d.ts +15 -0
  16. package/dist/api-routes/_role-resolver.js +13 -0
  17. package/dist/api-routes/_session-cookie.d.ts +18 -0
  18. package/dist/api-routes/_session-cookie.js +6 -0
  19. package/dist/api-routes/_storage-config.d.ts +60 -0
  20. package/dist/api-routes/_storage-config.js +10 -0
  21. package/dist/api-routes/_vercel-origin.d.ts +16 -0
  22. package/dist/api-routes/_vercel-origin.js +6 -0
  23. package/dist/api-routes/_webhook-dispatcher.d.ts +13 -0
  24. package/dist/api-routes/_webhook-dispatcher.js +97 -0
  25. package/dist/api-routes/_webhook-signing.d.ts +11 -0
  26. package/dist/api-routes/_webhook-signing.js +6 -0
  27. package/dist/api-routes/_webhook-status-store.d.ts +19 -0
  28. package/dist/api-routes/_webhook-status-store.js +10 -0
  29. package/dist/api-routes/_website-resolver.d.ts +49 -0
  30. package/dist/api-routes/_website-resolver.js +14 -0
  31. package/dist/api-routes/_websites-store.d.ts +30 -0
  32. package/dist/api-routes/_websites-store.js +11 -0
  33. package/dist/api-routes/asset-proxy.d.ts +12 -0
  34. package/dist/api-routes/asset-proxy.js +67 -0
  35. package/dist/api-routes/auth-callback.d.ts +9 -0
  36. package/dist/api-routes/auth-callback.js +68 -0
  37. package/dist/api-routes/auth-login.d.ts +11 -0
  38. package/dist/api-routes/auth-login.js +27 -0
  39. package/dist/api-routes/auth-logout.d.ts +10 -0
  40. package/dist/api-routes/auth-logout.js +13 -0
  41. package/dist/api-routes/auth-session.d.ts +9 -0
  42. package/dist/api-routes/auth-session.js +31 -0
  43. package/dist/api-routes/auth-setzkasten-login.d.ts +18 -0
  44. package/dist/api-routes/auth-setzkasten-login.js +74 -0
  45. package/dist/api-routes/catalog-add.d.ts +14 -0
  46. package/dist/api-routes/catalog-add.js +153 -0
  47. package/dist/api-routes/catalog-export.d.ts +13 -0
  48. package/dist/api-routes/catalog-export.js +71 -0
  49. package/dist/api-routes/catalog-helpers.d.ts +41 -0
  50. package/dist/api-routes/catalog-helpers.js +11 -0
  51. package/dist/api-routes/catalog-list.d.ts +11 -0
  52. package/dist/api-routes/catalog-list.js +12 -0
  53. package/dist/api-routes/config.d.ts +12 -0
  54. package/dist/api-routes/config.js +43 -0
  55. package/dist/api-routes/deploy-hook.d.ts +14 -0
  56. package/dist/api-routes/deploy-hook.js +52 -0
  57. package/dist/api-routes/editors.d.ts +29 -0
  58. package/dist/api-routes/editors.js +18 -0
  59. package/dist/api-routes/github-proxy.d.ts +12 -0
  60. package/dist/api-routes/github-proxy.js +82 -0
  61. package/dist/api-routes/global-config.d.ts +20 -0
  62. package/dist/api-routes/global-config.js +19 -0
  63. package/dist/api-routes/history-rollback.d.ts +22 -0
  64. package/dist/api-routes/history-rollback.js +111 -0
  65. package/dist/api-routes/history-version.d.ts +11 -0
  66. package/dist/api-routes/history-version.js +57 -0
  67. package/dist/api-routes/history.d.ts +13 -0
  68. package/dist/api-routes/history.js +85 -0
  69. package/dist/api-routes/icons-local.d.ts +28 -0
  70. package/dist/api-routes/icons-local.js +115 -0
  71. package/dist/api-routes/init-add-section.d.ts +23 -0
  72. package/dist/api-routes/init-add-section.js +396 -0
  73. package/dist/api-routes/init-apply.d.ts +11 -0
  74. package/dist/api-routes/init-apply.js +266 -0
  75. package/dist/api-routes/init-migrate.d.ts +16 -0
  76. package/dist/api-routes/init-migrate.js +205 -0
  77. package/dist/api-routes/init-scan-page.d.ts +39 -0
  78. package/dist/api-routes/init-scan-page.js +260 -0
  79. package/dist/api-routes/init-scan.d.ts +11 -0
  80. package/dist/api-routes/init-scan.js +128 -0
  81. package/dist/api-routes/migrate-to-multi.d.ts +26 -0
  82. package/dist/api-routes/migrate-to-multi.js +188 -0
  83. package/dist/api-routes/pages.d.ts +39 -0
  84. package/dist/api-routes/pages.js +88 -0
  85. package/dist/api-routes/section-add.d.ts +18 -0
  86. package/dist/api-routes/section-add.js +173 -0
  87. package/dist/api-routes/section-commit-pending.d.ts +18 -0
  88. package/dist/api-routes/section-commit-pending.js +207 -0
  89. package/dist/api-routes/section-delete.d.ts +15 -0
  90. package/dist/api-routes/section-delete.js +149 -0
  91. package/dist/api-routes/section-duplicate.d.ts +15 -0
  92. package/dist/api-routes/section-duplicate.js +143 -0
  93. package/dist/api-routes/section-management.d.ts +41 -0
  94. package/dist/api-routes/section-management.js +14 -0
  95. package/dist/api-routes/section-prepare-copy.d.ts +25 -0
  96. package/dist/api-routes/section-prepare-copy.js +69 -0
  97. package/dist/api-routes/section-prepare.d.ts +18 -0
  98. package/dist/api-routes/section-prepare.js +104 -0
  99. package/dist/api-routes/setup-github-app-bounce.d.ts +13 -0
  100. package/dist/api-routes/setup-github-app-bounce.js +45 -0
  101. package/dist/api-routes/setup-github-app-branches.d.ts +14 -0
  102. package/dist/api-routes/setup-github-app-branches.js +58 -0
  103. package/dist/api-routes/setup-github-app-callback.d.ts +15 -0
  104. package/dist/api-routes/setup-github-app-callback.js +45 -0
  105. package/dist/api-routes/setup-github-app-installed.d.ts +15 -0
  106. package/dist/api-routes/setup-github-app-installed.js +33 -0
  107. package/dist/api-routes/setup-github-app-repos.d.ts +17 -0
  108. package/dist/api-routes/setup-github-app-repos.js +41 -0
  109. package/dist/api-routes/setup-github-app.d.ts +15 -0
  110. package/dist/api-routes/setup-github-app.js +41 -0
  111. package/dist/api-routes/updater-check.d.ts +10 -0
  112. package/dist/api-routes/updater-check.js +37 -0
  113. package/dist/api-routes/updater-register.d.ts +14 -0
  114. package/dist/api-routes/updater-register.js +71 -0
  115. package/dist/api-routes/updater-transfer.d.ts +11 -0
  116. package/dist/api-routes/updater-transfer.js +37 -0
  117. package/dist/api-routes/updater-unbind.d.ts +17 -0
  118. package/dist/api-routes/updater-unbind.js +35 -0
  119. package/dist/api-routes/webhooks-status.d.ts +12 -0
  120. package/dist/api-routes/webhooks-status.js +22 -0
  121. package/dist/api-routes/webhooks-test.d.ts +13 -0
  122. package/dist/api-routes/webhooks-test.js +124 -0
  123. package/dist/api-routes/webhooks.d.ts +6 -0
  124. package/dist/api-routes/webhooks.js +148 -0
  125. package/dist/api-routes/websites-add.d.ts +15 -0
  126. package/dist/api-routes/websites-add.js +92 -0
  127. package/dist/api-routes/websites-list.d.ts +12 -0
  128. package/dist/api-routes/websites-list.js +35 -0
  129. package/dist/api-routes/websites-remove.d.ts +15 -0
  130. package/dist/api-routes/websites-remove.js +69 -0
  131. package/dist/chunk-35S35OIV.js +80 -0
  132. package/dist/chunk-45ARVNT3.js +25 -0
  133. package/dist/chunk-5PIMDP4N.js +25 -0
  134. package/dist/chunk-5ZFTG4BW.js +10 -0
  135. package/dist/chunk-6UIKVKED.js +51 -0
  136. package/dist/chunk-737TIZRU.js +9 -0
  137. package/dist/chunk-AM4DZXXM.js +120 -0
  138. package/dist/chunk-FXNOTESI.js +87 -0
  139. package/dist/chunk-GHNK2GFE.js +48 -0
  140. package/dist/chunk-GRG3LNKH.js +37 -0
  141. package/dist/chunk-INIWFKQ3.js +236 -0
  142. package/dist/chunk-JHY6XTLL.js +24 -0
  143. package/dist/chunk-K22A4ZBS.js +1574 -0
  144. package/dist/chunk-KH22FJO5.js +17 -0
  145. package/dist/chunk-NKDATSPA.js +43 -0
  146. package/dist/chunk-RHJONMLK.js +1267 -0
  147. package/dist/chunk-TJNJKPUL.js +11 -0
  148. package/dist/chunk-V6IMPVF3.js +120 -0
  149. package/dist/chunk-W3QHY5GW.js +19 -0
  150. package/dist/chunk-ZQDGGWJP.js +43 -0
  151. package/package.json +249 -53
  152. package/src/api-routes/__tests__/route-registry.test.ts +7 -1
  153. package/tsconfig.json +0 -9
@@ -0,0 +1,11 @@
1
+ // src/api-routes/_license-tier.ts
2
+ function resolveLicenseTier() {
3
+ const raw = process.env.SETZKASTEN_LICENSE_KEY?.trim() ?? "";
4
+ if (raw.startsWith("SK-PRO-")) return "pro";
5
+ if (raw.startsWith("SK-ENT-")) return "enterprise";
6
+ return "free";
7
+ }
8
+
9
+ export {
10
+ resolveLicenseTier
11
+ };
@@ -0,0 +1,120 @@
1
+ // src/api-routes/_website-resolver.ts
2
+ import {
3
+ err,
4
+ notFoundError,
5
+ ok,
6
+ validationError
7
+ } from "@setzkasten-cms/core";
8
+ import { GitHubAppClient, GitHubWebsitesRegistry } from "@setzkasten-cms/github-adapter";
9
+ var state = null;
10
+ function __resetWebsiteResolverForTests(next) {
11
+ state = next;
12
+ }
13
+ function configureWebsiteResolver(next) {
14
+ state = next;
15
+ }
16
+ function isMultiKind(kind) {
17
+ return kind === "multi" || kind === "standalone";
18
+ }
19
+ function bootstrapResolverFromGlobals() {
20
+ if (state !== null) return;
21
+ const fullConfig = (typeof __SETZKASTEN_FULL_CONFIG__ !== "undefined" ? __SETZKASTEN_FULL_CONFIG__ : null) ?? globalThis.__SETZKASTEN_FULL_CONFIG__;
22
+ const buildStorage = (typeof __SETZKASTEN_STORAGE__ !== "undefined" ? __SETZKASTEN_STORAGE__ : null) ?? globalThis.__SETZKASTEN_STORAGE__;
23
+ const storageKind = fullConfig?.storage?.kind;
24
+ if (isMultiKind(storageKind)) {
25
+ const standalone = fullConfig?.storage;
26
+ const privateKey = process.env.GITHUB_APP_PRIVATE_KEY;
27
+ if (!privateKey) {
28
+ console.error(
29
+ "[setzkasten] Multi-mode resolver bootstrap failed: GITHUB_APP_PRIVATE_KEY is not set in env. Set it on the standalone-admin deployment so the registry can be loaded."
30
+ );
31
+ return;
32
+ }
33
+ const [owner, repo] = standalone.configRepo.split("/");
34
+ if (!owner || !repo) {
35
+ console.error(
36
+ `[setzkasten] Multi-mode resolver bootstrap failed: storage.configRepo "${standalone.configRepo}" is not in "owner/repo" form.`
37
+ );
38
+ return;
39
+ }
40
+ const client = new GitHubAppClient(
41
+ { appId: standalone.appId, installationId: standalone.installationId, privateKey },
42
+ { owner, repo, branch: standalone.configBranch ?? "main" }
43
+ );
44
+ const registry = new GitHubWebsitesRegistry({
45
+ reader: { read: (path) => client.getFileContent(path) },
46
+ path: "websites.json",
47
+ ttlMs: 6e4
48
+ });
49
+ state = { mode: "multi", registry };
50
+ return;
51
+ }
52
+ if (!buildStorage) return;
53
+ const appId = process.env.GITHUB_APP_ID ?? "";
54
+ const installationId = process.env.GITHUB_APP_INSTALLATION_ID ?? "";
55
+ const websiteUrlLiteral = typeof __SETZKASTEN_WEBSITE_URL__ !== "undefined" ? __SETZKASTEN_WEBSITE_URL__ : "";
56
+ const previewOrigin = websiteUrlLiteral || process.env.PUBLIC_SITE_URL || "http://localhost:4321";
57
+ state = {
58
+ mode: "single",
59
+ synthesized: {
60
+ id: "default",
61
+ name: buildStorage.repo,
62
+ repo: `${buildStorage.owner}/${buildStorage.repo}`,
63
+ branch: buildStorage.branch,
64
+ previewOrigin,
65
+ githubApp: { appId, installationId }
66
+ }
67
+ };
68
+ }
69
+ var HEADER = "x-sk-website";
70
+ async function resolveCurrentWebsite(request) {
71
+ if (state === null) bootstrapResolverFromGlobals();
72
+ if (state === null) {
73
+ return err(
74
+ validationError(
75
+ ["websiteResolver"],
76
+ "not-configured",
77
+ "Website resolver not configured \u2014 call configureWebsiteResolver() at integration startup."
78
+ )
79
+ );
80
+ }
81
+ if (state.mode === "single") {
82
+ return ok(state.synthesized);
83
+ }
84
+ const requested = request.headers.get(HEADER)?.trim() ?? "";
85
+ if (!requested) {
86
+ const list = await state.registry.list();
87
+ if (!list.ok) return list;
88
+ const sole = list.value.length === 1 ? list.value[0] : void 0;
89
+ if (sole) return ok(sole);
90
+ return err(
91
+ validationError(
92
+ [HEADER],
93
+ "required",
94
+ "Standalone mode requires the X-SK-Website request header (registry has multiple entries)."
95
+ )
96
+ );
97
+ }
98
+ const found = await state.registry.get(requested);
99
+ if (!found.ok) return found;
100
+ if (!found.value) return err(notFoundError(`website:${requested}`));
101
+ return ok(found.value);
102
+ }
103
+ async function listAllWebsites() {
104
+ if (state === null) bootstrapResolverFromGlobals();
105
+ if (state === null) {
106
+ return err(
107
+ validationError(["websiteResolver"], "not-configured", "Website resolver not configured.")
108
+ );
109
+ }
110
+ if (state.mode === "single") return ok([state.synthesized]);
111
+ return state.registry.list();
112
+ }
113
+
114
+ export {
115
+ __resetWebsiteResolverForTests,
116
+ configureWebsiteResolver,
117
+ bootstrapResolverFromGlobals,
118
+ resolveCurrentWebsite,
119
+ listAllWebsites
120
+ };
@@ -0,0 +1,19 @@
1
+ // src/api-routes/_webhook-status-store.ts
2
+ var store = /* @__PURE__ */ new Map();
3
+ function recordWebhookFire(id, status) {
4
+ store.set(id, { lastFiredAt: (/* @__PURE__ */ new Date()).toISOString(), lastStatus: status });
5
+ }
6
+ function getWebhookStatus() {
7
+ const out = {};
8
+ for (const [k, v] of store.entries()) out[k] = v;
9
+ return out;
10
+ }
11
+ function _resetWebhookStatusForTests() {
12
+ store.clear();
13
+ }
14
+
15
+ export {
16
+ recordWebhookFire,
17
+ getWebhookStatus,
18
+ _resetWebhookStatusForTests
19
+ };
@@ -0,0 +1,43 @@
1
+ import {
2
+ readEditorsFileStatus
3
+ } from "./chunk-INIWFKQ3.js";
4
+ import {
5
+ resolveStorageConfig
6
+ } from "./chunk-6UIKVKED.js";
7
+ import {
8
+ resolveConfigRepoToken
9
+ } from "./chunk-NKDATSPA.js";
10
+
11
+ // src/api-routes/_role-resolver.ts
12
+ import { resolveRoleForUser } from "@setzkasten-cms/core";
13
+ function makeRoleResolver(provider, allowedEmails) {
14
+ return async (email) => {
15
+ const editors = await loadEditorsForResolution();
16
+ const result = resolveRoleForUser(email, provider, editors, allowedEmails);
17
+ return result.ok ? result.resolution.role : null;
18
+ };
19
+ }
20
+ async function loadEditorsForResolution() {
21
+ const storage = resolveStorageConfig();
22
+ if (!storage) return void 0;
23
+ const tokenResult = await resolveConfigRepoToken();
24
+ if (!tokenResult.ok) {
25
+ throw new Error(`role-resolver: token unavailable (${tokenResult.error.message})`);
26
+ }
27
+ const serverConfig = globalThis.__SETZKASTEN_CONFIG__;
28
+ const contentPath = serverConfig?.storage?.contentPath ?? "content";
29
+ const status = await readEditorsFileStatus(
30
+ storage.owner,
31
+ storage.repo,
32
+ storage.branch,
33
+ contentPath,
34
+ tokenResult.value
35
+ );
36
+ if (status.kind === "absent") return void 0;
37
+ if (status.kind === "present") return status.editors;
38
+ throw new Error(`role-resolver: ${status.message}`);
39
+ }
40
+
41
+ export {
42
+ makeRoleResolver
43
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@setzkasten-cms/astro-admin",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Setzkasten Admin-UI, Init-Wizard und Adoptions-Pipeline für Astro",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -21,65 +21,260 @@
21
21
  "headless-cms"
22
22
  ],
23
23
  "exports": {
24
- "./auth-setzkasten-login": "./src/api-routes/auth-setzkasten-login.ts",
25
- "./global-config": "./src/api-routes/global-config.ts",
26
- "./auth-login": "./src/api-routes/auth-login.ts",
27
- "./auth-callback": "./src/api-routes/auth-callback.ts",
28
- "./auth-logout": "./src/api-routes/auth-logout.ts",
29
- "./auth-session": "./src/api-routes/auth-session.ts",
30
- "./github-proxy": "./src/api-routes/github-proxy.ts",
31
- "./asset-proxy": "./src/api-routes/asset-proxy.ts",
32
- "./config": "./src/api-routes/config.ts",
33
- "./pages": "./src/api-routes/pages.ts",
34
- "./init-scan": "./src/api-routes/init-scan.ts",
35
- "./init-apply": "./src/api-routes/init-apply.ts",
36
- "./init-scan-page": "./src/api-routes/init-scan-page.ts",
37
- "./init-add-section": "./src/api-routes/init-add-section.ts",
38
- "./init-migrate": "./src/api-routes/init-migrate.ts",
39
- "./deploy-hook": "./src/api-routes/deploy-hook.ts",
40
- "./icons-local": "./src/api-routes/icons-local.ts",
41
- "./catalog": "./src/api-routes/catalog-list.ts",
42
- "./catalog-add": "./src/api-routes/catalog-add.ts",
43
- "./catalog-export": "./src/api-routes/catalog-export.ts",
44
- "./history": "./src/api-routes/history.ts",
45
- "./history-version": "./src/api-routes/history-version.ts",
46
- "./history-rollback": "./src/api-routes/history-rollback.ts",
47
- "./webhooks": "./src/api-routes/webhooks.ts",
48
- "./webhooks-test": "./src/api-routes/webhooks-test.ts",
49
- "./webhooks-status": "./src/api-routes/webhooks-status.ts",
50
- "./section-add": "./src/api-routes/section-add.ts",
51
- "./section-prepare": "./src/api-routes/section-prepare.ts",
52
- "./section-prepare-copy": "./src/api-routes/section-prepare-copy.ts",
53
- "./section-commit-pending": "./src/api-routes/section-commit-pending.ts",
54
- "./section-delete": "./src/api-routes/section-delete.ts",
55
- "./section-duplicate": "./src/api-routes/section-duplicate.ts",
56
- "./updater-register": "./src/api-routes/updater-register.ts",
57
- "./updater-check": "./src/api-routes/updater-check.ts",
58
- "./updater-transfer": "./src/api-routes/updater-transfer.ts",
59
- "./updater-unbind": "./src/api-routes/updater-unbind.ts",
60
- "./editors": "./src/api-routes/editors.ts",
61
- "./setup-github-app": "./src/api-routes/setup-github-app.ts",
62
- "./setup-github-app-callback": "./src/api-routes/setup-github-app-callback.ts",
63
- "./setup-github-app-installed": "./src/api-routes/setup-github-app-installed.ts",
64
- "./setup-github-app-bounce": "./src/api-routes/setup-github-app-bounce.ts",
65
- "./setup-github-app-repos": "./src/api-routes/setup-github-app-repos.ts",
66
- "./setup-github-app-branches": "./src/api-routes/setup-github-app-branches.ts",
67
- "./websites-list": "./src/api-routes/websites-list.ts",
68
- "./websites-add": "./src/api-routes/websites-add.ts",
69
- "./websites-remove": "./src/api-routes/websites-remove.ts",
70
- "./migrate-to-multi": "./src/api-routes/migrate-to-multi.ts",
24
+ "./auth-setzkasten-login": {
25
+ "types": "./dist/api-routes/auth-setzkasten-login.d.ts",
26
+ "import": "./dist/api-routes/auth-setzkasten-login.js",
27
+ "default": "./dist/api-routes/auth-setzkasten-login.js"
28
+ },
29
+ "./global-config": {
30
+ "types": "./dist/api-routes/global-config.d.ts",
31
+ "import": "./dist/api-routes/global-config.js",
32
+ "default": "./dist/api-routes/global-config.js"
33
+ },
34
+ "./auth-login": {
35
+ "types": "./dist/api-routes/auth-login.d.ts",
36
+ "import": "./dist/api-routes/auth-login.js",
37
+ "default": "./dist/api-routes/auth-login.js"
38
+ },
39
+ "./auth-callback": {
40
+ "types": "./dist/api-routes/auth-callback.d.ts",
41
+ "import": "./dist/api-routes/auth-callback.js",
42
+ "default": "./dist/api-routes/auth-callback.js"
43
+ },
44
+ "./auth-logout": {
45
+ "types": "./dist/api-routes/auth-logout.d.ts",
46
+ "import": "./dist/api-routes/auth-logout.js",
47
+ "default": "./dist/api-routes/auth-logout.js"
48
+ },
49
+ "./auth-session": {
50
+ "types": "./dist/api-routes/auth-session.d.ts",
51
+ "import": "./dist/api-routes/auth-session.js",
52
+ "default": "./dist/api-routes/auth-session.js"
53
+ },
54
+ "./github-proxy": {
55
+ "types": "./dist/api-routes/github-proxy.d.ts",
56
+ "import": "./dist/api-routes/github-proxy.js",
57
+ "default": "./dist/api-routes/github-proxy.js"
58
+ },
59
+ "./asset-proxy": {
60
+ "types": "./dist/api-routes/asset-proxy.d.ts",
61
+ "import": "./dist/api-routes/asset-proxy.js",
62
+ "default": "./dist/api-routes/asset-proxy.js"
63
+ },
64
+ "./config": {
65
+ "types": "./dist/api-routes/config.d.ts",
66
+ "import": "./dist/api-routes/config.js",
67
+ "default": "./dist/api-routes/config.js"
68
+ },
69
+ "./pages": {
70
+ "types": "./dist/api-routes/pages.d.ts",
71
+ "import": "./dist/api-routes/pages.js",
72
+ "default": "./dist/api-routes/pages.js"
73
+ },
74
+ "./init-scan": {
75
+ "types": "./dist/api-routes/init-scan.d.ts",
76
+ "import": "./dist/api-routes/init-scan.js",
77
+ "default": "./dist/api-routes/init-scan.js"
78
+ },
79
+ "./init-apply": {
80
+ "types": "./dist/api-routes/init-apply.d.ts",
81
+ "import": "./dist/api-routes/init-apply.js",
82
+ "default": "./dist/api-routes/init-apply.js"
83
+ },
84
+ "./init-scan-page": {
85
+ "types": "./dist/api-routes/init-scan-page.d.ts",
86
+ "import": "./dist/api-routes/init-scan-page.js",
87
+ "default": "./dist/api-routes/init-scan-page.js"
88
+ },
89
+ "./init-add-section": {
90
+ "types": "./dist/api-routes/init-add-section.d.ts",
91
+ "import": "./dist/api-routes/init-add-section.js",
92
+ "default": "./dist/api-routes/init-add-section.js"
93
+ },
94
+ "./init-migrate": {
95
+ "types": "./dist/api-routes/init-migrate.d.ts",
96
+ "import": "./dist/api-routes/init-migrate.js",
97
+ "default": "./dist/api-routes/init-migrate.js"
98
+ },
99
+ "./deploy-hook": {
100
+ "types": "./dist/api-routes/deploy-hook.d.ts",
101
+ "import": "./dist/api-routes/deploy-hook.js",
102
+ "default": "./dist/api-routes/deploy-hook.js"
103
+ },
104
+ "./icons-local": {
105
+ "types": "./dist/api-routes/icons-local.d.ts",
106
+ "import": "./dist/api-routes/icons-local.js",
107
+ "default": "./dist/api-routes/icons-local.js"
108
+ },
109
+ "./catalog": {
110
+ "types": "./dist/api-routes/catalog-list.d.ts",
111
+ "import": "./dist/api-routes/catalog-list.js",
112
+ "default": "./dist/api-routes/catalog-list.js"
113
+ },
114
+ "./catalog-add": {
115
+ "types": "./dist/api-routes/catalog-add.d.ts",
116
+ "import": "./dist/api-routes/catalog-add.js",
117
+ "default": "./dist/api-routes/catalog-add.js"
118
+ },
119
+ "./catalog-export": {
120
+ "types": "./dist/api-routes/catalog-export.d.ts",
121
+ "import": "./dist/api-routes/catalog-export.js",
122
+ "default": "./dist/api-routes/catalog-export.js"
123
+ },
124
+ "./history": {
125
+ "types": "./dist/api-routes/history.d.ts",
126
+ "import": "./dist/api-routes/history.js",
127
+ "default": "./dist/api-routes/history.js"
128
+ },
129
+ "./history-version": {
130
+ "types": "./dist/api-routes/history-version.d.ts",
131
+ "import": "./dist/api-routes/history-version.js",
132
+ "default": "./dist/api-routes/history-version.js"
133
+ },
134
+ "./history-rollback": {
135
+ "types": "./dist/api-routes/history-rollback.d.ts",
136
+ "import": "./dist/api-routes/history-rollback.js",
137
+ "default": "./dist/api-routes/history-rollback.js"
138
+ },
139
+ "./webhooks": {
140
+ "types": "./dist/api-routes/webhooks.d.ts",
141
+ "import": "./dist/api-routes/webhooks.js",
142
+ "default": "./dist/api-routes/webhooks.js"
143
+ },
144
+ "./webhooks-test": {
145
+ "types": "./dist/api-routes/webhooks-test.d.ts",
146
+ "import": "./dist/api-routes/webhooks-test.js",
147
+ "default": "./dist/api-routes/webhooks-test.js"
148
+ },
149
+ "./webhooks-status": {
150
+ "types": "./dist/api-routes/webhooks-status.d.ts",
151
+ "import": "./dist/api-routes/webhooks-status.js",
152
+ "default": "./dist/api-routes/webhooks-status.js"
153
+ },
154
+ "./section-add": {
155
+ "types": "./dist/api-routes/section-add.d.ts",
156
+ "import": "./dist/api-routes/section-add.js",
157
+ "default": "./dist/api-routes/section-add.js"
158
+ },
159
+ "./section-prepare": {
160
+ "types": "./dist/api-routes/section-prepare.d.ts",
161
+ "import": "./dist/api-routes/section-prepare.js",
162
+ "default": "./dist/api-routes/section-prepare.js"
163
+ },
164
+ "./section-prepare-copy": {
165
+ "types": "./dist/api-routes/section-prepare-copy.d.ts",
166
+ "import": "./dist/api-routes/section-prepare-copy.js",
167
+ "default": "./dist/api-routes/section-prepare-copy.js"
168
+ },
169
+ "./section-commit-pending": {
170
+ "types": "./dist/api-routes/section-commit-pending.d.ts",
171
+ "import": "./dist/api-routes/section-commit-pending.js",
172
+ "default": "./dist/api-routes/section-commit-pending.js"
173
+ },
174
+ "./section-delete": {
175
+ "types": "./dist/api-routes/section-delete.d.ts",
176
+ "import": "./dist/api-routes/section-delete.js",
177
+ "default": "./dist/api-routes/section-delete.js"
178
+ },
179
+ "./section-duplicate": {
180
+ "types": "./dist/api-routes/section-duplicate.d.ts",
181
+ "import": "./dist/api-routes/section-duplicate.js",
182
+ "default": "./dist/api-routes/section-duplicate.js"
183
+ },
184
+ "./updater-register": {
185
+ "types": "./dist/api-routes/updater-register.d.ts",
186
+ "import": "./dist/api-routes/updater-register.js",
187
+ "default": "./dist/api-routes/updater-register.js"
188
+ },
189
+ "./updater-check": {
190
+ "types": "./dist/api-routes/updater-check.d.ts",
191
+ "import": "./dist/api-routes/updater-check.js",
192
+ "default": "./dist/api-routes/updater-check.js"
193
+ },
194
+ "./updater-transfer": {
195
+ "types": "./dist/api-routes/updater-transfer.d.ts",
196
+ "import": "./dist/api-routes/updater-transfer.js",
197
+ "default": "./dist/api-routes/updater-transfer.js"
198
+ },
199
+ "./updater-unbind": {
200
+ "types": "./dist/api-routes/updater-unbind.d.ts",
201
+ "import": "./dist/api-routes/updater-unbind.js",
202
+ "default": "./dist/api-routes/updater-unbind.js"
203
+ },
204
+ "./editors": {
205
+ "types": "./dist/api-routes/editors.d.ts",
206
+ "import": "./dist/api-routes/editors.js",
207
+ "default": "./dist/api-routes/editors.js"
208
+ },
209
+ "./setup-github-app": {
210
+ "types": "./dist/api-routes/setup-github-app.d.ts",
211
+ "import": "./dist/api-routes/setup-github-app.js",
212
+ "default": "./dist/api-routes/setup-github-app.js"
213
+ },
214
+ "./setup-github-app-callback": {
215
+ "types": "./dist/api-routes/setup-github-app-callback.d.ts",
216
+ "import": "./dist/api-routes/setup-github-app-callback.js",
217
+ "default": "./dist/api-routes/setup-github-app-callback.js"
218
+ },
219
+ "./setup-github-app-installed": {
220
+ "types": "./dist/api-routes/setup-github-app-installed.d.ts",
221
+ "import": "./dist/api-routes/setup-github-app-installed.js",
222
+ "default": "./dist/api-routes/setup-github-app-installed.js"
223
+ },
224
+ "./setup-github-app-bounce": {
225
+ "types": "./dist/api-routes/setup-github-app-bounce.d.ts",
226
+ "import": "./dist/api-routes/setup-github-app-bounce.js",
227
+ "default": "./dist/api-routes/setup-github-app-bounce.js"
228
+ },
229
+ "./setup-github-app-repos": {
230
+ "types": "./dist/api-routes/setup-github-app-repos.d.ts",
231
+ "import": "./dist/api-routes/setup-github-app-repos.js",
232
+ "default": "./dist/api-routes/setup-github-app-repos.js"
233
+ },
234
+ "./setup-github-app-branches": {
235
+ "types": "./dist/api-routes/setup-github-app-branches.d.ts",
236
+ "import": "./dist/api-routes/setup-github-app-branches.js",
237
+ "default": "./dist/api-routes/setup-github-app-branches.js"
238
+ },
239
+ "./websites-list": {
240
+ "types": "./dist/api-routes/websites-list.d.ts",
241
+ "import": "./dist/api-routes/websites-list.js",
242
+ "default": "./dist/api-routes/websites-list.js"
243
+ },
244
+ "./websites-add": {
245
+ "types": "./dist/api-routes/websites-add.d.ts",
246
+ "import": "./dist/api-routes/websites-add.js",
247
+ "default": "./dist/api-routes/websites-add.js"
248
+ },
249
+ "./websites-remove": {
250
+ "types": "./dist/api-routes/websites-remove.d.ts",
251
+ "import": "./dist/api-routes/websites-remove.js",
252
+ "default": "./dist/api-routes/websites-remove.js"
253
+ },
254
+ "./migrate-to-multi": {
255
+ "types": "./dist/api-routes/migrate-to-multi.d.ts",
256
+ "import": "./dist/api-routes/migrate-to-multi.js",
257
+ "default": "./dist/api-routes/migrate-to-multi.js"
258
+ },
71
259
  "./admin-page": "./src/admin-page.astro"
72
260
  },
261
+ "files": [
262
+ "dist",
263
+ "src"
264
+ ],
73
265
  "devDependencies": {
266
+ "@types/node": "^22.0.0",
267
+ "tsup": "^8.5.1",
268
+ "typescript": "^5.7.0",
74
269
  "vitest": "^3.2.0"
75
270
  },
76
271
  "dependencies": {
77
272
  "@astrojs/compiler": "^3.0.0",
78
- "@setzkasten-cms/auth": "1.4.0",
79
- "@setzkasten-cms/catalog": "1.4.0",
80
- "@setzkasten-cms/core": "1.4.0",
81
- "@setzkasten-cms/ui": "1.4.0",
82
- "@setzkasten-cms/github-adapter": "1.4.0"
273
+ "@setzkasten-cms/auth": "1.4.1",
274
+ "@setzkasten-cms/core": "1.4.1",
275
+ "@setzkasten-cms/github-adapter": "1.4.1",
276
+ "@setzkasten-cms/catalog": "1.4.1",
277
+ "@setzkasten-cms/ui": "1.4.1"
83
278
  },
84
279
  "peerDependencies": {
85
280
  "astro": "^5.0.0",
@@ -87,6 +282,7 @@
87
282
  "react-dom": "^19.0.0"
88
283
  },
89
284
  "scripts": {
285
+ "build": "tsup",
90
286
  "typecheck": "tsc --noEmit",
91
287
  "test": "vitest run",
92
288
  "test:watch": "vitest"
@@ -103,8 +103,14 @@ describe('Route-Registry-Konsistenz', () => {
103
103
 
104
104
  describe('Keine verwaisten Exports', () => {
105
105
  it('alle package.json-Exports (astro-admin routes) haben eine entsprechende Datei', () => {
106
+ // Exports were strings (./src/api-routes/foo.ts), now they're conditional
107
+ // objects ({ import: ./dist/api-routes/foo.js, types: ./dist/api-routes/foo.d.ts }).
108
+ // Match anything that resolves a route file under api-routes/.
106
109
  const routeExports = Object.entries(packageJson.exports)
107
- .filter(([, v]) => v.startsWith('./src/api-routes/'))
110
+ .filter(([, v]) => {
111
+ const target = typeof v === 'string' ? v : (v as { import?: string }).import
112
+ return typeof target === 'string' && target.includes('/api-routes/')
113
+ })
108
114
  .map(([k]) => k)
109
115
 
110
116
  const knownKeys = new Set(publicRoutes.map(exportKey))
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "rootDir": "src",
5
- "outDir": "dist",
6
- "jsx": "react-jsx"
7
- },
8
- "include": ["src"]
9
- }