@zintrust/core 0.4.33 → 0.4.36

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 (39) hide show
  1. package/package.json +4 -4
  2. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  3. package/src/cache/drivers/RedisDriver.js +1 -1
  4. package/src/cli/OptionalCliExtensions.d.ts.map +1 -1
  5. package/src/cli/OptionalCliExtensions.js +1 -0
  6. package/src/cli/commands/WorkerCommands.d.ts +2 -1
  7. package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
  8. package/src/cli/commands/WorkerCommands.js +111 -62
  9. package/src/cli/services/WorkerStartupDiagnostics.d.ts +41 -0
  10. package/src/cli/services/WorkerStartupDiagnostics.d.ts.map +1 -0
  11. package/src/cli/services/WorkerStartupDiagnostics.js +348 -0
  12. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  13. package/src/cli/utils/DistPackager.js +22 -18
  14. package/src/config/queue.d.ts.map +1 -1
  15. package/src/config/queue.js +5 -3
  16. package/src/config/workers.d.ts +2 -1
  17. package/src/config/workers.d.ts.map +1 -1
  18. package/src/config/workers.js +6 -1
  19. package/src/index.d.ts +11 -11
  20. package/src/index.d.ts.map +1 -1
  21. package/src/index.js +13 -13
  22. package/src/proxy/CloudflareProxyShared.d.ts +50 -0
  23. package/src/proxy/CloudflareProxyShared.d.ts.map +1 -0
  24. package/src/proxy/CloudflareProxyShared.js +117 -0
  25. package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
  26. package/src/proxy/d1/ZintrustD1Proxy.js +49 -158
  27. package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
  28. package/src/proxy/kv/ZintrustKvProxy.js +41 -142
  29. package/src/security/CsrfTokenManager.d.ts.map +1 -1
  30. package/src/security/CsrfTokenManager.js +1 -1
  31. package/src/security/JwtSessions.d.ts.map +1 -1
  32. package/src/security/JwtSessions.js +1 -1
  33. package/src/security/TokenRevocation.d.ts.map +1 -1
  34. package/src/security/TokenRevocation.js +1 -1
  35. package/src/tools/queue/LockProvider.d.ts.map +1 -1
  36. package/src/tools/queue/LockProvider.js +1 -1
  37. package/src/tools/redis/RedisTransport.d.ts +34 -0
  38. package/src/tools/redis/RedisTransport.d.ts.map +1 -0
  39. package/src/tools/redis/RedisTransport.js +251 -0
