bazis 0.96.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 +146 -0
- package/cli/build.ts +147 -0
- package/cli/codegen.ts +40 -0
- package/cli/generateModule.ts +187 -0
- package/cli/generateProject.ts +183 -0
- package/cli/main.ts +125 -0
- package/cli/moduleRegistration.ts +127 -0
- package/cli/naming.ts +124 -0
- package/cli/parseCli.ts +151 -0
- package/cli/templates/module.ts +497 -0
- package/cli/templates/pack.ts +76 -0
- package/cli/templates/passport.ts +178 -0
- package/core/agent/AgentContextBuilder.ts +567 -0
- package/core/agent/AgentDataDefinition.ts +8 -0
- package/core/agent/AgentRegistry.ts +539 -0
- package/core/agent/AgentRuntime.ts +47 -0
- package/core/agent/AgentToolExecutor.ts +2130 -0
- package/core/agent/AgentToolHooks.ts +39 -0
- package/core/agent/ModelProvider.ts +21 -0
- package/core/agent/README.md +229 -0
- package/core/agent/Tool.contract.ts +20 -0
- package/core/agent/decorators/Agent.ts +11 -0
- package/core/agent/decorators/Prompt.ts +11 -0
- package/core/agent/decorators/Task.ts +29 -0
- package/core/agent/decorators/Tool.ts +12 -0
- package/core/agent/errors.ts +43 -0
- package/core/agent/generated/catalog.ts +26 -0
- package/core/agent/index.ts +170 -0
- package/core/agent/internal/AgentExecutionDriver.ts +1497 -0
- package/core/agent/internal/AgentExecutionState.ts +775 -0
- package/core/agent/internal/AgentJsonSchema.ts +150 -0
- package/core/agent/internal/AgentModelBinding.ts +57 -0
- package/core/agent/internal/Schema.contract.ts +36 -0
- package/core/agent/internal/ToolAudit.projector.ts +163 -0
- package/core/agent/internal/ToolContract.validator.ts +102 -0
- package/core/agent/metadata.ts +398 -0
- package/core/agent/moduleContributions-v1.ts +113 -0
- package/core/agent/semantic.ts +903 -0
- package/core/agent/session/codec.ts +33 -0
- package/core/agent/session/contracts.ts +96 -0
- package/core/agent/session/entities.ts +84 -0
- package/core/agent/session/protector.ts +92 -0
- package/core/app/index.ts +5 -0
- package/core/app/runApp.ts +293 -0
- package/core/app/ui/index.ts +29 -0
- package/core/app/ui/uiProfileResolver.ts +966 -0
- package/core/app/ui/uiSurfaceHosting.ts +38 -0
- package/core/app/ui/uiSurfaceHttp.ts +476 -0
- package/core/background/BackgroundService.ts +223 -0
- package/core/background/backgroundModule.ts +42 -0
- package/core/background/decorator.ts +43 -0
- package/core/background/delay.ts +27 -0
- package/core/background/index.ts +15 -0
- package/core/cache/COMPATIBILITY.md +13 -0
- package/core/cache/ICache.ts +71 -0
- package/core/cache/MemoryCache.ts +394 -0
- package/core/cache/README.md +83 -0
- package/core/cache/SPEC.md +1355 -0
- package/core/cache/cacheModule.ts +21 -0
- package/core/cache/decorators/Cacheable.ts +38 -0
- package/core/cache/decorators/CacheableRedis.ts +39 -0
- package/core/cache/decorators/OutputCache.ts +33 -0
- package/core/cache/decorators/OutputRedisCache.ts +33 -0
- package/core/cache/decorators/cacheableMetadata.ts +78 -0
- package/core/cache/decorators/cacheableRedisMetadata.ts +81 -0
- package/core/cache/decorators/outputCacheMetadata.ts +71 -0
- package/core/cache/decorators/outputRedisCacheMetadata.ts +77 -0
- package/core/cache/di/classProviderHook.ts +26 -0
- package/core/cache/distributed/CacheCodec.ts +5 -0
- package/core/cache/distributed/DistributedCache.ts +403 -0
- package/core/cache/distributed/DistributedCacheDriver.ts +83 -0
- package/core/cache/distributed/DistributedCacheStores.ts +28 -0
- package/core/cache/distributed/IDistributedCache.ts +40 -0
- package/core/cache/distributed/NamedCacheRegistry.ts +23 -0
- package/core/cache/distributed/codecs.ts +32 -0
- package/core/cache/distributed/index.ts +19 -0
- package/core/cache/errors/CacheError.ts +16 -0
- package/core/cache/http/CachedHttpPayload.ts +213 -0
- package/core/cache/http/applyClientCacheHeaders.ts +61 -0
- package/core/cache/http/buildOutputCacheKey.ts +154 -0
- package/core/cache/http/buildRedisOutputCacheKey.ts +16 -0
- package/core/cache/http/composeOutputCache.ts +130 -0
- package/core/cache/http/outputCacheMiddleware.ts +111 -0
- package/core/cache/http/outputCacheSecurityWarning.ts +58 -0
- package/core/cache/http/outputRedisCacheMiddleware.ts +118 -0
- package/core/cache/index.ts +97 -0
- package/core/cache/internal/AutomaticCacheKey.ts +106 -0
- package/core/cache/internal/CacheKeyGuard.ts +56 -0
- package/core/cache/internal/buildCacheProviders.ts +146 -0
- package/core/cache/internal/normalizeCacheKey.ts +9 -0
- package/core/cache/internal/resolveCachePolicy.ts +32 -0
- package/core/cache/internal/resolveCacheableRedisPolicy.ts +17 -0
- package/core/cache/internal/resolveOutputRedisCachePolicy.ts +17 -0
- package/core/cache/providers/cachedProviders.ts +68 -0
- package/core/cache/services/cacheProxy.ts +243 -0
- package/core/cache/tokens/CACHE_POLICIES.ts +5 -0
- package/core/cache/tokens/DISTRIBUTED_CACHE.ts +30 -0
- package/core/cache/types/CacheEntry.ts +7 -0
- package/core/cache/types/CacheOptions.ts +60 -0
- package/core/cache/types/CachePolicy.ts +74 -0
- package/core/cache/types/CacheableRedisOptions.ts +23 -0
- package/core/cache/types/OutputRedisCacheOptions.ts +25 -0
- package/core/di/README.md +104 -0
- package/core/di/ServiceCollection.ts +185 -0
- package/core/di/ServiceProvider.ts +689 -0
- package/core/di/ServiceScope.ts +61 -0
- package/core/di/container.ts +38 -0
- package/core/di/errors/AmbiguousNamedDependencyError.ts +10 -0
- package/core/di/errors/AsyncResolutionRequiredError.ts +12 -0
- package/core/di/errors/CircularDependencyError.ts +10 -0
- package/core/di/errors/ClassDependenciesMismatchError.ts +15 -0
- package/core/di/errors/DiError.ts +6 -0
- package/core/di/errors/InvalidProviderError.ts +9 -0
- package/core/di/errors/ModuleEncapsulationError.ts +7 -0
- package/core/di/errors/ModuleOwnedProviderConflictError.ts +8 -0
- package/core/di/errors/NamedDependencyNotFoundError.ts +7 -0
- package/core/di/errors/OptionsValidationError.ts +7 -0
- package/core/di/errors/ProviderNotFoundError.ts +10 -0
- package/core/di/errors/ScopeDisposedError.ts +7 -0
- package/core/di/errors/ScopedServiceFromRootError.ts +9 -0
- package/core/di/errors/ServiceValidationError.ts +7 -0
- package/core/di/errors/index.ts +14 -0
- package/core/di/extensions/activator.ts +39 -0
- package/core/di/extensions/application.ts +117 -0
- package/core/di/extensions/hosted-service.ts +124 -0
- package/core/di/extensions/index.ts +23 -0
- package/core/di/extensions/options-reloadable.ts +137 -0
- package/core/di/extensions/options.ts +91 -0
- package/core/di/extensions/service-provider-token.ts +21 -0
- package/core/di/index.ts +97 -0
- package/core/di/internal/GraphValidator.ts +119 -0
- package/core/di/internal/HostedServicePlan.ts +158 -0
- package/core/di/internal/NamedTokenIndex.ts +55 -0
- package/core/di/internal/OpenGenericRegistration.ts +14 -0
- package/core/di/internal/ResolutionPlan.ts +18 -0
- package/core/di/internal/ResolutionScopeState.ts +19 -0
- package/core/di/internal/ResolutionTracker.ts +153 -0
- package/core/di/internal/ScopeLifecycle.ts +159 -0
- package/core/di/internal/ServiceRegistration.ts +14 -0
- package/core/di/internal/ServiceRegistry.ts +252 -0
- package/core/di/internal/classDeps.ts +38 -0
- package/core/di/internal/disposal.ts +58 -0
- package/core/di/internal/providerDeps.ts +26 -0
- package/core/di/module/DI.ts +146 -0
- package/core/di/module/Global.ts +25 -0
- package/core/di/module/Module.ts +44 -0
- package/core/di/module/ModuleRegistrar.ts +69 -0
- package/core/di/module/autoDeps.ts +39 -0
- package/core/di/module/classProviderHooks.ts +66 -0
- package/core/di/module/collectModuleConfigs.ts +57 -0
- package/core/di/module/collectModuleControllers.ts +53 -0
- package/core/di/module/collectModuleUiProfiles.ts +53 -0
- package/core/di/module/createContainer.ts +261 -0
- package/core/di/module/encapsulation.ts +416 -0
- package/core/di/module/encapsulationHooks.ts +36 -0
- package/core/di/module/generatedProviderAttachments.ts +102 -0
- package/core/di/module/index.ts +41 -0
- package/core/di/module/moduleExtensions.ts +35 -0
- package/core/di/module/moduleNameBinding.ts +136 -0
- package/core/di/module/moduleOwnedProviderContributors.ts +409 -0
- package/core/di/module/providerSelection.ts +90 -0
- package/core/di/module/shortcuts.ts +111 -0
- package/core/di/module/types/BazisModule.ts +71 -0
- package/core/di/module/types/DiRegistrar.ts +24 -0
- package/core/di/module/types/index.ts +2 -0
- package/core/di/provider/index.ts +26 -0
- package/core/di/provider/providerGuards.ts +17 -0
- package/core/di/provider/types/AsyncFactoryProvider.ts +15 -0
- package/core/di/provider/types/ClassProvider.ts +18 -0
- package/core/di/provider/types/FactoryProvider.ts +20 -0
- package/core/di/provider/types/KeyedDependency.ts +20 -0
- package/core/di/provider/types/LazyDependency.ts +31 -0
- package/core/di/provider/types/NamedDependency.ts +16 -0
- package/core/di/provider/types/Provider.ts +10 -0
- package/core/di/provider/types/ProviderDefinition.ts +11 -0
- package/core/di/provider/types/ProviderDependencyList.ts +11 -0
- package/core/di/provider/types/ProviderLifetime.ts +1 -0
- package/core/di/provider/types/ProviderOwnership.ts +7 -0
- package/core/di/provider/types/ResolvedDeps.ts +18 -0
- package/core/di/provider/types/ValueProvider.ts +6 -0
- package/core/di/provider/types/index.ts +13 -0
- package/core/di/token.ts +84 -0
- package/core/di/types/BuildServiceProviderOptions.ts +4 -0
- package/core/di/types/ServiceKey.ts +1 -0
- package/core/di/types/ServiceResolver.ts +16 -0
- package/core/di/types/index.ts +3 -0
- package/core/generatedFingerprint.ts +60 -0
- package/core/generatedRuntime.ts +187 -0
- package/core/grpc/Grpc.module.ts +23 -0
- package/core/grpc/GrpcBinding.contract.ts +35 -0
- package/core/grpc/GrpcCall.ts +73 -0
- package/core/grpc/GrpcClient.ts +172 -0
- package/core/grpc/GrpcClientCall.ts +267 -0
- package/core/grpc/GrpcError.ts +19 -0
- package/core/grpc/GrpcRequest.binding.ts +45 -0
- package/core/grpc/GrpcServer.ts +204 -0
- package/core/grpc/GrpcStatus.ts +8 -0
- package/core/grpc/GrpcTransport.ts +174 -0
- package/core/grpc/Metadata.ts +73 -0
- package/core/grpc/ProtoCodec.ts +225 -0
- package/core/grpc/ProtoParser.ts +192 -0
- package/core/grpc/ProtoReader.ts +34 -0
- package/core/grpc/ProtoSchema.ts +52 -0
- package/core/grpc/ServerCredentials.ts +30 -0
- package/core/grpc/clientContracts.ts +39 -0
- package/core/grpc/contracts.ts +45 -0
- package/core/grpc/decorators.ts +82 -0
- package/core/grpc/grpcClientProvider.ts +9 -0
- package/core/grpc/index.ts +17 -0
- package/core/grpc/moduleControllers.ts +38 -0
- package/core/grpc/protobuf.ts +80 -0
- package/core/grpc/serviceDefinition.ts +20 -0
- package/core/http/Authorization/Authorize.ts +52 -0
- package/core/http/Authorization/authorizeComposer.ts +31 -0
- package/core/http/Authorization/metadata.ts +158 -0
- package/core/http/Binding/ParameterBinder.ts +109 -0
- package/core/http/Binding/RequestModel.ts +27 -0
- package/core/http/Binding/autoBindings.ts +125 -0
- package/core/http/Binding/bindings.ts +19 -0
- package/core/http/Binding/convert.ts +48 -0
- package/core/http/Binding/generatedSpec.ts +18 -0
- package/core/http/Binding/listModelRegistry.ts +47 -0
- package/core/http/Binding/modelBinder.ts +345 -0
- package/core/http/Binding/modelValidator.ts +30 -0
- package/core/http/Binding/requestModelRegistry.ts +117 -0
- package/core/http/Decorators/attributes.ts +92 -0
- package/core/http/Decorators/controller.ts +24 -0
- package/core/http/Decorators/metadata.ts +107 -0
- package/core/http/Decorators/routes.ts +131 -0
- package/core/http/Errors/HttpError.ts +92 -0
- package/core/http/HttpContext/HttpContext.ts +148 -0
- package/core/http/HttpContext/ResponseBuilder.ts +37 -0
- package/core/http/HttpContext/inspectableRedirects.ts +47 -0
- package/core/http/HttpContext/principal.ts +24 -0
- package/core/http/HttpContext/responseLifetime.ts +45 -0
- package/core/http/HttpServer.ts +627 -0
- package/core/http/Middleware/accessLog.ts +90 -0
- package/core/http/Middleware/cors.ts +160 -0
- package/core/http/Middleware/errorHandler.ts +100 -0
- package/core/http/Middleware/pipeline.ts +21 -0
- package/core/http/Middleware/rateLimit.ts +104 -0
- package/core/http/Middleware/securityHeaders.ts +118 -0
- package/core/http/Middleware/types.ts +19 -0
- package/core/http/OpenApi/generatedOpenApiRegistry.ts +102 -0
- package/core/http/OpenApi/openApiDocs.ts +75 -0
- package/core/http/OpenApi/openApiDocument.ts +356 -0
- package/core/http/README.md +139 -0
- package/core/http/Results/HttpResult.ts +19 -0
- package/core/http/Results/normalize.ts +93 -0
- package/core/http/Results/results.ts +70 -0
- package/core/http/Routing/Router.ts +201 -0
- package/core/http/Routing/RouterBuilder.ts +184 -0
- package/core/http/Routing/template.ts +112 -0
- package/core/http/SPEC.md +981 -0
- package/core/http/Versioning/VersionReader.ts +20 -0
- package/core/http/WebSocketUpgrade.ts +29 -0
- package/core/http/composeRouteMiddlewareComposers.ts +21 -0
- package/core/http/correlation/createCorrelationIdMiddleware.ts +79 -0
- package/core/http/httpModule.ts +48 -0
- package/core/http/index.ts +140 -0
- package/core/http/middlewareTokens.ts +48 -0
- package/core/http/options.ts +134 -0
- package/core/http-client/index.ts +105 -0
- package/core/infra/Infra.ts +158 -0
- package/core/infra/InfraConnector.ts +86 -0
- package/core/infra/InfraLifecycle.ts +86 -0
- package/core/infra/cache/RedisDistributedCacheBackend.ts +88 -0
- package/core/infra/cache/RedisDistributedCacheDriver.ts +186 -0
- package/core/infra/cache/index.ts +7 -0
- package/core/infra/connectorConfig.ts +29 -0
- package/core/infra/connectorIdentity.ts +39 -0
- package/core/infra/connectors/codex/CodexAppServer.ts +146 -0
- package/core/infra/connectors/codex/CodexAppServerClient.ts +258 -0
- package/core/infra/connectors/codex/CodexPolicy.ts +114 -0
- package/core/infra/connectors/codex/CodexTurn.ts +133 -0
- package/core/infra/connectors/codex/contracts.ts +82 -0
- package/core/infra/connectors/codex.ts +26 -0
- package/core/infra/connectors/llm.ts +78 -0
- package/core/infra/connectors/llmRouter.ts +443 -0
- package/core/infra/connectors/openaiCompatible.ts +590 -0
- package/core/infra/connectors/openaiTextStream.ts +134 -0
- package/core/infra/connectors/opensearch.ts +307 -0
- package/core/infra/connectors/postgres.ts +105 -0
- package/core/infra/connectors/redis.ts +132 -0
- package/core/infra/index.ts +58 -0
- package/core/kernel/ApplicationLifetime.ts +91 -0
- package/core/kernel/Bazis.ts +73 -0
- package/core/kernel/Environment.ts +53 -0
- package/core/kernel/Kernel.ts +391 -0
- package/core/kernel/KernelBuilder.ts +172 -0
- package/core/kernel/LifecycleCoordinator.ts +204 -0
- package/core/kernel/README.md +66 -0
- package/core/kernel/SupervisedHostedService.ts +147 -0
- package/core/kernel/config/ConfigRegistry.ts +48 -0
- package/core/kernel/config/Configuration.ts +110 -0
- package/core/kernel/config/README.md +62 -0
- package/core/kernel/config/Secret.ts +29 -0
- package/core/kernel/config/addConfigOptions.ts +63 -0
- package/core/kernel/config/defineConfig.ts +211 -0
- package/core/kernel/config/sources.ts +123 -0
- package/core/kernel/correlation/requestContext.ts +57 -0
- package/core/kernel/errors/ConfigKeyMissingError.ts +7 -0
- package/core/kernel/errors/KernelError.ts +7 -0
- package/core/kernel/errors/ShutdownTimeoutError.ts +7 -0
- package/core/kernel/errors/StartupAbortedError.ts +7 -0
- package/core/kernel/errors/StartupTimeoutError.ts +7 -0
- package/core/kernel/errors/index.ts +5 -0
- package/core/kernel/events/EventBus.ts +140 -0
- package/core/kernel/events/EventToken.ts +17 -0
- package/core/kernel/events/eventSubscribers.ts +126 -0
- package/core/kernel/events/kernelEvents.ts +16 -0
- package/core/kernel/events/onEvent.ts +32 -0
- package/core/kernel/health/HealthCheckContracts.ts +42 -0
- package/core/kernel/health/HealthService.ts +93 -0
- package/core/kernel/index.ts +96 -0
- package/core/kernel/internal/awaitAbortable.ts +18 -0
- package/core/kernel/internal/awaitShutdown.ts +21 -0
- package/core/kernel/internal/reportDiagnosticFailure.ts +8 -0
- package/core/kernel/internal/validateTimeout.ts +8 -0
- package/core/kernel/lifecycleHooks.ts +18 -0
- package/core/kernel/logging/ConsoleLogger.ts +68 -0
- package/core/kernel/logging/Logger.ts +22 -0
- package/core/kernel/types/ConfigSource.ts +9 -0
- package/core/kernel/types/EnvironmentName.ts +1 -0
- package/core/kernel/types/KernelOptions.ts +23 -0
- package/core/kernel/types/LifecycleHook.ts +18 -0
- package/core/kernel/types/index.ts +4 -0
- package/core/orm/DATABASE_PROVIDER.ts +5 -0
- package/core/orm/OrmHostedPlan.validator.ts +55 -0
- package/core/orm/OrmLifecycle.ts +146 -0
- package/core/orm/OrmOwnedStoreLifecycle.ts +96 -0
- package/core/orm/buildOrmProviders.ts +152 -0
- package/core/orm/databaseConnector.ts +108 -0
- package/core/orm/encapsulationHook.ts +19 -0
- package/core/orm/index.ts +95 -0
- package/core/orm/listQuery.ts +198 -0
- package/core/orm/ormModule.ts +173 -0
- package/core/orm/ownedStoreContributions.ts +195 -0
- package/core/orm/registerRepositories.ts +27 -0
- package/core/orm/repository.ts +45 -0
- package/core/orm/strictSchemaHostedIdentity.ts +17 -0
- package/core/scripts/agent-codegen.ts +1166 -0
- package/core/scripts/di-generate-target.ts +90 -0
- package/core/scripts/di-generate.ts +1837 -0
- package/core/scripts/orm-predicate-codegen.ts +33 -0
- package/core/scripts/request-model-codegen.ts +326 -0
- package/core/websocket/DESIGN.md +297 -0
- package/core/websocket/WsRateLimiter.ts +101 -0
- package/core/websocket/adapter/adapter.interface.ts +45 -0
- package/core/websocket/adapter/in-memory.adapter.ts +190 -0
- package/core/websocket/adapter/redis-delivery-scripts.ts +135 -0
- package/core/websocket/adapter/redis-delivery-store.ts +86 -0
- package/core/websocket/adapter/redis-operations.ts +33 -0
- package/core/websocket/adapter/redis.adapter.ts +218 -0
- package/core/websocket/codec/binary.codec.ts +87 -0
- package/core/websocket/codec/json.codec.ts +34 -0
- package/core/websocket/codec/packet-codec.interface.ts +17 -0
- package/core/websocket/decorators.ts +165 -0
- package/core/websocket/explorer.ts +126 -0
- package/core/websocket/index.ts +78 -0
- package/core/websocket/middleware.ts +146 -0
- package/core/websocket/packet-codec.ts +75 -0
- package/core/websocket/reliable-delivery.ts +56 -0
- package/core/websocket/session-creation.ts +16 -0
- package/core/websocket/session-manager.ts +856 -0
- package/core/websocket/socket-wrapper.ts +314 -0
- package/core/websocket/topic-cache.ts +59 -0
- package/core/websocket/types.ts +122 -0
- package/core/websocket/websocketModule.ts +96 -0
- package/core/websocket/ws-dispatch.ts +123 -0
- package/core/websocket/ws-server.ts +1707 -0
- package/index.ts +281 -0
- package/library/boundary/diagnostics-v1.ts +136 -0
- package/library/boundary/index.ts +73 -0
- package/library/boundary/json/decodeBoundedJsonV1.ts +518 -0
- package/library/boundary/json/limits-v1.ts +46 -0
- package/library/boundary/json/normalizeBoundedJsonV1.ts +256 -0
- package/library/boundary/json/types-v1.ts +11 -0
- package/library/boundary/schema/boundarySchemaHashV1.ts +6 -0
- package/library/boundary/schema/collectBoundaryValueDiagnosticsV1.ts +325 -0
- package/library/boundary/schema/decodeBoundarySchemaV1.ts +646 -0
- package/library/boundary/schema/index.ts +8 -0
- package/library/boundary/schema/types-v1.ts +99 -0
- package/library/boundary/schema/validateBoundaryValueV1.ts +58 -0
- package/library/boundary/serialization/canonicalJsonV1.ts +66 -0
- package/library/http-client/HttpClient.ts +969 -0
- package/library/http-client/HttpClientFactory.ts +45 -0
- package/library/http-client/errors.ts +68 -0
- package/library/http-client/index.ts +43 -0
- package/library/http-client/interceptors.ts +40 -0
- package/library/http-client/progress.ts +62 -0
- package/library/http-client/redirectProtocol.ts +6 -0
- package/library/http-client/serialize.ts +133 -0
- package/library/http-client/types.ts +174 -0
- package/library/jsonapi/ListQueryError.ts +25 -0
- package/library/jsonapi/ListRequest.ts +37 -0
- package/library/jsonapi/decorators.ts +161 -0
- package/library/jsonapi/document.ts +124 -0
- package/library/jsonapi/index.ts +40 -0
- package/library/jsonapi/parseListQuery.ts +291 -0
- package/library/jsonapi/types.ts +125 -0
- package/library/jwt/JwtEncoder.ts +40 -0
- package/library/jwt/JwtKeyRing.ts +164 -0
- package/library/jwt/JwtValidator.ts +210 -0
- package/library/jwt/TokenIssuer.ts +149 -0
- package/library/jwt/TokenService.ts +51 -0
- package/library/jwt/base64url.ts +61 -0
- package/library/jwt/claims.ts +36 -0
- package/library/jwt/errors.ts +44 -0
- package/library/jwt/index.ts +59 -0
- package/library/jwt/limits.ts +8 -0
- package/library/jwt/signing/Hs256Algorithm.ts +62 -0
- package/library/jwt/signing/Rs256Algorithm.ts +133 -0
- package/library/jwt/signing/SigningAlgorithm.ts +18 -0
- package/library/jwt/signing/pem.ts +30 -0
- package/library/openapi/codegen.ts +875 -0
- package/library/openapi/document.ts +326 -0
- package/library/openapi/index.ts +13 -0
- package/library/openapi/types.ts +69 -0
- package/library/openapi/ui.ts +182 -0
- package/library/orm/DatabaseFacade.ts +209 -0
- package/library/orm/DbContext.ts +107 -0
- package/library/orm/DbContextFactory.ts +25 -0
- package/library/orm/DbContextOptions.ts +33 -0
- package/library/orm/Metadata/DynamicModelBuilder.ts +497 -0
- package/library/orm/Metadata/KeyTuple.ts +36 -0
- package/library/orm/Metadata/ModelBuilder.ts +299 -0
- package/library/orm/Metadata/OrmModel.ts +80 -0
- package/library/orm/Metadata/ValueConverter.ts +57 -0
- package/library/orm/Metadata/conventions.ts +54 -0
- package/library/orm/Metadata/decorators.ts +396 -0
- package/library/orm/Metadata/types.ts +140 -0
- package/library/orm/Providers/OwnedStoreCatalog.reader.ts +1802 -0
- package/library/orm/Providers/PostgresDialect.ts +234 -0
- package/library/orm/Providers/PostgresProvider.ts +1494 -0
- package/library/orm/Providers/PostgresSchema.decoder.ts +107 -0
- package/library/orm/Providers/limits.ts +29 -0
- package/library/orm/Providers/operationDeadline.ts +43 -0
- package/library/orm/Providers/ormOwnedStoreRuntime.ts +19 -0
- package/library/orm/Providers/ormTransactionRuntime.ts +117 -0
- package/library/orm/Providers/propertyConversion.ts +14 -0
- package/library/orm/Providers/resolvedForeignKey.ts +16 -0
- package/library/orm/Providers/transactionCallbacks.ts +45 -0
- package/library/orm/Providers/transactionOutcome.ts +82 -0
- package/library/orm/Providers/transactionScopes.ts +78 -0
- package/library/orm/Providers/types.ts +207 -0
- package/library/orm/Query/DbSet.ts +78 -0
- package/library/orm/Query/EntityQuery.ts +247 -0
- package/library/orm/Query/ImmediateMutations.ts +226 -0
- package/library/orm/Query/IncludeLoader.ts +200 -0
- package/library/orm/Query/QueryPlan.ts +55 -0
- package/library/orm/Query/SqlTranslator.ts +195 -0
- package/library/orm/Query/conditions.ts +127 -0
- package/library/orm/Query/materialize.ts +39 -0
- package/library/orm/README.md +256 -0
- package/library/orm/Repository/README.md +684 -0
- package/library/orm/Repository/Repository.ts +68 -0
- package/library/orm/Saving/CommandBuilder.ts +139 -0
- package/library/orm/Saving/ExecutionStrategy.ts +128 -0
- package/library/orm/Saving/SaveExecutor.ts +413 -0
- package/library/orm/Saving/applyConventions.ts +64 -0
- package/library/orm/Schema/CheckExpression.ts +327 -0
- package/library/orm/Schema/ExactSchemaVerifier.ts +168 -0
- package/library/orm/Schema/ExpectedSchema.ts +43 -0
- package/library/orm/Schema/MigrationRunner.ts +146 -0
- package/library/orm/Schema/Migrator.ts +73 -0
- package/library/orm/Schema/OrmOwnedStore.ts +123 -0
- package/library/orm/Schema/OwnedStoreAdmission.ts +752 -0
- package/library/orm/Schema/OwnedStoreCanonical.ts +273 -0
- package/library/orm/Schema/OwnedStoreCatalog.ts +1325 -0
- package/library/orm/Schema/SafeAdditiveSchema.ts +100 -0
- package/library/orm/Schema/SchemaAdmission.ts +62 -0
- package/library/orm/Schema/SchemaDiffer.ts +78 -0
- package/library/orm/Schema/formatSchemaDifferences.ts +62 -0
- package/library/orm/Schema/introspection.ts +52 -0
- package/library/orm/Schema/physicalColumnTypes.ts +37 -0
- package/library/orm/Schema/tableKey.ts +26 -0
- package/library/orm/Tracking/ChangeTracker.ts +448 -0
- package/library/orm/Tracking/EntityState.ts +13 -0
- package/library/orm/Transactions/OrmTransaction.ts +30 -0
- package/library/orm/Transactions/TransactionScopeCoordinator.ts +377 -0
- package/library/orm/errors.ts +190 -0
- package/library/orm/index.ts +162 -0
- package/library/orm/runtime.ts +14 -0
- package/library/redaction/index.ts +166 -0
- package/library/ui/UiProfile.ts +77 -0
- package/library/ui/compiled-v1.ts +131 -0
- package/library/ui/compiler/compileUiSurfaceV1.ts +717 -0
- package/library/ui/compiler/contracts-v1.ts +25 -0
- package/library/ui/compiler/index.ts +12 -0
- package/library/ui/compiler/openApiIndex.ts +246 -0
- package/library/ui/defineUiProfile.ts +340 -0
- package/library/ui/diagnostics-v1.ts +33 -0
- package/library/ui/index.ts +129 -0
- package/library/ui/profile-v1.ts +191 -0
- package/library/ui/serialization.ts +130 -0
- package/library/ui/uiProfileAuthoring.ts +289 -0
- package/library/ui/uiProfileAuthoringMetadata.ts +78 -0
- package/library/validation/MessageRegistry.ts +144 -0
- package/library/validation/README.md +62 -0
- package/library/validation/RuleCompiler.ts +183 -0
- package/library/validation/RuleEngine.ts +401 -0
- package/library/validation/SPEC.md +579 -0
- package/library/validation/ValidationError.ts +37 -0
- package/library/validation/ValidationResult.ts +63 -0
- package/library/validation/Validator.ts +101 -0
- package/library/validation/index.ts +16 -0
- package/library/validation/metadata.ts +69 -0
- package/library/validation/modelValidatorAdapter.ts +119 -0
- package/library/validation/types/ValidationCode.ts +69 -0
- package/library/validation/types/ValidatorOptions.ts +153 -0
- package/package.json +80 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import type { CheckAst, CheckScalar } from "./CheckExpression";
|
|
3
|
+
import type { OrmOwnedStoreDefinitionV1 } from "./OrmOwnedStore";
|
|
4
|
+
import type { ExpectedTable, OrmExpectedSchema } from "./ExpectedSchema";
|
|
5
|
+
import { OrmOwnedStoreAdmissionError } from "../errors";
|
|
6
|
+
type CanonicalValue = null | boolean | number | bigint | string | readonly CanonicalValue[] | {
|
|
7
|
+
readonly [key: string]: CanonicalValue;
|
|
8
|
+
};
|
|
9
|
+
const encoder = new TextEncoder();
|
|
10
|
+
const MAX_DEPTH = 64;
|
|
11
|
+
const MAX_MODEL_BYTES = 4 * 1024 * 1024;
|
|
12
|
+
const MAX_MODEL_NODES = 1_000_000;
|
|
13
|
+
const MAX_CHECK_NODES = 4096;
|
|
14
|
+
/** Private canonicalization shared by the future registry/catalog admission. */
|
|
15
|
+
export function canonicalOwnedStoreScopePreimageV1(definition: OrmOwnedStoreDefinitionV1): Buffer {
|
|
16
|
+
return safe(() => withDomain("bazis.orm-owned-store/scope-hash/v1\0", record({
|
|
17
|
+
contract: definition.contract, storeKey: definition.storeKey, formatVersion: BigInt(definition.formatVersion), ownedSchema: definition.ownedScope.schema, tablePrefix: definition.ownedScope.tablePrefix
|
|
18
|
+
})));
|
|
19
|
+
}
|
|
20
|
+
export function canonicalOwnedStoreScopeHashV1(definition: OrmOwnedStoreDefinitionV1): string {
|
|
21
|
+
return digest(canonicalOwnedStoreScopePreimageV1(definition));
|
|
22
|
+
}
|
|
23
|
+
export function canonicalOwnedStoreModelPreimageV1(definition: Pick<OrmOwnedStoreDefinitionV1, "contract" | "formatVersion">, schema: OrmExpectedSchema): Buffer {
|
|
24
|
+
return safe(() => {
|
|
25
|
+
if (definition.contract !== "bazis.orm-owned-store/v1" || typeof definition.formatVersion !== "number" || !Number.isSafeInteger(definition.formatVersion) || definition.formatVersion <= 0 || !schema || !Array.isArray(schema.tables))
|
|
26
|
+
throw ownedError();
|
|
27
|
+
const tables = [...schema.tables].sort((a, b) => comparePair(a.schema, a.table, b.schema, b.table)).map(canonicalTable);
|
|
28
|
+
return withDomain("bazis.orm-owned-store/model-hash/v1\0", record({ contract: definition.contract, formatVersion: BigInt(definition.formatVersion), tables }));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function canonicalOwnedStoreModelHashV1(definition: Pick<OrmOwnedStoreDefinitionV1, "contract" | "formatVersion">, schema: OrmExpectedSchema): string {
|
|
32
|
+
return digest(canonicalOwnedStoreModelPreimageV1(definition, schema));
|
|
33
|
+
}
|
|
34
|
+
export function canonicalOwnedStoreRegistryLockPreimageV1(): Buffer {
|
|
35
|
+
return Buffer.from("bazis.orm-owned-store/registry-lock/v1\0", "ascii");
|
|
36
|
+
}
|
|
37
|
+
export function canonicalOwnedStoreStoreLockPreimageV1(definition: OrmOwnedStoreDefinitionV1): Buffer {
|
|
38
|
+
return safe(() => withDomain("bazis.orm-owned-store/store-lock/v1\0", record({
|
|
39
|
+
schema: identifier(definition.ownedScope.schema), tablePrefix: identifier(definition.ownedScope.tablePrefix), storeKey: storeKey(definition.storeKey), formatVersion: BigInt(definition.formatVersion)
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
export function canonicalOwnedStoreScopeLockPreimageV1(scope: {
|
|
43
|
+
readonly schema: string;
|
|
44
|
+
readonly tablePrefix: string;
|
|
45
|
+
}): Buffer {
|
|
46
|
+
return safe(() => withDomain("bazis.orm-owned-store/scope-lock/v1\0", record({ schema: identifier(scope.schema), tablePrefix: identifier(scope.tablePrefix) })));
|
|
47
|
+
}
|
|
48
|
+
export function ownedStoreAdvisoryLockV1(preimage: Uint8Array): bigint {
|
|
49
|
+
return createHash("sha256").update(preimage).digest().readBigInt64BE(0);
|
|
50
|
+
}
|
|
51
|
+
function canonicalTable(table: ExpectedTable): CanonicalValue {
|
|
52
|
+
if (!table || !Array.isArray(table.columns) || !table.primaryKey || !Array.isArray(table.indexes) || !Array.isArray(table.foreignKeys) || !Array.isArray(table.checks))
|
|
53
|
+
throw ownedError();
|
|
54
|
+
return record({
|
|
55
|
+
schema: identifier(table.schema), table: identifier(table.table), columns: table.columns.map((column) => {
|
|
56
|
+
if (!column || typeof column.nullable !== "boolean")
|
|
57
|
+
throw ownedError();
|
|
58
|
+
return record({
|
|
59
|
+
column: identifier(column.column), physicalType: identifier(column.physicalType), nullable: column.nullable, default: canonicalDefault(column.default), generation: generation(column.generation)
|
|
60
|
+
});
|
|
61
|
+
}), primaryKey: record({ name: identifier(table.primaryKey.name), columns: identifiers(table.primaryKey.columns) }), indexes: [...table.indexes].sort((a, b) => compareText(a.name, b.name)).map((index) => {
|
|
62
|
+
if (!index || typeof index.unique !== "boolean" || index.method !== "btree")
|
|
63
|
+
throw ownedError();
|
|
64
|
+
return record({
|
|
65
|
+
name: identifier(index.name), columns: identifiers(index.columns), unique: index.unique, method: index.method
|
|
66
|
+
});
|
|
67
|
+
}), foreignKeys: [...table.foreignKeys].sort((a, b) => compareText(a.name, b.name)).map((foreignKey) => {
|
|
68
|
+
if (!foreignKey || !foreignKey.target || typeof foreignKey.onDelete !== "string" || typeof foreignKey.onUpdate !== "string")
|
|
69
|
+
throw ownedError();
|
|
70
|
+
return record({
|
|
71
|
+
name: identifier(foreignKey.name), columns: identifiers(foreignKey.columns), targetSchema: identifier(foreignKey.target.schema), targetTable: identifier(foreignKey.target.table), targetColumns: identifiers(foreignKey.targetColumns), onDelete: foreignKey.onDelete, onUpdate: foreignKey.onUpdate
|
|
72
|
+
});
|
|
73
|
+
}), checks: [...table.checks].sort((a, b) => compareText(a.name, b.name)).map((check) => record({ name: identifier(check.name), expression: canonicalCheck(check.expression as CheckAst) }))
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function canonicalDefault(value: {
|
|
77
|
+
readonly kind: string;
|
|
78
|
+
readonly value?: boolean | number | string;
|
|
79
|
+
}): CanonicalValue {
|
|
80
|
+
if (!value || typeof value !== "object")
|
|
81
|
+
throw ownedError();
|
|
82
|
+
if (value.kind === "boolean" && typeof value.value === "boolean")
|
|
83
|
+
return record({ kind: value.kind, value: value.value });
|
|
84
|
+
if (value.kind === "number" && typeof value.value === "number" && Number.isFinite(value.value))
|
|
85
|
+
return record({ kind: value.kind, value: value.value });
|
|
86
|
+
if (value.kind === "string" && typeof value.value === "string")
|
|
87
|
+
return record({ kind: value.kind, value: value.value });
|
|
88
|
+
if (value.kind === "none" || value.kind === "null" || value.kind === "currentTimestamp" || value.kind === "uuidV4")
|
|
89
|
+
return record({ kind: value.kind });
|
|
90
|
+
throw ownedError();
|
|
91
|
+
}
|
|
92
|
+
function canonicalCheck(ast: CheckAst): CanonicalValue {
|
|
93
|
+
let count = 0;
|
|
94
|
+
const visit = (node: CheckAst, depth: number): CanonicalValue => {
|
|
95
|
+
if (++count > MAX_CHECK_NODES || depth > MAX_DEPTH)
|
|
96
|
+
throw new Error("ORM_OWNED_STORE_IDENTITY_MISMATCH");
|
|
97
|
+
if (!node || typeof node !== "object" || typeof node.kind !== "string")
|
|
98
|
+
throw ownedError();
|
|
99
|
+
switch (node.kind) {
|
|
100
|
+
case "compare": {
|
|
101
|
+
if (!["=", "<>", ">", ">=", "<", "<="].includes(node.op) || typeof node.left !== "string")
|
|
102
|
+
throw ownedError();
|
|
103
|
+
const right = node.right;
|
|
104
|
+
if (typeof right === "string" && right.startsWith("\0"))
|
|
105
|
+
return record({
|
|
106
|
+
kind: node.kind, op: node.op, left: identifier(node.left), right: record({ kind: "column", column: identifier(right.slice(1)) })
|
|
107
|
+
});
|
|
108
|
+
if (!scalar(right))
|
|
109
|
+
throw ownedError();
|
|
110
|
+
return record({
|
|
111
|
+
kind: node.kind, op: node.op, left: identifier(node.left), right: record({ kind: "scalar", value: right })
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
case "in":
|
|
115
|
+
if (!Array.isArray(node.values) || !node.values.every(scalar))
|
|
116
|
+
throw ownedError();
|
|
117
|
+
return record({ kind: node.kind, left: identifier(node.left), values: [...node.values] });
|
|
118
|
+
case "null":
|
|
119
|
+
if (typeof node.not !== "boolean")
|
|
120
|
+
throw ownedError();
|
|
121
|
+
return record({ kind: node.kind, left: identifier(node.left), not: node.not });
|
|
122
|
+
case "and":
|
|
123
|
+
case "or": return record({ kind: node.kind, left: visit(node.left, depth + 1), right: visit(node.right, depth + 1) });
|
|
124
|
+
case "not": return record({ kind: node.kind, inner: visit(node.inner, depth + 1) });
|
|
125
|
+
default: throw ownedError();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
return visit(ast, 1);
|
|
129
|
+
}
|
|
130
|
+
function record(value: {
|
|
131
|
+
readonly [key: string]: CanonicalValue;
|
|
132
|
+
}): {
|
|
133
|
+
readonly [key: string]: CanonicalValue;
|
|
134
|
+
} {
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
function withDomain(domain: string, root: CanonicalValue): Buffer {
|
|
138
|
+
const state = { nodes: 0, bytes: Buffer.byteLength(domain, "ascii") };
|
|
139
|
+
const output = Buffer.concat([Buffer.from(domain, "ascii"), encode(root, 1, state)]);
|
|
140
|
+
return output;
|
|
141
|
+
}
|
|
142
|
+
function encode(value: CanonicalValue, depth: number, state: {
|
|
143
|
+
nodes: number;
|
|
144
|
+
bytes: number;
|
|
145
|
+
}, fieldName = false): Buffer {
|
|
146
|
+
if (!fieldName && ++state.nodes > MAX_MODEL_NODES)
|
|
147
|
+
throw ownedError();
|
|
148
|
+
if (value === null)
|
|
149
|
+
return charged(Buffer.from([0]), state);
|
|
150
|
+
if (value === false)
|
|
151
|
+
return charged(Buffer.from([1]), state);
|
|
152
|
+
if (value === true)
|
|
153
|
+
return charged(Buffer.from([2]), state);
|
|
154
|
+
if (typeof value === "bigint") {
|
|
155
|
+
if (value < 0n || value > 0xffffffffffffffffn)
|
|
156
|
+
throw ownedError();
|
|
157
|
+
const bytes = Buffer.alloc(9);
|
|
158
|
+
bytes[0] = 3;
|
|
159
|
+
bytes.writeBigUInt64BE(value, 1);
|
|
160
|
+
return charged(bytes, state);
|
|
161
|
+
}
|
|
162
|
+
if (typeof value === "number") {
|
|
163
|
+
if (!Number.isFinite(value))
|
|
164
|
+
throw ownedError();
|
|
165
|
+
const bytes = Buffer.alloc(9);
|
|
166
|
+
bytes[0] = 4;
|
|
167
|
+
bytes.writeDoubleBE(Object.is(value, -0) ? 0 : value, 1);
|
|
168
|
+
return charged(bytes, state);
|
|
169
|
+
}
|
|
170
|
+
if (typeof value === "string") {
|
|
171
|
+
if (!wellFormed(value))
|
|
172
|
+
throw ownedError();
|
|
173
|
+
const length = Buffer.byteLength(value, "utf8");
|
|
174
|
+
if (length > 0xffffffff)
|
|
175
|
+
throw ownedError();
|
|
176
|
+
charge(5 + length, state);
|
|
177
|
+
const size = Buffer.alloc(5);
|
|
178
|
+
size[0] = 5;
|
|
179
|
+
size.writeUInt32BE(length, 1);
|
|
180
|
+
return Buffer.concat([size, Buffer.from(encoder.encode(value))]);
|
|
181
|
+
}
|
|
182
|
+
if (Array.isArray(value)) {
|
|
183
|
+
if (value.length > 0xffffffff)
|
|
184
|
+
throw ownedError();
|
|
185
|
+
charge(5, state);
|
|
186
|
+
const head = Buffer.alloc(5);
|
|
187
|
+
head[0] = 6;
|
|
188
|
+
head.writeUInt32BE(value.length, 1);
|
|
189
|
+
return Buffer.concat([head, ...value.map((entry) => encode(entry, depth + 1, state))]);
|
|
190
|
+
}
|
|
191
|
+
const fields = Object.entries(value);
|
|
192
|
+
if (fields.length > 0xffffffff)
|
|
193
|
+
throw ownedError();
|
|
194
|
+
charge(5, state);
|
|
195
|
+
const head = Buffer.alloc(5);
|
|
196
|
+
head[0] = 7;
|
|
197
|
+
head.writeUInt32BE(fields.length, 1);
|
|
198
|
+
return Buffer.concat([
|
|
199
|
+
head, ...fields.flatMap(([name, entry]) => [encode(name, depth + 1, state, true), encode(entry, depth + 1, state)])
|
|
200
|
+
]);
|
|
201
|
+
}
|
|
202
|
+
function digest(value: Uint8Array): `sha256:${string}` {
|
|
203
|
+
return `sha256:${createHash("sha256").update(value).digest("hex")}`;
|
|
204
|
+
}
|
|
205
|
+
function compareText(left: string, right: string): number {
|
|
206
|
+
return Buffer.compare(Buffer.from(left, "utf8"), Buffer.from(right, "utf8"));
|
|
207
|
+
}
|
|
208
|
+
function comparePair(leftSchema: string, leftTable: string, rightSchema: string, rightTable: string): number {
|
|
209
|
+
return compareText(leftSchema, rightSchema) || compareText(leftTable, rightTable);
|
|
210
|
+
}
|
|
211
|
+
function wellFormed(value: string): boolean {
|
|
212
|
+
for (let index = 0; index < value.length; index++) {
|
|
213
|
+
const unit = value.charCodeAt(index);
|
|
214
|
+
if (unit >= 0xd800 && unit <= 0xdbff) {
|
|
215
|
+
const next = value.charCodeAt(index + 1);
|
|
216
|
+
if (!Number.isInteger(next) || next < 0xdc00 || next > 0xdfff)
|
|
217
|
+
return false;
|
|
218
|
+
index++;
|
|
219
|
+
}
|
|
220
|
+
else if (unit >= 0xdc00 && unit <= 0xdfff)
|
|
221
|
+
return false;
|
|
222
|
+
}
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
function identifier(value: unknown): string {
|
|
226
|
+
if (typeof value !== "string" || !wellFormed(value) || Buffer.byteLength(value, "utf8") < 1 || Buffer.byteLength(value, "utf8") > 63 || /[\u0000-\u001f\u007f-\u009f]/u.test(value))
|
|
227
|
+
throw ownedError();
|
|
228
|
+
return value;
|
|
229
|
+
}
|
|
230
|
+
function storeKey(value: unknown): string {
|
|
231
|
+
if (typeof value !== "string" || !wellFormed(value) || Buffer.byteLength(value, "utf8") < 1 || Buffer.byteLength(value, "utf8") > 128 || /[\u0000-\u001f\u007f-\u009f]/u.test(value))
|
|
232
|
+
throw ownedError();
|
|
233
|
+
return value;
|
|
234
|
+
}
|
|
235
|
+
function identifiers(value: unknown): readonly string[] {
|
|
236
|
+
if (!Array.isArray(value))
|
|
237
|
+
throw ownedError();
|
|
238
|
+
return value.map(identifier);
|
|
239
|
+
}
|
|
240
|
+
function generation(value: unknown): string {
|
|
241
|
+
if (value !== "none" && value !== "identityByDefault" && value !== "uuidDefault")
|
|
242
|
+
throw ownedError();
|
|
243
|
+
return value;
|
|
244
|
+
}
|
|
245
|
+
function scalar(value: unknown): value is CheckScalar {
|
|
246
|
+
return value === null || typeof value === "boolean" || (typeof value === "number" && Number.isFinite(value)) || (typeof value === "string" && wellFormed(value));
|
|
247
|
+
}
|
|
248
|
+
function charge(amount: number, state: {
|
|
249
|
+
bytes: number;
|
|
250
|
+
}): void {
|
|
251
|
+
if (!Number.isSafeInteger(amount) || amount < 0 || state.bytes > MAX_MODEL_BYTES - amount)
|
|
252
|
+
throw ownedError();
|
|
253
|
+
state.bytes += amount;
|
|
254
|
+
}
|
|
255
|
+
function charged(value: Buffer, state: {
|
|
256
|
+
bytes: number;
|
|
257
|
+
}): Buffer {
|
|
258
|
+
charge(value.length, state);
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
261
|
+
function ownedError(): OrmOwnedStoreAdmissionError {
|
|
262
|
+
return new OrmOwnedStoreAdmissionError("ORM_OWNED_STORE_IDENTITY_MISMATCH", "ORM_OWNED_STORE_IDENTITY_MISMATCH");
|
|
263
|
+
}
|
|
264
|
+
function safe<T>(work: () => T): T {
|
|
265
|
+
try {
|
|
266
|
+
return work();
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
if (error instanceof OrmOwnedStoreAdmissionError)
|
|
270
|
+
throw error;
|
|
271
|
+
throw ownedError();
|
|
272
|
+
}
|
|
273
|
+
}
|