@archlast/server 0.0.1
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/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/admin/auth.d.ts +79 -0
- package/dist/admin/auth.d.ts.map +1 -0
- package/dist/admin/auth.js +487 -0
- package/dist/admin/auth.js.map +1 -0
- package/dist/admin/schema.d.ts +240 -0
- package/dist/admin/schema.d.ts.map +1 -0
- package/dist/admin/schema.js +521 -0
- package/dist/admin/schema.js.map +1 -0
- package/dist/admin/seed.d.ts +9 -0
- package/dist/admin/seed.d.ts.map +1 -0
- package/dist/admin/seed.js +276 -0
- package/dist/admin/seed.js.map +1 -0
- package/dist/auth/api-key-resolver.d.ts +12 -0
- package/dist/auth/api-key-resolver.d.ts.map +1 -0
- package/dist/auth/api-key-resolver.js +24 -0
- package/dist/auth/api-key-resolver.js.map +1 -0
- package/dist/auth/archlast-auth-adapter.d.ts +22 -0
- package/dist/auth/archlast-auth-adapter.d.ts.map +1 -0
- package/dist/auth/archlast-auth-adapter.js +32 -0
- package/dist/auth/archlast-auth-adapter.js.map +1 -0
- package/dist/auth/audit.d.ts +65 -0
- package/dist/auth/audit.d.ts.map +1 -0
- package/dist/auth/audit.js +138 -0
- package/dist/auth/audit.js.map +1 -0
- package/dist/auth/better-auth-adapter.d.ts +35 -0
- package/dist/auth/better-auth-adapter.d.ts.map +1 -0
- package/dist/auth/better-auth-adapter.js +460 -0
- package/dist/auth/better-auth-adapter.js.map +1 -0
- package/dist/auth/better-auth-admin.d.ts +40 -0
- package/dist/auth/better-auth-admin.d.ts.map +1 -0
- package/dist/auth/better-auth-admin.js +80 -0
- package/dist/auth/better-auth-admin.js.map +1 -0
- package/dist/auth/better-auth-api-key-resolver.d.ts +39 -0
- package/dist/auth/better-auth-api-key-resolver.d.ts.map +1 -0
- package/dist/auth/better-auth-api-key-resolver.js +184 -0
- package/dist/auth/better-auth-api-key-resolver.js.map +1 -0
- package/dist/auth/better-auth-instance.d.ts +2464 -0
- package/dist/auth/better-auth-instance.d.ts.map +1 -0
- package/dist/auth/better-auth-instance.js +251 -0
- package/dist/auth/better-auth-instance.js.map +1 -0
- package/dist/auth/better-auth-seed.d.ts +23 -0
- package/dist/auth/better-auth-seed.d.ts.map +1 -0
- package/dist/auth/better-auth-seed.js +316 -0
- package/dist/auth/better-auth-seed.js.map +1 -0
- package/dist/auth/better-auth-session-adapter.d.ts +49 -0
- package/dist/auth/better-auth-session-adapter.d.ts.map +1 -0
- package/dist/auth/better-auth-session-adapter.js +254 -0
- package/dist/auth/better-auth-session-adapter.js.map +1 -0
- package/dist/auth/errors.d.ts +18 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +27 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/http/handlers.d.ts +17 -0
- package/dist/auth/http/handlers.d.ts.map +1 -0
- package/dist/auth/http/handlers.js +19 -0
- package/dist/auth/http/handlers.js.map +1 -0
- package/dist/auth/interfaces.d.ts +138 -0
- package/dist/auth/interfaces.d.ts.map +1 -0
- package/dist/auth/interfaces.js +105 -0
- package/dist/auth/interfaces.js.map +1 -0
- package/dist/auth/mfa/index.d.ts +6 -0
- package/dist/auth/mfa/index.d.ts.map +1 -0
- package/dist/auth/mfa/index.js +13 -0
- package/dist/auth/mfa/index.js.map +1 -0
- package/dist/auth/mfa/schema.d.ts +32 -0
- package/dist/auth/mfa/schema.d.ts.map +1 -0
- package/dist/auth/mfa/schema.js +35 -0
- package/dist/auth/mfa/schema.js.map +1 -0
- package/dist/auth/mfa/service.d.ts +65 -0
- package/dist/auth/mfa/service.d.ts.map +1 -0
- package/dist/auth/mfa/service.js +255 -0
- package/dist/auth/mfa/service.js.map +1 -0
- package/dist/auth/oauth-proxy.d.ts +58 -0
- package/dist/auth/oauth-proxy.d.ts.map +1 -0
- package/dist/auth/oauth-proxy.js +298 -0
- package/dist/auth/oauth-proxy.js.map +1 -0
- package/dist/auth/otp/index.d.ts +6 -0
- package/dist/auth/otp/index.d.ts.map +1 -0
- package/dist/auth/otp/index.js +13 -0
- package/dist/auth/otp/index.js.map +1 -0
- package/dist/auth/otp/schema.d.ts +32 -0
- package/dist/auth/otp/schema.d.ts.map +1 -0
- package/dist/auth/otp/schema.js +38 -0
- package/dist/auth/otp/schema.js.map +1 -0
- package/dist/auth/otp/service.d.ts +59 -0
- package/dist/auth/otp/service.d.ts.map +1 -0
- package/dist/auth/otp/service.js +183 -0
- package/dist/auth/otp/service.js.map +1 -0
- package/dist/auth/password-recovery.d.ts +61 -0
- package/dist/auth/password-recovery.d.ts.map +1 -0
- package/dist/auth/password-recovery.js +173 -0
- package/dist/auth/password-recovery.js.map +1 -0
- package/dist/auth/resolver.d.ts +29 -0
- package/dist/auth/resolver.d.ts.map +1 -0
- package/dist/auth/resolver.js +78 -0
- package/dist/auth/resolver.js.map +1 -0
- package/dist/auth/role-helpers.d.ts +56 -0
- package/dist/auth/role-helpers.d.ts.map +1 -0
- package/dist/auth/role-helpers.js +103 -0
- package/dist/auth/role-helpers.js.map +1 -0
- package/dist/auth/session-manager.d.ts +21 -0
- package/dist/auth/session-manager.d.ts.map +1 -0
- package/dist/auth/session-manager.js +30 -0
- package/dist/auth/session-manager.js.map +1 -0
- package/dist/auth/session-security.d.ts +14 -0
- package/dist/auth/session-security.d.ts.map +1 -0
- package/dist/auth/session-security.js +26 -0
- package/dist/auth/session-security.js.map +1 -0
- package/dist/auth/system/better-auth-schema.d.ts +144 -0
- package/dist/auth/system/better-auth-schema.d.ts.map +1 -0
- package/dist/auth/system/better-auth-schema.js +250 -0
- package/dist/auth/system/better-auth-schema.js.map +1 -0
- package/dist/auth/system/constants.d.ts +114 -0
- package/dist/auth/system/constants.d.ts.map +1 -0
- package/dist/auth/system/constants.js +205 -0
- package/dist/auth/system/constants.js.map +1 -0
- package/dist/auth/system/cookies.d.ts +83 -0
- package/dist/auth/system/cookies.d.ts.map +1 -0
- package/dist/auth/system/cookies.js +148 -0
- package/dist/auth/system/cookies.js.map +1 -0
- package/dist/auth/system/crypto.d.ts +53 -0
- package/dist/auth/system/crypto.d.ts.map +1 -0
- package/dist/auth/system/crypto.js +188 -0
- package/dist/auth/system/crypto.js.map +1 -0
- package/dist/auth/system/extended-schema.d.ts +145 -0
- package/dist/auth/system/extended-schema.d.ts.map +1 -0
- package/dist/auth/system/extended-schema.js +86 -0
- package/dist/auth/system/extended-schema.js.map +1 -0
- package/dist/auth/system/schema.d.ts +538 -0
- package/dist/auth/system/schema.d.ts.map +1 -0
- package/dist/auth/system/schema.js +306 -0
- package/dist/auth/system/schema.js.map +1 -0
- package/dist/cache/client.d.ts +77 -0
- package/dist/cache/client.d.ts.map +1 -0
- package/dist/cache/client.js +279 -0
- package/dist/cache/client.js.map +1 -0
- package/dist/cache/index.d.ts +9 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +14 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/layers.d.ts +125 -0
- package/dist/cache/layers.d.ts.map +1 -0
- package/dist/cache/layers.js +354 -0
- package/dist/cache/layers.js.map +1 -0
- package/dist/cache/manager.d.ts +101 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +423 -0
- package/dist/cache/manager.js.map +1 -0
- package/dist/cache/protocol.d.ts +115 -0
- package/dist/cache/protocol.d.ts.map +1 -0
- package/dist/cache/protocol.js +36 -0
- package/dist/cache/protocol.js.map +1 -0
- package/dist/cache/run-sidecar.d.ts +8 -0
- package/dist/cache/run-sidecar.d.ts.map +1 -0
- package/dist/cache/run-sidecar.js +71 -0
- package/dist/cache/run-sidecar.js.map +1 -0
- package/dist/cache/sidecar-client.d.ts +90 -0
- package/dist/cache/sidecar-client.d.ts.map +1 -0
- package/dist/cache/sidecar-client.js +437 -0
- package/dist/cache/sidecar-client.js.map +1 -0
- package/dist/cache/sidecar-server.d.ts +18 -0
- package/dist/cache/sidecar-server.d.ts.map +1 -0
- package/dist/cache/sidecar-server.js +90 -0
- package/dist/cache/sidecar-server.js.map +1 -0
- package/dist/cache/store.d.ts +90 -0
- package/dist/cache/store.d.ts.map +1 -0
- package/dist/cache/store.js +357 -0
- package/dist/cache/store.js.map +1 -0
- package/dist/cache/strategies.d.ts +52 -0
- package/dist/cache/strategies.d.ts.map +1 -0
- package/dist/cache/strategies.js +13 -0
- package/dist/cache/strategies.js.map +1 -0
- package/dist/cache/utils.d.ts +16 -0
- package/dist/cache/utils.d.ts.map +1 -0
- package/dist/cache/utils.js +101 -0
- package/dist/cache/utils.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +20 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/paths.d.ts +16 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +29 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/schema.d.ts +42 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +62 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/service.d.ts +56 -0
- package/dist/config/service.d.ts.map +1 -0
- package/dist/config/service.js +108 -0
- package/dist/config/service.js.map +1 -0
- package/dist/context.d.ts +48 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +6 -0
- package/dist/context.js.map +1 -0
- package/dist/controllers/admin/admin-tokens.controller.d.ts +159 -0
- package/dist/controllers/admin/admin-tokens.controller.d.ts.map +1 -0
- package/dist/controllers/admin/admin-tokens.controller.js +138 -0
- package/dist/controllers/admin/admin-tokens.controller.js.map +1 -0
- package/dist/controllers/admin/api-keys.controller.d.ts +187 -0
- package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -0
- package/dist/controllers/admin/api-keys.controller.js +124 -0
- package/dist/controllers/admin/api-keys.controller.js.map +1 -0
- package/dist/controllers/admin/app-users.controller.d.ts +376 -0
- package/dist/controllers/admin/app-users.controller.d.ts.map +1 -0
- package/dist/controllers/admin/app-users.controller.js +348 -0
- package/dist/controllers/admin/app-users.controller.js.map +1 -0
- package/dist/controllers/admin/auth.controller.d.ts +285 -0
- package/dist/controllers/admin/auth.controller.d.ts.map +1 -0
- package/dist/controllers/admin/auth.controller.js +221 -0
- package/dist/controllers/admin/auth.controller.js.map +1 -0
- package/dist/controllers/admin/backup.controller.d.ts +250 -0
- package/dist/controllers/admin/backup.controller.d.ts.map +1 -0
- package/dist/controllers/admin/backup.controller.js +316 -0
- package/dist/controllers/admin/backup.controller.js.map +1 -0
- package/dist/controllers/admin/data.controller.d.ts +250 -0
- package/dist/controllers/admin/data.controller.d.ts.map +1 -0
- package/dist/controllers/admin/data.controller.js +240 -0
- package/dist/controllers/admin/data.controller.js.map +1 -0
- package/dist/controllers/admin/provisioning.controller.d.ts +77 -0
- package/dist/controllers/admin/provisioning.controller.d.ts.map +1 -0
- package/dist/controllers/admin/provisioning.controller.js +141 -0
- package/dist/controllers/admin/provisioning.controller.js.map +1 -0
- package/dist/controllers/admin/settings.controller.d.ts +153 -0
- package/dist/controllers/admin/settings.controller.d.ts.map +1 -0
- package/dist/controllers/admin/settings.controller.js +120 -0
- package/dist/controllers/admin/settings.controller.js.map +1 -0
- package/dist/controllers/admin/setup.controller.d.ts +104 -0
- package/dist/controllers/admin/setup.controller.d.ts.map +1 -0
- package/dist/controllers/admin/setup.controller.js +113 -0
- package/dist/controllers/admin/setup.controller.js.map +1 -0
- package/dist/controllers/admin/tenants.controller.d.ts +275 -0
- package/dist/controllers/admin/tenants.controller.d.ts.map +1 -0
- package/dist/controllers/admin/tenants.controller.js +206 -0
- package/dist/controllers/admin/tenants.controller.js.map +1 -0
- package/dist/controllers/admin/users.controller.d.ts +253 -0
- package/dist/controllers/admin/users.controller.d.ts.map +1 -0
- package/dist/controllers/admin/users.controller.js +186 -0
- package/dist/controllers/admin/users.controller.js.map +1 -0
- package/dist/controllers/auth.controller.d.ts +308 -0
- package/dist/controllers/auth.controller.d.ts.map +1 -0
- package/dist/controllers/auth.controller.js +305 -0
- package/dist/controllers/auth.controller.js.map +1 -0
- package/dist/controllers/crud-generator.controller.d.ts +83 -0
- package/dist/controllers/crud-generator.controller.d.ts.map +1 -0
- package/dist/controllers/crud-generator.controller.js +201 -0
- package/dist/controllers/crud-generator.controller.js.map +1 -0
- package/dist/controllers/deployment-events.controller.d.ts +74 -0
- package/dist/controllers/deployment-events.controller.d.ts.map +1 -0
- package/dist/controllers/deployment-events.controller.js +143 -0
- package/dist/controllers/deployment-events.controller.js.map +1 -0
- package/dist/controllers/index.d.ts +18 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +42 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/introspection.controller.d.ts +430 -0
- package/dist/controllers/introspection.controller.d.ts.map +1 -0
- package/dist/controllers/introspection.controller.js +358 -0
- package/dist/controllers/introspection.controller.js.map +1 -0
- package/dist/controllers/invite.controller.d.ts +218 -0
- package/dist/controllers/invite.controller.d.ts.map +1 -0
- package/dist/controllers/invite.controller.js +218 -0
- package/dist/controllers/invite.controller.js.map +1 -0
- package/dist/controllers/mfa.controller.d.ts +211 -0
- package/dist/controllers/mfa.controller.d.ts.map +1 -0
- package/dist/controllers/mfa.controller.js +155 -0
- package/dist/controllers/mfa.controller.js.map +1 -0
- package/dist/controllers/otp.controller.d.ts +220 -0
- package/dist/controllers/otp.controller.d.ts.map +1 -0
- package/dist/controllers/otp.controller.js +223 -0
- package/dist/controllers/otp.controller.js.map +1 -0
- package/dist/controllers/storage.controller.d.ts +297 -0
- package/dist/controllers/storage.controller.d.ts.map +1 -0
- package/dist/controllers/storage.controller.js +304 -0
- package/dist/controllers/storage.controller.js.map +1 -0
- package/dist/controllers/system.controller.d.ts +176 -0
- package/dist/controllers/system.controller.d.ts.map +1 -0
- package/dist/controllers/system.controller.js +222 -0
- package/dist/controllers/system.controller.js.map +1 -0
- package/dist/controllers/tenant.controller.d.ts +316 -0
- package/dist/controllers/tenant.controller.d.ts.map +1 -0
- package/dist/controllers/tenant.controller.js +269 -0
- package/dist/controllers/tenant.controller.js.map +1 -0
- package/dist/db/cachedclient.d.ts +69 -0
- package/dist/db/cachedclient.d.ts.map +1 -0
- package/dist/db/cachedclient.js +331 -0
- package/dist/db/cachedclient.js.map +1 -0
- package/dist/db/distributed-client.d.ts +82 -0
- package/dist/db/distributed-client.d.ts.map +1 -0
- package/dist/db/distributed-client.js +477 -0
- package/dist/db/distributed-client.js.map +1 -0
- package/dist/db/factory.d.ts +19 -0
- package/dist/db/factory.d.ts.map +1 -0
- package/dist/db/factory.js +44 -0
- package/dist/db/factory.js.map +1 -0
- package/dist/db/interfaces.d.ts +67 -0
- package/dist/db/interfaces.d.ts.map +1 -0
- package/dist/db/interfaces.js +3 -0
- package/dist/db/interfaces.js.map +1 -0
- package/dist/db/socket-client.d.ts +122 -0
- package/dist/db/socket-client.d.ts.map +1 -0
- package/dist/db/socket-client.js +1092 -0
- package/dist/db/socket-client.js.map +1 -0
- package/dist/db/store-config.d.ts +19 -0
- package/dist/db/store-config.d.ts.map +1 -0
- package/dist/db/store-config.js +65 -0
- package/dist/db/store-config.js.map +1 -0
- package/dist/deployment/function-extractor.d.ts +11 -0
- package/dist/deployment/function-extractor.d.ts.map +1 -0
- package/dist/deployment/function-extractor.js +101 -0
- package/dist/deployment/function-extractor.js.map +1 -0
- package/dist/deployment/handler.d.ts +174 -0
- package/dist/deployment/handler.d.ts.map +1 -0
- package/dist/deployment/handler.js +1437 -0
- package/dist/deployment/handler.js.map +1 -0
- package/dist/deployment/persistence.d.ts +97 -0
- package/dist/deployment/persistence.d.ts.map +1 -0
- package/dist/deployment/persistence.js +238 -0
- package/dist/deployment/persistence.js.map +1 -0
- package/dist/deployment/protocol.d.ts +34 -0
- package/dist/deployment/protocol.d.ts.map +1 -0
- package/dist/deployment/protocol.js +7 -0
- package/dist/deployment/protocol.js.map +1 -0
- package/dist/di/container.d.ts +58 -0
- package/dist/di/container.d.ts.map +1 -0
- package/dist/di/container.js +121 -0
- package/dist/di/container.js.map +1 -0
- package/dist/di/decorators.d.ts +57 -0
- package/dist/di/decorators.d.ts.map +1 -0
- package/dist/di/decorators.js +80 -0
- package/dist/di/decorators.js.map +1 -0
- package/dist/di/index.d.ts +10 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +21 -0
- package/dist/di/index.js.map +1 -0
- package/dist/di/resolver.d.ts +26 -0
- package/dist/di/resolver.d.ts.map +1 -0
- package/dist/di/resolver.js +32 -0
- package/dist/di/resolver.js.map +1 -0
- package/dist/docker/compose.d.ts +3 -0
- package/dist/docker/compose.d.ts.map +1 -0
- package/dist/docker/compose.js +106 -0
- package/dist/docker/compose.js.map +1 -0
- package/dist/docker/index.d.ts +4 -0
- package/dist/docker/index.d.ts.map +1 -0
- package/dist/docker/index.js +8 -0
- package/dist/docker/index.js.map +1 -0
- package/dist/docker/manager.d.ts +14 -0
- package/dist/docker/manager.d.ts.map +1 -0
- package/dist/docker/manager.js +76 -0
- package/dist/docker/manager.js.map +1 -0
- package/dist/docker/types.d.ts +18 -0
- package/dist/docker/types.d.ts.map +1 -0
- package/dist/docker/types.js +3 -0
- package/dist/docker/types.js.map +1 -0
- package/dist/email/index.d.ts +6 -0
- package/dist/email/index.d.ts.map +1 -0
- package/dist/email/index.js +25 -0
- package/dist/email/index.js.map +1 -0
- package/dist/email/service.d.ts +89 -0
- package/dist/email/service.d.ts.map +1 -0
- package/dist/email/service.js +215 -0
- package/dist/email/service.js.map +1 -0
- package/dist/email/templates/MagicLinkEmail.d.ts +8 -0
- package/dist/email/templates/MagicLinkEmail.d.ts.map +1 -0
- package/dist/email/templates/MagicLinkEmail.js +84 -0
- package/dist/email/templates/MagicLinkEmail.js.map +1 -0
- package/dist/email/templates/OtpEmail.d.ts +8 -0
- package/dist/email/templates/OtpEmail.d.ts.map +1 -0
- package/dist/email/templates/OtpEmail.js +72 -0
- package/dist/email/templates/OtpEmail.js.map +1 -0
- package/dist/email/templates/PasswordResetEmail.d.ts +9 -0
- package/dist/email/templates/PasswordResetEmail.d.ts.map +1 -0
- package/dist/email/templates/PasswordResetEmail.js +103 -0
- package/dist/email/templates/PasswordResetEmail.js.map +1 -0
- package/dist/email/templates/WelcomeEmail.d.ts +8 -0
- package/dist/email/templates/WelcomeEmail.d.ts.map +1 -0
- package/dist/email/templates/WelcomeEmail.js +94 -0
- package/dist/email/templates/WelcomeEmail.js.map +1 -0
- package/dist/email/templates/index.d.ts +9 -0
- package/dist/email/templates/index.d.ts.map +1 -0
- package/dist/email/templates/index.js +16 -0
- package/dist/email/templates/index.js.map +1 -0
- package/dist/engine/context.d.ts +9 -0
- package/dist/engine/context.d.ts.map +1 -0
- package/dist/engine/context.js +9 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/runner.d.ts +115 -0
- package/dist/engine/runner.d.ts.map +1 -0
- package/dist/engine/runner.js +617 -0
- package/dist/engine/runner.js.map +1 -0
- package/dist/functions/built-in/auth-apikey.d.ts +21 -0
- package/dist/functions/built-in/auth-apikey.d.ts.map +1 -0
- package/dist/functions/built-in/auth-apikey.js +344 -0
- package/dist/functions/built-in/auth-apikey.js.map +1 -0
- package/dist/functions/built-in/auth-email.d.ts +3 -0
- package/dist/functions/built-in/auth-email.d.ts.map +1 -0
- package/dist/functions/built-in/auth-email.js +63 -0
- package/dist/functions/built-in/auth-email.js.map +1 -0
- package/dist/functions/built-in/auth-invite.d.ts +5 -0
- package/dist/functions/built-in/auth-invite.d.ts.map +1 -0
- package/dist/functions/built-in/auth-invite.js +105 -0
- package/dist/functions/built-in/auth-invite.js.map +1 -0
- package/dist/functions/built-in/auth-password.d.ts +4 -0
- package/dist/functions/built-in/auth-password.d.ts.map +1 -0
- package/dist/functions/built-in/auth-password.js +107 -0
- package/dist/functions/built-in/auth-password.js.map +1 -0
- package/dist/functions/built-in/auth-session.d.ts +18 -0
- package/dist/functions/built-in/auth-session.d.ts.map +1 -0
- package/dist/functions/built-in/auth-session.js +221 -0
- package/dist/functions/built-in/auth-session.js.map +1 -0
- package/dist/functions/built-in/auth-signin.d.ts +20 -0
- package/dist/functions/built-in/auth-signin.d.ts.map +1 -0
- package/dist/functions/built-in/auth-signin.js +198 -0
- package/dist/functions/built-in/auth-signin.js.map +1 -0
- package/dist/functions/built-in/auth-signout.d.ts +18 -0
- package/dist/functions/built-in/auth-signout.d.ts.map +1 -0
- package/dist/functions/built-in/auth-signout.js +78 -0
- package/dist/functions/built-in/auth-signout.js.map +1 -0
- package/dist/functions/built-in/auth-signup.d.ts +21 -0
- package/dist/functions/built-in/auth-signup.d.ts.map +1 -0
- package/dist/functions/built-in/auth-signup.js +147 -0
- package/dist/functions/built-in/auth-signup.js.map +1 -0
- package/dist/functions/built-in/auth-tenant.d.ts +3 -0
- package/dist/functions/built-in/auth-tenant.d.ts.map +1 -0
- package/dist/functions/built-in/auth-tenant.js +86 -0
- package/dist/functions/built-in/auth-tenant.js.map +1 -0
- package/dist/functions/built-in/index.d.ts +55 -0
- package/dist/functions/built-in/index.d.ts.map +1 -0
- package/dist/functions/built-in/index.js +181 -0
- package/dist/functions/built-in/index.js.map +1 -0
- package/dist/functions/built-in/system-cache.d.ts +10 -0
- package/dist/functions/built-in/system-cache.d.ts.map +1 -0
- package/dist/functions/built-in/system-cache.js +98 -0
- package/dist/functions/built-in/system-cache.js.map +1 -0
- package/dist/functions/built-in/system-data.d.ts +13 -0
- package/dist/functions/built-in/system-data.d.ts.map +1 -0
- package/dist/functions/built-in/system-data.js +133 -0
- package/dist/functions/built-in/system-data.js.map +1 -0
- package/dist/functions/built-in/system-jobs.d.ts +22 -0
- package/dist/functions/built-in/system-jobs.d.ts.map +1 -0
- package/dist/functions/built-in/system-jobs.js +82 -0
- package/dist/functions/built-in/system-jobs.js.map +1 -0
- package/dist/functions/built-in/system-notifications.d.ts +41 -0
- package/dist/functions/built-in/system-notifications.d.ts.map +1 -0
- package/dist/functions/built-in/system-notifications.js +72 -0
- package/dist/functions/built-in/system-notifications.js.map +1 -0
- package/dist/functions/built-in/system-performance.d.ts +25 -0
- package/dist/functions/built-in/system-performance.d.ts.map +1 -0
- package/dist/functions/built-in/system-performance.js +83 -0
- package/dist/functions/built-in/system-performance.js.map +1 -0
- package/dist/functions/built-in-registry.d.ts +101 -0
- package/dist/functions/built-in-registry.d.ts.map +1 -0
- package/dist/functions/built-in-registry.js +165 -0
- package/dist/functions/built-in-registry.js.map +1 -0
- package/dist/functions/definition.d.ts +206 -0
- package/dist/functions/definition.d.ts.map +1 -0
- package/dist/functions/definition.js +178 -0
- package/dist/functions/definition.js.map +1 -0
- package/dist/functions/types.d.ts +151 -0
- package/dist/functions/types.d.ts.map +1 -0
- package/dist/functions/types.js +3 -0
- package/dist/functions/types.js.map +1 -0
- package/dist/http/context-helper.d.ts +60 -0
- package/dist/http/context-helper.d.ts.map +1 -0
- package/dist/http/context-helper.js +161 -0
- package/dist/http/context-helper.js.map +1 -0
- package/dist/http/definition.d.ts +76 -0
- package/dist/http/definition.d.ts.map +1 -0
- package/dist/http/definition.js +46 -0
- package/dist/http/definition.js.map +1 -0
- package/dist/http/index.d.ts +7 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +12 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/plugins/auth.d.ts +71 -0
- package/dist/http/plugins/auth.d.ts.map +1 -0
- package/dist/http/plugins/auth.js +67 -0
- package/dist/http/plugins/auth.js.map +1 -0
- package/dist/http/plugins/better-auth.d.ts +67 -0
- package/dist/http/plugins/better-auth.d.ts.map +1 -0
- package/dist/http/plugins/better-auth.js +48 -0
- package/dist/http/plugins/better-auth.js.map +1 -0
- package/dist/http/router.d.ts +59 -0
- package/dist/http/router.d.ts.map +1 -0
- package/dist/http/router.js +371 -0
- package/dist/http/router.js.map +1 -0
- package/dist/http/server.d.ts +15 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +217 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/types.d.ts +142 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +7 -0
- package/dist/http/types.js.map +1 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +116 -0
- package/dist/index.mjs.map +1 -0
- package/dist/ipc/run-sidecar.d.ts +8 -0
- package/dist/ipc/run-sidecar.d.ts.map +1 -0
- package/dist/ipc/run-sidecar.js +127 -0
- package/dist/ipc/run-sidecar.js.map +1 -0
- package/dist/ipc/socket-bridge.d.ts +114 -0
- package/dist/ipc/socket-bridge.d.ts.map +1 -0
- package/dist/ipc/socket-bridge.js +724 -0
- package/dist/ipc/socket-bridge.js.map +1 -0
- package/dist/jobs/index.d.ts +7 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +10 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/queue.d.ts +62 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +192 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/run-scheduler.d.ts +2 -0
- package/dist/jobs/run-scheduler.d.ts.map +1 -0
- package/dist/jobs/run-scheduler.js +245 -0
- package/dist/jobs/run-scheduler.js.map +1 -0
- package/dist/jobs/run-worker.d.ts +2 -0
- package/dist/jobs/run-worker.d.ts.map +1 -0
- package/dist/jobs/run-worker.js +123 -0
- package/dist/jobs/run-worker.js.map +1 -0
- package/dist/jobs/runtime-loader.d.ts +14 -0
- package/dist/jobs/runtime-loader.d.ts.map +1 -0
- package/dist/jobs/runtime-loader.js +122 -0
- package/dist/jobs/runtime-loader.js.map +1 -0
- package/dist/jobs/scheduler-client.d.ts +33 -0
- package/dist/jobs/scheduler-client.d.ts.map +1 -0
- package/dist/jobs/scheduler-client.js +69 -0
- package/dist/jobs/scheduler-client.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +73 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +297 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/worker-thread.d.ts +27 -0
- package/dist/jobs/worker-thread.d.ts.map +1 -0
- package/dist/jobs/worker-thread.js +173 -0
- package/dist/jobs/worker-thread.js.map +1 -0
- package/dist/jobs/worker.d.ts +30 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +262 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/jobs/ws-client.d.ts +23 -0
- package/dist/jobs/ws-client.d.ts.map +1 -0
- package/dist/jobs/ws-client.js +105 -0
- package/dist/jobs/ws-client.js.map +1 -0
- package/dist/linq/async-enumerable.d.ts +91 -0
- package/dist/linq/async-enumerable.d.ts.map +1 -0
- package/dist/linq/async-enumerable.js +176 -0
- package/dist/linq/async-enumerable.js.map +1 -0
- package/dist/linq/enumerable.d.ts +94 -0
- package/dist/linq/enumerable.d.ts.map +1 -0
- package/dist/linq/enumerable.js +210 -0
- package/dist/linq/enumerable.js.map +1 -0
- package/dist/linq/index.d.ts +25 -0
- package/dist/linq/index.d.ts.map +1 -0
- package/dist/linq/index.js +27 -0
- package/dist/linq/index.js.map +1 -0
- package/dist/linq/interfaces.d.ts +23 -0
- package/dist/linq/interfaces.d.ts.map +1 -0
- package/dist/linq/interfaces.js +3 -0
- package/dist/linq/interfaces.js.map +1 -0
- package/dist/logging/logger.d.ts +85 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +217 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/query/builder.d.ts +91 -0
- package/dist/query/builder.d.ts.map +1 -0
- package/dist/query/builder.js +103 -0
- package/dist/query/builder.js.map +1 -0
- package/dist/query/types.d.ts +112 -0
- package/dist/query/types.d.ts.map +1 -0
- package/dist/query/types.js +3 -0
- package/dist/query/types.js.map +1 -0
- package/dist/reactivity/graph.d.ts +8 -0
- package/dist/reactivity/graph.d.ts.map +1 -0
- package/dist/reactivity/graph.js +51 -0
- package/dist/reactivity/graph.js.map +1 -0
- package/dist/repository/db-set.d.ts +220 -0
- package/dist/repository/db-set.d.ts.map +1 -0
- package/dist/repository/db-set.js +515 -0
- package/dist/repository/db-set.js.map +1 -0
- package/dist/repository/ef-core.d.ts +177 -0
- package/dist/repository/ef-core.d.ts.map +1 -0
- package/dist/repository/ef-core.js +404 -0
- package/dist/repository/ef-core.js.map +1 -0
- package/dist/repository/factory.d.ts +117 -0
- package/dist/repository/factory.d.ts.map +1 -0
- package/dist/repository/factory.js +183 -0
- package/dist/repository/factory.js.map +1 -0
- package/dist/repository/interfaces.d.ts +449 -0
- package/dist/repository/interfaces.d.ts.map +1 -0
- package/dist/repository/interfaces.js +21 -0
- package/dist/repository/interfaces.js.map +1 -0
- package/dist/repository/provider.d.ts +16 -0
- package/dist/repository/provider.d.ts.map +1 -0
- package/dist/repository/provider.js +674 -0
- package/dist/repository/provider.js.map +1 -0
- package/dist/repository/queryable.d.ts +111 -0
- package/dist/repository/queryable.d.ts.map +1 -0
- package/dist/repository/queryable.js +566 -0
- package/dist/repository/queryable.js.map +1 -0
- package/dist/rpc/adapter.d.ts +18 -0
- package/dist/rpc/adapter.d.ts.map +1 -0
- package/dist/rpc/adapter.js +101 -0
- package/dist/rpc/adapter.js.map +1 -0
- package/dist/rpc/router.d.ts +82 -0
- package/dist/rpc/router.d.ts.map +1 -0
- package/dist/rpc/router.js +177 -0
- package/dist/rpc/router.js.map +1 -0
- package/dist/schema/definition.d.ts +51 -0
- package/dist/schema/definition.d.ts.map +1 -0
- package/dist/schema/definition.js +79 -0
- package/dist/schema/definition.js.map +1 -0
- package/dist/schema/input-types.d.ts +88 -0
- package/dist/schema/input-types.d.ts.map +1 -0
- package/dist/schema/input-types.js +81 -0
- package/dist/schema/input-types.js.map +1 -0
- package/dist/schema/modifiers.d.ts +173 -0
- package/dist/schema/modifiers.d.ts.map +1 -0
- package/dist/schema/modifiers.js +218 -0
- package/dist/schema/modifiers.js.map +1 -0
- package/dist/schema/relationship-types.d.ts +109 -0
- package/dist/schema/relationship-types.d.ts.map +1 -0
- package/dist/schema/relationship-types.js +11 -0
- package/dist/schema/relationship-types.js.map +1 -0
- package/dist/schema/type-helpers.d.ts +105 -0
- package/dist/schema/type-helpers.d.ts.map +1 -0
- package/dist/schema/type-helpers.js +215 -0
- package/dist/schema/type-helpers.js.map +1 -0
- package/dist/schema/types.d.ts +144 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +12 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/schema/validators.d.ts +127 -0
- package/dist/schema/validators.d.ts.map +1 -0
- package/dist/schema/validators.js +164 -0
- package/dist/schema/validators.js.map +1 -0
- package/dist/services/admin/app-users.service.d.ts +138 -0
- package/dist/services/admin/app-users.service.d.ts.map +1 -0
- package/dist/services/admin/app-users.service.js +435 -0
- package/dist/services/admin/app-users.service.js.map +1 -0
- package/dist/services/admin/auth.service.d.ts +104 -0
- package/dist/services/admin/auth.service.d.ts.map +1 -0
- package/dist/services/admin/auth.service.js +208 -0
- package/dist/services/admin/auth.service.js.map +1 -0
- package/dist/services/admin/backup/BackupOrchestrator.d.ts +38 -0
- package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -0
- package/dist/services/admin/backup/BackupOrchestrator.js +350 -0
- package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -0
- package/dist/services/admin/backup/DataStreamer.d.ts +11 -0
- package/dist/services/admin/backup/DataStreamer.d.ts.map +1 -0
- package/dist/services/admin/backup/DataStreamer.js +85 -0
- package/dist/services/admin/backup/DataStreamer.js.map +1 -0
- package/dist/services/admin/backup/LegacyAdapter.d.ts +28 -0
- package/dist/services/admin/backup/LegacyAdapter.d.ts.map +1 -0
- package/dist/services/admin/backup/LegacyAdapter.js +35 -0
- package/dist/services/admin/backup/LegacyAdapter.js.map +1 -0
- package/dist/services/admin/backup/SqliteGenerator.d.ts +15 -0
- package/dist/services/admin/backup/SqliteGenerator.d.ts.map +1 -0
- package/dist/services/admin/backup/SqliteGenerator.js +152 -0
- package/dist/services/admin/backup/SqliteGenerator.js.map +1 -0
- package/dist/services/admin/backup/StorageStreamer.d.ts +17 -0
- package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -0
- package/dist/services/admin/backup/StorageStreamer.js +117 -0
- package/dist/services/admin/backup/StorageStreamer.js.map +1 -0
- package/dist/services/admin/backup/ZipComposer.d.ts +17 -0
- package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -0
- package/dist/services/admin/backup/ZipComposer.js +95 -0
- package/dist/services/admin/backup/ZipComposer.js.map +1 -0
- package/dist/services/admin/backup/ZipExtractor.d.ts +24 -0
- package/dist/services/admin/backup/ZipExtractor.d.ts.map +1 -0
- package/dist/services/admin/backup/ZipExtractor.js +135 -0
- package/dist/services/admin/backup/ZipExtractor.js.map +1 -0
- package/dist/services/admin/backup/index.d.ts +9 -0
- package/dist/services/admin/backup/index.d.ts.map +1 -0
- package/dist/services/admin/backup/index.js +18 -0
- package/dist/services/admin/backup/index.js.map +1 -0
- package/dist/services/admin/backup/types.d.ts +48 -0
- package/dist/services/admin/backup/types.d.ts.map +1 -0
- package/dist/services/admin/backup/types.js +3 -0
- package/dist/services/admin/backup/types.js.map +1 -0
- package/dist/services/admin/backup.service.d.ts +117 -0
- package/dist/services/admin/backup.service.d.ts.map +1 -0
- package/dist/services/admin/backup.service.js +709 -0
- package/dist/services/admin/backup.service.js.map +1 -0
- package/dist/services/admin/data.service.d.ts +109 -0
- package/dist/services/admin/data.service.d.ts.map +1 -0
- package/dist/services/admin/data.service.js +734 -0
- package/dist/services/admin/data.service.js.map +1 -0
- package/dist/services/admin/tenants.service.d.ts +99 -0
- package/dist/services/admin/tenants.service.d.ts.map +1 -0
- package/dist/services/admin/tenants.service.js +173 -0
- package/dist/services/admin/tenants.service.js.map +1 -0
- package/dist/services/auth.service.d.ts +155 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +401 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/introspection.service.d.ts +262 -0
- package/dist/services/introspection.service.d.ts.map +1 -0
- package/dist/services/introspection.service.js +400 -0
- package/dist/services/introspection.service.js.map +1 -0
- package/dist/services/invite.service.d.ts +87 -0
- package/dist/services/invite.service.d.ts.map +1 -0
- package/dist/services/invite.service.js +216 -0
- package/dist/services/invite.service.js.map +1 -0
- package/dist/services/storage.service.d.ts +79 -0
- package/dist/services/storage.service.d.ts.map +1 -0
- package/dist/services/storage.service.js +209 -0
- package/dist/services/storage.service.js.map +1 -0
- package/dist/services/system.service.d.ts +60 -0
- package/dist/services/system.service.d.ts.map +1 -0
- package/dist/services/system.service.js +176 -0
- package/dist/services/system.service.js.map +1 -0
- package/dist/services/tenant.service.d.ts +112 -0
- package/dist/services/tenant.service.d.ts.map +1 -0
- package/dist/services/tenant.service.js +359 -0
- package/dist/services/tenant.service.js.map +1 -0
- package/dist/settings/index.d.ts +6 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +13 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/schema.d.ts +39 -0
- package/dist/settings/schema.d.ts.map +1 -0
- package/dist/settings/schema.js +41 -0
- package/dist/settings/schema.js.map +1 -0
- package/dist/settings/service.d.ts +28 -0
- package/dist/settings/service.d.ts.map +1 -0
- package/dist/settings/service.js +133 -0
- package/dist/settings/service.js.map +1 -0
- package/dist/startup/bootstrap.d.ts +13 -0
- package/dist/startup/bootstrap.d.ts.map +1 -0
- package/dist/startup/bootstrap.js +262 -0
- package/dist/startup/bootstrap.js.map +1 -0
- package/dist/startup/cluster-manager.d.ts +59 -0
- package/dist/startup/cluster-manager.d.ts.map +1 -0
- package/dist/startup/cluster-manager.js +238 -0
- package/dist/startup/cluster-manager.js.map +1 -0
- package/dist/startup/process-manager.d.ts +46 -0
- package/dist/startup/process-manager.d.ts.map +1 -0
- package/dist/startup/process-manager.js +288 -0
- package/dist/startup/process-manager.js.map +1 -0
- package/dist/startup/processes.d.mts +15 -0
- package/dist/startup/processes.d.mts.map +1 -0
- package/dist/startup/processes.mjs +162 -0
- package/dist/startup/processes.mjs.map +1 -0
- package/dist/startup.js +42 -0
- package/dist/storage/fs-backend.d.ts +38 -0
- package/dist/storage/fs-backend.d.ts.map +1 -0
- package/dist/storage/fs-backend.js +129 -0
- package/dist/storage/fs-backend.js.map +1 -0
- package/dist/storage/manager.d.ts +88 -0
- package/dist/storage/manager.d.ts.map +1 -0
- package/dist/storage/manager.js +416 -0
- package/dist/storage/manager.js.map +1 -0
- package/dist/storage/s3-backend.d.ts +30 -0
- package/dist/storage/s3-backend.d.ts.map +1 -0
- package/dist/storage/s3-backend.js +65 -0
- package/dist/storage/s3-backend.js.map +1 -0
- package/dist/storage/types.d.ts +56 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +3 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/utils/http.d.ts +16 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +61 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/introspection-helpers.d.ts +35 -0
- package/dist/utils/introspection-helpers.d.ts.map +1 -0
- package/dist/utils/introspection-helpers.js +246 -0
- package/dist/utils/introspection-helpers.js.map +1 -0
- package/dist/webhook/definition.d.ts +79 -0
- package/dist/webhook/definition.d.ts.map +1 -0
- package/dist/webhook/definition.js +33 -0
- package/dist/webhook/definition.js.map +1 -0
- package/dist/webhook/guard.d.ts +34 -0
- package/dist/webhook/guard.d.ts.map +1 -0
- package/dist/webhook/guard.js +86 -0
- package/dist/webhook/guard.js.map +1 -0
- package/dist/webhook/index.d.ts +9 -0
- package/dist/webhook/index.d.ts.map +1 -0
- package/dist/webhook/index.js +19 -0
- package/dist/webhook/index.js.map +1 -0
- package/dist/webhook/verifier.d.ts +24 -0
- package/dist/webhook/verifier.d.ts.map +1 -0
- package/dist/webhook/verifier.js +107 -0
- package/dist/webhook/verifier.js.map +1 -0
- package/dist/websocket/server.d.ts +74 -0
- package/dist/websocket/server.d.ts.map +1 -0
- package/dist/websocket/server.js +693 -0
- package/dist/websocket/server.js.map +1 -0
- package/dist/websocket/types.d.ts +53 -0
- package/dist/websocket/types.d.ts.map +1 -0
- package/dist/websocket/types.js +3 -0
- package/dist/websocket/types.js.map +1 -0
- package/dist/websocket/ws-compat.d.ts +26 -0
- package/dist/websocket/ws-compat.d.ts.map +1 -0
- package/dist/websocket/ws-compat.js +35 -0
- package/dist/websocket/ws-compat.js.map +1 -0
- package/docker/README.md +5 -0
- package/package.json +210 -0
- package/scripts/postinstall.js +31 -0
- package/templates/.env.example +55 -0
- package/templates/archlast.config.js +36 -0
- package/templates/docker-compose.dev.yml +8 -0
- package/templates/docker-compose.prod.yml +15 -0
- package/templates/docker-compose.yml +33 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EF Core Repository Pattern Implementation
|
|
3
|
+
*
|
|
4
|
+
* This module implements Entity Framework Core-style change tracking and Unit of Work patterns.
|
|
5
|
+
* It provides:
|
|
6
|
+
* - EntityState: Enum tracking entity state (Detached, Unchanged, Deleted, Modified, Added)
|
|
7
|
+
* - EntityEntry: Represents a tracked entity with state and original values
|
|
8
|
+
* - ChangeTracker: Manages tracked entities and their states
|
|
9
|
+
* - DbContext: Unit of Work with DbSets and SaveChangesAsync for transactional batching
|
|
10
|
+
*
|
|
11
|
+
* @module repository/ef-core
|
|
12
|
+
*/
|
|
13
|
+
import type { IDatabaseClient } from "../db/interfaces.js";
|
|
14
|
+
import type { DbSet } from "./db-set.js";
|
|
15
|
+
/**
|
|
16
|
+
* Entity state enum following EF Core conventions
|
|
17
|
+
* Values match EF Core for consistency (0-4)
|
|
18
|
+
*/
|
|
19
|
+
export declare enum EntityState {
|
|
20
|
+
/** Entity is not being tracked */
|
|
21
|
+
Detached = 0,
|
|
22
|
+
/** Entity is tracked but unchanged */
|
|
23
|
+
Unchanged = 1,
|
|
24
|
+
/** Entity is marked for deletion */
|
|
25
|
+
Deleted = 2,
|
|
26
|
+
/** Entity has been modified */
|
|
27
|
+
Modified = 3,
|
|
28
|
+
/** Entity is newly added */
|
|
29
|
+
Added = 4
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Represents a tracked entity with state and original values
|
|
33
|
+
* Similar to EF Core's EntityEntry<T>
|
|
34
|
+
*/
|
|
35
|
+
export declare class EntityEntry<T> {
|
|
36
|
+
readonly entity: T;
|
|
37
|
+
private _state;
|
|
38
|
+
private readonly _originalValues;
|
|
39
|
+
constructor(entity: T, initialState?: EntityState, originalValues?: Partial<T>);
|
|
40
|
+
/** Get the current state of the entity */
|
|
41
|
+
get state(): EntityState;
|
|
42
|
+
/** Get original values for modified properties */
|
|
43
|
+
get originalValues(): Partial<T>;
|
|
44
|
+
/** Get the entity ID (uses _id property) */
|
|
45
|
+
get id(): string | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Detach the entity from tracking
|
|
48
|
+
* State becomes Detached, no changes will be saved
|
|
49
|
+
*/
|
|
50
|
+
detach(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Mark the entity for deletion
|
|
53
|
+
* - If entity was Added, it becomes Detached (not saved then deleted)
|
|
54
|
+
* - Otherwise, state becomes Deleted
|
|
55
|
+
*/
|
|
56
|
+
markDeleted(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Mark the entity as modified
|
|
59
|
+
* Only transitions from Unchanged to Modified
|
|
60
|
+
* Other states remain unchanged (EF Core behavior)
|
|
61
|
+
*/
|
|
62
|
+
markModified(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Mark the entity as unchanged
|
|
65
|
+
* Called after SaveChangesAsync to reset state
|
|
66
|
+
*/
|
|
67
|
+
markUnchanged(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Set the state directly (used by ChangeTracker)
|
|
70
|
+
* @internal
|
|
71
|
+
*/
|
|
72
|
+
setState(state: EntityState): void;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Tracks entities and their states, similar to EF Core's ChangeTracker
|
|
76
|
+
*/
|
|
77
|
+
export declare class ChangeTracker {
|
|
78
|
+
private readonly _entries;
|
|
79
|
+
private _tempIdCounter;
|
|
80
|
+
/**
|
|
81
|
+
* Track an entity in the change tracker
|
|
82
|
+
* - If entity has _id and is already tracked, update the entry
|
|
83
|
+
* - If entity has no _id, generate a temporary ID
|
|
84
|
+
* - Returns the EntityEntry for the entity
|
|
85
|
+
*/
|
|
86
|
+
track<T>(collection: string, entity: T, state?: EntityState): EntityEntry<T>;
|
|
87
|
+
/**
|
|
88
|
+
* Get the EntityEntry for a tracked entity
|
|
89
|
+
* - First tries to find by collection and ID
|
|
90
|
+
* - If not found, searches by entity reference for new entities
|
|
91
|
+
*/
|
|
92
|
+
getEntry<T>(collection: string, id: string | undefined, entity?: T): EntityEntry<T> | undefined;
|
|
93
|
+
/**
|
|
94
|
+
* Get all tracked entries, optionally filtered by state
|
|
95
|
+
*/
|
|
96
|
+
entries(state?: EntityState): EntityEntry<unknown>[];
|
|
97
|
+
/**
|
|
98
|
+
* Check if there are any pending changes
|
|
99
|
+
* Returns true if any entity is Added, Modified, or Deleted
|
|
100
|
+
*/
|
|
101
|
+
hasChanges(): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Get entries grouped by collection name
|
|
104
|
+
*/
|
|
105
|
+
entriesByCollection(): Map<string, EntityEntry<unknown>[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Accept all changes - marks Added/Modified as Unchanged, removes Deleted entries
|
|
108
|
+
* Called after successful SaveChangesAsync
|
|
109
|
+
*/
|
|
110
|
+
acceptAllChanges(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Clear all tracked entries
|
|
113
|
+
*/
|
|
114
|
+
clear(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Generate a temporary ID for entities without _id
|
|
117
|
+
*/
|
|
118
|
+
private generateTempId;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* DbContext implements Unit of Work pattern with change tracking
|
|
122
|
+
* Provides DbSets for each collection and SaveChangesAsync for transactional batching
|
|
123
|
+
*/
|
|
124
|
+
export declare class DbContext<DataModel extends Record<string, any>> {
|
|
125
|
+
private readonly _db;
|
|
126
|
+
private readonly _createDbSet;
|
|
127
|
+
private readonly _dbSets;
|
|
128
|
+
private readonly _changeTracker;
|
|
129
|
+
constructor(_db: IDatabaseClient<DataModel, any>, _createDbSet: <K extends keyof DataModel & string>(collection: K, changeTracker: ChangeTracker) => DbSet<DataModel[K]>, sharedChangeTracker?: ChangeTracker);
|
|
130
|
+
/**
|
|
131
|
+
* Get the ChangeTracker for this context
|
|
132
|
+
*/
|
|
133
|
+
get ChangeTracker(): ChangeTracker;
|
|
134
|
+
/**
|
|
135
|
+
* Get a DbSet for the specified collection
|
|
136
|
+
* Caches DbSet instances for repeated access
|
|
137
|
+
*/
|
|
138
|
+
Set<K extends keyof DataModel & string>(collection: K): DbSet<DataModel[K]>;
|
|
139
|
+
/**
|
|
140
|
+
* Save all pending changes to the database in a transaction
|
|
141
|
+
* - Inserts Added entities
|
|
142
|
+
* - Updates Modified entities
|
|
143
|
+
* - Deletes Deleted entities
|
|
144
|
+
* - Applies schema enforcement (auto-timestamps) before database operations
|
|
145
|
+
* - Returns the number of entities affected
|
|
146
|
+
*/
|
|
147
|
+
SaveChangesAsync(): Promise<number>;
|
|
148
|
+
/**
|
|
149
|
+
* Get the EntityEntry for a tracked entity
|
|
150
|
+
* Uses reference equality to find the entry
|
|
151
|
+
*
|
|
152
|
+
* @param entity - The entity to find the entry for
|
|
153
|
+
* @returns EntityEntry if entity is tracked, undefined otherwise
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* const entry = repository.Entry(task);
|
|
157
|
+
* if (entry?.state === EntityState.Modified) {
|
|
158
|
+
* console.log("Task has unsaved changes");
|
|
159
|
+
* }
|
|
160
|
+
*/
|
|
161
|
+
Entry<T>(entity: T): EntityEntry<T> | undefined;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Factory function to create a DbContext with Proxy-based property access
|
|
165
|
+
* Allows accessing collections via dot notation: context.tasks, context.users, etc.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* const context = createDbContext(db, createDbSet);
|
|
170
|
+
* const tasks = context.Set("tasks"); // explicit access
|
|
171
|
+
* const tasks2 = context.tasks; // proxy access
|
|
172
|
+
* await context.tasks.Add({ text: "New" });
|
|
173
|
+
* await context.SaveChangesAsync();
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function createDbContext<DataModel extends Record<string, any>>(db: IDatabaseClient<DataModel, any>, createDbSet: <K extends keyof DataModel & string>(collection: K, changeTracker: ChangeTracker) => DbSet<DataModel[K]>, sharedChangeTracker?: ChangeTracker): DbContext<DataModel> & DataModel;
|
|
177
|
+
//# sourceMappingURL=ef-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ef-core.d.ts","sourceRoot":"","sources":["../../src/repository/ef-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EF Core Repository Pattern Implementation
|
|
4
|
+
*
|
|
5
|
+
* This module implements Entity Framework Core-style change tracking and Unit of Work patterns.
|
|
6
|
+
* It provides:
|
|
7
|
+
* - EntityState: Enum tracking entity state (Detached, Unchanged, Deleted, Modified, Added)
|
|
8
|
+
* - EntityEntry: Represents a tracked entity with state and original values
|
|
9
|
+
* - ChangeTracker: Manages tracked entities and their states
|
|
10
|
+
* - DbContext: Unit of Work with DbSets and SaveChangesAsync for transactional batching
|
|
11
|
+
*
|
|
12
|
+
* @module repository/ef-core
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DbContext = exports.ChangeTracker = exports.EntityEntry = exports.EntityState = void 0;
|
|
16
|
+
exports.createDbContext = createDbContext;
|
|
17
|
+
const context_js_1 = require("../engine/context.js");
|
|
18
|
+
/**
|
|
19
|
+
* Entity state enum following EF Core conventions
|
|
20
|
+
* Values match EF Core for consistency (0-4)
|
|
21
|
+
*/
|
|
22
|
+
var EntityState;
|
|
23
|
+
(function (EntityState) {
|
|
24
|
+
/** Entity is not being tracked */
|
|
25
|
+
EntityState[EntityState["Detached"] = 0] = "Detached";
|
|
26
|
+
/** Entity is tracked but unchanged */
|
|
27
|
+
EntityState[EntityState["Unchanged"] = 1] = "Unchanged";
|
|
28
|
+
/** Entity is marked for deletion */
|
|
29
|
+
EntityState[EntityState["Deleted"] = 2] = "Deleted";
|
|
30
|
+
/** Entity has been modified */
|
|
31
|
+
EntityState[EntityState["Modified"] = 3] = "Modified";
|
|
32
|
+
/** Entity is newly added */
|
|
33
|
+
EntityState[EntityState["Added"] = 4] = "Added";
|
|
34
|
+
})(EntityState || (exports.EntityState = EntityState = {}));
|
|
35
|
+
/**
|
|
36
|
+
* Represents a tracked entity with state and original values
|
|
37
|
+
* Similar to EF Core's EntityEntry<T>
|
|
38
|
+
*/
|
|
39
|
+
class EntityEntry {
|
|
40
|
+
entity;
|
|
41
|
+
_state;
|
|
42
|
+
_originalValues;
|
|
43
|
+
constructor(entity, initialState = EntityState.Added, originalValues = {}) {
|
|
44
|
+
this.entity = entity;
|
|
45
|
+
this._state = initialState;
|
|
46
|
+
this._originalValues = originalValues;
|
|
47
|
+
}
|
|
48
|
+
/** Get the current state of the entity */
|
|
49
|
+
get state() {
|
|
50
|
+
return this._state;
|
|
51
|
+
}
|
|
52
|
+
/** Get original values for modified properties */
|
|
53
|
+
get originalValues() {
|
|
54
|
+
return { ...this._originalValues };
|
|
55
|
+
}
|
|
56
|
+
/** Get the entity ID (uses _id property) */
|
|
57
|
+
get id() {
|
|
58
|
+
const entityWithId = this.entity;
|
|
59
|
+
return entityWithId._id;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Detach the entity from tracking
|
|
63
|
+
* State becomes Detached, no changes will be saved
|
|
64
|
+
*/
|
|
65
|
+
detach() {
|
|
66
|
+
this._state = EntityState.Detached;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Mark the entity for deletion
|
|
70
|
+
* - If entity was Added, it becomes Detached (not saved then deleted)
|
|
71
|
+
* - Otherwise, state becomes Deleted
|
|
72
|
+
*/
|
|
73
|
+
markDeleted() {
|
|
74
|
+
if (this._state === EntityState.Added) {
|
|
75
|
+
this._state = EntityState.Detached;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this._state = EntityState.Deleted;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Mark the entity as modified
|
|
83
|
+
* Only transitions from Unchanged to Modified
|
|
84
|
+
* Other states remain unchanged (EF Core behavior)
|
|
85
|
+
*/
|
|
86
|
+
markModified() {
|
|
87
|
+
if (this._state === EntityState.Unchanged) {
|
|
88
|
+
this._state = EntityState.Modified;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Mark the entity as unchanged
|
|
93
|
+
* Called after SaveChangesAsync to reset state
|
|
94
|
+
*/
|
|
95
|
+
markUnchanged() {
|
|
96
|
+
this._state = EntityState.Unchanged;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Set the state directly (used by ChangeTracker)
|
|
100
|
+
* @internal
|
|
101
|
+
*/
|
|
102
|
+
setState(state) {
|
|
103
|
+
this._state = state;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.EntityEntry = EntityEntry;
|
|
107
|
+
/**
|
|
108
|
+
* Tracks entities and their states, similar to EF Core's ChangeTracker
|
|
109
|
+
*/
|
|
110
|
+
class ChangeTracker {
|
|
111
|
+
_entries = new Map();
|
|
112
|
+
_tempIdCounter = 0;
|
|
113
|
+
/**
|
|
114
|
+
* Track an entity in the change tracker
|
|
115
|
+
* - If entity has _id and is already tracked, update the entry
|
|
116
|
+
* - If entity has no _id, generate a temporary ID
|
|
117
|
+
* - Returns the EntityEntry for the entity
|
|
118
|
+
*/
|
|
119
|
+
track(collection, entity, state = EntityState.Added) {
|
|
120
|
+
const entityWithId = entity;
|
|
121
|
+
const id = entityWithId._id ?? this.generateTempId();
|
|
122
|
+
// Set temp ID on entity if it doesn't have one
|
|
123
|
+
if (!entityWithId._id) {
|
|
124
|
+
entityWithId._id = id;
|
|
125
|
+
}
|
|
126
|
+
const key = `${collection}:${id}`;
|
|
127
|
+
// Check if already tracked
|
|
128
|
+
const existing = this._entries.get(key);
|
|
129
|
+
if (existing) {
|
|
130
|
+
// Update existing entry if state is different
|
|
131
|
+
if (existing.state !== state) {
|
|
132
|
+
// Update state in place instead of creating new entry
|
|
133
|
+
existing.setState(state);
|
|
134
|
+
}
|
|
135
|
+
return existing;
|
|
136
|
+
}
|
|
137
|
+
// Set _collection on entity
|
|
138
|
+
if (!entityWithId._collection) {
|
|
139
|
+
entityWithId._collection = collection;
|
|
140
|
+
}
|
|
141
|
+
// Create new entry
|
|
142
|
+
const entry = new EntityEntry(entity, state);
|
|
143
|
+
this._entries.set(key, entry);
|
|
144
|
+
return entry;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get the EntityEntry for a tracked entity
|
|
148
|
+
* - First tries to find by collection and ID
|
|
149
|
+
* - If not found, searches by entity reference for new entities
|
|
150
|
+
*/
|
|
151
|
+
getEntry(collection, id, entity) {
|
|
152
|
+
if (id) {
|
|
153
|
+
const key = `${collection}:${id}`;
|
|
154
|
+
const entry = this._entries.get(key);
|
|
155
|
+
if (entry)
|
|
156
|
+
return entry;
|
|
157
|
+
}
|
|
158
|
+
// Search by reference for entities without _id (new entities)
|
|
159
|
+
if (entity) {
|
|
160
|
+
for (const entry of this._entries.values()) {
|
|
161
|
+
if (entry.entity === entity) {
|
|
162
|
+
return entry;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get all tracked entries, optionally filtered by state
|
|
170
|
+
*/
|
|
171
|
+
entries(state) {
|
|
172
|
+
if (state === undefined) {
|
|
173
|
+
return Array.from(this._entries.values()).filter(e => e.state !== EntityState.Detached);
|
|
174
|
+
}
|
|
175
|
+
return Array.from(this._entries.values()).filter(e => e.state === state);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Check if there are any pending changes
|
|
179
|
+
* Returns true if any entity is Added, Modified, or Deleted
|
|
180
|
+
*/
|
|
181
|
+
hasChanges() {
|
|
182
|
+
for (const entry of this._entries.values()) {
|
|
183
|
+
if (entry.state === EntityState.Added ||
|
|
184
|
+
entry.state === EntityState.Modified ||
|
|
185
|
+
entry.state === EntityState.Deleted) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get entries grouped by collection name
|
|
193
|
+
*/
|
|
194
|
+
entriesByCollection() {
|
|
195
|
+
const grouped = new Map();
|
|
196
|
+
for (const [key, entry] of this._entries) {
|
|
197
|
+
if (entry.state === EntityState.Detached)
|
|
198
|
+
continue;
|
|
199
|
+
const colonIndex = key.indexOf(':');
|
|
200
|
+
if (colonIndex > 0) {
|
|
201
|
+
const collection = key.slice(0, colonIndex);
|
|
202
|
+
const entries = grouped.get(collection) ?? [];
|
|
203
|
+
entries.push(entry);
|
|
204
|
+
grouped.set(collection, entries);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return grouped;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Accept all changes - marks Added/Modified as Unchanged, removes Deleted entries
|
|
211
|
+
* Called after successful SaveChangesAsync
|
|
212
|
+
*/
|
|
213
|
+
acceptAllChanges() {
|
|
214
|
+
for (const [key, entry] of this._entries) {
|
|
215
|
+
if (entry.state === EntityState.Added || entry.state === EntityState.Modified) {
|
|
216
|
+
entry.markUnchanged();
|
|
217
|
+
}
|
|
218
|
+
else if (entry.state === EntityState.Deleted) {
|
|
219
|
+
this._entries.delete(key);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Clear all tracked entries
|
|
225
|
+
*/
|
|
226
|
+
clear() {
|
|
227
|
+
this._entries.clear();
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Generate a temporary ID for entities without _id
|
|
231
|
+
*/
|
|
232
|
+
generateTempId() {
|
|
233
|
+
return `_temp_${++this._tempIdCounter}`;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
exports.ChangeTracker = ChangeTracker;
|
|
237
|
+
/**
|
|
238
|
+
* DbContext implements Unit of Work pattern with change tracking
|
|
239
|
+
* Provides DbSets for each collection and SaveChangesAsync for transactional batching
|
|
240
|
+
*/
|
|
241
|
+
class DbContext {
|
|
242
|
+
_db;
|
|
243
|
+
_createDbSet;
|
|
244
|
+
_dbSets = new Map();
|
|
245
|
+
_changeTracker;
|
|
246
|
+
constructor(_db, _createDbSet, sharedChangeTracker) {
|
|
247
|
+
this._db = _db;
|
|
248
|
+
this._createDbSet = _createDbSet;
|
|
249
|
+
this._changeTracker = sharedChangeTracker ?? new ChangeTracker();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get the ChangeTracker for this context
|
|
253
|
+
*/
|
|
254
|
+
get ChangeTracker() {
|
|
255
|
+
return this._changeTracker;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get a DbSet for the specified collection
|
|
259
|
+
* Caches DbSet instances for repeated access
|
|
260
|
+
*/
|
|
261
|
+
Set(collection) {
|
|
262
|
+
let dbSet = this._dbSets.get(collection);
|
|
263
|
+
if (!dbSet) {
|
|
264
|
+
dbSet = this._createDbSet(collection, this._changeTracker);
|
|
265
|
+
this._dbSets.set(collection, dbSet);
|
|
266
|
+
}
|
|
267
|
+
return dbSet;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Save all pending changes to the database in a transaction
|
|
271
|
+
* - Inserts Added entities
|
|
272
|
+
* - Updates Modified entities
|
|
273
|
+
* - Deletes Deleted entities
|
|
274
|
+
* - Applies schema enforcement (auto-timestamps) before database operations
|
|
275
|
+
* - Returns the number of entities affected
|
|
276
|
+
*/
|
|
277
|
+
async SaveChangesAsync() {
|
|
278
|
+
if (!this._changeTracker.hasChanges()) {
|
|
279
|
+
return 0;
|
|
280
|
+
}
|
|
281
|
+
const entriesByCollection = this._changeTracker.entriesByCollection();
|
|
282
|
+
let affectedCount = 0;
|
|
283
|
+
const affectedCollections = new Set();
|
|
284
|
+
// Run all operations in a transaction
|
|
285
|
+
await this._db.runInTransaction(async (txDb) => {
|
|
286
|
+
for (const [collection, entries] of entriesByCollection) {
|
|
287
|
+
for (const entry of entries) {
|
|
288
|
+
switch (entry.state) {
|
|
289
|
+
case EntityState.Added: {
|
|
290
|
+
const entity = entry.entity;
|
|
291
|
+
const now = new Date();
|
|
292
|
+
// Apply schema enforcement: auto-generate timestamps
|
|
293
|
+
if (!entity.createdAt) {
|
|
294
|
+
entity.createdAt = now;
|
|
295
|
+
}
|
|
296
|
+
if (!entity.updatedAt) {
|
|
297
|
+
entity.updatedAt = now;
|
|
298
|
+
}
|
|
299
|
+
const { _collection, ...toInsert } = entity;
|
|
300
|
+
const id = await txDb.insert(collection, toInsert);
|
|
301
|
+
// Update entity with generated ID
|
|
302
|
+
if (typeof entity === 'object' && entity !== null) {
|
|
303
|
+
entity._id = id;
|
|
304
|
+
}
|
|
305
|
+
// Track collection for reactivity
|
|
306
|
+
affectedCollections.add(String(collection));
|
|
307
|
+
affectedCount++;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
case EntityState.Modified: {
|
|
311
|
+
const entity = entry.entity;
|
|
312
|
+
if (!entity._id) {
|
|
313
|
+
throw new Error('Modified entity must have an _id');
|
|
314
|
+
}
|
|
315
|
+
// Apply schema enforcement: auto-update updatedAt
|
|
316
|
+
entity.updatedAt = new Date();
|
|
317
|
+
const { _id, _collection, originalValues, ...toUpdate } = entity;
|
|
318
|
+
// Only update changed fields
|
|
319
|
+
await txDb.updateMany(collection, { _id }, toUpdate);
|
|
320
|
+
// Track collection for reactivity
|
|
321
|
+
affectedCollections.add(String(collection));
|
|
322
|
+
affectedCount++;
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
case EntityState.Deleted: {
|
|
326
|
+
const entity = entry.entity;
|
|
327
|
+
if (!entity._id) {
|
|
328
|
+
throw new Error('Deleted entity must have an _id');
|
|
329
|
+
}
|
|
330
|
+
await txDb.deleteMany(collection, { _id: entity._id });
|
|
331
|
+
// Track collection for reactivity
|
|
332
|
+
affectedCollections.add(String(collection));
|
|
333
|
+
affectedCount++;
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
// Explicitly track writes for reactivity
|
|
341
|
+
// This ensures real-time updates work when using Add/Update/Remove + SaveChangesAsync
|
|
342
|
+
const ctx = context_js_1.executionContext.getStore();
|
|
343
|
+
if (ctx && ctx.trackWrite) {
|
|
344
|
+
for (const collection of affectedCollections) {
|
|
345
|
+
ctx.trackWrite(`collection:${collection}`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Accept all changes after successful save
|
|
349
|
+
this._changeTracker.acceptAllChanges();
|
|
350
|
+
return affectedCount;
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get the EntityEntry for a tracked entity
|
|
354
|
+
* Uses reference equality to find the entry
|
|
355
|
+
*
|
|
356
|
+
* @param entity - The entity to find the entry for
|
|
357
|
+
* @returns EntityEntry if entity is tracked, undefined otherwise
|
|
358
|
+
*
|
|
359
|
+
* @example
|
|
360
|
+
* const entry = repository.Entry(task);
|
|
361
|
+
* if (entry?.state === EntityState.Modified) {
|
|
362
|
+
* console.log("Task has unsaved changes");
|
|
363
|
+
* }
|
|
364
|
+
*/
|
|
365
|
+
Entry(entity) {
|
|
366
|
+
for (const entry of this._changeTracker.entries()) {
|
|
367
|
+
if (entry.entity === entity) {
|
|
368
|
+
return entry;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
return undefined;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
exports.DbContext = DbContext;
|
|
375
|
+
/**
|
|
376
|
+
* Factory function to create a DbContext with Proxy-based property access
|
|
377
|
+
* Allows accessing collections via dot notation: context.tasks, context.users, etc.
|
|
378
|
+
*
|
|
379
|
+
* @example
|
|
380
|
+
* ```ts
|
|
381
|
+
* const context = createDbContext(db, createDbSet);
|
|
382
|
+
* const tasks = context.Set("tasks"); // explicit access
|
|
383
|
+
* const tasks2 = context.tasks; // proxy access
|
|
384
|
+
* await context.tasks.Add({ text: "New" });
|
|
385
|
+
* await context.SaveChangesAsync();
|
|
386
|
+
* ```
|
|
387
|
+
*/
|
|
388
|
+
function createDbContext(db, createDbSet, sharedChangeTracker) {
|
|
389
|
+
const context = new DbContext(db, createDbSet, sharedChangeTracker);
|
|
390
|
+
return new Proxy(context, {
|
|
391
|
+
get(target, prop) {
|
|
392
|
+
// Check if property exists on DbContext (ChangeTracker, Set, SaveChangesAsync)
|
|
393
|
+
if (prop in target) {
|
|
394
|
+
return target[prop];
|
|
395
|
+
}
|
|
396
|
+
// Otherwise, treat as collection name and return DbSet
|
|
397
|
+
if (typeof prop === "string") {
|
|
398
|
+
return target.Set(prop);
|
|
399
|
+
}
|
|
400
|
+
return undefined;
|
|
401
|
+
},
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
//# sourceMappingURL=ef-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ef-core.js","sourceRoot":"","sources":["../../src/repository/ef-core.ts"],"names":[],"mappings":"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"}
|