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,63 @@
|
|
|
1
|
+
import postgres from 'postgres';
|
|
2
|
+
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
3
|
+
import { sql } from 'drizzle-orm';
|
|
4
|
+
import { getTestDatabase } from './setup.js';
|
|
5
|
+
import { createTestContext as createCtx } from '../context/create.js';
|
|
6
|
+
import { runInContext } from '../context/store.js';
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
const contextConnections = new Map();
|
|
9
|
+
export async function beginTestIsolation(instance) {
|
|
10
|
+
const dbConnections = {};
|
|
11
|
+
const contextId = randomUUID();
|
|
12
|
+
const connections = new Map();
|
|
13
|
+
for (const [name] of instance.config.databases()) {
|
|
14
|
+
const testDb = getTestDatabase(name);
|
|
15
|
+
if (!testDb) {
|
|
16
|
+
throw new Error(`[pipework] Test database not set up for "${name}". Did setupTestDatabases() run?`);
|
|
17
|
+
}
|
|
18
|
+
const conn = await createIsolatedConnection(testDb, connections, name);
|
|
19
|
+
dbConnections[name] = conn;
|
|
20
|
+
}
|
|
21
|
+
contextConnections.set(contextId, connections);
|
|
22
|
+
instance.isolation.markBegin();
|
|
23
|
+
return { id: contextId, db: dbConnections };
|
|
24
|
+
}
|
|
25
|
+
export async function endTestIsolation(instance, ctx) {
|
|
26
|
+
const connections = contextConnections.get(ctx.id);
|
|
27
|
+
if (!connections) {
|
|
28
|
+
instance.isolation.markEnd();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
for (const [, conn] of connections) {
|
|
32
|
+
try {
|
|
33
|
+
await conn.drizzle.execute(sql.raw('ROLLBACK'));
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Transaction may already be aborted
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
await conn.client.end();
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Connection may already be closed
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
contextConnections.delete(ctx.id);
|
|
46
|
+
instance.isolation.markEnd();
|
|
47
|
+
}
|
|
48
|
+
async function createIsolatedConnection(testDb, connections, name) {
|
|
49
|
+
const client = postgres(testDb.url, { max: 1, onnotice: () => { } });
|
|
50
|
+
const db = drizzle(client);
|
|
51
|
+
await db.execute(sql.raw('BEGIN'));
|
|
52
|
+
connections.set(name, { client, drizzle: db });
|
|
53
|
+
return db;
|
|
54
|
+
}
|
|
55
|
+
export function createTestContext(instance, testConnections) {
|
|
56
|
+
const ctx = createCtx(instance, randomUUID());
|
|
57
|
+
for (const [name, drizzleDb] of Object.entries(testConnections.db)) {
|
|
58
|
+
ctx.transactions.set(name, { drizzle: drizzleDb, nonce: ctx._nonce, tenant: ctx.tenant });
|
|
59
|
+
}
|
|
60
|
+
return ctx;
|
|
61
|
+
}
|
|
62
|
+
export { runInContext };
|
|
63
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/test/plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Manifold } from '../pipework.js';
|
|
2
|
+
export interface TestDatabase {
|
|
3
|
+
name: string;
|
|
4
|
+
url: string;
|
|
5
|
+
templateDb: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function setupTestDatabases(instance: Manifold): Promise<Map<string, TestDatabase>>;
|
|
8
|
+
export declare function teardownTestDatabases(): Promise<void>;
|
|
9
|
+
export declare function getTestDatabase(name: string): TestDatabase | undefined;
|
|
10
|
+
export declare function getTestDatabases(): ReadonlyMap<string, TestDatabase>;
|
|
11
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAI9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;CACnB;AAeD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAO/F;AAwCD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEtE;AAED,wBAAgB,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAEpE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import postgres from 'postgres';
|
|
2
|
+
import { drizzle } from 'drizzle-orm/postgres-js';
|
|
3
|
+
import { sql } from 'drizzle-orm';
|
|
4
|
+
import { migrate as drizzleMigrate } from 'drizzle-orm/postgres-js/migrator';
|
|
5
|
+
import { quoteIdentifier } from '../db/identifiers.js';
|
|
6
|
+
const testDatabases = new Map();
|
|
7
|
+
let adminClient = null;
|
|
8
|
+
function getAdminUrl(originalUrl) {
|
|
9
|
+
const url = new URL(originalUrl);
|
|
10
|
+
url.pathname = '/postgres';
|
|
11
|
+
return url.toString();
|
|
12
|
+
}
|
|
13
|
+
function testDbName(baseName) {
|
|
14
|
+
return `pipework_test_${baseName}_${process.pid}`;
|
|
15
|
+
}
|
|
16
|
+
export async function setupTestDatabases(instance) {
|
|
17
|
+
for (const [name, dbConfig] of instance.config.databases()) {
|
|
18
|
+
const testDb = await createTestDatabase(name, dbConfig);
|
|
19
|
+
testDatabases.set(name, testDb);
|
|
20
|
+
}
|
|
21
|
+
return testDatabases;
|
|
22
|
+
}
|
|
23
|
+
async function createTestDatabase(name, dbConfig) {
|
|
24
|
+
const adminUrl = getAdminUrl(dbConfig.url);
|
|
25
|
+
if (!adminClient) {
|
|
26
|
+
adminClient = postgres(adminUrl, { max: 1, onnotice: () => { } });
|
|
27
|
+
}
|
|
28
|
+
const dbName = testDbName(name);
|
|
29
|
+
const dbIdent = quoteIdentifier(dbName, 'database');
|
|
30
|
+
const admin = drizzle(adminClient);
|
|
31
|
+
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${dbIdent}`));
|
|
32
|
+
await admin.execute(sql.raw(`CREATE DATABASE ${dbIdent}`));
|
|
33
|
+
const testUrl = new URL(dbConfig.url);
|
|
34
|
+
testUrl.pathname = `/${dbName}`;
|
|
35
|
+
const testUrlStr = testUrl.toString();
|
|
36
|
+
const testClient = postgres(testUrlStr, { max: 1, onnotice: () => { } });
|
|
37
|
+
const testDb = drizzle(testClient);
|
|
38
|
+
if (dbConfig.extensions.length > 0) {
|
|
39
|
+
for (const ext of dbConfig.extensions) {
|
|
40
|
+
await testDb.execute(sql.raw(`CREATE EXTENSION IF NOT EXISTS ${quoteIdentifier(ext, 'extension')}`));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (dbConfig.migrations !== undefined) {
|
|
44
|
+
await drizzleMigrate(testDb, {
|
|
45
|
+
migrationsFolder: dbConfig.migrations,
|
|
46
|
+
migrationsTable: dbConfig.migrationTable,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
await testClient.end();
|
|
50
|
+
return { name, url: testUrlStr, templateDb: dbName };
|
|
51
|
+
}
|
|
52
|
+
export async function teardownTestDatabases() {
|
|
53
|
+
if (!adminClient)
|
|
54
|
+
return;
|
|
55
|
+
const admin = drizzle(adminClient);
|
|
56
|
+
for (const [, testDb] of testDatabases) {
|
|
57
|
+
try {
|
|
58
|
+
const dbName = quoteIdentifier(testDb.templateDb, 'database');
|
|
59
|
+
await admin.execute(sql `SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = ${testDb.templateDb} AND pid != pg_backend_pid()`);
|
|
60
|
+
await admin.execute(sql.raw(`DROP DATABASE IF EXISTS ${dbName}`));
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Best effort cleanup
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
testDatabases.clear();
|
|
67
|
+
await adminClient.end();
|
|
68
|
+
adminClient = null;
|
|
69
|
+
}
|
|
70
|
+
export function getTestDatabase(name) {
|
|
71
|
+
return testDatabases.get(name);
|
|
72
|
+
}
|
|
73
|
+
export function getTestDatabases() {
|
|
74
|
+
return testDatabases;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DB } from '../db/index.js';
|
|
2
|
+
import type { Blueprint } from '../config/index.js';
|
|
3
|
+
import type { Manifold } from '../pipework.js';
|
|
4
|
+
export { type TestContext, type TestDatabaseConnections } from './plugin.js';
|
|
5
|
+
export declare function setupPipeworkTests(configOrInstance: Blueprint | Manifold): Manifold;
|
|
6
|
+
export declare function useTestDb(name?: string): DB;
|
|
7
|
+
export declare function useTestInstance(): Manifold;
|
|
8
|
+
export declare function withFlow<T>(fn: () => T): T;
|
|
9
|
+
//# sourceMappingURL=vitest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.d.ts","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAK9C,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAK5E,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAyBnF;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAiB3C;AAED,wBAAgB,eAAe,IAAI,QAAQ,CAK1C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAM1C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { beforeAll, afterAll, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { createPipework } from '../pipework.js';
|
|
3
|
+
import { setupTestDatabases, teardownTestDatabases } from './setup.js';
|
|
4
|
+
import { beginTestIsolation, endTestIsolation, createTestContext, runInContext } from './plugin.js';
|
|
5
|
+
export {} from './plugin.js';
|
|
6
|
+
let _testContext = null;
|
|
7
|
+
let _instance = null;
|
|
8
|
+
export function setupPipeworkTests(configOrInstance) {
|
|
9
|
+
const instance = isInstance(configOrInstance) ? configOrInstance : createPipework(configOrInstance);
|
|
10
|
+
_instance = instance;
|
|
11
|
+
beforeAll(async () => {
|
|
12
|
+
await setupTestDatabases(instance);
|
|
13
|
+
});
|
|
14
|
+
afterAll(async () => {
|
|
15
|
+
await instance.pool.closeAll();
|
|
16
|
+
await teardownTestDatabases();
|
|
17
|
+
});
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
_testContext = await beginTestIsolation(instance);
|
|
20
|
+
});
|
|
21
|
+
afterEach(async () => {
|
|
22
|
+
if (_testContext) {
|
|
23
|
+
await endTestIsolation(instance, _testContext);
|
|
24
|
+
_testContext = null;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
return instance;
|
|
28
|
+
}
|
|
29
|
+
export function useTestDb(name) {
|
|
30
|
+
if (!_testContext || !_instance) {
|
|
31
|
+
throw new Error('[pipework] No test context available. Are you inside a test that called setupPipeworkTests()?\n\n' +
|
|
32
|
+
' Hint: Call setupPipeworkTests(config) at the top of your test file or in a setup file.\n');
|
|
33
|
+
}
|
|
34
|
+
const resolvedName = name ?? _instance.config.defaultDatabaseName();
|
|
35
|
+
const db = _testContext.db[resolvedName];
|
|
36
|
+
if (!db) {
|
|
37
|
+
const available = Object.keys(_testContext.db).join(', ');
|
|
38
|
+
throw new Error(`[pipework] No test database "${resolvedName}". Available: ${available}`);
|
|
39
|
+
}
|
|
40
|
+
return db;
|
|
41
|
+
}
|
|
42
|
+
export function useTestInstance() {
|
|
43
|
+
if (!_instance) {
|
|
44
|
+
throw new Error('[pipework] No test instance. Call setupPipeworkTests() first.');
|
|
45
|
+
}
|
|
46
|
+
return _instance;
|
|
47
|
+
}
|
|
48
|
+
export function withFlow(fn) {
|
|
49
|
+
if (!_testContext || !_instance) {
|
|
50
|
+
throw new Error('[pipework] No test context. Call setupPipeworkTests() first.');
|
|
51
|
+
}
|
|
52
|
+
const ctx = createTestContext(_instance, _testContext);
|
|
53
|
+
return runInContext(ctx, fn);
|
|
54
|
+
}
|
|
55
|
+
function isInstance(v) {
|
|
56
|
+
return 'pool' in v && 'config' in v;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=vitest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.js","sourceRoot":"","sources":["../../src/test/vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAInE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAA;AAErH,OAAO,EAAkD,MAAM,aAAa,CAAA;AAE5E,IAAI,YAAY,GAAuB,IAAI,CAAA;AAC3C,IAAI,SAAS,GAAoB,IAAI,CAAA;AAErC,MAAM,UAAU,kBAAkB,CAAC,gBAAsC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;IACnG,SAAS,GAAG,QAAQ,CAAA;IAEpB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC9B,MAAM,qBAAqB,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,YAAY,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YAC9C,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,mGAAmG;YACnG,4FAA4F,CAC7F,CAAA;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAA;IACnE,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzD,MAAM,IAAI,KAAK,CACb,gCAAgC,YAAY,iBAAiB,SAAS,EAAE,CACzE,CAAA;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,EAAW;IACrC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IACtD,OAAO,YAAY,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC;AAED,SAAS,UAAU,CAAC,CAAuB;IACzC,OAAO,MAAM,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAA;AACrC,CAAC"}
|
package/dist/trunk.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ResolvedConfig } from './config/load.js';
|
|
2
|
+
import type { ResolvedDatabase } from './config/load.js';
|
|
3
|
+
import type { TrunkConfig } from './config/schema.js';
|
|
4
|
+
import type { ManagedConnection } from './db/pool.js';
|
|
5
|
+
export interface TrunkInstance {
|
|
6
|
+
readonly config: ResolvedConfig;
|
|
7
|
+
readonly pool: PoolState;
|
|
8
|
+
readonly isolation: IsolationState;
|
|
9
|
+
readonly connections: ConnectionTracker;
|
|
10
|
+
}
|
|
11
|
+
export interface PoolState {
|
|
12
|
+
getOrCreate(config: ResolvedDatabase): ManagedConnection;
|
|
13
|
+
get(name: string): ManagedConnection | undefined;
|
|
14
|
+
closeAll(): Promise<void>;
|
|
15
|
+
count(): number;
|
|
16
|
+
}
|
|
17
|
+
export interface IsolationState {
|
|
18
|
+
markBegin(): void;
|
|
19
|
+
markEnd(): void;
|
|
20
|
+
assertClean(): void;
|
|
21
|
+
stats(): {
|
|
22
|
+
active: number;
|
|
23
|
+
totalBegins: number;
|
|
24
|
+
totalEnds: number;
|
|
25
|
+
};
|
|
26
|
+
reset(): void;
|
|
27
|
+
}
|
|
28
|
+
export interface ConnectionTracker {
|
|
29
|
+
track(id: string, name: string, context: string): void;
|
|
30
|
+
release(id: string): void;
|
|
31
|
+
activeCount(): number;
|
|
32
|
+
assertNoLeaks(maxExpected: number): void;
|
|
33
|
+
}
|
|
34
|
+
export declare function createTrunk(raw: TrunkConfig): TrunkInstance;
|
|
35
|
+
//# sourceMappingURL=trunk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trunk.d.ts","sourceRoot":"","sources":["../src/trunk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAIrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IACxD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAA;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,KAAK,IAAI,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,IAAI,IAAI,CAAA;IACjB,OAAO,IAAI,IAAI,CAAA;IACf,WAAW,IAAI,IAAI,CAAA;IACnB,KAAK,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACnE,KAAK,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,IAAI,MAAM,CAAA;IACrB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACzC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,CAO3D"}
|
package/dist/trunk.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { loadConfig as parseConfig } from './config/load.js';
|
|
2
|
+
import { createManagedConnection } from './db/pool.js';
|
|
3
|
+
import { InvariantViolation } from './invariants/assert.js';
|
|
4
|
+
export function createTrunk(raw) {
|
|
5
|
+
const config = parseConfig(raw);
|
|
6
|
+
const pool = createPoolState();
|
|
7
|
+
const isolation = createIsolationState();
|
|
8
|
+
const connections = createConnectionTracker();
|
|
9
|
+
return { config, pool, isolation, connections };
|
|
10
|
+
}
|
|
11
|
+
function createPoolState() {
|
|
12
|
+
const map = new Map();
|
|
13
|
+
return {
|
|
14
|
+
getOrCreate(config) {
|
|
15
|
+
const existing = map.get(config.name);
|
|
16
|
+
if (existing)
|
|
17
|
+
return existing;
|
|
18
|
+
const managed = createManagedConnection(config, () => map.delete(config.name));
|
|
19
|
+
map.set(config.name, managed);
|
|
20
|
+
return managed;
|
|
21
|
+
},
|
|
22
|
+
get(name) {
|
|
23
|
+
return map.get(name);
|
|
24
|
+
},
|
|
25
|
+
async closeAll() {
|
|
26
|
+
const closing = [...map.values()].map(c => c.close());
|
|
27
|
+
await Promise.all(closing);
|
|
28
|
+
},
|
|
29
|
+
count() {
|
|
30
|
+
return map.size;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function createIsolationState() {
|
|
35
|
+
let active = 0;
|
|
36
|
+
let totalBegins = 0;
|
|
37
|
+
let totalEnds = 0;
|
|
38
|
+
return {
|
|
39
|
+
markBegin() {
|
|
40
|
+
active++;
|
|
41
|
+
totalBegins++;
|
|
42
|
+
},
|
|
43
|
+
markEnd() {
|
|
44
|
+
if (active <= 0) {
|
|
45
|
+
throw new InvariantViolation('isolation-end-without-begin', {
|
|
46
|
+
activeIsolationContexts: active,
|
|
47
|
+
totalBegins,
|
|
48
|
+
totalEnds,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
active--;
|
|
52
|
+
totalEnds++;
|
|
53
|
+
},
|
|
54
|
+
assertClean() {
|
|
55
|
+
if (active !== 0) {
|
|
56
|
+
throw new InvariantViolation('isolation-context-leak', {
|
|
57
|
+
activeIsolationContexts: active,
|
|
58
|
+
totalBegins,
|
|
59
|
+
totalEnds,
|
|
60
|
+
delta: totalBegins - totalEnds,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
stats() {
|
|
65
|
+
return { active, totalBegins, totalEnds };
|
|
66
|
+
},
|
|
67
|
+
reset() {
|
|
68
|
+
active = 0;
|
|
69
|
+
totalBegins = 0;
|
|
70
|
+
totalEnds = 0;
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function createConnectionTracker() {
|
|
75
|
+
const tracked = new Map();
|
|
76
|
+
return {
|
|
77
|
+
track(id, name, context) {
|
|
78
|
+
tracked.set(id, { name, createdAt: Date.now(), context });
|
|
79
|
+
},
|
|
80
|
+
release(id) {
|
|
81
|
+
tracked.delete(id);
|
|
82
|
+
},
|
|
83
|
+
activeCount() {
|
|
84
|
+
return tracked.size;
|
|
85
|
+
},
|
|
86
|
+
assertNoLeaks(maxExpected) {
|
|
87
|
+
if (tracked.size > maxExpected) {
|
|
88
|
+
throw new InvariantViolation('connection-pool-bounded', {
|
|
89
|
+
active: tracked.size,
|
|
90
|
+
maxExpected,
|
|
91
|
+
connections: [...tracked.entries()].map(([id, c]) => ({
|
|
92
|
+
id,
|
|
93
|
+
name: c.name,
|
|
94
|
+
age_ms: Date.now() - c.createdAt,
|
|
95
|
+
context: c.context,
|
|
96
|
+
})),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=trunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trunk.js","sourceRoot":"","sources":["../src/trunk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { vector as vectorColumn, tsvector } from './types.js';
|
|
2
|
+
import { cosineDistance, cosineSimilarity, l2Distance, innerProduct, toTsvector, toTsquery, tsRank } from './query.js';
|
|
3
|
+
import { validateVectorExtension } from './validate.js';
|
|
4
|
+
export declare const vector: {
|
|
5
|
+
column: typeof vectorColumn;
|
|
6
|
+
tsvector: typeof tsvector;
|
|
7
|
+
cosine: typeof cosineDistance;
|
|
8
|
+
cosineSimilarity: typeof cosineSimilarity;
|
|
9
|
+
l2: typeof l2Distance;
|
|
10
|
+
innerProduct: typeof innerProduct;
|
|
11
|
+
toTsvector: typeof toTsvector;
|
|
12
|
+
toTsquery: typeof toTsquery;
|
|
13
|
+
rank: typeof tsRank;
|
|
14
|
+
validate: typeof validateVectorExtension;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=namespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/vector/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,eAAO,MAAM,MAAM;;;;;;;;;;;CAWlB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { vector as vectorColumn, tsvector } from './types.js';
|
|
2
|
+
import { cosineDistance, cosineSimilarity, l2Distance, innerProduct, toTsvector, toTsquery, tsRank } from './query.js';
|
|
3
|
+
import { validateVectorExtension } from './validate.js';
|
|
4
|
+
export const vector = {
|
|
5
|
+
column: vectorColumn,
|
|
6
|
+
tsvector,
|
|
7
|
+
cosine: cosineDistance,
|
|
8
|
+
cosineSimilarity,
|
|
9
|
+
l2: l2Distance,
|
|
10
|
+
innerProduct,
|
|
11
|
+
toTsvector,
|
|
12
|
+
toTsquery,
|
|
13
|
+
rank: tsRank,
|
|
14
|
+
validate: validateVectorExtension,
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/vector/namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACtH,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,YAAY;IACpB,QAAQ;IACR,MAAM,EAAE,cAAc;IACtB,gBAAgB;IAChB,EAAE,EAAE,UAAU;IACd,YAAY;IACZ,UAAU;IACV,SAAS;IACT,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,uBAAuB;CAClC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SQL, Column } from '../db/types.js';
|
|
2
|
+
export declare function cosineDistance(column: Column, query: number[]): SQL<number>;
|
|
3
|
+
export declare function cosineSimilarity(column: Column, query: number[]): SQL<number>;
|
|
4
|
+
export declare function l2Distance(column: Column, query: number[]): SQL<number>;
|
|
5
|
+
export declare function innerProduct(column: Column, query: number[]): SQL<number>;
|
|
6
|
+
export declare function toTsvector(text: string | SQL, config?: string): SQL;
|
|
7
|
+
export declare function toTsquery(query: string, config?: string): SQL;
|
|
8
|
+
export declare function tsRank(column: Column, query: string, config?: string): SQL<number>;
|
|
9
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/vector/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEjD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAG3E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAG7E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAGvE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAGzE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAMnE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAG7D;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAGlF"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
export function cosineDistance(column, query) {
|
|
3
|
+
const vectorStr = `[${query.join(',')}]`;
|
|
4
|
+
return sql `${column} <=> ${vectorStr}::vector`;
|
|
5
|
+
}
|
|
6
|
+
export function cosineSimilarity(column, query) {
|
|
7
|
+
const vectorStr = `[${query.join(',')}]`;
|
|
8
|
+
return sql `1 - (${column} <=> ${vectorStr}::vector)`;
|
|
9
|
+
}
|
|
10
|
+
export function l2Distance(column, query) {
|
|
11
|
+
const vectorStr = `[${query.join(',')}]`;
|
|
12
|
+
return sql `${column} <-> ${vectorStr}::vector`;
|
|
13
|
+
}
|
|
14
|
+
export function innerProduct(column, query) {
|
|
15
|
+
const vectorStr = `[${query.join(',')}]`;
|
|
16
|
+
return sql `${column} <#> ${vectorStr}::vector`;
|
|
17
|
+
}
|
|
18
|
+
export function toTsvector(text, config) {
|
|
19
|
+
const tsConfig = config ?? 'english';
|
|
20
|
+
if (typeof text === 'string') {
|
|
21
|
+
return sql `to_tsvector(${tsConfig}, ${text})`;
|
|
22
|
+
}
|
|
23
|
+
return sql `to_tsvector(${tsConfig}, ${text})`;
|
|
24
|
+
}
|
|
25
|
+
export function toTsquery(query, config) {
|
|
26
|
+
const tsConfig = config ?? 'english';
|
|
27
|
+
return sql `to_tsquery(${tsConfig}, ${query})`;
|
|
28
|
+
}
|
|
29
|
+
export function tsRank(column, query, config) {
|
|
30
|
+
const tsConfig = config ?? 'english';
|
|
31
|
+
return sql `ts_rank(${column}, to_tsquery(${tsConfig}, ${query}))`;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/vector/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,KAAe;IAC5D,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACxC,OAAO,GAAG,CAAQ,GAAG,MAAM,QAAQ,SAAS,UAAU,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAe;IAC9D,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACxC,OAAO,GAAG,CAAQ,QAAQ,MAAM,QAAQ,SAAS,WAAW,CAAA;AAC9D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,KAAe;IACxD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACxC,OAAO,GAAG,CAAQ,GAAG,MAAM,QAAQ,SAAS,UAAU,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAe;IAC1D,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACxC,OAAO,GAAG,CAAQ,GAAG,MAAM,QAAQ,SAAS,UAAU,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAkB,EAAE,MAAe;IAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAA;IACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAA,eAAe,QAAQ,KAAK,IAAI,GAAG,CAAA;IAC/C,CAAC;IACD,OAAO,GAAG,CAAA,eAAe,QAAQ,KAAK,IAAI,GAAG,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,MAAe;IACtD,MAAM,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAA;IACpC,OAAO,GAAG,CAAA,cAAc,QAAQ,KAAK,KAAK,GAAG,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAc,EAAE,KAAa,EAAE,MAAe;IACnE,MAAM,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAA;IACpC,OAAO,GAAG,CAAQ,WAAW,MAAM,gBAAgB,QAAQ,KAAK,KAAK,IAAI,CAAA;AAC3E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function vector(name: string, config: {
|
|
2
|
+
dimensions: number;
|
|
3
|
+
}): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
4
|
+
name: string;
|
|
5
|
+
dataType: "custom";
|
|
6
|
+
columnType: "PgCustomColumn";
|
|
7
|
+
data: number[];
|
|
8
|
+
driverParam: unknown;
|
|
9
|
+
enumValues: undefined;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function tsvector(name: string): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
12
|
+
name: string;
|
|
13
|
+
dataType: "custom";
|
|
14
|
+
columnType: "PgCustomColumn";
|
|
15
|
+
data: unknown;
|
|
16
|
+
driverParam: unknown;
|
|
17
|
+
enumValues: undefined;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/vector/types.ts"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE;;;;;;;GAgBlE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM;;;;;;;GAMpC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { customType } from '../db/col/index.js';
|
|
2
|
+
export function vector(name, config) {
|
|
3
|
+
return customType({
|
|
4
|
+
dataType() {
|
|
5
|
+
return `vector(${config.dimensions})`;
|
|
6
|
+
},
|
|
7
|
+
toDriver(value) {
|
|
8
|
+
return `[${value.join(',')}]`;
|
|
9
|
+
},
|
|
10
|
+
fromDriver(value) {
|
|
11
|
+
if (typeof value === 'string') {
|
|
12
|
+
const trimmed = value.startsWith('[') ? value.slice(1, -1) : value;
|
|
13
|
+
return trimmed.split(',').map(Number);
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
},
|
|
17
|
+
})(name);
|
|
18
|
+
}
|
|
19
|
+
export function tsvector(name) {
|
|
20
|
+
return customType({
|
|
21
|
+
dataType() {
|
|
22
|
+
return 'tsvector';
|
|
23
|
+
},
|
|
24
|
+
})(name);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/vector/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,MAA8B;IACjE,OAAO,UAAU,CAA0C;QACzD,QAAQ;YACN,OAAO,UAAU,MAAM,CAAC,UAAU,GAAG,CAAA;QACvC,CAAC;QACD,QAAQ,CAAC,KAAe;YACtB,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;QAC/B,CAAC;QACD,UAAU,CAAC,KAAc;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;gBAClE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACvC,CAAC;YACD,OAAO,KAAiB,CAAA;QAC1B,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,UAAU,CAA0C;QACzD,QAAQ;YACN,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/vector/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAExC,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYnE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { sql } from '../db/sql.js';
|
|
2
|
+
export async function validateVectorExtension(db) {
|
|
3
|
+
const result = await db.execute(sql `SELECT extname FROM pg_extension WHERE extname = 'vector'`);
|
|
4
|
+
if (result.length === 0) {
|
|
5
|
+
throw new Error('[pipework] pgvector extension not installed on this database.\n' +
|
|
6
|
+
"Run: CREATE EXTENSION IF NOT EXISTS vector;\n" +
|
|
7
|
+
"Or add 'vector' to your database's extensions list in pipework.config.ts.");
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/vector/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAAM;IAClD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAC7B,GAAG,CAAA,2DAA2D,CAC/D,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,iEAAiE;YACjE,+CAA+C;YAC/C,2EAA2E,CAC5E,CAAA;IACH,CAAC;AACH,CAAC"}
|