pipework 0.8.1 → 0.8.4
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/CHANGELOG.md +14 -0
- package/dist/async/jobs/execute.d.ts +2 -0
- package/dist/async/jobs/execute.d.ts.map +1 -1
- package/dist/async/jobs/execute.js +17 -2
- package/dist/async/jobs/execute.js.map +1 -1
- package/dist/audit/query/cursor.d.ts +7 -0
- package/dist/audit/query/cursor.d.ts.map +1 -0
- package/dist/audit/query/cursor.js +25 -0
- package/dist/audit/query/cursor.js.map +1 -0
- package/dist/audit/query/index.d.ts +5 -0
- package/dist/audit/query/index.d.ts.map +1 -0
- package/dist/audit/query/index.js +3 -0
- package/dist/audit/query/index.js.map +1 -0
- package/dist/audit/query/query.d.ts +49 -0
- package/dist/audit/query/query.d.ts.map +1 -0
- package/dist/audit/query/query.js +119 -0
- package/dist/audit/query/query.js.map +1 -0
- package/dist/audit/schema/audit-record-fields.d.ts +15 -0
- package/dist/audit/schema/audit-record-fields.d.ts.map +1 -0
- package/dist/audit/schema/audit-record-fields.js +50 -0
- package/dist/audit/schema/audit-record-fields.js.map +1 -0
- package/dist/audit/schema/audit-record.d.ts +15 -0
- package/dist/audit/schema/audit-record.d.ts.map +1 -0
- package/dist/audit/schema/audit-record.js +12 -0
- package/dist/audit/schema/audit-record.js.map +1 -0
- package/dist/auth/tenant/scope.js +1 -1
- package/dist/auth/tenant/scope.js.map +1 -1
- package/dist/auth/tenant/scoped-db.d.ts.map +1 -1
- package/dist/auth/tenant/scoped-db.js +1 -2
- package/dist/auth/tenant/scoped-db.js.map +1 -1
- package/dist/cli/commands/check.d.ts +4 -0
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +187 -15
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/codemod.d.ts +6 -0
- package/dist/cli/commands/codemod.d.ts.map +1 -0
- package/dist/cli/commands/codemod.js +63 -0
- package/dist/cli/commands/codemod.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +9 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/config/load.d.ts +23 -0
- package/dist/core/config/load.d.ts.map +1 -1
- package/dist/core/config/load.js +8 -0
- package/dist/core/config/load.js.map +1 -1
- package/dist/core/config/namespace.d.ts +19 -0
- package/dist/core/config/namespace.d.ts.map +1 -1
- package/dist/core/config/schema.d.ts +41 -0
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +27 -0
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/logging/logger.d.ts +3 -1
- package/dist/core/logging/logger.d.ts.map +1 -1
- package/dist/core/logging/logger.js +2 -2
- package/dist/core/logging/logger.js.map +1 -1
- package/dist/core/pipework.d.ts +2 -2
- package/dist/core/pipework.d.ts.map +1 -1
- package/dist/data/db/bulk-set.js +1 -1
- package/dist/data/db/bulk-set.js.map +1 -1
- package/dist/data/db/composed.js +1 -1
- package/dist/data/db/composed.js.map +1 -1
- package/dist/data/db/db.d.ts +10 -0
- package/dist/data/db/db.d.ts.map +1 -1
- package/dist/data/db/db.js +12 -0
- package/dist/data/db/db.js.map +1 -1
- package/dist/data/db/filter.d.ts +42 -43
- package/dist/data/db/filter.d.ts.map +1 -1
- package/dist/data/db/filter.js +7 -6
- package/dist/data/db/filter.js.map +1 -1
- package/dist/data/db/namespace.d.ts +90 -82
- package/dist/data/db/namespace.d.ts.map +1 -1
- package/dist/data/db/namespace.js +21 -5
- package/dist/data/db/namespace.js.map +1 -1
- package/dist/data/migrate/post-process.d.ts +2 -1
- package/dist/data/migrate/post-process.d.ts.map +1 -1
- package/dist/data/migrate/post-process.js +2 -1
- package/dist/data/migrate/post-process.js.map +1 -1
- package/dist/data/temporal/definition-queries.js +1 -1
- package/dist/data/temporal/definition-queries.js.map +1 -1
- package/dist/data/temporal/query.js +1 -1
- package/dist/data/temporal/query.js.map +1 -1
- package/dist/data/temporal/resolve.js +1 -1
- package/dist/data/temporal/resolve.js.map +1 -1
- package/dist/data/write/audit/actor.d.ts +3 -0
- package/dist/data/write/audit/actor.d.ts.map +1 -0
- package/dist/data/write/audit/actor.js +15 -0
- package/dist/data/write/audit/actor.js.map +1 -0
- package/dist/data/write/audit/audit-columns.d.ts +6 -0
- package/dist/data/write/audit/audit-columns.d.ts.map +1 -0
- package/dist/data/write/audit/audit-columns.js +15 -0
- package/dist/data/write/audit/audit-columns.js.map +1 -0
- package/dist/data/write/audit/audit-select.d.ts +28 -0
- package/dist/data/write/audit/audit-select.d.ts.map +1 -0
- package/dist/data/write/audit/audit-select.js +49 -0
- package/dist/data/write/audit/audit-select.js.map +1 -0
- package/dist/data/write/audit/cte-compile.d.ts +7 -0
- package/dist/data/write/audit/cte-compile.d.ts.map +1 -0
- package/dist/data/write/audit/cte-compile.js +23 -0
- package/dist/data/write/audit/cte-compile.js.map +1 -0
- package/dist/data/write/audit/final-select.d.ts +4 -0
- package/dist/data/write/audit/final-select.d.ts.map +1 -0
- package/dist/data/write/audit/final-select.js +28 -0
- package/dist/data/write/audit/final-select.js.map +1 -0
- package/dist/data/write/audit/primary-key.d.ts +7 -0
- package/dist/data/write/audit/primary-key.d.ts.map +1 -0
- package/dist/data/write/audit/primary-key.js +32 -0
- package/dist/data/write/audit/primary-key.js.map +1 -0
- package/dist/data/write/audit/projection.d.ts +11 -0
- package/dist/data/write/audit/projection.d.ts.map +1 -0
- package/dist/data/write/audit/projection.js +37 -0
- package/dist/data/write/audit/projection.js.map +1 -0
- package/dist/data/write/audit/read-touches.d.ts +10 -0
- package/dist/data/write/audit/read-touches.d.ts.map +1 -0
- package/dist/data/write/audit/read-touches.js +63 -0
- package/dist/data/write/audit/read-touches.js.map +1 -0
- package/dist/data/write/audit/verb-delete.d.ts +7 -0
- package/dist/data/write/audit/verb-delete.d.ts.map +1 -0
- package/dist/data/write/audit/verb-delete.js +53 -0
- package/dist/data/write/audit/verb-delete.js.map +1 -0
- package/dist/data/write/audit/verb-insert.d.ts +7 -0
- package/dist/data/write/audit/verb-insert.d.ts.map +1 -0
- package/dist/data/write/audit/verb-insert.js +28 -0
- package/dist/data/write/audit/verb-insert.js.map +1 -0
- package/dist/data/write/audit/verb-update.d.ts +7 -0
- package/dist/data/write/audit/verb-update.d.ts.map +1 -0
- package/dist/data/write/audit/verb-update.js +52 -0
- package/dist/data/write/audit/verb-update.js.map +1 -0
- package/dist/data/write/audit/verb-upsert.d.ts +7 -0
- package/dist/data/write/audit/verb-upsert.d.ts.map +1 -0
- package/dist/data/write/audit/verb-upsert.js +81 -0
- package/dist/data/write/audit/verb-upsert.js.map +1 -0
- package/dist/data/write/delete.d.ts +15 -0
- package/dist/data/write/delete.d.ts.map +1 -0
- package/dist/data/write/delete.js +25 -0
- package/dist/data/write/delete.js.map +1 -0
- package/dist/data/write/execute.d.ts +3 -0
- package/dist/data/write/execute.d.ts.map +1 -0
- package/dist/data/write/execute.js +162 -0
- package/dist/data/write/execute.js.map +1 -0
- package/dist/data/write/index.d.ts +6 -0
- package/dist/data/write/index.d.ts.map +1 -0
- package/dist/data/write/index.js +10 -0
- package/dist/data/write/index.js.map +1 -0
- package/dist/data/write/insert.d.ts +18 -0
- package/dist/data/write/insert.d.ts.map +1 -0
- package/dist/data/write/insert.js +29 -0
- package/dist/data/write/insert.js.map +1 -0
- package/dist/data/write/state.d.ts +29 -0
- package/dist/data/write/state.d.ts.map +1 -0
- package/dist/data/write/state.js +9 -0
- package/dist/data/write/state.js.map +1 -0
- package/dist/data/write/update.d.ts +17 -0
- package/dist/data/write/update.d.ts.map +1 -0
- package/dist/data/write/update.js +39 -0
- package/dist/data/write/update.js.map +1 -0
- package/dist/data/write/upsert.d.ts +21 -0
- package/dist/data/write/upsert.d.ts.map +1 -0
- package/dist/data/write/upsert.js +42 -0
- package/dist/data/write/upsert.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/audit/namespace.d.ts +3 -0
- package/dist/infra/audit/namespace.d.ts.map +1 -1
- package/dist/infra/audit/namespace.js +3 -0
- package/dist/infra/audit/namespace.js.map +1 -1
- package/dist/lint/config.d.ts +4 -2
- package/dist/lint/config.d.ts.map +1 -1
- package/dist/lint/config.js +9 -5
- package/dist/lint/config.js.map +1 -1
- package/dist/lint/index.d.ts +2 -1
- package/dist/lint/index.d.ts.map +1 -1
- package/dist/lint/index.js +1 -0
- package/dist/lint/index.js.map +1 -1
- package/dist/lint/resolver.d.ts +16 -0
- package/dist/lint/resolver.d.ts.map +1 -0
- package/dist/lint/resolver.js +61 -0
- package/dist/lint/resolver.js.map +1 -0
- package/dist/request/context/create.d.ts +4 -0
- package/dist/request/context/create.d.ts.map +1 -1
- package/dist/request/context/create.js +3 -0
- package/dist/request/context/create.js.map +1 -1
- package/dist/request/context/types.d.ts +3 -0
- package/dist/request/context/types.d.ts.map +1 -1
- package/dist/request/http/middleware.d.ts.map +1 -1
- package/dist/request/http/middleware.js +30 -0
- package/dist/request/http/middleware.js.map +1 -1
- package/dist/request/http/server.d.ts.map +1 -1
- package/dist/request/http/server.js +6 -1
- package/dist/request/http/server.js.map +1 -1
- package/dist/test/context.d.ts.map +1 -1
- package/dist/test/context.js +43 -2
- package/dist/test/context.js.map +1 -1
- package/dist/test/index.d.ts +1 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +1 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/vitest-workspace.d.ts +15 -2
- package/dist/test/vitest-workspace.d.ts.map +1 -1
- package/dist/test/vitest-workspace.js +60 -7
- package/dist/test/vitest-workspace.js.map +1 -1
- package/dist/trace/cardinality/analyze.d.ts +26 -0
- package/dist/trace/cardinality/analyze.d.ts.map +1 -0
- package/dist/trace/cardinality/analyze.js +129 -0
- package/dist/trace/cardinality/analyze.js.map +1 -0
- package/dist/trace/cardinality/branch-context.d.ts +13 -0
- package/dist/trace/cardinality/branch-context.d.ts.map +1 -0
- package/dist/trace/cardinality/branch-context.js +182 -0
- package/dist/trace/cardinality/branch-context.js.map +1 -0
- package/dist/trace/cardinality/check.d.ts +4 -0
- package/dist/trace/cardinality/check.d.ts.map +1 -0
- package/dist/trace/cardinality/check.js +29 -0
- package/dist/trace/cardinality/check.js.map +1 -0
- package/dist/trace/cardinality/classify-edge.d.ts +31 -0
- package/dist/trace/cardinality/classify-edge.d.ts.map +1 -0
- package/dist/trace/cardinality/classify-edge.js +27 -0
- package/dist/trace/cardinality/classify-edge.js.map +1 -0
- package/dist/trace/cardinality/structural-max.d.ts +14 -0
- package/dist/trace/cardinality/structural-max.d.ts.map +1 -0
- package/dist/trace/cardinality/structural-max.js +83 -0
- package/dist/trace/cardinality/structural-max.js.map +1 -0
- package/dist/trace/check/coverage-check.d.ts +20 -0
- package/dist/trace/check/coverage-check.d.ts.map +1 -0
- package/dist/trace/check/coverage-check.js +146 -0
- package/dist/trace/check/coverage-check.js.map +1 -0
- package/dist/trace/check/flow-check.d.ts +13 -0
- package/dist/trace/check/flow-check.d.ts.map +1 -0
- package/dist/trace/check/flow-check.js +82 -0
- package/dist/trace/check/flow-check.js.map +1 -0
- package/dist/trace/check/flow-step-site.d.ts +62 -0
- package/dist/trace/check/flow-step-site.d.ts.map +1 -0
- package/dist/trace/check/flow-step-site.js +142 -0
- package/dist/trace/check/flow-step-site.js.map +1 -0
- package/dist/trace/check/io-pattern.d.ts +14 -0
- package/dist/trace/check/io-pattern.d.ts.map +1 -0
- package/dist/trace/check/io-pattern.js +113 -0
- package/dist/trace/check/io-pattern.js.map +1 -0
- package/dist/trace/codemod/add-cardinality.d.ts +38 -0
- package/dist/trace/codemod/add-cardinality.d.ts.map +1 -0
- package/dist/trace/codemod/add-cardinality.js +106 -0
- package/dist/trace/codemod/add-cardinality.js.map +1 -0
- package/dist/trace/codemod/run.d.ts +25 -0
- package/dist/trace/codemod/run.d.ts.map +1 -0
- package/dist/trace/codemod/run.js +47 -0
- package/dist/trace/codemod/run.js.map +1 -0
- package/dist/trace/entry/close-trace.d.ts +7 -0
- package/dist/trace/entry/close-trace.d.ts.map +1 -0
- package/dist/trace/entry/close-trace.js +54 -0
- package/dist/trace/entry/close-trace.js.map +1 -0
- package/dist/trace/entry/finalize-trace.d.ts +5 -0
- package/dist/trace/entry/finalize-trace.d.ts.map +1 -0
- package/dist/trace/entry/finalize-trace.js +23 -0
- package/dist/trace/entry/finalize-trace.js.map +1 -0
- package/dist/trace/entry/open-trace.d.ts +26 -0
- package/dist/trace/entry/open-trace.d.ts.map +1 -0
- package/dist/trace/entry/open-trace.js +75 -0
- package/dist/trace/entry/open-trace.js.map +1 -0
- package/dist/trace/entry/parent-trace.d.ts +4 -0
- package/dist/trace/entry/parent-trace.d.ts.map +1 -0
- package/dist/trace/entry/parent-trace.js +10 -0
- package/dist/trace/entry/parent-trace.js.map +1 -0
- package/dist/trace/entry/parse-traceparent.d.ts +8 -0
- package/dist/trace/entry/parse-traceparent.d.ts.map +1 -0
- package/dist/trace/entry/parse-traceparent.js +37 -0
- package/dist/trace/entry/parse-traceparent.js.map +1 -0
- package/dist/trace/entry/trace-context.d.ts +19 -0
- package/dist/trace/entry/trace-context.d.ts.map +1 -0
- package/dist/trace/entry/trace-context.js +5 -0
- package/dist/trace/entry/trace-context.js.map +1 -0
- package/dist/trace/entry/tracing-enabled.d.ts +4 -0
- package/dist/trace/entry/tracing-enabled.d.ts.map +1 -0
- package/dist/trace/entry/tracing-enabled.js +8 -0
- package/dist/trace/entry/tracing-enabled.js.map +1 -0
- package/dist/trace/partition/plan.d.ts +2 -0
- package/dist/trace/partition/plan.d.ts.map +1 -1
- package/dist/trace/partition/plan.js +8 -1
- package/dist/trace/partition/plan.js.map +1 -1
- package/dist/trace/partition/schedule.d.ts.map +1 -1
- package/dist/trace/partition/schedule.js +6 -4
- package/dist/trace/partition/schedule.js.map +1 -1
- package/dist/trace/partition/startup-hook.d.ts.map +1 -1
- package/dist/trace/partition/startup-hook.js +6 -2
- package/dist/trace/partition/startup-hook.js.map +1 -1
- package/dist/trace/partition/tables.d.ts +1 -1
- package/dist/trace/partition/tables.d.ts.map +1 -1
- package/dist/trace/partition/tables.js +13 -5
- package/dist/trace/partition/tables.js.map +1 -1
- package/dist/trace/runtime/expire-stale-traces.d.ts +10 -0
- package/dist/trace/runtime/expire-stale-traces.d.ts.map +1 -0
- package/dist/trace/runtime/expire-stale-traces.js +36 -0
- package/dist/trace/runtime/expire-stale-traces.js.map +1 -0
- package/dist/trace/runtime/flow-step.d.ts +6 -0
- package/dist/trace/runtime/flow-step.d.ts.map +1 -0
- package/dist/trace/runtime/flow-step.js +122 -0
- package/dist/trace/runtime/flow-step.js.map +1 -0
- package/dist/trace/runtime/flush-steps.d.ts +5 -0
- package/dist/trace/runtime/flush-steps.d.ts.map +1 -0
- package/dist/trace/runtime/flush-steps.js +23 -0
- package/dist/trace/runtime/flush-steps.js.map +1 -0
- package/dist/trace/runtime/step-buffer.d.ts +139 -0
- package/dist/trace/runtime/step-buffer.d.ts.map +1 -0
- package/dist/trace/runtime/step-buffer.js +140 -0
- package/dist/trace/runtime/step-buffer.js.map +1 -0
- package/dist/trace/runtime/step-error.d.ts +8 -0
- package/dist/trace/runtime/step-error.d.ts.map +1 -0
- package/dist/trace/runtime/step-error.js +13 -0
- package/dist/trace/runtime/step-error.js.map +1 -0
- package/dist/trace/runtime/step-meta.d.ts +48 -0
- package/dist/trace/runtime/step-meta.d.ts.map +1 -0
- package/dist/trace/runtime/step-meta.js +6 -0
- package/dist/trace/runtime/step-meta.js.map +1 -0
- package/dist/trace/runtime/thenable.d.ts +3 -0
- package/dist/trace/runtime/thenable.d.ts.map +1 -0
- package/dist/trace/runtime/thenable.js +12 -0
- package/dist/trace/runtime/thenable.js.map +1 -0
- package/dist/trace/runtime/truncate-trace.d.ts +5 -0
- package/dist/trace/runtime/truncate-trace.d.ts.map +1 -0
- package/dist/trace/runtime/truncate-trace.js +44 -0
- package/dist/trace/runtime/truncate-trace.js.map +1 -0
- package/dist/trace/schema/trace-fields.d.ts +1 -1
- package/dist/trace/schema/trace-retained.d.ts +1 -1
- package/dist/trace/schema/trace.d.ts +1 -1
- package/dist/trace/transformer/build-meta-literal.d.ts +3 -0
- package/dist/trace/transformer/build-meta-literal.d.ts.map +1 -0
- package/dist/trace/transformer/build-meta-literal.js +8 -0
- package/dist/trace/transformer/build-meta-literal.js.map +1 -0
- package/dist/trace/transformer/find-flow-step-sites.d.ts +24 -0
- package/dist/trace/transformer/find-flow-step-sites.d.ts.map +1 -0
- package/dist/trace/transformer/find-flow-step-sites.js +69 -0
- package/dist/trace/transformer/find-flow-step-sites.js.map +1 -0
- package/dist/trace/transformer/inject-flow-step-import.d.ts +3 -0
- package/dist/trace/transformer/inject-flow-step-import.d.ts.map +1 -0
- package/dist/trace/transformer/inject-flow-step-import.js +28 -0
- package/dist/trace/transformer/inject-flow-step-import.js.map +1 -0
- package/dist/trace/transformer/transform-error.d.ts +8 -0
- package/dist/trace/transformer/transform-error.d.ts.map +1 -0
- package/dist/trace/transformer/transform-error.js +5 -0
- package/dist/trace/transformer/transform-error.js.map +1 -0
- package/dist/trace/transformer/transform-flow-steps.d.ts +12 -0
- package/dist/trace/transformer/transform-flow-steps.d.ts.map +1 -0
- package/dist/trace/transformer/transform-flow-steps.js +85 -0
- package/dist/trace/transformer/transform-flow-steps.js.map +1 -0
- package/dist/trace/transformer/wrap-function-declaration.d.ts +3 -0
- package/dist/trace/transformer/wrap-function-declaration.d.ts.map +1 -0
- package/dist/trace/transformer/wrap-function-declaration.js +28 -0
- package/dist/trace/transformer/wrap-function-declaration.js.map +1 -0
- package/dist/trace/transformer/wrap-variable-declaration.d.ts +3 -0
- package/dist/trace/transformer/wrap-variable-declaration.d.ts.map +1 -0
- package/dist/trace/transformer/wrap-variable-declaration.js +30 -0
- package/dist/trace/transformer/wrap-variable-declaration.js.map +1 -0
- package/dist/workspace/dependency-graph.d.ts.map +1 -1
- package/dist/workspace/dependency-graph.js +2 -3
- package/dist/workspace/dependency-graph.js.map +1 -1
- package/dist/workspace/generate.d.ts.map +1 -1
- package/dist/workspace/generate.js +63 -10
- package/dist/workspace/generate.js.map +1 -1
- package/dist/workspace/module-package-name.d.ts +3 -0
- package/dist/workspace/module-package-name.d.ts.map +1 -0
- package/dist/workspace/module-package-name.js +5 -0
- package/dist/workspace/module-package-name.js.map +1 -0
- package/package.json +21 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.4
|
|
4
|
+
|
|
5
|
+
- **Top-level eslint config is now consumer-supplied via `pipework.config.ts`** — pipework's generated `eslint.config.js` had no extension point for consumer plugins, additional rules, or extra flat-config blocks; `pipework install`/`sync` overwrote any hand-edits. Discipline rules like `react/forbid-elements`, `no-restricted-syntax` selectors, custom local plugins (`plumb/no-classname-on-registry`) were unreachable through pipework. The blueprint now accepts `lint.extra` with three named slots — `plugins` (registered in pipework's main block so rules can reference them as `name/rule`), `rules` (merged into pipework's main block, can override defaults), and `configs` (appended as additional flat-config entries for per-glob overrides). The generated `eslint.config.js` shrinks to a single `export default await resolveLintConfig()` and is now byte-verified by `pipework check` for parity with `vitest.config.ts` (#280).
|
|
6
|
+
- **Breaking: `LintConfig` type renamed to `LintOptions`** to free `LintConfig` for the blueprint-level type (mirrors `VitestConfig`). The only public consumer of the type is the `createLintConfig` argument; the type is rarely imported by name since `createLintConfig` accepts an object literal directly (#280).
|
|
7
|
+
|
|
8
|
+
## 0.8.3
|
|
9
|
+
|
|
10
|
+
- **Top-level vitest config is now consumer-supplied via `pipework.config.ts`** — pipework's generated `vitest.config.ts` rejected any consumer edits to it, which made vitest features that only take effect outside per-project config (reporters, sequencer, `cache`, `bail`, Vite-level `resolve`/`plugins`, …) unreachable. The blueprint now accepts `vitest.extra`, whose contents flow straight into `defineConfig(...)`: keys under `extra.test` spread into the `test` block (reporters, sequence, …), keys at the top of `extra` spread at the outer Vite level (resolve, plugins, cacheDir, …). The generated `vitest.config.ts` shrinks to a single `defineConfig(await resolveVitestConfig())` and stays byte-stable. `test.projects` is owned by pipework — `vitest.modules` remains the way to declare them, and `extra.test.projects` is rejected with a pointer to `vitest.modules` (#279).
|
|
11
|
+
- **Breaking: `resolveVitestWorkspace()` renamed to `resolveVitestConfig()`** with a new return shape (full `UserConfig` instead of just the projects array). The only place this is imported is the generated `vitest.config.ts` — upgrading pipework will mark it stale; run `pipework install` to regenerate (#279).
|
|
12
|
+
|
|
13
|
+
## 0.8.2
|
|
14
|
+
|
|
15
|
+
- **Fix: `pipework check` no longer needs a pre-built workspace** — `check` type-checked each module by resolving cross-package imports through `package.json` `exports` → `dist/`, so every dependency package had to be built with `tsc` first. On a fresh checkout the type check failed project-wide until a full build was run, which also made `--staged` / `--module` scoping misleading. `pipework install` now generates a `tsconfig.check.json` per module (and a workspace-level `tsconfig.check.base.json`) that resolve sibling packages straight from their `src/`, so `check` type-checks from a clean checkout with no prior build. The build path (`tsconfig.json`) is unchanged — `pnpm -r build` still resolves through `dist/` (#270).
|
|
16
|
+
|
|
3
17
|
## 0.8.1
|
|
4
18
|
|
|
5
19
|
- **Fix: refresh-token reuse detection did not actually revoke anything** — replaying a rotated refresh token was supposed to revoke the entire token family, but two bugs made the protection inert: rotated tokens were issued into a brand-new family instead of inheriting the family of the token they replaced, and even the direct revocation was undone because it ran inside the transaction whose rollback signalled the reuse. A stolen refresh token could be replayed indefinitely. Rotation now threads the family through, and revocation is committed before the error is raised.
|
|
@@ -16,6 +16,8 @@ export interface ExecuteJobOptions {
|
|
|
16
16
|
input?: unknown;
|
|
17
17
|
/** Timeout for multi-database transaction setup when running a tenant job. */
|
|
18
18
|
transactionTimeoutMs?: number;
|
|
19
|
+
/** The ingress kind for the opened trace — `'cron'` for schedule-fired jobs, `'job'` otherwise. */
|
|
20
|
+
entryKind?: 'job' | 'cron';
|
|
19
21
|
}
|
|
20
22
|
export declare function executeJob<TDeps extends Record<string, unknown>, TReturn>(handler: Handler<TDeps, TReturn>, options: ExecuteJobOptions): Promise<TReturn>;
|
|
21
23
|
//# sourceMappingURL=execute.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/async/jobs/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/async/jobs/execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAa9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,mGAAmG;IACnG,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;CAC3B;AAED,wBAAsB,UAAU,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,OAAO,CAAC,CA2ClB"}
|
|
@@ -3,6 +3,10 @@ import { runInContext } from '../../request/context/store.js';
|
|
|
3
3
|
import { createJobContext } from '../../request/context/create.js';
|
|
4
4
|
import { executeInTransaction } from '../../request/context/run-in-transaction.js';
|
|
5
5
|
import { resolveAndExecute } from '../../request/di/resolve.js';
|
|
6
|
+
import { isTracingEnabled } from '../../trace/entry/tracing-enabled.js';
|
|
7
|
+
import { openTrace } from '../../trace/entry/open-trace.js';
|
|
8
|
+
import { parentTrace } from '../../trace/entry/parent-trace.js';
|
|
9
|
+
import { finalizeTrace } from '../../trace/entry/finalize-trace.js';
|
|
6
10
|
/** Default timeout for setting up a tenant job's database transaction(s). */
|
|
7
11
|
const DEFAULT_JOB_TRANSACTION_TIMEOUT_MS = 5000;
|
|
8
12
|
export async function executeJob(handler, options) {
|
|
@@ -17,17 +21,28 @@ export async function executeJob(handler, options) {
|
|
|
17
21
|
jobCtxOptions.auth = options.auth;
|
|
18
22
|
if (options.tenant !== undefined)
|
|
19
23
|
jobCtxOptions.tenant = options.tenant;
|
|
24
|
+
if (isTracingEnabled(options.instance)) {
|
|
25
|
+
jobCtxOptions.trace = openTrace({
|
|
26
|
+
instance: options.instance,
|
|
27
|
+
entryKind: options.entryKind ?? 'job',
|
|
28
|
+
parent: parentTrace(),
|
|
29
|
+
tenant: options.tenant ?? null,
|
|
30
|
+
auth: options.auth ?? null,
|
|
31
|
+
requestId: options.jobId ?? null,
|
|
32
|
+
sessionId: null,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
20
35
|
const ctx = createJobContext(jobCtxOptions);
|
|
21
36
|
const run = () => resolveAndExecute(handler, options.input);
|
|
22
37
|
// No tenant: app-level scoping does not apply, so there is nothing to
|
|
23
38
|
// propagate to Postgres — run the handler directly as before.
|
|
24
39
|
const databases = resolveHandlerDatabases(handler, options.instance);
|
|
25
40
|
if (ctx.tenant === null || databases.length === 0) {
|
|
26
|
-
return runInContext(ctx, run);
|
|
41
|
+
return finalizeTrace(options.instance, ctx.trace, runInContext(ctx, run));
|
|
27
42
|
}
|
|
28
43
|
// Tenant job: wrap in a transaction and propagate session vars so
|
|
29
44
|
// database-side RLS sees the tenant — consistent with the HTTP surface.
|
|
30
|
-
return executeInTransaction(ctx, databases, options.tenantConfig ?? null, options.transactionTimeoutMs ?? DEFAULT_JOB_TRANSACTION_TIMEOUT_MS, run);
|
|
45
|
+
return finalizeTrace(options.instance, ctx.trace, executeInTransaction(ctx, databases, options.tenantConfig ?? null, options.transactionTimeoutMs ?? DEFAULT_JOB_TRANSACTION_TIMEOUT_MS, run));
|
|
31
46
|
}
|
|
32
47
|
function resolveHandlerDatabases(handler, instance) {
|
|
33
48
|
const names = new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/async/jobs/execute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/async/jobs/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface AuditCursor {
|
|
2
|
+
readonly occurredAt: Date;
|
|
3
|
+
readonly id: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function encodeAuditCursor(cursor: AuditCursor): string;
|
|
6
|
+
export declare function decodeAuditCursor(raw: string): AuditCursor;
|
|
7
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/audit/query/cursor.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAgB1D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Opaque cursor for audit-trail keyset pagination. Encodes `(occurredAt, id)`
|
|
2
|
+
// as a base64url JSON tuple — the same encoding the rest of pipework's
|
|
3
|
+
// cursor-paginated surfaces use. `id` is included because two audit rows can
|
|
4
|
+
// share the same `occurredAt` timestamp (microsecond precision is not enough
|
|
5
|
+
// when a single CTE emits N audit rows for fan-out targets). The (occurredAt,
|
|
6
|
+
// id) pair is unique and totally ordered.
|
|
7
|
+
import { encodeCursor, decodeCursor } from '../../request/fixture/paginate.js';
|
|
8
|
+
import { ValidationError } from '../../core/errors/index.js';
|
|
9
|
+
export function encodeAuditCursor(cursor) {
|
|
10
|
+
return encodeCursor([cursor.occurredAt.toISOString(), cursor.id]);
|
|
11
|
+
}
|
|
12
|
+
export function decodeAuditCursor(raw) {
|
|
13
|
+
const parts = decodeCursor(raw);
|
|
14
|
+
if (parts.length !== 2 || typeof parts[0] !== 'string' || typeof parts[1] !== 'string') {
|
|
15
|
+
throw new ValidationError('Invalid audit cursor: expected [occurredAt, id] tuple. ' +
|
|
16
|
+
'Cursors are opaque — pass the value returned by audit.query unchanged.');
|
|
17
|
+
}
|
|
18
|
+
const occurredAt = new Date(parts[0]);
|
|
19
|
+
if (Number.isNaN(occurredAt.getTime())) {
|
|
20
|
+
throw new ValidationError(`Invalid audit cursor: "${parts[0]}" is not a valid ISO timestamp. ` +
|
|
21
|
+
'Cursors are opaque — pass the value returned by audit.query unchanged.');
|
|
22
|
+
}
|
|
23
|
+
return { occurredAt, id: parts[1] };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/audit/query/cursor.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,uEAAuE;AACvE,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,0CAA0C;AAE1C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAO5D,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvF,MAAM,IAAI,eAAe,CACvB,yDAAyD;YACzD,wEAAwE,CACzE,CAAA;IACH,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,eAAe,CACvB,0BAA0B,KAAK,CAAC,CAAC,CAAC,kCAAkC;YACpE,wEAAwE,CACzE,CAAA;IACH,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { query } from './query.js';
|
|
2
|
+
export type { AuditQueryFilters, AuditQueryOptions, AuditQueryResult, AuditRecordRow, } from './query.js';
|
|
3
|
+
export { encodeAuditCursor, decodeAuditCursor } from './cursor.js';
|
|
4
|
+
export type { AuditCursor } from './cursor.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/audit/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAClE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/audit/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { auditRecord } from '../schema/audit-record.js';
|
|
2
|
+
/**
|
|
3
|
+
* Inferred row shape from the `audit_record` definition. The query result is
|
|
4
|
+
* typed against this — re-exported so consumers don't have to reach into
|
|
5
|
+
* `src/audit/schema/`.
|
|
6
|
+
*/
|
|
7
|
+
export type AuditRecordRow = typeof auditRecord.Select;
|
|
8
|
+
export interface AuditQueryFilters {
|
|
9
|
+
/** Match audit rows whose `entity` is in this set. Single string accepted as shorthand. */
|
|
10
|
+
readonly entity?: string | readonly string[];
|
|
11
|
+
/** Match audit rows whose `verb` is in this set. Single string accepted as shorthand. */
|
|
12
|
+
readonly verb?: string | readonly string[];
|
|
13
|
+
/** Match audit rows whose `actorId` equals this. `null` matches system-actor rows. */
|
|
14
|
+
readonly actorId?: string | null;
|
|
15
|
+
/** Match audit rows emitted under this trace. */
|
|
16
|
+
readonly traceId?: string;
|
|
17
|
+
/** Match audit rows emitted under this specific flow step. */
|
|
18
|
+
readonly traceStepId?: string;
|
|
19
|
+
/** Inclusive lower bound on `traceDay`. The partition-pruning hint Postgres uses to skip irrelevant partitions. */
|
|
20
|
+
readonly traceDayFrom?: string;
|
|
21
|
+
/** Inclusive upper bound on `traceDay`. */
|
|
22
|
+
readonly traceDayTo?: string;
|
|
23
|
+
/** Inclusive lower bound on `occurredAt`. */
|
|
24
|
+
readonly occurredFrom?: Date;
|
|
25
|
+
/** Exclusive upper bound on `occurredAt`. */
|
|
26
|
+
readonly occurredTo?: Date;
|
|
27
|
+
}
|
|
28
|
+
export interface AuditQueryOptions {
|
|
29
|
+
/** Max rows to return. Default 50, hard cap 500 — exceeding it throws. */
|
|
30
|
+
readonly limit?: number;
|
|
31
|
+
/** Opaque cursor from a previous page's result. */
|
|
32
|
+
readonly cursor?: string;
|
|
33
|
+
/** `false` (default) returns newest-first; `true` returns oldest-first. */
|
|
34
|
+
readonly asc?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface AuditQueryResult {
|
|
37
|
+
readonly rows: readonly AuditRecordRow[];
|
|
38
|
+
/** Opaque cursor for the next page; `null` when this page is the last. */
|
|
39
|
+
readonly cursor: string | null;
|
|
40
|
+
/** `true` when more rows exist past this page. */
|
|
41
|
+
readonly hasMore: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns a page of `audit_record` rows matching `filters`, ordered by
|
|
45
|
+
* `(occurredAt, id)`. Pass `result.cursor` back as `options.cursor` to get
|
|
46
|
+
* the next page; stop when `cursor` is `null`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function query(filters?: AuditQueryFilters, options?: AuditQueryOptions): Promise<AuditQueryResult>;
|
|
49
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAuBvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC,MAAM,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC5C,yFAAyF;IACzF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAA;IAC1C,sFAAsF;IACtF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,iDAAiD;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,mHAAmH;IACnH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,CAAA;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,mDAAmD;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,CAAA;IACxC,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B;AAKD;;;;GAIG;AACH,wBAAsB,KAAK,CACzB,OAAO,GAAE,iBAAsB,EAC/B,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC,CA8C3B"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// `audit.query` — the read side of the audit-trail substrate. Plumb (and any
|
|
2
|
+
// other consumer) builds its audit UI against this contract; the column
|
|
3
|
+
// shape of `audit_record` is the schema-versioned commitment, and `query`
|
|
4
|
+
// is the surface for filtering and paging over it.
|
|
5
|
+
//
|
|
6
|
+
// Tenant scoping is implicit — the function uses `pipe()`, which applies the
|
|
7
|
+
// active Flow's tenant filter at the proxy layer. Run outside a tenant scope
|
|
8
|
+
// for cross-tenant visibility (admin / system contexts).
|
|
9
|
+
//
|
|
10
|
+
// Pagination is keyset on `(occurredAt, id)` — stable under inserts, no
|
|
11
|
+
// `OFFSET` cost. Default order is descending (newest first); `asc: true`
|
|
12
|
+
// inverts both the ORDER BY and the cursor inequality.
|
|
13
|
+
import { auditRecord } from '../schema/audit-record.js';
|
|
14
|
+
import { pipeRaw } from '../../data/db/db.js';
|
|
15
|
+
import { getContext } from '../../request/context/store.js';
|
|
16
|
+
import { and, eq, gt, gte, lt, lte, inArray, desc, asc, or, } from '../../data/query/index.js';
|
|
17
|
+
import { ValidationError } from '../../core/errors/index.js';
|
|
18
|
+
import { encodeAuditCursor, decodeAuditCursor, } from './cursor.js';
|
|
19
|
+
const DEFAULT_LIMIT = 50;
|
|
20
|
+
const MAX_LIMIT = 500;
|
|
21
|
+
/**
|
|
22
|
+
* Returns a page of `audit_record` rows matching `filters`, ordered by
|
|
23
|
+
* `(occurredAt, id)`. Pass `result.cursor` back as `options.cursor` to get
|
|
24
|
+
* the next page; stop when `cursor` is `null`.
|
|
25
|
+
*/
|
|
26
|
+
export async function query(filters = {}, options = {}) {
|
|
27
|
+
const limit = resolveLimit(options.limit);
|
|
28
|
+
const ascending = options.asc === true;
|
|
29
|
+
const table = auditRecord.table();
|
|
30
|
+
const cols = table;
|
|
31
|
+
const conditions = [];
|
|
32
|
+
appendFilter(conditions, filters.entity, v => buildInOrEq(cols['entity'], v));
|
|
33
|
+
appendFilter(conditions, filters.verb, v => buildInOrEq(cols['verb'], v));
|
|
34
|
+
if (filters.actorId !== undefined) {
|
|
35
|
+
conditions.push(eq(cols['actorId'], filters.actorId));
|
|
36
|
+
}
|
|
37
|
+
if (filters.traceId !== undefined)
|
|
38
|
+
conditions.push(eq(cols['traceId'], filters.traceId));
|
|
39
|
+
if (filters.traceStepId !== undefined)
|
|
40
|
+
conditions.push(eq(cols['traceStepId'], filters.traceStepId));
|
|
41
|
+
if (filters.traceDayFrom !== undefined)
|
|
42
|
+
conditions.push(gte(cols['traceDay'], filters.traceDayFrom));
|
|
43
|
+
if (filters.traceDayTo !== undefined)
|
|
44
|
+
conditions.push(lte(cols['traceDay'], filters.traceDayTo));
|
|
45
|
+
if (filters.occurredFrom !== undefined)
|
|
46
|
+
conditions.push(gte(cols['occurredAt'], filters.occurredFrom));
|
|
47
|
+
if (filters.occurredTo !== undefined)
|
|
48
|
+
conditions.push(lt(cols['occurredAt'], filters.occurredTo));
|
|
49
|
+
if (options.cursor !== undefined) {
|
|
50
|
+
conditions.push(buildCursorClause(decodeAuditCursor(options.cursor), cols, ascending));
|
|
51
|
+
}
|
|
52
|
+
const tenant = getContext()?.tenant ?? null;
|
|
53
|
+
if (tenant !== null) {
|
|
54
|
+
conditions.push(eq(cols['tenantId'], tenant));
|
|
55
|
+
}
|
|
56
|
+
const orderBy = ascending
|
|
57
|
+
? [asc(cols['occurredAt']), asc(cols['id'])]
|
|
58
|
+
: [desc(cols['occurredAt']), desc(cols['id'])];
|
|
59
|
+
const db = pipeRaw(auditRecord.$options.database);
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Drizzle's select/from/where chain is deeply generic; the column lookup is validated against the audit_record table at call time
|
|
61
|
+
let q = db.select().from(table);
|
|
62
|
+
if (conditions.length > 0) {
|
|
63
|
+
q = q.where(conditions.length === 1 ? conditions[0] : and(...conditions));
|
|
64
|
+
}
|
|
65
|
+
q = q.orderBy(...orderBy).limit(limit + 1);
|
|
66
|
+
const rows = (await q);
|
|
67
|
+
const hasMore = rows.length > limit;
|
|
68
|
+
const items = hasMore ? rows.slice(0, limit) : rows;
|
|
69
|
+
const cursor = buildNextCursor(items, hasMore);
|
|
70
|
+
return { rows: items, cursor, hasMore };
|
|
71
|
+
}
|
|
72
|
+
function resolveLimit(requested) {
|
|
73
|
+
if (requested === undefined)
|
|
74
|
+
return DEFAULT_LIMIT;
|
|
75
|
+
if (!Number.isInteger(requested) || requested < 1) {
|
|
76
|
+
throw new ValidationError(`audit.query: limit must be a positive integer (got ${String(requested)}). ` +
|
|
77
|
+
`Default is ${DEFAULT_LIMIT}; max is ${MAX_LIMIT}.`);
|
|
78
|
+
}
|
|
79
|
+
if (requested > MAX_LIMIT) {
|
|
80
|
+
throw new ValidationError(`audit.query: limit ${requested} exceeds max ${MAX_LIMIT}. ` +
|
|
81
|
+
`Page through results instead of requesting a larger window.`);
|
|
82
|
+
}
|
|
83
|
+
return requested;
|
|
84
|
+
}
|
|
85
|
+
function appendFilter(conditions, value, build) {
|
|
86
|
+
if (value === undefined)
|
|
87
|
+
return;
|
|
88
|
+
if (Array.isArray(value) && value.length === 0)
|
|
89
|
+
return;
|
|
90
|
+
conditions.push(build(value));
|
|
91
|
+
}
|
|
92
|
+
function buildInOrEq(column, value) {
|
|
93
|
+
if (typeof value === 'string')
|
|
94
|
+
return eq(column, value);
|
|
95
|
+
if (value.length === 1)
|
|
96
|
+
return eq(column, value[0]);
|
|
97
|
+
return inArray(column, [...value]);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Encodes the keyset lookahead `(occurredAt, id) < cursor` (or `>` when
|
|
101
|
+
* ascending). Postgres supports tuple comparison, but drizzle's operator set
|
|
102
|
+
* doesn't expose it directly, so we expand to the lexicographic form:
|
|
103
|
+
* occurredAt < $0 OR (occurredAt = $0 AND id < $1)
|
|
104
|
+
*/
|
|
105
|
+
function buildCursorClause(cursor, cols, ascending) {
|
|
106
|
+
const occurredAt = cols['occurredAt'];
|
|
107
|
+
const id = cols['id'];
|
|
108
|
+
if (ascending) {
|
|
109
|
+
return or(gt(occurredAt, cursor.occurredAt), and(eq(occurredAt, cursor.occurredAt), gt(id, cursor.id)));
|
|
110
|
+
}
|
|
111
|
+
return or(lt(occurredAt, cursor.occurredAt), and(eq(occurredAt, cursor.occurredAt), lt(id, cursor.id)));
|
|
112
|
+
}
|
|
113
|
+
function buildNextCursor(items, hasMore) {
|
|
114
|
+
if (!hasMore || items.length === 0)
|
|
115
|
+
return null;
|
|
116
|
+
const last = items[items.length - 1];
|
|
117
|
+
return encodeAuditCursor({ occurredAt: last.occurredAt, id: last.id });
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/audit/query/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const auditRecordFields: {
|
|
2
|
+
id: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "AuditRecordId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "AuditRecordId">>;
|
|
3
|
+
traceDay: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
4
|
+
traceId: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "TraceId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "TraceId">>;
|
|
5
|
+
traceStepId: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "TraceStepId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "TraceStepId">>;
|
|
6
|
+
tenantId: import("../../data/domain/types.js").FieldDescriptor<string | null> & import("../../data/domain/field.js").FieldModifiers<string | null>;
|
|
7
|
+
actorId: import("../../data/domain/types.js").FieldDescriptor<string | null> & import("../../data/domain/field.js").FieldModifiers<string | null>;
|
|
8
|
+
entity: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
9
|
+
verb: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
10
|
+
before: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
11
|
+
after: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
12
|
+
capturedInputs: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
13
|
+
occurredAt: import("../../data/domain/types.js").FieldDescriptor<Date> & import("../../data/domain/field.js").FieldModifiers<Date>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=audit-record-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-record-fields.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAgC7B,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// The column shape for `audit_record` — the durable per-(entity × affected
|
|
2
|
+
// row) projection of `@touches`-annotated flow steps. The audit substrate
|
|
3
|
+
// shares the trace's day-partition key (`traceDay`) so audit rows file under
|
|
4
|
+
// the same calendar day as the trace step that emitted them, but the audit
|
|
5
|
+
// table has independent retention: long / indefinite, configured separately
|
|
6
|
+
// from the hot trace tables. There is no `_retained` cousin — audit_record
|
|
7
|
+
// IS the durable store.
|
|
8
|
+
//
|
|
9
|
+
// Each row is one (entity, affected db row) tuple from a write-touches CTE
|
|
10
|
+
// (write path) or a single emission at step completion (read-touches). The
|
|
11
|
+
// `before` / `after` jsonb columns carry server-side `.traceSafe()`
|
|
12
|
+
// projections — never raw rows. `capturedInputs` is a convenience copy of
|
|
13
|
+
// the originating trace_step's captured inputs so audit queries don't have
|
|
14
|
+
// to join. `occurredAt` records when the operation completed.
|
|
15
|
+
import { field } from '../../data/domain/index.js';
|
|
16
|
+
import { schema } from '../../data/schema/namespace.js';
|
|
17
|
+
export const auditRecordFields = {
|
|
18
|
+
id: field.uuid().brand('AuditRecordId').defaultRandom(),
|
|
19
|
+
// Partition key — the parent trace's `openedDay`. The audit row files under
|
|
20
|
+
// the same calendar day as its trace step; retention is independent of
|
|
21
|
+
// trace storage so the partition can outlive the trace it came from.
|
|
22
|
+
traceDay: field.date(),
|
|
23
|
+
// The trace this audit row was emitted under. No foreign key: trace's
|
|
24
|
+
// partition can retire while the audit row is still in retention.
|
|
25
|
+
traceId: field.uuid().brand('TraceId'),
|
|
26
|
+
// The specific flow step the row was emitted from. Same retention argument
|
|
27
|
+
// as `traceId` — plain uuid, no FK.
|
|
28
|
+
traceStepId: field.uuid().brand('TraceStepId'),
|
|
29
|
+
tenantId: field.uuid().tenant().nullable(),
|
|
30
|
+
// The user who performed the action. Null for system-actor traces (cron,
|
|
31
|
+
// worker-claimed jobs without an auth principal). Plain text, not branded —
|
|
32
|
+
// audit lives downstream of auth, no need to enforce a userId brand here.
|
|
33
|
+
actorId: field.text().nullable(),
|
|
34
|
+
// The `@touches Entity:verb` annotation, split into entity and verb. Both
|
|
35
|
+
// non-null — a `@touches` annotation requires both halves.
|
|
36
|
+
entity: field.text(),
|
|
37
|
+
verb: field.text(),
|
|
38
|
+
// Server-side `.traceSafe()` projection of the row before/after the write.
|
|
39
|
+
// Both nullable: create-verb has no `before`, delete-verb has no `after`,
|
|
40
|
+
// read-touches has neither.
|
|
41
|
+
before: field.jsonb(schema.check.json()).nullable(),
|
|
42
|
+
after: field.jsonb(schema.check.json()).nullable(),
|
|
43
|
+
// Convenience copy of the emitting trace_step's `captured_inputs`, so audit
|
|
44
|
+
// queries don't have to join into the (possibly already-retired) trace_step
|
|
45
|
+
// partition. Null when the step had no Tier-2 capture (no `meta.capture`,
|
|
46
|
+
// or `captureInputs: false`).
|
|
47
|
+
capturedInputs: field.jsonb(schema.check.json()).nullable(),
|
|
48
|
+
occurredAt: field.timestamp(),
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=audit-record-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-record-fields.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record-fields.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,wBAAwB;AACxB,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE;AACpE,0EAA0E;AAC1E,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE;IACvD,4EAA4E;IAC5E,uEAAuE;IACvE,qEAAqE;IACrE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;IACtB,sEAAsE;IACtE,kEAAkE;IAClE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACtC,2EAA2E;IAC3E,oCAAoC;IACpC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;IAC9C,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAChC,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE;IACpB,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;IAClB,2EAA2E;IAC3E,0EAA0E;IAC1E,4BAA4B;IAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IACnD,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,8BAA8B;IAC9B,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE;CAC9B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const auditRecord: import("../../data/domain/types.js").DefinedTable<{
|
|
2
|
+
id: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "AuditRecordId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "AuditRecordId">>;
|
|
3
|
+
traceDay: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
4
|
+
traceId: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "TraceId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "TraceId">>;
|
|
5
|
+
traceStepId: import("../../data/domain/types.js").FieldDescriptor<import("../../data/domain/brand.js").Branded<string, "TraceStepId">> & import("../../data/domain/field.js").FieldModifiers<import("../../data/domain/brand.js").Branded<string, "TraceStepId">>;
|
|
6
|
+
tenantId: import("../../data/domain/types.js").FieldDescriptor<string | null> & import("../../data/domain/field.js").FieldModifiers<string | null>;
|
|
7
|
+
actorId: import("../../data/domain/types.js").FieldDescriptor<string | null> & import("../../data/domain/field.js").FieldModifiers<string | null>;
|
|
8
|
+
entity: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
9
|
+
verb: import("../../data/domain/types.js").FieldDescriptor<string> & import("../../data/domain/field.js").FieldModifiers<string>;
|
|
10
|
+
before: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
11
|
+
after: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
12
|
+
capturedInputs: import("../../data/domain/types.js").FieldDescriptor<import("zod/v4").JSONType> & import("../../data/domain/field.js").FieldModifiers<import("zod/v4").JSONType>;
|
|
13
|
+
occurredAt: import("../../data/domain/types.js").FieldDescriptor<Date> & import("../../data/domain/field.js").FieldModifiers<Date>;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=audit-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-record.d.ts","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,WAAW;;;;;;;;;;;;;EAGtB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// The `audit_record` table — durable per-(entity × affected row) audit
|
|
2
|
+
// projection. RANGE-partitioned by `traceDay`; retention is independent of
|
|
3
|
+
// the trace tables (long / indefinite, configured separately). No foreign
|
|
4
|
+
// key to `trace` — the audit partition is free to outlive its source trace
|
|
5
|
+
// partition.
|
|
6
|
+
import { define } from '../../data/domain/index.js';
|
|
7
|
+
import { auditRecordFields } from './audit-record-fields.js';
|
|
8
|
+
export const auditRecord = define('audit_record', auditRecordFields, {
|
|
9
|
+
primaryKey: ['id', 'traceDay'],
|
|
10
|
+
partitionBy: { strategy: 'range', column: 'traceDay' },
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=audit-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-record.js","sourceRoot":"","sources":["../../../src/audit/schema/audit-record.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,aAAa;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,iBAAiB,EAAE;IACnE,UAAU,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;IAC9B,WAAW,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE;CACvD,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/auth/tenant/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/auth/tenant/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAM3D,MAAM,aAAa,GAAG,IAAI,OAAO,EAAwB,CAAA;AAEzD,MAAM,UAAU,UAAU,CAAoB,KAAQ,EAAE,MAAe;IACrE,MAAM,GAAG,GAAG,MAAM,IAAI,UAAU,CAAA;IAChC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAEtC,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjD,MAAM,IAAI,KAAK,CACb,2DAA2D,GAAG,QAAQ;YACtE,wBAAwB,SAAS,IAAI;YACrC,yFAAyF,CAC1F,CAAA;IACH,CAAC;IAED,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAA;IAC5C,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"scoped-db.d.ts","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AA8JhD,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAsB9C;AAmBD,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,EAAE,CAgE3D"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { eq, and } from '../../data/
|
|
2
|
-
import { getTableColumns, getTableName } from '../../data/db/generated/drizzle-orm/introspection.js';
|
|
1
|
+
import { eq, and, getTableColumns, getTableName } from '../../data/query/index.js';
|
|
3
2
|
import { getScopeConfig } from './scope.js';
|
|
4
3
|
function buildTenantCondition(table, columnKey, tenantId) {
|
|
5
4
|
const columns = getTableColumns(table);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped-db.js","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"scoped-db.js","sourceRoot":"","sources":["../../../src/auth/tenant/scoped-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,9 @@ import type { ScopeMode } from '../../workspace/affected.js';
|
|
|
2
2
|
export declare function check(cwd: string, scope?: ScopeMode): Promise<void>;
|
|
3
3
|
export declare function resolveModulePaths(cwd: string, scope?: ScopeMode): Promise<string[]>;
|
|
4
4
|
export declare function verifyVitestConfig(cwd: string): Promise<boolean>;
|
|
5
|
+
export declare function verifyEslintConfig(cwd: string): boolean;
|
|
6
|
+
export declare function runFlowCheck(cwd: string, sourceFiles: string[]): boolean;
|
|
7
|
+
export declare function runCardinalityCheck(cwd: string, sourceFiles: string[], configuredStructuralMax?: number): boolean;
|
|
8
|
+
export declare function runCoverageCheckWarning(cwd: string, sourceFiles: string[], extras?: Readonly<Record<string, 'read' | 'write'>>): void;
|
|
5
9
|
export declare function resolveEslintBin(cwd: string): string;
|
|
6
10
|
//# sourceMappingURL=check.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAK5D,wBAAsB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EzE;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0C1F;AA0CD,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiDtE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAwBvD;AA+GD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CA0BxE;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EAAE,EACrB,uBAAuB,CAAC,EAAE,MAAM,GAC/B,OAAO,CAkDT;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAM,GACtD,IAAI,CA4BN;AAuGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA6BpD"}
|