@zintrust/core 0.1.0 → 0.1.2
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.
- package/README.md +214 -0
- package/bin/zintrust.d.ts.map +1 -1
- package/bin/zintrust.js +18 -1
- package/package.json +4 -34
- package/public/index.html +535 -0
- package/src/boot/Application.d.ts.map +1 -1
- package/src/boot/Application.js +46 -3
- package/src/boot/Server.d.ts.map +1 -1
- package/src/boot/Server.js +3 -4
- package/src/boot/bootstrap.js +77 -6
- package/src/builder/BundleOptimizer.d.ts.map +1 -1
- package/src/builder/BundleOptimizer.js +25 -29
- package/src/cache/Cache.d.ts.map +1 -1
- package/src/cache/Cache.js +4 -2
- package/src/cache/drivers/KVDriver.d.ts.map +1 -1
- package/src/cache/drivers/KVDriver.js +8 -7
- package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
- package/src/cache/drivers/MemoryDriver.js +5 -0
- package/src/cache/drivers/RedisDriver.js +1 -1
- package/src/cli/BaseCommand.d.ts +2 -2
- package/src/cli/BaseCommand.d.ts.map +1 -1
- package/src/cli/BaseCommand.js +2 -1
- package/src/cli/CLI.d.ts.map +1 -1
- package/src/cli/CLI.js +22 -18
- package/src/cli/ErrorHandler.d.ts.map +1 -1
- package/src/cli/ErrorHandler.js +2 -4
- package/src/cli/commands/AddCommand.d.ts +81 -0
- package/src/cli/commands/AddCommand.d.ts.map +1 -1
- package/src/cli/commands/AddCommand.js +24 -5
- package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
- package/src/cli/commands/ConfigCommand.js +59 -25
- package/src/cli/commands/D1MigrateCommand.d.ts +4 -0
- package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/D1MigrateCommand.js +6 -4
- package/src/cli/commands/FixCommand.d.ts.map +1 -1
- package/src/cli/commands/FixCommand.js +3 -15
- package/src/cli/commands/LogsCleanupCommand.d.ts +6 -0
- package/src/cli/commands/LogsCleanupCommand.d.ts.map +1 -0
- package/src/cli/commands/LogsCleanupCommand.js +20 -0
- package/src/cli/commands/LogsCommand.d.ts.map +1 -1
- package/src/cli/commands/LogsCommand.js +4 -6
- package/src/cli/commands/MakeMailTemplateCommand.d.ts +10 -0
- package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -0
- package/src/cli/commands/MakeMailTemplateCommand.js +74 -0
- package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +10 -0
- package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -0
- package/src/cli/commands/MakeNotificationTemplateCommand.js +113 -0
- package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
- package/src/cli/commands/MigrateCommand.js +3 -3
- package/src/cli/commands/NewCommand.d.ts +4 -0
- package/src/cli/commands/NewCommand.d.ts.map +1 -1
- package/src/cli/commands/NewCommand.js +34 -19
- package/src/cli/commands/PluginCommand.d.ts.map +1 -1
- package/src/cli/commands/PluginCommand.js +8 -4
- package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
- package/src/cli/commands/PrepareCommand.js +1 -1
- package/src/cli/commands/QACommand.d.ts.map +1 -1
- package/src/cli/commands/QACommand.js +16 -26
- package/src/cli/commands/SecretsCommand.d.ts +16 -0
- package/src/cli/commands/SecretsCommand.d.ts.map +1 -0
- package/src/cli/commands/SecretsCommand.js +91 -0
- package/src/cli/commands/StartCommand.d.ts.map +1 -1
- package/src/cli/commands/StartCommand.js +2 -2
- package/src/cli/commands/TemplatesCommand.d.ts +3 -0
- package/src/cli/commands/TemplatesCommand.d.ts.map +1 -0
- package/src/cli/commands/TemplatesCommand.js +65 -0
- package/src/cli/commands/index.d.ts +5 -0
- package/src/cli/commands/index.d.ts.map +1 -1
- package/src/cli/commands/index.js +5 -0
- package/src/cli/config/ConfigManager.js +1 -1
- package/src/cli/index.d.ts +2 -1
- package/src/cli/index.d.ts.map +1 -1
- package/src/cli/index.js +2 -1
- package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ControllerGenerator.js +11 -10
- package/src/cli/scaffolding/FeatureScaffolder.js +4 -4
- package/src/cli/scaffolding/FileGenerator.js +1 -1
- package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/MigrationGenerator.js +10 -9
- package/src/cli/scaffolding/ModelGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ModelGenerator.js +11 -10
- package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ProjectScaffolder.js +61 -11
- package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ResponseFactoryGenerator.js +2 -1
- package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/RouteGenerator.js +15 -14
- package/src/cli/scaffolding/SeederGenerator.js +1 -1
- package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +7 -6
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +1 -1
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +1 -1
- package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +2 -2
- package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
- package/src/cli/scaffolding/ServiceScaffolder.js +13 -12
- package/src/cli/scaffolding/TemplateEngine.d.ts +10 -3
- package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -1
- package/src/cli/scaffolding/TemplateEngine.js +15 -285
- package/src/cli/scaffolding/TemplateGenerator.d.ts +40 -0
- package/src/cli/scaffolding/TemplateGenerator.d.ts.map +1 -0
- package/src/cli/scaffolding/TemplateGenerator.js +172 -0
- package/src/cli/scaffolding/index.d.ts +1 -0
- package/src/cli/scaffolding/index.d.ts.map +1 -1
- package/src/cli/scaffolding/index.js +1 -0
- package/src/cli/utils/spawn.js +1 -1
- package/src/common/AwsSigV4.d.ts +41 -0
- package/src/common/AwsSigV4.d.ts.map +1 -0
- package/src/common/AwsSigV4.js +69 -0
- package/src/common/index.d.ts +39 -0
- package/src/common/index.d.ts.map +1 -1
- package/src/common/index.js +101 -8
- package/src/common/uuid.d.ts +3 -0
- package/src/common/uuid.d.ts.map +1 -0
- package/src/common/uuid.js +30 -0
- package/src/config/FileLogWriter.d.ts +22 -0
- package/src/config/FileLogWriter.d.ts.map +1 -0
- package/src/config/FileLogWriter.js +192 -0
- package/src/config/SecretsManager.d.ts.map +1 -1
- package/src/config/SecretsManager.js +26 -0
- package/src/config/StartupConfigValidator.d.ts +15 -0
- package/src/config/StartupConfigValidator.d.ts.map +1 -0
- package/src/config/StartupConfigValidator.js +86 -0
- package/src/config/app.d.ts +2 -1
- package/src/config/app.d.ts.map +1 -1
- package/src/config/app.js +65 -15
- package/src/config/broadcast.d.ts +47 -0
- package/src/config/broadcast.d.ts.map +1 -0
- package/src/config/broadcast.js +54 -0
- package/src/config/cache.d.ts +13 -17
- package/src/config/cache.d.ts.map +1 -1
- package/src/config/cache.js +9 -11
- package/src/config/cloudflare.d.ts +26 -0
- package/src/config/cloudflare.d.ts.map +1 -0
- package/src/config/cloudflare.js +38 -0
- package/src/config/env.d.ts +6 -0
- package/src/config/env.d.ts.map +1 -1
- package/src/config/env.js +6 -0
- package/src/config/index.d.ts +52 -28
- package/src/config/index.d.ts.map +1 -1
- package/src/config/index.js +3 -0
- package/src/config/logger.d.ts +2 -0
- package/src/config/logger.d.ts.map +1 -1
- package/src/config/logger.js +270 -11
- package/src/config/logging/HttpLogger.d.ts +23 -0
- package/src/config/logging/HttpLogger.d.ts.map +1 -0
- package/src/config/logging/HttpLogger.js +93 -0
- package/src/config/logging/KvLogger.d.ts +22 -0
- package/src/config/logging/KvLogger.d.ts.map +1 -0
- package/src/config/logging/KvLogger.js +143 -0
- package/src/config/logging/SlackLogger.d.ts +23 -0
- package/src/config/logging/SlackLogger.d.ts.map +1 -0
- package/src/config/logging/SlackLogger.js +119 -0
- package/src/config/mail.d.ts +81 -0
- package/src/config/mail.d.ts.map +1 -0
- package/src/config/mail.js +73 -0
- package/src/config/middleware.d.ts +8 -0
- package/src/config/middleware.d.ts.map +1 -0
- package/src/config/middleware.js +18 -0
- package/src/config/notification.d.ts +62 -0
- package/src/config/notification.d.ts.map +1 -0
- package/src/config/notification.js +43 -0
- package/src/config/security.d.ts.map +1 -1
- package/src/config/security.js +2 -2
- package/src/config/startup.d.ts +23 -0
- package/src/config/startup.d.ts.map +1 -0
- package/src/config/startup.js +15 -0
- package/src/config/storage.d.ts +21 -35
- package/src/config/storage.d.ts.map +1 -1
- package/src/config/storage.js +57 -37
- package/src/database/migrations/index.d.ts +1 -1
- package/src/database/migrations/index.d.ts.map +1 -1
- package/src/database/migrations/index.js +2 -1
- package/src/features/Queue.js +1 -25
- package/src/functions/lambda.d.ts.map +1 -1
- package/src/functions/lambda.js +6 -1
- package/src/health/RuntimeHealthProbes.d.ts +13 -0
- package/src/health/RuntimeHealthProbes.d.ts.map +1 -0
- package/src/health/RuntimeHealthProbes.js +62 -0
- package/src/health/StartupHealthChecks.d.ts +26 -0
- package/src/health/StartupHealthChecks.d.ts.map +1 -0
- package/src/health/StartupHealthChecks.js +124 -0
- package/src/http/ErrorResponse.d.ts +28 -0
- package/src/http/ErrorResponse.d.ts.map +1 -0
- package/src/http/ErrorResponse.js +42 -0
- package/src/http/Kernel.d.ts +5 -0
- package/src/http/Kernel.d.ts.map +1 -1
- package/src/http/Kernel.js +96 -30
- package/src/http/Request.d.ts +1 -1
- package/src/http/Request.d.ts.map +1 -1
- package/src/http/RequestContext.d.ts +20 -0
- package/src/http/RequestContext.d.ts.map +1 -0
- package/src/http/RequestContext.js +77 -0
- package/src/index.d.ts +9 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +8 -2
- package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -1
- package/src/microservices/MicroserviceBootstrap.js +6 -5
- package/src/microservices/MicroserviceManager.d.ts.map +1 -1
- package/src/microservices/MicroserviceManager.js +7 -5
- package/src/microservices/PostgresAdapter.d.ts.map +1 -1
- package/src/microservices/PostgresAdapter.js +7 -4
- package/src/microservices/ServiceBundler.d.ts.map +1 -1
- package/src/microservices/ServiceBundler.js +3 -1
- package/src/microservices/ServiceHealthMonitor.d.ts.map +1 -1
- package/src/microservices/ServiceHealthMonitor.js +7 -3
- package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
- package/src/middleware/CsrfMiddleware.js +2 -19
- package/src/middleware/ErrorHandlerMiddleware.d.ts +6 -0
- package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -0
- package/src/middleware/ErrorHandlerMiddleware.js +33 -0
- package/src/middleware/LoggingMiddleware.d.ts +9 -0
- package/src/middleware/LoggingMiddleware.d.ts.map +1 -0
- package/src/middleware/LoggingMiddleware.js +36 -0
- package/src/middleware/index.d.ts +2 -0
- package/src/middleware/index.d.ts.map +1 -1
- package/src/middleware/index.js +2 -0
- package/src/node-singletons/async_hooks.d.ts +9 -0
- package/src/node-singletons/async_hooks.d.ts.map +1 -0
- package/src/node-singletons/async_hooks.js +8 -0
- package/src/node-singletons/fs.d.ts +2 -2
- package/src/node-singletons/fs.d.ts.map +1 -1
- package/src/node-singletons/fs.js +2 -2
- package/src/node-singletons/http.d.ts +1 -1
- package/src/node-singletons/http.d.ts.map +1 -1
- package/src/node-singletons/http.js +1 -1
- package/src/node-singletons/index.d.ts +4 -0
- package/src/node-singletons/index.d.ts.map +1 -1
- package/src/node-singletons/index.js +4 -0
- package/src/node-singletons/net.d.ts +9 -0
- package/src/node-singletons/net.d.ts.map +1 -0
- package/src/node-singletons/net.js +8 -0
- package/src/node-singletons/os.d.ts +3 -3
- package/src/node-singletons/os.d.ts.map +1 -1
- package/src/node-singletons/os.js +3 -4
- package/src/node-singletons/path.d.ts +3 -1
- package/src/node-singletons/path.d.ts.map +1 -1
- package/src/node-singletons/path.js +3 -1
- package/src/node-singletons/perf-hooks.d.ts +3 -1
- package/src/node-singletons/perf-hooks.d.ts.map +1 -1
- package/src/node-singletons/perf-hooks.js +3 -1
- package/src/node-singletons/process.d.ts +23 -0
- package/src/node-singletons/process.d.ts.map +1 -0
- package/src/node-singletons/process.js +8 -0
- package/src/node-singletons/readline.d.ts +3 -3
- package/src/node-singletons/readline.d.ts.map +1 -1
- package/src/node-singletons/readline.js +3 -4
- package/src/node-singletons/tls.d.ts +9 -0
- package/src/node-singletons/tls.d.ts.map +1 -0
- package/src/node-singletons/tls.js +8 -0
- package/src/node-singletons/url.d.ts +3 -1
- package/src/node-singletons/url.d.ts.map +1 -1
- package/src/node-singletons/url.js +3 -1
- package/src/orm/ConnectionManager.d.ts +6 -1
- package/src/orm/ConnectionManager.d.ts.map +1 -1
- package/src/orm/ConnectionManager.js +14 -0
- package/src/orm/DatabaseAdapter.d.ts +6 -0
- package/src/orm/DatabaseAdapter.d.ts.map +1 -1
- package/src/orm/QueryBuilder.d.ts +8 -1
- package/src/orm/QueryBuilder.d.ts.map +1 -1
- package/src/orm/QueryBuilder.js +188 -28
- package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
- package/src/orm/adapters/D1Adapter.js +18 -12
- package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
- package/src/orm/adapters/MySQLAdapter.js +4 -0
- package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/src/orm/adapters/PostgreSQLAdapter.js +4 -0
- package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SQLServerAdapter.js +4 -0
- package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/src/orm/adapters/SQLiteAdapter.js +4 -0
- package/src/performance/Benchmark.d.ts.map +1 -1
- package/src/performance/Benchmark.js +3 -0
- package/src/performance/CodeGenerationBenchmark.js +3 -3
- package/src/performance/Optimizer.d.ts +1 -1
- package/src/performance/Optimizer.d.ts.map +1 -1
- package/src/performance/Optimizer.js +157 -80
- package/src/performance/establish-baseline.js +3 -3
- package/src/runtime/PluginManager.d.ts +3 -1
- package/src/runtime/PluginManager.d.ts.map +1 -1
- package/src/runtime/PluginManager.js +124 -28
- package/src/runtime/RuntimeDetector.d.ts.map +1 -1
- package/src/runtime/RuntimeDetector.js +47 -5
- package/src/runtime/adapters/CloudflareAdapter.js +2 -2
- package/src/runtime/adapters/DenoAdapter.js +9 -7
- package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/FargateAdapter.js +4 -3
- package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/LambdaAdapter.js +4 -2
- package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
- package/src/runtime/adapters/NodeServerAdapter.js +7 -6
- package/src/scheduler/ScheduleRunner.d.ts +18 -0
- package/src/scheduler/ScheduleRunner.d.ts.map +1 -0
- package/src/scheduler/ScheduleRunner.js +155 -0
- package/src/scheduler/index.d.ts +3 -0
- package/src/scheduler/index.d.ts.map +1 -0
- package/src/scheduler/index.js +1 -0
- package/src/scheduler/types.d.ts +16 -0
- package/src/scheduler/types.d.ts.map +1 -0
- package/src/scheduler/types.js +4 -0
- package/src/schedules/index.d.ts +2 -0
- package/src/schedules/index.d.ts.map +1 -0
- package/src/schedules/index.js +1 -0
- package/src/schedules/log-cleanup.d.ts +4 -0
- package/src/schedules/log-cleanup.d.ts.map +1 -0
- package/src/schedules/log-cleanup.js +18 -0
- package/src/scripts/GenerateEnvArtifacts.d.ts +13 -0
- package/src/scripts/GenerateEnvArtifacts.d.ts.map +1 -0
- package/src/scripts/GenerateEnvArtifacts.js +171 -0
- package/src/scripts/TemplateSync.js +109 -70
- package/src/security/CsrfTokenManager.js +1 -1
- package/src/security/Encryptor.js +1 -1
- package/src/security/Hash.d.ts +14 -0
- package/src/security/Hash.d.ts.map +1 -0
- package/src/security/Hash.js +81 -0
- package/src/security/StartupSecretValidation.d.ts +20 -0
- package/src/security/StartupSecretValidation.d.ts.map +1 -0
- package/src/security/StartupSecretValidation.js +61 -0
- package/src/security/UrlValidator.d.ts +0 -1
- package/src/security/UrlValidator.d.ts.map +1 -1
- package/src/security/UrlValidator.js +1 -2
- package/src/security/Xss.d.ts +14 -0
- package/src/security/Xss.d.ts.map +1 -0
- package/src/security/Xss.js +57 -0
- package/src/security/XssProtection.d.ts.map +1 -1
- package/src/security/XssProtection.js +150 -16
- package/src/templates/adapters/MySQLAdapter.ts.tpl +5 -0
- package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +5 -0
- package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -0
- package/src/templates/adapters/SQLiteAdapter.ts.tpl +5 -0
- package/src/templates/features/Queue.ts.tpl +1 -29
- package/src/templates/project/basic/.env.example.tpl +48 -0
- package/src/templates/project/basic/.env.tpl +89 -94
- package/src/templates/project/basic/app/Toolkit/Broadcast/sendBroadcast.ts.tpl +7 -0
- package/src/templates/project/basic/app/Toolkit/Mail/sendWelcomeEmail.ts.tpl +30 -0
- package/src/templates/project/basic/app/Toolkit/Notification/sendSlackNotification.ts.tpl +10 -0
- package/src/templates/project/basic/app/Toolkit/Notification/sendSms.ts.tpl +13 -0
- package/src/templates/project/basic/config/FileLogWriter.ts.tpl +240 -0
- package/src/templates/project/basic/config/SecretsManager.ts.tpl +32 -1
- package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +151 -0
- package/src/templates/project/basic/config/app.ts.tpl +84 -15
- package/src/templates/project/basic/config/broadcast.ts.tpl +97 -0
- package/src/templates/project/basic/config/cache.ts.tpl +19 -23
- package/src/templates/project/basic/config/cloudflare.ts.tpl +57 -0
- package/src/templates/project/basic/config/env.ts.tpl +7 -1
- package/src/templates/project/basic/config/index.ts.tpl +3 -0
- package/src/templates/project/basic/config/logger.ts.tpl +301 -11
- package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +121 -0
- package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +181 -0
- package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +156 -0
- package/src/templates/project/basic/config/mail.ts.tpl +141 -0
- package/src/templates/project/basic/config/middleware.ts.tpl +27 -0
- package/src/templates/project/basic/config/notification.ts.tpl +86 -0
- package/src/templates/project/basic/config/security.ts.tpl +4 -5
- package/src/templates/project/basic/config/startup.ts.tpl +27 -0
- package/src/templates/project/basic/config/storage.ts.tpl +77 -42
- package/src/templates/project/basic/database/migrations/index.ts.tpl +1 -1
- package/src/templates/project/basic/package.json.tpl +1 -1
- package/src/templates/project/basic/routes/api.ts.tpl +9 -37
- package/src/templates/project/basic/routes/broadcast.ts.tpl +32 -0
- package/src/templates/project/basic/routes/health.ts.tpl +134 -0
- package/src/templates/project/basic/src/index.ts.tpl +38 -11
- package/src/templates/project/basic/template.json +3 -0
- package/src/toolkit/Secrets/EnvFile.d.ts +15 -0
- package/src/toolkit/Secrets/EnvFile.d.ts.map +1 -0
- package/src/toolkit/Secrets/EnvFile.js +63 -0
- package/src/toolkit/Secrets/Manifest.d.ts +24 -0
- package/src/toolkit/Secrets/Manifest.d.ts.map +1 -0
- package/src/toolkit/Secrets/Manifest.js +71 -0
- package/src/toolkit/Secrets/index.d.ts +42 -0
- package/src/toolkit/Secrets/index.d.ts.map +1 -0
- package/src/toolkit/Secrets/index.js +119 -0
- package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts +14 -0
- package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts.map +1 -0
- package/src/toolkit/Secrets/providers/AwsSecretsManager.js +131 -0
- package/src/toolkit/Secrets/providers/CloudflareKv.d.ts +9 -0
- package/src/toolkit/Secrets/providers/CloudflareKv.d.ts.map +1 -0
- package/src/toolkit/Secrets/providers/CloudflareKv.js +73 -0
- package/src/tools/broadcast/Broadcast.d.ts +7 -0
- package/src/tools/broadcast/Broadcast.d.ts.map +1 -0
- package/src/tools/broadcast/Broadcast.js +37 -0
- package/src/tools/broadcast/drivers/BaseDriver.d.ts +5 -0
- package/src/tools/broadcast/drivers/BaseDriver.d.ts.map +1 -0
- package/src/tools/broadcast/drivers/BaseDriver.js +8 -0
- package/src/tools/broadcast/drivers/InMemory.d.ts +18 -0
- package/src/tools/broadcast/drivers/InMemory.d.ts.map +1 -0
- package/src/tools/broadcast/drivers/InMemory.js +16 -0
- package/src/tools/broadcast/drivers/Pusher.d.ts +8 -0
- package/src/tools/broadcast/drivers/Pusher.d.ts.map +1 -0
- package/src/tools/broadcast/drivers/Pusher.js +75 -0
- package/src/tools/broadcast/drivers/Redis.d.ts +19 -0
- package/src/tools/broadcast/drivers/Redis.d.ts.map +1 -0
- package/src/tools/broadcast/drivers/Redis.js +73 -0
- package/src/tools/broadcast/drivers/RedisHttps.d.ts +14 -0
- package/src/tools/broadcast/drivers/RedisHttps.d.ts.map +1 -0
- package/src/tools/broadcast/drivers/RedisHttps.js +50 -0
- package/src/tools/broadcast/index.d.ts +7 -0
- package/src/tools/broadcast/index.d.ts.map +1 -0
- package/src/tools/broadcast/index.js +6 -0
- package/src/tools/http/Http.d.ts +51 -0
- package/src/tools/http/Http.d.ts.map +1 -0
- package/src/tools/http/Http.js +171 -0
- package/src/tools/http/HttpResponse.d.ts +32 -0
- package/src/tools/http/HttpResponse.d.ts.map +1 -0
- package/src/tools/http/HttpResponse.js +80 -0
- package/src/tools/http/index.d.ts +15 -0
- package/src/tools/http/index.d.ts.map +1 -0
- package/src/tools/http/index.js +9 -0
- package/src/tools/mail/Mail.d.ts +22 -0
- package/src/tools/mail/Mail.d.ts.map +1 -0
- package/src/tools/mail/Mail.js +105 -0
- package/src/tools/mail/attachments.d.ts +23 -0
- package/src/tools/mail/attachments.d.ts.map +1 -0
- package/src/tools/mail/attachments.js +26 -0
- package/src/tools/mail/drivers/BaseDriver.d.ts +5 -0
- package/src/tools/mail/drivers/BaseDriver.d.ts.map +1 -0
- package/src/tools/mail/drivers/BaseDriver.js +8 -0
- package/src/tools/mail/drivers/Mailgun.d.ts +31 -0
- package/src/tools/mail/drivers/Mailgun.d.ts.map +1 -0
- package/src/tools/mail/drivers/Mailgun.js +81 -0
- package/src/tools/mail/drivers/SendGrid.d.ts +29 -0
- package/src/tools/mail/drivers/SendGrid.d.ts.map +1 -0
- package/src/tools/mail/drivers/SendGrid.js +57 -0
- package/src/tools/mail/drivers/Ses.d.ts +24 -0
- package/src/tools/mail/drivers/Ses.d.ts.map +1 -0
- package/src/tools/mail/drivers/Ses.js +116 -0
- package/src/tools/mail/drivers/Smtp.d.ts +38 -0
- package/src/tools/mail/drivers/Smtp.d.ts.map +1 -0
- package/src/tools/mail/drivers/Smtp.js +327 -0
- package/src/tools/mail/templates/index.d.ts +27 -0
- package/src/tools/mail/templates/index.d.ts.map +1 -0
- package/src/tools/mail/templates/index.js +35 -0
- package/src/tools/mail/templates/markdown/index.d.ts +17 -0
- package/src/tools/mail/templates/markdown/index.d.ts.map +1 -0
- package/src/tools/mail/templates/markdown/index.js +49 -0
- package/src/tools/mail/templates/markdown/registry.d.ts +15 -0
- package/src/tools/mail/templates/markdown/registry.d.ts.map +1 -0
- package/src/tools/mail/templates/markdown/registry.js +34 -0
- package/src/tools/mail/templates/markdown/validator.d.ts +16 -0
- package/src/tools/mail/templates/markdown/validator.d.ts.map +1 -0
- package/src/tools/mail/templates/markdown/validator.js +24 -0
- package/src/tools/mail/testing.d.ts +41 -0
- package/src/tools/mail/testing.d.ts.map +1 -0
- package/src/tools/mail/testing.js +34 -0
- package/src/tools/notification/Driver.d.ts +11 -0
- package/src/tools/notification/Driver.d.ts.map +1 -0
- package/src/tools/notification/Driver.js +1 -0
- package/src/tools/notification/Notification.d.ts +11 -0
- package/src/tools/notification/Notification.d.ts.map +1 -0
- package/src/tools/notification/Notification.js +11 -0
- package/src/tools/notification/Registry.d.ts +10 -0
- package/src/tools/notification/Registry.d.ts.map +1 -0
- package/src/tools/notification/Registry.js +22 -0
- package/src/tools/notification/Service.d.ts +6 -0
- package/src/tools/notification/Service.d.ts.map +1 -0
- package/src/tools/notification/Service.js +18 -0
- package/src/tools/notification/config.d.ts +5 -0
- package/src/tools/notification/config.d.ts.map +1 -0
- package/src/tools/notification/config.js +5 -0
- package/src/tools/notification/drivers/BaseDriver.d.ts +5 -0
- package/src/tools/notification/drivers/BaseDriver.d.ts.map +1 -0
- package/src/tools/notification/drivers/BaseDriver.js +8 -0
- package/src/tools/notification/drivers/Console.d.ts +7 -0
- package/src/tools/notification/drivers/Console.d.ts.map +1 -0
- package/src/tools/notification/drivers/Console.js +13 -0
- package/src/tools/notification/drivers/Slack.d.ts +16 -0
- package/src/tools/notification/drivers/Slack.d.ts.map +1 -0
- package/src/tools/notification/drivers/Slack.js +24 -0
- package/src/tools/notification/drivers/Termii.d.ts +10 -0
- package/src/tools/notification/drivers/Termii.d.ts.map +1 -0
- package/src/tools/notification/drivers/Termii.js +47 -0
- package/src/tools/notification/drivers/Twilio.d.ts +21 -0
- package/src/tools/notification/drivers/Twilio.d.ts.map +1 -0
- package/src/tools/notification/drivers/Twilio.js +48 -0
- package/src/tools/notification/templates/markdown/index.d.ts +15 -0
- package/src/tools/notification/templates/markdown/index.d.ts.map +1 -0
- package/src/tools/notification/templates/markdown/index.js +38 -0
- package/src/tools/notification/templates/markdown/registry.d.ts +15 -0
- package/src/tools/notification/templates/markdown/registry.d.ts.map +1 -0
- package/src/tools/notification/templates/markdown/registry.js +36 -0
- package/src/tools/notification/testing.d.ts +19 -0
- package/src/tools/notification/testing.d.ts.map +1 -0
- package/src/tools/notification/testing.js +35 -0
- package/src/tools/notification/testingHelpers.d.ts +12 -0
- package/src/tools/notification/testingHelpers.d.ts.map +1 -0
- package/src/tools/notification/testingHelpers.js +32 -0
- package/src/tools/queue/Queue.d.ts +23 -0
- package/src/tools/queue/Queue.d.ts.map +1 -0
- package/src/tools/queue/Queue.js +38 -0
- package/src/tools/queue/drivers/InMemory.d.ts +10 -0
- package/src/tools/queue/drivers/InMemory.d.ts.map +1 -0
- package/src/tools/queue/drivers/InMemory.js +55 -0
- package/src/tools/queue/drivers/Redis.d.ts +10 -0
- package/src/tools/queue/drivers/Redis.d.ts.map +1 -0
- package/src/tools/queue/drivers/Redis.js +91 -0
- package/src/tools/storage/drivers/Gcs.d.ts +20 -0
- package/src/tools/storage/drivers/Gcs.d.ts.map +1 -0
- package/src/tools/storage/drivers/Gcs.js +152 -0
- package/src/tools/storage/drivers/Local.d.ts +17 -0
- package/src/tools/storage/drivers/Local.d.ts.map +1 -0
- package/src/tools/storage/drivers/Local.js +63 -0
- package/src/tools/storage/drivers/R2.d.ts +20 -0
- package/src/tools/storage/drivers/R2.d.ts.map +1 -0
- package/src/tools/storage/drivers/R2.js +73 -0
- package/src/tools/storage/drivers/S3.d.ts +26 -0
- package/src/tools/storage/drivers/S3.d.ts.map +1 -0
- package/src/tools/storage/drivers/S3.js +258 -0
- package/src/tools/storage/index.d.ts +24 -0
- package/src/tools/storage/index.d.ts.map +1 -0
- package/src/tools/storage/index.js +112 -0
- package/src/tools/storage/testing.d.ts +23 -0
- package/src/tools/storage/testing.d.ts.map +1 -0
- package/src/tools/storage/testing.js +52 -0
- package/src/tools/templates/MarkdownRenderer.d.ts +14 -0
- package/src/tools/templates/MarkdownRenderer.d.ts.map +1 -0
- package/src/tools/templates/MarkdownRenderer.js +300 -0
- package/src/tools/templates/index.d.ts +5 -0
- package/src/tools/templates/index.d.ts.map +1 -0
- package/src/tools/templates/index.js +4 -0
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>ZinTrust Documentation</title>
|
|
7
|
+
<link rel="icon" type="image/svg+xml" href="https://zintrust.com/zintrust.svg" />
|
|
8
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
11
|
+
<link
|
|
12
|
+
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap"
|
|
13
|
+
rel="stylesheet"
|
|
14
|
+
/>
|
|
15
|
+
<script>
|
|
16
|
+
tailwind.config = {
|
|
17
|
+
darkMode: 'class',
|
|
18
|
+
theme: {
|
|
19
|
+
extend: {
|
|
20
|
+
fontFamily: {
|
|
21
|
+
sans: ['Plus Jakarta Sans', 'sans-serif'],
|
|
22
|
+
mono: ['JetBrains Mono', 'monospace'],
|
|
23
|
+
},
|
|
24
|
+
colors: {
|
|
25
|
+
primary: '#0ea5e9',
|
|
26
|
+
secondary: '#10b981',
|
|
27
|
+
ink: '#0b1220',
|
|
28
|
+
},
|
|
29
|
+
keyframes: {
|
|
30
|
+
floaty: {
|
|
31
|
+
'0%, 100%': { transform: 'translateY(0px)' },
|
|
32
|
+
'50%': { transform: 'translateY(-10px)' },
|
|
33
|
+
},
|
|
34
|
+
shimmer: {
|
|
35
|
+
'0%': { backgroundPosition: '0% 50%' },
|
|
36
|
+
'100%': { backgroundPosition: '100% 50%' },
|
|
37
|
+
},
|
|
38
|
+
cardIn: {
|
|
39
|
+
'0%': { opacity: '0', transform: 'translateY(10px)' },
|
|
40
|
+
'100%': { opacity: '1', transform: 'translateY(0px)' },
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
animation: {
|
|
44
|
+
floaty: 'floaty 7s ease-in-out infinite',
|
|
45
|
+
shimmer: 'shimmer 8s ease-in-out infinite',
|
|
46
|
+
cardIn: 'cardIn 700ms ease-out forwards',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
<style>
|
|
53
|
+
:root {
|
|
54
|
+
color-scheme: light;
|
|
55
|
+
}
|
|
56
|
+
html.dark {
|
|
57
|
+
color-scheme: dark;
|
|
58
|
+
}
|
|
59
|
+
.mesh {
|
|
60
|
+
position: fixed;
|
|
61
|
+
inset: 0;
|
|
62
|
+
z-index: -1;
|
|
63
|
+
background:
|
|
64
|
+
radial-gradient(1000px 500px at 10% 10%, rgba(14, 165, 233, 0.18), transparent 55%),
|
|
65
|
+
radial-gradient(900px 500px at 90% 20%, rgba(16, 185, 129, 0.16), transparent 55%),
|
|
66
|
+
radial-gradient(900px 600px at 70% 90%, rgba(14, 165, 233, 0.1), transparent 60%),
|
|
67
|
+
radial-gradient(900px 600px at 0% 90%, rgba(16, 185, 129, 0.1), transparent 60%);
|
|
68
|
+
}
|
|
69
|
+
.glass {
|
|
70
|
+
backdrop-filter: blur(16px);
|
|
71
|
+
-webkit-backdrop-filter: blur(16px);
|
|
72
|
+
}
|
|
73
|
+
.noise {
|
|
74
|
+
position: fixed;
|
|
75
|
+
inset: 0;
|
|
76
|
+
z-index: -1;
|
|
77
|
+
opacity: 0.06;
|
|
78
|
+
mix-blend-mode: overlay;
|
|
79
|
+
background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="2" stitchTiles="stitch"/></filter><rect width="160" height="160" filter="url(%23n)" opacity="0.5"/></svg>');
|
|
80
|
+
}
|
|
81
|
+
.lang-card {
|
|
82
|
+
transform-style: preserve-3d;
|
|
83
|
+
}
|
|
84
|
+
.lang-card:hover .lang-card-inner {
|
|
85
|
+
transform: translateY(-6px) rotateX(2deg) rotateY(-2deg);
|
|
86
|
+
}
|
|
87
|
+
.lang-card-inner {
|
|
88
|
+
transition:
|
|
89
|
+
transform 450ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
90
|
+
box-shadow 450ms;
|
|
91
|
+
}
|
|
92
|
+
.glow-primary:hover {
|
|
93
|
+
box-shadow: 0 0 42px rgba(14, 165, 233, 0.22);
|
|
94
|
+
}
|
|
95
|
+
.glow-secondary:hover {
|
|
96
|
+
box-shadow: 0 0 42px rgba(16, 185, 129, 0.2);
|
|
97
|
+
}
|
|
98
|
+
.caret {
|
|
99
|
+
display: inline-block;
|
|
100
|
+
width: 8px;
|
|
101
|
+
height: 1.1em;
|
|
102
|
+
transform: translateY(2px);
|
|
103
|
+
background: rgba(148, 163, 184, 0.9);
|
|
104
|
+
animation: blink 1s steps(1) infinite;
|
|
105
|
+
}
|
|
106
|
+
@keyframes blink {
|
|
107
|
+
50% {
|
|
108
|
+
opacity: 0;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
.tab-active {
|
|
112
|
+
background: rgba(255, 255, 255, 0.08);
|
|
113
|
+
border-color: rgba(255, 255, 255, 0.14);
|
|
114
|
+
}
|
|
115
|
+
html:not(.dark) .tab-active {
|
|
116
|
+
background: rgba(2, 6, 23, 0.06);
|
|
117
|
+
border-color: rgba(2, 6, 23, 0.12);
|
|
118
|
+
}
|
|
119
|
+
</style>
|
|
120
|
+
</head>
|
|
121
|
+
<body class="antialiased font-sans">
|
|
122
|
+
<div class="mesh"></div>
|
|
123
|
+
<div class="noise"></div>
|
|
124
|
+
|
|
125
|
+
<main
|
|
126
|
+
class="min-h-screen px-6 py-10 md:py-14 bg-white text-slate-900 dark:bg-ink dark:text-slate-100"
|
|
127
|
+
>
|
|
128
|
+
<div class="mx-auto max-w-6xl">
|
|
129
|
+
<header class="flex items-center justify-between gap-4">
|
|
130
|
+
<a href="https://zintrust.com/doc" class="flex items-center gap-3">
|
|
131
|
+
<span
|
|
132
|
+
class="inline-flex h-10 w-10 items-center justify-center rounded-2xl border border-black/10 bg-black/5 dark:border-white/10 dark:bg-white/5"
|
|
133
|
+
>
|
|
134
|
+
<img src="https://zintrust.com/zintrust.svg" alt="ZinTrust Logo" class="h-6 w-6" />
|
|
135
|
+
</span>
|
|
136
|
+
<div>
|
|
137
|
+
<div class="text-sm font-semibold">ZinTrust</div>
|
|
138
|
+
<div class="text-xs text-slate-500 dark:text-slate-400">Documentation</div>
|
|
139
|
+
</div>
|
|
140
|
+
</a>
|
|
141
|
+
|
|
142
|
+
<div class="flex items-center gap-3">
|
|
143
|
+
<a
|
|
144
|
+
href="https://github.com/ZinTrust/ZinTrust"
|
|
145
|
+
class="text-sm font-semibold text-slate-600 hover:text-slate-900 dark:text-slate-300 dark:hover:text-white"
|
|
146
|
+
target="_blank"
|
|
147
|
+
>
|
|
148
|
+
GitHub
|
|
149
|
+
</a>
|
|
150
|
+
<button
|
|
151
|
+
id="themeBtn"
|
|
152
|
+
class="inline-flex items-center gap-2 rounded-2xl border border-black/10 bg-black/5 px-4 py-2 text-sm font-semibold text-slate-700 hover:bg-black/10 dark:border-white/10 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10"
|
|
153
|
+
type="button"
|
|
154
|
+
>
|
|
155
|
+
<span id="themeIcon">☾</span>
|
|
156
|
+
<span class="hidden sm:inline">Theme</span>
|
|
157
|
+
</button>
|
|
158
|
+
</div>
|
|
159
|
+
</header>
|
|
160
|
+
|
|
161
|
+
<section class="mt-12 grid grid-cols-1 gap-10 lg:grid-cols-2 lg:items-center">
|
|
162
|
+
<div>
|
|
163
|
+
<div
|
|
164
|
+
class="inline-flex items-center gap-2 rounded-full border border-black/10 bg-black/5 px-4 py-2 text-xs font-bold tracking-widest text-slate-600 dark:border-white/10 dark:bg-white/5 dark:text-slate-300"
|
|
165
|
+
>
|
|
166
|
+
<span class="h-2 w-2 rounded-full bg-secondary animate-floaty"></span>
|
|
167
|
+
ZERO-DEPENDENCY • TYPESAFE • PRODUCTION-READY
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<h1 class="mt-6 text-5xl md:text-6xl font-extrabold tracking-tight">
|
|
171
|
+
Build fast backends with
|
|
172
|
+
<span
|
|
173
|
+
class="bg-clip-text text-transparent bg-[linear-gradient(90deg,#10b981,#0ea5e9,#10b981)] bg-size-[200%_200%] animate-shimmer"
|
|
174
|
+
>ZinTrust</span
|
|
175
|
+
>
|
|
176
|
+
</h1>
|
|
177
|
+
|
|
178
|
+
<p class="mt-5 text-lg leading-relaxed text-slate-600 dark:text-slate-300">
|
|
179
|
+
A zero-dependency TypeScript framework built for high-performance APIs, clean
|
|
180
|
+
architecture, and microservices. Read the docs and ship.
|
|
181
|
+
</p>
|
|
182
|
+
|
|
183
|
+
<div class="mt-8 grid grid-cols-1 sm:grid-cols-3 gap-4">
|
|
184
|
+
<div
|
|
185
|
+
class="rounded-2xl border border-black/10 bg-black/5 p-4 dark:border-white/10 dark:bg-white/5"
|
|
186
|
+
>
|
|
187
|
+
<div class="text-xs font-bold text-slate-500 dark:text-slate-400">Runtime</div>
|
|
188
|
+
<div class="mt-1 font-semibold">Node http</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div
|
|
191
|
+
class="rounded-2xl border border-black/10 bg-black/5 p-4 dark:border-white/10 dark:bg-white/5"
|
|
192
|
+
>
|
|
193
|
+
<div class="text-xs font-bold text-slate-500 dark:text-slate-400">Core</div>
|
|
194
|
+
<div class="mt-1 font-semibold">Zero deps</div>
|
|
195
|
+
</div>
|
|
196
|
+
<div
|
|
197
|
+
class="rounded-2xl border border-black/10 bg-black/5 p-4 dark:border-white/10 dark:bg-white/5"
|
|
198
|
+
>
|
|
199
|
+
<div class="text-xs font-bold text-slate-500 dark:text-slate-400">DX</div>
|
|
200
|
+
<div class="mt-1 font-semibold">ZinTrust CLI</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
|
|
204
|
+
<div class="mt-10 flex flex-wrap gap-4">
|
|
205
|
+
<a
|
|
206
|
+
href="https://zintrust.com/doc/getting-started"
|
|
207
|
+
class="px-8 py-4 rounded-2xl bg-primary text-white font-bold text-lg hover:bg-primary/90 transition-all shadow-lg shadow-primary/20"
|
|
208
|
+
>
|
|
209
|
+
Start Reading
|
|
210
|
+
</a>
|
|
211
|
+
<a
|
|
212
|
+
href="https://github.com/ZinTrust/ZinTrust"
|
|
213
|
+
class="px-8 py-4 rounded-2xl border border-black/10 bg-black/5 dark:border-white/10 dark:bg-white/5 font-bold text-lg hover:bg-black/10 dark:hover:bg-white/10 transition-all"
|
|
214
|
+
target="_blank"
|
|
215
|
+
>
|
|
216
|
+
GitHub
|
|
217
|
+
</a>
|
|
218
|
+
</div>
|
|
219
|
+
|
|
220
|
+
<div class="mt-12">
|
|
221
|
+
<a href="https://zintrust.com/doc/getting-started" class="lang-card group block">
|
|
222
|
+
<div
|
|
223
|
+
class="lang-card-inner glow-primary rounded-3xl border border-black/10 bg-white/60 p-8 shadow-sm dark:border-white/10 dark:bg-white/5 glass"
|
|
224
|
+
>
|
|
225
|
+
<div class="flex items-center justify-between">
|
|
226
|
+
<div>
|
|
227
|
+
<div
|
|
228
|
+
class="text-xs font-bold tracking-widest text-slate-500 dark:text-slate-400"
|
|
229
|
+
>
|
|
230
|
+
DOCUMENTATION
|
|
231
|
+
</div>
|
|
232
|
+
<div class="mt-2 text-3xl font-bold">Start Reading</div>
|
|
233
|
+
<div class="mt-2 text-base text-slate-600 dark:text-slate-300">
|
|
234
|
+
Explore the zero-dependency TypeScript framework.
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
<div
|
|
238
|
+
class="h-16 w-16 rounded-2xl border border-primary/25 bg-primary/10 flex items-center justify-center text-primary"
|
|
239
|
+
>
|
|
240
|
+
<img
|
|
241
|
+
src="https://zintrust.com/zintrust.svg"
|
|
242
|
+
alt="ZinTrust Logo"
|
|
243
|
+
class="h-10 w-10"
|
|
244
|
+
/>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
<div class="mt-8 flex items-center gap-2 text-primary text-lg font-bold">
|
|
248
|
+
Open Documentation
|
|
249
|
+
<span class="transition-transform group-hover:translate-x-2">→</span>
|
|
250
|
+
</div>
|
|
251
|
+
</div>
|
|
252
|
+
</a>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
|
|
256
|
+
<div class="relative">
|
|
257
|
+
<div
|
|
258
|
+
class="rounded-3xl border border-black/10 bg-white/60 shadow-sm dark:border-white/10 dark:bg-white/5 glass overflow-hidden"
|
|
259
|
+
>
|
|
260
|
+
<div
|
|
261
|
+
class="flex items-center justify-between px-5 py-4 border-b border-black/10 dark:border-white/10"
|
|
262
|
+
>
|
|
263
|
+
<div class="flex items-center gap-2">
|
|
264
|
+
<span class="h-3 w-3 rounded-full bg-red-500/60"></span>
|
|
265
|
+
<span class="h-3 w-3 rounded-full bg-amber-500/60"></span>
|
|
266
|
+
<span class="h-3 w-3 rounded-full bg-emerald-500/60"></span>
|
|
267
|
+
</div>
|
|
268
|
+
<div
|
|
269
|
+
class="text-[10px] font-mono font-bold tracking-widest text-slate-500 dark:text-slate-400"
|
|
270
|
+
id="terminalTitle"
|
|
271
|
+
>
|
|
272
|
+
TERMINAL — QUICKSTART
|
|
273
|
+
</div>
|
|
274
|
+
<button
|
|
275
|
+
id="copyBtn"
|
|
276
|
+
type="button"
|
|
277
|
+
class="rounded-xl border border-black/10 bg-black/5 px-3 py-1.5 text-xs font-bold text-slate-600 hover:bg-black/10 dark:border-white/10 dark:bg-white/5 dark:text-slate-300 dark:hover:bg-white/10"
|
|
278
|
+
>
|
|
279
|
+
Copy
|
|
280
|
+
</button>
|
|
281
|
+
</div>
|
|
282
|
+
|
|
283
|
+
<div class="px-5 pt-4 pb-2 flex gap-2">
|
|
284
|
+
<button
|
|
285
|
+
class="tab px-3 py-1.5 rounded-xl border border-black/10 bg-black/5 text-xs font-bold text-slate-700 dark:border-white/10 dark:bg-white/5 dark:text-slate-200"
|
|
286
|
+
data-script="quickstart"
|
|
287
|
+
type="button"
|
|
288
|
+
>
|
|
289
|
+
Setup
|
|
290
|
+
</button>
|
|
291
|
+
<button
|
|
292
|
+
class="tab px-3 py-1.5 rounded-xl border border-black/10 bg-black/5 text-xs font-bold text-slate-700 dark:border-white/10 dark:bg-white/5 dark:text-slate-200"
|
|
293
|
+
data-script="deploy"
|
|
294
|
+
type="button"
|
|
295
|
+
>
|
|
296
|
+
Deploy (Docker)
|
|
297
|
+
</button>
|
|
298
|
+
</div>
|
|
299
|
+
|
|
300
|
+
<div class="p-5 font-mono text-sm leading-relaxed">
|
|
301
|
+
<div class="text-slate-500 dark:text-slate-400">
|
|
302
|
+
$ <span id="typed"></span><span class="caret"></span>
|
|
303
|
+
</div>
|
|
304
|
+
<div class="mt-4 text-xs text-slate-500 dark:text-slate-400" id="hint"></div>
|
|
305
|
+
</div>
|
|
306
|
+
</div>
|
|
307
|
+
|
|
308
|
+
<div class="mt-6 grid grid-cols-1 sm:grid-cols-2 gap-4">
|
|
309
|
+
<div
|
|
310
|
+
class="rounded-2xl border border-black/10 bg-black/5 p-4 dark:border-white/10 dark:bg-white/5"
|
|
311
|
+
>
|
|
312
|
+
<div class="text-xs font-bold text-slate-500 dark:text-slate-400">Health</div>
|
|
313
|
+
<div class="mt-2 font-mono text-sm text-slate-700 dark:text-slate-200">
|
|
314
|
+
GET /health
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
<div
|
|
318
|
+
class="rounded-2xl border border-black/10 bg-black/5 p-4 dark:border-white/10 dark:bg-white/5"
|
|
319
|
+
>
|
|
320
|
+
<div class="text-xs font-bold text-slate-500 dark:text-slate-400">Debug</div>
|
|
321
|
+
<div class="mt-2 font-mono text-sm text-slate-700 dark:text-slate-200">
|
|
322
|
+
zin debug
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
</section>
|
|
328
|
+
|
|
329
|
+
<footer
|
|
330
|
+
class="mt-14 flex flex-col md:flex-row items-center justify-between gap-4 border-t border-black/10 pt-8 text-sm text-slate-500 dark:border-white/10 dark:text-slate-400"
|
|
331
|
+
>
|
|
332
|
+
<div>© <span id="year"></span> Zintrust Framework. All rights reserved.</div>
|
|
333
|
+
<div class="flex flex-wrap justify-center gap-x-5 gap-y-2 font-semibold">
|
|
334
|
+
<a
|
|
335
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
336
|
+
href="https://zintrust.com/doc/getting-started"
|
|
337
|
+
>Docs</a
|
|
338
|
+
>
|
|
339
|
+
<a
|
|
340
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
341
|
+
href="https://github.com/ZinTrust/ZinTrust"
|
|
342
|
+
target="_blank"
|
|
343
|
+
>GitHub</a
|
|
344
|
+
>
|
|
345
|
+
<a
|
|
346
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
347
|
+
href="https://x.com/zintrust"
|
|
348
|
+
target="_blank"
|
|
349
|
+
>X</a
|
|
350
|
+
>
|
|
351
|
+
<a
|
|
352
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
353
|
+
href="https://discord.gg/zintrust"
|
|
354
|
+
target="_blank"
|
|
355
|
+
>Discord</a
|
|
356
|
+
>
|
|
357
|
+
<a
|
|
358
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
359
|
+
href="https://slack.zintrust.com"
|
|
360
|
+
target="_blank"
|
|
361
|
+
>Slack</a
|
|
362
|
+
>
|
|
363
|
+
<a
|
|
364
|
+
class="hover:text-slate-900 dark:hover:text-white"
|
|
365
|
+
href="https://linkedin.com/company/zintrust"
|
|
366
|
+
target="_blank"
|
|
367
|
+
>LinkedIn</a
|
|
368
|
+
>
|
|
369
|
+
</div>
|
|
370
|
+
<div class="mt-8 pt-8 border-t border-slate-200 dark:border-slate-800 text-center">
|
|
371
|
+
<p class="text-sm text-slate-500 dark:text-slate-400">
|
|
372
|
+
© 2025 Zintrust Framework. All rights reserved.
|
|
373
|
+
</p>
|
|
374
|
+
</div>
|
|
375
|
+
</footer>
|
|
376
|
+
</div>
|
|
377
|
+
</main>
|
|
378
|
+
|
|
379
|
+
<script>
|
|
380
|
+
const STORAGE_KEY = 'ZinTrust-docs-theme';
|
|
381
|
+
const themeBtn = document.getElementById('themeBtn');
|
|
382
|
+
const themeIcon = document.getElementById('themeIcon');
|
|
383
|
+
const htmlEl = document.documentElement;
|
|
384
|
+
|
|
385
|
+
function applyTheme(theme) {
|
|
386
|
+
const useDark = theme === 'dark';
|
|
387
|
+
htmlEl.classList.toggle('dark', useDark);
|
|
388
|
+
themeIcon.textContent = useDark ? '☀' : '☾';
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function getPreferredTheme() {
|
|
392
|
+
const saved = localStorage.getItem(STORAGE_KEY);
|
|
393
|
+
if (saved === 'dark' || saved === 'light') return saved;
|
|
394
|
+
return globalThis.matchMedia &&
|
|
395
|
+
globalThis.matchMedia('(prefers-color-scheme: dark)').matches
|
|
396
|
+
? 'dark'
|
|
397
|
+
: 'light';
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
function toggleTheme() {
|
|
401
|
+
const next = htmlEl.classList.contains('dark') ? 'light' : 'dark';
|
|
402
|
+
localStorage.setItem(STORAGE_KEY, next);
|
|
403
|
+
applyTheme(next);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
applyTheme(getPreferredTheme());
|
|
407
|
+
themeBtn.addEventListener('click', toggleTheme);
|
|
408
|
+
|
|
409
|
+
document.getElementById('year').textContent = String(new Date().getFullYear());
|
|
410
|
+
|
|
411
|
+
const scripts = {
|
|
412
|
+
quickstart: {
|
|
413
|
+
title: 'TERMINAL — QUICKSTART',
|
|
414
|
+
hint: 'Tip: run the health check to verify your service is up.',
|
|
415
|
+
lines: [
|
|
416
|
+
'npm install',
|
|
417
|
+
'npm run build',
|
|
418
|
+
'npm link',
|
|
419
|
+
'zin --version',
|
|
420
|
+
'zin new my-api',
|
|
421
|
+
'cd my-api',
|
|
422
|
+
'npm run dev',
|
|
423
|
+
'curl http://localhost:3000/health',
|
|
424
|
+
'zin debug',
|
|
425
|
+
],
|
|
426
|
+
},
|
|
427
|
+
deploy: {
|
|
428
|
+
title: 'TERMINAL — DEPLOY',
|
|
429
|
+
hint: 'Tip: bake an image, run it, then hit /health for confidence.',
|
|
430
|
+
lines: [
|
|
431
|
+
'docker build -t my-api:latest .',
|
|
432
|
+
'docker run --rm -p 3000:3000 my-api:latest',
|
|
433
|
+
'curl http://localhost:3000/health',
|
|
434
|
+
],
|
|
435
|
+
},
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
const typedEl = document.getElementById('typed');
|
|
439
|
+
const hintEl = document.getElementById('hint');
|
|
440
|
+
const terminalTitleEl = document.getElementById('terminalTitle');
|
|
441
|
+
const tabs = Array.from(document.querySelectorAll('.tab'));
|
|
442
|
+
const copyBtn = document.getElementById('copyBtn');
|
|
443
|
+
|
|
444
|
+
let activeKey = 'quickstart';
|
|
445
|
+
let lineIndex = 0;
|
|
446
|
+
let charIndex = 0;
|
|
447
|
+
let isDeleting = false;
|
|
448
|
+
let timerId = null;
|
|
449
|
+
|
|
450
|
+
function stopTyping() {
|
|
451
|
+
if (timerId !== null) {
|
|
452
|
+
globalThis.clearTimeout(timerId);
|
|
453
|
+
timerId = null;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
async function copyText(text) {
|
|
458
|
+
if (navigator.clipboard && globalThis.isSecureContext === true) {
|
|
459
|
+
await navigator.clipboard.writeText(text);
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
const textarea = document.createElement('textarea');
|
|
464
|
+
textarea.value = text;
|
|
465
|
+
textarea.setAttribute('readonly', '');
|
|
466
|
+
textarea.style.position = 'fixed';
|
|
467
|
+
textarea.style.left = '-9999px';
|
|
468
|
+
textarea.style.top = '0';
|
|
469
|
+
document.body.appendChild(textarea);
|
|
470
|
+
textarea.select();
|
|
471
|
+
const ok = document.execCommand('copy');
|
|
472
|
+
textarea.remove();
|
|
473
|
+
if (!ok) throw new Error('copy failed');
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
function setActiveTab(key) {
|
|
477
|
+
stopTyping();
|
|
478
|
+
activeKey = key;
|
|
479
|
+
lineIndex = 0;
|
|
480
|
+
charIndex = 0;
|
|
481
|
+
isDeleting = false;
|
|
482
|
+
typedEl.textContent = '';
|
|
483
|
+
terminalTitleEl.textContent = scripts[key].title;
|
|
484
|
+
hintEl.textContent = scripts[key].hint;
|
|
485
|
+
tabs.forEach((t) => t.classList.toggle('tab-active', t.dataset.script === key));
|
|
486
|
+
|
|
487
|
+
step();
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
function step() {
|
|
491
|
+
const { lines } = scripts[activeKey];
|
|
492
|
+
const full = lines[lineIndex % lines.length];
|
|
493
|
+
|
|
494
|
+
const targetLen = isDeleting ? charIndex - 1 : charIndex + 1;
|
|
495
|
+
charIndex = Math.max(0, Math.min(full.length, targetLen));
|
|
496
|
+
typedEl.textContent = full.slice(0, charIndex);
|
|
497
|
+
|
|
498
|
+
let delay = isDeleting ? 18 : 28;
|
|
499
|
+
|
|
500
|
+
if (!isDeleting && charIndex === full.length) {
|
|
501
|
+
delay = 850;
|
|
502
|
+
isDeleting = true;
|
|
503
|
+
} else if (isDeleting && charIndex === 0) {
|
|
504
|
+
isDeleting = false;
|
|
505
|
+
lineIndex++;
|
|
506
|
+
delay = 260;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
timerId = globalThis.setTimeout(step, delay);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
tabs.forEach((t) =>
|
|
513
|
+
t.addEventListener('click', () => {
|
|
514
|
+
const key = t.dataset.script;
|
|
515
|
+
if (!key || !(key in scripts) || key === activeKey) return;
|
|
516
|
+
setActiveTab(key);
|
|
517
|
+
})
|
|
518
|
+
);
|
|
519
|
+
|
|
520
|
+
copyBtn.addEventListener('click', async () => {
|
|
521
|
+
const text = scripts[activeKey].lines.join('\n');
|
|
522
|
+
try {
|
|
523
|
+
await copyText(text);
|
|
524
|
+
copyBtn.textContent = 'Copied';
|
|
525
|
+
globalThis.setTimeout(() => (copyBtn.textContent = 'Copy'), 900);
|
|
526
|
+
} catch {
|
|
527
|
+
copyBtn.textContent = 'Copy failed';
|
|
528
|
+
globalThis.setTimeout(() => (copyBtn.textContent = 'Copy'), 1100);
|
|
529
|
+
}
|
|
530
|
+
});
|
|
531
|
+
|
|
532
|
+
setActiveTab('quickstart');
|
|
533
|
+
</script>
|
|
534
|
+
</body>
|
|
535
|
+
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../../src/boot/Application.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../../src/boot/Application.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAoB,MAAM,8BAA8B,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,YAAY;IAC3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,IAAI,OAAO,CAAC;IACpB,aAAa,IAAI,OAAO,CAAC;IACzB,YAAY,IAAI,OAAO,CAAC;IACxB,SAAS,IAAI,OAAO,CAAC;IACrB,cAAc,IAAI,MAAM,CAAC;IACzB,SAAS,IAAI,OAAO,CAAC;IACrB,YAAY,IAAI,iBAAiB,CAAC;IAClC,kBAAkB,IAAI,gBAAgB,CAAC;IACvC,WAAW,IAAI,MAAM,CAAC;CACvB;AA2LD;;GAEG;AACH,eAAO,MAAM,WAAW;IACtB;;OAEG;sBACe,MAAM,GAAG,YAAY;EAmDvC,CAAC;AAEH,eAAe,WAAW,CAAC"}
|
package/src/boot/Application.js
CHANGED
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
* Application - Framework core entry point
|
|
3
3
|
* Handles application lifecycle, booting, and environment
|
|
4
4
|
*/
|
|
5
|
+
import { appConfig } from '../config';
|
|
5
6
|
import { ServiceContainer } from '../container/ServiceContainer';
|
|
7
|
+
import { StartupHealthChecks } from '../health/StartupHealthChecks';
|
|
6
8
|
import { MiddlewareStack } from '../middleware/MiddlewareStack';
|
|
7
9
|
import { Router } from '../routing/Router';
|
|
8
|
-
import {
|
|
10
|
+
import { FeatureFlags } from '../config/features';
|
|
9
11
|
import { Logger } from '../config/logger';
|
|
12
|
+
import { StartupConfigValidator } from '../config/StartupConfigValidator';
|
|
10
13
|
import * as path from '../node-singletons/path';
|
|
11
14
|
import { pathToFileURL } from '../node-singletons/url';
|
|
12
15
|
const ShutdownManager = Object.freeze({
|
|
@@ -89,11 +92,41 @@ const registerRoutes = async (resolvedBasePath, router) => {
|
|
|
89
92
|
Logger.error('Failed to register routes:', error);
|
|
90
93
|
}
|
|
91
94
|
};
|
|
95
|
+
const initializeArtifactDirectories = async (resolvedBasePath) => {
|
|
96
|
+
if (resolvedBasePath === '')
|
|
97
|
+
return;
|
|
98
|
+
if (typeof process === 'undefined')
|
|
99
|
+
return;
|
|
100
|
+
let nodeFs;
|
|
101
|
+
try {
|
|
102
|
+
nodeFs = await import('../node-singletons/fs');
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const dirs = ['logs', 'storage', 'tmp'];
|
|
108
|
+
for (const dir of dirs) {
|
|
109
|
+
const fullPath = path.join(resolvedBasePath, dir);
|
|
110
|
+
try {
|
|
111
|
+
if (!nodeFs.existsSync(fullPath)) {
|
|
112
|
+
nodeFs.mkdirSync(fullPath, { recursive: true });
|
|
113
|
+
Logger.info(`✓ Created directory: ${dir}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
Logger.warn(`Failed to create ${dir} directory`, error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
92
121
|
const createLifecycle = (params) => {
|
|
93
122
|
const boot = async () => {
|
|
94
123
|
if (params.getBooted())
|
|
95
124
|
return;
|
|
96
125
|
Logger.info(`🚀 Booting Zintrust Application in ${params.environment} mode...`);
|
|
126
|
+
StartupConfigValidator.assertValid();
|
|
127
|
+
FeatureFlags.initialize();
|
|
128
|
+
await StartupHealthChecks.assertHealthy();
|
|
129
|
+
await initializeArtifactDirectories(params.resolvedBasePath);
|
|
97
130
|
await registerRoutes(params.resolvedBasePath, params.router);
|
|
98
131
|
// Register service providers
|
|
99
132
|
// Bootstrap services
|
|
@@ -123,7 +156,7 @@ export const Application = Object.freeze({
|
|
|
123
156
|
create(basePath) {
|
|
124
157
|
const resolvedBasePath = resolveBasePath(basePath);
|
|
125
158
|
const joinFromBase = makeJoinFromBase(resolvedBasePath);
|
|
126
|
-
const environment =
|
|
159
|
+
const environment = appConfig.environment;
|
|
127
160
|
const container = ServiceContainer.create();
|
|
128
161
|
const router = Router.createRouter();
|
|
129
162
|
const middlewareStack = MiddlewareStack.create();
|
|
@@ -131,6 +164,16 @@ export const Application = Object.freeze({
|
|
|
131
164
|
let booted = false;
|
|
132
165
|
registerCorePaths(container, resolvedBasePath, joinFromBase);
|
|
133
166
|
registerCoreInstances({ container, environment, router, middlewareStack, shutdownManager });
|
|
167
|
+
// Register framework-level shutdown hooks for long-lived resources
|
|
168
|
+
// ConnectionManager may not be initialized; shutdownIfInitialized is safe
|
|
169
|
+
// Use dynamic import without top-level await to avoid transforming the module into an async module
|
|
170
|
+
import('../orm/ConnectionManager')
|
|
171
|
+
.then(({ ConnectionManager }) => {
|
|
172
|
+
shutdownManager.add(async () => ConnectionManager.shutdownIfInitialized());
|
|
173
|
+
})
|
|
174
|
+
.catch(() => {
|
|
175
|
+
/* ignore import failures in restrictive runtimes */
|
|
176
|
+
});
|
|
134
177
|
const { boot, shutdown } = createLifecycle({
|
|
135
178
|
environment,
|
|
136
179
|
resolvedBasePath,
|
|
@@ -147,7 +190,7 @@ export const Application = Object.freeze({
|
|
|
147
190
|
isBooted: () => booted,
|
|
148
191
|
isDevelopment: () => environment === 'development',
|
|
149
192
|
isProduction: () => environment === 'production',
|
|
150
|
-
isTesting: () => environment === 'testing'
|
|
193
|
+
isTesting: () => environment === 'testing',
|
|
151
194
|
getEnvironment: () => environment,
|
|
152
195
|
getRouter: () => router,
|
|
153
196
|
getContainer: () => container,
|
package/src/boot/Server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../src/boot/Server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Server.d.ts","sourceRoot":"","sources":["../../../src/boot/Server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAC;AAI9C,MAAM,WAAW,OAAO;IACtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC;CAC9B;AA2ND;;;GAGG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;gBACS,YAAY,SAAS,MAAM,SAAS,MAAM,GAAG,OAAO;EA8BhE,CAAC;AAEH,eAAe,MAAM,CAAC"}
|
package/src/boot/Server.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Server - HTTP Server implementation
|
|
3
3
|
* Uses Node.js built-in HTTP server with no external dependencies
|
|
4
4
|
*/
|
|
5
|
+
import { esmDirname } from '../common/index';
|
|
5
6
|
import { appConfig } from '../config/app';
|
|
6
7
|
import { HTTP_HEADERS, MIME_TYPES } from '../config/constants';
|
|
7
8
|
import { Logger } from '../config/logger';
|
|
@@ -11,7 +12,6 @@ import { Response } from '../http/Response';
|
|
|
11
12
|
import * as fs from '../node-singletons/fs';
|
|
12
13
|
import * as http from '../node-singletons/http';
|
|
13
14
|
import * as path from '../node-singletons/path';
|
|
14
|
-
import { fileURLToPath } from '../node-singletons/url';
|
|
15
15
|
import { Router } from '../routing/Router';
|
|
16
16
|
const MIME_TYPES_MAP = {
|
|
17
17
|
'.html': MIME_TYPES.HTML,
|
|
@@ -43,8 +43,7 @@ const findPackageRoot = (startDir) => {
|
|
|
43
43
|
return startDir;
|
|
44
44
|
};
|
|
45
45
|
const getFrameworkPublicRoots = () => {
|
|
46
|
-
const
|
|
47
|
-
const thisDir = path.dirname(thisFile);
|
|
46
|
+
const thisDir = esmDirname(import.meta.url);
|
|
48
47
|
const packageRoot = findPackageRoot(thisDir);
|
|
49
48
|
return [
|
|
50
49
|
path.join(packageRoot, 'dist/public'),
|
|
@@ -53,7 +52,7 @@ const getFrameworkPublicRoots = () => {
|
|
|
53
52
|
];
|
|
54
53
|
};
|
|
55
54
|
const getDocsPublicRoot = () => {
|
|
56
|
-
const isProduction =
|
|
55
|
+
const isProduction = appConfig.isProduction();
|
|
57
56
|
// First try app-local roots (developer app override), then fall back to framework-shipped assets.
|
|
58
57
|
const appRoots = isProduction
|
|
59
58
|
? [path.join(process.cwd(), 'public')]
|