@zintrust/core 0.1.5 → 0.1.6

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 (321) hide show
  1. package/bin/z.d.ts +2 -2
  2. package/bin/z.d.ts.map +1 -1
  3. package/bin/z.js +3 -2
  4. package/bin/zin.d.ts +2 -2
  5. package/bin/zin.d.ts.map +1 -1
  6. package/bin/zin.js +3 -2
  7. package/bin/zintrust-main.d.ts +9 -0
  8. package/bin/zintrust-main.d.ts.map +1 -0
  9. package/bin/zintrust-main.js +101 -0
  10. package/bin/zintrust-microservices.js +7 -7
  11. package/bin/zintrust.d.ts +5 -4
  12. package/bin/zintrust.d.ts.map +1 -1
  13. package/bin/zintrust.js +7 -87
  14. package/bin/zt.d.ts +2 -2
  15. package/bin/zt.d.ts.map +1 -1
  16. package/bin/zt.js +3 -2
  17. package/package.json +13 -3
  18. package/public/index.html +4 -0
  19. package/src/boot/Application.js +13 -13
  20. package/src/boot/Server.d.ts.map +1 -1
  21. package/src/boot/Server.js +47 -39
  22. package/src/boot/bootstrap.js +71 -36
  23. package/src/builder/BundleOptimizer.js +3 -3
  24. package/src/cache/Cache.js +6 -6
  25. package/src/cache/drivers/KVDriver.js +2 -2
  26. package/src/cache/drivers/MongoDriver.js +3 -3
  27. package/src/cache/drivers/RedisDriver.js +3 -3
  28. package/src/cli/BaseCommand.d.ts +2 -0
  29. package/src/cli/BaseCommand.d.ts.map +1 -1
  30. package/src/cli/BaseCommand.js +12 -2
  31. package/src/cli/CLI.js +23 -23
  32. package/src/cli/ErrorHandler.d.ts.map +1 -1
  33. package/src/cli/ErrorHandler.js +14 -8
  34. package/src/cli/commands/AddCommand.js +15 -15
  35. package/src/cli/commands/ConfigCommand.js +6 -6
  36. package/src/cli/commands/D1MigrateCommand.js +6 -6
  37. package/src/cli/commands/DebugCommand.js +3 -3
  38. package/src/cli/commands/FixCommand.js +5 -5
  39. package/src/cli/commands/KeyGenerateCommand.js +5 -5
  40. package/src/cli/commands/LogsCleanupCommand.js +2 -2
  41. package/src/cli/commands/LogsCommand.js +6 -6
  42. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -1
  43. package/src/cli/commands/MakeMailTemplateCommand.js +8 -7
  44. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -1
  45. package/src/cli/commands/MakeNotificationTemplateCommand.js +8 -7
  46. package/src/cli/commands/MigrateCommand.js +2 -2
  47. package/src/cli/commands/NewCommand.js +11 -11
  48. package/src/cli/commands/PluginCommand.js +3 -3
  49. package/src/cli/commands/PrepareCommand.js +6 -6
  50. package/src/cli/commands/QACommand.js +8 -8
  51. package/src/cli/commands/SecretsCommand.js +3 -3
  52. package/src/cli/commands/SimulateCommand.js +6 -6
  53. package/src/cli/commands/StartCommand.js +7 -7
  54. package/src/cli/commands/TemplatesCommand.js +5 -5
  55. package/src/cli/commands/index.js +12 -12
  56. package/src/cli/config/ConfigManager.js +5 -5
  57. package/src/cli/config/ConfigValidator.js +1 -1
  58. package/src/cli/config/index.js +3 -3
  59. package/src/cli/debug/Dashboard.js +3 -3
  60. package/src/cli/index.js +10 -10
  61. package/src/cli/logger/Logger.js +2 -2
  62. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  63. package/src/cli/scaffolding/ControllerGenerator.js +48 -64
  64. package/src/cli/scaffolding/FactoryGenerator.js +6 -6
  65. package/src/cli/scaffolding/FeatureScaffolder.js +8 -8
  66. package/src/cli/scaffolding/FileGenerator.js +4 -4
  67. package/src/cli/scaffolding/MigrationGenerator.js +4 -4
  68. package/src/cli/scaffolding/ModelGenerator.js +5 -5
  69. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  70. package/src/cli/scaffolding/ProjectScaffolder.js +78 -15
  71. package/src/cli/scaffolding/RequestFactoryGenerator.js +5 -5
  72. package/src/cli/scaffolding/ResponseFactoryGenerator.js +5 -5
  73. package/src/cli/scaffolding/RouteGenerator.js +4 -4
  74. package/src/cli/scaffolding/SeederGenerator.js +7 -7
  75. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +5 -5
  76. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +4 -4
  77. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  78. package/src/cli/scaffolding/ServiceScaffolder.js +24 -23
  79. package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -1
  80. package/src/cli/scaffolding/TemplateEngine.js +0 -2
  81. package/src/cli/scaffolding/TemplateGenerator.js +4 -4
  82. package/src/cli/scaffolding/WorkflowGenerator.js +4 -4
  83. package/src/cli/scaffolding/index.js +16 -16
  84. package/src/cli/utils/DistPackager.js +4 -4
  85. package/src/cli/utils/EnvFileLoader.js +2 -2
  86. package/src/cli/utils/spawn.d.ts.map +1 -1
  87. package/src/cli/utils/spawn.js +18 -7
  88. package/src/common/AwsSigV4.js +1 -1
  89. package/src/common/index.js +5 -5
  90. package/src/common/uuid.js +2 -2
  91. package/src/config/FileLogWriter.js +4 -4
  92. package/src/config/SecretsManager.d.ts +1 -42
  93. package/src/config/SecretsManager.d.ts.map +1 -1
  94. package/src/config/SecretsManager.js +2 -2
  95. package/src/config/StartupConfigValidator.d.ts +1 -9
  96. package/src/config/StartupConfigValidator.d.ts.map +1 -1
  97. package/src/config/StartupConfigValidator.js +115 -22
  98. package/src/config/app.d.ts +1 -1
  99. package/src/config/app.d.ts.map +1 -1
  100. package/src/config/app.js +1 -1
  101. package/src/config/broadcast.d.ts +1 -26
  102. package/src/config/broadcast.d.ts.map +1 -1
  103. package/src/config/broadcast.js +1 -1
  104. package/src/config/cache.d.ts +1 -22
  105. package/src/config/cache.d.ts.map +1 -1
  106. package/src/config/cache.js +1 -1
  107. package/src/config/cloudflare.d.ts +1 -13
  108. package/src/config/cloudflare.d.ts.map +1 -1
  109. package/src/config/database.d.ts +2 -47
  110. package/src/config/database.d.ts.map +1 -1
  111. package/src/config/database.js +1 -1
  112. package/src/config/env.d.ts.map +1 -1
  113. package/src/config/env.js +6 -2
  114. package/src/config/features.js +2 -2
  115. package/src/config/index.d.ts +10 -287
  116. package/src/config/index.d.ts.map +1 -1
  117. package/src/config/index.js +16 -16
  118. package/src/config/logger.d.ts.map +1 -1
  119. package/src/config/logger.js +10 -8
  120. package/src/config/logging/HttpLogger.js +4 -4
  121. package/src/config/logging/KvLogger.js +2 -2
  122. package/src/config/logging/SlackLogger.js +3 -3
  123. package/src/config/mail.d.ts +1 -27
  124. package/src/config/mail.d.ts.map +1 -1
  125. package/src/config/mail.js +1 -1
  126. package/src/config/microservices.js +1 -1
  127. package/src/config/middleware.d.ts +2 -6
  128. package/src/config/middleware.d.ts.map +1 -1
  129. package/src/config/middleware.js +5 -5
  130. package/src/config/notification.d.ts +0 -21
  131. package/src/config/notification.d.ts.map +1 -1
  132. package/src/config/notification.js +1 -1
  133. package/src/config/queue.d.ts +1 -39
  134. package/src/config/queue.d.ts.map +1 -1
  135. package/src/config/queue.js +1 -1
  136. package/src/config/security.d.ts +12 -0
  137. package/src/config/security.d.ts.map +1 -1
  138. package/src/config/security.js +17 -5
  139. package/src/config/startup.d.ts +2 -0
  140. package/src/config/startup.d.ts.map +1 -1
  141. package/src/config/startup.js +2 -1
  142. package/src/config/storage.d.ts +1 -48
  143. package/src/config/storage.d.ts.map +1 -1
  144. package/src/config/storage.js +1 -1
  145. package/src/config/type.d.ts +335 -0
  146. package/src/config/type.d.ts.map +1 -0
  147. package/src/config/type.js +1 -0
  148. package/src/container/ServiceContainer.js +1 -1
  149. package/src/exceptions/ZintrustError.js +1 -1
  150. package/src/features/Queue.js +2 -2
  151. package/src/functions/cloudflare.js +4 -4
  152. package/src/functions/deno.js +4 -4
  153. package/src/functions/lambda.js +4 -4
  154. package/src/health/RuntimeHealthProbes.js +3 -3
  155. package/src/health/StartupHealthChecks.js +9 -9
  156. package/src/http/Kernel.js +10 -10
  157. package/src/http/RequestContext.js +2 -2
  158. package/src/http/Response.js +1 -1
  159. package/src/index.d.ts +36 -1
  160. package/src/index.d.ts.map +1 -1
  161. package/src/index.js +69 -36
  162. package/src/microservices/MicroserviceBootstrap.js +5 -5
  163. package/src/microservices/MicroserviceGenerator.js +10 -10
  164. package/src/microservices/MicroserviceManager.js +4 -4
  165. package/src/microservices/PostgresAdapter.js +3 -3
  166. package/src/microservices/RequestTracingMiddleware.js +3 -3
  167. package/src/microservices/ServiceAuthMiddleware.js +3 -3
  168. package/src/microservices/ServiceBundler.js +3 -3
  169. package/src/microservices/ServiceHealthMonitor.js +2 -2
  170. package/src/middleware/CsrfMiddleware.js +3 -3
  171. package/src/middleware/ErrorHandlerMiddleware.js +4 -4
  172. package/src/middleware/LoggingMiddleware.js +3 -3
  173. package/src/middleware/RateLimiter.js +1 -1
  174. package/src/middleware/index.js +6 -6
  175. package/src/node-singletons/http.d.ts +2 -2
  176. package/src/node-singletons/http.d.ts.map +1 -1
  177. package/src/node-singletons/http.js +1 -1
  178. package/src/node-singletons/index.js +14 -14
  179. package/src/node-singletons/path.d.ts +1 -1
  180. package/src/node.d.ts +5 -0
  181. package/src/node.d.ts.map +1 -0
  182. package/src/node.js +4 -0
  183. package/src/orm/ConnectionManager.js +3 -3
  184. package/src/orm/Database.js +8 -8
  185. package/src/orm/Model.js +5 -5
  186. package/src/orm/QueryBuilder.js +1 -1
  187. package/src/orm/Relationships.js +1 -1
  188. package/src/orm/adapters/D1Adapter.js +5 -5
  189. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  190. package/src/orm/adapters/MySQLAdapter.js +4 -6
  191. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  192. package/src/orm/adapters/PostgreSQLAdapter.js +4 -6
  193. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  194. package/src/orm/adapters/SQLServerAdapter.js +4 -6
  195. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  196. package/src/orm/adapters/SQLiteAdapter.js +5 -7
  197. package/src/performance/CodeGenerationBenchmark.js +5 -5
  198. package/src/performance/Optimizer.js +3 -3
  199. package/src/performance/establish-baseline.js +4 -4
  200. package/src/profiling/RequestProfiler.js +4 -4
  201. package/src/runtime/PluginManager.js +8 -8
  202. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  203. package/src/runtime/RuntimeDetector.js +22 -12
  204. package/src/runtime/adapters/CloudflareAdapter.js +3 -3
  205. package/src/runtime/adapters/DenoAdapter.js +2 -2
  206. package/src/runtime/adapters/FargateAdapter.js +4 -4
  207. package/src/runtime/adapters/LambdaAdapter.js +4 -4
  208. package/src/runtime/adapters/NodeServerAdapter.js +4 -4
  209. package/src/scheduler/ScheduleRunner.js +2 -2
  210. package/src/scheduler/index.js +1 -1
  211. package/src/schedules/index.js +1 -1
  212. package/src/schedules/log-cleanup.js +2 -2
  213. package/src/scripts/GenerateEnvArtifacts.js +4 -4
  214. package/src/scripts/TemplateSync.js +8 -6
  215. package/src/security/CsrfTokenManager.js +2 -2
  216. package/src/security/Encryptor.js +3 -3
  217. package/src/security/Hash.js +2 -2
  218. package/src/security/JwtManager.js +2 -2
  219. package/src/security/StartupSecretValidation.js +4 -4
  220. package/src/security/UrlValidator.js +1 -1
  221. package/src/security/Xss.js +1 -1
  222. package/src/security/XssProtection.d.ts.map +1 -1
  223. package/src/security/XssProtection.js +8 -3
  224. package/src/templates/adapters/MySQLAdapter.ts.tpl +0 -2
  225. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +0 -3
  226. package/src/templates/adapters/SQLServerAdapter.ts.tpl +0 -2
  227. package/src/templates/adapters/SQLiteAdapter.ts.tpl +0 -2
  228. package/src/templates/project/basic/.env.tpl +8 -1
  229. package/src/templates/project/basic/app/Controllers/UserController.ts.tpl +3 -2
  230. package/src/templates/project/basic/app/Middleware/ProfilerMiddleware.ts.tpl +3 -2
  231. package/src/templates/project/basic/app/Middleware/index.ts.tpl +8 -14
  232. package/src/templates/project/basic/app/Models/Post.ts.tpl +2 -1
  233. package/src/templates/project/basic/app/Models/User.ts.tpl +1 -1
  234. package/src/templates/project/basic/app/Toolkit/Broadcast/sendBroadcast.ts.tpl +1 -1
  235. package/src/templates/project/basic/app/Toolkit/Mail/sendWelcomeEmail.ts.tpl +1 -1
  236. package/src/templates/project/basic/app/Toolkit/Notification/sendSlackNotification.ts.tpl +1 -1
  237. package/src/templates/project/basic/app/Toolkit/Notification/sendSms.ts.tpl +1 -1
  238. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +2 -4
  239. package/src/templates/project/basic/config/SecretsManager.ts.tpl +6 -39
  240. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +154 -37
  241. package/src/templates/project/basic/config/app.ts.tpl +1 -5
  242. package/src/templates/project/basic/config/broadcast.ts.tpl +6 -36
  243. package/src/templates/project/basic/config/cache.ts.tpl +1 -42
  244. package/src/templates/project/basic/config/cloudflare.ts.tpl +1 -15
  245. package/src/templates/project/basic/config/database.ts.tpl +5 -51
  246. package/src/templates/project/basic/config/env.ts.tpl +6 -7
  247. package/src/templates/project/basic/config/features.ts.tpl +1 -1
  248. package/src/templates/project/basic/config/index.ts.tpl +1 -1
  249. package/src/templates/project/basic/config/logger.ts.tpl +3 -1
  250. package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +1 -1
  251. package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +1 -1
  252. package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +1 -1
  253. package/src/templates/project/basic/config/mail.ts.tpl +1 -57
  254. package/src/templates/project/basic/config/microservices.ts.tpl +1 -1
  255. package/src/templates/project/basic/config/middleware.ts.tpl +2 -6
  256. package/src/templates/project/basic/config/notification.ts.tpl +1 -36
  257. package/src/templates/project/basic/config/queue.ts.tpl +1 -49
  258. package/src/templates/project/basic/config/security.ts.tpl +13 -1
  259. package/src/templates/project/basic/config/startup.ts.tpl +2 -0
  260. package/src/templates/project/basic/config/storage.ts.tpl +6 -54
  261. package/src/templates/project/basic/config/type.ts.tpl +414 -0
  262. package/src/templates/project/basic/package.json.tpl +1 -0
  263. package/src/templates/project/basic/routes/api.ts.tpl +1 -1
  264. package/src/templates/project/basic/routes/broadcast.ts.tpl +1 -1
  265. package/src/templates/project/basic/routes/health.ts.tpl +1 -1
  266. package/src/templates/project/basic/routes/storage.ts.tpl +1 -1
  267. package/src/templates/project/basic/src/index.ts.tpl +49 -41
  268. package/src/templates/project/basic/template.json +1 -1
  269. package/src/templates/project/basic/tsconfig.json.tpl +3 -1
  270. package/src/toolkit/Secrets/EnvFile.js +3 -3
  271. package/src/toolkit/Secrets/Manifest.js +3 -3
  272. package/src/toolkit/Secrets/index.js +5 -5
  273. package/src/toolkit/Secrets/providers/AwsSecretsManager.js +2 -2
  274. package/src/toolkit/Secrets/providers/CloudflareKv.js +1 -1
  275. package/src/tools/broadcast/Broadcast.js +6 -6
  276. package/src/tools/broadcast/drivers/BaseDriver.js +1 -1
  277. package/src/tools/broadcast/drivers/Pusher.d.ts +1 -1
  278. package/src/tools/broadcast/drivers/Pusher.d.ts.map +1 -1
  279. package/src/tools/broadcast/drivers/Pusher.js +2 -2
  280. package/src/tools/broadcast/drivers/Redis.js +1 -1
  281. package/src/tools/broadcast/drivers/RedisHttps.js +3 -3
  282. package/src/tools/broadcast/index.js +6 -6
  283. package/src/tools/http/Http.js +4 -4
  284. package/src/tools/http/HttpResponse.js +1 -1
  285. package/src/tools/http/index.js +2 -2
  286. package/src/tools/mail/Mail.js +8 -8
  287. package/src/tools/mail/attachments.js +1 -1
  288. package/src/tools/mail/drivers/BaseDriver.js +1 -1
  289. package/src/tools/mail/drivers/Mailgun.js +1 -1
  290. package/src/tools/mail/drivers/SendGrid.js +1 -1
  291. package/src/tools/mail/drivers/Ses.js +2 -2
  292. package/src/tools/mail/drivers/Smtp.js +4 -4
  293. package/src/tools/mail/templates/markdown/index.js +3 -3
  294. package/src/tools/mail/templates/markdown/registry.js +5 -5
  295. package/src/tools/mail/templates/markdown/validator.js +1 -1
  296. package/src/tools/mail/testing.js +1 -1
  297. package/src/tools/notification/Notification.js +1 -1
  298. package/src/tools/notification/Registry.js +3 -3
  299. package/src/tools/notification/Service.js +3 -3
  300. package/src/tools/notification/config.js +1 -1
  301. package/src/tools/notification/drivers/BaseDriver.js +1 -1
  302. package/src/tools/notification/drivers/Slack.js +1 -1
  303. package/src/tools/notification/drivers/Termii.js +1 -1
  304. package/src/tools/notification/drivers/Twilio.js +1 -1
  305. package/src/tools/notification/templates/markdown/index.js +3 -3
  306. package/src/tools/notification/templates/markdown/registry.js +5 -5
  307. package/src/tools/notification/testing.js +1 -1
  308. package/src/tools/notification/testingHelpers.js +2 -2
  309. package/src/tools/queue/Queue.js +1 -1
  310. package/src/tools/queue/drivers/InMemory.js +1 -1
  311. package/src/tools/queue/drivers/Redis.js +2 -2
  312. package/src/tools/storage/LocalSignedUrl.js +2 -2
  313. package/src/tools/storage/drivers/Gcs.js +1 -1
  314. package/src/tools/storage/drivers/Local.js +5 -5
  315. package/src/tools/storage/drivers/R2.js +2 -2
  316. package/src/tools/storage/drivers/S3.js +3 -3
  317. package/src/tools/storage/index.js +6 -6
  318. package/src/tools/storage/testing.js +1 -1
  319. package/src/tools/templates/MarkdownRenderer.js +2 -2
  320. package/src/tools/templates/index.js +1 -1
  321. package/src/validation/Validator.js +3 -3
