@actuate-media/cms-core 0.12.0 → 0.14.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 (110) hide show
  1. package/LICENSE +21 -21
  2. package/dist/__tests__/api/api-key-auth.test.d.ts +2 -0
  3. package/dist/__tests__/api/api-key-auth.test.d.ts.map +1 -0
  4. package/dist/__tests__/api/api-key-auth.test.js +217 -0
  5. package/dist/__tests__/api/api-key-auth.test.js.map +1 -0
  6. package/dist/__tests__/api/health.test.d.ts +2 -0
  7. package/dist/__tests__/api/health.test.d.ts.map +1 -0
  8. package/dist/__tests__/api/health.test.js +140 -0
  9. package/dist/__tests__/api/health.test.js.map +1 -0
  10. package/dist/__tests__/auth/oauth.test.d.ts +2 -0
  11. package/dist/__tests__/auth/oauth.test.d.ts.map +1 -0
  12. package/dist/__tests__/auth/oauth.test.js +406 -0
  13. package/dist/__tests__/auth/oauth.test.js.map +1 -0
  14. package/dist/__tests__/auth/reset.test.d.ts +2 -0
  15. package/dist/__tests__/auth/reset.test.d.ts.map +1 -0
  16. package/dist/__tests__/auth/reset.test.js +303 -0
  17. package/dist/__tests__/auth/reset.test.js.map +1 -0
  18. package/dist/__tests__/diagnostics/env.test.d.ts +2 -0
  19. package/dist/__tests__/diagnostics/env.test.d.ts.map +1 -0
  20. package/dist/__tests__/diagnostics/env.test.js +119 -0
  21. package/dist/__tests__/diagnostics/env.test.js.map +1 -0
  22. package/dist/__tests__/diagnostics/logger.test.d.ts +2 -0
  23. package/dist/__tests__/diagnostics/logger.test.d.ts.map +1 -0
  24. package/dist/__tests__/diagnostics/logger.test.js +111 -0
  25. package/dist/__tests__/diagnostics/logger.test.js.map +1 -0
  26. package/dist/__tests__/security/api-key-enhanced.test.d.ts +2 -0
  27. package/dist/__tests__/security/api-key-enhanced.test.d.ts.map +1 -0
  28. package/dist/__tests__/security/api-key-enhanced.test.js +110 -0
  29. package/dist/__tests__/security/api-key-enhanced.test.js.map +1 -0
  30. package/dist/__tests__/security/rate-limit.test.js +42 -0
  31. package/dist/__tests__/security/rate-limit.test.js.map +1 -1
  32. package/dist/actions.d.ts.map +1 -1
  33. package/dist/actions.js +7 -6
  34. package/dist/actions.js.map +1 -1
  35. package/dist/api/handler-factory.d.ts.map +1 -1
  36. package/dist/api/handler-factory.js +31 -8
  37. package/dist/api/handler-factory.js.map +1 -1
  38. package/dist/api/handlers.d.ts.map +1 -1
  39. package/dist/api/handlers.js +508 -55
  40. package/dist/api/handlers.js.map +1 -1
  41. package/dist/auth/oauth.d.ts.map +1 -1
  42. package/dist/auth/oauth.js +5 -1
  43. package/dist/auth/oauth.js.map +1 -1
  44. package/dist/auth/reset.d.ts.map +1 -1
  45. package/dist/auth/reset.js +2 -1
  46. package/dist/auth/reset.js.map +1 -1
  47. package/dist/config/runtime.d.ts +99 -0
  48. package/dist/config/runtime.d.ts.map +1 -0
  49. package/dist/config/runtime.js +43 -0
  50. package/dist/config/runtime.js.map +1 -0
  51. package/dist/config/types.d.ts +21 -0
  52. package/dist/config/types.d.ts.map +1 -1
  53. package/dist/diagnostics/env.d.ts +44 -0
  54. package/dist/diagnostics/env.d.ts.map +1 -0
  55. package/dist/diagnostics/env.js +293 -0
  56. package/dist/diagnostics/env.js.map +1 -0
  57. package/dist/diagnostics/logger.d.ts +38 -0
  58. package/dist/diagnostics/logger.d.ts.map +1 -0
  59. package/dist/diagnostics/logger.js +89 -0
  60. package/dist/diagnostics/logger.js.map +1 -0
  61. package/dist/page-builder/blocks.d.ts.map +1 -1
  62. package/dist/page-builder/blocks.js +6 -1
  63. package/dist/page-builder/blocks.js.map +1 -1
  64. package/dist/security/api-key-enhanced.d.ts +48 -5
  65. package/dist/security/api-key-enhanced.d.ts.map +1 -1
  66. package/dist/security/api-key-enhanced.js +60 -9
  67. package/dist/security/api-key-enhanced.js.map +1 -1
  68. package/dist/security/audit.d.ts.map +1 -1
  69. package/dist/security/audit.js +3 -1
  70. package/dist/security/audit.js.map +1 -1
  71. package/dist/security/rate-limit.d.ts +8 -0
  72. package/dist/security/rate-limit.d.ts.map +1 -1
  73. package/dist/security/rate-limit.js +81 -3
  74. package/dist/security/rate-limit.js.map +1 -1
  75. package/generated/browser.ts +109 -0
  76. package/generated/client.ts +133 -0
  77. package/generated/commonInputTypes.ts +709 -0
  78. package/generated/enums.ts +125 -0
  79. package/generated/internal/class.ts +376 -0
  80. package/generated/internal/prismaNamespace.ts +2617 -0
  81. package/generated/internal/prismaNamespaceBrowser.ts +611 -0
  82. package/generated/models/ApiKey.ts +1550 -0
  83. package/generated/models/AuditLog.ts +1206 -0
  84. package/generated/models/BackupRecord.ts +1250 -0
  85. package/generated/models/ContentLock.ts +1472 -0
  86. package/generated/models/ContentTemplate.ts +1416 -0
  87. package/generated/models/Document.ts +3005 -0
  88. package/generated/models/Folder.ts +1904 -0
  89. package/generated/models/FormSubmission.ts +1200 -0
  90. package/generated/models/InAppNotification.ts +1457 -0
  91. package/generated/models/Media.ts +2340 -0
  92. package/generated/models/MediaUsage.ts +1472 -0
  93. package/generated/models/OAuthAccount.ts +1463 -0
  94. package/generated/models/Redirect.ts +1284 -0
  95. package/generated/models/Session.ts +1492 -0
  96. package/generated/models/Site.ts +1206 -0
  97. package/generated/models/User.ts +3513 -0
  98. package/generated/models/Version.ts +1511 -0
  99. package/generated/models/WorkflowState.ts +1514 -0
  100. package/generated/models.ts +29 -0
  101. package/package.json +1 -1
  102. package/prisma/cms-schema.prisma +306 -306
  103. package/prisma/migrations/0001_init/migration.sql +384 -384
  104. package/prisma/migrations/0002_folders/migration.sql +39 -39
  105. package/prisma/migrations/0003_search_and_webhooks/migration.sql +50 -50
  106. package/prisma/migrations/0004_script_tags/migration.sql +21 -21
  107. package/prisma/migrations/0005_password_reset_tokens/migration.sql +20 -20
  108. package/prisma/migrations/0006_page_builder/migration.sql +38 -38
  109. package/prisma/migrations/migration_lock.toml +3 -3
  110. package/prisma/schema.prisma +549 -549
