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
|
@@ -10,6 +10,7 @@ export * from "./providers/FileSystemProvider.ts";
|
|
|
10
10
|
export * from "./providers/MemoryFileSystemProvider.ts";
|
|
11
11
|
export * from "./providers/MemoryShellProvider.ts";
|
|
12
12
|
export * from "./providers/ShellProvider.ts";
|
|
13
|
+
export * from "./providers/WorkerdFileSystemProvider.ts";
|
|
13
14
|
export * from "./services/FileDetector.ts";
|
|
14
15
|
|
|
15
16
|
export const AlephaSystem = $module({
|
package/src/system/index.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { MemoryShellProvider } from "./providers/MemoryShellProvider.ts";
|
|
|
5
5
|
import { NodeFileSystemProvider } from "./providers/NodeFileSystemProvider.ts";
|
|
6
6
|
import { NodeShellProvider } from "./providers/NodeShellProvider.ts";
|
|
7
7
|
import { ShellProvider } from "./providers/ShellProvider.ts";
|
|
8
|
+
import { WorkerdFileSystemProvider } from "./providers/WorkerdFileSystemProvider.ts";
|
|
8
9
|
import { FileDetector } from "./services/FileDetector.ts";
|
|
9
10
|
|
|
10
11
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -16,6 +17,7 @@ export * from "./providers/MemoryShellProvider.ts";
|
|
|
16
17
|
export * from "./providers/NodeFileSystemProvider.ts";
|
|
17
18
|
export * from "./providers/NodeShellProvider.ts";
|
|
18
19
|
export * from "./providers/ShellProvider.ts";
|
|
20
|
+
export * from "./providers/WorkerdFileSystemProvider.ts";
|
|
19
21
|
export * from "./services/FileDetector.ts";
|
|
20
22
|
|
|
21
23
|
// ---------------------------------------------------------------------------------------------------------------------
|
|
@@ -39,6 +41,7 @@ export const AlephaSystem = $module({
|
|
|
39
41
|
FileSystemProvider,
|
|
40
42
|
MemoryFileSystemProvider,
|
|
41
43
|
NodeFileSystemProvider,
|
|
44
|
+
WorkerdFileSystemProvider,
|
|
42
45
|
ShellProvider,
|
|
43
46
|
MemoryShellProvider,
|
|
44
47
|
NodeShellProvider,
|
|
@@ -1 +1,39 @@
|
|
|
1
|
-
|
|
1
|
+
import { $module } from "alepha";
|
|
2
|
+
import { FileSystemProvider } from "./providers/FileSystemProvider.ts";
|
|
3
|
+
import { MemoryFileSystemProvider } from "./providers/MemoryFileSystemProvider.ts";
|
|
4
|
+
import { MemoryShellProvider } from "./providers/MemoryShellProvider.ts";
|
|
5
|
+
import { ShellProvider } from "./providers/ShellProvider.ts";
|
|
6
|
+
import { WorkerdFileSystemProvider } from "./providers/WorkerdFileSystemProvider.ts";
|
|
7
|
+
import { FileDetector } from "./services/FileDetector.ts";
|
|
8
|
+
|
|
9
|
+
export * from "./errors/FileError.ts";
|
|
10
|
+
export * from "./providers/FileSystemProvider.ts";
|
|
11
|
+
export * from "./providers/MemoryFileSystemProvider.ts";
|
|
12
|
+
export * from "./providers/MemoryShellProvider.ts";
|
|
13
|
+
export * from "./providers/ShellProvider.ts";
|
|
14
|
+
export * from "./providers/WorkerdFileSystemProvider.ts";
|
|
15
|
+
export * from "./services/FileDetector.ts";
|
|
16
|
+
|
|
17
|
+
export const AlephaSystem = $module({
|
|
18
|
+
name: "alepha.system",
|
|
19
|
+
services: [
|
|
20
|
+
FileDetector,
|
|
21
|
+
FileSystemProvider,
|
|
22
|
+
MemoryFileSystemProvider,
|
|
23
|
+
WorkerdFileSystemProvider,
|
|
24
|
+
ShellProvider,
|
|
25
|
+
MemoryShellProvider,
|
|
26
|
+
],
|
|
27
|
+
register: (alepha) =>
|
|
28
|
+
alepha
|
|
29
|
+
.with({
|
|
30
|
+
optional: true,
|
|
31
|
+
provide: FileSystemProvider,
|
|
32
|
+
use: WorkerdFileSystemProvider,
|
|
33
|
+
})
|
|
34
|
+
.with({
|
|
35
|
+
optional: true,
|
|
36
|
+
provide: ShellProvider,
|
|
37
|
+
use: MemoryShellProvider,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { $inject, AlephaError, type FileLike, Json } from "alepha";
|
|
2
|
+
import { FileDetector } from "../services/FileDetector.ts";
|
|
3
|
+
import type {
|
|
4
|
+
CpOptions,
|
|
5
|
+
CreateFileOptions,
|
|
6
|
+
FileSystemProvider,
|
|
7
|
+
LsOptions,
|
|
8
|
+
MkdirOptions,
|
|
9
|
+
RmOptions,
|
|
10
|
+
} from "./FileSystemProvider.ts";
|
|
11
|
+
|
|
12
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Web-standard implementation of FileSystemProvider for Cloudflare Workers and other edge runtimes.
|
|
16
|
+
*
|
|
17
|
+
* Uses only Web APIs (ReadableStream, TextEncoder, etc.) — no Node.js-specific APIs.
|
|
18
|
+
* Provides working `createFile` with proper streaming support.
|
|
19
|
+
* Filesystem operations (rm, cp, mv, etc.) are not available in edge runtimes and will throw.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const fs = alepha.inject(WorkerdFileSystemProvider);
|
|
24
|
+
*
|
|
25
|
+
* // Create from text (returns FileLike with web ReadableStream)
|
|
26
|
+
* const file = fs.createFile({ text: "Hello!", name: "greeting.txt" });
|
|
27
|
+
* const stream = file.stream(); // ReadableStream (web standard)
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export class WorkerdFileSystemProvider implements FileSystemProvider {
|
|
31
|
+
protected detector = $inject(FileDetector);
|
|
32
|
+
protected json = $inject(Json);
|
|
33
|
+
|
|
34
|
+
protected encoder = new TextEncoder();
|
|
35
|
+
protected decoder = new TextDecoder();
|
|
36
|
+
|
|
37
|
+
public join(...paths: string[]): string {
|
|
38
|
+
const joined = paths.join("/").replace(/\/+/g, "/");
|
|
39
|
+
const parts = joined.split("/");
|
|
40
|
+
const resolved: string[] = [];
|
|
41
|
+
for (const part of parts) {
|
|
42
|
+
if (part === "..") {
|
|
43
|
+
resolved.pop();
|
|
44
|
+
} else if (part !== ".") {
|
|
45
|
+
resolved.push(part);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return resolved.join("/") || ".";
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public createFile(options: CreateFileOptions): FileLike {
|
|
52
|
+
if ("text" in options) {
|
|
53
|
+
return this.createFileFromText(options.text, {
|
|
54
|
+
type: options.type,
|
|
55
|
+
name: options.name,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if ("arrayBuffer" in options) {
|
|
60
|
+
return this.createFileFromArrayBuffer(options.arrayBuffer, {
|
|
61
|
+
type: options.type,
|
|
62
|
+
name: options.name,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if ("buffer" in options) {
|
|
67
|
+
const ab =
|
|
68
|
+
options.buffer instanceof ArrayBuffer
|
|
69
|
+
? options.buffer
|
|
70
|
+
: options.buffer.buffer.slice(
|
|
71
|
+
options.buffer.byteOffset,
|
|
72
|
+
options.buffer.byteOffset + options.buffer.byteLength,
|
|
73
|
+
);
|
|
74
|
+
return this.createFileFromArrayBuffer(ab as ArrayBuffer, {
|
|
75
|
+
type: options.type,
|
|
76
|
+
name: options.name,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if ("file" in options) {
|
|
81
|
+
return this.createFileFromWebFile(options.file, {
|
|
82
|
+
type: options.type,
|
|
83
|
+
name: options.name,
|
|
84
|
+
size: options.size,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if ("response" in options) {
|
|
89
|
+
return this.createFileFromResponse(options.response, {
|
|
90
|
+
type: options.type,
|
|
91
|
+
name: options.name,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if ("stream" in options) {
|
|
96
|
+
return this.createFileFromStream(options.stream as ReadableStream, {
|
|
97
|
+
type: options.type,
|
|
98
|
+
name: options.name,
|
|
99
|
+
size: options.size,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if ("url" in options) {
|
|
104
|
+
return this.createFileFromUrl(options.url, {
|
|
105
|
+
type: options.type,
|
|
106
|
+
name: options.name,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if ("path" in options) {
|
|
111
|
+
throw new AlephaError(
|
|
112
|
+
"WorkerdFileSystemProvider.createFile: 'path' source is not supported in edge runtimes.",
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
throw new AlephaError(
|
|
117
|
+
"WorkerdFileSystemProvider.createFile: unsupported options.",
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// -------------------------------------------------------------------------------------------------------------------
|
|
122
|
+
|
|
123
|
+
protected createFileFromText(
|
|
124
|
+
text: string,
|
|
125
|
+
options: { type?: string; name?: string } = {},
|
|
126
|
+
): FileLike {
|
|
127
|
+
const encoded = this.encoder.encode(text);
|
|
128
|
+
const name = options.name ?? "file.txt";
|
|
129
|
+
return {
|
|
130
|
+
name,
|
|
131
|
+
type: options.type ?? this.detector.getContentType(name),
|
|
132
|
+
size: encoded.byteLength,
|
|
133
|
+
lastModified: Date.now(),
|
|
134
|
+
stream: () =>
|
|
135
|
+
new ReadableStream({
|
|
136
|
+
start(controller) {
|
|
137
|
+
controller.enqueue(encoded);
|
|
138
|
+
controller.close();
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
arrayBuffer: async () =>
|
|
142
|
+
encoded.buffer.slice(
|
|
143
|
+
encoded.byteOffset,
|
|
144
|
+
encoded.byteOffset + encoded.byteLength,
|
|
145
|
+
) as ArrayBuffer,
|
|
146
|
+
text: async () => text,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
protected createFileFromArrayBuffer(
|
|
151
|
+
source: ArrayBuffer,
|
|
152
|
+
options: { type?: string; name?: string } = {},
|
|
153
|
+
): FileLike {
|
|
154
|
+
const name = options.name ?? "file";
|
|
155
|
+
const bytes = new Uint8Array(source);
|
|
156
|
+
return {
|
|
157
|
+
name,
|
|
158
|
+
type: options.type ?? this.detector.getContentType(name),
|
|
159
|
+
size: source.byteLength,
|
|
160
|
+
lastModified: Date.now(),
|
|
161
|
+
stream: () =>
|
|
162
|
+
new ReadableStream({
|
|
163
|
+
start(controller) {
|
|
164
|
+
controller.enqueue(bytes);
|
|
165
|
+
controller.close();
|
|
166
|
+
},
|
|
167
|
+
}),
|
|
168
|
+
arrayBuffer: async () => source,
|
|
169
|
+
text: async () => this.decoder.decode(source),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
protected createFileFromWebFile(
|
|
174
|
+
source: File,
|
|
175
|
+
options: { type?: string; name?: string; size?: number } = {},
|
|
176
|
+
): FileLike {
|
|
177
|
+
const name = options.name ?? source.name;
|
|
178
|
+
return {
|
|
179
|
+
name,
|
|
180
|
+
type: options.type ?? (source.type || this.detector.getContentType(name)),
|
|
181
|
+
size: options.size ?? source.size ?? 0,
|
|
182
|
+
lastModified: source.lastModified || Date.now(),
|
|
183
|
+
stream: () => source.stream(),
|
|
184
|
+
arrayBuffer: async () => await source.arrayBuffer(),
|
|
185
|
+
text: async () => await source.text(),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
protected createFileFromResponse(
|
|
190
|
+
response: Response,
|
|
191
|
+
options: { type?: string; name?: string } = {},
|
|
192
|
+
): FileLike {
|
|
193
|
+
if (!response.body) {
|
|
194
|
+
throw new AlephaError("Response has no body stream");
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const sizeHeader = response.headers.get("content-length");
|
|
198
|
+
const size = sizeHeader ? parseInt(sizeHeader, 10) : 0;
|
|
199
|
+
|
|
200
|
+
let name = options.name;
|
|
201
|
+
if (!name) {
|
|
202
|
+
const cd = response.headers.get("content-disposition");
|
|
203
|
+
if (cd) {
|
|
204
|
+
const match = cd.match(/filename="?([^"]+)"?/);
|
|
205
|
+
if (match) {
|
|
206
|
+
name = match[1];
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
name ??= "file";
|
|
211
|
+
|
|
212
|
+
const type =
|
|
213
|
+
options.type ?? response.headers.get("content-type") ?? undefined;
|
|
214
|
+
|
|
215
|
+
return {
|
|
216
|
+
name,
|
|
217
|
+
type: type ?? this.detector.getContentType(name),
|
|
218
|
+
size,
|
|
219
|
+
lastModified: Date.now(),
|
|
220
|
+
stream: () => response.body!,
|
|
221
|
+
arrayBuffer: async () => await response.arrayBuffer(),
|
|
222
|
+
text: async () => await response.text(),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
protected createFileFromStream(
|
|
227
|
+
source: ReadableStream,
|
|
228
|
+
options: { type?: string; name?: string; size?: number } = {},
|
|
229
|
+
): FileLike {
|
|
230
|
+
const name = options.name ?? "file";
|
|
231
|
+
let buffer: ArrayBuffer | null = null;
|
|
232
|
+
|
|
233
|
+
const consumeStream = async (): Promise<ArrayBuffer> => {
|
|
234
|
+
if (buffer) return buffer;
|
|
235
|
+
const reader = source.getReader();
|
|
236
|
+
const chunks: Uint8Array[] = [];
|
|
237
|
+
let done = false;
|
|
238
|
+
while (!done) {
|
|
239
|
+
const result = await reader.read();
|
|
240
|
+
done = result.done;
|
|
241
|
+
if (result.value) {
|
|
242
|
+
chunks.push(result.value);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const total = chunks.reduce((sum, c) => sum + c.byteLength, 0);
|
|
246
|
+
const merged = new Uint8Array(total);
|
|
247
|
+
let offset = 0;
|
|
248
|
+
for (const chunk of chunks) {
|
|
249
|
+
merged.set(chunk, offset);
|
|
250
|
+
offset += chunk.byteLength;
|
|
251
|
+
}
|
|
252
|
+
buffer = merged.buffer as ArrayBuffer;
|
|
253
|
+
return buffer;
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
return {
|
|
257
|
+
name,
|
|
258
|
+
type: options.type ?? this.detector.getContentType(name),
|
|
259
|
+
size: options.size ?? 0,
|
|
260
|
+
lastModified: Date.now(),
|
|
261
|
+
stream: () => source,
|
|
262
|
+
arrayBuffer: consumeStream,
|
|
263
|
+
text: async () => this.decoder.decode(await consumeStream()),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
protected createFileFromUrl(
|
|
268
|
+
url: string,
|
|
269
|
+
options: { type?: string; name?: string } = {},
|
|
270
|
+
): FileLike {
|
|
271
|
+
const parsedUrl = new URL(url);
|
|
272
|
+
const name = options.name ?? parsedUrl.pathname.split("/").pop() ?? "file";
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
name,
|
|
276
|
+
type: options.type ?? this.detector.getContentType(name),
|
|
277
|
+
size: 0,
|
|
278
|
+
lastModified: Date.now(),
|
|
279
|
+
stream: () => {
|
|
280
|
+
throw new AlephaError(
|
|
281
|
+
"WorkerdFileSystemProvider: streaming from URL is not supported. Use fetch() and createFile({ response }) instead.",
|
|
282
|
+
);
|
|
283
|
+
},
|
|
284
|
+
arrayBuffer: async () => {
|
|
285
|
+
const res = await fetch(url);
|
|
286
|
+
return await res.arrayBuffer();
|
|
287
|
+
},
|
|
288
|
+
text: async () => {
|
|
289
|
+
const res = await fetch(url);
|
|
290
|
+
return await res.text();
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// -------------------------------------------------------------------------------------------------------------------
|
|
296
|
+
// Filesystem operations — not available in edge runtimes
|
|
297
|
+
// -------------------------------------------------------------------------------------------------------------------
|
|
298
|
+
|
|
299
|
+
public async rm(_path: string, _options?: RmOptions): Promise<void> {
|
|
300
|
+
throw new AlephaError(
|
|
301
|
+
"WorkerdFileSystemProvider: rm() is not available in edge runtimes.",
|
|
302
|
+
);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
public async cp(
|
|
306
|
+
_src: string,
|
|
307
|
+
_dest: string,
|
|
308
|
+
_options?: CpOptions,
|
|
309
|
+
): Promise<void> {
|
|
310
|
+
throw new AlephaError(
|
|
311
|
+
"WorkerdFileSystemProvider: cp() is not available in edge runtimes.",
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
public async mv(_src: string, _dest: string): Promise<void> {
|
|
316
|
+
throw new AlephaError(
|
|
317
|
+
"WorkerdFileSystemProvider: mv() is not available in edge runtimes.",
|
|
318
|
+
);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
public async mkdir(_path: string, _options?: MkdirOptions): Promise<void> {
|
|
322
|
+
throw new AlephaError(
|
|
323
|
+
"WorkerdFileSystemProvider: mkdir() is not available in edge runtimes.",
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
public async ls(_path: string, _options?: LsOptions): Promise<string[]> {
|
|
328
|
+
throw new AlephaError(
|
|
329
|
+
"WorkerdFileSystemProvider: ls() is not available in edge runtimes.",
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
public async exists(_path: string): Promise<boolean> {
|
|
334
|
+
throw new AlephaError(
|
|
335
|
+
"WorkerdFileSystemProvider: exists() is not available in edge runtimes.",
|
|
336
|
+
);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
public async readFile(_path: string): Promise<Buffer> {
|
|
340
|
+
throw new AlephaError(
|
|
341
|
+
"WorkerdFileSystemProvider: readFile() is not available in edge runtimes.",
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
public async writeFile(
|
|
346
|
+
_path: string,
|
|
347
|
+
_data: Uint8Array | Buffer | string | FileLike,
|
|
348
|
+
): Promise<void> {
|
|
349
|
+
throw new AlephaError(
|
|
350
|
+
"WorkerdFileSystemProvider: writeFile() is not available in edge runtimes.",
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
public async readTextFile(_path: string): Promise<string> {
|
|
355
|
+
throw new AlephaError(
|
|
356
|
+
"WorkerdFileSystemProvider: readTextFile() is not available in edge runtimes.",
|
|
357
|
+
);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
public async readJsonFile<T = unknown>(_path: string): Promise<T> {
|
|
361
|
+
throw new AlephaError(
|
|
362
|
+
"WorkerdFileSystemProvider: readJsonFile() is not available in edge runtimes.",
|
|
363
|
+
);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var O=Object.defineProperty;var l=(r,o)=>O(r,"name",{value:o,configurable:!0});import{a as U,Y as _,D as H,r as a,j as e,a5 as J,Z as Y,P as c,F as I,ae as G,G as K,a4 as $,T as x,U as k,ag as W,ad as Z,ac as q}from"./entry.GYhBVRpC.js";import{d as Q}from"./chunk.CpyDMr6O.js";import{a as X}from"./chunk.C8mlBrjW.js";import{A as R}from"./chunk.DpRnB4vJ.js";import{I as z}from"./chunk.C79YouPp.js";import{u as ee,I as te,T as se}from"./chunk.B052Z_xQ.js";import"./chunk.sRNuTYXb.js";import"./chunk.dwU3E_MU.js";import"./chunk.BOHgdTP-.js";import"./chunk.BKF9JxIo.js";import"./chunk.lJL-lgnW.js";import"./chunk.WjpsbQAv.js";import"./chunk.CZl6J9DF.js";import"./chunk.CK0ow3AZ.js";import"./chunk.r_Xoa_CI.js";import"./chunk.thjBxvCA.js";import"./chunk.Ce6_6iIF.js";import"./chunk.CyPmvPnY.js";import"./chunk.tUjcyX5C.js";const oe=Z.object({}),ne=l(r=>{if(!r)return null;try{const o=q(r);if(o?.properties)return o}catch{}return null},"toTypeBoxSchema"),re=l(({entity:r,record:o,isNew:s,onSave:d,onDelete:j,pkColumn:b})=>{const f=a.useMemo(()=>{const S=s?r.insertSchema:r.updateSchema;return ne(S)??oe},[r,s]),h=ee({schema:f,handler:l(()=>{},"handler"),initialValues:s?void 0:o},[f,o,s]);return e.jsxs(c,{direction:"column",gap:"md",children:[e.jsxs(c,{justify:"space-between",children:[e.jsx(x,{fz:"sm",fw:600,children:s?"New Record":`Edit Record (${b}: ${o?.[b]})`}),e.jsxs(c,{gap:"xs",children:[e.jsx(R,{size:"xs",onClick:l(()=>d(h.currentValues),"onClick"),children:s?"Create":"Save"}),!s&&e.jsx(R,{size:"sm",variant:"light",intent:"danger",onClick:j,icon:e.jsx(te,{size:14})})]})]}),e.jsx(se,{form:h,skipSubmitButton:!0,skipFormElement:!0,columns:1})]})},"RecordForm"),ae=l(r=>{const o="/db/editor/";if(!r.startsWith(o))return{table:"",recordId:""};const s=r.slice(o.length),d=s.indexOf("/");return d===-1?{table:decodeURIComponent(s),recordId:""}:{table:decodeURIComponent(s.slice(0,d)),recordId:decodeURIComponent(s.slice(d+1))}},"parseEditorPath"),ce=l(({entities:r})=>{const o=U(_),s=H(),[d,j]=a.useState([]),[b,f]=a.useState(!1),[h,S]=a.useState(""),[w,D]=a.useState(null),{table:n,recordId:y}=ae(s.pathname),m=y==="new",v=r.find(t=>t.name===n),p=v?.columns?.find(t=>t.primaryKey)?.name??"id",g=a.useCallback(async()=>{if(n){f(!0);try{const t=await o.fetch(`/__devtools/api/db/${n}/records?size=50`);j(t.data?.content??[]),D(t.data?.page)}catch{j([])}finally{f(!1)}}},[o,n]);a.useEffect(()=>{g()},[n,g]);const u=a.useMemo(()=>!y||m?null:d.find(t=>String(t[p])===y)??null,[d,y,m,p]),E=a.useCallback(t=>{s.push(`/db/editor/${encodeURIComponent(t)}`)},[s]),L=a.useCallback(t=>{const i=t[p];s.push(`/db/editor/${encodeURIComponent(n)}/${encodeURIComponent(String(i))}`)},[s,n,p]),T=a.useCallback(()=>{s.push(`/db/editor/${encodeURIComponent(n)}/new`)},[s,n]),P=l(async t=>{try{if(m)await o.fetch(`/__devtools/api/db/${n}/records`,{method:"POST",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}}),s.push(`/db/editor/${encodeURIComponent(n)}`);else if(u){const i=u[p];await o.fetch(`/__devtools/api/db/${n}/records/${i}`,{method:"PUT",body:JSON.stringify(t),headers:{"Content-Type":"application/json"}})}await g()}catch{}},"handleSave"),B=l(async()=>{if(!u)return;const t=u[p];try{await o.fetch(`/__devtools/api/db/${n}/records/${t}`,{method:"DELETE"}),s.push(`/db/editor/${encodeURIComponent(n)}`),await g()}catch{}},"handleDelete"),F=a.useMemo(()=>r.filter(i=>i.name.toLowerCase().includes(h.toLowerCase())).map(i=>({id:`entity:${i.name}`,label:i.name,icon:e.jsx(Y,{size:13,color:"var(--mantine-color-blue-text)",style:{flexShrink:0}}),badge:e.jsx(J,{size:"xs",variant:"light",color:"gray",children:i.columns?.length??0})})),[r,h]),M=a.useCallback(t=>{const i=t.replace(/^entity:/,"");E(i)},[E]),V=a.useMemo(()=>new Set,[]),A=n?`entity:${n}`:"";return e.jsxs(c,{style:{flex:1,overflow:"hidden"},children:[e.jsxs(c,{w:200,style:{borderRight:`1px solid ${I.colors.border}`,flexShrink:0,display:"flex",flexDirection:"column"},children:[e.jsx(c,{p:"xs",children:e.jsx(G,{size:"xs",placeholder:"Filter tables...",leftSection:e.jsx(K,{size:14}),value:h,onChange:l(t=>S(t.currentTarget.value),"onChange")})}),e.jsx($,{style:{flex:1},px:"xs",children:e.jsx(X,{nodes:F,selectedId:A,openNodes:V,onSelect:M,onToggle:l(()=>{},"onToggle"),showLeafCount:!1})})]}),n&&e.jsxs(c,{w:200,style:{borderRight:`1px solid ${I.colors.border}`,flexShrink:0,display:"flex",flexDirection:"column"},children:[e.jsx(c,{px:"xs",py:"xs",style:{borderBottom:`1px solid ${I.colors.border}`,flexShrink:0},children:e.jsxs(c,{gap:"xs",justify:"space-between",children:[e.jsxs(x,{fz:10,c:"dimmed",tt:"uppercase",fw:600,lts:.5,children:["Records"," ",w?.totalElements!=null&&`(${w.totalElements})`]}),e.jsx(R,{size:"xs",variant:"subtle",color:"teal",onClick:T,icon:e.jsx(z,{size:14})})]})}),e.jsxs($,{style:{flex:1},px:"xs",py:"xs",children:[e.jsx(k,{w:"100%",py:4,className:"devtools-tree-node","data-selected":m||void 0,style:{borderRadius:6,paddingLeft:8,paddingRight:8,transition:"background 100ms ease"},onClick:T,children:e.jsxs(c,{gap:8,wrap:"nowrap",children:[e.jsx(z,{size:13,color:"var(--mantine-color-teal-text)",style:{flexShrink:0}}),e.jsx(x,{fz:12,c:"teal",children:"New Record"})]})}),b?e.jsx(c,{justify:"center",py:"md",children:e.jsx(W,{size:"xs"})}):d.map((t,i)=>{const C=t[p]??i,N=!m&&String(C)===y;return e.jsx(k,{w:"100%",py:4,className:"devtools-tree-node","data-selected":N||void 0,style:{borderRadius:6,paddingLeft:8,paddingRight:8,transition:"background 100ms ease"},onClick:l(()=>L(t),"onClick"),children:e.jsxs(x,{fz:12,ff:"monospace",truncate:!0,children:[p,": ",String(C)]})},String(C))})]})]}),e.jsxs(c,{style:{flex:1,overflow:"auto"},p:"md",children:[!n&&e.jsx(c,{align:"center",justify:"center",h:"100%",children:e.jsx(x,{c:"dimmed",fz:"sm",children:"Select a table to browse records"})}),n&&!u&&!m&&e.jsx(c,{align:"center",justify:"center",h:"100%",children:e.jsx(x,{c:"dimmed",fz:"sm",children:"Select a record or create a new one"})}),(u||m)&&v&&e.jsx(re,{entity:v,record:u,isNew:m,onSave:P,onDelete:B,pkColumn:p})]})]})},"DatabaseEditor"),Te=l(()=>{const r=U(_),[o,s]=a.useState([]);return a.useEffect(()=>{r.fetch("/__devtools/api/metadata",{schema:{response:Q}}).then(d=>s(d.data.entities??[])).catch(()=>{})},[r]),e.jsx(ce,{entities:o})},"DatabaseEditorPage");export{Te as default};
|
|
Binary file
|