@@ -0,0 +1,348 @@
1
+ import { Env } from '../../config/env.js';
2
+ import { Logger } from '../../config/logger.js';
3
+ import { queueConfig } from '../../config/queue.js';
4
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
5
+ import { isNonEmptyString, isObject } from '../../helper/index.js';
6
+ const SECRET_KEY_PATTERN = /(SECRET|PASSWORD|TOKEN|KEY)$/i;
7
+ const uniqueStrings = (values) => {
8
+ const seen = new Set();
9
+ const out = [];
10
+ for (const value of values) {
11
+ const normalized = value.trim();
12
+ if (!isNonEmptyString(normalized))
13
+ continue;
14
+ if (seen.has(normalized))
15
+ continue;
16
+ seen.add(normalized);
17
+ out.push(normalized);
18
+ }
19
+ return out;
20
+ };
21
+ const getSnapshotValue = (snapshot, key) => {
22
+ const value = snapshot[key];
23
+ return typeof value === 'string' ? value.trim() : '';
24
+ };
25
+ const getExplicitEnv = (snapshot, key) => getSnapshotValue(snapshot, key);
26
+ const getResolvedEnv = (key) => Env.get(key, '').trim();
27
+ const resolveRedisProxyKeyId = (snapshot) => {
28
+ const explicit = getExplicitEnv(snapshot, 'REDIS_PROXY_KEY_ID');
29
+ if (isNonEmptyString(explicit))
30
+ return explicit;
31
+ const appName = getExplicitEnv(snapshot, 'APP_NAME') || Env.get('APP_NAME', 'zintrust').trim();
32
+ return (appName || 'zintrust').trim().toLowerCase().replaceAll(/\s+/g, '_');
33
+ };
34
+ const resolveRedisProxySecret = (snapshot) => {
35
+ const explicit = getExplicitEnv(snapshot, 'REDIS_PROXY_SECRET');
36
+ if (isNonEmptyString(explicit))
37
+ return explicit;
38
+ return getExplicitEnv(snapshot, 'APP_KEY') || Env.get('APP_KEY', '').trim();
39
+ };
40
+ const resolveRedisProxyUrl = (snapshot) => {
41
+ const explicit = getExplicitEnv(snapshot, 'REDIS_PROXY_URL');
42
+ if (isNonEmptyString(explicit))
43
+ return explicit;
44
+ if (!Env.getBool('USE_REDIS_PROXY', false))
45
+ return '';
46
+ const host = getExplicitEnv(snapshot, 'REDIS_PROXY_HOST') || Env.get('REDIS_PROXY_HOST', '127.0.0.1').trim();
47
+ const port = getExplicitEnv(snapshot, 'REDIS_PROXY_PORT') || Env.get('REDIS_PROXY_PORT', '8791').trim();
48
+ return host === '' || port === '' ? '' : `http://${host}:${port}`;
49
+ };
50
+ const DIAGNOSTIC_VALUE_RESOLVERS = Object.freeze({
51
+ RUNTIME_MODE: (_snapshot, flags) => flags.runtimeMode,
52
+ WORKER_ENABLED: (_snapshot, flags) => String(flags.workerEnabled),
53
+ WORKER_AUTO_START: (_snapshot, flags) => String(flags.workerAutoStart),
54
+ DOCKER_WORKER: (_snapshot, flags) => String(flags.dockerWorker),
55
+ QUEUE_ENABLED: (_snapshot, flags) => String(flags.queueEnabled),
56
+ QUEUE_DRIVER: (_snapshot, flags) => flags.queueDriver,
57
+ WORKER_PERSISTENCE_DRIVER: (_snapshot, flags) => flags.persistenceDriver,
58
+ REDIS_PROXY_URL: (snapshot) => resolveRedisProxyUrl(snapshot),
59
+ REDIS_PROXY_HOST: (snapshot) => getExplicitEnv(snapshot, 'REDIS_PROXY_HOST') ||
60
+ Env.get('REDIS_PROXY_HOST', '127.0.0.1').trim(),
61
+ REDIS_PROXY_SECRET: (snapshot) => resolveRedisProxySecret(snapshot),
62
+ REDIS_PROXY_KEY_ID: (snapshot) => resolveRedisProxyKeyId(snapshot),
63
+ REDIS_QUEUE_DB: (snapshot) => getExplicitEnv(snapshot, 'REDIS_QUEUE_DB') || Env.get('REDIS_QUEUE_DB', '1').trim(),
64
+ WORKER_PERSISTENCE_DB_CONNECTION: (snapshot) => getExplicitEnv(snapshot, 'WORKER_PERSISTENCE_DB_CONNECTION') ||
65
+ Env.get('WORKER_PERSISTENCE_DB_CONNECTION', 'default').trim(),
66
+ WORKER_PERSISTENCE_TABLE: (snapshot) => getExplicitEnv(snapshot, 'WORKER_PERSISTENCE_TABLE') ||
67
+ Env.get('WORKER_PERSISTENCE_TABLE', 'zintrust_workers').trim(),
68
+ DB_CONNECTION: (snapshot) => getExplicitEnv(snapshot, 'DB_CONNECTION') || Env.get('DB_CONNECTION', '').trim(),
69
+ });
70
+ const getDiagnosticResolvedValue = (snapshot, key, flags) => DIAGNOSTIC_VALUE_RESOLVERS[key]?.(snapshot, flags) ?? getResolvedEnv(key);
71
+ const maskResolvedValue = (key, value) => {
72
+ if (!isNonEmptyString(value))
73
+ return '[missing]';
74
+ if (SECRET_KEY_PATTERN.test(key))
75
+ return '[set]';
76
+ return value;
77
+ };
78
+ const getQueueDriver = () => {
79
+ try {
80
+ return { value: queueConfig.default };
81
+ }
82
+ catch (error) {
83
+ const message = error instanceof Error ? error.message : String(error);
84
+ return {
85
+ value: Env.get('QUEUE_DRIVER', 'sync').trim() || 'sync',
86
+ issue: {
87
+ severity: 'error',
88
+ message: `Queue config failed to resolve: ${message}`,
89
+ envKeys: extractEnvKeysFromMessage(message),
90
+ },
91
+ };
92
+ }
93
+ };
94
+ const getPersistenceDriver = () => {
95
+ const raw = Env.get('WORKER_PERSISTENCE_DRIVER', '').trim().toLowerCase();
96
+ return raw === '' ? 'memory (implicit)' : raw;
97
+ };
98
+ const extractEnvKeysFromMessage = (message) => {
99
+ const matches = message.match(/\b[A-Z][A-Z0-9_]{2,}\b/g) ?? [];
100
+ return uniqueStrings(matches);
101
+ };
102
+ const inferEnvKeysFromContext = (message, flags) => {
103
+ const lower = message.toLowerCase();
104
+ const inferred = [];
105
+ if (lower.includes('redis') && lower.includes('host is required')) {
106
+ inferred.push('REDIS_HOST');
107
+ }
108
+ if (lower.includes('worker persistence') && lower.includes('database client')) {
109
+ inferred.push('WORKER_PERSISTENCE_DB_CONNECTION', 'DB_CONNECTION');
110
+ }
111
+ if (lower.includes('worker persistence') && lower.includes('redis config')) {
112
+ inferred.push('REDIS_HOST', 'REDIS_PORT');
113
+ }
114
+ if (flags.queueDriver === 'sqs') {
115
+ inferred.push('AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION', 'AWS_SQS_QUEUE_URL');
116
+ }
117
+ return uniqueStrings(inferred);
118
+ };
119
+ const getFirstFault = (error, flags) => {
120
+ if (!(error instanceof Error))
121
+ return null;
122
+ const errorCode = isObject(error) && typeof error['code'] === 'string' ? error['code'] : undefined;
123
+ const envKeys = uniqueStrings([
124
+ ...extractEnvKeysFromMessage(error.message),
125
+ ...inferEnvKeysFromContext(error.message, flags),
126
+ ]);
127
+ return {
128
+ message: envKeys.length > 0
129
+ ? `${error.message} | likely env keys: ${envKeys.join(', ')}`
130
+ : error.message,
131
+ code: errorCode,
132
+ };
133
+ };
134
+ const getQueueDriverEnvKeys = (snapshot, queueDriver) => {
135
+ if (queueDriver === 'sqs') {
136
+ return ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION', 'AWS_SQS_QUEUE_URL'];
137
+ }
138
+ if (queueDriver === 'database') {
139
+ return ['QUEUE_DB_CONNECTION', 'DB_CONNECTION'];
140
+ }
141
+ if (queueDriver === 'rabbitmq') {
142
+ return ['RABBITMQ_HOST', 'RABBITMQ_PORT', 'RABBITMQ_USER', 'RABBITMQ_PASSWORD'];
143
+ }
144
+ const usesRedisProxy = Env.getBool('USE_REDIS_PROXY', false) ||
145
+ isNonEmptyString(getExplicitEnv(snapshot, 'REDIS_PROXY_URL'));
146
+ if (queueDriver === 'redis' && usesRedisProxy) {
147
+ return [
148
+ 'REDIS_PROXY_URL',
149
+ 'REDIS_PROXY_HOST',
150
+ 'REDIS_PROXY_SECRET',
151
+ 'REDIS_PROXY_KEY_ID',
152
+ 'APP_KEY',
153
+ 'REDIS_QUEUE_DB',
154
+ ];
155
+ }
156
+ if (queueDriver === 'redis') {
157
+ return ['REDIS_HOST', 'REDIS_PORT', 'REDIS_PASSWORD', 'REDIS_QUEUE_DB'];
158
+ }
159
+ return [];
160
+ };
161
+ const getPersistenceEnvKeys = (persistenceDriver) => {
162
+ if (persistenceDriver === 'database' || persistenceDriver === 'db') {
163
+ return ['WORKER_PERSISTENCE_DB_CONNECTION', 'WORKER_PERSISTENCE_TABLE', 'DB_CONNECTION'];
164
+ }
165
+ if (persistenceDriver === 'redis') {
166
+ return ['WORKER_PERSISTENCE_REDIS_DB', 'REDIS_HOST', 'REDIS_PORT', 'REDIS_PASSWORD'];
167
+ }
168
+ return [];
169
+ };
170
+ const buildFlags = () => {
171
+ const queueDriver = getQueueDriver();
172
+ return {
173
+ runtimeMode: Env.get('RUNTIME_MODE', 'node-server').trim() || 'node-server',
174
+ workerEnabled: Env.getBool('WORKER_ENABLED', false),
175
+ workerAutoStart: Env.getBool('WORKER_AUTO_START', false),
176
+ dockerWorker: Env.getBool('DOCKER_WORKER', false),
177
+ queueEnabled: Env.getBool('QUEUE_ENABLED', false),
178
+ queueDriver: queueDriver.value,
179
+ persistenceDriver: getPersistenceDriver(),
180
+ };
181
+ };
182
+ const buildEnvStatus = (snapshot, flags, firstFault) => {
183
+ const relevantKeys = uniqueStrings([
184
+ 'RUNTIME_MODE',
185
+ 'WORKER_ENABLED',
186
+ 'WORKER_AUTO_START',
187
+ 'DOCKER_WORKER',
188
+ 'QUEUE_ENABLED',
189
+ 'QUEUE_DRIVER',
190
+ 'WORKER_PERSISTENCE_DRIVER',
191
+ ...getQueueDriverEnvKeys(snapshot, flags.queueDriver),
192
+ ...getPersistenceEnvKeys(flags.persistenceDriver),
193
+ ...(firstFault ? extractEnvKeysFromMessage(firstFault.message) : []),
194
+ ]);
195
+ return relevantKeys.map((key) => {
196
+ const explicitValue = getExplicitEnv(snapshot, key);
197
+ const effectiveValue = getDiagnosticResolvedValue(snapshot, key, flags);
198
+ return {
199
+ key,
200
+ present: isNonEmptyString(explicitValue) || isNonEmptyString(effectiveValue),
201
+ explicitValue,
202
+ resolvedValue: maskResolvedValue(key, effectiveValue),
203
+ };
204
+ });
205
+ };
206
+ const buildIssues = (envStatus, flags, firstFault, queueIssue) => {
207
+ const issues = [];
208
+ if (queueIssue !== undefined) {
209
+ issues.push(queueIssue);
210
+ }
211
+ if (!flags.workerEnabled) {
212
+ issues.push({
213
+ severity: flags.dockerWorker ? 'error' : 'warn',
214
+ message: 'WORKER_ENABLED is false, so the worker runtime will not process jobs.',
215
+ envKeys: ['WORKER_ENABLED'],
216
+ });
217
+ }
218
+ if (!flags.queueEnabled) {
219
+ issues.push({
220
+ severity: 'warn',
221
+ message: 'QUEUE_ENABLED is false, so queue-backed workers cannot process jobs.',
222
+ envKeys: ['QUEUE_ENABLED'],
223
+ });
224
+ }
225
+ if (flags.workerEnabled && !flags.workerAutoStart) {
226
+ issues.push({
227
+ severity: 'warn',
228
+ message: 'WORKER_AUTO_START is false, so worker:start-all will skip auto-start.',
229
+ envKeys: ['WORKER_AUTO_START'],
230
+ });
231
+ }
232
+ const missingEnvKeys = envStatus.filter((entry) => !entry.present).map((entry) => entry.key);
233
+ if (flags.queueDriver === 'sqs') {
234
+ const sqsMissing = missingEnvKeys.filter((key) => ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION', 'AWS_SQS_QUEUE_URL'].includes(key));
235
+ if (sqsMissing.length > 0) {
236
+ issues.push({
237
+ severity: 'error',
238
+ message: 'SQS queue driver is selected but required AWS queue env keys are missing.',
239
+ envKeys: sqsMissing,
240
+ });
241
+ }
242
+ }
243
+ if (firstFault !== null) {
244
+ const firstFaultKeys = uniqueStrings([
245
+ ...extractEnvKeysFromMessage(firstFault.message),
246
+ ...inferEnvKeysFromContext(firstFault.message, flags),
247
+ ]);
248
+ if (firstFaultKeys.length > 0) {
249
+ issues.push({
250
+ severity: 'error',
251
+ message: 'The first failure points to missing or invalid runtime env configuration.',
252
+ envKeys: firstFaultKeys,
253
+ });
254
+ }
255
+ }
256
+ return issues;
257
+ };
258
+ const buildLogPointers = (flags) => flags.runtimeMode === 'containers'
259
+ ? [
260
+ 'worker:start-all stderr/stdout',
261
+ 'zin docker --wrangler-config wrangler.containers-proxy.jsonc --env <env> output',
262
+ 'worker container logs for the node dist/bin/zin.js worker:start-all process',
263
+ ]
264
+ : ['worker:start-all stderr/stdout'];
265
+ const buildNextSteps = (flags) => flags.runtimeMode === 'containers'
266
+ ? [
267
+ 'zin worker:doctor --json',
268
+ 'node dist/bin/zin.js worker:start-all',
269
+ 'node scripts/docker-image-smoke.mjs worker --skip-build --image <image>',
270
+ ]
271
+ : ['zin worker:doctor --json'];
272
+ const collect = (error) => {
273
+ const snapshot = Env.snapshot();
274
+ const queueDriver = getQueueDriver();
275
+ const flags = buildFlags();
276
+ const firstFault = getFirstFault(error, flags);
277
+ const envStatus = buildEnvStatus(snapshot, flags, firstFault);
278
+ const issues = buildIssues(envStatus, flags, firstFault, queueDriver.issue);
279
+ const missingFromIssues = issues.flatMap((issue) => issue.envKeys);
280
+ const missingEnvKeys = uniqueStrings(missingFromIssues);
281
+ return {
282
+ flags,
283
+ issues,
284
+ missingEnvKeys,
285
+ envStatus,
286
+ firstFault,
287
+ logPointers: buildLogPointers(flags),
288
+ nextSteps: buildNextSteps(flags),
289
+ };
290
+ };
291
+ const appendSection = (lines, title, items) => {
292
+ if (items.length === 0)
293
+ return;
294
+ lines.push('', title, ...items);
295
+ };
296
+ const renderIssues = (report) => report.issues.map((issue) => {
297
+ const envSuffix = issue.envKeys.length > 0 ? ` [${issue.envKeys.join(', ')}]` : '';
298
+ return `- ${issue.severity.toUpperCase()}: ${issue.message}${envSuffix}`;
299
+ });
300
+ const renderEnvStatus = (report) => report.envStatus.map((entry) => {
301
+ const state = entry.present ? entry.resolvedValue : '[missing]';
302
+ return `- ${entry.key}: ${state}`;
303
+ });
304
+ const renderBullets = (items) => items.map((item) => `- ${item}`);
305
+ const renderLines = (report) => {
306
+ const lines = [
307
+ '=== Worker Startup Diagnostics ===',
308
+ '',
309
+ `Runtime Mode: ${report.flags.runtimeMode}`,
310
+ `Worker Enabled: ${report.flags.workerEnabled}`,
311
+ `Worker Auto Start: ${report.flags.workerAutoStart}`,
312
+ `Docker Worker: ${report.flags.dockerWorker}`,
313
+ `Queue Enabled: ${report.flags.queueEnabled}`,
314
+ `Queue Driver: ${report.flags.queueDriver}`,
315
+ `Persistence Driver: ${report.flags.persistenceDriver}`,
316
+ ];
317
+ appendSection(lines, 'First Fault:', report.firstFault === null ? [] : [`- ${report.firstFault.message}`]);
318
+ appendSection(lines, 'Issues:', renderIssues(report));
319
+ appendSection(lines, 'Relevant Env:', renderEnvStatus(report));
320
+ appendSection(lines, 'Log Pointers:', renderBullets(report.logPointers));
321
+ appendSection(lines, 'Next Steps:', renderBullets(report.nextSteps));
322
+ return lines;
323
+ };
324
+ const log = (error, context = 'worker startup') => {
325
+ const report = collect(error);
326
+ Logger.error(`${context} first-fault summary`, {
327
+ flags: report.flags,
328
+ missingEnvKeys: report.missingEnvKeys,
329
+ firstFault: report.firstFault,
330
+ issues: report.issues,
331
+ logPointers: report.logPointers,
332
+ nextSteps: report.nextSteps,
333
+ });
334
+ if (report.missingEnvKeys.length > 0) {
335
+ Logger.error('Likely missing env keys for worker startup', report.missingEnvKeys);
336
+ }
337
+ return report;
338
+ };
339
+ const hasBlockingIssues = (report) => report.issues.some((issue) => issue.severity === 'error');
340
+ export const WorkerStartupDiagnostics = Object.freeze({
341
+ collect,
342
+ renderLines,
343
+ log,
344
+ hasBlockingIssues,
345
+ createCliError(message) {
346
+ return ErrorFactory.createCliError(message);
347
+ },
348
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"DistPackager.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/DistPackager.ts"],"names":[],"mappings":"AAmKA,eAAO,MAAM,YAAY;IACvB;;;OAGG;sBACe,MAAM,aAAY,MAAM,GAAmB,IAAI;EAgBjE,CAAC"}
1
+ {"version":3,"file":"DistPackager.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/DistPackager.ts"],"names":[],"mappings":"AAgKA,eAAO,MAAM,YAAY;IACvB;;;OAGG;sBACe,MAAM,aAAY,MAAM,GAAmB,IAAI;EAgBjE,CAAC"}
@@ -85,14 +85,15 @@ const buildDistPackageJson = (rootPkg) => {
85
85
  };