@@ -0,0 +1,293 @@
1
+ /**
2
+ * Environment shape validation for the Actuate CMS runtime.
3
+ *
4
+ * The `/health` and admin diagnostics endpoints surface this so operators
5
+ * notice mis-configured secrets *before* a runtime call hits them. We never
6
+ * return the values themselves — only the validation verdict and a redacted
7
+ * preview where it helps debugging (e.g. "first 4 hex chars match").
8
+ *
9
+ * Why a dedicated module:
10
+ * - Centralises all "is this env var well-formed" rules so consumers don't
11
+ * re-invent length / hex / placeholder checks per call site.
12
+ * - Fails closed on shape errors (e.g. a 31-char CMS_SECRET, an
13
+ * `aes256-local-dev-key-...` placeholder still in production) which the
14
+ * prior `presence-only` check missed entirely (audit issue M6).
15
+ */
16
+ const HEX_RE = /^[0-9a-fA-F]+$/;
17
+ const PLACEHOLDER_PATTERNS = [
18
+ /change-?(me|in-?prod)/i,
19
+ /your-?(secret|key|token)/i,
20
+ /placeholder/i,
21
+ /example/i,
22
+ /todo/i,
23
+ /aes256-local-dev-key/i,
24
+ ];
25
+ function isPlaceholder(value) {
26
+ return PLACEHOLDER_PATTERNS.some((p) => p.test(value));
27
+ }
28
+ const PROCESS_ENV = {
29
+ get: (name) => process.env[name],
30
+ };
31
+ /**
32
+ * Validate the shape of every well-known runtime env var. Pass a custom
33
+ * `source` to test without mutating `process.env`.
34
+ */
35
+ export function validateEnvShape(source = PROCESS_ENV) {
36
+ const checks = [];
37
+ // ─── CMS_SECRET ──────────────────────────────────────────────
38
+ // The `source.get('CMS_SECRET')` lookup is intentionally pluggable: the
39
+ // runtime caller (`/api/cms/health`) wraps this so the lookup also covers
40
+ // the legacy `CMS_SESSION_SECRET` env var and `actuate.config.ts → secret`
41
+ // — those are equally valid sources at runtime via `getSessionSecret()`.
42
+ // Without that wrapping, a config-file-only deploy would be falsely
43
+ // reported as `missing` (Bugbot review on PR #43, Medium).
44
+ const secret = source.get('CMS_SECRET');
45
+ if (!secret) {
46
+ checks.push({
47
+ name: 'CMS_SECRET',
48
+ status: 'missing',
49
+ message: 'Required. Generate with `node -e "console.log(crypto.randomBytes(32).toString(\'hex\'))"` and set `CMS_SECRET`, or pass `secret` in `actuate.config.ts`.',
50
+ required: true,
51
+ });
52
+ }
53
+ else if (secret.length < 32) {
54
+ checks.push({
55
+ name: 'CMS_SECRET',
56
+ status: 'error',
57
+ message: `Must be ≥ 32 characters (got ${secret.length}). JWT signing requires this minimum.`,
58
+ required: true,
59
+ });
60
+ }
61
+ else if (isPlaceholder(secret)) {
62
+ checks.push({
63
+ name: 'CMS_SECRET',
64
+ status: 'error',
65
+ message: 'Looks like a placeholder string. Replace with a real 32+ char random secret.',
66
+ required: true,
67
+ });
68
+ }
69
+ else {
70
+ // Intentionally do not include `secret.length` here — `/health` is
71
+ // unauthenticated and exact secret lengths narrow brute-force search
72
+ // space for an attacker. The error/warn branches above can stay verbose
73
+ // because they only trigger on operator-visible misconfigurations.
74
+ checks.push({
75
+ name: 'CMS_SECRET',
76
+ status: 'ok',
77
+ message: 'Configured.',
78
+ required: true,
79
+ });
80
+ }
81
+ // ─── CMS_ENCRYPTION_KEY ──────────────────────────────────────
82
+ const encKey = source.get('CMS_ENCRYPTION_KEY');
83
+ if (!encKey) {
84
+ checks.push({
85
+ name: 'CMS_ENCRYPTION_KEY',
86
+ status: 'warn',
87
+ message: 'Optional but recommended. AES-256-GCM field encryption will throw at runtime when not set. Provide 64 hex chars.',
88
+ required: false,
89
+ });
90
+ }
91
+ else if (encKey.length !== 64) {
92
+ checks.push({
93
+ name: 'CMS_ENCRYPTION_KEY',
94
+ status: 'error',
95
+ message: `Must be exactly 64 hex characters (32 bytes). Got ${encKey.length}.`,
96
+ required: false,
97
+ });
98
+ }
99
+ else if (!HEX_RE.test(encKey)) {
100
+ // No `isPlaceholder()` branch follows — by this point the value has
101
+ // already passed length-64 and `HEX_RE`, meaning it's pure hex chars.
102
+ // Every pattern in `PLACEHOLDER_PATTERNS` requires non-hex letters
103
+ // (`g`, `h`, `l`, `m`, `o`, `p`, `r`, `s`, `t`, `u`, `v`, `w`, `x`, `y`, `z`,
104
+ // hyphens) so a passing hex string can never match a placeholder. The
105
+ // message below already says "Looks like a placeholder" for the common
106
+ // case where the configured value is a documented dev placeholder
107
+ // (e.g. `aes256-local-dev-key-change-in-prod`, which fails this branch).
108
+ checks.push({
109
+ name: 'CMS_ENCRYPTION_KEY',
110
+ status: 'error',
111
+ message: 'Must contain only hex characters (0-9, a-f). Looks like a placeholder.',
112
+ required: false,
113
+ });
114
+ }
115
+ else {
116
+ checks.push({
117
+ name: 'CMS_ENCRYPTION_KEY',
118
+ status: 'ok',
119
+ message: 'Configured.',
120
+ required: false,
121
+ });
122
+ }
123
+ // ─── DATABASE_URL ────────────────────────────────────────────
124
+ const dbUrl = source.get('DATABASE_URL');
125
+ if (!dbUrl) {
126
+ checks.push({
127
+ name: 'DATABASE_URL',
128
+ status: 'missing',
129
+ message: 'Required. Connection string for the Prisma client.',
130
+ required: true,
131
+ });
132
+ }
133
+ else if (!/^(postgres(ql)?|mysql|file|sqlite):/i.test(dbUrl)) {
134
+ checks.push({
135
+ name: 'DATABASE_URL',
136
+ status: 'error',
137
+ message: 'Must start with a known DB scheme (postgres://, mysql://, file:, sqlite://).',
138
+ required: true,
139
+ });
140
+ }
141
+ else {
142
+ checks.push({
143
+ name: 'DATABASE_URL',
144
+ status: 'ok',
145
+ message: 'Configured.',
146
+ required: true,
147
+ });
148
+ }
149
+ // ─── BLOB_READ_WRITE_TOKEN ──────────────────────────────────
150
+ const blob = source.get('BLOB_READ_WRITE_TOKEN');
151
+ if (!blob) {
152
+ checks.push({
153
+ name: 'BLOB_READ_WRITE_TOKEN',
154
+ status: 'warn',
155
+ message: 'Required for media uploads on Vercel Blob storage. Without it, /media/upload will fail.',
156
+ required: false,
157
+ });
158
+ }
159
+ else if (!blob.startsWith('vercel_blob_')) {
160
+ checks.push({
161
+ name: 'BLOB_READ_WRITE_TOKEN',
162
+ status: 'warn',
163
+ message: 'Does not start with `vercel_blob_` — verify this is a real Vercel Blob token.',
164
+ required: false,
165
+ });
166
+ }
167
+ else {
168
+ checks.push({
169
+ name: 'BLOB_READ_WRITE_TOKEN',
170
+ status: 'ok',
171
+ message: 'Configured.',
172
+ required: false,
173
+ });
174
+ }
175
+ // ─── UPSTASH_REDIS_REST_URL / TOKEN ─────────────────────────
176
+ const upstashUrl = source.get('UPSTASH_REDIS_REST_URL');
177
+ const upstashToken = source.get('UPSTASH_REDIS_REST_TOKEN');
178
+ if (!upstashUrl && !upstashToken) {
179
+ checks.push({
180
+ name: 'UPSTASH_REDIS_REST_URL',
181
+ status: 'warn',
182
+ message: 'Optional. Without Upstash, rate limiting falls back to in-memory (single-process only — unsafe across serverless invocations).',
183
+ required: false,
184
+ });
185
+ }
186
+ else if (upstashUrl && !upstashToken) {
187
+ checks.push({
188
+ name: 'UPSTASH_REDIS_REST_TOKEN',
189
+ status: 'error',
190
+ message: 'URL is set but token is missing — rate limiter will refuse to start.',
191
+ required: false,
192
+ });
193
+ }
194
+ else if (!upstashUrl && upstashToken) {
195
+ checks.push({
196
+ name: 'UPSTASH_REDIS_REST_URL',
197
+ status: 'error',
198
+ message: 'Token is set but URL is missing — rate limiter will refuse to start.',
199
+ required: false,
200
+ });
201
+ }
202
+ else {
203
+ try {
204
+ // eslint-disable-next-line no-new
205
+ new URL(upstashUrl);
206
+ checks.push({
207
+ name: 'UPSTASH_REDIS_REST_URL',
208
+ status: 'ok',
209
+ message: 'Configured (Upstash backend active).',
210
+ required: false,
211
+ });
212
+ }
213
+ catch {
214
+ checks.push({
215
+ name: 'UPSTASH_REDIS_REST_URL',
216
+ status: 'error',
217
+ message: 'Not a valid URL.',
218
+ required: false,
219
+ });
220
+ }
221
+ }
222
+ // ─── RESEND_API_KEY ─────────────────────────────────────────
223
+ const resend = source.get('RESEND_API_KEY');
224
+ if (!resend) {
225
+ checks.push({
226
+ name: 'RESEND_API_KEY',
227
+ status: 'warn',
228
+ message: 'Optional. Without it, transactional email (lead notifications, password reset) is silently skipped.',
229
+ required: false,
230
+ });
231
+ }
232
+ else if (!resend.startsWith('re_')) {
233
+ checks.push({
234
+ name: 'RESEND_API_KEY',
235
+ status: 'warn',
236
+ message: 'Does not start with `re_` — verify this is a real Resend API key.',
237
+ required: false,
238
+ });
239
+ }
240
+ else {
241
+ checks.push({
242
+ name: 'RESEND_API_KEY',
243
+ status: 'ok',
244
+ message: 'Configured.',
245
+ required: false,
246
+ });
247
+ }
248
+ // ─── CRON_SECRET ────────────────────────────────────────────
249
+ const cronSecret = source.get('CRON_SECRET');
250
+ if (!cronSecret) {
251
+ checks.push({
252
+ name: 'CRON_SECRET',
253
+ status: 'warn',
254
+ message: 'Required to authorise /api/cms/cron/* endpoints. Without it, cron routes return 401 to all callers.',
255
+ required: false,
256
+ });
257
+ }
258
+ else if (cronSecret.length < 16) {
259
+ checks.push({
260
+ name: 'CRON_SECRET',
261
+ status: 'error',
262
+ message: `Should be ≥ 16 chars (got ${cronSecret.length}). Cron endpoints are publicly addressable.`,
263
+ required: false,
264
+ });
265
+ }
266
+ else if (isPlaceholder(cronSecret)) {
267
+ checks.push({
268
+ name: 'CRON_SECRET',
269
+ status: 'error',
270
+ message: 'Looks like a placeholder string.',
271
+ required: false,
272
+ });
273
+ }
274
+ else {
275
+ // Same reasoning as CMS_SECRET above — keep the length out of the
276
+ // unauthenticated /health surface.
277
+ checks.push({
278
+ name: 'CRON_SECRET',
279
+ status: 'ok',
280
+ message: 'Configured.',
281
+ required: false,
282
+ });
283
+ }
284
+ const errorCount = checks.filter((c) => c.status === 'error' || (c.status === 'missing' && c.required)).length;
285
+ const warnCount = checks.filter((c) => c.status === 'warn').length;
286
+ return {
287
+ ok: errorCount === 0,
288
+ errorCount,
289
+ warnCount,
290
+ checks,
291
+ };
292
+ }
293
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/diagnostics/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Structured logger for Actuate CMS (audit issue L7).
3
+ *
4
+ * Why a dedicated module instead of `console.*`:
5
+ *
6
+ * 1. **Filterable in production.** Operators can set
7
+ * `ACTUATE_LOG_LEVEL=warn` to silence routine info logs without losing
8
+ * error visibility — `console.*` calls can't be silenced without
9
+ * monkey-patching.
10
+ *
11
+ * 2. **Structured output for log aggregators.** Setting
12
+ * `ACTUATE_LOG_FORMAT=json` switches to one-line JSON entries with
13
+ * consistent fields (`ts`, `level`, `scope`, `msg`, `details`),
14
+ * ready for ingestion by Datadog, Sentry, or CloudWatch.
15
+ *
16
+ * 3. **Scoped namespaces.** `createLogger('rate-limit')` prefixes every
17
+ * message with `[actuate][rate-limit]` so a grep finds related
18
+ * entries instantly.
19
+ *
20
+ * **Migration path:** existing `console.*` calls keep working. New code and
21
+ * security-sensitive paths use the logger. Replace `console.*` callsites
22
+ * incrementally as files are touched.
23
+ */
24
+ export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';
25
+ export interface ScopedLogger {
26
+ error(msg: string, details?: Record<string, unknown>): void;
27
+ warn(msg: string, details?: Record<string, unknown>): void;
28
+ info(msg: string, details?: Record<string, unknown>): void;
29
+ debug(msg: string, details?: Record<string, unknown>): void;
30
+ }
31
+ /**
32
+ * Create a logger scoped to a subsystem name (e.g. `rate-limit`, `oauth`).
33
+ * Output format:
34
+ * text: `[actuate][rate-limit] Upstash failed { reason: '...' }`
35
+ * json: `{"ts":"...","level":"error","scope":"rate-limit","msg":"...","details":{...}}`
36
+ */
37
+ export declare function createLogger(scope: string): ScopedLogger;
38
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/diagnostics/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAkErE,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC1D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC1D,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAC5D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOxD"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Structured logger for Actuate CMS (audit issue L7).
3
+ *
4
+ * Why a dedicated module instead of `console.*`:
5
+ *
6
+ * 1. **Filterable in production.** Operators can set
7
+ * `ACTUATE_LOG_LEVEL=warn` to silence routine info logs without losing
8
+ * error visibility — `console.*` calls can't be silenced without
9
+ * monkey-patching.
10
+ *
11
+ * 2. **Structured output for log aggregators.** Setting
12
+ * `ACTUATE_LOG_FORMAT=json` switches to one-line JSON entries with
13
+ * consistent fields (`ts`, `level`, `scope`, `msg`, `details`),
14
+ * ready for ingestion by Datadog, Sentry, or CloudWatch.
15
+ *
16
+ * 3. **Scoped namespaces.** `createLogger('rate-limit')` prefixes every
17
+ * message with `[actuate][rate-limit]` so a grep finds related
18
+ * entries instantly.
19
+ *
20
+ * **Migration path:** existing `console.*` calls keep working. New code and
21
+ * security-sensitive paths use the logger. Replace `console.*` callsites
22
+ * incrementally as files are touched.
23
+ */
24
+ const LEVEL_RANK = {
25
+ silent: 0,
26
+ error: 10,
27
+ warn: 20,
28
+ info: 30,
29
+ debug: 40,
30
+ };
31
+ function resolveLevel() {
32
+ const raw = (process.env.ACTUATE_LOG_LEVEL ?? '').toLowerCase();
33
+ if (raw === 'silent' || raw === 'error' || raw === 'warn' || raw === 'info' || raw === 'debug') {
34
+ return raw;
35
+ }
36
+ // Default: warn in production, info elsewhere. Tests run with NODE_ENV=test
37
+ // and benefit from `info` so failing assertions show context.
38
+ return process.env.NODE_ENV === 'production' ? 'warn' : 'info';
39
+ }
40
+ function isJsonFormat() {
41
+ return (process.env.ACTUATE_LOG_FORMAT ?? '').toLowerCase() === 'json';
42
+ }
43
+ function shouldLog(level) {
44
+ const current = resolveLevel();
45
+ return LEVEL_RANK[level] <= LEVEL_RANK[current];
46
+ }
47
+ function emit(level, scope, msg, details) {
48
+ if (!shouldLog(level))
49
+ return;
50
+ const sink = level === 'error'
51
+ ? console.error
52
+ : level === 'warn'
53
+ ? console.warn
54
+ : level === 'info'
55
+ ? console.info
56
+ : console.debug;
57
+ if (isJsonFormat()) {
58
+ sink(JSON.stringify({
59
+ ts: new Date().toISOString(),
60
+ level,
61
+ scope,
62
+ msg,
63
+ ...(details ? { details } : {}),
64
+ }));
65
+ return;
66
+ }
67
+ const prefix = `[actuate][${scope}]`;
68
+ if (details) {
69
+ sink(prefix, msg, details);
70
+ }
71
+ else {
72
+ sink(prefix, msg);
73
+ }
74
+ }
75
+ /**
76
+ * Create a logger scoped to a subsystem name (e.g. `rate-limit`, `oauth`).
77
+ * Output format:
78
+ * text: `[actuate][rate-limit] Upstash failed { reason: '...' }`
79
+ * json: `{"ts":"...","level":"error","scope":"rate-limit","msg":"...","details":{...}}`
80
+ */
81
+ export function createLogger(scope) {
82
+ return {
83
+ error: (msg, details) => emit('error', scope, msg, details),
84
+ warn: (msg, details) => emit('warn', scope, msg, details),
85
+ info: (msg, details) => emit('info', scope, msg, details),
86
+ debug: (msg, details) => emit('debug', scope, msg, details),
87
+ };
88
+ }
89
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/diagnostics/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,MAAM,UAAU,GAA6B;IAC3C,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;CACV,CAAA;AAED,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IAC/D,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAC/F,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,4EAA4E;IAC5E,8DAA8D;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;AAChE,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAA;AACxE,CAAC;AAED,SAAS,SAAS,CAAC,KAAe;IAChC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAA;IAC9B,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,IAAI,CACX,KAAkC,EAClC,KAAa,EACb,GAAW,EACX,OAAiC;IAEjC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAM;IAC7B,MAAM,IAAI,GACR,KAAK,KAAK,OAAO;QACf,CAAC,CAAC,OAAO,CAAC,KAAK;QACf,CAAC,CAAC,KAAK,KAAK,MAAM;YAChB,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,KAAK,KAAK,MAAM;gBAChB,CAAC,CAAC,OAAO,CAAC,IAAI;gBACd,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;IAEvB,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,IAAI,CACF,IAAI,CAAC,SAAS,CAAC;YACb,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC5B,KAAK;YACL,KAAK;YACL,GAAG;YACH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC,CACH,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,KAAK,GAAG,CAAA;IACpC,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;QAC3D,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;QACzD,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;QACzD,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC;KAC5D,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/page-builder/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA0QxE,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAYD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkC;gBAEpC,OAAO,GAAE,mBAAwB;IAmB7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIlD,MAAM,IAAI,mBAAmB,EAAE;IAI/B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAI1C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;CAKlF"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/page-builder/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AA0QxE,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAA;IACpC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAiBD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAkC;gBAEpC,OAAO,GAAE,mBAAwB;IAmB7C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIlD,MAAM,IAAI,mBAAmB,EAAE;IAI/B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAI1C,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;CAKlF"}
@@ -264,7 +264,12 @@ const CORE_BLOCKS = [
264
264
  function readCustomBlocksFromGlobalConfig() {
265
265
  if (typeof globalThis === 'undefined')
266
266
  return [];
267
- const config = globalThis.__actuateConfig;
267
+ // We read directly from `globalThis` (rather than via `getActuateConfig()`)
268
+ // so this stays synchronous at module-load time and avoids importing the
269
+ // wider runtime module from inside page-builder. The shape we need is
270
+ // narrow enough that a local typed cast is safer than `as any`.
271
+ const config = globalThis
272
+ .__actuateConfig;
268
273
  const blocks = config?.pageBuilder?.blocks;
269
274
  if (Array.isArray(blocks)) {
270
275
  return blocks.filter((b) => !!b && typeof b.type === 'string');
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/page-builder/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/page-builder/blocks.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,45 @@
1
+ /**
2
+ * API key generation and scope validation.
3
+ *
4
+ * Keys are formatted `act_sk_<64 hex chars>`. We store only a SHA-256 hash of
5
+ * the key in the database; the raw key is shown to the user exactly once at
6
+ * creation time. The first 15 chars (`act_sk_` + 8 hex) are stored as
7
+ * `keyPrefix` so the admin UI can display a human-recognizable token without
8
+ * leaking the secret half.
9
+ */
1
10
  export interface ApiKeyScope {
11
+ /**
12
+ * Collection slugs the key is allowed to act on. Use `'*'` for all
13
+ * collections. Omit/empty to deny collection access entirely.
14
+ */
2
15
  collections?: string[];
16
+ /**
17
+ * Actions allowed on the listed collections. Omit/empty to deny.
18
+ */
3
19
  actions?: ('read' | 'create' | 'update' | 'delete')[];
20
+ /**
21
+ * Global slugs the key is allowed to read or update. `'*'` for all.
22
+ */
4
23
  globals?: string[];
24
+ /** When true, the key can upload/manage media. */
5
25
  media?: boolean;
26
+ /**
27
+ * When true, the key can call AI page-builder endpoints (`/page-builder/*`).
28
+ * AI generation is expensive — issue this scope sparingly.
29
+ */
30
+ pageBuilder?: boolean;
31
+ /**
32
+ * When true, the key has full admin access (can manage users, settings,
33
+ * other API keys). Equivalent to a logged-in ADMIN session.
34
+ */
35
+ admin?: boolean;
6
36
  }
7
37
  export interface EnhancedApiKeyConfig {
38
+ /** Token prefix (always `act_sk` for live keys). */
8
39
  prefix: string;
9
40
  scopes: ApiKeyScope;
10
41
  ipRestrictions?: string[];
11
42
  expiresAt?: Date;
12
- rateLimit?: {
13
- maxRequests: number;
14
- windowMs: number;
15
- };
16
43
  }
17
44
  /** Generate a new API key with scoped permissions. */
18
45
  export declare function generateApiKey(config: EnhancedApiKeyConfig): Promise<{
@@ -20,6 +47,22 @@ export declare function generateApiKey(config: EnhancedApiKeyConfig): Promise<{
20
47
  keyHash: string;
21
48
  keyPrefix: string;
22
49
  }>;
23
- /** Validate an API key's scopes against a requested action. */
50
+ /** SHA-256 hash a raw API key for lookup. */
51
+ export declare function hashApiKey(rawKey: string): Promise<string>;
52
+ /** True when the request's bearer token looks like an API key (vs a session JWT). */
53
+ export declare function looksLikeApiKey(token: string): boolean;
54
+ /**
55
+ * Validate an API key's scopes against a collection action. Returns true when
56
+ * the key is permitted to perform `action` on `collection`. Admin keys always
57
+ * pass.
58
+ */
24
59
  export declare function validateApiKeyScope(scopes: ApiKeyScope, collection: string, action: 'read' | 'create' | 'update' | 'delete'): boolean;
60
+ /** Validate scope for a global action. */
61
+ export declare function validateApiKeyGlobalScope(scopes: ApiKeyScope, slug: string): boolean;
62
+ /** Validate scope for media uploads/management. */
63
+ export declare function validateApiKeyMediaScope(scopes: ApiKeyScope): boolean;
64
+ /** Validate scope for page-builder/AI endpoints. */
65
+ export declare function validateApiKeyPageBuilderScope(scopes: ApiKeyScope): boolean;
66
+ /** Validate IP restrictions against the request's client IP. */
67
+ export declare function validateApiKeyIp(restrictions: string[] | null | undefined, ip: string): boolean;
25
68
  //# sourceMappingURL=api-key-enhanced.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-key-enhanced.d.ts","sourceRoot":"","sources":["../../src/security/api-key-enhanced.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;IACrD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CACtD;AAED,sDAAsD;AACtD,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAc9D;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAC9C,OAAO,CAQT"}
1
+ {"version":3,"file":"api-key-enhanced.d.ts","sourceRoot":"","sources":["../../src/security/api-key-enhanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;IACrD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB;AAED,sDAAsD;AACtD,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAY9D;AAED,6CAA6C;AAC7C,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhE;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAC9C,OAAO,CAMT;AAED,0CAA0C;AAC1C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKpF;AAED,mDAAmD;AACnD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,oDAAoD;AACpD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE3E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAI/F"}