alepha 0.18.2 → 0.18.3
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/assets/devtools-ui/200.html +2 -2
- package/assets/devtools-ui/200.html.br +0 -0
- package/assets/devtools-ui/404.html +2 -2
- package/assets/devtools-ui/404.html.br +0 -0
- package/assets/devtools-ui/{asset.BfSBZ5Dd.css → asset.hG_f8HuK.css} +1 -1
- package/assets/devtools-ui/asset.hG_f8HuK.css.br +0 -0
- package/assets/devtools-ui/chunk.B3au4Lhg.js +1 -0
- package/assets/devtools-ui/chunk.B3au4Lhg.js.br +0 -0
- package/assets/devtools-ui/chunk.BLOrlnMB.js +1 -0
- package/assets/devtools-ui/chunk.BLOrlnMB.js.br +0 -0
- package/assets/devtools-ui/chunk.BLR01ljW.js +1 -0
- package/assets/devtools-ui/chunk.BLR01ljW.js.br +0 -0
- package/assets/devtools-ui/chunk.BTXaIUlA.js +1 -0
- package/assets/devtools-ui/chunk.BTXaIUlA.js.br +0 -0
- package/assets/devtools-ui/{chunk.lJL-lgnW.js → chunk.BhJaxmm8.js} +1 -1
- package/assets/devtools-ui/chunk.BhJaxmm8.js.br +0 -0
- package/assets/devtools-ui/chunk.BtoNxFuL.js +1 -0
- package/assets/devtools-ui/chunk.BtoNxFuL.js.br +0 -0
- package/assets/devtools-ui/chunk.C8YUV2Wd.js +1 -0
- package/assets/devtools-ui/chunk.C8YUV2Wd.js.br +0 -0
- package/assets/devtools-ui/{chunk.M6wyKO_3.js → chunk.CBbIgDzE.js} +2 -2
- package/assets/devtools-ui/chunk.CBbIgDzE.js.br +0 -0
- package/assets/devtools-ui/chunk.CFqIniwA.js +1 -0
- package/assets/devtools-ui/chunk.CFqIniwA.js.br +0 -0
- package/assets/devtools-ui/chunk.CLFF7f7-.js +1 -0
- package/assets/devtools-ui/chunk.CLFF7f7-.js.br +0 -0
- package/assets/devtools-ui/chunk.CRsBbA10.js +1 -0
- package/assets/devtools-ui/chunk.CRsBbA10.js.br +0 -0
- package/assets/devtools-ui/{chunk.DbEH1oOB.js → chunk.CZPo6v95.js} +1 -1
- package/assets/devtools-ui/chunk.CZPo6v95.js.br +0 -0
- package/assets/devtools-ui/chunk.D0fWgNos.js +1 -0
- package/assets/devtools-ui/chunk.D0fWgNos.js.br +1 -0
- package/assets/devtools-ui/chunk.D7-0ziQ6.js +1 -0
- package/assets/devtools-ui/chunk.D7-0ziQ6.js.br +0 -0
- package/assets/devtools-ui/chunk.DAewe0vm.js +1 -0
- package/assets/devtools-ui/chunk.DAewe0vm.js.br +0 -0
- package/assets/devtools-ui/chunk.DJRQEYqK.js +1 -0
- package/assets/devtools-ui/chunk.DJRQEYqK.js.br +0 -0
- package/assets/devtools-ui/{chunk.CZl6J9DF.js → chunk.DMAxv14p.js} +1 -1
- package/assets/devtools-ui/chunk.DMAxv14p.js.br +0 -0
- package/assets/devtools-ui/{chunk.BT2IiBkZ.js → chunk.DMImnNjU.js} +1 -1
- package/assets/devtools-ui/chunk.DMImnNjU.js.br +0 -0
- package/assets/devtools-ui/chunk.DeeQsidk.js +9 -0
- package/assets/devtools-ui/chunk.DeeQsidk.js.br +0 -0
- package/assets/devtools-ui/chunk.DqEwn9Vj.js +7 -0
- package/assets/devtools-ui/chunk.DqEwn9Vj.js.br +0 -0
- package/assets/devtools-ui/chunk.Dt8OsQey.js +1 -0
- package/assets/devtools-ui/chunk.Dt8OsQey.js.br +0 -0
- package/assets/devtools-ui/{chunk.B9pX3zit.js → chunk.Dtp8oa_f.js} +1 -1
- package/assets/devtools-ui/chunk.Dtp8oa_f.js.br +0 -0
- package/assets/devtools-ui/chunk.Dx3JzAYM.js +1 -0
- package/assets/devtools-ui/chunk.Dx3JzAYM.js.br +0 -0
- package/assets/devtools-ui/chunk.GCOj1-5E.js +1 -0
- package/assets/devtools-ui/chunk.GCOj1-5E.js.br +0 -0
- package/assets/devtools-ui/chunk.IC1LD8BH.js +1 -0
- package/assets/devtools-ui/chunk.IC1LD8BH.js.br +0 -0
- package/assets/devtools-ui/chunk.IwuB_TqW.js +1 -0
- package/assets/devtools-ui/chunk.IwuB_TqW.js.br +0 -0
- package/assets/devtools-ui/chunk.Qqapj2zq.js +1 -0
- package/assets/devtools-ui/chunk.Qqapj2zq.js.br +0 -0
- package/assets/devtools-ui/{chunk.C79YouPp.js → chunk.TKKKndOy.js} +1 -1
- package/assets/devtools-ui/chunk.TKKKndOy.js.br +0 -0
- package/assets/devtools-ui/chunk.YHTVhFQT.js +1 -0
- package/assets/devtools-ui/chunk.YHTVhFQT.js.br +0 -0
- package/assets/devtools-ui/chunk.fnod6uEi.js +1 -0
- package/assets/devtools-ui/chunk.fnod6uEi.js.br +0 -0
- package/assets/devtools-ui/chunk.mOCRmXjo.js +1 -0
- package/assets/devtools-ui/chunk.mOCRmXjo.js.br +0 -0
- package/assets/devtools-ui/chunk.qZTNEAK0.js +1 -0
- package/assets/devtools-ui/chunk.qZTNEAK0.js.br +0 -0
- package/assets/devtools-ui/chunk.rc9m0y4-.js +1 -0
- package/assets/devtools-ui/chunk.rc9m0y4-.js.br +0 -0
- package/assets/devtools-ui/entry.Cxc5QLCU.js +80 -0
- package/assets/devtools-ui/entry.Cxc5QLCU.js.br +0 -0
- package/assets/devtools-ui/index.html +2 -2
- package/assets/devtools-ui/index.html.br +0 -0
- package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
- package/assets/swagger-ui/swagger-ui.css +1 -1
- package/dist/api/audits/index.d.ts +61 -5
- package/dist/api/audits/index.d.ts.map +1 -1
- package/dist/api/files/index.d.ts +61 -5
- package/dist/api/files/index.d.ts.map +1 -1
- package/dist/api/jobs/index.d.ts +61 -5
- package/dist/api/jobs/index.d.ts.map +1 -1
- package/dist/api/jobs/index.js +4 -2
- package/dist/api/jobs/index.js.map +1 -1
- package/dist/api/keys/index.d.ts +5 -5
- package/dist/api/notifications/index.browser.js +44 -1
- package/dist/api/notifications/index.browser.js.map +1 -1
- package/dist/api/notifications/index.d.ts +187 -2
- package/dist/api/notifications/index.d.ts.map +1 -1
- package/dist/api/notifications/index.js +143 -8
- package/dist/api/notifications/index.js.map +1 -1
- package/dist/api/parameters/index.d.ts +61 -5
- package/dist/api/parameters/index.d.ts.map +1 -1
- package/dist/api/users/index.d.ts +330 -93
- package/dist/api/users/index.d.ts.map +1 -1
- package/dist/api/users/index.js +27 -36
- package/dist/api/users/index.js.map +1 -1
- package/dist/cli/config/index.d.ts +46 -0
- package/dist/cli/config/index.d.ts.map +1 -0
- package/dist/cli/config/index.js +20 -0
- package/dist/cli/config/index.js.map +1 -0
- package/dist/cli/core/index.d.ts +69 -66
- package/dist/cli/core/index.d.ts.map +1 -1
- package/dist/cli/core/index.js +329 -196
- package/dist/cli/core/index.js.map +1 -1
- package/dist/cli/platform/index.d.ts +302 -63
- package/dist/cli/platform/index.d.ts.map +1 -1
- package/dist/cli/platform/index.js +455 -25
- package/dist/cli/platform/index.js.map +1 -1
- package/dist/core/index.browser.js +125 -87
- package/dist/core/index.browser.js.map +1 -1
- package/dist/core/index.d.ts +62 -53
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +125 -87
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.native.js +125 -87
- package/dist/core/index.native.js.map +1 -1
- package/dist/core/index.workerd.js +125 -87
- package/dist/core/index.workerd.js.map +1 -1
- package/dist/crypto/index.d.ts +18 -1
- package/dist/crypto/index.d.ts.map +1 -1
- package/dist/crypto/index.js +29 -3
- package/dist/crypto/index.js.map +1 -1
- package/dist/devtools/index.js +3 -12
- package/dist/devtools/index.js.map +1 -1
- package/dist/logger/index.d.ts +10 -1
- package/dist/logger/index.d.ts.map +1 -1
- package/dist/logger/index.js +19 -9
- package/dist/logger/index.js.map +1 -1
- package/dist/orm/core/index.browser.js +57 -1
- package/dist/orm/core/index.browser.js.map +1 -1
- package/dist/orm/core/index.bun.js +378 -19
- package/dist/orm/core/index.bun.js.map +1 -1
- package/dist/orm/core/index.d.ts +328 -9
- package/dist/orm/core/index.d.ts.map +1 -1
- package/dist/orm/core/index.js +384 -21
- package/dist/orm/core/index.js.map +1 -1
- package/dist/orm/postgres/index.bun.js +49 -17
- package/dist/orm/postgres/index.bun.js.map +1 -1
- package/dist/orm/postgres/index.d.ts +47 -21
- package/dist/orm/postgres/index.d.ts.map +1 -1
- package/dist/orm/postgres/index.js +52 -17
- package/dist/orm/postgres/index.js.map +1 -1
- package/dist/react/core/index.d.ts +1 -1
- package/dist/react/core/index.d.ts.map +1 -1
- package/dist/react/core/index.js +6 -1
- package/dist/react/core/index.js.map +1 -1
- package/dist/react/form/index.d.ts +28 -18
- package/dist/react/form/index.d.ts.map +1 -1
- package/dist/react/form/index.js +92 -56
- package/dist/react/form/index.js.map +1 -1
- package/dist/react/router/index.browser.js +448 -116
- package/dist/react/router/index.browser.js.map +1 -1
- package/dist/react/router/index.d.ts +102 -40
- package/dist/react/router/index.d.ts.map +1 -1
- package/dist/react/router/index.js +453 -92
- package/dist/react/router/index.js.map +1 -1
- package/dist/security/index.d.ts +3 -11
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/index.js +6 -11
- package/dist/security/index.js.map +1 -1
- package/dist/server/auth/index.d.ts +22 -24
- package/dist/server/auth/index.d.ts.map +1 -1
- package/dist/server/auth/index.js +102 -82
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/cookies/index.d.ts +7 -4
- package/dist/server/cookies/index.d.ts.map +1 -1
- package/dist/server/cookies/index.js +13 -12
- package/dist/server/cookies/index.js.map +1 -1
- package/dist/server/core/index.d.ts +288 -4
- package/dist/server/core/index.d.ts.map +1 -1
- package/dist/server/core/index.js +375 -2
- package/dist/server/core/index.js.map +1 -1
- package/dist/server/links/index.browser.js +10 -71
- package/dist/server/links/index.browser.js.map +1 -1
- package/dist/server/links/index.d.ts +32 -49
- package/dist/server/links/index.d.ts.map +1 -1
- package/dist/server/links/index.js +73 -100
- package/dist/server/links/index.js.map +1 -1
- package/dist/system/index.browser.js +221 -2
- package/dist/system/index.browser.js.map +1 -1
- package/dist/system/index.d.ts +63 -1
- package/dist/system/index.d.ts.map +1 -1
- package/dist/system/index.js +221 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.workerd.js +224 -4
- package/dist/system/index.workerd.js.map +1 -1
- package/package.json +10 -5
- package/src/api/jobs/providers/JobProvider.ts +6 -3
- package/src/api/notifications/controllers/AdminNotificationController.ts +83 -0
- package/src/api/notifications/index.browser.ts +3 -0
- package/src/api/notifications/index.ts +14 -2
- package/src/api/notifications/jobs/NotificationJobs.ts +11 -2
- package/src/api/notifications/schemas/notificationDetailResourceSchema.ts +20 -0
- package/src/api/notifications/schemas/notificationQuerySchema.ts +19 -0
- package/src/api/notifications/schemas/notificationResourceSchema.ts +18 -0
- package/src/api/notifications/services/NotificationSenderService.ts +15 -2
- package/src/api/users/atoms/realmAuthSettingsAtom.ts +28 -32
- package/src/api/users/buckets/UserBuckets.ts +1 -1
- package/src/api/users/jobs/UserJobs.ts +1 -1
- package/src/api/users/primitives/$realm.ts +8 -49
- package/src/api/users/providers/RealmProvider.ts +2 -3
- package/src/api/users/services/RegistrationService.spec.ts +7 -7
- package/src/api/users/services/RegistrationService.ts +3 -3
- package/src/api/users/services/SessionService.spec.ts +4 -4
- package/src/api/users/services/SessionService.ts +3 -3
- package/src/cli/{core → config}/defineConfig.ts +14 -20
- package/src/cli/config/index.ts +1 -0
- package/src/cli/core/commands/db.ts +65 -1
- package/src/cli/core/commands/dev.ts +1 -0
- package/src/cli/core/commands/init.ts +2 -192
- package/src/cli/core/index.ts +34 -11
- package/src/cli/core/providers/ViteDevServerProvider.ts +52 -13
- package/src/cli/core/services/PackageManagerUtils.ts +43 -21
- package/src/cli/core/services/ProjectScaffolder.ts +214 -2
- package/src/cli/core/services/ViteUtils.ts +57 -0
- package/src/cli/core/tasks/BuildClientTask.ts +7 -2
- package/src/cli/core/tasks/BuildCloudflareTask.ts +4 -12
- package/src/cli/core/tasks/BuildServerTask.ts +2 -0
- package/src/cli/core/tasks/BuildVercelTask.ts +165 -168
- package/src/cli/core/templates/alephaConfigTs.ts +1 -1
- package/src/cli/core/templates/apiAppSecurityTs.ts +5 -8
- package/src/cli/core/templates/tsconfigJson.ts +6 -1
- package/src/cli/platform/adapters/CloudflareAdapter.spec.ts +1 -1
- package/src/cli/platform/adapters/CloudflareAdapter.ts +30 -29
- package/src/cli/platform/atoms/platformOptions.ts +21 -0
- package/src/cli/platform/commands/SecretsCommand.spec.ts +298 -0
- package/src/cli/platform/commands/SecretsCommand.ts +283 -0
- package/src/cli/platform/commands/platform.ts +12 -0
- package/src/cli/platform/index.ts +14 -28
- package/src/cli/platform/providers/GitHubSecretStore.spec.ts +153 -0
- package/src/cli/platform/providers/GitHubSecretStore.ts +112 -0
- package/src/cli/platform/providers/MemorySecretStore.ts +114 -0
- package/src/cli/platform/providers/SecretStoreProvider.ts +39 -0
- package/src/cli/platform/schemas/cloudflare.ts +2 -0
- package/src/cli/platform/services/CloudflareApi.ts +5 -2
- package/src/cli/platform/services/DockerComposeGenerator.spec.ts +115 -0
- package/src/cli/platform/services/DockerComposeGenerator.ts +46 -1
- package/src/cli/platform/services/SecretFilterService.spec.ts +111 -0
- package/src/cli/platform/services/SecretFilterService.ts +54 -0
- package/src/core/Alepha.ts +94 -25
- package/src/core/__tests__/Alepha-parseEnv.spec.ts +20 -0
- package/src/core/primitives/$memoize.ts +38 -26
- package/src/core/providers/AlsProvider.ts +2 -0
- package/src/core/providers/EventManager.ts +4 -0
- package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +1 -4
- package/src/core/providers/KeylessJsonSchemaCodec.ts +19 -125
- package/src/core/providers/SchemaValidator.spec.ts +36 -0
- package/src/core/providers/SchemaValidator.ts +9 -0
- package/src/crypto/index.ts +6 -1
- package/src/crypto/providers/SecretProvider.ts +36 -0
- package/src/devtools/providers/DevToolsProvider.ts +3 -12
- package/src/logger/index.ts +33 -6
- package/src/logger/providers/PrettyFormatterProvider.ts +5 -3
- package/src/orm/__tests__/orm-next-tests.ts +492 -0
- package/src/orm/__tests__/orm-next.spec.ts +140 -0
- package/src/orm/core/constants/PG_SYMBOLS.ts +17 -0
- package/src/orm/core/index.bun.ts +3 -6
- package/src/orm/core/index.shared-server.ts +2 -0
- package/src/orm/core/index.shared.ts +2 -0
- package/src/orm/core/index.ts +5 -7
- package/src/orm/core/interfaces/AggregateQuery.ts +103 -0
- package/src/orm/core/interfaces/PgQueryWhere.ts +7 -0
- package/src/orm/core/primitives/$entity.ts +8 -0
- package/src/orm/core/primitives/$repository.ts +6 -3
- package/src/orm/core/primitives/$view.ts +88 -0
- package/src/orm/core/providers/DbCacheProvider.ts +66 -0
- package/src/orm/core/providers/DrizzleKitProvider.ts +42 -0
- package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -3
- package/src/orm/core/providers/drivers/CloudflareD1Provider.ts +12 -0
- package/src/orm/core/providers/drivers/DatabaseProvider.ts +39 -0
- package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +2 -3
- package/src/orm/core/schemas/databaseEnvSchema.ts +31 -0
- package/src/orm/core/schemas/insertSchema.ts +13 -3
- package/src/orm/core/schemas/updateSchema.ts +14 -3
- package/src/orm/core/services/ModelBuilder.ts +26 -14
- package/src/orm/core/services/QueryManager.ts +13 -0
- package/src/orm/core/services/Repository.ts +307 -5
- package/src/orm/core/services/SqliteModelBuilder.ts +38 -0
- package/src/orm/postgres/index.bun.ts +4 -7
- package/src/orm/postgres/index.ts +4 -7
- package/src/orm/postgres/providers/BunPostgresProvider.ts +12 -2
- package/src/orm/postgres/providers/NodePostgresProvider.ts +7 -0
- package/src/orm/postgres/providers/PglitePostgresProvider.ts +10 -17
- package/src/orm/postgres/providers/PostgresProvider.ts +7 -36
- package/src/orm/postgres/schemas/postgresEnvSchema.ts +32 -0
- package/src/orm/postgres/services/PostgresModelBuilder.ts +40 -0
- package/src/react/core/components/ErrorBoundary.tsx +5 -2
- package/src/react/form/hooks/useFieldValue.ts +34 -0
- package/src/react/form/hooks/useForm.browser.spec.tsx +94 -9
- package/src/react/form/hooks/useForm.ts +14 -2
- package/src/react/form/hooks/useFormState.ts +10 -10
- package/src/react/form/hooks/useFormValues.ts +29 -0
- package/src/react/form/index.ts +3 -1
- package/src/react/form/services/FormModel.ts +53 -122
- package/src/react/router/components/ErrorViewer.tsx +333 -34
- package/src/react/router/components/NestedView.tsx +10 -3
- package/src/react/router/primitives/$page.browser.spec.tsx +34 -0
- package/src/react/router/primitives/$page.spec.tsx +20 -0
- package/src/react/router/primitives/$page.ts +24 -0
- package/src/react/router/providers/ReactBrowserRouterProvider.ts +14 -2
- package/src/react/router/providers/ReactPageProvider.ts +156 -73
- package/src/react/router/providers/ReactServerProvider.ts +40 -2
- package/src/react/router/providers/ReactServerTemplateProvider.ts +13 -1
- package/src/security/providers/SecurityProvider.ts +5 -27
- package/src/server/auth/primitives/$auth.ts +52 -19
- package/src/server/auth/providers/ServerAuthProvider.ts +145 -139
- package/src/server/cookies/providers/ServerCookiesProvider.ts +12 -24
- package/src/server/core/index.ts +3 -1
- package/src/server/core/primitives/$sse.spec.ts +315 -0
- package/src/server/core/primitives/$sse.ts +715 -0
- package/src/server/links/index.browser.ts +1 -3
- package/src/server/links/index.ts +0 -3
- package/src/server/links/providers/LinkProvider.spec.ts +12 -21
- package/src/server/links/providers/LinkProvider.ts +20 -52
- package/src/server/links/providers/ServerLinksProvider.spec.ts +106 -0
- package/src/server/links/providers/ServerLinksProvider.ts +113 -73
- package/src/server/links/schemas/apiLinksResponseSchema.ts +4 -21
- package/src/server/links/services/BatchCollector.ts +5 -3
- package/src/system/index.browser.ts +1 -0
- package/src/system/index.ts +3 -0
- package/src/system/index.workerd.ts +39 -1
- package/src/system/providers/WorkerdFileSystemProvider.ts +365 -0
- package/assets/devtools-ui/asset.BfSBZ5Dd.css.br +0 -0
- package/assets/devtools-ui/chunk.2NYaoqWt.js +0 -1
- package/assets/devtools-ui/chunk.2NYaoqWt.js.br +0 -0
- package/assets/devtools-ui/chunk.B052Z_xQ.js +0 -1
- package/assets/devtools-ui/chunk.B052Z_xQ.js.br +0 -0
- package/assets/devtools-ui/chunk.B4kVY90C.js +0 -1
- package/assets/devtools-ui/chunk.B4kVY90C.js.br +0 -0
- package/assets/devtools-ui/chunk.B7QJXctB.js +0 -1
- package/assets/devtools-ui/chunk.B7QJXctB.js.br +0 -0
- package/assets/devtools-ui/chunk.B9pX3zit.js.br +0 -0
- package/assets/devtools-ui/chunk.BKF9JxIo.js +0 -1
- package/assets/devtools-ui/chunk.BKF9JxIo.js.br +0 -0
- package/assets/devtools-ui/chunk.BOHgdTP-.js +0 -1
- package/assets/devtools-ui/chunk.BOHgdTP-.js.br +0 -0
- package/assets/devtools-ui/chunk.BOVFxkYC.js +0 -1
- package/assets/devtools-ui/chunk.BOVFxkYC.js.br +0 -0
- package/assets/devtools-ui/chunk.BR842zj5.js +0 -1
- package/assets/devtools-ui/chunk.BR842zj5.js.br +0 -0
- package/assets/devtools-ui/chunk.BT2IiBkZ.js.br +0 -0
- package/assets/devtools-ui/chunk.C79YouPp.js.br +0 -0
- package/assets/devtools-ui/chunk.C8mlBrjW.js +0 -9
- package/assets/devtools-ui/chunk.C8mlBrjW.js.br +0 -0
- package/assets/devtools-ui/chunk.CK0ow3AZ.js +0 -1
- package/assets/devtools-ui/chunk.CK0ow3AZ.js.br +0 -0
- package/assets/devtools-ui/chunk.CZl6J9DF.js.br +0 -0
- package/assets/devtools-ui/chunk.CdNr0YzS.js +0 -1
- package/assets/devtools-ui/chunk.CdNr0YzS.js.br +0 -0
- package/assets/devtools-ui/chunk.Ce6_6iIF.js +0 -1
- package/assets/devtools-ui/chunk.Ce6_6iIF.js.br +0 -0
- package/assets/devtools-ui/chunk.CpyDMr6O.js +0 -1
- package/assets/devtools-ui/chunk.CpyDMr6O.js.br +0 -0
- package/assets/devtools-ui/chunk.CyPmvPnY.js +0 -1
- package/assets/devtools-ui/chunk.CyPmvPnY.js.br +0 -0
- package/assets/devtools-ui/chunk.DTI_geWu.js +0 -1
- package/assets/devtools-ui/chunk.DTI_geWu.js.br +0 -0
- package/assets/devtools-ui/chunk.DbEH1oOB.js.br +0 -0
- package/assets/devtools-ui/chunk.Ddeqj5gv.js +0 -1
- package/assets/devtools-ui/chunk.Ddeqj5gv.js.br +0 -0
- package/assets/devtools-ui/chunk.DpRnB4vJ.js +0 -1
- package/assets/devtools-ui/chunk.DpRnB4vJ.js.br +0 -0
- package/assets/devtools-ui/chunk.DxPGTlsg.js +0 -1
- package/assets/devtools-ui/chunk.DxPGTlsg.js.br +0 -0
- package/assets/devtools-ui/chunk.G7_MMBJS.js +0 -1
- package/assets/devtools-ui/chunk.G7_MMBJS.js.br +0 -0
- package/assets/devtools-ui/chunk.M6wyKO_3.js.br +0 -0
- package/assets/devtools-ui/chunk.OUxNGmQ6.js +0 -1
- package/assets/devtools-ui/chunk.OUxNGmQ6.js.br +0 -0
- package/assets/devtools-ui/chunk.T1kle-fF.js +0 -1
- package/assets/devtools-ui/chunk.T1kle-fF.js.br +0 -0
- package/assets/devtools-ui/chunk.WjpsbQAv.js +0 -1
- package/assets/devtools-ui/chunk.WjpsbQAv.js.br +0 -0
- package/assets/devtools-ui/chunk.c6YgVx86.js +0 -1
- package/assets/devtools-ui/chunk.c6YgVx86.js.br +0 -0
- package/assets/devtools-ui/chunk.dwU3E_MU.js +0 -1
- package/assets/devtools-ui/chunk.dwU3E_MU.js.br +0 -0
- package/assets/devtools-ui/chunk.lJL-lgnW.js.br +0 -0
- package/assets/devtools-ui/chunk.lPWRmvA-.js +0 -7
- package/assets/devtools-ui/chunk.lPWRmvA-.js.br +0 -0
- package/assets/devtools-ui/chunk.p3HJvugM.js +0 -1
- package/assets/devtools-ui/chunk.p3HJvugM.js.br +0 -0
- package/assets/devtools-ui/chunk.r_Xoa_CI.js +0 -1
- package/assets/devtools-ui/chunk.r_Xoa_CI.js.br +0 -0
- package/assets/devtools-ui/chunk.sRNuTYXb.js +0 -1
- package/assets/devtools-ui/chunk.sRNuTYXb.js.br +0 -0
- package/assets/devtools-ui/chunk.tUjcyX5C.js +0 -1
- package/assets/devtools-ui/chunk.tUjcyX5C.js.br +0 -0
- package/assets/devtools-ui/chunk.thjBxvCA.js +0 -1
- package/assets/devtools-ui/chunk.thjBxvCA.js.br +0 -0
- package/assets/devtools-ui/entry.GYhBVRpC.js +0 -78
- package/assets/devtools-ui/entry.GYhBVRpC.js.br +0 -0
- package/src/server/links/services/DefinitionsPool.spec.ts +0 -86
- package/src/server/links/services/DefinitionsPool.ts +0 -43
|
@@ -78,39 +78,61 @@ export class PackageManagerUtils {
|
|
|
78
78
|
/**
|
|
79
79
|
* Detect workspace context when inside a monorepo package.
|
|
80
80
|
*
|
|
81
|
-
* Checks if we're inside a workspace package
|
|
82
|
-
*
|
|
81
|
+
* Checks if we're inside a workspace package by walking up to 3 levels
|
|
82
|
+
* for workspace indicators like lockfiles and config files.
|
|
83
|
+
* This covers both standard layouts (packages/my-pkg) and deeper nesting
|
|
84
|
+
* (packages/scope/my-pkg).
|
|
83
85
|
*
|
|
84
86
|
* @param root - The current package directory
|
|
85
87
|
* @returns Workspace context with root path, PM, and config presence
|
|
86
88
|
*/
|
|
87
89
|
public async getWorkspaceContext(root: string): Promise<WorkspaceContext> {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
const noContext: WorkspaceContext = {
|
|
91
|
+
isPackage: false,
|
|
92
|
+
workspaceRoot: null,
|
|
93
|
+
packageManager: null,
|
|
94
|
+
config: { biomeJson: false, editorconfig: false, tsconfigJson: false },
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
// Walk up 2–3 levels (covers packages/pkg and packages/scope/pkg)
|
|
98
|
+
for (let depth = 2; depth <= 3; depth++) {
|
|
99
|
+
const segments = Array.from({ length: depth }, () => "..");
|
|
100
|
+
const candidate = this.fs.join(root, ...segments);
|
|
101
|
+
|
|
102
|
+
// Don't check above filesystem root
|
|
103
|
+
if (candidate === root) break;
|
|
104
|
+
|
|
105
|
+
const result = await this.checkWorkspaceRoot(candidate);
|
|
106
|
+
if (result) return result;
|
|
107
|
+
}
|
|
90
108
|
|
|
91
|
-
|
|
109
|
+
return noContext;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
protected async checkWorkspaceRoot(
|
|
113
|
+
candidate: string,
|
|
114
|
+
): Promise<WorkspaceContext | null> {
|
|
92
115
|
const [hasYarnLock, hasPnpmLock, hasNpmLock, hasBunLock] =
|
|
93
116
|
await Promise.all([
|
|
94
|
-
this.fs.exists(this.fs.join(
|
|
95
|
-
this.fs.exists(this.fs.join(
|
|
96
|
-
this.fs.exists(this.fs.join(
|
|
97
|
-
this.fs.exists(this.fs.join(
|
|
117
|
+
this.fs.exists(this.fs.join(candidate, "yarn.lock")),
|
|
118
|
+
this.fs.exists(this.fs.join(candidate, "pnpm-lock.yaml")),
|
|
119
|
+
this.fs.exists(this.fs.join(candidate, "package-lock.json")),
|
|
120
|
+
this.fs.exists(this.fs.join(candidate, "bun.lock")),
|
|
98
121
|
]);
|
|
99
122
|
|
|
100
|
-
|
|
101
|
-
|
|
123
|
+
const hasLockfile = hasYarnLock || hasPnpmLock || hasNpmLock || hasBunLock;
|
|
124
|
+
if (!hasLockfile) return null;
|
|
125
|
+
|
|
126
|
+
const [hasBiome, hasEditorConfig, hasTsConfig, hasPackageJson] =
|
|
102
127
|
await Promise.all([
|
|
103
|
-
this.fs.exists(this.fs.join(
|
|
104
|
-
this.fs.exists(this.fs.join(
|
|
105
|
-
this.fs.exists(this.fs.join(
|
|
106
|
-
this.fs.exists(this.fs.join(
|
|
128
|
+
this.fs.exists(this.fs.join(candidate, "biome.json")),
|
|
129
|
+
this.fs.exists(this.fs.join(candidate, ".editorconfig")),
|
|
130
|
+
this.fs.exists(this.fs.join(candidate, "tsconfig.json")),
|
|
131
|
+
this.fs.exists(this.fs.join(candidate, "package.json")),
|
|
107
132
|
]);
|
|
108
133
|
|
|
109
|
-
|
|
110
|
-
const hasLockfile = hasYarnLock || hasPnpmLock || hasNpmLock || hasBunLock;
|
|
111
|
-
const isPackage = hasLockfile && hasWorkspacePackageJson;
|
|
134
|
+
if (!hasPackageJson) return null;
|
|
112
135
|
|
|
113
|
-
// Detect package manager from lockfile
|
|
114
136
|
let packageManager: "yarn" | "pnpm" | "npm" | "bun" | null = null;
|
|
115
137
|
if (hasYarnLock) packageManager = "yarn";
|
|
116
138
|
else if (hasPnpmLock) packageManager = "pnpm";
|
|
@@ -118,8 +140,8 @@ export class PackageManagerUtils {
|
|
|
118
140
|
else if (hasNpmLock) packageManager = "npm";
|
|
119
141
|
|
|
120
142
|
return {
|
|
121
|
-
isPackage,
|
|
122
|
-
workspaceRoot:
|
|
143
|
+
isPackage: true,
|
|
144
|
+
workspaceRoot: candidate,
|
|
123
145
|
packageManager,
|
|
124
146
|
config: {
|
|
125
147
|
biomeJson: hasBiome,
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { basename, dirname } from "node:path";
|
|
3
|
-
import { $inject } from "alepha";
|
|
4
|
-
import {
|
|
3
|
+
import { $inject, AlephaError } from "alepha";
|
|
4
|
+
import type { RunnerMethod } from "alepha/command";
|
|
5
|
+
import { $logger, ConsoleColorProvider } from "alepha/logger";
|
|
5
6
|
import { FileSystemProvider } from "alepha/system";
|
|
6
7
|
import { cliAssets } from "../assets.ts";
|
|
7
8
|
import { type AgentMdType, agentMd } from "../templates/agentMd.ts";
|
|
@@ -39,6 +40,7 @@ import {
|
|
|
39
40
|
*/
|
|
40
41
|
export class ProjectScaffolder {
|
|
41
42
|
protected readonly log = $logger();
|
|
43
|
+
protected readonly colors = $inject(ConsoleColorProvider);
|
|
42
44
|
protected readonly fs = $inject(FileSystemProvider);
|
|
43
45
|
protected readonly pm = $inject(PackageManagerUtils);
|
|
44
46
|
protected readonly utils = $inject(AlephaCliUtils);
|
|
@@ -385,6 +387,216 @@ export class ProjectScaffolder {
|
|
|
385
387
|
}
|
|
386
388
|
}
|
|
387
389
|
|
|
390
|
+
// ===========================================
|
|
391
|
+
// Full Init Orchestration
|
|
392
|
+
// ===========================================
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Full project init — scaffolds files, installs deps, sets up PM and git.
|
|
396
|
+
*/
|
|
397
|
+
async init({
|
|
398
|
+
run,
|
|
399
|
+
root,
|
|
400
|
+
flags,
|
|
401
|
+
args,
|
|
402
|
+
}: {
|
|
403
|
+
run: RunnerMethod;
|
|
404
|
+
root: string;
|
|
405
|
+
flags: {
|
|
406
|
+
pm?: "yarn" | "npm" | "pnpm" | "bun";
|
|
407
|
+
api?: boolean;
|
|
408
|
+
react?: boolean;
|
|
409
|
+
ui?: boolean;
|
|
410
|
+
auth?: boolean;
|
|
411
|
+
admin?: boolean;
|
|
412
|
+
tailwind?: boolean;
|
|
413
|
+
test?: boolean;
|
|
414
|
+
force?: boolean;
|
|
415
|
+
};
|
|
416
|
+
args?: string;
|
|
417
|
+
}) {
|
|
418
|
+
if (args) {
|
|
419
|
+
root = this.fs.join(root, args);
|
|
420
|
+
await this.fs.mkdir(root, { force: true });
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
// Flag cascading: --admin → --auth → --ui → --react, --api
|
|
424
|
+
if (flags.admin) {
|
|
425
|
+
flags.auth = true;
|
|
426
|
+
}
|
|
427
|
+
if (flags.auth) {
|
|
428
|
+
flags.api = true;
|
|
429
|
+
flags.ui = true;
|
|
430
|
+
}
|
|
431
|
+
if (flags.ui) {
|
|
432
|
+
flags.react = true;
|
|
433
|
+
}
|
|
434
|
+
if (flags.tailwind) {
|
|
435
|
+
flags.react = true;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
// When codegen flags are set, target directory must be empty (unless --force)
|
|
439
|
+
const hasCodegenFlags =
|
|
440
|
+
flags.admin ||
|
|
441
|
+
flags.auth ||
|
|
442
|
+
flags.api ||
|
|
443
|
+
flags.ui ||
|
|
444
|
+
flags.react ||
|
|
445
|
+
flags.tailwind;
|
|
446
|
+
if (hasCodegenFlags && !flags.force) {
|
|
447
|
+
const files = await this.fs.ls(root);
|
|
448
|
+
// Allow a directory that only has package.json (common for monorepo packages)
|
|
449
|
+
const meaningful = files.filter((f) => f !== "package.json");
|
|
450
|
+
if (meaningful.length > 0) {
|
|
451
|
+
throw new AlephaError(
|
|
452
|
+
`Target directory is not empty (${root}). Use --force to overwrite existing files.`,
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Detect workspace context (are we inside packages/ or apps/ of a monorepo?)
|
|
458
|
+
const workspace = await this.pm.getWorkspaceContext(root);
|
|
459
|
+
|
|
460
|
+
// Detect agent type: claude CLI → CLAUDE.md, else → AGENTS.md
|
|
461
|
+
let agentType: "claude" | "agents" | false = false;
|
|
462
|
+
if (!workspace.isPackage) {
|
|
463
|
+
const hasClaudeCli = await this.utils.isInstalledAsync("claude");
|
|
464
|
+
agentType = hasClaudeCli ? "claude" : "agents";
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
const isExpo = await this.pm.hasExpo(root);
|
|
468
|
+
|
|
469
|
+
// Get git email for admin auto-promotion (if auth enabled)
|
|
470
|
+
const adminEmail = flags.auth ? await this.utils.getGitEmail() : undefined;
|
|
471
|
+
|
|
472
|
+
const force = !!flags.force;
|
|
473
|
+
|
|
474
|
+
await run({
|
|
475
|
+
name: "ensuring configuration files",
|
|
476
|
+
handler: async () => {
|
|
477
|
+
await this.ensureConfig(root, {
|
|
478
|
+
force,
|
|
479
|
+
packageJson: { ...flags, isPackage: workspace.isPackage },
|
|
480
|
+
// Skip workspace-level configs if they exist at workspace root
|
|
481
|
+
tsconfigJson: !workspace.config.tsconfigJson,
|
|
482
|
+
biomeJson: !workspace.config.biomeJson,
|
|
483
|
+
editorconfig: !workspace.config.editorconfig,
|
|
484
|
+
agentMd: agentType ? { type: agentType } : false,
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
// Create alepha.config.ts with documented options
|
|
488
|
+
await this.ensureAlephaConfig(root, { force });
|
|
489
|
+
|
|
490
|
+
// Create project structure based on flags
|
|
491
|
+
await this.ensureMainServerTs(root, {
|
|
492
|
+
api: !!flags.api,
|
|
493
|
+
react: !!flags.react && !isExpo,
|
|
494
|
+
force,
|
|
495
|
+
});
|
|
496
|
+
if (flags.api) {
|
|
497
|
+
await this.ensureApiProject(root, {
|
|
498
|
+
auth: !!flags.auth,
|
|
499
|
+
adminEmail,
|
|
500
|
+
force,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
if (flags.react && !isExpo) {
|
|
504
|
+
await this.ensureWebProject(root, {
|
|
505
|
+
api: !!flags.api,
|
|
506
|
+
ui: !!flags.ui,
|
|
507
|
+
auth: !!flags.auth,
|
|
508
|
+
admin: !!flags.admin,
|
|
509
|
+
tailwind: !!flags.tailwind,
|
|
510
|
+
force,
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
},
|
|
514
|
+
});
|
|
515
|
+
|
|
516
|
+
// Use workspace PM if detected, otherwise detect from current root
|
|
517
|
+
const pmName = await this.pm.getPackageManager(
|
|
518
|
+
workspace.workspaceRoot ?? root,
|
|
519
|
+
flags.pm ?? workspace.packageManager ?? undefined,
|
|
520
|
+
);
|
|
521
|
+
|
|
522
|
+
// Only setup PM files if not in a workspace package
|
|
523
|
+
if (!workspace.isPackage) {
|
|
524
|
+
if (pmName === "yarn") {
|
|
525
|
+
await this.pm.ensureYarn(root);
|
|
526
|
+
await run("yarn set version stable", { root });
|
|
527
|
+
} else if (pmName === "bun") {
|
|
528
|
+
await this.pm.ensureBun(root);
|
|
529
|
+
} else if (pmName === "pnpm") {
|
|
530
|
+
await this.pm.ensurePnpm(root);
|
|
531
|
+
} else {
|
|
532
|
+
await this.pm.ensureNpm(root);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// Run install from workspace root if in a package, otherwise from current root
|
|
537
|
+
const installRoot = workspace.workspaceRoot ?? root;
|
|
538
|
+
await run(`${pmName} install`, {
|
|
539
|
+
alias: `installing dependencies with ${pmName}`,
|
|
540
|
+
root: installRoot,
|
|
541
|
+
});
|
|
542
|
+
|
|
543
|
+
// Create test directory if --test flag is set (vitest is in package.json)
|
|
544
|
+
if (flags.test) {
|
|
545
|
+
await this.ensureTestDir(root);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
await run(`${pmName} run lint`, {
|
|
549
|
+
alias: "running linter",
|
|
550
|
+
root: installRoot,
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
// Initialize git repository if not in a workspace package
|
|
554
|
+
if (!workspace.isPackage) {
|
|
555
|
+
const gitInitialized = await this.ensureGitRepo(root, {
|
|
556
|
+
force,
|
|
557
|
+
});
|
|
558
|
+
if (gitInitialized) {
|
|
559
|
+
await run("git add .", {
|
|
560
|
+
alias: "staging generated files",
|
|
561
|
+
root,
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
// Don't show success message if no path arg, e.g. just "alepha init" to re-configure current dir
|
|
567
|
+
if (!args) {
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
// We must end the run context in order to log success message
|
|
572
|
+
run.end();
|
|
573
|
+
|
|
574
|
+
// Success message
|
|
575
|
+
const projectName = args || ".";
|
|
576
|
+
const pmRun = pmName === "npm" ? "npm run" : pmName;
|
|
577
|
+
const c = this.colors;
|
|
578
|
+
|
|
579
|
+
this.log.info("");
|
|
580
|
+
this.log.info(` ${c.set("GREEN", "✓")} Project ready!`);
|
|
581
|
+
this.log.info("");
|
|
582
|
+
this.log.info(
|
|
583
|
+
` ${c.set("GREY_DARK", "$")} cd ${c.set("CYAN", projectName)}`,
|
|
584
|
+
);
|
|
585
|
+
this.log.info(
|
|
586
|
+
` ${c.set("GREY_DARK", "$")} ${c.set("CYAN", `${pmRun} dev`)}`,
|
|
587
|
+
);
|
|
588
|
+
|
|
589
|
+
if (adminEmail) {
|
|
590
|
+
this.log.info("");
|
|
591
|
+
this.log.info(` Admin email: ${c.set("GREEN", adminEmail)}`);
|
|
592
|
+
this.log.info(
|
|
593
|
+
` ${c.set("GREY_DARK", "(from git config, change in src/api/AppSecurity.ts)")}`,
|
|
594
|
+
);
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
this.log.info("");
|
|
598
|
+
}
|
|
599
|
+
|
|
388
600
|
// ===========================================
|
|
389
601
|
// Helpers
|
|
390
602
|
// ===========================================
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
3
4
|
import { createRequire } from "node:module";
|
|
4
5
|
import { dirname, join, relative, resolve } from "node:path";
|
|
5
6
|
import { $hook, $inject, type Alepha, AlephaError } from "alepha";
|
|
@@ -171,6 +172,60 @@ export class ViteUtils {
|
|
|
171
172
|
return logger;
|
|
172
173
|
}
|
|
173
174
|
|
|
175
|
+
// ---------------------------------------------------------------------------------------------------------------
|
|
176
|
+
// TSConfig paths plugin
|
|
177
|
+
// ---------------------------------------------------------------------------------------------------------------
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Vite plugin that reads tsconfig.json `compilerOptions.paths` and converts
|
|
181
|
+
* them to Vite `resolve.alias` entries. Enables `@/*` → `src/*` style imports
|
|
182
|
+
* with zero config beyond tsconfig.json.
|
|
183
|
+
*/
|
|
184
|
+
public createTsconfigPathsPlugin(): Plugin {
|
|
185
|
+
return {
|
|
186
|
+
name: "alepha-tsconfig-paths",
|
|
187
|
+
async config(config) {
|
|
188
|
+
const root = config.root || process.cwd();
|
|
189
|
+
const tsconfigPath = join(root, "tsconfig.json");
|
|
190
|
+
|
|
191
|
+
let content: string;
|
|
192
|
+
try {
|
|
193
|
+
content = await readFile(tsconfigPath, "utf-8");
|
|
194
|
+
} catch {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Strip JSONC comments before parsing
|
|
199
|
+
const clean = content
|
|
200
|
+
.replace(/\/\/.*$/gm, "")
|
|
201
|
+
.replace(/\/\*[\s\S]*?\*\//g, "");
|
|
202
|
+
|
|
203
|
+
let tsconfig: any;
|
|
204
|
+
try {
|
|
205
|
+
tsconfig = JSON.parse(clean);
|
|
206
|
+
} catch {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const paths = tsconfig?.compilerOptions?.paths;
|
|
211
|
+
if (!paths || typeof paths !== "object") return;
|
|
212
|
+
|
|
213
|
+
const alias: Record<string, string> = {};
|
|
214
|
+
for (const [pattern, targets] of Object.entries(paths)) {
|
|
215
|
+
if (!Array.isArray(targets) || targets.length === 0) continue;
|
|
216
|
+
const target = targets[0] as string;
|
|
217
|
+
const aliasKey = pattern.replace(/\*$/, "");
|
|
218
|
+
const aliasPath = target.replace(/\*$/, "").replace(/^\.\//, "");
|
|
219
|
+
const resolved = resolve(root, aliasPath);
|
|
220
|
+
alias[aliasKey] = aliasKey.endsWith("/") ? `${resolved}/` : resolved;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (Object.keys(alias).length === 0) return;
|
|
224
|
+
return { resolve: { alias } };
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
174
229
|
// ---------------------------------------------------------------------------------------------------------------
|
|
175
230
|
// SSR preload plugin
|
|
176
231
|
// ---------------------------------------------------------------------------------------------------------------
|
|
@@ -355,6 +410,7 @@ ${style ? `<link rel="stylesheet" href="/${style}" />` : ""}
|
|
|
355
410
|
process.env.NODE_ENV = opts.mode;
|
|
356
411
|
process.env.ALEPHA_CLI_IMPORT = "true"; // signal Alepha App about CLI import, run(alepha) won't start server
|
|
357
412
|
process.env.LOG_LEVEL ??= "warn"; // reduce log noise
|
|
413
|
+
process.env.APP_SECRET ??= "123456"; // avoid warning about missing secret, not used in CLI context
|
|
358
414
|
|
|
359
415
|
/**
|
|
360
416
|
* 01/26 Vite 7
|
|
@@ -366,6 +422,7 @@ ${style ? `<link rel="stylesheet" href="/${style}" />` : ""}
|
|
|
366
422
|
server: { middlewareMode: true },
|
|
367
423
|
appType: "custom",
|
|
368
424
|
logLevel: "silent",
|
|
425
|
+
plugins: [this.createTsconfigPathsPlugin()],
|
|
369
426
|
} satisfies InlineConfig);
|
|
370
427
|
|
|
371
428
|
await this.viteDevServer.ssrLoadModule(opts.entry.server);
|
|
@@ -31,7 +31,10 @@ export class BuildClientTask extends BuildTask {
|
|
|
31
31
|
// Write index.html template for Vite to consume
|
|
32
32
|
const template = this.viteUtils.generateIndexHtml(ctx.entry);
|
|
33
33
|
await this.fs.mkdir(this.fs.join(ctx.root, "node_modules/.alepha"));
|
|
34
|
-
const indexHtmlPath = this.fs.join(
|
|
34
|
+
const indexHtmlPath = this.fs.join(
|
|
35
|
+
ctx.root,
|
|
36
|
+
"node_modules/.alepha/index.html",
|
|
37
|
+
);
|
|
35
38
|
await this.fs.writeFile(indexHtmlPath, template);
|
|
36
39
|
|
|
37
40
|
try {
|
|
@@ -61,6 +64,7 @@ export class BuildClientTask extends BuildTask {
|
|
|
61
64
|
const viteReact = await this.viteUtils.importViteReact();
|
|
62
65
|
if (viteReact) plugins.push(viteReact());
|
|
63
66
|
|
|
67
|
+
plugins.push(this.viteUtils.createTsconfigPathsPlugin());
|
|
64
68
|
plugins.push(this.viteUtils.createSsrPreloadPlugin());
|
|
65
69
|
|
|
66
70
|
if (opts.stats) {
|
|
@@ -92,6 +96,7 @@ export class BuildClientTask extends BuildTask {
|
|
|
92
96
|
entryFileNames: "entry.[hash].js",
|
|
93
97
|
chunkFileNames: "chunk.[hash].js",
|
|
94
98
|
assetFileNames: "asset.[hash][extname]",
|
|
99
|
+
experimentalMinChunkSize: 5_000,
|
|
95
100
|
},
|
|
96
101
|
},
|
|
97
102
|
},
|
|
@@ -120,7 +125,7 @@ export class BuildClientTask extends BuildTask {
|
|
|
120
125
|
await this.fs.cp(
|
|
121
126
|
"dist/public/node_modules/.alepha/index.html",
|
|
122
127
|
"dist/public/index.html",
|
|
123
|
-
)
|
|
128
|
+
);
|
|
124
129
|
await this.fs.rm("dist/public/node_modules", { recursive: true });
|
|
125
130
|
}
|
|
126
131
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { basename } from "node:path";
|
|
2
2
|
import { $inject } from "alepha";
|
|
3
3
|
import { KV_DEFAULT_BINDING } from "alepha/cache";
|
|
4
|
-
import { FileSystemProvider } from "alepha/system";
|
|
5
4
|
import { QUEUE_DEFAULT_BINDING } from "alepha/queue";
|
|
6
5
|
import type { CronProvider, WorkerdCronProvider } from "alepha/scheduler";
|
|
6
|
+
import { FileSystemProvider } from "alepha/system";
|
|
7
7
|
import { ViteUtils } from "../services/ViteUtils.ts";
|
|
8
8
|
import { BuildTask, type BuildTaskContext } from "./BuildTask.ts";
|
|
9
9
|
|
|
@@ -102,19 +102,14 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
102
102
|
];
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
protected enhanceCron(
|
|
106
|
-
ctx: BuildTaskContext,
|
|
107
|
-
wrangler: WranglerConfig,
|
|
108
|
-
): void {
|
|
105
|
+
protected enhanceCron(ctx: BuildTaskContext, wrangler: WranglerConfig): void {
|
|
109
106
|
if (ctx.alepha.primitives("scheduler").length === 0) {
|
|
110
107
|
return;
|
|
111
108
|
}
|
|
112
109
|
|
|
113
110
|
let cronProvider: CronProvider | undefined;
|
|
114
111
|
try {
|
|
115
|
-
cronProvider = ctx.alepha.inject(
|
|
116
|
-
"CronProvider",
|
|
117
|
-
) as WorkerdCronProvider;
|
|
112
|
+
cronProvider = ctx.alepha.inject("CronProvider") as WorkerdCronProvider;
|
|
118
113
|
} catch {}
|
|
119
114
|
|
|
120
115
|
const crons = cronProvider?.getCronJobs();
|
|
@@ -144,10 +139,7 @@ export class BuildCloudflareTask extends BuildTask {
|
|
|
144
139
|
return;
|
|
145
140
|
}
|
|
146
141
|
|
|
147
|
-
const [dbName, id] = url
|
|
148
|
-
.replace("d1://", "")
|
|
149
|
-
.replace("d1:", "")
|
|
150
|
-
.split(":");
|
|
142
|
+
const [dbName, id] = url.replace("d1://", "").replace("d1:", "").split(":");
|
|
151
143
|
const binding = BuildCloudflareTask.D1_BINDING;
|
|
152
144
|
wrangler.d1_databases = wrangler.d1_databases || [];
|
|
153
145
|
wrangler.d1_databases.push({
|
|
@@ -81,6 +81,7 @@ export class BuildServerTask extends BuildTask {
|
|
|
81
81
|
plugins.push(viteReact());
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
plugins.push(this.viteUtils.createTsconfigPathsPlugin());
|
|
84
85
|
plugins.push(this.viteUtils.createSsrPreloadPlugin());
|
|
85
86
|
|
|
86
87
|
if (opts.stats) {
|
|
@@ -125,6 +126,7 @@ export class BuildServerTask extends BuildTask {
|
|
|
125
126
|
chunkFileNames: "[hash].js",
|
|
126
127
|
assetFileNames: "[hash][extname]",
|
|
127
128
|
format: "esm",
|
|
129
|
+
experimentalMinChunkSize: 10_000,
|
|
128
130
|
},
|
|
129
131
|
},
|
|
130
132
|
},
|