pipework 0.1.0
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 +128 -0
- package/bin/pipework.js +5 -0
- package/dist/audit/emit.d.ts +3 -0
- package/dist/audit/emit.d.ts.map +1 -0
- package/dist/audit/emit.js +66 -0
- package/dist/audit/emit.js.map +1 -0
- package/dist/audit/index.d.ts +3 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +2 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/namespace.d.ts +5 -0
- package/dist/audit/namespace.d.ts.map +1 -0
- package/dist/audit/namespace.js +5 -0
- package/dist/audit/namespace.js.map +1 -0
- package/dist/audit/types.d.ts +17 -0
- package/dist/audit/types.d.ts.map +1 -0
- package/dist/audit/types.js +2 -0
- package/dist/audit/types.js.map +1 -0
- package/dist/auth/chain.d.ts +21 -0
- package/dist/auth/chain.d.ts.map +1 -0
- package/dist/auth/chain.js +45 -0
- package/dist/auth/chain.js.map +1 -0
- package/dist/auth/cookie.d.ts +18 -0
- package/dist/auth/cookie.d.ts.map +1 -0
- package/dist/auth/cookie.js +55 -0
- package/dist/auth/cookie.js.map +1 -0
- package/dist/auth/index.d.ts +10 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/multi-org.d.ts +68 -0
- package/dist/auth/multi-org.d.ts.map +1 -0
- package/dist/auth/multi-org.js +163 -0
- package/dist/auth/multi-org.js.map +1 -0
- package/dist/auth/namespace.d.ts +14 -0
- package/dist/auth/namespace.d.ts.map +1 -0
- package/dist/auth/namespace.js +14 -0
- package/dist/auth/namespace.js.map +1 -0
- package/dist/auth/sessions.d.ts +64 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +230 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/types.d.ts +14 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/behavior/audited.d.ts +5 -0
- package/dist/behavior/audited.d.ts.map +1 -0
- package/dist/behavior/audited.js +78 -0
- package/dist/behavior/audited.js.map +1 -0
- package/dist/behavior/cached.d.ts +7 -0
- package/dist/behavior/cached.d.ts.map +1 -0
- package/dist/behavior/cached.js +48 -0
- package/dist/behavior/cached.js.map +1 -0
- package/dist/behavior/compose.d.ts +4 -0
- package/dist/behavior/compose.d.ts.map +1 -0
- package/dist/behavior/compose.js +18 -0
- package/dist/behavior/compose.js.map +1 -0
- package/dist/behavior/index.d.ts +6 -0
- package/dist/behavior/index.d.ts.map +1 -0
- package/dist/behavior/index.js +5 -0
- package/dist/behavior/index.js.map +1 -0
- package/dist/behavior/namespace.d.ts +11 -0
- package/dist/behavior/namespace.d.ts.map +1 -0
- package/dist/behavior/namespace.js +11 -0
- package/dist/behavior/namespace.js.map +1 -0
- package/dist/behavior/types.d.ts +23 -0
- package/dist/behavior/types.d.ts.map +1 -0
- package/dist/behavior/types.js +2 -0
- package/dist/behavior/types.js.map +1 -0
- package/dist/behavior/versioned.d.ts +4 -0
- package/dist/behavior/versioned.d.ts.map +1 -0
- package/dist/behavior/versioned.js +39 -0
- package/dist/behavior/versioned.js.map +1 -0
- package/dist/cache/create.d.ts +3 -0
- package/dist/cache/create.d.ts.map +1 -0
- package/dist/cache/create.js +90 -0
- package/dist/cache/create.js.map +1 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +3 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/namespace.d.ts +7 -0
- package/dist/cache/namespace.d.ts.map +1 -0
- package/dist/cache/namespace.js +7 -0
- package/dist/cache/namespace.js.map +1 -0
- package/dist/cache/tenant.d.ts +21 -0
- package/dist/cache/tenant.d.ts.map +1 -0
- package/dist/cache/tenant.js +101 -0
- package/dist/cache/tenant.js.map +1 -0
- package/dist/cache/types.d.ts +22 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/cli/commands/check.d.ts +2 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +28 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +7 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +19 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/init.d.ts +2 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +33 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +7 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +45 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/errors.d.ts +2 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +11 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +84 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +10 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +16 -0
- package/dist/cli/output.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 +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load.d.ts +23 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +103 -0
- package/dist/config/load.js.map +1 -0
- package/dist/config/namespace.d.ts +38 -0
- package/dist/config/namespace.d.ts.map +1 -0
- package/dist/config/namespace.js +7 -0
- package/dist/config/namespace.js.map +1 -0
- package/dist/config/resolve.d.ts +8 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resolve.js +35 -0
- package/dist/config/resolve.js.map +1 -0
- package/dist/config/schema.d.ts +75 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +26 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/context/create.d.ts +20 -0
- package/dist/context/create.d.ts.map +1 -0
- package/dist/context/create.js +38 -0
- package/dist/context/create.js.map +1 -0
- package/dist/context/guard.d.ts +5 -0
- package/dist/context/guard.d.ts.map +1 -0
- package/dist/context/guard.js +30 -0
- package/dist/context/guard.js.map +1 -0
- package/dist/context/index.d.ts +5 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +4 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/store.d.ts +7 -0
- package/dist/context/store.d.ts.map +1 -0
- package/dist/context/store.js +18 -0
- package/dist/context/store.js.map +1 -0
- package/dist/context/types.d.ts +25 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +2 -0
- package/dist/context/types.js.map +1 -0
- package/dist/db/col/index.d.ts +2 -0
- package/dist/db/col/index.d.ts.map +1 -0
- package/dist/db/col/index.js +5 -0
- package/dist/db/col/index.js.map +1 -0
- package/dist/db/context.d.ts +4 -0
- package/dist/db/context.d.ts.map +1 -0
- package/dist/db/context.js +3 -0
- package/dist/db/context.js.map +1 -0
- package/dist/db/db.d.ts +6 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +50 -0
- package/dist/db/db.js.map +1 -0
- package/dist/db/filter.d.ts +46 -0
- package/dist/db/filter.d.ts.map +1 -0
- package/dist/db/filter.js +9 -0
- package/dist/db/filter.js.map +1 -0
- package/dist/db/generated/drizzle-orm/aggregate.d.ts +2 -0
- package/dist/db/generated/drizzle-orm/aggregate.d.ts.map +1 -0
- package/dist/db/generated/drizzle-orm/aggregate.js +5 -0
- package/dist/db/generated/drizzle-orm/aggregate.js.map +1 -0
- package/dist/db/generated/drizzle-orm/introspection.d.ts +2 -0
- package/dist/db/generated/drizzle-orm/introspection.d.ts.map +1 -0
- package/dist/db/generated/drizzle-orm/introspection.js +5 -0
- package/dist/db/generated/drizzle-orm/introspection.js.map +1 -0
- package/dist/db/generated/drizzle-orm/operator.d.ts +2 -0
- package/dist/db/generated/drizzle-orm/operator.d.ts.map +1 -0
- package/dist/db/generated/drizzle-orm/operator.js +5 -0
- package/dist/db/generated/drizzle-orm/operator.js.map +1 -0
- package/dist/db/generated/drizzle-orm/relation.d.ts +2 -0
- package/dist/db/generated/drizzle-orm/relation.d.ts.map +1 -0
- package/dist/db/generated/drizzle-orm/relation.js +5 -0
- package/dist/db/generated/drizzle-orm/relation.js.map +1 -0
- package/dist/db/generated/drizzle-orm/type.d.ts +3 -0
- package/dist/db/generated/drizzle-orm/type.d.ts.map +1 -0
- package/dist/db/generated/drizzle-orm/type.js +5 -0
- package/dist/db/generated/drizzle-orm/type.js.map +1 -0
- package/dist/db/generated/pg-core/introspection.d.ts +2 -0
- package/dist/db/generated/pg-core/introspection.d.ts.map +1 -0
- package/dist/db/generated/pg-core/introspection.js +5 -0
- package/dist/db/generated/pg-core/introspection.js.map +1 -0
- package/dist/db/generated/pg-core/set-operation.d.ts +2 -0
- package/dist/db/generated/pg-core/set-operation.d.ts.map +1 -0
- package/dist/db/generated/pg-core/set-operation.js +5 -0
- package/dist/db/generated/pg-core/set-operation.js.map +1 -0
- package/dist/db/generated/pg-core/type.d.ts +3 -0
- package/dist/db/generated/pg-core/type.d.ts.map +1 -0
- package/dist/db/generated/pg-core/type.js +5 -0
- package/dist/db/generated/pg-core/type.js.map +1 -0
- package/dist/db/identifiers.d.ts +3 -0
- package/dist/db/identifiers.d.ts.map +1 -0
- package/dist/db/identifiers.js +13 -0
- package/dist/db/identifiers.js.map +1 -0
- package/dist/db/idx/index.d.ts +2 -0
- package/dist/db/idx/index.d.ts.map +1 -0
- package/dist/db/idx/index.js +5 -0
- package/dist/db/idx/index.js.map +1 -0
- package/dist/db/index.d.ts +8 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +6 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/namespace.d.ts +66 -0
- package/dist/db/namespace.d.ts.map +1 -0
- package/dist/db/namespace.js +22 -0
- package/dist/db/namespace.js.map +1 -0
- package/dist/db/pool.d.ts +16 -0
- package/dist/db/pool.d.ts.map +1 -0
- package/dist/db/pool.js +36 -0
- package/dist/db/pool.js.map +1 -0
- package/dist/db/schema-features.d.ts +2 -0
- package/dist/db/schema-features.d.ts.map +1 -0
- package/dist/db/schema-features.js +4 -0
- package/dist/db/schema-features.js.map +1 -0
- package/dist/db/sql.d.ts +2 -0
- package/dist/db/sql.d.ts.map +1 -0
- package/dist/db/sql.js +2 -0
- package/dist/db/sql.js.map +1 -0
- package/dist/db/types.d.ts +7 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/di/builder.d.ts +60 -0
- package/dist/di/builder.d.ts.map +1 -0
- package/dist/di/builder.js +152 -0
- package/dist/di/builder.js.map +1 -0
- package/dist/di/index.d.ts +5 -0
- package/dist/di/index.d.ts.map +1 -0
- package/dist/di/index.js +5 -0
- package/dist/di/index.js.map +1 -0
- package/dist/di/resolve.d.ts +8 -0
- package/dist/di/resolve.d.ts.map +1 -0
- package/dist/di/resolve.js +76 -0
- package/dist/di/resolve.js.map +1 -0
- package/dist/di/types.d.ts +35 -0
- package/dist/di/types.d.ts.map +1 -0
- package/dist/di/types.js +2 -0
- package/dist/di/types.js.map +1 -0
- package/dist/drizzle/index.d.ts +3 -0
- package/dist/drizzle/index.d.ts.map +1 -0
- package/dist/drizzle/index.js +3 -0
- package/dist/drizzle/index.js.map +1 -0
- package/dist/errors/base.d.ts +7 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +9 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +3 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/namespace.d.ts +10 -0
- package/dist/errors/namespace.d.ts.map +1 -0
- package/dist/errors/namespace.js +10 -0
- package/dist/errors/namespace.js.map +1 -0
- package/dist/errors/types.d.ts +29 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +46 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/fitting/namespace.d.ts +5 -0
- package/dist/fitting/namespace.d.ts.map +1 -0
- package/dist/fitting/namespace.js +6 -0
- package/dist/fitting/namespace.js.map +1 -0
- package/dist/fixture/batch.d.ts +17 -0
- package/dist/fixture/batch.d.ts.map +1 -0
- package/dist/fixture/batch.js +47 -0
- package/dist/fixture/batch.js.map +1 -0
- package/dist/fixture/builder.d.ts +11 -0
- package/dist/fixture/builder.d.ts.map +1 -0
- package/dist/fixture/builder.js +12 -0
- package/dist/fixture/builder.js.map +1 -0
- package/dist/fixture/errors.d.ts +7 -0
- package/dist/fixture/errors.d.ts.map +1 -0
- package/dist/fixture/errors.js +9 -0
- package/dist/fixture/errors.js.map +1 -0
- package/dist/fixture/index.d.ts +9 -0
- package/dist/fixture/index.d.ts.map +1 -0
- package/dist/fixture/index.js +6 -0
- package/dist/fixture/index.js.map +1 -0
- package/dist/fixture/namespace.d.ts +15 -0
- package/dist/fixture/namespace.d.ts.map +1 -0
- package/dist/fixture/namespace.js +15 -0
- package/dist/fixture/namespace.js.map +1 -0
- package/dist/fixture/paginate.d.ts +13 -0
- package/dist/fixture/paginate.d.ts.map +1 -0
- package/dist/fixture/paginate.js +29 -0
- package/dist/fixture/paginate.js.map +1 -0
- package/dist/fixture/register.d.ts +16 -0
- package/dist/fixture/register.d.ts.map +1 -0
- package/dist/fixture/register.js +181 -0
- package/dist/fixture/register.js.map +1 -0
- package/dist/fixture/types.d.ts +69 -0
- package/dist/fixture/types.d.ts.map +1 -0
- package/dist/fixture/types.js +2 -0
- package/dist/fixture/types.js.map +1 -0
- package/dist/flow/namespace.d.ts +14 -0
- package/dist/flow/namespace.d.ts.map +1 -0
- package/dist/flow/namespace.js +14 -0
- package/dist/flow/namespace.js.map +1 -0
- package/dist/http/index.d.ts +4 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +3 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/middleware.d.ts +20 -0
- package/dist/http/middleware.d.ts.map +1 -0
- package/dist/http/middleware.js +62 -0
- package/dist/http/middleware.js.map +1 -0
- package/dist/http/namespace.d.ts +5 -0
- package/dist/http/namespace.d.ts.map +1 -0
- package/dist/http/namespace.js +5 -0
- package/dist/http/namespace.js.map +1 -0
- package/dist/http/response.d.ts +5 -0
- package/dist/http/response.d.ts.map +1 -0
- package/dist/http/response.js +22 -0
- package/dist/http/response.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 +362 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/types.d.ts +116 -0
- package/dist/http/types.d.ts.map +1 -0
- package/dist/http/types.js +2 -0
- package/dist/http/types.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/invariants/assert.d.ts +7 -0
- package/dist/invariants/assert.d.ts.map +1 -0
- package/dist/invariants/assert.js +21 -0
- package/dist/invariants/assert.js.map +1 -0
- package/dist/invariants/index.d.ts +2 -0
- package/dist/invariants/index.d.ts.map +1 -0
- package/dist/invariants/index.js +2 -0
- package/dist/invariants/index.js.map +1 -0
- package/dist/jobs/cron.d.ts +10 -0
- package/dist/jobs/cron.d.ts.map +1 -0
- package/dist/jobs/cron.js +176 -0
- package/dist/jobs/cron.js.map +1 -0
- package/dist/jobs/execute.d.ts +12 -0
- package/dist/jobs/execute.d.ts.map +1 -0
- package/dist/jobs/execute.js +19 -0
- package/dist/jobs/execute.js.map +1 -0
- package/dist/jobs/index.d.ts +8 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +4 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/listener.d.ts +32 -0
- package/dist/jobs/listener.d.ts.map +1 -0
- package/dist/jobs/listener.js +95 -0
- package/dist/jobs/listener.js.map +1 -0
- package/dist/jobs/namespace.d.ts +10 -0
- package/dist/jobs/namespace.d.ts.map +1 -0
- package/dist/jobs/namespace.js +10 -0
- package/dist/jobs/namespace.js.map +1 -0
- package/dist/jobs/queue.d.ts +53 -0
- package/dist/jobs/queue.d.ts.map +1 -0
- package/dist/jobs/queue.js +162 -0
- package/dist/jobs/queue.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +31 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +94 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/lifecycle/drain.d.ts +7 -0
- package/dist/lifecycle/drain.d.ts.map +1 -0
- package/dist/lifecycle/drain.js +24 -0
- package/dist/lifecycle/drain.js.map +1 -0
- package/dist/lifecycle/health.d.ts +8 -0
- package/dist/lifecycle/health.d.ts.map +1 -0
- package/dist/lifecycle/health.js +62 -0
- package/dist/lifecycle/health.js.map +1 -0
- package/dist/lifecycle/index.d.ts +5 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/namespace.d.ts +5 -0
- package/dist/lifecycle/namespace.d.ts.map +1 -0
- package/dist/lifecycle/namespace.js +5 -0
- package/dist/lifecycle/namespace.js.map +1 -0
- package/dist/lifecycle/startup.d.ts +8 -0
- package/dist/lifecycle/startup.d.ts.map +1 -0
- package/dist/lifecycle/startup.js +43 -0
- package/dist/lifecycle/startup.js.map +1 -0
- package/dist/lifecycle/types.d.ts +30 -0
- package/dist/lifecycle/types.d.ts.map +1 -0
- package/dist/lifecycle/types.js +2 -0
- package/dist/lifecycle/types.js.map +1 -0
- package/dist/log/namespace.d.ts +9 -0
- package/dist/log/namespace.d.ts.map +1 -0
- package/dist/log/namespace.js +10 -0
- package/dist/log/namespace.js.map +1 -0
- package/dist/logging/context.d.ts +11 -0
- package/dist/logging/context.d.ts.map +1 -0
- package/dist/logging/context.js +46 -0
- package/dist/logging/context.js.map +1 -0
- package/dist/logging/index.d.ts +4 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/logger.d.ts +8 -0
- package/dist/logging/logger.d.ts.map +1 -0
- package/dist/logging/logger.js +39 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/logging/proxy.d.ts +3 -0
- package/dist/logging/proxy.d.ts.map +1 -0
- package/dist/logging/proxy.js +12 -0
- package/dist/logging/proxy.js.map +1 -0
- package/dist/logging/types.d.ts +36 -0
- package/dist/logging/types.d.ts.map +1 -0
- package/dist/logging/types.js +2 -0
- package/dist/logging/types.js.map +1 -0
- package/dist/migrate/index.d.ts +2 -0
- package/dist/migrate/index.d.ts.map +1 -0
- package/dist/migrate/index.js +2 -0
- package/dist/migrate/index.js.map +1 -0
- package/dist/migrate/run.d.ts +10 -0
- package/dist/migrate/run.d.ts.map +1 -0
- package/dist/migrate/run.js +45 -0
- package/dist/migrate/run.js.map +1 -0
- package/dist/openapi/generate.d.ts +13 -0
- package/dist/openapi/generate.d.ts.map +1 -0
- package/dist/openapi/generate.js +82 -0
- package/dist/openapi/generate.js.map +1 -0
- package/dist/openapi/index.d.ts +3 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +2 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi/namespace.d.ts +5 -0
- package/dist/openapi/namespace.d.ts.map +1 -0
- package/dist/openapi/namespace.js +5 -0
- package/dist/openapi/namespace.js.map +1 -0
- package/dist/pipeline/define.d.ts +3 -0
- package/dist/pipeline/define.d.ts.map +1 -0
- package/dist/pipeline/define.js +44 -0
- package/dist/pipeline/define.js.map +1 -0
- package/dist/pipeline/errors.d.ts +17 -0
- package/dist/pipeline/errors.d.ts.map +1 -0
- package/dist/pipeline/errors.js +28 -0
- package/dist/pipeline/errors.js.map +1 -0
- package/dist/pipeline/execute.d.ts +4 -0
- package/dist/pipeline/execute.d.ts.map +1 -0
- package/dist/pipeline/execute.js +90 -0
- package/dist/pipeline/execute.js.map +1 -0
- package/dist/pipeline/index.d.ts +4 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +3 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/namespace.d.ts +8 -0
- package/dist/pipeline/namespace.d.ts.map +1 -0
- package/dist/pipeline/namespace.js +8 -0
- package/dist/pipeline/namespace.js.map +1 -0
- package/dist/pipeline/resume.d.ts +4 -0
- package/dist/pipeline/resume.d.ts.map +1 -0
- package/dist/pipeline/resume.js +100 -0
- package/dist/pipeline/resume.js.map +1 -0
- package/dist/pipeline/types.d.ts +50 -0
- package/dist/pipeline/types.d.ts.map +1 -0
- package/dist/pipeline/types.js +2 -0
- package/dist/pipeline/types.js.map +1 -0
- package/dist/pipework.d.ts +35 -0
- package/dist/pipework.d.ts.map +1 -0
- package/dist/pipework.js +102 -0
- package/dist/pipework.js.map +1 -0
- package/dist/rbac/cache.d.ts +13 -0
- package/dist/rbac/cache.d.ts.map +1 -0
- package/dist/rbac/cache.js +43 -0
- package/dist/rbac/cache.js.map +1 -0
- package/dist/rbac/check.d.ts +4 -0
- package/dist/rbac/check.d.ts.map +1 -0
- package/dist/rbac/check.js +20 -0
- package/dist/rbac/check.js.map +1 -0
- package/dist/rbac/index.d.ts +7 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +31 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/middleware.d.ts +4 -0
- package/dist/rbac/middleware.d.ts.map +1 -0
- package/dist/rbac/middleware.js +9 -0
- package/dist/rbac/middleware.js.map +1 -0
- package/dist/rbac/namespace.d.ts +9 -0
- package/dist/rbac/namespace.d.ts.map +1 -0
- package/dist/rbac/namespace.js +9 -0
- package/dist/rbac/namespace.js.map +1 -0
- package/dist/rbac/resolve.d.ts +4 -0
- package/dist/rbac/resolve.d.ts.map +1 -0
- package/dist/rbac/resolve.js +24 -0
- package/dist/rbac/resolve.js.map +1 -0
- package/dist/rbac/seed.d.ts +4 -0
- package/dist/rbac/seed.d.ts.map +1 -0
- package/dist/rbac/seed.js +63 -0
- package/dist/rbac/seed.js.map +1 -0
- package/dist/rbac/types.d.ts +56 -0
- package/dist/rbac/types.d.ts.map +1 -0
- package/dist/rbac/types.js +2 -0
- package/dist/rbac/types.js.map +1 -0
- package/dist/resource/batch.d.ts +17 -0
- package/dist/resource/batch.d.ts.map +1 -0
- package/dist/resource/batch.js +47 -0
- package/dist/resource/batch.js.map +1 -0
- package/dist/resource/builder.d.ts +11 -0
- package/dist/resource/builder.d.ts.map +1 -0
- package/dist/resource/builder.js +12 -0
- package/dist/resource/builder.js.map +1 -0
- package/dist/resource/errors.d.ts +7 -0
- package/dist/resource/errors.d.ts.map +1 -0
- package/dist/resource/errors.js +9 -0
- package/dist/resource/errors.js.map +1 -0
- package/dist/resource/index.d.ts +9 -0
- package/dist/resource/index.d.ts.map +1 -0
- package/dist/resource/index.js +6 -0
- package/dist/resource/index.js.map +1 -0
- package/dist/resource/paginate.d.ts +13 -0
- package/dist/resource/paginate.d.ts.map +1 -0
- package/dist/resource/paginate.js +29 -0
- package/dist/resource/paginate.js.map +1 -0
- package/dist/resource/register.d.ts +16 -0
- package/dist/resource/register.d.ts.map +1 -0
- package/dist/resource/register.js +181 -0
- package/dist/resource/register.js.map +1 -0
- package/dist/resource/types.d.ts +69 -0
- package/dist/resource/types.d.ts.map +1 -0
- package/dist/resource/types.js +2 -0
- package/dist/resource/types.js.map +1 -0
- package/dist/schema/branded.d.ts +3 -0
- package/dist/schema/branded.d.ts.map +1 -0
- package/dist/schema/branded.js +8 -0
- package/dist/schema/branded.js.map +1 -0
- package/dist/schema/generated/coerce.d.ts +2 -0
- package/dist/schema/generated/coerce.d.ts.map +1 -0
- package/dist/schema/generated/coerce.js +5 -0
- package/dist/schema/generated/coerce.js.map +1 -0
- package/dist/schema/generated/combinator.d.ts +3 -0
- package/dist/schema/generated/combinator.d.ts.map +1 -0
- package/dist/schema/generated/combinator.js +5 -0
- package/dist/schema/generated/combinator.js.map +1 -0
- package/dist/schema/generated/encoding.d.ts +2 -0
- package/dist/schema/generated/encoding.d.ts.map +1 -0
- package/dist/schema/generated/encoding.js +5 -0
- package/dist/schema/generated/encoding.js.map +1 -0
- package/dist/schema/generated/error.d.ts +3 -0
- package/dist/schema/generated/error.d.ts.map +1 -0
- package/dist/schema/generated/error.js +5 -0
- package/dist/schema/generated/error.js.map +1 -0
- package/dist/schema/generated/format.d.ts +2 -0
- package/dist/schema/generated/format.d.ts.map +1 -0
- package/dist/schema/generated/format.js +5 -0
- package/dist/schema/generated/format.js.map +1 -0
- package/dist/schema/generated/type-constructor.d.ts +3 -0
- package/dist/schema/generated/type-constructor.d.ts.map +1 -0
- package/dist/schema/generated/type-constructor.js +5 -0
- package/dist/schema/generated/type-constructor.js.map +1 -0
- package/dist/schema/generated/type.d.ts +3 -0
- package/dist/schema/generated/type.d.ts.map +1 -0
- package/dist/schema/generated/type.js +5 -0
- package/dist/schema/generated/type.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +5 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/json-schema.d.ts +5 -0
- package/dist/schema/json-schema.d.ts.map +1 -0
- package/dist/schema/json-schema.js +5 -0
- package/dist/schema/json-schema.js.map +1 -0
- package/dist/schema/namespace.d.ts +128 -0
- package/dist/schema/namespace.d.ts.map +1 -0
- package/dist/schema/namespace.js +37 -0
- package/dist/schema/namespace.js.map +1 -0
- package/dist/schema/parse.d.ts +11 -0
- package/dist/schema/parse.d.ts.map +1 -0
- package/dist/schema/parse.js +30 -0
- package/dist/schema/parse.js.map +1 -0
- package/dist/schema/types.d.ts +4 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +2 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/state-machine/define.d.ts +3 -0
- package/dist/state-machine/define.d.ts.map +1 -0
- package/dist/state-machine/define.js +46 -0
- package/dist/state-machine/define.js.map +1 -0
- package/dist/state-machine/errors.d.ts +12 -0
- package/dist/state-machine/errors.d.ts.map +1 -0
- package/dist/state-machine/errors.js +19 -0
- package/dist/state-machine/errors.js.map +1 -0
- package/dist/state-machine/index.d.ts +4 -0
- package/dist/state-machine/index.d.ts.map +1 -0
- package/dist/state-machine/index.js +3 -0
- package/dist/state-machine/index.js.map +1 -0
- package/dist/state-machine/namespace.d.ts +8 -0
- package/dist/state-machine/namespace.d.ts.map +1 -0
- package/dist/state-machine/namespace.js +8 -0
- package/dist/state-machine/namespace.js.map +1 -0
- package/dist/state-machine/transition.d.ts +7 -0
- package/dist/state-machine/transition.d.ts.map +1 -0
- package/dist/state-machine/transition.js +57 -0
- package/dist/state-machine/transition.js.map +1 -0
- package/dist/state-machine/types.d.ts +33 -0
- package/dist/state-machine/types.d.ts.map +1 -0
- package/dist/state-machine/types.js +2 -0
- package/dist/state-machine/types.js.map +1 -0
- package/dist/temporal/close.d.ts +3 -0
- package/dist/temporal/close.d.ts.map +1 -0
- package/dist/temporal/close.js +19 -0
- package/dist/temporal/close.js.map +1 -0
- package/dist/temporal/columns.d.ts +7 -0
- package/dist/temporal/columns.d.ts.map +1 -0
- package/dist/temporal/columns.js +10 -0
- package/dist/temporal/columns.js.map +1 -0
- package/dist/temporal/errors.d.ts +7 -0
- package/dist/temporal/errors.d.ts.map +1 -0
- package/dist/temporal/errors.js +9 -0
- package/dist/temporal/errors.js.map +1 -0
- package/dist/temporal/get-current.d.ts +3 -0
- package/dist/temporal/get-current.d.ts.map +1 -0
- package/dist/temporal/get-current.js +18 -0
- package/dist/temporal/get-current.js.map +1 -0
- package/dist/temporal/index.d.ts +8 -0
- package/dist/temporal/index.d.ts.map +1 -0
- package/dist/temporal/index.js +7 -0
- package/dist/temporal/index.js.map +1 -0
- package/dist/temporal/namespace.d.ts +16 -0
- package/dist/temporal/namespace.d.ts.map +1 -0
- package/dist/temporal/namespace.js +16 -0
- package/dist/temporal/namespace.js.map +1 -0
- package/dist/temporal/query.d.ts +10 -0
- package/dist/temporal/query.d.ts.map +1 -0
- package/dist/temporal/query.js +11 -0
- package/dist/temporal/query.js.map +1 -0
- package/dist/temporal/revise.d.ts +3 -0
- package/dist/temporal/revise.d.ts.map +1 -0
- package/dist/temporal/revise.js +52 -0
- package/dist/temporal/revise.js.map +1 -0
- package/dist/temporal/types.d.ts +19 -0
- package/dist/temporal/types.d.ts.map +1 -0
- package/dist/temporal/types.js +2 -0
- package/dist/temporal/types.js.map +1 -0
- package/dist/tenant/extract.d.ts +6 -0
- package/dist/tenant/extract.d.ts.map +1 -0
- package/dist/tenant/extract.js +18 -0
- package/dist/tenant/extract.js.map +1 -0
- package/dist/tenant/index.d.ts +6 -0
- package/dist/tenant/index.d.ts.map +1 -0
- package/dist/tenant/index.js +5 -0
- package/dist/tenant/index.js.map +1 -0
- package/dist/tenant/namespace.d.ts +13 -0
- package/dist/tenant/namespace.d.ts.map +1 -0
- package/dist/tenant/namespace.js +13 -0
- package/dist/tenant/namespace.js.map +1 -0
- package/dist/tenant/propagate.d.ts +4 -0
- package/dist/tenant/propagate.d.ts.map +1 -0
- package/dist/tenant/propagate.js +15 -0
- package/dist/tenant/propagate.js.map +1 -0
- package/dist/tenant/rls.d.ts +5 -0
- package/dist/tenant/rls.d.ts.map +1 -0
- package/dist/tenant/rls.js +33 -0
- package/dist/tenant/rls.js.map +1 -0
- package/dist/tenant/types.d.ts +12 -0
- package/dist/tenant/types.d.ts.map +1 -0
- package/dist/tenant/types.js +2 -0
- package/dist/tenant/types.js.map +1 -0
- package/dist/tenant/validate.d.ts +4 -0
- package/dist/tenant/validate.d.ts.map +1 -0
- package/dist/tenant/validate.js +20 -0
- package/dist/tenant/validate.js.map +1 -0
- package/dist/test/auth.d.ts +7 -0
- package/dist/test/auth.d.ts.map +1 -0
- package/dist/test/auth.js +11 -0
- package/dist/test/auth.js.map +1 -0
- package/dist/test/context.d.ts +10 -0
- package/dist/test/context.d.ts.map +1 -0
- package/dist/test/context.js +26 -0
- package/dist/test/context.js.map +1 -0
- package/dist/test/index.d.ts +6 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +6 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/plugin.d.ts +16 -0
- package/dist/test/plugin.d.ts.map +1 -0
- package/dist/test/plugin.js +63 -0
- package/dist/test/plugin.js.map +1 -0
- package/dist/test/setup.d.ts +11 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +76 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/test/vitest.d.ts +9 -0
- package/dist/test/vitest.d.ts.map +1 -0
- package/dist/test/vitest.js +58 -0
- package/dist/test/vitest.js.map +1 -0
- package/dist/trunk.d.ts +35 -0
- package/dist/trunk.d.ts.map +1 -0
- package/dist/trunk.js +102 -0
- package/dist/trunk.js.map +1 -0
- package/dist/vector/index.d.ts +4 -0
- package/dist/vector/index.d.ts.map +1 -0
- package/dist/vector/index.js +4 -0
- package/dist/vector/index.js.map +1 -0
- package/dist/vector/namespace.d.ts +16 -0
- package/dist/vector/namespace.d.ts.map +1 -0
- package/dist/vector/namespace.js +16 -0
- package/dist/vector/namespace.js.map +1 -0
- package/dist/vector/query.d.ts +9 -0
- package/dist/vector/query.d.ts.map +1 -0
- package/dist/vector/query.js +33 -0
- package/dist/vector/query.js.map +1 -0
- package/dist/vector/types.d.ts +19 -0
- package/dist/vector/types.d.ts.map +1 -0
- package/dist/vector/types.js +26 -0
- package/dist/vector/types.js.map +1 -0
- package/dist/vector/validate.d.ts +3 -0
- package/dist/vector/validate.d.ts.map +1 -0
- package/dist/vector/validate.js +10 -0
- package/dist/vector/validate.js.map +1 -0
- package/package.json +138 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-current.d.ts","sourceRoot":"","sources":["../../src/temporal/get-current.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGnE,wBAAsB,UAAU,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAsB3F"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
import { getTableName } from '../db/generated/drizzle-orm/introspection.js';
|
|
3
|
+
import { TemporalIntegrityError } from './errors.js';
|
|
4
|
+
export async function getCurrent(options) {
|
|
5
|
+
const { tx, where } = options;
|
|
6
|
+
const table = typeof options.table === 'string' ? options.table : getTableName(options.table);
|
|
7
|
+
const rows = await tx.execute(sql `SELECT id::text, version FROM ${sql.identifier(table)} WHERE ${where} AND effective_to IS NULL`);
|
|
8
|
+
if (rows.length === 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
if (rows.length > 1) {
|
|
12
|
+
throw new TemporalIntegrityError(`Multiple open versions detected in "${table}" — data integrity violation. ` +
|
|
13
|
+
`Expected at most one row with effective_to IS NULL, found ${rows.length}.`, { table, count: rows.length });
|
|
14
|
+
}
|
|
15
|
+
const row = rows[0];
|
|
16
|
+
return { id: row['id'], version: row['version'] };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=get-current.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-current.js","sourceRoot":"","sources":["../../src/temporal/get-current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAwB;IACvD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAC7B,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC3B,GAAG,CAAA,iCAAiC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,2BAA2B,CACpG,CAAA;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,IAAI,CAAC,MAAM,GAAG,EAC3E,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAC9B,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;IACpB,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW,EAAE,CAAA;AACvE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { temporalColumns } from './columns.js';
|
|
2
|
+
export { atTime, current, between } from './query.js';
|
|
3
|
+
export { revise } from './revise.js';
|
|
4
|
+
export { close } from './close.js';
|
|
5
|
+
export { getCurrent } from './get-current.js';
|
|
6
|
+
export { TemporalIntegrityError } from './errors.js';
|
|
7
|
+
export type { TemporalOptions, ReviseOptions, ReviseResult, GetCurrentResult } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/temporal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { temporalColumns } from './columns.js';
|
|
2
|
+
export { atTime, current, between } from './query.js';
|
|
3
|
+
export { revise } from './revise.js';
|
|
4
|
+
export { close } from './close.js';
|
|
5
|
+
export { getCurrent } from './get-current.js';
|
|
6
|
+
export { TemporalIntegrityError } from './errors.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/temporal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { temporalColumns } from './columns.js';
|
|
2
|
+
import { revise } from './revise.js';
|
|
3
|
+
import { close } from './close.js';
|
|
4
|
+
import { getCurrent } from './get-current.js';
|
|
5
|
+
import { atTime, between } from './query.js';
|
|
6
|
+
import { TemporalIntegrityError } from './errors.js';
|
|
7
|
+
export declare const temporal: {
|
|
8
|
+
columns: typeof temporalColumns;
|
|
9
|
+
revise: typeof revise;
|
|
10
|
+
close: typeof close;
|
|
11
|
+
current: typeof getCurrent;
|
|
12
|
+
atTime: typeof atTime;
|
|
13
|
+
between: typeof between;
|
|
14
|
+
TemporalIntegrityError: typeof TemporalIntegrityError;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/temporal/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,QAAQ;;;;;;;;CAQpB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { temporalColumns } from './columns.js';
|
|
2
|
+
import { revise } from './revise.js';
|
|
3
|
+
import { close } from './close.js';
|
|
4
|
+
import { getCurrent } from './get-current.js';
|
|
5
|
+
import { atTime, between } from './query.js';
|
|
6
|
+
import { TemporalIntegrityError } from './errors.js';
|
|
7
|
+
export const temporal = {
|
|
8
|
+
columns: temporalColumns,
|
|
9
|
+
revise,
|
|
10
|
+
close,
|
|
11
|
+
current: getCurrent,
|
|
12
|
+
atTime,
|
|
13
|
+
between,
|
|
14
|
+
TemporalIntegrityError,
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/temporal/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,eAAe;IACxB,MAAM;IACN,KAAK;IACL,OAAO,EAAE,UAAU;IACnB,MAAM;IACN,OAAO;IACP,sBAAsB;CACvB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SQL, Column } from '../db/types.js';
|
|
2
|
+
interface HasTemporalColumns {
|
|
3
|
+
effectiveFrom: Column;
|
|
4
|
+
effectiveTo: Column;
|
|
5
|
+
}
|
|
6
|
+
export declare function atTime<T extends HasTemporalColumns>(table: T, asOf: Date): SQL;
|
|
7
|
+
export declare function current<T extends HasTemporalColumns>(table: T): SQL;
|
|
8
|
+
export declare function between<T extends HasTemporalColumns>(table: T, from: Date, to: Date): SQL;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/temporal/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,CAK9E;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAEnE;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,GAAG,CAKzF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { and, lte, gt, isNull, or } from '../db/generated/drizzle-orm/operator.js';
|
|
2
|
+
export function atTime(table, asOf) {
|
|
3
|
+
return and(lte(table.effectiveFrom, asOf), or(isNull(table.effectiveTo), gt(table.effectiveTo, asOf)));
|
|
4
|
+
}
|
|
5
|
+
export function current(table) {
|
|
6
|
+
return isNull(table.effectiveTo);
|
|
7
|
+
}
|
|
8
|
+
export function between(table, from, to) {
|
|
9
|
+
return and(lte(table.effectiveFrom, to), or(isNull(table.effectiveTo), gt(table.effectiveTo, from)));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/temporal/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,yCAAyC,CAAA;AAQlF,MAAM,UAAU,MAAM,CAA+B,KAAQ,EAAE,IAAU;IACvE,OAAO,GAAG,CACR,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAC9B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC1D,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAA+B,KAAQ;IAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAA+B,KAAQ,EAAE,IAAU,EAAE,EAAQ;IAClF,OAAO,GAAG,CACR,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,EAC5B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAC1D,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revise.d.ts","sourceRoot":"","sources":["../../src/temporal/revise.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI7D,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAoE1E"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
import { getTableName } from '../db/generated/drizzle-orm/introspection.js';
|
|
3
|
+
import { TemporalIntegrityError } from './errors.js';
|
|
4
|
+
import { assertValidIdentifier, quoteIdentifier } from '../db/identifiers.js';
|
|
5
|
+
export async function revise(options) {
|
|
6
|
+
const { tx, where, data, userId } = options;
|
|
7
|
+
const table = typeof options.table === 'string' ? options.table : getTableName(options.table);
|
|
8
|
+
const current = await tx.execute(sql `SELECT id, version FROM ${sql.identifier(table)} WHERE ${where} AND effective_to IS NULL FOR UPDATE`);
|
|
9
|
+
if (current.length === 0) {
|
|
10
|
+
throw new TemporalIntegrityError(`No current version found. Cannot revise a record in "${table}" — ` +
|
|
11
|
+
`ensure the entity exists and has an open version (effective_to IS NULL).`, { table });
|
|
12
|
+
}
|
|
13
|
+
if (current.length > 1) {
|
|
14
|
+
throw new TemporalIntegrityError(`Multiple open versions detected in "${table}" — data integrity violation. ` +
|
|
15
|
+
`Expected exactly one row with effective_to IS NULL, found ${current.length}.`, { table, count: current.length });
|
|
16
|
+
}
|
|
17
|
+
const currentRow = current[0];
|
|
18
|
+
const currentId = currentRow['id'];
|
|
19
|
+
const currentVersion = currentRow['version'];
|
|
20
|
+
await tx.execute(sql `UPDATE ${sql.identifier(table)} SET effective_to = now() WHERE id = ${currentId}::uuid`);
|
|
21
|
+
const columns = Object.keys(data);
|
|
22
|
+
const values = Object.values(data);
|
|
23
|
+
for (const col of columns) {
|
|
24
|
+
assertValidIdentifier(col, 'column');
|
|
25
|
+
}
|
|
26
|
+
const allColumns = [...columns, 'effective_from', 'effective_to', 'version', 'created_by'];
|
|
27
|
+
const colListRaw = allColumns.map((c) => quoteIdentifier(c, 'column')).join(', ');
|
|
28
|
+
const serializedValues = values.map((v) => {
|
|
29
|
+
if (v === null || v === undefined)
|
|
30
|
+
return null;
|
|
31
|
+
if (typeof v === 'object')
|
|
32
|
+
return JSON.stringify(v);
|
|
33
|
+
return v;
|
|
34
|
+
});
|
|
35
|
+
const valueParts = [
|
|
36
|
+
...serializedValues.map((v) => sql `${v ?? null}`),
|
|
37
|
+
sql `now()`,
|
|
38
|
+
sql `NULL`,
|
|
39
|
+
sql `${currentVersion + 1}`,
|
|
40
|
+
sql `${userId ?? null}`,
|
|
41
|
+
];
|
|
42
|
+
const valuesList = valueParts.reduce((acc, part, i) => {
|
|
43
|
+
if (i === 0)
|
|
44
|
+
return part;
|
|
45
|
+
return sql `${acc}, ${part}`;
|
|
46
|
+
});
|
|
47
|
+
assertValidIdentifier(table, 'table');
|
|
48
|
+
const result = await tx.execute(sql `INSERT INTO ${sql.raw(quoteIdentifier(table, 'table'))} (${sql.raw(colListRaw)}) VALUES (${valuesList}) RETURNING id::text, version`);
|
|
49
|
+
const row = result[0];
|
|
50
|
+
return { id: row['id'], version: row['version'] };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=revise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"revise.js","sourceRoot":"","sources":["../../src/temporal/revise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE7E,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAsB;IACjD,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC3C,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAE7F,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAC9B,GAAG,CAAA,2BAA2B,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,sCAAsC,CACzG,CAAA;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,sBAAsB,CAC9B,wDAAwD,KAAK,MAAM;YACnE,0EAA0E,EAC1E,EAAE,KAAK,EAAE,CACV,CAAA;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,sBAAsB,CAC9B,uCAAuC,KAAK,gCAAgC;YAC5E,6DAA6D,OAAO,CAAC,MAAM,GAAG,EAC9E,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CACjC,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAW,CAAA;IAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAW,CAAA;IAEtD,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,CAAA,UAAU,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,wCAAwC,SAAS,QAAQ,CAC5F,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAElC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;IAC1F,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEjF,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAA;QAC9C,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG;QACjB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACjD,GAAG,CAAA,OAAO;QACV,GAAG,CAAA,MAAM;QACT,GAAG,CAAA,GAAG,cAAc,GAAG,CAAC,EAAE;QAC1B,GAAG,CAAA,GAAG,MAAM,IAAI,IAAI,EAAE;KACvB,CAAA;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;QACpD,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,GAAG,CAAA,GAAG,GAAG,KAAK,IAAI,EAAE,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAC7B,GAAG,CAAA,eAAe,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,UAAU,+BAA+B,CACzI,CAAA;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;IACtB,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAW,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAW,EAAE,CAAA;AACvE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { DB, SQL, Table } from '../db/types.js';
|
|
2
|
+
export interface TemporalOptions {
|
|
3
|
+
readonly tx: DB;
|
|
4
|
+
readonly table: string | Table;
|
|
5
|
+
readonly where: SQL;
|
|
6
|
+
}
|
|
7
|
+
export interface ReviseOptions extends TemporalOptions {
|
|
8
|
+
readonly data: Record<string, unknown>;
|
|
9
|
+
readonly userId?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ReviseResult {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly version: number;
|
|
14
|
+
}
|
|
15
|
+
export interface GetCurrentResult {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly version: number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/temporal/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;IACf,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAA;IAC9B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;CACpB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/temporal/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { TenantConfig } from './types.js';
|
|
2
|
+
export interface TenantExtractionResult {
|
|
3
|
+
readonly tenant: string | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function extractTenant(auth: unknown, config: TenantConfig): TenantExtractionResult;
|
|
6
|
+
//# sourceMappingURL=extract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/tenant/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAI9C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,YAAY,GACnB,sBAAsB,CAqBxB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { validateTenantId } from './validate.js';
|
|
2
|
+
import { UnauthorizedError } from '../errors/index.js';
|
|
3
|
+
export function extractTenant(auth, config) {
|
|
4
|
+
const raw = config.extract(auth);
|
|
5
|
+
if (raw === null || raw === '') {
|
|
6
|
+
if (config.required !== false) {
|
|
7
|
+
throw new UnauthorizedError('Tenant context required but not present. Ensure auth strategy returns a tenantId.');
|
|
8
|
+
}
|
|
9
|
+
return { tenant: null };
|
|
10
|
+
}
|
|
11
|
+
const validator = config.validate ?? validateTenantId;
|
|
12
|
+
if (!validator(raw)) {
|
|
13
|
+
throw new UnauthorizedError(`Invalid tenant identifier: "${raw.slice(0, 40)}${raw.length > 40 ? '...' : ''}". ` +
|
|
14
|
+
`Tenant IDs must be valid UUIDs (or pass your custom validate function).`);
|
|
15
|
+
}
|
|
16
|
+
return { tenant: raw };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=extract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/tenant/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAMtD,MAAM,UAAU,aAAa,CAC3B,IAAa,EACb,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,iBAAiB,CACzB,mFAAmF,CACpF,CAAA;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,IAAI,gBAAgB,CAAA;IACrD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,iBAAiB,CACzB,+BAA+B,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK;YACnF,yEAAyE,CAC1E,CAAA;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;AACxB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { TenantConfig, TenantContext } from './types.js';
|
|
2
|
+
export { validateTenantId, validateSessionVarName, validateSessionVarValue } from './validate.js';
|
|
3
|
+
export { propagateTenantLocals } from './propagate.js';
|
|
4
|
+
export { extractTenant, type TenantExtractionResult } from './extract.js';
|
|
5
|
+
export { tenantIsolationPolicy, enableTenantRls, verifyTenantContext } from './rls.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { validateTenantId, validateSessionVarName, validateSessionVarValue } from './validate.js';
|
|
2
|
+
export { propagateTenantLocals } from './propagate.js';
|
|
3
|
+
export { extractTenant } from './extract.js';
|
|
4
|
+
export { tenantIsolationPolicy, enableTenantRls, verifyTenantContext } from './rls.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tenant/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,aAAa,EAA+B,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { validateTenantId } from './validate.js';
|
|
2
|
+
import { enableTenantRls, tenantIsolationPolicy, verifyTenantContext } from './rls.js';
|
|
3
|
+
import { propagateTenantLocals } from './propagate.js';
|
|
4
|
+
import { extractTenant } from './extract.js';
|
|
5
|
+
export declare const tenant: {
|
|
6
|
+
validate: typeof validateTenantId;
|
|
7
|
+
rls: typeof enableTenantRls;
|
|
8
|
+
policy: typeof tenantIsolationPolicy;
|
|
9
|
+
verify: typeof verifyTenantContext;
|
|
10
|
+
propagate: typeof propagateTenantLocals;
|
|
11
|
+
extract: typeof extractTenant;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/tenant/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { validateTenantId } from './validate.js';
|
|
2
|
+
import { enableTenantRls, tenantIsolationPolicy, verifyTenantContext } from './rls.js';
|
|
3
|
+
import { propagateTenantLocals } from './propagate.js';
|
|
4
|
+
import { extractTenant } from './extract.js';
|
|
5
|
+
export const tenant = {
|
|
6
|
+
validate: validateTenantId,
|
|
7
|
+
rls: enableTenantRls,
|
|
8
|
+
policy: tenantIsolationPolicy,
|
|
9
|
+
verify: verifyTenantContext,
|
|
10
|
+
propagate: propagateTenantLocals,
|
|
11
|
+
extract: extractTenant,
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/tenant/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,qBAAqB;IAC7B,MAAM,EAAE,mBAAmB;IAC3B,SAAS,EAAE,qBAAqB;IAChC,OAAO,EAAE,aAAa;CACvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propagate.d.ts","sourceRoot":"","sources":["../../src/tenant/propagate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG7D,wBAAsB,qBAAqB,CACzC,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
import { validateSessionVarValue } from './validate.js';
|
|
3
|
+
export async function propagateTenantLocals(tx, config, ctx) {
|
|
4
|
+
const vars = config.sessionVars;
|
|
5
|
+
if (!vars)
|
|
6
|
+
return;
|
|
7
|
+
for (const [name, resolver] of Object.entries(vars)) {
|
|
8
|
+
const value = resolver(ctx);
|
|
9
|
+
if (value === '')
|
|
10
|
+
continue;
|
|
11
|
+
validateSessionVarValue(value);
|
|
12
|
+
await tx.execute(sql `SELECT set_config(${name}, ${value}, true)`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=propagate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propagate.js","sourceRoot":"","sources":["../../src/tenant/propagate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAM,EACN,MAAoB,EACpB,GAAkB;IAElB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAA;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAM;IAEjB,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,KAAK,KAAK,EAAE;YAAE,SAAQ;QAC1B,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC9B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,qBAAqB,IAAI,KAAK,KAAK,SAAS,CAAC,CAAA;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DB } from '../db/index.js';
|
|
2
|
+
export declare function tenantIsolationPolicy(table: string, column?: string): string;
|
|
3
|
+
export declare function enableTenantRls(db: DB, table: string, column?: string): Promise<void>;
|
|
4
|
+
export declare function verifyTenantContext(db: DB, expectedTenant: string | null): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=rls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rls.d.ts","sourceRoot":"","sources":["../../src/tenant/rls.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAGxC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAoB,GAAG,MAAM,CAUzF;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,EAAE,EACN,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
import { quoteIdentifier } from '../db/identifiers.js';
|
|
3
|
+
export function tenantIsolationPolicy(table, column = 'tenant_id') {
|
|
4
|
+
const t = quoteIdentifier(table, 'table');
|
|
5
|
+
const c = quoteIdentifier(column, 'column');
|
|
6
|
+
const policyName = `pipework_tenant_isolation_${table.replace(/[^a-zA-Z0-9_]/g, '_')}`;
|
|
7
|
+
return [
|
|
8
|
+
`ALTER TABLE ${t} ENABLE ROW LEVEL SECURITY`,
|
|
9
|
+
`ALTER TABLE ${t} FORCE ROW LEVEL SECURITY`,
|
|
10
|
+
`CREATE POLICY ${quoteIdentifier(policyName, 'policy')} ON ${t} USING (${c} = current_setting('pipework.tenant_id', true))`,
|
|
11
|
+
].join(';\n');
|
|
12
|
+
}
|
|
13
|
+
export async function enableTenantRls(db, table, column = 'tenant_id') {
|
|
14
|
+
const t = quoteIdentifier(table, 'table');
|
|
15
|
+
const c = quoteIdentifier(column, 'column');
|
|
16
|
+
const policyName = quoteIdentifier(`pipework_tenant_isolation_${table.replace(/[^a-zA-Z0-9_]/g, '_')}`, 'policy');
|
|
17
|
+
await db.execute(sql.raw(`ALTER TABLE ${t} ENABLE ROW LEVEL SECURITY`));
|
|
18
|
+
await db.execute(sql.raw(`ALTER TABLE ${t} FORCE ROW LEVEL SECURITY`));
|
|
19
|
+
await db.execute(sql.raw(`CREATE POLICY ${policyName} ON ${t} USING (${c} = current_setting('pipework.tenant_id', true))`));
|
|
20
|
+
}
|
|
21
|
+
export async function verifyTenantContext(db, expectedTenant) {
|
|
22
|
+
const result = await db.execute(sql `SELECT current_setting('pipework.tenant_id', true) AS tenant_id`);
|
|
23
|
+
const raw = result[0]?.tenant_id ?? null;
|
|
24
|
+
const pgTenant = raw === '' ? null : raw;
|
|
25
|
+
if (pgTenant !== expectedTenant) {
|
|
26
|
+
throw new Error(`[pipework] Tenant context mismatch between application and database.\n\n` +
|
|
27
|
+
` Application context tenant: ${expectedTenant ?? '(null)'}\n` +
|
|
28
|
+
` PostgreSQL session tenant: ${pgTenant ?? '(null)'}\n\n` +
|
|
29
|
+
` This indicates an AsyncLocalStorage context integrity failure.\n` +
|
|
30
|
+
` The request has been aborted to prevent cross-tenant data access.\n`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=rls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rls.js","sourceRoot":"","sources":["../../src/tenant/rls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,SAAiB,WAAW;IAC/E,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,6BAA6B,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAA;IAEtF,OAAO;QACL,eAAe,CAAC,4BAA4B;QAC5C,eAAe,CAAC,2BAA2B;QAC3C,iBAAiB,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,iDAAiD;KAC5H,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAAM,EACN,KAAa,EACb,SAAiB,WAAW;IAE5B,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACzC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,eAAe,CAChC,6BAA6B,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,EACnE,QAAQ,CACT,CAAA;IAED,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACvE,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAA;IACtE,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CACtB,iBAAiB,UAAU,OAAO,CAAC,WAAW,CAAC,iDAAiD,CACjG,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,EAAM,EACN,cAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,iEAAiE,CAAC,CAAA;IACrG,MAAM,GAAG,GAAI,MAAyD,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,IAAI,CAAA;IAC5F,MAAM,QAAQ,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA;IAExC,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,0EAA0E;YAC1E,iCAAiC,cAAc,IAAI,QAAQ,IAAI;YAC/D,iCAAiC,QAAQ,IAAI,QAAQ,MAAM;YAC3D,oEAAoE;YACpE,uEAAuE,CACxE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface TenantConfig {
|
|
2
|
+
readonly extract: (auth: unknown) => string | null;
|
|
3
|
+
readonly sessionVars?: Record<string, (ctx: TenantContext) => string>;
|
|
4
|
+
readonly validate?: (tenantId: string) => boolean;
|
|
5
|
+
readonly required?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface TenantContext {
|
|
8
|
+
readonly tenant: string;
|
|
9
|
+
readonly requestId: string;
|
|
10
|
+
readonly userId: string | null;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tenant/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,GAAG,IAAI,CAAA;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC,CAAA;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAA;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tenant/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tenant/validate.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQzD;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQ3D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
2
|
+
const SAFE_VAR_NAME = /^[a-z][a-z0-9_.]*$/;
|
|
3
|
+
export function validateTenantId(value) {
|
|
4
|
+
return UUID_PATTERN.test(value);
|
|
5
|
+
}
|
|
6
|
+
export function validateSessionVarName(name) {
|
|
7
|
+
if (!SAFE_VAR_NAME.test(name)) {
|
|
8
|
+
throw new Error(`[pipework] Invalid session variable name: "${name}". ` +
|
|
9
|
+
`Variable names must match /^[a-z][a-z0-9_.]*$/. ` +
|
|
10
|
+
`This prevents SQL injection in SET LOCAL statements.`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function validateSessionVarValue(value) {
|
|
14
|
+
if (/[;'"\n\r]/.test(value)) {
|
|
15
|
+
throw new Error(`[pipework] Unsafe session variable value rejected. ` +
|
|
16
|
+
`Values must not contain semicolons, quotes, or newlines. ` +
|
|
17
|
+
`Received: "${value.slice(0, 40)}${value.length > 40 ? '...' : ''}"`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tenant/validate.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,iEAAiE,CAAA;AAEtF,MAAM,aAAa,GAAG,oBAAoB,CAAA;AAE1C,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,8CAA8C,IAAI,KAAK;YACvD,kDAAkD;YAClD,sDAAsD,CACvD,CAAA;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,qDAAqD;YACrD,2DAA2D;YAC3D,cAAc,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CACrE,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { BaseAuth } from '../auth/types.js';
|
|
2
|
+
export declare function mockAuth<TAuth extends BaseAuth>(overrides?: Partial<TAuth> & {
|
|
3
|
+
userId?: string;
|
|
4
|
+
tenantId?: string;
|
|
5
|
+
}): TAuth;
|
|
6
|
+
export declare function asTenant<TAuth extends BaseAuth>(tenantId: string, overrides?: Partial<TAuth>): TAuth;
|
|
7
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/test/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,wBAAgB,QAAQ,CAAC,KAAK,SAAS,QAAQ,EAAE,SAAS,GAAE,OAAO,CAAC,KAAK,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,KAAK,CAM/H;AAED,wBAAgB,QAAQ,CAAC,KAAK,SAAS,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,OAAO,CAAC,KAAK,CAAM,GAAG,KAAK,CAExG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function mockAuth(overrides = {}) {
|
|
2
|
+
return {
|
|
3
|
+
userId: 'test-user',
|
|
4
|
+
tenantId: 'test-tenant',
|
|
5
|
+
...overrides,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function asTenant(tenantId, overrides = {}) {
|
|
9
|
+
return mockAuth({ tenantId, ...overrides });
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/test/auth.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAyB,YAAqE,EAAE;IACtH,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,aAAa;QACvB,GAAG,SAAS;KACJ,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAyB,QAAgB,EAAE,YAA4B,EAAE;IAC/F,OAAO,QAAQ,CAAQ,EAAE,QAAQ,EAAE,GAAG,SAAS,EAA6D,CAAC,CAAA;AAC/G,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Manifold } from '../pipework.js';
|
|
2
|
+
export interface WithContextOptions {
|
|
3
|
+
instance: Manifold;
|
|
4
|
+
auth?: unknown;
|
|
5
|
+
tenant?: string | null;
|
|
6
|
+
requestId?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function withContext<T>(options: WithContextOptions, fn: () => T): T;
|
|
9
|
+
export declare function withJobContext<T>(options: WithContextOptions, fn: () => T): T;
|
|
10
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/test/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAI9C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAe1E;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAQ7E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { runInContext } from '../context/store.js';
|
|
2
|
+
import { createRequestContext, createJobContext } from '../context/index.js';
|
|
3
|
+
export function withContext(options, fn) {
|
|
4
|
+
const ctx = createRequestContext({
|
|
5
|
+
instance: options.instance,
|
|
6
|
+
auth: options.auth ?? null,
|
|
7
|
+
tenant: options.tenant ?? null,
|
|
8
|
+
metadata: {
|
|
9
|
+
method: 'TEST',
|
|
10
|
+
path: '/test',
|
|
11
|
+
startedAt: Date.now(),
|
|
12
|
+
traceId: options.requestId ?? 'test-trace',
|
|
13
|
+
sessionId: null,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
return runInContext(ctx, fn);
|
|
17
|
+
}
|
|
18
|
+
export function withJobContext(options, fn) {
|
|
19
|
+
const ctx = createJobContext({
|
|
20
|
+
instance: options.instance,
|
|
21
|
+
auth: options.auth ?? null,
|
|
22
|
+
tenant: options.tenant ?? null,
|
|
23
|
+
});
|
|
24
|
+
return runInContext(ctx, fn);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/test/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAS5E,MAAM,UAAU,WAAW,CAAI,OAA2B,EAAE,EAAW;IACrE,MAAM,GAAG,GAAG,oBAAoB,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;QAC9B,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,YAAY;YAC1C,SAAS,EAAE,IAAI;SAChB;KACF,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc,CAAI,OAA2B,EAAE,EAAW;IACxE,MAAM,GAAG,GAAG,gBAAgB,CAAC;QAC3B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;KAC/B,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { setupTestDatabases, teardownTestDatabases, getTestDatabase, getTestDatabases, type TestDatabase } from './setup.js';
|
|
2
|
+
export { beginTestIsolation, endTestIsolation, type TestContext, type TestDatabaseConnections } from './plugin.js';
|
|
3
|
+
export { setupPipeworkTests, useTestDb, useTestInstance, withFlow } from './vitest.js';
|
|
4
|
+
export { mockAuth, asTenant } from './auth.js';
|
|
5
|
+
export { withContext, withJobContext, type WithContextOptions } from './context.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { setupTestDatabases, teardownTestDatabases, getTestDatabase, getTestDatabases } from './setup.js';
|
|
2
|
+
export { beginTestIsolation, endTestIsolation } from './plugin.js';
|
|
3
|
+
export { setupPipeworkTests, useTestDb, useTestInstance, withFlow } from './vitest.js';
|
|
4
|
+
export { mockAuth, asTenant } from './auth.js';
|
|
5
|
+
export { withContext, withJobContext } from './context.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/test/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAA;AAC5H,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAkD,MAAM,aAAa,CAAA;AAClH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type PostgresJsDatabase } from 'drizzle-orm/postgres-js';
|
|
2
|
+
import type { Manifold } from '../pipework.js';
|
|
3
|
+
import { runInContext } from '../context/store.js';
|
|
4
|
+
import type { Flow } from '../context/types.js';
|
|
5
|
+
export interface TestDatabaseConnections {
|
|
6
|
+
[name: string]: PostgresJsDatabase;
|
|
7
|
+
}
|
|
8
|
+
export interface TestContext {
|
|
9
|
+
id: string;
|
|
10
|
+
db: TestDatabaseConnections;
|
|
11
|
+
}
|
|
12
|
+
export declare function beginTestIsolation(instance: Manifold): Promise<TestContext>;
|
|
13
|
+
export declare function endTestIsolation(instance: Manifold, ctx: TestContext): Promise<void>;
|
|
14
|
+
export declare function createTestContext(instance: Manifold, testConnections: TestContext): Flow;
|
|
15
|
+
export { runInContext };
|
|
16
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAG/C,MAAM,WAAW,uBAAuB;IACtC,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAA;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,uBAAuB,CAAA;CAC5B;AASD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBjF;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB1F;AAgBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,GAAG,IAAI,CAMxF;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
|