@@ -2,14 +2,14 @@
2
2
  * Database Manager
3
3
  * Central database connection management and query execution
4
4
  */
5
- import { ErrorFactory } from '../exceptions/ZintrustError';
6
- import { EventEmitter } from '../node-singletons/events';
7
- import { D1Adapter } from './adapters/D1Adapter';
8
- import { MySQLAdapter } from './adapters/MySQLAdapter';
9
- import { PostgreSQLAdapter } from './adapters/PostgreSQLAdapter';
10
- import { SQLiteAdapter } from './adapters/SQLiteAdapter';
11
- import { SQLServerAdapter } from './adapters/SQLServerAdapter';
12
- import { QueryBuilder } from './QueryBuilder';
5
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
6
+ import { EventEmitter } from '../node-singletons/events.js';
7
+ import { D1Adapter } from './adapters/D1Adapter.js';
8
+ import { MySQLAdapter } from './adapters/MySQLAdapter.js';
9
+ import { PostgreSQLAdapter } from './adapters/PostgreSQLAdapter.js';
10
+ import { SQLiteAdapter } from './adapters/SQLiteAdapter.js';
11
+ import { SQLServerAdapter } from './adapters/SQLServerAdapter.js';
12
+ import { QueryBuilder } from './QueryBuilder.js';
13
13
  /**
14
14
  * Database Manager
15
15
  * Refactored to Functional Object pattern
package/src/orm/Model.js CHANGED
@@ -2,11 +2,11 @@
2
2
  * Enhanced Model with Relationships
3
3
  * Full ORM capabilities with eager/lazy loading
4
4
  */