86
86
  };
87
87
  const writeDistEntrypoints = (distPath) => {
88
- const distIndexJsPath = path.join(distPath, 'index.js');
89
- const distIndexDtsPath = path.join(distPath, 'index.d.ts');
90
- const distStartJsPath = path.join(distPath, 'start.js');
91
- const distStartDtsPath = path.join(distPath, 'start.d.ts');
92
- fs.writeFileSync(distIndexJsPath, "export * from './src/index.js';\n");
93
- fs.writeFileSync(distIndexDtsPath, "export * from './src/index';\n");
94
- fs.writeFileSync(distStartJsPath, "export * from './src/start.js'; export { default } from './src/start.js';\n");
95
- fs.writeFileSync(distStartDtsPath, "export * from './src/start'; export { default } from './src/start';\n");
88
+ const entrypoints = [
89
+ ['index.js', "export * from './src/index.js';\n"],
90
+ ['index.d.ts', "export * from './src/index';\n"],
91
+ ['start.js', "export * from './src/start.js'; export { default } from './src/start.js';\n"],
92
+ ['start.d.ts', "export * from './src/start'; export { default } from './src/start';\n"],
93
+ ];
94
+ for (const [relativePath, content] of entrypoints) {
95
+ fs.writeFileSync(path.join(distPath, relativePath), content);
96
+ }
96
97
  };