5
- import { DEFAULTS } from '../config/constants';
6
- import { ErrorFactory } from '../exceptions/ZintrustError';
7
- import { useDatabase } from './Database';
8
- import { QueryBuilder } from './QueryBuilder';
9
- import { BelongsTo, BelongsToMany, HasMany, HasOne } from './Relationships';
5
+ import { DEFAULTS } from '../config/constants.js';
6
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
7
+ import { useDatabase } from './Database.js';
8
+ import { QueryBuilder } from './QueryBuilder.js';
9
+ import { BelongsTo, BelongsToMany, HasMany, HasOne } from './Relationships.js';
10
10
  const getRelatedTableName = (relatedModel) => {
11
11
  if (typeof relatedModel.getTable === 'function') {
12
12
  return relatedModel.getTable();
@@ -2,7 +2,7 @@
2
2
  * QueryBuilder - Type-Safe Query Builder
3
3
  * Build queries without raw SQL
4
4
  */
5
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
6
6
  /**
7
7
  * Escape SQL identifier
8
8
  */
@@ -2,7 +2,7 @@
2
2
  * Relationship Types
3
3
  * Define how models relate to each other
4
4
  */
5
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
6
6
  const getRelatedTableName = (relatedModel) => {
7
7
  if (typeof relatedModel.getTable === 'function') {
8
8
  return relatedModel.getTable();
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * Cloudflare D1 Database Adapter
3
3
  */
4
- import { Cloudflare } from '../../config/cloudflare';
5
- import { FeatureFlags } from '../../config/features';
6
- import { Logger } from '../../config/logger';
7
- import { ErrorFactory } from '../../exceptions/ZintrustError';
8
- import { QueryBuilder } from '../QueryBuilder';
4
+ import { Cloudflare } from '../../config/cloudflare.js';
5
+ import { FeatureFlags } from '../../config/features.js';
6
+ import { Logger } from '../../config/logger.js';
7
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
8
+ import { QueryBuilder } from '../QueryBuilder.js';
9
9
  /**
10
10
  * Get D1 binding from config or global environment
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MySQLAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/MySQLAdapter.ts"],"names":[],"mappings":"AAEA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EA8EhD,CAAC;AAEH,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"MySQLAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/MySQLAdapter.ts"],"names":[],"mappings":"AACA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,YAAY;IACvB;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EA8EhD,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -1,12 +1,11 @@
1
- // TEMPLATE_START
2
1
  /* eslint-disable @typescript-eslint/require-await */
3
2
  /**
4
3
  * MySQL Database Adapter
5
4
  */
6
- import { FeatureFlags } from '../../config/features';
7
- import { Logger } from '../../config/logger';
8
- import { ErrorFactory } from '../../exceptions/ZintrustError';
9
- import { QueryBuilder } from '../QueryBuilder';
5
+ import { FeatureFlags } from '../../config/features.js';
6
+ import { Logger } from '../../config/logger.js';
7
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
8
+ import { QueryBuilder } from '../QueryBuilder.js';
10
9
  /**
11
10
  * MySQL adapter implementation
12
11
  * Sealed namespace for immutability
@@ -88,4 +87,3 @@ export const MySQLAdapter = Object.freeze({
88
87
  },
89
88
  });
90
89
  export default MySQLAdapter;
91
- // TEMPLATE_END
@@ -1 +1 @@
1
- {"version":3,"file":"PostgreSQLAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/PostgreSQLAdapter.ts"],"names":[],"mappings":"AAEA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EAiFhD,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"PostgreSQLAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/PostgreSQLAdapter.ts"],"names":[],"mappings":"AACA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EAiFhD,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -1,12 +1,11 @@
1
- // TEMPLATE_START
2
1
  /* eslint-disable @typescript-eslint/require-await */
3
2
  /**
4
3
  * PostgreSQL Database Adapter
5
4
  */
6
- import { FeatureFlags } from '../../config/features';
7
- import { Logger } from '../../config/logger';
8
- import { ErrorFactory } from '../../exceptions/ZintrustError';
9
- import { QueryBuilder } from '../QueryBuilder';
5
+ import { FeatureFlags } from '../../config/features.js';
6
+ import { Logger } from '../../config/logger.js';
7
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
8
+ import { QueryBuilder } from '../QueryBuilder.js';
10
9
  /**
11
10
  * PostgreSQL adapter implementation
12
11
  * Sealed namespace for immutability
@@ -88,4 +87,3 @@ export const PostgreSQLAdapter = Object.freeze({
88
87
  },
89
88
  });
90
89
  export default PostgreSQLAdapter;
91
- // TEMPLATE_END
@@ -1 +1 @@
1
- {"version":3,"file":"SQLServerAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SQLServerAdapter.ts"],"names":[],"mappings":"AAEA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EA4EhD,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"SQLServerAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SQLServerAdapter.ts"],"names":[],"mappings":"AACA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAGrF;;;GAGG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;OAEG;mBACY,cAAc,GAAG,gBAAgB;EA4EhD,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -1,12 +1,11 @@
1
- // TEMPLATE_START
2
1
  /* eslint-disable @typescript-eslint/require-await */
3
2
  /**
4
3
  * SQL Server Database Adapter
5
4
  */
6
- import { FeatureFlags } from '../../config/features';
7
- import { Logger } from '../../config/logger';
8
- import { ErrorFactory } from '../../exceptions/ZintrustError';
9
- import { QueryBuilder } from '../QueryBuilder';
5
+ import { FeatureFlags } from '../../config/features.js';
6
+ import { Logger } from '../../config/logger.js';
7
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
8
+ import { QueryBuilder } from '../QueryBuilder.js';
10
9
  /**
11
10
  * SQL Server adapter implementation
12
11
  * Sealed namespace for immutability
@@ -82,4 +81,3 @@ export const SQLServerAdapter = Object.freeze({
82
81
  },
83
82
  });
84
83
  export default SQLServerAdapter;
85
- // TEMPLATE_END
@@ -1 +1 @@
1
- {"version":3,"file":"SQLiteAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SQLiteAdapter.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAMH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AA6HrF,iBAAS,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAoDrE;AAED,eAAO,MAAM,aAAa;;EAExB,CAAC"}
1
+ {"version":3,"file":"SQLiteAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SQLiteAdapter.ts"],"names":[],"mappings":"AACA;;;GAGG;AAMH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AA6HrF,iBAAS,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CAoDrE;AAED,eAAO,MAAM,aAAa;;EAExB,CAAC"}
@@ -1,14 +1,13 @@
1
- // TEMPLATE_START
2
1
  /* eslint-disable @typescript-eslint/require-await */
3
2
  /**
4
3
  * SQLite Database Adapter
5
4
  * Production Implementation
6
5
  */
7
- import { FeatureFlags } from '../../config/features';
8
- import { Logger } from '../../config/logger';
9
- import { ErrorFactory } from '../../exceptions/ZintrustError';
10
- import { performance } from '../../node-singletons/perf-hooks';
11
- import { QueryBuilder } from '../QueryBuilder';
6
+ import { FeatureFlags } from '../../config/features.js';
7
+ import { Logger } from '../../config/logger.js';
8
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
9
+ import { performance } from '../../node-singletons/perf-hooks.js';
10
+ import { QueryBuilder } from '../QueryBuilder.js';
12
11
  import Database from 'better-sqlite3';
13
12
  function normalizeFilename(database) {
14
13
  const value = (database ?? '').trim();
@@ -132,4 +131,3 @@ function createSQLiteAdapter(config) {
132
131
  export const SQLiteAdapter = Object.freeze({
133
132
  create: createSQLiteAdapter,
134
133
  });
135
- // TEMPLATE_END
@@ -2,12 +2,12 @@
2
2
  * Code Generation Benchmarks
3
3
  * Measure performance of all code generators
4
4
  */
5
- import { esmFilePath } from '../common/index';
6
- import { Logger } from '../config/logger';
7
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { esmFilePath } from '../common/index.js';
6
+ import { Logger } from '../config/logger.js';
7
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
8
8
  import { fs } from '../node-singletons/index.js';
9
- import * as path from '../node-singletons/path';
10
- import { Benchmark, MemoryMonitor } from './Benchmark';
9
+ import * as path from '../node-singletons/path.js';
10
+ import { Benchmark, MemoryMonitor } from './Benchmark.js';
11
11
  function isBenchmarkFactory(value) {
12
12
  if (typeof value !== 'object' || value === null)
13
13
  return false;
@@ -2,10 +2,10 @@
2
2
  * Performance Optimizations for Code Generation
3
3
  * Implements caching, lazy-loading, and parallel generation
4
4
  */
5
- import { Logger } from '../config/logger';
6
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { Logger } from '../config/logger.js';
6
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
7
7
  import { fs } from '../node-singletons/index.js';
8
- import * as path from '../node-singletons/path';
8
+ import * as path from '../node-singletons/path.js';
9
9
  const GENERATION_CACHE_STATE_SYMBOL = Symbol.for('zintrust:GenerationCacheState');
10
10
  function isUnrefableTimer(value) {
11
11
  if (typeof value !== 'object' || value === null)
@@ -2,11 +2,11 @@
2
2
  * Establish Performance Baseline
3
3
  * Run all code generator benchmarks and save baseline metrics
4
4
  */
5
- import { esmFilePath } from '../common/index';
6
- import { Logger } from '../config/logger';
5
+ import { esmFilePath } from '../common/index.js';
6
+ import { Logger } from '../config/logger.js';
7
7
  import { fs } from '../node-singletons/index.js';
8
- import * as path from '../node-singletons/path';
9
- import { CodeGenerationBenchmark } from './CodeGenerationBenchmark';
8
+ import * as path from '../node-singletons/path.js';
9
+ import { CodeGenerationBenchmark } from './CodeGenerationBenchmark.js';
10
10
  /**
11
11
  * Run baseline and save results
12
12
  */
@@ -2,9 +2,9 @@
2
2
  * Request Profiler
3
3
  * Comprehensive profiling of request execution combining query, N+1, and memory metrics
4
4
  */
5
- import { MemoryProfiler } from './MemoryProfiler';
6
- import { N1Detector } from './N1Detector';
7
- import { QueryLogger } from './QueryLogger';
5
+ import { MemoryProfiler } from './MemoryProfiler.js';
6
+ import { N1Detector } from './N1Detector.js';
7
+ import { QueryLogger } from './QueryLogger.js';
8
8
  /**
9
9
  * RequestProfiler orchestrates query logging, N+1 detection, and memory profiling
10
10
  * Sealed namespace for immutability
@@ -90,5 +90,5 @@ function formatN1Section(patterns) {
90
90
  /**
91
91
  * Re-export MemoryProfiler's static formatBytes for convenience
92
92
  */
93
- export { MemoryProfiler } from './MemoryProfiler';
93
+ export { MemoryProfiler } from './MemoryProfiler.js';
94
94
  export default RequestProfiler;
@@ -4,14 +4,14 @@
4
4
  * Plugin Manager
5
5
  * Handles installation and removal of framework plugins.
6
6
  */
7
- import { SpawnUtil } from '../cli/utils/spawn';
8
- import { esmDirname, resolvePackageManager } from '../common/index';
9
- import { Logger } from '../config/logger';
10
- import { ErrorFactory } from '../exceptions/ZintrustError';
11
- import { execSync } from '../node-singletons/child-process';
12
- import { existsSync, fsPromises as fs } from '../node-singletons/fs';
13
- import * as path from '../node-singletons/path';
14
- import { PluginRegistry } from './PluginRegistry';
7
+ import { SpawnUtil } from '../cli/utils/spawn.js';
8
+ import { esmDirname, resolvePackageManager } from '../common/index.js';
9
+ import { Logger } from '../config/logger.js';
10
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
11
+ import { execSync } from '../node-singletons/child-process.js';
12
+ import { existsSync, fsPromises as fs } from '../node-singletons/fs.js';
13
+ import * as path from '../node-singletons/path.js';
14
+ import { PluginRegistry } from './PluginRegistry.js';
15
15
  const __dirname = esmDirname(import.meta.url);
16
16
  const MAX_PACKAGE_ROOT_SEARCH_DEPTH = 20;
17
17
  function findPackageRoot(startDir) {
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeDetector.d.ts","sourceRoot":"","sources":["../../../src/runtime/RuntimeDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAyJzF,eAAO,MAAM,eAAe;;;yBA9GF,MAAM;4BAyBD,aAAa,KAAG,cAAc;uCAQnB,MAAM,UAAU,aAAa,KAAG,cAAc;0BAuD7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EA6BhD,CAAC;AA8IH,eAAO,MAAM,oBAAoB;0BAtGE,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;wBA0DlC,MAAM,KAAe,OAAO,CAAC,IAAI,CAAC;iCAmChC,IAAI;EAapC,CAAC"}
1
+ {"version":3,"file":"RuntimeDetector.d.ts","sourceRoot":"","sources":["../../../src/runtime/RuntimeDetector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAkKzF,eAAO,MAAM,eAAe;;;yBA9GF,MAAM;4BAyBD,aAAa,KAAG,cAAc;uCAQnB,MAAM,UAAU,aAAa,KAAG,cAAc;0BAuD7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;EA6BhD,CAAC;AA8IH,eAAO,MAAM,oBAAoB;0BAtGE,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;wBA0DlC,MAAM,KAAe,OAAO,CAAC,IAAI,CAAC;iCAmChC,IAAI;EAapC,CAAC"}
@@ -1,11 +1,11 @@
1
- import { Env } from '../config/env';
2
- import Logger from '../config/logger';
3
- import { ErrorFactory } from '../exceptions/ZintrustError';
4
- import { CloudflareAdapter } from './adapters/CloudflareAdapter';
5
- import { DenoAdapter } from './adapters/DenoAdapter';
6
- import { FargateAdapter } from './adapters/FargateAdapter';
7
- import { LambdaAdapter } from './adapters/LambdaAdapter';
8
- import { NodeServerAdapter } from './adapters/NodeServerAdapter';
1
+ import { Env } from '../config/env.js';
2
+ import Logger from '../config/logger.js';
3
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
4
+ import { CloudflareAdapter } from './adapters/CloudflareAdapter.js';
5
+ import { DenoAdapter } from './adapters/DenoAdapter.js';
6
+ import { FargateAdapter } from './adapters/FargateAdapter.js';
7
+ import { LambdaAdapter } from './adapters/LambdaAdapter.js';
8
+ import { NodeServerAdapter } from './adapters/NodeServerAdapter.js';
9
9
  /**
10
10
  * Runtime detector - automatically selects appropriate adapter based on environment
11
11
  * Supports: Lambda, Fargate, Cloudflare Workers, Deno, and standard Node.js
@@ -20,10 +20,20 @@ function ensureInstanceOfCompat(adapterExport) {
20
20
  const obj = adapterExport;
21
21
  if (obj[Symbol.hasInstance] !== undefined)
22
22
  return;
23
- Object.defineProperty(obj, Symbol.hasInstance, {
24
- value: (instance) => typeof instance === 'object' && instance !== null,
25
- configurable: true,
26
- });
23
+ // Adapters are typically exported as sealed/frozen namespaces.
24
+ // Some tests mock adapters as plain extensible objects and still assert via `instanceof`.
25
+ // Only patch mocks; never attempt to mutate a sealed export.
26
+ if (Object.isExtensible(obj) === false)
27
+ return;
28
+ try {
29
+ Object.defineProperty(obj, Symbol.hasInstance, {
30
+ value: (instance) => typeof instance === 'object' && instance !== null,
31
+ configurable: true,
32
+ });
33
+ }
34
+ catch {
35
+ // Best-effort only; never crash runtime detection because of test-compat shims.
36
+ }
27
37
  }
28
38
  // Some tests mock adapters as plain factory objects (not constructors) but still
29
39
  // assert via `instanceof`. Adding Symbol.hasInstance avoids a TypeError.
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Runtime adapter for Cloudflare Workers
3
3
  */
4
- import { appConfig } from '../../config';
5
- import { Logger } from '../../config/logger';
6
- import { createMockHttpObjects, ErrorResponse, HttpResponse, } from '../RuntimeAdapter';
4
+ import { appConfig } from '../../config/index.js';
5
+ import { Logger } from '../../config/logger.js';
6
+ import { createMockHttpObjects, ErrorResponse, HttpResponse, } from '../RuntimeAdapter.js';
7
7
  /**
8
8
  * Cloudflare Workers adapter for Cloudflare's edge compute platform
9
9
  * Uses fetch API and handles D1 database, KV storage bindings
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Runtime adapter for Deno
3
3
  */
4
- import Logger from '../../config/logger';
5
- import { createMockHttpObjects, ErrorResponse, } from '../RuntimeAdapter';
4
+ import Logger from '../../config/logger.js';
5
+ import { createMockHttpObjects, ErrorResponse, } from '../RuntimeAdapter.js';
6
6
  /**
7
7
  * Deno runtime adapter for Deno Deploy and edge compute environments
8
8
  * Sealed namespace for immutability
@@ -5,10 +5,10 @@
5
5
  * - Extracted all internal logic into exported, named functions so they can be unit tested directly.
6
6
  * - Removed nested event-handler nesting where possible by introducing readIncomingMessageBody().
7
7
  */
8
- import { Env } from '../../config/env';
9
- import { Logger } from '../../config/logger';
10
- import { ErrorFactory } from '../../exceptions/ZintrustError';
11
- import { createServer, } from '../../node-singletons/http';
8
+ import { Env } from '../../config/env.js';
9
+ import { Logger } from '../../config/logger.js';
10
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
11
+ import { createServer, } from '../../node-singletons/http.js';
12
12
  export function createFargateAdapter(config) {
13
13
  const logger = config.logger ?? createDefaultFargateLogger();
14
14
  const state = {};
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Runtime adapter for AWS Lambda
3
3
  */
4
- import { Env } from '../../config/env';
5
- import { Logger } from '../../config/logger';
6
- import { IncomingMessage, ServerResponse, } from '../../node-singletons/http';
7
- import { ErrorResponse, HttpResponse, } from '../RuntimeAdapter';
4
+ import { Env } from '../../config/env.js';
5
+ import { Logger } from '../../config/logger.js';
6
+ import { IncomingMessage, ServerResponse, } from '../../node-singletons/http.js';
7
+ import { ErrorResponse, HttpResponse, } from '../RuntimeAdapter.js';
8
8
  /**
9
9
  * AWS Lambda adapter for API Gateway and ALB events
10
10
  * Converts Lambda events to standard HTTP format for Zintrust framework
@@ -1,7 +1,7 @@
1
- import { Env } from '../../config/env';
2
- import Logger from '../../config/logger';
3
- import { ErrorFactory } from '../../exceptions/ZintrustError';
4
- import { createServer } from '../../node-singletons/http';
1
+ import { Env } from '../../config/env.js';
2
+ import Logger from '../../config/logger.js';
3
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
4
+ import { createServer } from '../../node-singletons/http.js';
5
5
  /**
6
6
  * Node.js HTTP Server adapter for standard containers and traditional servers
7
7
  * Uses Node.js built-in HTTP server for maximum compatibility
@@ -2,8 +2,8 @@
2
2
  * ScheduleRunner
3
3
  * Lightweight, zero-dependency schedule runner for long-running runtimes
4
4
  */
5
- import { Logger } from '../config/logger';
6
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { Logger } from '../config/logger.js';
6
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
7
7
  const createRegister = (runner, invokeHandler) => (schedule) => {
8
8
  if (runner.schedules.has(schedule.name)) {
9
9
  Logger.warn(`Schedule replaced: ${schedule.name}`);
@@ -1 +1 @@
1
- export { create as createScheduleRunner } from './ScheduleRunner';
1
+ export { create as createScheduleRunner } from './ScheduleRunner.js';
@@ -1 +1 @@
1
- export { default as logCleanup } from './log-cleanup';
1
+ export { default as logCleanup } from './log-cleanup.js';
@@ -1,5 +1,5 @@
1
- import { Env } from '../config/env';
2
- import { Logger, cleanLogsOnce } from '../config/logger';
1
+ import { Env } from '../config/env.js';
2
+ import { Logger, cleanLogsOnce } from '../config/logger.js';
3
3
  const intervalMs = Env.getInt('LOG_CLEANUP_INTERVAL_MS', 3600000);
4
4
  const LogCleanupSchedule = {
5
5
  name: 'log.cleanup',
@@ -9,10 +9,10 @@
9
9
  * Usage:
10
10
  * tsx src/scripts/GenerateEnvArtifacts.ts
11
11
  */
12
- import { Logger } from '../config/logger';
13
- import { ErrorFactory } from '../exceptions/ZintrustError';
14
- import fs from '../node-singletons/fs';
15
- import * as path from '../node-singletons/path';
12
+ import { Logger } from '../config/logger.js';
13
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
14
+ import fs from '../node-singletons/fs.js';
15
+ import * as path from '../node-singletons/path.js';
16
16
  const ROOT_DIR = path.resolve(process.cwd());
17
17
  const GENERATED_MARKER = 'Generated by src/scripts/GenerateEnvArtifacts.ts';
18
18
  const walkDir = (dirAbs) => {
@@ -4,12 +4,12 @@
4
4
  * Runs during npm run build
5
5
  */
6
6
  import { TemplateRegistry } from '../templates/TemplateRegistry.js';
7
- import { ensureDir, esmDirname } from '../common/index';
8
- import { Logger } from '../config/logger';
9
- import { ErrorFactory } from '../exceptions/ZintrustError';
10
- import * as crypto from '../node-singletons/crypto';
11
- import fs from '../node-singletons/fs';
12
- import * as path from '../node-singletons/path';
7
+ import { ensureDir, esmDirname } from '../common/index.js';
8
+ import { Logger } from '../config/logger.js';
9
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
10
+ import * as crypto from '../node-singletons/crypto.js';
11
+ import fs from '../node-singletons/fs.js';
12
+ import * as path from '../node-singletons/path.js';
13
13
  const __dirname = esmDirname(import.meta.url);
14
14
  const ROOT_DIR = path.resolve(__dirname, '../../');
15
15
  /**
@@ -224,6 +224,8 @@ const syncStarterProjectTemplates = (params) => {
224
224
  baseDirRel: 'src/database',
225
225
  templateDirRel: `${params.projectRoot}/database`,
226
226
  description: 'Starter project database/* (from src/database/*)',
227
+ transformContent: rewriteStarterTemplateImports,
228
+ checksumSalt: 'starter-imports-v3',
227
229
  });
228
230
  const s4 = syncProjectTemplateDir({
229
231
  checksums: params.checksums,
@@ -2,8 +2,8 @@
2
2
  * CSRF Token Manager
3
3
  * Generate, validate, and bind CSRF tokens to sessions
4
4
  */
5
- import { Env } from '../config/env';
6
- import { randomBytes } from '../node-singletons/crypto';
5
+ import { Env } from '../config/env.js';
6
+ import { randomBytes } from '../node-singletons/crypto.js';
7
7
  /**
8
8
  * Create a new CSRF token manager instance
9
9
  */
@@ -2,9 +2,9 @@
2
2
  * Encryptor
3
3
  * Password hashing with dual support: PBKDF2 (default) and optional bcrypt
4
4
  */
5
- import { Logger } from '../config/logger';
6
- import { ErrorFactory } from '../exceptions/ZintrustError';
7
- import { pbkdf2Sync, randomBytes } from '../node-singletons/crypto';
5
+ import { Logger } from '../config/logger.js';
6
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
7
+ import { pbkdf2Sync, randomBytes } from '../node-singletons/crypto.js';
8
8
  function isBcryptModule(value) {
9
9
  if (typeof value !== 'object' || value === null)
10
10
  return false;
@@ -4,8 +4,8 @@
4
4
  *
5
5
  * Runtime-aware: uses dynamic import for bcrypt.
6
6
  */
7
- import { Logger } from '../config/logger';
8
- import { ErrorFactory } from '../exceptions/ZintrustError';
7
+ import { Logger } from '../config/logger.js';
8
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
9
9
  function isBcryptModule(value) {
10
10
  if (typeof value !== 'object' || value === null)
11
11
  return false;
@@ -3,8 +3,8 @@
3
3
  * JSON Web Token generation, verification, and claims management
4
4
  * Uses native Node.js crypto module (zero external dependencies)
5
5
  */
6
- import { ErrorFactory } from '../exceptions/ZintrustError';
7
- import { createHmac, createSign, createVerify, randomBytes } from '../node-singletons/crypto';
6
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
7
+ import { createHmac, createSign, createVerify, randomBytes } from '../node-singletons/crypto.js';
8
8
  /**
9
9
  * Create a new JWT manager instance
10
10
  */
@@ -4,10 +4,10 @@
4
4
  * Validates critical secrets early at boot time so production misconfiguration
5
5
  * fails fast and predictably.
6
6
  */
7
- import { appConfig } from '../config/app';
8
- import { securityConfig } from '../config/security';
9
- import { startupConfig } from '../config/startup';
10
- import { ErrorFactory } from '../exceptions/ZintrustError';
7
+ import { appConfig } from '../config/app.js';
8
+ import { securityConfig } from '../config/security.js';
9
+ import { startupConfig } from '../config/startup.js';
10
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
11
11
  const validateApiKeySecret = () => {
12
12
  if (!securityConfig.apiKey.enabled)
13
13
  return null;
@@ -2,7 +2,7 @@
2
2
  * Security Utilities
3
3
  * Mitigates SSRF (SonarQube S5144)
4
4
  */
5
- import { ErrorFactory } from '../exceptions/ZintrustError';
5
+ import { ErrorFactory } from '../exceptions/ZintrustError.js';
6
6
  /**
7
7
  * Validate URL for SSRF protection
8
8
  * Ensures URL is either internal or matches allowed domains
@@ -6,7 +6,7 @@
6
6
  * - Strings: strip tags, then escape HTML entities.
7
7
  * - Arrays/Objects: sanitize recursively.
8
8
  */
9
- import { XssProtection } from './XssProtection';
9
+ import { XssProtection } from './XssProtection.js';
10
10
  const stripTags = (value) => {
11
11
  // Remove all HTML tags in linear time (no regex backtracking / ReDoS risk).
12
12
  let out = '';
@@ -1 +1 @@
1
- {"version":3,"file":"XssProtection.d.ts","sourceRoot":"","sources":["../../../src/security/XssProtection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2SH;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,OAAO,KAAG,MAGzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,cAO1B,CAAC"}
1
+ {"version":3,"file":"XssProtection.d.ts","sourceRoot":"","sources":["../../../src/security/XssProtection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6SH;;GAEG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,OAAO,KAAG,MAGzC,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAChC,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;CAClC;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,cAO1B,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * HTML escaping and sanitization (pure TypeScript, zero dependencies)
4
4
  * Sealed namespace pattern - all exports through XssProtection namespace
5
5
  */
6
- import { Logger } from '../config/logger';
6
+ import { Logger } from '../config/logger.js';
7
7
  const HTML_ESCAPE_MAP = {
8
8
  '&': '&',
9
9
  '<': '&lt;',
@@ -31,8 +31,13 @@ const sanitizeHtml = (html) => {
31
31
  if (typeof html !== 'string') {
32
32
  return '';
33
33
  }
34
- // Remove script tags and content
35
- let sanitized = html.replaceAll(/<script\b[\s\S]*?<\/script>/gi, '');
34
+ // Remove script tags and content (loop until stable to avoid incomplete multi-character sanitization)
35
+ let sanitized = html;
36
+ let prevScriptSanitized;
37
+ do {
38
+ prevScriptSanitized = sanitized;
39
+ sanitized = sanitized.replaceAll(/<script\b[\s\S]*?<\/script[^<]*?>/gi, '');
40
+ } while (sanitized !== prevScriptSanitized);
36
41
  // Remove iframe, object, embed, and base tags
37
42
  sanitized = sanitized.replaceAll(/<(?:iframe|object|embed|base)\b[\s\S]*?>/gi, '');
38
43
  sanitized = sanitized.replaceAll(/<\/(?:iframe|object|embed|base)>/gi, '');
@@ -1,4 +1,3 @@
1
- // TEMPLATE_START
2
1
  /* eslint-disable @typescript-eslint/require-await */
3
2
  /**
4
3
  * MySQL Database Adapter
@@ -99,4 +98,3 @@ export const MySQLAdapter = Object.freeze({
99
98
  });
100
99
 
101
100
  export default MySQLAdapter;
102
- // TEMPLATE_END