97
98
  const writeDistPackageJson = (distPath, pkg) => {
98
99
  const distPackageJsonPath = path.join(distPath, 'package.json');
@@ -100,18 +101,21 @@ const writeDistPackageJson = (distPath, pkg) => {
100
101
  };
101
102
  const warnIfMissingDistArtifacts = (distPath) => {
102
103
  const expected = [
103
- path.join(distPath, 'src', 'index.js'),
104
- path.join(distPath, 'bin', 'zintrust.js'),
105
- path.join(distPath, 'bin', 'zin.js'),
104
+ ['src/index.js', 'Dist artifact missing (did you run build?)'],
105
+ ['bin/zintrust.js', 'Dist artifact missing (did you run build?)'],
106
+ ['bin/zin.js', 'Dist artifact missing (did you run build?)'],
107
+ ['public', 'Docs public root missing'],
106
108
  ];
107
- for (const candidate of expected) {
108
- if (!fs.existsSync(candidate)) {
109
- Logger.warn(`Dist artifact missing (did you run build?): ${candidate}`);
109
+ for (const [relativePath, message] of expected) {
110
+ const candidate = path.join(distPath, ...relativePath.split('/'));
111
+ if (fs.existsSync(candidate)) {
112
+ continue;
110
113
  }
111
- }
112
- const docsRoot = path.join(distPath, 'public');
113
- if (!fs.existsSync(docsRoot)) {
114
- Logger.warn(`Docs public root missing at ${docsRoot} (expected dist/public)`);
114
+ if (relativePath === 'public') {
115
+ Logger.warn(`${message} at ${candidate} (expected dist/public)`);
116
+ continue;
117
+ }
118
+ Logger.warn(`${message}: ${candidate}`);
115
119
  }
116
120
  };
117
121
  export const DistPackager = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AA+EH;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,kBA4DnC,CAAC;AA8CH,QAAA,MAAM,iBAAiB,QAAO;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CAuEH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAqB/D,eAAO,MAAM,WAAW,EAAE,WAYxB,CAAC"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AA+EH;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,kBA4DnC,CAAC;AAgDH,QAAA,MAAM,iBAAiB,QAAO;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CAuEH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAqB/D,eAAO,MAAM,WAAW,EAAE,WAYxB,CAAC"}
@@ -6,7 +6,7 @@
6
6
  import { Cloudflare } from './cloudflare.js';
7
7
  import { Env } from './env.js';
8
8
  import { Logger } from './logger.js';
9
- import { middlewareConfig } from './middleware.js';
9
+ import { isKnownMiddlewareName, middlewareConfig } from './middleware.js';
10
10
  import { ErrorFactory } from '../exceptions/ZintrustError.js';
11
11
  import { ZintrustLang } from '../lang/lang.js';
12
12
  import { StartupConfigFile, StartupConfigFileRegistry } from '../runtime/StartupConfigFileRegistry.js';
@@ -125,13 +125,15 @@ const createBaseMonitor = () => {
125
125
  .filter((m) => m.length > 0);
126
126
  if (enabled && middleware.length > 0) {
127
127
  const knownKeys = new Set(Object.keys(middlewareConfig.route ?? {}));
128
- const unknownKeys = middleware.filter((name) => !knownKeys.has(name));
128
+ const unknownKeys = middleware.filter((name) => {
129
+ return !knownKeys.has(name) && !isKnownMiddlewareName(name);
130
+ });
129
131
  if (unknownKeys.length > 0) {
130
132
  Logger.error('Unknown QUEUE_MONITOR_MIDDLEWARE keys configured', {
131
133
  unknownKeys,
132
134
  basePath,
133
135
  });
134
- throw ErrorFactory.createConfigError(`Unknown QUEUE_MONITOR_MIDDLEWARE key(s): ${unknownKeys.join(', ')}. These must match registered route middleware keys in your app.`);
136
+ throw ErrorFactory.createConfigError(`Unknown QUEUE_MONITOR_MIDDLEWARE key(s): ${unknownKeys.join(', ')}. These must match registered route middleware keys in your app or a supported dynamic middleware key such as rateLimit:<max>:<windowInMinutes>.`);
135
137
  }
136
138
  }
137
139
  return {
@@ -3,9 +3,10 @@
3
3
  * Background worker management settings
4
4
  * Sealed namespace for immutability
5
5
  */
6
+ import { type RedisTransportOptions } from '../tools/redis/RedisTransport';
6
7
  import type { RedisConfig, WorkersGlobalConfig } from './type';
7
8
  import type IORedis from 'ioredis';
8
- export declare const createRedisConnection: (config: RedisConfig, maxRetries?: number) => IORedis;
9
+ export declare const createRedisConnection: (config: RedisConfig, maxRetries?: number, options?: RedisTransportOptions) => IORedis;
9
10
  declare const createWorkersConfig: () => WorkersGlobalConfig;
10
11
  export type WorkersConfig = ReturnType<typeof createWorkersConfig>;
11
12
  export declare const workersConfig: WorkersConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../../src/config/workers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,WAAW,EAIX,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAoMnC,eAAO,MAAM,qBAAqB,GAAI,QAAQ,WAAW,EAAE,mBAAc,KAAG,OAwB3E,CAAC;AAgFF,QAAA,MAAM,mBAAmB,QAAO,mBA2D/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAqBnE,eAAO,MAAM,aAAa,EAAE,aAY1B,CAAC"}
1
+ {"version":3,"file":"workers.d.ts","sourceRoot":"","sources":["../../../src/config/workers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,8BAA8B,CAAC;AAItC,OAAO,KAAK,EACV,WAAW,EAIX,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAoMnC,eAAO,MAAM,qBAAqB,GAChC,QAAQ,WAAW,EACnB,mBAAc,EACd,UAAU,qBAAqB,KAC9B,OA6BF,CAAC;AAgFF,QAAA,MAAM,mBAAmB,QAAO,mBA2D/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAqBnE,eAAO,MAAM,aAAa,EAAE,aAY1B,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Background worker management settings
4
4
  * Sealed namespace for immutability
5
5
  */
6
+ import { createRedisProxyConnection, ensureRedisTransportMode, } from '../tools/redis/RedisTransport.js';
6
7
  import { Cloudflare } from './cloudflare.js';
7
8
  import { Env } from './env.js';
8
9
  import { Logger } from './logger.js';
@@ -149,7 +150,11 @@ const resolveEffectiveRedisConfig = (config, isWorkersRuntime, proxySettings) =>
149
150
  }
150
151
  return config;
151
152
  };
152
- export const createRedisConnection = (config, maxRetries = 3) => {
153
+ export const createRedisConnection = (config, maxRetries = 3, options) => {
154
+ const mode = ensureRedisTransportMode(config, options);
155
+ if (mode === 'proxy') {
156
+ return createRedisProxyConnection(config, options);
157
+ }
153
158
  const isWorkersRuntime = Cloudflare.getWorkersEnv() !== null;
154
159
  const proxySettings = getProxySettings();
155
160
  const effectiveConfig = resolveEffectiveRedisConfig(config, isWorkersRuntime, proxySettings);
package/src/index.d.ts CHANGED
@@ -13,7 +13,7 @@ export { AwsSigV4 } from './common/index';
13
13
  export { SignedRequest } from './security/SignedRequest';
14
14
  export { Server } from './boot/Server';
15
15
  export { ServiceContainer } from './container/ServiceContainer';
16
- export { Paginator, createPaginator, getNextPageUrl, getPrevPageUrl } from './database/Paginator';
16
+ export { createPaginator, getNextPageUrl, getPrevPageUrl, Paginator } from './database/Paginator';
17
17
  export type { CreatePaginatorInput, PaginationLinks, PaginationQuery, Paginator as PaginatorType, } from './database/Paginator';
18
18
  export { Controller } from './http/Controller';
19
19
  export { FileUpload } from './http/FileUpload';
@@ -30,7 +30,7 @@ export type { IRequest, ValidatedRequest } from './http/Request';
30
30
  export { RequestContext } from './http/RequestContext';
31
31
  export { Response } from './http/Response';
32
32
  export type { IResponse } from './http/Response';
33
- export { ValidationHelper, getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, requireValidatedBody, } from './http/ValidationHelper';
33
+ export { getValidatedBody, getValidatedHeaders, getValidatedParams, getValidatedQuery, hasValidatedBody, requireValidatedBody, ValidationHelper, } from './http/ValidationHelper';
34
34
  export { CsrfMiddleware } from './middleware/CsrfMiddleware';
35
35
  export { ErrorHandlerMiddleware } from './middleware/ErrorHandlerMiddleware';
36
36
  export { LoggingMiddleware } from './middleware/LoggingMiddleware';
@@ -49,7 +49,7 @@ export type { IDatabase } from './orm/Database';
49
49
  export { Model } from './orm/Model';
50
50
  export type { IModel, ModelConfig, ModelStatic } from './orm/Model';
51
51
  export { QueryBuilder } from './orm/QueryBuilder';
52
- export type { IQueryBuilder, InsertResult, PaginationOptions } from './orm/QueryBuilder';
52
+ export type { InsertResult, IQueryBuilder, PaginationOptions } from './orm/QueryBuilder';
53
53
  export type { IRelationship } from './orm/Relationships';
54
54
  export { DateTime } from './time/DateTime';
55
55
  export type { IDateTime } from './time/DateTime';
@@ -58,12 +58,12 @@ export { OpenApiGenerator } from './openapi/OpenApiGenerator';
58
58
  export type { OpenApiGeneratorOptions } from './openapi/OpenApiGenerator';
59
59
  export { Router } from './routes/Router';
60
60
  export type { IRouter } from './routes/Router';
61
- export { RouteRegistry, normalizeRouteMeta } from './routes/RouteRegistry';
61
+ export { normalizeRouteMeta, RouteRegistry } from './routes/RouteRegistry';
62
62
  export type { RouteMeta, RouteMetaInput, RouteRegistration } from './routes/RouteRegistry';
63
63
  export { DatabaseAdapterRegistry } from './orm/DatabaseAdapterRegistry';
64
- export { Utilities, generateSecureJobId, generateUuid, getString, type UtilitiesType, } from './common/utility';
64
+ export { generateSecureJobId, generateUuid, getString, Utilities, type UtilitiesType, } from './common/utility';
65
65
  export { delay, ensureDirSafe } from './common/index';
66
- export { Collection, collect } from './collections/index';
66
+ export { collect, Collection } from './collections/index';
67
67
  export type { ICollection, PrimitiveKey } from './collections/index';
68
68
  export { HttpClient } from './tools/http/Http';
69
69
  export type { IHttpRequest, IHttpResponse } from './tools/http/Http';
@@ -92,12 +92,12 @@ export type { IJwtManager, JwtAlgorithm, JwtManagerType, JwtOptions, JwtPayload,
92
92
  export { JwtSessions } from './security/JwtSessions';
93
93
  export { PasswordResetTokenBroker } from './security/PasswordResetTokenBroker';
94
94
  export type { IPasswordResetTokenBroker, IPasswordResetTokenStore, PasswordResetTokenBrokerOptions, PasswordResetTokenBrokerType, PasswordResetTokenRecord, } from './security/PasswordResetTokenBroker';
95
- export { Sanitizer, createSanitizer, type SanitizerType } from './security/Sanitizer';
95
+ export { createSanitizer, Sanitizer, type SanitizerType } from './security/Sanitizer';
96
96
  export { TokenRevocation } from './security/TokenRevocation';
97
97
  export { Xss } from './security/Xss';
98
98
  export { XssProtection } from './security/XssProtection';
99
99
  export { ErrorFactory } from './exceptions/ZintrustError';
100
- export { RUNTIME_PLATFORM, RuntimeServices, detectCloudflareWorkers, detectRuntimePlatform, type RuntimeCrypto, type RuntimeEnvReader, type RuntimeFs, type RuntimePlatform, type RuntimeServices as RuntimeServicesType, type RuntimeTimers, } from './runtime/RuntimeServices';
100
+ export { detectCloudflareWorkers, detectRuntimePlatform, RUNTIME_PLATFORM, RuntimeServices, type RuntimeCrypto, type RuntimeEnvReader, type RuntimeFs, type RuntimePlatform, type RuntimeServices as RuntimeServicesType, type RuntimeTimers, } from './runtime/RuntimeServices';
101
101
  export { EventDispatcher } from './events/EventDispatcher';
102
102
  export type { EventListener, EventMap, IEventDispatcher } from './events/EventDispatcher';
103
103
  export { SessionManager } from './session/SessionManager';
@@ -133,7 +133,7 @@ export type { AggregatedHealthStatus, HealthCheckResult, IServiceHealthMonitor,
133
133
  export { getServiceId, isCanonicalServiceId, normalizeServiceManifest, } from './microservices/ServiceManifest';
134
134
  export type { ProjectRuntimeModule, ServiceManifestEntry } from './microservices/ServiceManifest';
135
135
  export { ProjectRuntime } from './runtime/ProjectRuntime';
136
- export { MiddlewareKeys, clearMiddlewareConfigCache, middlewareConfig } from './config/middleware';
136
+ export { clearMiddlewareConfigCache, middlewareConfig, MiddlewareKeys } from './config/middleware';
137
137
  export type { MiddlewareKey } from './config/middleware';
138
138
  export type { MiddlewareConfigType } from './config/type';
139
139
  export { createBaseDrivers, queueConfig } from './config/queue';
@@ -152,7 +152,7 @@ export type { StartupConfig } from './config/startup';
152
152
  export { Constants, DEFAULTS, ENV_KEYS, HTTP_HEADERS, MIME_TYPES } from './config/constants';
153
153
  export { FeatureFlags } from './config/features';
154
154
  export { Cloudflare } from './config/cloudflare';
155
- export { SECRETS, SecretsManager, getDatabaseCredentials, getJwtSecrets, } from './config/SecretsManager';
155
+ export { getDatabaseCredentials, getJwtSecrets, SECRETS, SecretsManager, } from './config/SecretsManager';
156
156
  export type { DatabaseCredentials, JwtSecrets } from './config/SecretsManager';
157
157
  export type { MailDriverConfig, MailDriverName, WorkersEnv } from './config/type';
158
158
  export { StartupConfigValidator } from './config/StartupConfigValidator';
@@ -227,7 +227,7 @@ export * from './helper/index';
227
227
  export { ZintrustLang } from './lang/lang';
228
228
  export { createRedisConnection, workersConfig } from './config/workers';
229
229
  export type { RouteOptions } from './routes/Router';
230
- export { RedisKeys, createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, type RedisKeyType, } from './tools/redis/RedisKeyManager';
230
+ export { createRedisKey, extractOriginalKey, getBullMQSafeQueueName, getPrefix, isAppKey, RedisKeys, type RedisKeyType, } from './tools/redis/RedisKeyManager';
231
231
  export { CloudflareSocket } from './sockets/CloudflareSocket';
232
232
  export { detectRuntime } from './runtime/detectRuntime';
233
233
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}