@powerhousedao/reactor-hypercore 6.0.0-dev.153 → 6.0.0-dev.154

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ae","_e","ge","He","We","Ge","we","Ye","je","_t","xe","Ke","ue","y","Se","he","Ue","G","Q","K","Z","C","te","J","Y","$","q","Be","ye","k","g","ce","L","x","le","Xe","T","p","s","d","O","pe","Le","fe","me","ne","de","o","nt","st","it","ke","lt","pt","dt","mt","Ve","Fe","se","re","l","y","f","O","B","v","P","A","q","a","R","l","g","d","z","_","P","Qe","rt","Re","Ee","W","qe","ve","E","j","h","Pe","Me","De","Oe","ze","Ne","Ae","Ie","Ce","Te","be","#dynamicReference","#props","trim","#props","#props","#props","#props","#props","#join","#props","#join","#props","#queryId","#transformers","#schema","#isRootOperationNode","#collectCTEs","#ctes","#collectSchemableIds","#schemableIds","#transformTableArgsWithoutSchemas","#collectSchemableId","#collectSchemableIdsFromTableExpr","#collectCTEIds","#transformer","#promise","#reject","#resolve","#plugins","#transformResult","#props","#whenMatched","#whenNotMatched","#props","#node","#expr","#alias","#props","#join","#queryBuilder","#alias","#props","#aggregateFunctionBuilder","#alias","#props","#node","#createBuilderWithPathLeg","#jsonPath","#alias","#table","#alias","trim","#node","#node","#column","#alterColumnNode","#props","#props","#props","#props","#node","#node","#node","#props","#props","#props","#props","#props","#props","#props","#transformer","#props","#props","#props","#props","#props","#executor","#driver","#compiler","#adapter","#connectionProvider","#initDone","#driver","#log","#destroyPromise","#initPromise","#connections","#needsLogging","#addLogging","#logError","#logQuery","#calculateDurationMillis","#connection","#runningPromise","#run","#logger","#levels","#props","#state","#compileQuery","#cb","#executor","#props","#toOperationNode","#getExecutor","#compile","#rawBuilder","#alias","PRIVATE_RELEASE_METHOD","#rawConnection","#executeQuery","#client","#options","#connection","#hasSocketError","#tedious","#getTediousIsolationLevel","#cancelRequest","#isConnectionClosed","#rows","#streamChunkSize","#subscribers","#rowCount","#request","#addParametersToRequest","#attachListeners","#getTediousDataType"],"sources":["../../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/chunk-3WWIVTCY.js","../../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/chunk-F4GETNPB.js","../../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/chunk-F2DQ4FIK.js","../../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/index.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/object-utils.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/alter-table-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/identifier-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/create-index-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/create-schema-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/create-table-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/schemable-identifier-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-index-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-schema-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-table-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/alias-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/table-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/operation-node-source.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/expression/expression.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/select-modifier-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/and-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/or-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/on-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/join-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/binary-operation-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/operator-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/select-all-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/reference-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dynamic/dynamic-reference-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/order-by-item-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/raw-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/collate-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/order-by-item-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/log-once.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/order-by-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/json-reference-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/json-operator-chain-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/json-path-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/reference-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/primitive-value-list-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/value-list-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/value-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/value-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/parens-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/binary-operation-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/order-by-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/partition-by-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/over-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/from-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/group-by-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/having-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/insert-query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/list-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/update-query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/using-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/delete-query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/where-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/returning-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/explain-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/when-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/merge-query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/output-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/select-query-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/join-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/partition-by-item-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/partition-by-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/over-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/selection-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/select-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/values-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/default-insert-value-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/insert-values-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/column-update-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/update-set-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/on-duplicate-key-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/insert-result.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/no-result-error.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/on-conflict-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/on-conflict-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/top-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/top-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/or-action-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/insert-query-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/delete-result.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/limit-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/delete-query-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/update-result.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/update-query-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/common-table-expression-name-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/common-table-expression-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/cte-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/with-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/with-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/random-string.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/query-id.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/require-all-props.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/operation-node-transformer.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-transformer.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/plugin/with-schema/with-schema-plugin.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/matched-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/merge-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/deferred.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/provide-controlled-connection.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-executor/query-executor-base.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-executor/noop-query-executor.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/merge-result.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/merge-query-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-creator.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/parse-utils.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/join-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/offset-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/group-by-item-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/group-by-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/set-operation-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/set-operation-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/expression/expression-wrapper.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/fetch-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/fetch-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/select-query-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/aggregate-function-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/function-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/aggregate-function-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/function-module.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/unary-operation-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/unary-operation-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/case-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/case-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/json-path-leg-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-builder/json-path-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/tuple-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/data-type-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/data-type-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/cast-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/expression/expression-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/expression-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dynamic/dynamic-table-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/table-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/add-column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/column-definition-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/rename-column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/check-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/references-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/default-value-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/generated-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/default-value-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/on-modify-action-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/column-definition-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/modify-column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/foreign-key-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/foreign-key-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/add-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/unique-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/alter-column-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-column-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-table-executor.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-table-drop-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/primary-key-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/add-index-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-table-add-index-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/unique-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/primary-key-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/check-constraint-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/rename-constraint-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/alter-table-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-transformer.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/create-index-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/create-schema-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/on-commit-action-parse.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/create-table-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/drop-index-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/drop-schema-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/drop-table-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/create-view-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/plugin/immediate-value/immediate-value-plugin.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/create-view-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-view-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/drop-view-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/create-type-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/create-type-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/drop-type-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/drop-type-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/parser/identifier-parser.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/operation-node/refresh-materialized-view-node.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/refresh-materialized-view-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/schema/schema.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dynamic/dynamic.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/driver/default-connection-provider.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-executor/default-query-executor.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/performance-now.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/driver/runtime-driver.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/driver/single-connection-provider.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/driver/driver.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/log.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/compilable.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/kysely.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/raw-builder/raw-builder.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/raw-builder/sql.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-compiler/default-query-compiler.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/query-compiler/compiled-query.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/migration/migrator.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dialect/postgres/postgres-adapter.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/util/stack-trace-utils.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dialect/mysql/mysql-driver.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dialect/postgres/postgres-driver.js","../../../node_modules/.pnpm/kysely@0.28.11/node_modules/kysely/dist/esm/dialect/mssql/mssql-driver.js","../../reactor/dist/index.js","../src/hypercore-atomic-transaction.ts","../src/key-encoding.ts","../src/hypercore-operation-store.ts","../src/storage-manager.ts"],"sourcesContent":["import{b as ae,e as s,f as h,g as d,h as p,i as oe,j as y}from\"./chunk-QY3QWFKW.js\";var hn={};ae(hn,{ABSTIME:()=>Et,ACLITEM:()=>Vt,BIT:()=>jt,BOOL:()=>be,BPCHAR:()=>_e,BYTEA:()=>ge,CHAR:()=>gt,CID:()=>St,CIDR:()=>Tt,CIRCLE:()=>Ut,DATE:()=>He,FLOAT4:()=>Qe,FLOAT8:()=>We,GTSVECTOR:()=>rn,INET:()=>kt,INT2:()=>ve,INT4:()=>Ge,INT8:()=>we,INTERVAL:()=>vt,JSON:()=>Ae,JSONB:()=>Ye,MACADDR:()=>Ot,MACADDR8:()=>Nt,MONEY:()=>Lt,NUMERIC:()=>Wt,OID:()=>je,PATH:()=>Mt,PG_DEPENDENCIES:()=>en,PG_LSN:()=>Xt,PG_NDISTINCT:()=>Zt,PG_NODE_TREE:()=>Bt,POLYGON:()=>Rt,REFCURSOR:()=>_t,REGCLASS:()=>Yt,REGCONFIG:()=>sn,REGDICTIONARY:()=>an,REGNAMESPACE:()=>on,REGOPER:()=>Ht,REGOPERATOR:()=>qt,REGPROC:()=>wt,REGPROCEDURE:()=>zt,REGROLE:()=>un,REGTYPE:()=>$t,RELTIME:()=>Ct,SMGR:()=>It,TEXT:()=>V,TID:()=>At,TIME:()=>Ft,TIMESTAMP:()=>qe,TIMESTAMPTZ:()=>xe,TIMETZ:()=>Gt,TINTERVAL:()=>Pt,TSQUERY:()=>nn,TSVECTOR:()=>tn,TXID_SNAPSHOT:()=>Jt,UUID:()=>Kt,VARBIT:()=>Qt,VARCHAR:()=>ze,XID:()=>xt,XML:()=>Dt,arrayParser:()=>yn,arraySerializer:()=>Ke,parseType:()=>ue,parsers:()=>ln,serializers:()=>cn,types:()=>$e});y();var ht=globalThis.JSON.parse,bt=globalThis.JSON.stringify,be=16,ge=17,gt=18,we=20,ve=21,Ge=23,wt=24,V=25,je=26,At=27,xt=28,St=29,Ae=114,Dt=142,Bt=194,It=210,Mt=602,Rt=604,Tt=650,Qe=700,We=701,Et=702,Ct=703,Pt=704,Ut=718,Nt=774,Lt=790,Ot=829,kt=869,Vt=1033,_e=1042,ze=1043,He=1082,Ft=1083,qe=1114,xe=1184,vt=1186,Gt=1266,jt=1560,Qt=1562,Wt=1700,_t=1790,zt=2202,Ht=2203,qt=2204,Yt=2205,$t=2206,Kt=2950,Jt=2970,Xt=3220,Zt=3361,en=3402,tn=3614,nn=3615,rn=3642,sn=3734,an=3769,Ye=3802,on=4089,un=4096,$e={string:{to:V,from:[V,ze,_e],serialize:e=>{if(typeof e==\"string\")return e;if(typeof e==\"number\")return e.toString();throw new Error(\"Invalid input for string type\")},parse:e=>e},number:{to:0,from:[ve,Ge,je,Qe,We],serialize:e=>e.toString(),parse:e=>+e},bigint:{to:we,from:[we],serialize:e=>e.toString(),parse:e=>{let t=BigInt(e);return t<Number.MIN_SAFE_INTEGER||t>Number.MAX_SAFE_INTEGER?t:Number(t)}},json:{to:Ae,from:[Ae,Ye],serialize:e=>typeof e==\"string\"?e:bt(e),parse:e=>ht(e)},boolean:{to:be,from:[be],serialize:e=>{if(typeof e!=\"boolean\")throw new Error(\"Invalid input for boolean type\");return e?\"t\":\"f\"},parse:e=>e===\"t\"},date:{to:xe,from:[He,qe,xe],serialize:e=>{if(typeof e==\"string\")return e;if(typeof e==\"number\")return new Date(e).toISOString();if(e instanceof Date)return e.toISOString();throw new Error(\"Invalid input for date type\")},parse:e=>new Date(e)},bytea:{to:ge,from:[ge],serialize:e=>{if(!(e instanceof Uint8Array))throw new Error(\"Invalid input for bytea type\");return\"\\\\x\"+Array.from(e).map(t=>t.toString(16).padStart(2,\"0\")).join(\"\")},parse:e=>{let t=e.slice(2);return Uint8Array.from({length:t.length/2},(n,r)=>parseInt(t.substring(r*2,(r+1)*2),16))}}},Se=pn($e),ln=Se.parsers,cn=Se.serializers;function ue(e,t,n){if(e===null)return null;let r=n?.[t]??Se.parsers[t];return r?r(e,t):e}function pn(e){return Object.keys(e).reduce(({parsers:t,serializers:n},r)=>{let{to:i,from:a,serialize:u,parse:f}=e[r];return n[i]=u,n[r]=u,t[r]=f,Array.isArray(a)?a.forEach(c=>{t[c]=f,n[c]=u}):(t[a]=f,n[a]=u),{parsers:t,serializers:n}},{parsers:{},serializers:{}})}var dn=/\\\\/g,fn=/\"/g;function mn(e){return e.replace(dn,\"\\\\\\\\\").replace(fn,'\\\\\"')}function Ke(e,t,n){if(Array.isArray(e)===!1)return e;if(!e.length)return\"{}\";let r=e[0],i=n===1020?\";\":\",\";return Array.isArray(r)?`{${e.map(a=>Ke(a,t,n)).join(i)}}`:`{${e.map(a=>(a===void 0&&(a=null),a===null?\"null\":'\"'+mn(t?t(a):a.toString())+'\"')).join(i)}}`}var he={i:0,char:null,str:\"\",quoted:!1,last:0,p:null};function yn(e,t,n){return he.i=he.last=0,Je(he,e,t,n)[0]}function Je(e,t,n,r){let i=[],a=r===1020?\";\":\",\";for(;e.i<t.length;e.i++){if(e.char=t[e.i],e.quoted)e.char===\"\\\\\"?e.str+=t[++e.i]:e.char==='\"'?(i.push(n?n(e.str):e.str),e.str=\"\",e.quoted=t[e.i+1]==='\"',e.last=e.i+2):e.str+=e.char;else if(e.char==='\"')e.quoted=!0;else if(e.char===\"{\")e.last=++e.i,i.push(Je(e,t,n,r));else if(e.char===\"}\"){e.quoted=!1,e.last<e.i&&i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1;break}else e.char===a&&e.p!==\"}\"&&e.p!=='\"'&&(i.push(n?n(t.slice(e.last,e.i)):t.slice(e.last,e.i)),e.last=e.i+1);e.p=e.char}return e.last<e.i&&i.push(n?n(t.slice(e.last,e.i+1)):t.slice(e.last,e.i+1)),i}var wn={};ae(wn,{parseDescribeStatementResults:()=>De,parseResults:()=>bn});y();function bn(e,t,n,r){let i=[],a={rows:[],fields:[]},u=0,f={...t,...n?.parsers};return e.forEach(c=>{switch(c.name){case\"rowDescription\":{let M=c;a.fields=M.fields.map(E=>({name:E.name,dataTypeID:E.dataTypeID}));break}case\"dataRow\":{if(!a)break;let M=c;n?.rowMode===\"array\"?a.rows.push(M.fields.map((E,ie)=>ue(E,a.fields[ie].dataTypeID,f))):a.rows.push(Object.fromEntries(M.fields.map((E,ie)=>[a.fields[ie].name,ue(E,a.fields[ie].dataTypeID,f)])));break}case\"commandComplete\":{u+=gn(c),i.push({...a,affectedRows:u,...r?{blob:r}:{}}),a={rows:[],fields:[]};break}}}),i.length===0&&i.push({affectedRows:0,rows:[],fields:[]}),i}function gn(e){let t=e.text.split(\" \");switch(t[0]){case\"INSERT\":return parseInt(t[2],10);case\"UPDATE\":case\"DELETE\":case\"COPY\":case\"MERGE\":return parseInt(t[1],10);default:return 0}}function De(e){let t=e.find(n=>n.name===\"parameterDescription\");return t?t.dataTypeIDs:[]}var Ue={};ae(Ue,{AuthenticationCleartextPassword:()=>v,AuthenticationMD5Password:()=>G,AuthenticationOk:()=>F,AuthenticationSASL:()=>j,AuthenticationSASLContinue:()=>Q,AuthenticationSASLFinal:()=>W,BackendKeyDataMessage:()=>K,CommandCompleteMessage:()=>Z,CopyDataMessage:()=>_,CopyResponse:()=>z,DataRowMessage:()=>ee,DatabaseError:()=>C,Field:()=>H,NoticeMessage:()=>te,NotificationResponseMessage:()=>J,ParameterDescriptionMessage:()=>Y,ParameterStatusMessage:()=>$,ReadyForQueryMessage:()=>X,RowDescriptionMessage:()=>q,bindComplete:()=>Ie,closeComplete:()=>Me,copyDone:()=>Pe,emptyQuery:()=>Ce,noData:()=>Re,parseComplete:()=>Be,portalSuspended:()=>Te,replicationStart:()=>Ee});y();var Be={name:\"parseComplete\",length:5},Ie={name:\"bindComplete\",length:5},Me={name:\"closeComplete\",length:5},Re={name:\"noData\",length:5},Te={name:\"portalSuspended\",length:5},Ee={name:\"replicationStart\",length:4},Ce={name:\"emptyQuery\",length:4},Pe={name:\"copyDone\",length:4},F=class{constructor(t){this.length=t;this.name=\"authenticationOk\"}},v=class{constructor(t){this.length=t;this.name=\"authenticationCleartextPassword\"}},G=class{constructor(t,n){this.length=t;this.salt=n;this.name=\"authenticationMD5Password\"}},j=class{constructor(t,n){this.length=t;this.mechanisms=n;this.name=\"authenticationSASL\"}},Q=class{constructor(t,n){this.length=t;this.data=n;this.name=\"authenticationSASLContinue\"}},W=class{constructor(t,n){this.length=t;this.data=n;this.name=\"authenticationSASLFinal\"}},C=class extends Error{constructor(n,r,i){super(n);this.length=r;this.name=i}},_=class{constructor(t,n){this.length=t;this.chunk=n;this.name=\"copyData\"}},z=class{constructor(t,n,r,i){this.length=t;this.name=n;this.binary=r;this.columnTypes=new Array(i)}},H=class{constructor(t,n,r,i,a,u,f){this.name=t;this.tableID=n;this.columnID=r;this.dataTypeID=i;this.dataTypeSize=a;this.dataTypeModifier=u;this.format=f}},q=class{constructor(t,n){this.length=t;this.fieldCount=n;this.name=\"rowDescription\";this.fields=new Array(this.fieldCount)}},Y=class{constructor(t,n){this.length=t;this.parameterCount=n;this.name=\"parameterDescription\";this.dataTypeIDs=new Array(this.parameterCount)}},$=class{constructor(t,n,r){this.length=t;this.parameterName=n;this.parameterValue=r;this.name=\"parameterStatus\"}},K=class{constructor(t,n,r){this.length=t;this.processID=n;this.secretKey=r;this.name=\"backendKeyData\"}},J=class{constructor(t,n,r,i){this.length=t;this.processId=n;this.channel=r;this.payload=i;this.name=\"notification\"}},X=class{constructor(t,n){this.length=t;this.status=n;this.name=\"readyForQuery\"}},Z=class{constructor(t,n){this.length=t;this.text=n;this.name=\"commandComplete\"}},ee=class{constructor(t,n){this.length=t;this.fields=n;this.name=\"dataRow\";this.fieldCount=n.length}},te=class{constructor(t,n){this.length=t;this.message=n;this.name=\"notice\"}};var zn={};ae(zn,{Parser:()=>ye,messages:()=>Ue,serialize:()=>k});y();y();y();y();function P(e){let t=e.length;for(let n=e.length-1;n>=0;n--){let r=e.charCodeAt(n);r>127&&r<=2047?t++:r>2047&&r<=65535&&(t+=2),r>=56320&&r<=57343&&n--}return t}var b,g,N,ce,L,x,le,U,Xe,T=class{constructor(t=256){this.size=t;h(this,x);h(this,b);h(this,g,5);h(this,N,!1);h(this,ce,new TextEncoder);h(this,L,0);d(this,b,p(this,x,le).call(this,t))}addInt32(t){return p(this,x,U).call(this,4),s(this,b).setInt32(s(this,g),t,s(this,N)),d(this,g,s(this,g)+4),this}addInt16(t){return p(this,x,U).call(this,2),s(this,b).setInt16(s(this,g),t,s(this,N)),d(this,g,s(this,g)+2),this}addCString(t){return t&&this.addString(t),p(this,x,U).call(this,1),s(this,b).setUint8(s(this,g),0),oe(this,g)._++,this}addString(t=\"\"){let n=P(t);return p(this,x,U).call(this,n),s(this,ce).encodeInto(t,new Uint8Array(s(this,b).buffer,s(this,g))),d(this,g,s(this,g)+n),this}add(t){return p(this,x,U).call(this,t.byteLength),new Uint8Array(s(this,b).buffer).set(new Uint8Array(t),s(this,g)),d(this,g,s(this,g)+t.byteLength),this}flush(t){let n=p(this,x,Xe).call(this,t);return d(this,g,5),d(this,b,p(this,x,le).call(this,this.size)),new Uint8Array(n)}};b=new WeakMap,g=new WeakMap,N=new WeakMap,ce=new WeakMap,L=new WeakMap,x=new WeakSet,le=function(t){return new DataView(new ArrayBuffer(t))},U=function(t){if(s(this,b).byteLength-s(this,g)<t){let r=s(this,b).buffer,i=r.byteLength+(r.byteLength>>1)+t;d(this,b,p(this,x,le).call(this,i)),new Uint8Array(s(this,b).buffer).set(new Uint8Array(r))}},Xe=function(t){if(t){s(this,b).setUint8(s(this,L),t);let n=s(this,g)-(s(this,L)+1);s(this,b).setInt32(s(this,L)+1,n,s(this,N))}return s(this,b).buffer.slice(t?0:5,s(this,g))};var m=new T,An=e=>{m.addInt16(3).addInt16(0);for(let r of Object.keys(e))m.addCString(r).addCString(e[r]);m.addCString(\"client_encoding\").addCString(\"UTF8\");let t=m.addCString(\"\").flush(),n=t.byteLength+4;return new T().addInt32(n).add(t).flush()},xn=()=>{let e=new DataView(new ArrayBuffer(8));return e.setInt32(0,8,!1),e.setInt32(4,80877103,!1),new Uint8Array(e.buffer)},Sn=e=>m.addCString(e).flush(112),Dn=(e,t)=>(m.addCString(e).addInt32(P(t)).addString(t),m.flush(112)),Bn=e=>m.addString(e).flush(112),In=e=>m.addCString(e).flush(81),Mn=[],Rn=e=>{let t=e.name??\"\";t.length>63&&(console.error(\"Warning! Postgres only supports 63 characters for query names.\"),console.error(\"You supplied %s (%s)\",t,t.length),console.error(\"This can cause conflicts and silent errors executing queries\"));let n=m.addCString(t).addCString(e.text).addInt16(e.types?.length??0);return e.types?.forEach(r=>n.addInt32(r)),m.flush(80)},O=new T;var Tn=(e,t)=>{for(let n=0;n<e.length;n++){let r=t?t(e[n],n):e[n];if(r===null)m.addInt16(0),O.addInt32(-1);else if(r instanceof ArrayBuffer||ArrayBuffer.isView(r)){let i=ArrayBuffer.isView(r)?r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength):r;m.addInt16(1),O.addInt32(i.byteLength),O.add(i)}else m.addInt16(0),O.addInt32(P(r)),O.addString(r)}},En=(e={})=>{let t=e.portal??\"\",n=e.statement??\"\",r=e.binary??!1,i=e.values??Mn,a=i.length;return m.addCString(t).addCString(n),m.addInt16(a),Tn(i,e.valueMapper),m.addInt16(a),m.add(O.flush()),m.addInt16(r?1:0),m.flush(66)},Cn=new Uint8Array([69,0,0,0,9,0,0,0,0,0]),Pn=e=>{if(!e||!e.portal&&!e.rows)return Cn;let t=e.portal??\"\",n=e.rows??0,r=P(t),i=4+r+1+4,a=new DataView(new ArrayBuffer(1+i));return a.setUint8(0,69),a.setInt32(1,i,!1),new TextEncoder().encodeInto(t,new Uint8Array(a.buffer,5)),a.setUint8(r+5,0),a.setUint32(a.byteLength-4,n,!1),new Uint8Array(a.buffer)},Un=(e,t)=>{let n=new DataView(new ArrayBuffer(16));return n.setInt32(0,16,!1),n.setInt16(4,1234,!1),n.setInt16(6,5678,!1),n.setInt32(8,e,!1),n.setInt32(12,t,!1),new Uint8Array(n.buffer)},Ne=(e,t)=>{let n=new T;return n.addCString(t),n.flush(e)},Nn=m.addCString(\"P\").flush(68),Ln=m.addCString(\"S\").flush(68),On=e=>e.name?Ne(68,`${e.type}${e.name??\"\"}`):e.type===\"P\"?Nn:Ln,kn=e=>{let t=`${e.type}${e.name??\"\"}`;return Ne(67,t)},Vn=e=>m.add(e).flush(100),Fn=e=>Ne(102,e),pe=e=>new Uint8Array([e,0,0,0,4]),vn=pe(72),Gn=pe(83),jn=pe(88),Qn=pe(99),k={startup:An,password:Sn,requestSsl:xn,sendSASLInitialResponseMessage:Dn,sendSCRAMClientFinalMessage:Bn,query:In,parse:Rn,bind:En,execute:Pn,describe:On,close:kn,flush:()=>vn,sync:()=>Gn,end:()=>jn,copyData:Vn,copyDone:()=>Qn,copyFail:Fn,cancel:Un};y();y();var Le={text:0,binary:1};y();var Wn=new ArrayBuffer(0),R,w,fe,me,ne,de=class{constructor(t=0){h(this,R,new DataView(Wn));h(this,w);h(this,fe,\"utf-8\");h(this,me,new TextDecoder(s(this,fe)));h(this,ne,!1);d(this,w,t)}setBuffer(t,n){d(this,w,t),d(this,R,new DataView(n))}int16(){let t=s(this,R).getInt16(s(this,w),s(this,ne));return d(this,w,s(this,w)+2),t}byte(){let t=s(this,R).getUint8(s(this,w));return oe(this,w)._++,t}int32(){let t=s(this,R).getInt32(s(this,w),s(this,ne));return d(this,w,s(this,w)+4),t}string(t){return s(this,me).decode(this.bytes(t))}cstring(){let t=s(this,w),n=t;for(;s(this,R).getUint8(n++)!==0;);let r=this.string(n-t-1);return d(this,w,n),r}bytes(t){let n=s(this,R).buffer.slice(s(this,w),s(this,w)+t);return d(this,w,s(this,w)+t),new Uint8Array(n)}};R=new WeakMap,w=new WeakMap,fe=new WeakMap,me=new WeakMap,ne=new WeakMap;var Oe=1,_n=4,Ze=Oe+_n,et=new ArrayBuffer(0);var A,S,D,o,l,tt,nt,rt,st,it,at,ot,ke,ut,lt,ct,pt,dt,ft,mt,yt,Ve,ye=class{constructor(){h(this,l);h(this,A,new DataView(et));h(this,S,0);h(this,D,0);h(this,o,new de)}parse(t,n){p(this,l,tt).call(this,ArrayBuffer.isView(t)?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t);let r=s(this,D)+s(this,S),i=s(this,D);for(;i+Ze<=r;){let a=s(this,A).getUint8(i),u=s(this,A).getUint32(i+Oe,!1),f=Oe+u;if(f+i<=r&&u>0){let c=p(this,l,nt).call(this,i+Ze,a,u,s(this,A).buffer);n(c),i+=f}else break}i===r?(d(this,A,new DataView(et)),d(this,S,0),d(this,D,0)):(d(this,S,r-i),d(this,D,i))}};A=new WeakMap,S=new WeakMap,D=new WeakMap,o=new WeakMap,l=new WeakSet,tt=function(t){if(s(this,S)>0){let n=s(this,S)+t.byteLength;if(n+s(this,D)>s(this,A).byteLength){let i;if(n<=s(this,A).byteLength&&s(this,D)>=s(this,S))i=s(this,A).buffer;else{let a=s(this,A).byteLength*2;for(;n>=a;)a*=2;i=new ArrayBuffer(a)}new Uint8Array(i).set(new Uint8Array(s(this,A).buffer,s(this,D),s(this,S))),d(this,A,new DataView(i)),d(this,D,0)}new Uint8Array(s(this,A).buffer).set(new Uint8Array(t),s(this,D)+s(this,S)),d(this,S,n)}else d(this,A,new DataView(t)),d(this,D,0),d(this,S,t.byteLength)},nt=function(t,n,r,i){switch(n){case 50:return Ie;case 49:return Be;case 51:return Me;case 110:return Re;case 115:return Te;case 99:return Pe;case 87:return Ee;case 73:return Ce;case 68:return p(this,l,dt).call(this,t,r,i);case 67:return p(this,l,st).call(this,t,r,i);case 90:return p(this,l,rt).call(this,t,r,i);case 65:return p(this,l,ut).call(this,t,r,i);case 82:return p(this,l,yt).call(this,t,r,i);case 83:return p(this,l,ft).call(this,t,r,i);case 75:return p(this,l,mt).call(this,t,r,i);case 69:return p(this,l,Ve).call(this,t,r,i,\"error\");case 78:return p(this,l,Ve).call(this,t,r,i,\"notice\");case 84:return p(this,l,lt).call(this,t,r,i);case 116:return p(this,l,pt).call(this,t,r,i);case 71:return p(this,l,at).call(this,t,r,i);case 72:return p(this,l,ot).call(this,t,r,i);case 100:return p(this,l,it).call(this,t,r,i);default:return new C(\"received invalid response: \"+n.toString(16),r,\"error\")}},rt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).string(1);return new X(n,i)},st=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).cstring();return new Z(n,i)},it=function(t,n,r){let i=r.slice(t,t+(n-4));return new _(n,new Uint8Array(i))},at=function(t,n,r){return p(this,l,ke).call(this,t,n,r,\"copyInResponse\")},ot=function(t,n,r){return p(this,l,ke).call(this,t,n,r,\"copyOutResponse\")},ke=function(t,n,r,i){s(this,o).setBuffer(t,r);let a=s(this,o).byte()!==0,u=s(this,o).int16(),f=new z(n,i,a,u);for(let c=0;c<u;c++)f.columnTypes[c]=s(this,o).int16();return f},ut=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int32(),a=s(this,o).cstring(),u=s(this,o).cstring();return new J(n,i,a,u)},lt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int16(),a=new q(n,i);for(let u=0;u<i;u++)a.fields[u]=p(this,l,ct).call(this);return a},ct=function(){let t=s(this,o).cstring(),n=s(this,o).int32(),r=s(this,o).int16(),i=s(this,o).int32(),a=s(this,o).int16(),u=s(this,o).int32(),f=s(this,o).int16()===0?Le.text:Le.binary;return new H(t,n,r,i,a,u,f)},pt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int16(),a=new Y(n,i);for(let u=0;u<i;u++)a.dataTypeIDs[u]=s(this,o).int32();return a},dt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int16(),a=new Array(i);for(let u=0;u<i;u++){let f=s(this,o).int32();a[u]=f===-1?null:s(this,o).string(f)}return new ee(n,a)},ft=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).cstring(),a=s(this,o).cstring();return new $(n,i,a)},mt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int32(),a=s(this,o).int32();return new K(n,i,a)},yt=function(t,n,r){s(this,o).setBuffer(t,r);let i=s(this,o).int32();switch(i){case 0:return new F(n);case 3:return new v(n);case 5:return new G(n,s(this,o).bytes(4));case 10:{let a=[];for(;;){let u=s(this,o).cstring();if(u.length===0)return new j(n,a);a.push(u)}}case 11:return new Q(n,s(this,o).string(n-8));case 12:return new W(n,s(this,o).string(n-8));default:throw new Error(\"Unknown authenticationOk message type \"+i)}},Ve=function(t,n,r,i){s(this,o).setBuffer(t,r);let a={},u=s(this,o).string(1);for(;u!==\"\\0\";)a[u]=s(this,o).cstring(),u=s(this,o).string(1);let f=a.M,c=i===\"notice\"?new te(n,f):new C(f,n,i);return c.severity=a.S,c.code=a.C,c.detail=a.D,c.hint=a.H,c.position=a.P,c.internalPosition=a.p,c.internalQuery=a.q,c.where=a.W,c.schema=a.s,c.table=a.t,c.column=a.c,c.dataType=a.d,c.constraint=a.n,c.file=a.F,c.line=a.L,c.routine=a.R,c};y();var Fe=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\",se;async function Rr(){if(Fe||se)return;let e=new URL(\"./pglite.wasm\",import.meta.url);se=fetch(e)}var re;async function Tr(e,t){if(t||re)return{instance:await WebAssembly.instantiate(t||re,e),module:t||re};let n=new URL(\"./pglite.wasm\",import.meta.url);if(Fe){let i=await(await import(\"fs/promises\")).readFile(n),{module:a,instance:u}=await WebAssembly.instantiate(i,e);return re=a,{instance:u,module:a}}else{se||(se=fetch(n));let r=await se,{module:i,instance:a}=await WebAssembly.instantiateStreaming(r,e);return re=i,{instance:a,module:i}}}async function Er(){let e=new URL(\"./pglite.data\",import.meta.url);return Fe?(await(await import(\"fs/promises\")).readFile(e)).buffer:(await fetch(e)).arrayBuffer()}var Cr=()=>{if(globalThis.crypto?.randomUUID)return globalThis.crypto.randomUUID();let e=new Uint8Array(16);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(e);else for(let n=0;n<e.length;n++)e[n]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=[];return e.forEach(n=>{t.push(n.toString(16).padStart(2,\"0\"))}),t.slice(0,4).join(\"\")+\"-\"+t.slice(4,6).join(\"\")+\"-\"+t.slice(6,8).join(\"\")+\"-\"+t.slice(8,10).join(\"\")+\"-\"+t.slice(10).join(\"\")};async function Pr(e,t,n,r){if(!n||n.length===0)return t;r=r??e;let i=[];try{await e.execProtocol(k.parse({text:t}),{syncToFs:!1}),i.push(...(await e.execProtocol(k.describe({type:\"S\"}),{syncToFs:!1})).messages)}finally{i.push(...(await e.execProtocol(k.sync(),{syncToFs:!1})).messages)}let a=De(i),u=t.replace(/\\$([0-9]+)/g,(c,M)=>\"%\"+M+\"L\");return(await r.query(`SELECT format($1, ${n.map((c,M)=>`$${M+2}`).join(\", \")}) as query`,[u,...n],{paramTypes:[V,...a]})).rows[0].query}function Ur(e){let t,n=!1,r=async()=>{if(!t){n=!1;return}n=!0;let{args:i,resolve:a,reject:u}=t;t=void 0;try{let f=await e(...i);a(f)}catch(f){u(f)}finally{r()}};return async(...i)=>{t&&t.resolve(void 0);let a=new Promise((u,f)=>{t={args:i,resolve:u,reject:f}});return n||r(),a}}function Nr(e){let t;return e.startsWith('\"')&&e.endsWith('\"')?t=e.substring(1,e.length-1):t=e.toLowerCase(),t}export{ln as a,cn as b,Ke as c,yn as d,hn as e,bn as f,De as g,wn as h,k as i,C as j,J as k,Z as l,te as m,Ue as n,ye as o,zn as p,Fe as q,Rr as r,Tr as s,Er as t,Cr as u,Pr as v,Ur as w,Nr as x};\n//# sourceMappingURL=chunk-3WWIVTCY.js.map","import{j as l}from\"./chunk-QY3QWFKW.js\";l();var o={part:\"part\",container:\"container\"};function s(t,r,...e){let a=t.length-1,p=e.length-1;if(p!==-1){if(p===0){t[a]=t[a]+e[0]+r;return}t[a]=t[a]+e[0],t.push(...e.slice(1,p)),t.push(e[p]+r)}}function y(t,...r){let e=[t[0]];e.raw=[t.raw[0]];let a=[];for(let p=0;p<r.length;p++){let n=r[p],i=p+1;if(n?._templateType===o.part){s(e,t[i],n.str),s(e.raw,t.raw[i],n.str);continue}if(n?._templateType===o.container){s(e,t[i],...n.strings),s(e.raw,t.raw[i],...n.strings.raw),a.push(...n.values);continue}e.push(t[i]),e.raw.push(t.raw[i]),a.push(n)}return{_templateType:\"container\",strings:e,values:a}}function c(t,...r){return{_templateType:\"part\",str:`\"${String.raw(t,...r)}\"`}}function m(t,...r){return{_templateType:\"part\",str:String.raw(t,...r)}}function g(t,...r){let{strings:e,values:a}=y(t,...r);return{query:[e[0],...a.flatMap((p,n)=>[`$${n+1}`,e[n+1]])].join(\"\"),params:a}}export{y as a,c as b,m as c,g as d};\n//# sourceMappingURL=chunk-F4GETNPB.js.map","import{a as v,b as B,c as A,d as q,f as _,g as z,i as l,j as g}from\"./chunk-3WWIVTCY.js\";import{d as R}from\"./chunk-F4GETNPB.js\";import{e as P,f as w,g as d,h as a,j as f}from\"./chunk-QY3QWFKW.js\";f();f();function E(m){let s=m.e;return s.query=m.query,s.params=m.params,s.queryOptions=m.options,s}var T,p,t,y,x,h,O,k=class{constructor(){w(this,t);this.serializers={...B};this.parsers={...v};w(this,T,!1);w(this,p,!1)}async _initArrayTypes({force:s=!1}={}){if(P(this,T)&&!s)return;d(this,T,!0);let e=await this.query(`\n SELECT b.oid, b.typarray\n FROM pg_catalog.pg_type a\n LEFT JOIN pg_catalog.pg_type b ON b.oid = a.typelem\n WHERE a.typcategory = 'A'\n GROUP BY b.oid, b.typarray\n ORDER BY b.oid\n `);for(let r of e.rows)this.serializers[r.typarray]=o=>A(o,this.serializers[r.oid],r.typarray),this.parsers[r.typarray]=o=>q(o,this.parsers[r.oid],r.typarray)}async refreshArrayTypes(){await this._initArrayTypes({force:!0})}async query(s,e,r){return await this._checkReady(),await this._runExclusiveTransaction(async()=>await a(this,t,x).call(this,s,e,r))}async sql(s,...e){let{query:r,params:o}=R(s,...e);return await this.query(r,o)}async exec(s,e){return await this._checkReady(),await this._runExclusiveTransaction(async()=>await a(this,t,h).call(this,s,e))}async describeQuery(s,e){let r=[];try{await a(this,t,y).call(this,l.parse({text:s,types:e?.paramTypes}),e),r=await a(this,t,y).call(this,l.describe({type:\"S\"}),e)}catch(n){throw n instanceof g?E({e:n,options:e,params:void 0,query:s}):n}finally{r.push(...await a(this,t,y).call(this,l.sync(),e))}let o=r.find(n=>n.name===\"parameterDescription\"),i=r.find(n=>n.name===\"rowDescription\"),c=o?.dataTypeIDs.map(n=>({dataTypeID:n,serializer:this.serializers[n]}))??[],u=i?.fields.map(n=>({name:n.name,dataTypeID:n.dataTypeID,parser:this.parsers[n.dataTypeID]}))??[];return{queryParams:c,resultFields:u}}async transaction(s){return await this._checkReady(),await this._runExclusiveTransaction(async()=>{await a(this,t,h).call(this,\"BEGIN\"),d(this,p,!0);let e=!1,r=()=>{if(e)throw new Error(\"Transaction is closed\")},o={query:async(i,c,u)=>(r(),await a(this,t,x).call(this,i,c,u)),sql:async(i,...c)=>{let{query:u,params:n}=R(i,...c);return await a(this,t,x).call(this,u,n)},exec:async(i,c)=>(r(),await a(this,t,h).call(this,i,c)),rollback:async()=>{r(),await a(this,t,h).call(this,\"ROLLBACK\"),e=!0},listen:async(i,c)=>(r(),await this.listen(i,c,o)),get closed(){return e}};try{let i=await s(o);return e||(e=!0,await a(this,t,h).call(this,\"COMMIT\")),d(this,p,!1),i}catch(i){throw e||await a(this,t,h).call(this,\"ROLLBACK\"),d(this,p,!1),i}})}async runExclusive(s){return await this._runExclusiveQuery(s)}};T=new WeakMap,p=new WeakMap,t=new WeakSet,y=async function(s,e={}){return await this.execProtocolStream(s,{...e,syncToFs:!1})},x=async function(s,e=[],r){return await this._runExclusiveQuery(async()=>{a(this,t,O).call(this,\"runQuery\",s,e,r),await this._handleBlob(r?.blob);let o=[];try{let c=await a(this,t,y).call(this,l.parse({text:s,types:r?.paramTypes}),r),u=z(await a(this,t,y).call(this,l.describe({type:\"S\"}),r)),n=e.map((b,S)=>{let D=u[S];if(b==null)return null;let Q=r?.serializers?.[D]??this.serializers[D];return Q?Q(b):b.toString()});o=[...c,...await a(this,t,y).call(this,l.bind({values:n}),r),...await a(this,t,y).call(this,l.describe({type:\"P\"}),r),...await a(this,t,y).call(this,l.execute({}),r)]}catch(c){throw c instanceof g?E({e:c,options:r,params:e,query:s}):c}finally{o.push(...await a(this,t,y).call(this,l.sync(),r))}await this._cleanupBlob(),P(this,p)||await this.syncToFs();let i=await this._getWrittenBlob();return _(o,this.parsers,r,i)[0]})},h=async function(s,e){return await this._runExclusiveQuery(async()=>{a(this,t,O).call(this,\"runExec\",s,e),await this._handleBlob(e?.blob);let r=[];try{r=await a(this,t,y).call(this,l.query(s),e)}catch(i){throw i instanceof g?E({e:i,options:e,params:void 0,query:s}):i}finally{r.push(...await a(this,t,y).call(this,l.sync(),e))}this._cleanupBlob(),P(this,p)||await this.syncToFs();let o=await this._getWrittenBlob();return _(r,this.parsers,e,o)})},O=function(...s){this.debug>0&&console.log(...s)};export{k as a};\n//# sourceMappingURL=chunk-F2DQ4FIK.js.map","import{a as qe}from\"./chunk-F2DQ4FIK.js\";import{a as rt,b as Ne,c as Me,d as W,e as Ee}from\"./chunk-VBDAOXYI.js\";import{e as Je,h as Ze,i as Pe,j as Ae,k as Te,l as Ce,m as Ie,n as et,o as ve,p as tt,q as Re,r as De,s as ze,t as Oe,u as at,v as ot,x as be}from\"./chunk-3WWIVTCY.js\";import\"./chunk-F4GETNPB.js\";import{c as Qe,d as z,e as h,f as k,g as E,h as j,j as P}from\"./chunk-QY3QWFKW.js\";P();P();P();var dt=new Error(\"timeout while waiting for mutex to become available\"),mt=new Error(\"mutex already locked\"),st=new Error(\"request for lock canceled\"),nt=function(e,t,r,a){function o(s){return s instanceof r?s:new r(function(n){n(s)})}return new(r||(r=Promise))(function(s,n){function _(m){try{p(a.next(m))}catch(d){n(d)}}function l(m){try{p(a.throw(m))}catch(d){n(d)}}function p(m){m.done?s(m.value):o(m.value).then(_,l)}p((a=a.apply(e,t||[])).next())})},Fe=class{constructor(t,r=st){this._value=t,this._cancelError=r,this._weightedQueues=[],this._weightedWaiters=[]}acquire(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return new Promise((r,a)=>{this._weightedQueues[t-1]||(this._weightedQueues[t-1]=[]),this._weightedQueues[t-1].push({resolve:r,reject:a}),this._dispatch()})}runExclusive(t,r=1){return nt(this,void 0,void 0,function*(){let[a,o]=yield this.acquire(r);try{return yield t(a)}finally{o()}})}waitForUnlock(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);return new Promise(r=>{this._weightedWaiters[t-1]||(this._weightedWaiters[t-1]=[]),this._weightedWaiters[t-1].push(r),this._dispatch()})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(t){this._value=t,this._dispatch()}release(t=1){if(t<=0)throw new Error(`invalid weight ${t}: must be positive`);this._value+=t,this._dispatch()}cancel(){this._weightedQueues.forEach(t=>t.forEach(r=>r.reject(this._cancelError))),this._weightedQueues=[]}_dispatch(){var t;for(let r=this._value;r>0;r--){let a=(t=this._weightedQueues[r-1])===null||t===void 0?void 0:t.shift();if(!a)continue;let o=this._value,s=r;this._value-=r,r=this._value+1,a.resolve([o,this._newReleaser(s)])}this._drainUnlockWaiters()}_newReleaser(t){let r=!1;return()=>{r||(r=!0,this.release(t))}}_drainUnlockWaiters(){for(let t=this._value;t>0;t--)this._weightedWaiters[t-1]&&(this._weightedWaiters[t-1].forEach(r=>r()),this._weightedWaiters[t-1]=[])}},it=function(e,t,r,a){function o(s){return s instanceof r?s:new r(function(n){n(s)})}return new(r||(r=Promise))(function(s,n){function _(m){try{p(a.next(m))}catch(d){n(d)}}function l(m){try{p(a.throw(m))}catch(d){n(d)}}function p(m){m.done?s(m.value):o(m.value).then(_,l)}p((a=a.apply(e,t||[])).next())})},Y=class{constructor(t){this._semaphore=new Fe(1,t)}acquire(){return it(this,void 0,void 0,function*(){let[,t]=yield this._semaphore.acquire();return t})}runExclusive(t){return this._semaphore.runExclusive(()=>t())}isLocked(){return this._semaphore.isLocked()}waitForUnlock(){return this._semaphore.waitForUnlock()}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}};P();var Le=Qe(rt(),1);async function ke(e){if(Re){let t=await import(\"fs\"),r=await import(\"zlib\"),{Writable:a}=await import(\"stream\"),{pipeline:o}=await import(\"stream/promises\");if(!t.existsSync(e))throw new Error(`Extension bundle not found: ${e}`);let s=r.createGunzip(),n=[];return await o(t.createReadStream(e),s,new a({write(_,l,p){n.push(_),p()}})),new Blob(n)}else{let t=await fetch(e.toString());if(!t.ok||!t.body)return null;if(t.headers.get(\"Content-Encoding\")===\"gzip\")return t.blob();{let r=new DecompressionStream(\"gzip\");return new Response(t.body.pipeThrough(r)).blob()}}}async function Be(e,t){for(let r in e.pg_extensions){let a;try{a=await e.pg_extensions[r]}catch(o){console.error(\"Failed to fetch extension:\",r,o);continue}if(a){let o=new Uint8Array(await a.arrayBuffer());_t(e,r,o,t)}else console.error(\"Could not get binary data for extension:\",r)}}function _t(e,t,r,a){Le.default.untar(r).forEach(s=>{if(!s.name.startsWith(\".\")){let n=e.WASM_PREFIX+\"/\"+s.name;if(s.name.endsWith(\".so\")){let _=(...p)=>{a(\"pgfs:ext OK\",n,p)},l=(...p)=>{a(\"pgfs:ext FAIL\",n,p)};e.FS.createPreloadedFile(lt(n),s.name.split(\"/\").pop().slice(0,-3),s.data,!0,!0,_,l,!1)}else try{let _=n.substring(0,n.lastIndexOf(\"/\"));e.FS.analyzePath(_).exists===!1&&e.FS.mkdirTree(_),e.FS.writeFile(n,s.data)}catch(_){console.error(`Error writing file ${n}`,_)}}})}function lt(e){let t=e.lastIndexOf(\"/\");return t>0?e.slice(0,t):e}P();P();var ce=class extends Ee{async init(t,r){return this.pg=t,{emscriptenOpts:{...r,preRun:[...r.preRun||[],o=>{let s=o.FS.filesystems.IDBFS;o.FS.mkdir(\"/pglite\"),o.FS.mkdir(`/pglite/${this.dataDir}`),o.FS.mount(s,{},`/pglite/${this.dataDir}`),o.FS.symlink(`/pglite/${this.dataDir}`,W)}]}}}initialSyncFs(){return new Promise((t,r)=>{this.pg.Module.FS.syncfs(!0,a=>{a?r(a):t()})})}syncToFs(t){return new Promise((r,a)=>{this.pg.Module.FS.syncfs(!1,o=>{o?a(o):r()})})}async closeFs(){let t=this.pg.Module.FS.filesystems.IDBFS.dbs[this.dataDir];t&&t.close(),this.pg.Module.FS.quit()}};P();var ge=class extends Ee{async closeFs(){this.pg.Module.FS.quit()}};function Ge(e){let t;if(e?.startsWith(\"file://\")){if(e=e.slice(7),!e)throw new Error(\"Invalid dataDir, must be a valid path\");t=\"nodefs\"}else e?.startsWith(\"idb://\")?(e=e.slice(6),t=\"idbfs\"):e?.startsWith(\"opfs-ahp://\")?(e=e.slice(11),t=\"opfs-ahp\"):!e||e?.startsWith(\"memory://\")?t=\"memoryfs\":t=\"nodefs\";return{dataDir:e,fsType:t}}async function Ue(e,t){let r;if(e&&t===\"nodefs\"){let{NodeFS:a}=await import(\"./fs/nodefs.js\");r=new a(e)}else if(e&&t===\"idbfs\")r=new ce(e);else if(e&&t===\"opfs-ahp\"){let{OpfsAhpFS:a}=await import(\"./fs/opfs-ahp.js\");r=new a(e)}else r=new ge;return r}P();P();var pt=(()=>{var _scriptName=import.meta.url;return async function(moduleArg={}){var moduleRtn,Module=moduleArg,readyPromiseResolve,readyPromiseReject,readyPromise=new Promise((e,t)=>{readyPromiseResolve=e,readyPromiseReject=t}),ENVIRONMENT_IS_WEB=typeof window==\"object\",ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope<\"u\",ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\"&&process.type!=\"renderer\";if(ENVIRONMENT_IS_NODE){let{createRequire:e}=await import(\"module\"),t=import.meta.url;t.startsWith(\"data:\")&&(t=\"/\");var require=e(t)}Module.expectedDataFileDownloads??(Module.expectedDataFileDownloads=0),Module.expectedDataFileDownloads++,(()=>{var e=typeof ENVIRONMENT_IS_PTHREAD<\"u\"&&ENVIRONMENT_IS_PTHREAD,t=typeof ENVIRONMENT_IS_WASM_WORKER<\"u\"&&ENVIRONMENT_IS_WASM_WORKER;if(e||t)return;var r=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";function a(o){var s=\"\";typeof window==\"object\"?s=window.encodeURIComponent(window.location.pathname.substring(0,window.location.pathname.lastIndexOf(\"/\"))+\"/\"):typeof process>\"u\"&&typeof location<\"u\"&&(s=encodeURIComponent(location.pathname.substring(0,location.pathname.lastIndexOf(\"/\"))+\"/\"));var n=\"pglite.data\",_=\"pglite.data\",l=Module.locateFile?Module.locateFile(_,\"\"):_,p=o.remote_package_size;function m(c,w,x,S){if(r){require(\"fs\").readFile(c,(v,b)=>{v?S(v):x(b.buffer)});return}Module.dataFileDownloads??(Module.dataFileDownloads={}),fetch(c).catch(v=>Promise.reject(new Error(`Network Error: ${c}`,{cause:v}))).then(v=>{if(!v.ok)return Promise.reject(new Error(`${v.status}: ${v.url}`));if(!v.body&&v.arrayBuffer)return v.arrayBuffer().then(x);let b=v.body.getReader(),M=()=>b.read().then(ee).catch(N=>Promise.reject(new Error(`Unexpected error while handling : ${v.url} ${N}`,{cause:N}))),y=[],F=v.headers,R=Number(F.get(\"Content-Length\")??w),U=0,ee=({done:N,value:H})=>{if(N){let A=new Uint8Array(y.map(T=>T.length).reduce((T,$e)=>T+$e,0)),D=0;for(let T of y)A.set(T,D),D+=T.length;x(A.buffer)}else{y.push(H),U+=H.length,Module.dataFileDownloads[c]={loaded:U,total:R};let A=0,D=0;for(let T of Object.values(Module.dataFileDownloads))A+=T.loaded,D+=T.total;return Module.setStatus?.(`Downloading data... (${A}/${D})`),M()}};return Module.setStatus?.(\"Downloading data...\"),M()})}function d(c){console.error(\"package error:\",c)}var g=null,u=Module.getPreloadedPackage?Module.getPreloadedPackage(l,p):null;u||m(l,p,c=>{g?(g(c),g=null):u=c},d);function f(c){function w(M,y){if(!M)throw y+new Error().stack}c.FS_createPath(\"/\",\"home\",!0,!0),c.FS_createPath(\"/home\",\"web_user\",!0,!0),c.FS_createPath(\"/\",\"tmp\",!0,!0),c.FS_createPath(\"/tmp\",\"pglite\",!0,!0),c.FS_createPath(\"/tmp/pglite\",\"bin\",!0,!0),c.FS_createPath(\"/tmp/pglite\",\"lib\",!0,!0),c.FS_createPath(\"/tmp/pglite/lib\",\"postgresql\",!0,!0),c.FS_createPath(\"/tmp/pglite/lib/postgresql\",\"pgxs\",!0,!0),c.FS_createPath(\"/tmp/pglite/lib/postgresql/pgxs\",\"config\",!0,!0),c.FS_createPath(\"/tmp/pglite/lib/postgresql/pgxs\",\"src\",!0,!0),c.FS_createPath(\"/tmp/pglite/lib/postgresql/pgxs/src\",\"makefiles\",!0,!0),c.FS_createPath(\"/tmp/pglite\",\"share\",!0,!0),c.FS_createPath(\"/tmp/pglite/share\",\"postgresql\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql\",\"extension\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql\",\"timezone\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Africa\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"America\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone/America\",\"Argentina\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone/America\",\"Indiana\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone/America\",\"Kentucky\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone/America\",\"North_Dakota\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Antarctica\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Arctic\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Asia\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Atlantic\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Australia\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Brazil\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Canada\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Chile\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Etc\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Europe\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Indian\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Mexico\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"Pacific\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql/timezone\",\"US\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql\",\"timezonesets\",!0,!0),c.FS_createPath(\"/tmp/pglite/share/postgresql\",\"tsearch_data\",!0,!0);function x(M,y,F){this.start=M,this.end=y,this.audio=F}x.prototype={requests:{},open:function(M,y){this.name=y,this.requests[y]=this,c.addRunDependency(`fp ${this.name}`)},send:function(){},onload:function(){var M=this.byteArray.subarray(this.start,this.end);this.finish(M)},finish:function(M){var y=this;c.FS_createDataFile(this.name,null,M,!0,!0,!0),c.removeRunDependency(`fp ${y.name}`),this.requests[this.name]=null}};for(var S=o.files,v=0;v<S.length;++v)new x(S[v].start,S[v].end,S[v].audio||0).open(\"GET\",S[v].filename);function b(M){w(M,\"Loading data file failed.\"),w(M.constructor.name===ArrayBuffer.name,\"bad input to processPackageData\");var y=new Uint8Array(M);x.prototype.byteArray=y;for(var F=o.files,R=0;R<F.length;++R)x.prototype.requests[F[R].filename].onload();c.removeRunDependency(\"datafile_pglite.data\")}c.addRunDependency(\"datafile_pglite.data\"),c.preloadResults??(c.preloadResults={}),c.preloadResults[n]={fromCache:!1},u?(b(u),u=null):g=b}Module.calledRun?f(Module):(Module.preRun??(Module.preRun=[])).push(f)}a({files:[{filename:\"/home/web_user/.pgpass\",start:0,end:204},{filename:\"/tmp/pglite/bin/initdb\",start:204,end:223},{filename:\"/tmp/pglite/bin/postgres\",start:223,end:242},{filename:\"/tmp/pglite/lib/postgresql/cyrillic_and_mic.so\",start:242,end:4736},{filename:\"/tmp/pglite/lib/postgresql/dict_snowball.so\",start:4736,end:577939},{filename:\"/tmp/pglite/lib/postgresql/euc2004_sjis2004.so\",start:577939,end:580012},{filename:\"/tmp/pglite/lib/postgresql/euc_cn_and_mic.so\",start:580012,end:580953},{filename:\"/tmp/pglite/lib/postgresql/euc_jp_and_sjis.so\",start:580953,end:588213},{filename:\"/tmp/pglite/lib/postgresql/euc_kr_and_mic.so\",start:588213,end:589164},{filename:\"/tmp/pglite/lib/postgresql/euc_tw_and_big5.so\",start:589164,end:593722},{filename:\"/tmp/pglite/lib/postgresql/latin2_and_win1250.so\",start:593722,end:595128},{filename:\"/tmp/pglite/lib/postgresql/latin_and_mic.so\",start:595128,end:596149},{filename:\"/tmp/pglite/lib/postgresql/libpqwalreceiver.so\",start:596149,end:717020},{filename:\"/tmp/pglite/lib/postgresql/pgoutput.so\",start:717020,end:730469},{filename:\"/tmp/pglite/lib/postgresql/pgxs/config/install-sh\",start:730469,end:744466},{filename:\"/tmp/pglite/lib/postgresql/pgxs/config/missing\",start:744466,end:745814},{filename:\"/tmp/pglite/lib/postgresql/pgxs/src/Makefile.global\",start:745814,end:782478},{filename:\"/tmp/pglite/lib/postgresql/pgxs/src/Makefile.port\",start:782478,end:783331},{filename:\"/tmp/pglite/lib/postgresql/pgxs/src/Makefile.shlib\",start:783331,end:798759},{filename:\"/tmp/pglite/lib/postgresql/pgxs/src/makefiles/pgxs.mk\",start:798759,end:814724},{filename:\"/tmp/pglite/lib/postgresql/pgxs/src/nls-global.mk\",start:814724,end:821592},{filename:\"/tmp/pglite/lib/postgresql/plpgsql.so\",start:821592,end:973259},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_big5.so\",start:973259,end:1088007},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_cyrillic.so\",start:1088007,end:1093981},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_euc2004.so\",start:1093981,end:1298913},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_euc_cn.so\",start:1298913,end:1374093},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_euc_jp.so\",start:1374093,end:1525321},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_euc_kr.so\",start:1525321,end:1628177},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_euc_tw.so\",start:1628177,end:1827733},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_gb18030.so\",start:1827733,end:2090110},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_gbk.so\",start:2090110,end:2236642},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_iso8859.so\",start:2236642,end:2260217},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_iso8859_1.so\",start:2260217,end:2261189},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_johab.so\",start:2261189,end:2422893},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_sjis.so\",start:2422893,end:2504553},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_sjis2004.so\",start:2504553,end:2631185},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_uhc.so\",start:2631185,end:2798457},{filename:\"/tmp/pglite/lib/postgresql/utf8_and_win.so\",start:2798457,end:2824959},{filename:\"/tmp/pglite/password\",start:2824959,end:2824968},{filename:\"/tmp/pglite/share/postgresql/errcodes.txt\",start:2824968,end:2858360},{filename:\"/tmp/pglite/share/postgresql/extension/plpgsql--1.0.sql\",start:2858360,end:2859018},{filename:\"/tmp/pglite/share/postgresql/extension/plpgsql.control\",start:2859018,end:2859211},{filename:\"/tmp/pglite/share/postgresql/information_schema.sql\",start:2859211,end:2974734},{filename:\"/tmp/pglite/share/postgresql/pg_hba.conf.sample\",start:2974734,end:2980359},{filename:\"/tmp/pglite/share/postgresql/pg_ident.conf.sample\",start:2980359,end:2982999},{filename:\"/tmp/pglite/share/postgresql/pg_service.conf.sample\",start:2982999,end:2983603},{filename:\"/tmp/pglite/share/postgresql/postgres.bki\",start:2983603,end:3936871},{filename:\"/tmp/pglite/share/postgresql/postgresql.conf.sample\",start:3936871,end:3967533},{filename:\"/tmp/pglite/share/postgresql/psqlrc.sample\",start:3967533,end:3967811},{filename:\"/tmp/pglite/share/postgresql/snowball_create.sql\",start:3967811,end:4011987},{filename:\"/tmp/pglite/share/postgresql/sql_features.txt\",start:4011987,end:4047720},{filename:\"/tmp/pglite/share/postgresql/system_constraints.sql\",start:4047720,end:4056615},{filename:\"/tmp/pglite/share/postgresql/system_functions.sql\",start:4056615,end:4080918},{filename:\"/tmp/pglite/share/postgresql/system_views.sql\",start:4080918,end:4132612},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Abidjan\",start:4132612,end:4132760},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Accra\",start:4132760,end:4132908},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Addis_Ababa\",start:4132908,end:4133173},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Algiers\",start:4133173,end:4133908},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Asmara\",start:4133908,end:4134173},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Asmera\",start:4134173,end:4134438},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Bamako\",start:4134438,end:4134586},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Bangui\",start:4134586,end:4134821},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Banjul\",start:4134821,end:4134969},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Bissau\",start:4134969,end:4135163},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Blantyre\",start:4135163,end:4135312},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Brazzaville\",start:4135312,end:4135547},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Bujumbura\",start:4135547,end:4135696},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Cairo\",start:4135696,end:4138095},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Casablanca\",start:4138095,end:4140524},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Ceuta\",start:4140524,end:4142576},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Conakry\",start:4142576,end:4142724},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Dakar\",start:4142724,end:4142872},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Dar_es_Salaam\",start:4142872,end:4143137},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Djibouti\",start:4143137,end:4143402},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Douala\",start:4143402,end:4143637},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/El_Aaiun\",start:4143637,end:4145932},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Freetown\",start:4145932,end:4146080},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Gaborone\",start:4146080,end:4146229},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Harare\",start:4146229,end:4146378},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Johannesburg\",start:4146378,end:4146624},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Juba\",start:4146624,end:4147303},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Kampala\",start:4147303,end:4147568},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Khartoum\",start:4147568,end:4148247},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Kigali\",start:4148247,end:4148396},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Kinshasa\",start:4148396,end:4148631},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Lagos\",start:4148631,end:4148866},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Libreville\",start:4148866,end:4149101},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Lome\",start:4149101,end:4149249},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Luanda\",start:4149249,end:4149484},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Lubumbashi\",start:4149484,end:4149633},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Lusaka\",start:4149633,end:4149782},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Malabo\",start:4149782,end:4150017},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Maputo\",start:4150017,end:4150166},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Maseru\",start:4150166,end:4150412},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Mbabane\",start:4150412,end:4150658},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Mogadishu\",start:4150658,end:4150923},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Monrovia\",start:4150923,end:4151131},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Nairobi\",start:4151131,end:4151396},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Ndjamena\",start:4151396,end:4151595},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Niamey\",start:4151595,end:4151830},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Nouakchott\",start:4151830,end:4151978},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Ouagadougou\",start:4151978,end:4152126},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Porto-Novo\",start:4152126,end:4152361},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Sao_Tome\",start:4152361,end:4152615},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Timbuktu\",start:4152615,end:4152763},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Tripoli\",start:4152763,end:4153388},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Tunis\",start:4153388,end:4154077},{filename:\"/tmp/pglite/share/postgresql/timezone/Africa/Windhoek\",start:4154077,end:4155032},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Adak\",start:4155032,end:4157388},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Anchorage\",start:4157388,end:4159759},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Anguilla\",start:4159759,end:4160005},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Antigua\",start:4160005,end:4160251},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Araguaina\",start:4160251,end:4161135},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Buenos_Aires\",start:4161135,end:4162211},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Catamarca\",start:4162211,end:4163287},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/ComodRivadavia\",start:4163287,end:4164363},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Cordoba\",start:4164363,end:4165439},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Jujuy\",start:4165439,end:4166487},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/La_Rioja\",start:4166487,end:4167577},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Mendoza\",start:4167577,end:4168653},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Rio_Gallegos\",start:4168653,end:4169729},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Salta\",start:4169729,end:4170777},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/San_Juan\",start:4170777,end:4171867},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/San_Luis\",start:4171867,end:4172969},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Tucuman\",start:4172969,end:4174073},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Argentina/Ushuaia\",start:4174073,end:4175149},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Aruba\",start:4175149,end:4175395},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Asuncion\",start:4175395,end:4177053},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Atikokan\",start:4177053,end:4177235},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Atka\",start:4177235,end:4179591},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Bahia\",start:4179591,end:4180615},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Bahia_Banderas\",start:4180615,end:4181715},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Barbados\",start:4181715,end:4182151},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Belem\",start:4182151,end:4182727},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Belize\",start:4182727,end:4184341},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Blanc-Sablon\",start:4184341,end:4184587},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Boa_Vista\",start:4184587,end:4185219},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Bogota\",start:4185219,end:4185465},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Boise\",start:4185465,end:4187875},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Buenos_Aires\",start:4187875,end:4188951},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cambridge_Bay\",start:4188951,end:4191205},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Campo_Grande\",start:4191205,end:4192649},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cancun\",start:4192649,end:4193513},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Caracas\",start:4193513,end:4193777},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Catamarca\",start:4193777,end:4194853},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cayenne\",start:4194853,end:4195051},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cayman\",start:4195051,end:4195233},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Chicago\",start:4195233,end:4198825},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Chihuahua\",start:4198825,end:4199927},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Ciudad_Juarez\",start:4199927,end:4201465},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Coral_Harbour\",start:4201465,end:4201647},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cordoba\",start:4201647,end:4202723},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Costa_Rica\",start:4202723,end:4203039},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Coyhaique\",start:4203039,end:4205179},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Creston\",start:4205179,end:4205539},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Cuiaba\",start:4205539,end:4206955},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Curacao\",start:4206955,end:4207201},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Danmarkshavn\",start:4207201,end:4207899},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Dawson\",start:4207899,end:4209513},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Dawson_Creek\",start:4209513,end:4210563},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Denver\",start:4210563,end:4213023},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Detroit\",start:4213023,end:4215253},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Dominica\",start:4215253,end:4215499},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Edmonton\",start:4215499,end:4217831},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Eirunepe\",start:4217831,end:4218487},{filename:\"/tmp/pglite/share/postgresql/timezone/America/El_Salvador\",start:4218487,end:4218711},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Ensenada\",start:4218711,end:4221169},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Fort_Nelson\",start:4221169,end:4223409},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Fort_Wayne\",start:4223409,end:4225091},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Fortaleza\",start:4225091,end:4225807},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Glace_Bay\",start:4225807,end:4227999},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Godthab\",start:4227999,end:4229902},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Goose_Bay\",start:4229902,end:4233112},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Grand_Turk\",start:4233112,end:4234946},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Grenada\",start:4234946,end:4235192},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Guadeloupe\",start:4235192,end:4235438},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Guatemala\",start:4235438,end:4235718},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Guayaquil\",start:4235718,end:4235964},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Guyana\",start:4235964,end:4236226},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Halifax\",start:4236226,end:4239650},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Havana\",start:4239650,end:4242066},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Hermosillo\",start:4242066,end:4242454},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Indianapolis\",start:4242454,end:4244136},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Knox\",start:4244136,end:4246580},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Marengo\",start:4246580,end:4248318},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Petersburg\",start:4248318,end:4250238},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Tell_City\",start:4250238,end:4251938},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Vevay\",start:4251938,end:4253368},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Vincennes\",start:4253368,end:4255078},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indiana/Winamac\",start:4255078,end:4256872},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Indianapolis\",start:4256872,end:4258554},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Inuvik\",start:4258554,end:4260628},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Iqaluit\",start:4260628,end:4262830},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Jamaica\",start:4262830,end:4263312},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Jujuy\",start:4263312,end:4264360},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Juneau\",start:4264360,end:4266713},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Kentucky/Louisville\",start:4266713,end:4269501},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Kentucky/Monticello\",start:4269501,end:4271869},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Knox_IN\",start:4271869,end:4274313},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Kralendijk\",start:4274313,end:4274559},{filename:\"/tmp/pglite/share/postgresql/timezone/America/La_Paz\",start:4274559,end:4274791},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Lima\",start:4274791,end:4275197},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Los_Angeles\",start:4275197,end:4278049},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Louisville\",start:4278049,end:4280837},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Lower_Princes\",start:4280837,end:4281083},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Maceio\",start:4281083,end:4281827},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Managua\",start:4281827,end:4282257},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Manaus\",start:4282257,end:4282861},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Marigot\",start:4282861,end:4283107},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Martinique\",start:4283107,end:4283339},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Matamoros\",start:4283339,end:4284757},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Mazatlan\",start:4284757,end:4285817},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Mendoza\",start:4285817,end:4286893},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Menominee\",start:4286893,end:4289167},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Merida\",start:4289167,end:4290171},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Metlakatla\",start:4290171,end:4291594},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Mexico_City\",start:4291594,end:4292816},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Miquelon\",start:4292816,end:4294482},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Moncton\",start:4294482,end:4297636},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Monterrey\",start:4297636,end:4298750},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Montevideo\",start:4298750,end:4300260},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Montreal\",start:4300260,end:4303754},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Montserrat\",start:4303754,end:4304e3},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Nassau\",start:4304e3,end:4307494},{filename:\"/tmp/pglite/share/postgresql/timezone/America/New_York\",start:4307494,end:4311046},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Nipigon\",start:4311046,end:4314540},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Nome\",start:4314540,end:4316907},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Noronha\",start:4316907,end:4317623},{filename:\"/tmp/pglite/share/postgresql/timezone/America/North_Dakota/Beulah\",start:4317623,end:4320019},{filename:\"/tmp/pglite/share/postgresql/timezone/America/North_Dakota/Center\",start:4320019,end:4322415},{filename:\"/tmp/pglite/share/postgresql/timezone/America/North_Dakota/New_Salem\",start:4322415,end:4324811},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Nuuk\",start:4324811,end:4326714},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Ojinaga\",start:4326714,end:4328238},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Panama\",start:4328238,end:4328420},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Pangnirtung\",start:4328420,end:4330622},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Paramaribo\",start:4330622,end:4330884},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Phoenix\",start:4330884,end:4331244},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Port-au-Prince\",start:4331244,end:4332678},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Port_of_Spain\",start:4332678,end:4332924},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Porto_Acre\",start:4332924,end:4333552},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Porto_Velho\",start:4333552,end:4334128},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Puerto_Rico\",start:4334128,end:4334374},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Punta_Arenas\",start:4334374,end:4336290},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Rainy_River\",start:4336290,end:4339158},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Rankin_Inlet\",start:4339158,end:4341224},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Recife\",start:4341224,end:4341940},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Regina\",start:4341940,end:4342920},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Resolute\",start:4342920,end:4344986},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Rio_Branco\",start:4344986,end:4345614},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Rosario\",start:4345614,end:4346690},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Santa_Isabel\",start:4346690,end:4349148},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Santarem\",start:4349148,end:4349750},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Santiago\",start:4349750,end:4352279},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Santo_Domingo\",start:4352279,end:4352737},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Sao_Paulo\",start:4352737,end:4354181},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Scoresbysund\",start:4354181,end:4356130},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Shiprock\",start:4356130,end:4358590},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Sitka\",start:4358590,end:4360919},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Barthelemy\",start:4360919,end:4361165},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Johns\",start:4361165,end:4364820},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Kitts\",start:4364820,end:4365066},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Lucia\",start:4365066,end:4365312},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Thomas\",start:4365312,end:4365558},{filename:\"/tmp/pglite/share/postgresql/timezone/America/St_Vincent\",start:4365558,end:4365804},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Swift_Current\",start:4365804,end:4366364},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Tegucigalpa\",start:4366364,end:4366616},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Thule\",start:4366616,end:4368118},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Thunder_Bay\",start:4368118,end:4371612},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Tijuana\",start:4371612,end:4374070},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Toronto\",start:4374070,end:4377564},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Tortola\",start:4377564,end:4377810},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Vancouver\",start:4377810,end:4380702},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Virgin\",start:4380702,end:4380948},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Whitehorse\",start:4380948,end:4382562},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Winnipeg\",start:4382562,end:4385430},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Yakutat\",start:4385430,end:4387735},{filename:\"/tmp/pglite/share/postgresql/timezone/America/Yellowknife\",start:4387735,end:4390067},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Casey\",start:4390067,end:4390504},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Davis\",start:4390504,end:4390801},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/DumontDUrville\",start:4390801,end:4390987},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Macquarie\",start:4390987,end:4393247},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Mawson\",start:4393247,end:4393446},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/McMurdo\",start:4393446,end:4395883},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Palmer\",start:4395883,end:4397301},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Rothera\",start:4397301,end:4397465},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/South_Pole\",start:4397465,end:4399902},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Syowa\",start:4399902,end:4400067},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Troll\",start:4400067,end:4401229},{filename:\"/tmp/pglite/share/postgresql/timezone/Antarctica/Vostok\",start:4401229,end:4401456},{filename:\"/tmp/pglite/share/postgresql/timezone/Arctic/Longyearbyen\",start:4401456,end:4403754},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Aden\",start:4403754,end:4403919},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Almaty\",start:4403919,end:4404916},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Amman\",start:4404916,end:4406363},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Anadyr\",start:4406363,end:4407551},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Aqtau\",start:4407551,end:4408534},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Aqtobe\",start:4408534,end:4409545},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ashgabat\",start:4409545,end:4410164},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ashkhabad\",start:4410164,end:4410783},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Atyrau\",start:4410783,end:4411774},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Baghdad\",start:4411774,end:4412757},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Bahrain\",start:4412757,end:4412956},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Baku\",start:4412956,end:4414183},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Bangkok\",start:4414183,end:4414382},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Barnaul\",start:4414382,end:4415603},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Beirut\",start:4415603,end:4417757},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Bishkek\",start:4417757,end:4418740},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Brunei\",start:4418740,end:4419223},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Calcutta\",start:4419223,end:4419508},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Chita\",start:4419508,end:4420729},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Choibalsan\",start:4420729,end:4421620},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Chongqing\",start:4421620,end:4422181},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Chungking\",start:4422181,end:4422742},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Colombo\",start:4422742,end:4423114},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Dacca\",start:4423114,end:4423451},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Damascus\",start:4423451,end:4425338},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Dhaka\",start:4425338,end:4425675},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Dili\",start:4425675,end:4425946},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Dubai\",start:4425946,end:4426111},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Dushanbe\",start:4426111,end:4426702},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Famagusta\",start:4426702,end:4428730},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Gaza\",start:4428730,end:4432574},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Harbin\",start:4432574,end:4433135},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Hebron\",start:4433135,end:4437007},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ho_Chi_Minh\",start:4437007,end:4437358},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Hong_Kong\",start:4437358,end:4438591},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Hovd\",start:4438591,end:4439482},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Irkutsk\",start:4439482,end:4440725},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Istanbul\",start:4440725,end:4442672},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Jakarta\",start:4442672,end:4443055},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Jayapura\",start:4443055,end:4443276},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Jerusalem\",start:4443276,end:4445664},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kabul\",start:4445664,end:4445872},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kamchatka\",start:4445872,end:4447038},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Karachi\",start:4447038,end:4447417},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kashgar\",start:4447417,end:4447582},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kathmandu\",start:4447582,end:4447794},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Katmandu\",start:4447794,end:4448006},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Khandyga\",start:4448006,end:4449277},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kolkata\",start:4449277,end:4449562},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Krasnoyarsk\",start:4449562,end:4450769},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kuala_Lumpur\",start:4450769,end:4451184},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kuching\",start:4451184,end:4451667},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Kuwait\",start:4451667,end:4451832},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Macao\",start:4451832,end:4453059},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Macau\",start:4453059,end:4454286},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Magadan\",start:4454286,end:4455508},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Makassar\",start:4455508,end:4455762},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Manila\",start:4455762,end:4456184},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Muscat\",start:4456184,end:4456349},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Nicosia\",start:4456349,end:4458351},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Novokuznetsk\",start:4458351,end:4459516},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Novosibirsk\",start:4459516,end:4460737},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Omsk\",start:4460737,end:4461944},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Oral\",start:4461944,end:4462949},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Phnom_Penh\",start:4462949,end:4463148},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Pontianak\",start:4463148,end:4463501},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Pyongyang\",start:4463501,end:4463738},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Qatar\",start:4463738,end:4463937},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Qostanay\",start:4463937,end:4464976},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Qyzylorda\",start:4464976,end:4466001},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Rangoon\",start:4466001,end:4466269},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Riyadh\",start:4466269,end:4466434},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Saigon\",start:4466434,end:4466785},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Sakhalin\",start:4466785,end:4467987},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Samarkand\",start:4467987,end:4468564},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Seoul\",start:4468564,end:4469181},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Shanghai\",start:4469181,end:4469742},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Singapore\",start:4469742,end:4470157},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Srednekolymsk\",start:4470157,end:4471365},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Taipei\",start:4471365,end:4472126},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tashkent\",start:4472126,end:4472717},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tbilisi\",start:4472717,end:4473752},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tehran\",start:4473752,end:4475014},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tel_Aviv\",start:4475014,end:4477402},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Thimbu\",start:4477402,end:4477605},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Thimphu\",start:4477605,end:4477808},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tokyo\",start:4477808,end:4478117},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Tomsk\",start:4478117,end:4479338},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ujung_Pandang\",start:4479338,end:4479592},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ulaanbaatar\",start:4479592,end:4480483},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ulan_Bator\",start:4480483,end:4481374},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Urumqi\",start:4481374,end:4481539},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Ust-Nera\",start:4481539,end:4482791},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Vientiane\",start:4482791,end:4482990},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Vladivostok\",start:4482990,end:4484198},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Yakutsk\",start:4484198,end:4485405},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Yangon\",start:4485405,end:4485673},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Yekaterinburg\",start:4485673,end:4486916},{filename:\"/tmp/pglite/share/postgresql/timezone/Asia/Yerevan\",start:4486916,end:4488067},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Azores\",start:4488067,end:4491523},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Bermuda\",start:4491523,end:4493919},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Canary\",start:4493919,end:4495816},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Cape_Verde\",start:4495816,end:4496086},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Faeroe\",start:4496086,end:4497901},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Faroe\",start:4497901,end:4499716},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Jan_Mayen\",start:4499716,end:4502014},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Madeira\",start:4502014,end:4505391},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Reykjavik\",start:4505391,end:4505539},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/South_Georgia\",start:4505539,end:4505703},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/St_Helena\",start:4505703,end:4505851},{filename:\"/tmp/pglite/share/postgresql/timezone/Atlantic/Stanley\",start:4505851,end:4507065},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/ACT\",start:4507065,end:4509255},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Adelaide\",start:4509255,end:4511463},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Brisbane\",start:4511463,end:4511882},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Broken_Hill\",start:4511882,end:4514111},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Canberra\",start:4514111,end:4516301},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Currie\",start:4516301,end:4518659},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Darwin\",start:4518659,end:4518984},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Eucla\",start:4518984,end:4519454},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Hobart\",start:4519454,end:4521812},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/LHI\",start:4521812,end:4523672},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Lindeman\",start:4523672,end:4524147},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Lord_Howe\",start:4524147,end:4526007},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Melbourne\",start:4526007,end:4528197},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/NSW\",start:4528197,end:4530387},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/North\",start:4530387,end:4530712},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Perth\",start:4530712,end:4531158},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Queensland\",start:4531158,end:4531577},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/South\",start:4531577,end:4533785},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Sydney\",start:4533785,end:4535975},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Tasmania\",start:4535975,end:4538333},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Victoria\",start:4538333,end:4540523},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/West\",start:4540523,end:4540969},{filename:\"/tmp/pglite/share/postgresql/timezone/Australia/Yancowinna\",start:4540969,end:4543198},{filename:\"/tmp/pglite/share/postgresql/timezone/Brazil/Acre\",start:4543198,end:4543826},{filename:\"/tmp/pglite/share/postgresql/timezone/Brazil/DeNoronha\",start:4543826,end:4544542},{filename:\"/tmp/pglite/share/postgresql/timezone/Brazil/East\",start:4544542,end:4545986},{filename:\"/tmp/pglite/share/postgresql/timezone/Brazil/West\",start:4545986,end:4546590},{filename:\"/tmp/pglite/share/postgresql/timezone/CET\",start:4546590,end:4549523},{filename:\"/tmp/pglite/share/postgresql/timezone/CST6CDT\",start:4549523,end:4553115},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Atlantic\",start:4553115,end:4556539},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Central\",start:4556539,end:4559407},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Eastern\",start:4559407,end:4562901},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Mountain\",start:4562901,end:4565233},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Newfoundland\",start:4565233,end:4568888},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Pacific\",start:4568888,end:4571780},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Saskatchewan\",start:4571780,end:4572760},{filename:\"/tmp/pglite/share/postgresql/timezone/Canada/Yukon\",start:4572760,end:4574374},{filename:\"/tmp/pglite/share/postgresql/timezone/Chile/Continental\",start:4574374,end:4576903},{filename:\"/tmp/pglite/share/postgresql/timezone/Chile/EasterIsland\",start:4576903,end:4579136},{filename:\"/tmp/pglite/share/postgresql/timezone/Cuba\",start:4579136,end:4581552},{filename:\"/tmp/pglite/share/postgresql/timezone/EET\",start:4581552,end:4583814},{filename:\"/tmp/pglite/share/postgresql/timezone/EST\",start:4583814,end:4583996},{filename:\"/tmp/pglite/share/postgresql/timezone/EST5EDT\",start:4583996,end:4587548},{filename:\"/tmp/pglite/share/postgresql/timezone/Egypt\",start:4587548,end:4589947},{filename:\"/tmp/pglite/share/postgresql/timezone/Eire\",start:4589947,end:4593439},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT\",start:4593439,end:4593553},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+0\",start:4593553,end:4593667},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+1\",start:4593667,end:4593783},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+10\",start:4593783,end:4593900},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+11\",start:4593900,end:4594017},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+12\",start:4594017,end:4594134},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+2\",start:4594134,end:4594250},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+3\",start:4594250,end:4594366},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+4\",start:4594366,end:4594482},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+5\",start:4594482,end:4594598},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+6\",start:4594598,end:4594714},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+7\",start:4594714,end:4594830},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+8\",start:4594830,end:4594946},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT+9\",start:4594946,end:4595062},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-0\",start:4595062,end:4595176},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-1\",start:4595176,end:4595293},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-10\",start:4595293,end:4595411},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-11\",start:4595411,end:4595529},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-12\",start:4595529,end:4595647},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-13\",start:4595647,end:4595765},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-14\",start:4595765,end:4595883},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-2\",start:4595883,end:4596e3},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-3\",start:4596e3,end:4596117},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-4\",start:4596117,end:4596234},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-5\",start:4596234,end:4596351},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-6\",start:4596351,end:4596468},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-7\",start:4596468,end:4596585},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-8\",start:4596585,end:4596702},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT-9\",start:4596702,end:4596819},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/GMT0\",start:4596819,end:4596933},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/Greenwich\",start:4596933,end:4597047},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/UCT\",start:4597047,end:4597161},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/UTC\",start:4597161,end:4597275},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/Universal\",start:4597275,end:4597389},{filename:\"/tmp/pglite/share/postgresql/timezone/Etc/Zulu\",start:4597389,end:4597503},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Amsterdam\",start:4597503,end:4600436},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Andorra\",start:4600436,end:4602178},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Astrakhan\",start:4602178,end:4603343},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Athens\",start:4603343,end:4605605},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Belfast\",start:4605605,end:4609269},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Belgrade\",start:4609269,end:4611189},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Berlin\",start:4611189,end:4613487},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Bratislava\",start:4613487,end:4615788},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Brussels\",start:4615788,end:4618721},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Bucharest\",start:4618721,end:4620905},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Budapest\",start:4620905,end:4623273},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Busingen\",start:4623273,end:4625182},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Chisinau\",start:4625182,end:4627572},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Copenhagen\",start:4627572,end:4629870},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Dublin\",start:4629870,end:4633362},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Gibraltar\",start:4633362,end:4636430},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Guernsey\",start:4636430,end:4640094},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Helsinki\",start:4640094,end:4641994},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Isle_of_Man\",start:4641994,end:4645658},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Istanbul\",start:4645658,end:4647605},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Jersey\",start:4647605,end:4651269},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Kaliningrad\",start:4651269,end:4652762},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Kiev\",start:4652762,end:4654882},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Kirov\",start:4654882,end:4656067},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Kyiv\",start:4656067,end:4658187},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Lisbon\",start:4658187,end:4661714},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Ljubljana\",start:4661714,end:4663634},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/London\",start:4663634,end:4667298},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Luxembourg\",start:4667298,end:4670231},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Madrid\",start:4670231,end:4672845},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Malta\",start:4672845,end:4675465},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Mariehamn\",start:4675465,end:4677365},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Minsk\",start:4677365,end:4678686},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Monaco\",start:4678686,end:4681648},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Moscow\",start:4681648,end:4683183},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Nicosia\",start:4683183,end:4685185},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Oslo\",start:4685185,end:4687483},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Paris\",start:4687483,end:4690445},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Podgorica\",start:4690445,end:4692365},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Prague\",start:4692365,end:4694666},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Riga\",start:4694666,end:4696864},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Rome\",start:4696864,end:4699505},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Samara\",start:4699505,end:4700720},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/San_Marino\",start:4700720,end:4703361},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Sarajevo\",start:4703361,end:4705281},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Saratov\",start:4705281,end:4706464},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Simferopol\",start:4706464,end:4707933},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Skopje\",start:4707933,end:4709853},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Sofia\",start:4709853,end:4711930},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Stockholm\",start:4711930,end:4714228},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Tallinn\",start:4714228,end:4716376},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Tirane\",start:4716376,end:4718460},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Tiraspol\",start:4718460,end:4720850},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Ulyanovsk\",start:4720850,end:4722117},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Uzhgorod\",start:4722117,end:4724237},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Vaduz\",start:4724237,end:4726146},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Vatican\",start:4726146,end:4728787},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Vienna\",start:4728787,end:4730987},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Vilnius\",start:4730987,end:4733149},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Volgograd\",start:4733149,end:4734342},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Warsaw\",start:4734342,end:4736996},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Zagreb\",start:4736996,end:4738916},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Zaporozhye\",start:4738916,end:4741036},{filename:\"/tmp/pglite/share/postgresql/timezone/Europe/Zurich\",start:4741036,end:4742945},{filename:\"/tmp/pglite/share/postgresql/timezone/Factory\",start:4742945,end:4743061},{filename:\"/tmp/pglite/share/postgresql/timezone/GB\",start:4743061,end:4746725},{filename:\"/tmp/pglite/share/postgresql/timezone/GB-Eire\",start:4746725,end:4750389},{filename:\"/tmp/pglite/share/postgresql/timezone/GMT\",start:4750389,end:4750503},{filename:\"/tmp/pglite/share/postgresql/timezone/GMT+0\",start:4750503,end:4750617},{filename:\"/tmp/pglite/share/postgresql/timezone/GMT-0\",start:4750617,end:4750731},{filename:\"/tmp/pglite/share/postgresql/timezone/GMT0\",start:4750731,end:4750845},{filename:\"/tmp/pglite/share/postgresql/timezone/Greenwich\",start:4750845,end:4750959},{filename:\"/tmp/pglite/share/postgresql/timezone/HST\",start:4750959,end:4751288},{filename:\"/tmp/pglite/share/postgresql/timezone/Hongkong\",start:4751288,end:4752521},{filename:\"/tmp/pglite/share/postgresql/timezone/Iceland\",start:4752521,end:4752669},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Antananarivo\",start:4752669,end:4752934},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Chagos\",start:4752934,end:4753133},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Christmas\",start:4753133,end:4753332},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Cocos\",start:4753332,end:4753600},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Comoro\",start:4753600,end:4753865},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Kerguelen\",start:4753865,end:4754064},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Mahe\",start:4754064,end:4754229},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Maldives\",start:4754229,end:4754428},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Mauritius\",start:4754428,end:4754669},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Mayotte\",start:4754669,end:4754934},{filename:\"/tmp/pglite/share/postgresql/timezone/Indian/Reunion\",start:4754934,end:4755099},{filename:\"/tmp/pglite/share/postgresql/timezone/Iran\",start:4755099,end:4756361},{filename:\"/tmp/pglite/share/postgresql/timezone/Israel\",start:4756361,end:4758749},{filename:\"/tmp/pglite/share/postgresql/timezone/Jamaica\",start:4758749,end:4759231},{filename:\"/tmp/pglite/share/postgresql/timezone/Japan\",start:4759231,end:4759540},{filename:\"/tmp/pglite/share/postgresql/timezone/Kwajalein\",start:4759540,end:4759856},{filename:\"/tmp/pglite/share/postgresql/timezone/Libya\",start:4759856,end:4760481},{filename:\"/tmp/pglite/share/postgresql/timezone/MET\",start:4760481,end:4763414},{filename:\"/tmp/pglite/share/postgresql/timezone/MST\",start:4763414,end:4763774},{filename:\"/tmp/pglite/share/postgresql/timezone/MST7MDT\",start:4763774,end:4766234},{filename:\"/tmp/pglite/share/postgresql/timezone/Mexico/BajaNorte\",start:4766234,end:4768692},{filename:\"/tmp/pglite/share/postgresql/timezone/Mexico/BajaSur\",start:4768692,end:4769752},{filename:\"/tmp/pglite/share/postgresql/timezone/Mexico/General\",start:4769752,end:4770974},{filename:\"/tmp/pglite/share/postgresql/timezone/NZ\",start:4770974,end:4773411},{filename:\"/tmp/pglite/share/postgresql/timezone/NZ-CHAT\",start:4773411,end:4775479},{filename:\"/tmp/pglite/share/postgresql/timezone/Navajo\",start:4775479,end:4777939},{filename:\"/tmp/pglite/share/postgresql/timezone/PRC\",start:4777939,end:4778500},{filename:\"/tmp/pglite/share/postgresql/timezone/PST8PDT\",start:4778500,end:4781352},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Apia\",start:4781352,end:4781964},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Auckland\",start:4781964,end:4784401},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Bougainville\",start:4784401,end:4784669},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Chatham\",start:4784669,end:4786737},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Chuuk\",start:4786737,end:4786923},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Easter\",start:4786923,end:4789156},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Efate\",start:4789156,end:4789694},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Enderbury\",start:4789694,end:4789928},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Fakaofo\",start:4789928,end:4790128},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Fiji\",start:4790128,end:4790706},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Funafuti\",start:4790706,end:4790872},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Galapagos\",start:4790872,end:4791110},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Gambier\",start:4791110,end:4791274},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Guadalcanal\",start:4791274,end:4791440},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Guam\",start:4791440,end:4791934},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Honolulu\",start:4791934,end:4792263},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Johnston\",start:4792263,end:4792592},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Kanton\",start:4792592,end:4792826},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Kiritimati\",start:4792826,end:4793064},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Kosrae\",start:4793064,end:4793415},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Kwajalein\",start:4793415,end:4793731},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Majuro\",start:4793731,end:4793897},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Marquesas\",start:4793897,end:4794070},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Midway\",start:4794070,end:4794245},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Nauru\",start:4794245,end:4794497},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Niue\",start:4794497,end:4794700},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Norfolk\",start:4794700,end:4795580},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Noumea\",start:4795580,end:4795884},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Pago_Pago\",start:4795884,end:4796059},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Palau\",start:4796059,end:4796239},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Pitcairn\",start:4796239,end:4796441},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Pohnpei\",start:4796441,end:4796607},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Ponape\",start:4796607,end:4796773},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Port_Moresby\",start:4796773,end:4796959},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Rarotonga\",start:4796959,end:4797562},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Saipan\",start:4797562,end:4798056},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Samoa\",start:4798056,end:4798231},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Tahiti\",start:4798231,end:4798396},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Tarawa\",start:4798396,end:4798562},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Tongatapu\",start:4798562,end:4798934},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Truk\",start:4798934,end:4799120},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Wake\",start:4799120,end:4799286},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Wallis\",start:4799286,end:4799452},{filename:\"/tmp/pglite/share/postgresql/timezone/Pacific/Yap\",start:4799452,end:4799638},{filename:\"/tmp/pglite/share/postgresql/timezone/Poland\",start:4799638,end:4802292},{filename:\"/tmp/pglite/share/postgresql/timezone/Portugal\",start:4802292,end:4805819},{filename:\"/tmp/pglite/share/postgresql/timezone/ROC\",start:4805819,end:4806580},{filename:\"/tmp/pglite/share/postgresql/timezone/ROK\",start:4806580,end:4807197},{filename:\"/tmp/pglite/share/postgresql/timezone/Singapore\",start:4807197,end:4807612},{filename:\"/tmp/pglite/share/postgresql/timezone/Turkey\",start:4807612,end:4809559},{filename:\"/tmp/pglite/share/postgresql/timezone/UCT\",start:4809559,end:4809673},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Alaska\",start:4809673,end:4812044},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Aleutian\",start:4812044,end:4814400},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Arizona\",start:4814400,end:4814760},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Central\",start:4814760,end:4818352},{filename:\"/tmp/pglite/share/postgresql/timezone/US/East-Indiana\",start:4818352,end:4820034},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Eastern\",start:4820034,end:4823586},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Hawaii\",start:4823586,end:4823915},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Indiana-Starke\",start:4823915,end:4826359},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Michigan\",start:4826359,end:4828589},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Mountain\",start:4828589,end:4831049},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Pacific\",start:4831049,end:4833901},{filename:\"/tmp/pglite/share/postgresql/timezone/US/Samoa\",start:4833901,end:4834076},{filename:\"/tmp/pglite/share/postgresql/timezone/UTC\",start:4834076,end:4834190},{filename:\"/tmp/pglite/share/postgresql/timezone/Universal\",start:4834190,end:4834304},{filename:\"/tmp/pglite/share/postgresql/timezone/W-SU\",start:4834304,end:4835839},{filename:\"/tmp/pglite/share/postgresql/timezone/WET\",start:4835839,end:4839366},{filename:\"/tmp/pglite/share/postgresql/timezone/Zulu\",start:4839366,end:4839480},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Africa.txt\",start:4839480,end:4846453},{filename:\"/tmp/pglite/share/postgresql/timezonesets/America.txt\",start:4846453,end:4857460},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Antarctica.txt\",start:4857460,end:4858594},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Asia.txt\",start:4858594,end:4866905},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Atlantic.txt\",start:4866905,end:4870438},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Australia\",start:4870438,end:4871573},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Australia.txt\",start:4871573,end:4874957},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Default\",start:4874957,end:4902171},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Etc.txt\",start:4902171,end:4903421},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Europe.txt\",start:4903421,end:4912167},{filename:\"/tmp/pglite/share/postgresql/timezonesets/India\",start:4912167,end:4912760},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Indian.txt\",start:4912760,end:4914021},{filename:\"/tmp/pglite/share/postgresql/timezonesets/Pacific.txt\",start:4914021,end:4917789},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/danish.stop\",start:4917789,end:4918213},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/dutch.stop\",start:4918213,end:4918666},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/english.stop\",start:4918666,end:4919288},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/finnish.stop\",start:4919288,end:4920867},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/french.stop\",start:4920867,end:4921672},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/german.stop\",start:4921672,end:4923021},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hungarian.stop\",start:4923021,end:4924248},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hunspell_sample.affix\",start:4924248,end:4924491},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hunspell_sample_long.affix\",start:4924491,end:4925124},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hunspell_sample_long.dict\",start:4925124,end:4925222},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hunspell_sample_num.affix\",start:4925222,end:4925684},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/hunspell_sample_num.dict\",start:4925684,end:4925813},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/ispell_sample.affix\",start:4925813,end:4926278},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/ispell_sample.dict\",start:4926278,end:4926359},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/italian.stop\",start:4926359,end:4928013},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/nepali.stop\",start:4928013,end:4932274},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/norwegian.stop\",start:4932274,end:4933125},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/portuguese.stop\",start:4933125,end:4934392},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/russian.stop\",start:4934392,end:4935627},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/spanish.stop\",start:4935627,end:4937805},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/swedish.stop\",start:4937805,end:4938364},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/synonym_sample.syn\",start:4938364,end:4938437},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/thesaurus_sample.ths\",start:4938437,end:4938910},{filename:\"/tmp/pglite/share/postgresql/tsearch_data/turkish.stop\",start:4938910,end:4939170}],remote_package_size:4939170})})();var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram=\"./this.program\",quit_=(e,t)=>{throw t},scriptDirectory=\"\";function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\"),nodePath=require(\"path\");import.meta.url.startsWith(\"data:\")||(scriptDirectory=nodePath.dirname(require(\"url\").fileURLToPath(import.meta.url))+\"/\"),readBinary=e=>{e=isFileURI(e)?new URL(e):e;var t=fs.readFileSync(e);return t},readAsync=async(e,t=!0)=>{e=isFileURI(e)?new URL(e):e;var r=fs.readFileSync(e,t?void 0:\"utf8\");return r},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\\\/g,\"/\")),arguments_=process.argv.slice(2),quit_=(e,t)=>{throw process.exitCode=e,t}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:typeof document<\"u\"&&document.currentScript&&(scriptDirectory=document.currentScript.src),_scriptName&&(scriptDirectory=_scriptName),scriptDirectory.startsWith(\"blob:\")?scriptDirectory=\"\":scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1),ENVIRONMENT_IS_WORKER&&(readBinary=e=>{var t=new XMLHttpRequest;return t.open(\"GET\",e,!1),t.responseType=\"arraybuffer\",t.send(null),new Uint8Array(t.response)}),readAsync=async e=>{var t=await fetch(e,{credentials:\"same-origin\"});if(t.ok)return t.arrayBuffer();throw new Error(t.status+\" : \"+t.url)});var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary=Module.wasmBinary;function intArrayFromBase64(e){if(typeof ENVIRONMENT_IS_NODE<\"u\"&&ENVIRONMENT_IS_NODE){var t=Buffer.from(e,\"base64\");return new Uint8Array(t.buffer,t.byteOffset,t.length)}for(var r=atob(e),a=new Uint8Array(r.length),o=0;o<r.length;++o)a[o]=r.charCodeAt(o);return a}var wasmMemory,ABORT=!1,EXITSTATUS;function assert(e,t){e||abort(t)}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e),Module.HEAP64=HEAP64=new BigInt64Array(e),Module.HEAPU64=HEAPU64=new BigUint64Array(e)}if(Module.wasmMemory)wasmMemory=Module.wasmMemory;else{var INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;wasmMemory=new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768})}updateMemoryViews();var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),!Module.noFSInit&&!FS.initialized&&FS.init(),FS.ignorePermissions=!1,TTY.init(),SOCKFS.root=FS.mount(SOCKFS,{},null),PIPEFS.root=FS.mount(PIPEFS,{},null),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}var runDependencies=0,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),runDependencies==0&&dependenciesFulfilled){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){Module.onAbort?.(e),e=\"Aborted(\"+e+\")\",err(e),ABORT=!0,e+=\". Build with -sASSERTIONS for more info.\";var t=new WebAssembly.RuntimeError(e);throw readyPromiseReject(t),t}var dataURIPrefix=\"data:application/octet-stream;base64,\",isDataURI=e=>e.startsWith(dataURIPrefix),isFileURI=e=>e.startsWith(\"file://\");function findWasmBinary(){if(Module.locateFile){var e=\"pglite.wasm\";return isDataURI(e)?e:locateFile(e)}return new URL(\"pglite.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(e){if(!wasmBinary)try{var t=await readAsync(e);return new Uint8Array(t)}catch{}return getBinarySync(e)}async function instantiateArrayBuffer(e,t){try{var r=await getWasmBinary(e),a=await WebAssembly.instantiate(r,t);return a}catch(o){err(`failed to asynchronously prepare wasm: ${o}`),abort(o)}}async function instantiateAsync(e,t,r){if(!e&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(t)&&!ENVIRONMENT_IS_NODE&&typeof fetch==\"function\")try{var a=fetch(t,{credentials:\"same-origin\"}),o=await WebAssembly.instantiateStreaming(a,r);return o}catch(s){err(`wasm streaming compile failed: ${s}`),err(\"falling back to ArrayBuffer instantiation\")}return instantiateArrayBuffer(t,r)}function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports,\"GOT.mem\":new Proxy(wasmImports,GOTHandler),\"GOT.func\":new Proxy(wasmImports,GOTHandler)}}async function createWasm(){function e(o,s){wasmExports=o.exports,wasmExports=relocateExports(wasmExports,1024);var n=getDylinkMetadata(s);return n.neededDynlibs&&(dynamicLibraries=n.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,\"main\"),LDSO.init(),loadDylibs(),addOnInit(wasmExports.__wasm_call_ctors),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency(\"wasm-instantiate\"),wasmExports}addRunDependency(\"wasm-instantiate\");function t(o){e(o.instance,o.module)}var r=getWasmImports();if(Module.instantiateWasm)try{return Module.instantiateWasm(r,e)}catch(o){err(`Module.instantiateWasm callback failed with error: ${o}`),readyPromiseReject(o)}wasmBinaryFile??(wasmBinaryFile=findWasmBinary());try{var a=await instantiateAsync(wasmBinary,wasmBinaryFile,r);return t(a),a}catch(o){readyPromiseReject(o);return}}var ASM_CONSTS={2537480:e=>{Module.is_worker=typeof WorkerGlobalScope<\"u\"&&self instanceof WorkerGlobalScope,Module.FD_BUFFER_MAX=e,Module.emscripten_copy_to=console.warn},2537652:()=>{Module.postMessage=function(t){console.log(\"# pg_main_emsdk.c:544: onCustomMessage:\",t)}},2537781:()=>{if(Module.is_worker){let t=function(r){console.log(\"onCustomMessage:\",r)};var e=t;Module.onCustomMessage=t}else Module.postMessage=function(r){switch(r.type){case\"raw\":break;case\"stdin\":{stringToUTF8(r.data,1,Module.FD_BUFFER_MAX);break}case\"rcon\":break;default:console.warn(\"custom_postMessage?\",r)}}}};class ExitStatus{constructor(t){z(this,\"name\",\"ExitStatus\");this.message=`Program terminated with exit(${t})`,this.status=t}}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var r=GOT[t];return r||(r=GOT[t]=new WebAssembly.Global({value:\"i32\",mutable:!0})),currentModuleWeakSymbols.has(t)||(r.required=!0),r}},callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(Module)},UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder:void 0,UTF8ArrayToString=(e,t=0,r=NaN)=>{for(var a=t+r,o=t;e[o]&&!(o>=a);)++o;if(o-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,o));for(var s=\"\";t<o;){var n=e[t++];if(!(n&128)){s+=String.fromCharCode(n);continue}var _=e[t++]&63;if((n&224)==192){s+=String.fromCharCode((n&31)<<6|_);continue}var l=e[t++]&63;if((n&240)==224?n=(n&15)<<12|_<<6|l:n=(n&7)<<18|_<<12|l<<6|e[t++]&63,n<65536)s+=String.fromCharCode(n);else{var p=n-65536;s+=String.fromCharCode(55296|p>>10,56320|p&1023)}}return s},getDylinkMetadata=e=>{var t=0,r=0;function a(){return e[t++]}function o(){for(var A=0,D=1;;){var T=e[t++];if(A+=(T&127)*D,D*=128,!(T&128))break}return A}function s(){var A=o();return t+=A,UTF8ArrayToString(e,t-A,A)}function n(A,D){if(A)throw new Error(D)}var _=\"dylink.0\";if(e instanceof WebAssembly.Module){var l=WebAssembly.Module.customSections(e,_);l.length===0&&(_=\"dylink\",l=WebAssembly.Module.customSections(e,_)),n(l.length===0,\"need dylink section\"),e=new Uint8Array(l[0]),r=e.length}else{var p=new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer),m=p[0]==1836278016;n(!m,\"need to see wasm magic number\"),n(e[8]!==0,\"need the dylink section to be first\"),t=9;var d=o();r=t+d,_=s()}var g={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if(_==\"dylink\"){g.memorySize=o(),g.memoryAlign=o(),g.tableSize=o(),g.tableAlign=o();for(var u=o(),f=0;f<u;++f){var c=s();g.neededDynlibs.push(c)}}else{n(_!==\"dylink.0\");for(var w=1,x=2,S=3,v=4,b=256,M=3,y=1;t<r;){var F=a(),R=o();if(F===w)g.memorySize=o(),g.memoryAlign=o(),g.tableSize=o(),g.tableAlign=o();else if(F===x)for(var u=o(),f=0;f<u;++f)c=s(),g.neededDynlibs.push(c);else if(F===S)for(var U=o();U--;){var ee=s(),N=o();N&b&&g.tlsExports.add(ee)}else if(F===v)for(var U=o();U--;){var H=s(),ee=s(),N=o();(N&M)==y&&g.weakImports.add(ee)}else t+=R}}return g};function getValue(e,t=\"i8\"){switch(t.endsWith(\"*\")&&(t=\"*\"),t){case\"i1\":return HEAP8[e];case\"i8\":return HEAP8[e];case\"i16\":return HEAP16[e>>1];case\"i32\":return HEAP32[e>>2];case\"i64\":return HEAP64[e>>3];case\"float\":return HEAPF32[e>>2];case\"double\":return HEAPF64[e>>3];case\"*\":return HEAPU32[e>>2];default:abort(`invalid type for getValue: ${t}`)}}var newDSO=(e,t,r)=>{var a={refcount:1/0,name:e,exports:r,global:!0};return LDSO.loadedLibsByName[e]=a,t!=null&&(LDSO.loadedLibsByHandle[t]=a),a},LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO(\"__main__\",0,wasmImports)}},___heap_base=2765600,alignMemory=(e,t)=>Math.ceil(e/t)*t,getMemory=e=>{if(runtimeInitialized)return _calloc(e,1);var t=___heap_base,r=t+alignMemory(e,16);return ___heap_base=r,GOT.__heap_base.value=r,t},isInternalSym=e=>[\"__cpp_exception\",\"__c_longjmp\",\"__wasm_apply_data_relocs\",\"__dso_handle\",\"__tls_size\",\"__tls_align\",\"__set_stack_limits\",\"_emscripten_tls_init\",\"__wasm_init_tls\",\"__wasm_call_ctors\",\"__start_em_asm\",\"__stop_em_asm\",\"__start_em_js\",\"__stop_em_js\"].includes(e)||e.startsWith(\"__em_js__\"),uleb128Encode=(e,t)=>{e<128?t.push(e):t.push(e%128|128,e>>7)},sigToWasmTypes=e=>{for(var t={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"},r={parameters:[],results:e[0]==\"v\"?[]:[t[e[0]]]},a=1;a<e.length;++a)r.parameters.push(t[e[a]]);return r},generateFuncType=(e,t)=>{var r=e.slice(0,1),a=e.slice(1),o={i:127,p:127,j:126,f:125,d:124,e:111};t.push(96),uleb128Encode(a.length,t);for(var s=0;s<a.length;++s)t.push(o[a[s]]);r==\"v\"?t.push(0):t.push(1,o[r])},convertJsFunctionToWasm=(e,t)=>{if(typeof WebAssembly.Function==\"function\")return new WebAssembly.Function(sigToWasmTypes(t),e);var r=[1];generateFuncType(t,r);var a=[0,97,115,109,1,0,0,0,1];uleb128Encode(r.length,a),a.push(...r),a.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var o=new WebAssembly.Module(new Uint8Array(a)),s=new WebAssembly.Instance(o,{e:{f:e}}),n=s.exports.f;return n},wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:5610,element:\"anyfunc\"}),getWasmTableEntry=e=>{var t=wasmTableMirror[e];return t||(e>=wasmTableMirror.length&&(wasmTableMirror.length=e+1),wasmTableMirror[e]=t=wasmTable.get(e)),t},updateTableMap=(e,t)=>{if(functionsInTableMap)for(var r=e;r<e+t;r++){var a=getWasmTableEntry(r);a&&functionsInTableMap.set(a,r)}},functionsInTableMap,getFunctionAddress=e=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),freeTableIndexes=[],getEmptyTableSlot=()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(e){throw e instanceof RangeError?\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\":e}return wasmTable.length-1},setWasmTableEntry=(e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},addFunction=(e,t)=>{var r=getFunctionAddress(e);if(r)return r;var a=getEmptyTableSlot();try{setWasmTableEntry(a,e)}catch(s){if(!(s instanceof TypeError))throw s;var o=convertJsFunctionToWasm(e,t);setWasmTableEntry(a,o)}return functionsInTableMap.set(e,a),a},updateGOT=(e,t)=>{for(var r in e)if(!isInternalSym(r)){var a=e[r];GOT[r]||(GOT[r]=new WebAssembly.Global({value:\"i32\",mutable:!0})),(t||GOT[r].value==0)&&(typeof a==\"function\"?GOT[r].value=addFunction(a):typeof a==\"number\"?GOT[r].value=a:err(`unhandled export type for '${r}': ${typeof a}`))}},relocateExports=(e,t,r)=>{var a={};for(var o in e){var s=e[o];typeof s==\"object\"&&(s=s.value),typeof s==\"number\"&&(s+=t),a[o]=s}return updateGOT(a,r),a},isSymbolDefined=e=>{var t=wasmImports[e];return!(!t||t.stub)},dynCall=(e,t,r=[])=>{var a=getWasmTableEntry(t)(...r);return a},stackSave=()=>_emscripten_stack_get_current(),stackRestore=e=>__emscripten_stack_restore(e),createInvokeFunction=e=>(t,...r)=>{var a=stackSave();try{return dynCall(e,t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;if(_setThrew(1,0),e[0]==\"j\")return 0n}},resolveGlobalSymbol=(e,t=!1)=>{var r;return isSymbolDefined(e)?r=wasmImports[e]:e.startsWith(\"invoke_\")&&(r=wasmImports[e]=createInvokeFunction(e.split(\"_\")[1])),{sym:r,name:e}},UTF8ToString=(e,t)=>e?UTF8ArrayToString(HEAPU8,e,t):\"\",loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);currentModuleWeakSymbols=metadata.weakImports;function loadModule(){var firstLoad=!handle||!HEAP8[handle+8];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length;tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}var proxyHandler={get(e,t){switch(t){case\"__memory_base\":return memoryBase;case\"__table_base\":return tableBase}if(t in wasmImports&&!wasmImports[t].stub)return wasmImports[t];if(!(t in e)){var r;e[t]=(...a)=>(r||(r=resolveSymbol(t)),r(...a))}return e[t]}},proxy=new Proxy({},proxyHandler),info={\"GOT.mem\":new Proxy({},GOTHandler),\"GOT.func\":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols();function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&body.indexOf(\"$\"+arity)!=-1;arity++)args.push(\"$\"+arity);args=args.join(\",\");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(\"__start_em_asm\"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),cSig!=\"void\"){cSig=cSig.split(\",\");for(var i in cSig){var jsArg=cSig[i].split(\" \").pop();jsArgs.push(jsArg.replace(\"*\",\"\"))}}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports)if(name.startsWith(\"__em_js__\")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split(\"<::>\");addEmJs(name.replace(\"__em_js__\",\"\"),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():__ATINIT__.push(init)),moduleExports}if(flags.loadAsync){if(binary instanceof WebAssembly.Module){var instance=new WebAssembly.Instance(binary,info);return Promise.resolve(postInstantiation(binary,instance))}return WebAssembly.instantiate(binary,info).then(e=>postInstantiation(e.module,e.instance))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return flags.loadAsync?metadata.neededDynlibs.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,flags,localScope)),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach(e=>loadDynamicLibrary(e,flags,localScope)),loadModule())},mergeLibSymbols=(e,t)=>{for(var[r,a]of Object.entries(e)){let o=n=>{isSymbolDefined(n)||(wasmImports[n]=a)};o(r);let s=\"__main_argc_argv\";r==\"main\"&&o(s),r==s&&o(\"main\")}},asyncLoad=async e=>{var t=await readAsync(e);return new Uint8Array(t)},preloadPlugins=Module.preloadPlugins||[],registerWasmPlugin=()=>{var e={promiseChainEnd:Promise.resolve(),canHandle:t=>!Module.noWasmDecoding&&t.endsWith(\".so\"),handle:(t,r,a,o)=>{e.promiseChainEnd=e.promiseChainEnd.then(()=>loadWebAssemblyModule(t,{loadAsync:!0,nodelete:!0},r,{})).then(s=>{preloadedWasm[r]=s,a(t)},s=>{err(`failed to instantiate wasm: ${r}: ${s}`),o()})}};preloadPlugins.push(e)},preloadedWasm={};function loadDynamicLibrary(e,t={global:!0,nodelete:!0},r,a){var o=LDSO.loadedLibsByName[e];if(o)return t.global?o.global||(o.global=!0,mergeLibSymbols(o.exports,e)):r&&Object.assign(r,o.exports),t.nodelete&&o.refcount!==1/0&&(o.refcount=1/0),o.refcount++,a&&(LDSO.loadedLibsByHandle[a]=o),t.loadAsync?Promise.resolve(!0):!0;o=newDSO(e,a,\"loading\"),o.refcount=t.nodelete?1/0:1,o.global=t.global;function s(){if(a){var l=HEAPU32[a+28>>2],p=HEAPU32[a+32>>2];if(l&&p){var m=HEAP8.slice(l,l+p);return t.loadAsync?Promise.resolve(m):m}}var d=locateFile(e);if(t.loadAsync)return asyncLoad(d);if(!readBinary)throw new Error(`${d}: file not found, and synchronous loading of external files is not available`);return readBinary(d)}function n(){var l=preloadedWasm[e];return l?t.loadAsync?Promise.resolve(l):l:t.loadAsync?s().then(p=>loadWebAssemblyModule(p,t,e,r,a)):loadWebAssemblyModule(s(),t,e,r,a)}function _(l){o.global?mergeLibSymbols(l,e):r&&Object.assign(r,l),o.exports=l}return t.loadAsync?n().then(l=>(_(l),!0)):(_(n()),!0)}var reportUndefinedSymbols=()=>{for(var[e,t]of Object.entries(GOT))if(t.value==0){var r=resolveGlobalSymbol(e,!0).sym;if(!r&&!t.required)continue;if(typeof r==\"function\")t.value=addFunction(r,r.sig);else if(typeof r==\"number\")t.value=r;else throw new Error(`bad export type for '${e}': ${typeof r}`)}},loadDylibs=()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}addRunDependency(\"loadDylibs\"),dynamicLibraries.reduce((e,t)=>e.then(()=>loadDynamicLibrary(t,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})),Promise.resolve()).then(()=>{reportUndefinedSymbols(),removeRunDependency(\"loadDylibs\")})},noExitRuntime=Module.noExitRuntime||!0;function setValue(e,t,r=\"i8\"){switch(r.endsWith(\"*\")&&(r=\"*\"),r){case\"i1\":HEAP8[e]=t;break;case\"i8\":HEAP8[e]=t;break;case\"i16\":HEAP16[e>>1]=t;break;case\"i32\":HEAP32[e>>2]=t;break;case\"i64\":HEAP64[e>>3]=BigInt(t);break;case\"float\":HEAPF32[e>>2]=t;break;case\"double\":HEAPF64[e>>3]=t;break;case\"*\":HEAPU32[e>>2]=t;break;default:abort(`invalid type for setValue: ${r}`)}}var ___assert_fail=(e,t,r,a)=>abort(`Assertion failed: ${UTF8ToString(e)}, at: `+[t?UTF8ToString(t):\"unknown filename\",r,a?UTF8ToString(a):\"unknown function\"]);___assert_fail.sig=\"vppip\";var ___call_sighandler=(e,t)=>getWasmTableEntry(e)(t);___call_sighandler.sig=\"vpi\";var ___memory_base=new WebAssembly.Global({value:\"i32\",mutable:!1},1024);Module.___memory_base=___memory_base;var ___stack_pointer=new WebAssembly.Global({value:\"i32\",mutable:!0},2765600);Module.___stack_pointer=___stack_pointer;var PATH={isAbs:e=>e.charAt(0)===\"/\",splitPath:e=>{var t=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var r=0,a=e.length-1;a>=0;a--){var o=e[a];o===\".\"?e.splice(a,1):o===\"..\"?(e.splice(a,1),r++):r&&(e.splice(a,1),r--)}if(t)for(;r;r--)e.unshift(\"..\");return e},normalize:e=>{var t=PATH.isAbs(e),r=e.substr(-1)===\"/\";return e=PATH.normalizeArray(e.split(\"/\").filter(a=>!!a),!t).join(\"/\"),!e&&!t&&(e=\".\"),e&&r&&(e+=\"/\"),(t?\"/\":\"\")+e},dirname:e=>{var t=PATH.splitPath(e),r=t[0],a=t[1];return!r&&!a?\".\":(a&&(a=a.substr(0,a.length-1)),r+a)},basename:e=>{if(e===\"/\")return\"/\";e=PATH.normalize(e),e=e.replace(/\\/$/,\"\");var t=e.lastIndexOf(\"/\");return t===-1?e:e.substr(t+1)},join:(...e)=>PATH.normalize(e.join(\"/\")),join2:(e,t)=>PATH.normalize(e+\"/\"+t)},initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto.getRandomValues==\"function\")return a=>crypto.getRandomValues(a);if(ENVIRONMENT_IS_NODE)try{var e=require(\"crypto\"),t=e.randomFillSync;if(t)return a=>e.randomFillSync(a);var r=e.randomBytes;return a=>(a.set(r(a.byteLength)),a)}catch{}abort(\"initRandomDevice\")},randomFill=e=>(randomFill=initRandomFill())(e),PATH_FS={resolve:(...e)=>{for(var t=\"\",r=!1,a=e.length-1;a>=-1&&!r;a--){var o=a>=0?e[a]:FS.cwd();if(typeof o!=\"string\")throw new TypeError(\"Arguments to path.resolve must be strings\");if(!o)return\"\";t=o+\"/\"+t,r=PATH.isAbs(o)}return t=PATH.normalizeArray(t.split(\"/\").filter(s=>!!s),!r).join(\"/\"),(r?\"/\":\"\")+t||\".\"},relative:(e,t)=>{e=PATH_FS.resolve(e).substr(1),t=PATH_FS.resolve(t).substr(1);function r(p){for(var m=0;m<p.length&&p[m]===\"\";m++);for(var d=p.length-1;d>=0&&p[d]===\"\";d--);return m>d?[]:p.slice(m,d-m+1)}for(var a=r(e.split(\"/\")),o=r(t.split(\"/\")),s=Math.min(a.length,o.length),n=s,_=0;_<s;_++)if(a[_]!==o[_]){n=_;break}for(var l=[],_=n;_<a.length;_++)l.push(\"..\");return l=l.concat(o.slice(n)),l.join(\"/\")}},FS_stdin_getChar_buffer=[],lengthBytesUTF8=e=>{for(var t=0,r=0;r<e.length;++r){var a=e.charCodeAt(r);a<=127?t++:a<=2047?t+=2:a>=55296&&a<=57343?(t+=4,++r):t+=3}return t},stringToUTF8Array=(e,t,r,a)=>{if(!(a>0))return 0;for(var o=r,s=r+a-1,n=0;n<e.length;++n){var _=e.charCodeAt(n);if(_>=55296&&_<=57343){var l=e.charCodeAt(++n);_=65536+((_&1023)<<10)|l&1023}if(_<=127){if(r>=s)break;t[r++]=_}else if(_<=2047){if(r+1>=s)break;t[r++]=192|_>>6,t[r++]=128|_&63}else if(_<=65535){if(r+2>=s)break;t[r++]=224|_>>12,t[r++]=128|_>>6&63,t[r++]=128|_&63}else{if(r+3>=s)break;t[r++]=240|_>>18,t[r++]=128|_>>12&63,t[r++]=128|_>>6&63,t[r++]=128|_&63}}return t[r]=0,r-o};function intArrayFromString(e,t,r){var a=r>0?r:lengthBytesUTF8(e)+1,o=new Array(a),s=stringToUTF8Array(e,o,0,o.length);return t&&(o.length=s),o}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var e=null;if(ENVIRONMENT_IS_NODE){var t=256,r=Buffer.alloc(t),a=0,o=process.stdin.fd;try{a=fs.readSync(o,r,0,t)}catch(s){if(s.toString().includes(\"EOF\"))a=0;else throw s}a>0&&(e=r.slice(0,a).toString(\"utf-8\"))}else typeof window<\"u\"&&typeof window.prompt==\"function\"&&(e=window.prompt(\"Input: \"),e!==null&&(e+=`\n`));if(!e)return null;FS_stdin_getChar_buffer=intArrayFromString(e,!0)}return FS_stdin_getChar_buffer.shift()},TTY={ttys:[],init(){},shutdown(){},register(e,t){TTY.ttys[e]={input:[],output:[],ops:t},FS.registerDevice(e,TTY.stream_ops)},stream_ops:{open(e){var t=TTY.ttys[e.node.rdev];if(!t)throw new FS.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,r,a,o){if(!e.tty||!e.tty.ops.get_char)throw new FS.ErrnoError(60);for(var s=0,n=0;n<a;n++){var _;try{_=e.tty.ops.get_char(e.tty)}catch{throw new FS.ErrnoError(29)}if(_===void 0&&s===0)throw new FS.ErrnoError(6);if(_==null)break;s++,t[r+n]=_}return s&&(e.node.atime=Date.now()),s},write(e,t,r,a,o){if(!e.tty||!e.tty.ops.put_char)throw new FS.ErrnoError(60);try{for(var s=0;s<a;s++)e.tty.ops.put_char(e.tty,t[r+s])}catch{throw new FS.ErrnoError(29)}return a&&(e.node.mtime=e.node.ctime=Date.now()),s}},default_tty_ops:{get_char(e){return FS_stdin_getChar()},put_char(e,t){t===null||t===10?(out(UTF8ArrayToString(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(out(UTF8ArrayToString(e.output)),e.output=[])},ioctl_tcgets(e){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(e,t,r){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(err(UTF8ArrayToString(e.output)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(err(UTF8ArrayToString(e.output)),e.output=[])}}},zeroMemory=(e,t)=>{HEAPU8.fill(0,e,e+t)},mmapAlloc=e=>{e=alignMemory(e,65536);var t=_emscripten_builtin_memalign(65536,e);return t&&zeroMemory(t,e),t},MEMFS={ops_table:null,mount(e){return MEMFS.createNode(null,\"/\",16895,0)},createNode(e,t,r,a){if(FS.isBlkdev(r)||FS.isFIFO(r))throw new FS.ErrnoError(63);MEMFS.ops_table||(MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}});var o=FS.createNode(e,t,r,a);return FS.isDir(o.mode)?(o.node_ops=MEMFS.ops_table.dir.node,o.stream_ops=MEMFS.ops_table.dir.stream,o.contents={}):FS.isFile(o.mode)?(o.node_ops=MEMFS.ops_table.file.node,o.stream_ops=MEMFS.ops_table.file.stream,o.usedBytes=0,o.contents=null):FS.isLink(o.mode)?(o.node_ops=MEMFS.ops_table.link.node,o.stream_ops=MEMFS.ops_table.link.stream):FS.isChrdev(o.mode)&&(o.node_ops=MEMFS.ops_table.chrdev.node,o.stream_ops=MEMFS.ops_table.chrdev.stream),o.atime=o.mtime=o.ctime=Date.now(),e&&(e.contents[t]=o,e.atime=e.mtime=e.ctime=o.atime),o},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){var r=e.contents?e.contents.length:0;if(!(r>=t)){var a=1024*1024;t=Math.max(t,r*(r<a?2:1.125)>>>0),r!=0&&(t=Math.max(t,256));var o=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(o.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var r=e.contents;e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=FS.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,FS.isDir(e.mode)?t.size=4096:FS.isFile(e.mode)?t.size=e.usedBytes:FS.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.atime),t.mtime=new Date(e.mtime),t.ctime=new Date(e.ctime),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){for(let r of[\"mode\",\"atime\",\"mtime\",\"ctime\"])t[r]&&(e[r]=t[r]);t.size!==void 0&&MEMFS.resizeFileStorage(e,t.size)},lookup(e,t){throw MEMFS.doesNotExistError},mknod(e,t,r,a){return MEMFS.createNode(e,t,r,a)},rename(e,t,r){var a;try{a=FS.lookupNode(t,r)}catch{}if(a){if(FS.isDir(e.mode))for(var o in a.contents)throw new FS.ErrnoError(55);FS.hashRemoveNode(a)}delete e.parent.contents[e.name],t.contents[r]=e,e.name=r,t.ctime=t.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,t){delete e.contents[t],e.ctime=e.mtime=Date.now()},rmdir(e,t){var r=FS.lookupNode(e,t);for(var a in r.contents)throw new FS.ErrnoError(55);delete e.contents[t],e.ctime=e.mtime=Date.now()},readdir(e){return[\".\",\"..\",...Object.keys(e.contents)]},symlink(e,t,r){var a=MEMFS.createNode(e,t,41471,0);return a.link=r,a},readlink(e){if(!FS.isLink(e.mode))throw new FS.ErrnoError(28);return e.link}},stream_ops:{read(e,t,r,a,o){var s=e.node.contents;if(o>=e.node.usedBytes)return 0;var n=Math.min(e.node.usedBytes-o,a);if(n>8&&s.subarray)t.set(s.subarray(o,o+n),r);else for(var _=0;_<n;_++)t[r+_]=s[o+_];return n},write(e,t,r,a,o,s){if(t.buffer===HEAP8.buffer&&(s=!1),!a)return 0;var n=e.node;if(n.mtime=n.ctime=Date.now(),t.subarray&&(!n.contents||n.contents.subarray)){if(s)return n.contents=t.subarray(r,r+a),n.usedBytes=a,a;if(n.usedBytes===0&&o===0)return n.contents=t.slice(r,r+a),n.usedBytes=a,a;if(o+a<=n.usedBytes)return n.contents.set(t.subarray(r,r+a),o),a}if(MEMFS.expandFileStorage(n,o+a),n.contents.subarray&&t.subarray)n.contents.set(t.subarray(r,r+a),o);else for(var _=0;_<a;_++)n.contents[o+_]=t[r+_];return n.usedBytes=Math.max(n.usedBytes,o+a),a},llseek(e,t,r){var a=t;if(r===1?a+=e.position:r===2&&FS.isFile(e.node.mode)&&(a+=e.node.usedBytes),a<0)throw new FS.ErrnoError(28);return a},allocate(e,t,r){MEMFS.expandFileStorage(e.node,t+r),e.node.usedBytes=Math.max(e.node.usedBytes,t+r)},mmap(e,t,r,a,o){if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(43);var s,n,_=e.node.contents;if(!(o&2)&&_&&_.buffer===HEAP8.buffer)n=!1,s=_.byteOffset;else{if(n=!0,s=mmapAlloc(t),!s)throw new FS.ErrnoError(48);_&&((r>0||r+t<_.length)&&(_.subarray?_=_.subarray(r,r+t):_=Array.prototype.slice.call(_,r,r+t)),HEAP8.set(_,s))}return{ptr:s,allocated:n}},msync(e,t,r,a,o){return MEMFS.stream_ops.write(e,t,0,a,r,!1),0}}},FS_createDataFile=(e,t,r,a,o,s)=>{FS.createDataFile(e,t,r,a,o,s)},FS_handledByPreloadPlugin=(e,t,r,a)=>{typeof Browser<\"u\"&&Browser.init();var o=!1;return preloadPlugins.forEach(s=>{o||s.canHandle(t)&&(s.handle(e,t,r,a),o=!0)}),o},FS_createPreloadedFile=(e,t,r,a,o,s,n,_,l,p)=>{var m=t?PATH_FS.resolve(PATH.join2(e,t)):e,d=`cp ${m}`;function g(u){function f(c){p?.(),_||FS_createDataFile(e,t,c,a,o,l),s?.(),removeRunDependency(d)}FS_handledByPreloadPlugin(u,m,f,()=>{n?.(),removeRunDependency(d)})||f(u)}addRunDependency(d),typeof r==\"string\"?asyncLoad(r).then(g,n):g(r)},FS_modeStringToFlags=e=>{var t={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090},r=t[e];if(typeof r>\"u\")throw new Error(`Unknown file open mode: ${e}`);return r},FS_getMode=(e,t)=>{var r=0;return e&&(r|=365),t&&(r|=146),r},IDBFS={dbs:{},indexedDB:()=>{if(typeof indexedDB<\"u\")return indexedDB;var e=null;return typeof window==\"object\"&&(e=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB),e},DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",queuePersist:e=>{function t(){e.idbPersistState===\"again\"?r():e.idbPersistState=0}function r(){e.idbPersistState=\"idb\",IDBFS.syncfs(e,!1,t)}e.idbPersistState?e.idbPersistState===\"idb\"&&(e.idbPersistState=\"again\"):e.idbPersistState=setTimeout(r,0)},mount:e=>{var t=MEMFS.mount(e);if(e?.opts?.autoPersist){t.idbPersistState=0;var r=t.node_ops;t.node_ops=Object.assign({},t.node_ops),t.node_ops.mknod=(a,o,s,n)=>{var _=r.mknod(a,o,s,n);return _.node_ops=t.node_ops,_.idbfs_mount=t.mount,_.memfs_stream_ops=_.stream_ops,_.stream_ops=Object.assign({},_.stream_ops),_.stream_ops.write=(l,p,m,d,g,u)=>(l.node.isModified=!0,_.memfs_stream_ops.write(l,p,m,d,g,u)),_.stream_ops.close=l=>{var p=l.node;if(p.isModified&&(IDBFS.queuePersist(p.idbfs_mount),p.isModified=!1),p.memfs_stream_ops.close)return p.memfs_stream_ops.close(l)},_},t.node_ops.mkdir=(...a)=>(IDBFS.queuePersist(t.mount),r.mkdir(...a)),t.node_ops.rmdir=(...a)=>(IDBFS.queuePersist(t.mount),r.rmdir(...a)),t.node_ops.symlink=(...a)=>(IDBFS.queuePersist(t.mount),r.symlink(...a)),t.node_ops.unlink=(...a)=>(IDBFS.queuePersist(t.mount),r.unlink(...a)),t.node_ops.rename=(...a)=>(IDBFS.queuePersist(t.mount),r.rename(...a))}return t},syncfs:(e,t,r)=>{IDBFS.getLocalSet(e,(a,o)=>{if(a)return r(a);IDBFS.getRemoteSet(e,(s,n)=>{if(s)return r(s);var _=t?n:o,l=t?o:n;IDBFS.reconcile(_,l,r)})})},quit:()=>{Object.values(IDBFS.dbs).forEach(e=>e.close()),IDBFS.dbs={}},getDB:(e,t)=>{var r=IDBFS.dbs[e];if(r)return t(null,r);var a;try{a=IDBFS.indexedDB().open(e,IDBFS.DB_VERSION)}catch(o){return t(o)}if(!a)return t(\"Unable to connect to IndexedDB\");a.onupgradeneeded=o=>{var s=o.target.result,n=o.target.transaction,_;s.objectStoreNames.contains(IDBFS.DB_STORE_NAME)?_=n.objectStore(IDBFS.DB_STORE_NAME):_=s.createObjectStore(IDBFS.DB_STORE_NAME),_.indexNames.contains(\"timestamp\")||_.createIndex(\"timestamp\",\"timestamp\",{unique:!1})},a.onsuccess=()=>{r=a.result,IDBFS.dbs[e]=r,t(null,r)},a.onerror=o=>{t(o.target.error),o.preventDefault()}},getLocalSet:(e,t)=>{var r={};function a(l){return l!==\".\"&&l!==\"..\"}function o(l){return p=>PATH.join2(l,p)}for(var s=FS.readdir(e.mountpoint).filter(a).map(o(e.mountpoint));s.length;){var n=s.pop(),_;try{_=FS.stat(n)}catch(l){return t(l)}FS.isDir(_.mode)&&s.push(...FS.readdir(n).filter(a).map(o(n))),r[n]={timestamp:_.mtime}}return t(null,{type:\"local\",entries:r})},getRemoteSet:(e,t)=>{var r={};IDBFS.getDB(e.mountpoint,(a,o)=>{if(a)return t(a);try{var s=o.transaction([IDBFS.DB_STORE_NAME],\"readonly\");s.onerror=l=>{t(l.target.error),l.preventDefault()};var n=s.objectStore(IDBFS.DB_STORE_NAME),_=n.index(\"timestamp\");_.openKeyCursor().onsuccess=l=>{var p=l.target.result;if(!p)return t(null,{type:\"remote\",db:o,entries:r});r[p.primaryKey]={timestamp:p.key},p.continue()}}catch(l){return t(l)}})},loadLocalEntry:(e,t)=>{var r,a;try{var o=FS.lookupPath(e);a=o.node,r=FS.stat(e)}catch(s){return t(s)}return FS.isDir(r.mode)?t(null,{timestamp:r.mtime,mode:r.mode}):FS.isFile(r.mode)?(a.contents=MEMFS.getFileDataAsTypedArray(a),t(null,{timestamp:r.mtime,mode:r.mode,contents:a.contents})):t(new Error(\"node type not supported\"))},storeLocalEntry:(e,t,r)=>{try{if(FS.isDir(t.mode))FS.mkdirTree(e,t.mode);else if(FS.isFile(t.mode))FS.writeFile(e,t.contents,{canOwn:!0});else return r(new Error(\"node type not supported\"));FS.chmod(e,t.mode),FS.utime(e,t.timestamp,t.timestamp)}catch(a){return r(a)}r(null)},removeLocalEntry:(e,t)=>{try{var r=FS.stat(e);FS.isDir(r.mode)?FS.rmdir(e):FS.isFile(r.mode)&&FS.unlink(e)}catch(a){return t(a)}t(null)},loadRemoteEntry:(e,t,r)=>{var a=e.get(t);a.onsuccess=o=>r(null,o.target.result),a.onerror=o=>{r(o.target.error),o.preventDefault()}},storeRemoteEntry:(e,t,r,a)=>{try{var o=e.put(r,t)}catch(s){a(s);return}o.onsuccess=s=>a(),o.onerror=s=>{a(s.target.error),s.preventDefault()}},removeRemoteEntry:(e,t,r)=>{var a=e.delete(t);a.onsuccess=o=>r(),a.onerror=o=>{r(o.target.error),o.preventDefault()}},reconcile:(e,t,r)=>{var a=0,o=[];Object.keys(e.entries).forEach(d=>{var g=e.entries[d],u=t.entries[d];(!u||g.timestamp.getTime()!=u.timestamp.getTime())&&(o.push(d),a++)});var s=[];if(Object.keys(t.entries).forEach(d=>{e.entries[d]||(s.push(d),a++)}),!a)return r(null);var n=!1,_=e.type===\"remote\"?e.db:t.db,l=_.transaction([IDBFS.DB_STORE_NAME],\"readwrite\"),p=l.objectStore(IDBFS.DB_STORE_NAME);function m(d){if(d&&!n)return n=!0,r(d)}l.onerror=l.onabort=d=>{m(d.target.error),d.preventDefault()},l.oncomplete=d=>{n||r(null)},o.sort().forEach(d=>{t.type===\"local\"?IDBFS.loadRemoteEntry(p,d,(g,u)=>{if(g)return m(g);IDBFS.storeLocalEntry(d,u,m)}):IDBFS.loadLocalEntry(d,(g,u)=>{if(g)return m(g);IDBFS.storeRemoteEntry(p,d,u,m)})}),s.sort().reverse().forEach(d=>{t.type===\"local\"?IDBFS.removeLocalEntry(d,m):IDBFS.removeRemoteEntry(p,d,m)})}},ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},NODEFS={isWindows:!1,staticInit(){NODEFS.isWindows=!!process.platform.match(/^win/);var e=process.binding(\"constants\");e.fs&&(e=e.fs),NODEFS.flagsForNodeMap={1024:e.O_APPEND,64:e.O_CREAT,128:e.O_EXCL,256:e.O_NOCTTY,0:e.O_RDONLY,2:e.O_RDWR,4096:e.O_SYNC,512:e.O_TRUNC,1:e.O_WRONLY,131072:e.O_NOFOLLOW}},convertNodeCode(e){var t=e.code;return ERRNO_CODES[t]},tryFSOperation(e){try{return e()}catch(t){throw t.code?t.code===\"UNKNOWN\"?new FS.ErrnoError(28):new FS.ErrnoError(NODEFS.convertNodeCode(t)):t}},mount(e){return NODEFS.createNode(null,\"/\",NODEFS.getMode(e.opts.root),0)},createNode(e,t,r,a){if(!FS.isDir(r)&&!FS.isFile(r)&&!FS.isLink(r))throw new FS.ErrnoError(28);var o=FS.createNode(e,t,r);return o.node_ops=NODEFS.node_ops,o.stream_ops=NODEFS.stream_ops,o},getMode(e){return NODEFS.tryFSOperation(()=>{var t=fs.lstatSync(e).mode;return NODEFS.isWindows&&(t|=(t&292)>>2),t})},realPath(e){for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.mount.opts.root),t.reverse(),PATH.join(...t)},flagsForNode(e){e&=-2097153,e&=-2049,e&=-32769,e&=-524289,e&=-65537;var t=0;for(var r in NODEFS.flagsForNodeMap)e&r&&(t|=NODEFS.flagsForNodeMap[r],e^=r);if(e)throw new FS.ErrnoError(28);return t},node_ops:{getattr(e){var t=NODEFS.realPath(e),r;return NODEFS.tryFSOperation(()=>r=fs.lstatSync(t)),NODEFS.isWindows&&(r.blksize||(r.blksize=4096),r.blocks||(r.blocks=(r.size+r.blksize-1)/r.blksize|0),r.mode|=(r.mode&292)>>2),{dev:r.dev,ino:r.ino,mode:r.mode,nlink:r.nlink,uid:r.uid,gid:r.gid,rdev:r.rdev,size:r.size,atime:r.atime,mtime:r.mtime,ctime:r.ctime,blksize:r.blksize,blocks:r.blocks}},setattr(e,t){var r=NODEFS.realPath(e);NODEFS.tryFSOperation(()=>{if(t.mode!==void 0){var a=t.mode;NODEFS.isWindows&&(a&=384),fs.chmodSync(r,a),e.mode=t.mode}if(t.atime||t.mtime){var o=t.atime&&new Date(t.atime),s=t.mtime&&new Date(t.mtime);fs.utimesSync(r,o,s)}t.size!==void 0&&fs.truncateSync(r,t.size)})},lookup(e,t){var r=PATH.join2(NODEFS.realPath(e),t),a=NODEFS.getMode(r);return NODEFS.createNode(e,t,a)},mknod(e,t,r,a){var o=NODEFS.createNode(e,t,r,a),s=NODEFS.realPath(o);return NODEFS.tryFSOperation(()=>{FS.isDir(o.mode)?fs.mkdirSync(s,o.mode):fs.writeFileSync(s,\"\",{mode:o.mode})}),o},rename(e,t,r){var a=NODEFS.realPath(e),o=PATH.join2(NODEFS.realPath(t),r);try{FS.unlink(o)}catch{}NODEFS.tryFSOperation(()=>fs.renameSync(a,o)),e.name=r},unlink(e,t){var r=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.unlinkSync(r))},rmdir(e,t){var r=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.rmdirSync(r))},readdir(e){var t=NODEFS.realPath(e);return NODEFS.tryFSOperation(()=>fs.readdirSync(t))},symlink(e,t,r){var a=PATH.join2(NODEFS.realPath(e),t);NODEFS.tryFSOperation(()=>fs.symlinkSync(r,a))},readlink(e){var t=NODEFS.realPath(e);return NODEFS.tryFSOperation(()=>fs.readlinkSync(t))},statfs(e){var t=NODEFS.tryFSOperation(()=>fs.statfsSync(e));return t.frsize=t.bsize,t}},stream_ops:{open(e){var t=NODEFS.realPath(e.node);NODEFS.tryFSOperation(()=>{FS.isFile(e.node.mode)&&(e.shared.refcount=1,e.nfd=fs.openSync(t,NODEFS.flagsForNode(e.flags)))})},close(e){NODEFS.tryFSOperation(()=>{FS.isFile(e.node.mode)&&e.nfd&&--e.shared.refcount===0&&fs.closeSync(e.nfd)})},dup(e){e.shared.refcount++},read(e,t,r,a,o){return a===0?0:NODEFS.tryFSOperation(()=>fs.readSync(e.nfd,new Int8Array(t.buffer,r,a),0,a,o))},write(e,t,r,a,o){return NODEFS.tryFSOperation(()=>fs.writeSync(e.nfd,new Int8Array(t.buffer,r,a),0,a,o))},llseek(e,t,r){var a=t;if(r===1?a+=e.position:r===2&&FS.isFile(e.node.mode)&&NODEFS.tryFSOperation(()=>{var o=fs.fstatSync(e.nfd);a+=o.size}),a<0)throw new FS.ErrnoError(28);return a},mmap(e,t,r,a,o){if(!FS.isFile(e.node.mode))throw new FS.ErrnoError(43);var s=mmapAlloc(t);return NODEFS.stream_ops.read(e,HEAP8,s,t,r),{ptr:s,allocated:!0}},msync(e,t,r,a,o){return NODEFS.stream_ops.write(e,t,0,a,r,!1),0}}},FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(e){z(this,\"name\",\"ErrnoError\");this.errno=e}},filesystems:null,syncFSRequests:0,readFiles:{},FSStream:class{constructor(){z(this,\"shared\",{})}get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{constructor(e,t,r,a){z(this,\"node_ops\",{});z(this,\"stream_ops\",{});z(this,\"readMode\",365);z(this,\"writeMode\",146);z(this,\"mounted\",null);e||(e=this),this.parent=e,this.mount=e.mount,this.id=FS.nextInode++,this.name=t,this.mode=r,this.rdev=a,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(e,t={}){if(!e)return{path:\"\",node:null};t.follow_mount??(t.follow_mount=!0),PATH.isAbs(e)||(e=FS.cwd()+\"/\"+e);e:for(var r=0;r<40;r++){for(var a=e.split(\"/\").filter(p=>!!p&&p!==\".\"),o=FS.root,s=\"/\",n=0;n<a.length;n++){var _=n===a.length-1;if(_&&t.parent)break;if(a[n]===\"..\"){s=PATH.dirname(s),o=o.parent;continue}s=PATH.join2(s,a[n]);try{o=FS.lookupNode(o,a[n])}catch(p){if(p?.errno===44&&_&&t.noent_okay)return{path:s};throw p}if(FS.isMountpoint(o)&&(!_||t.follow_mount)&&(o=o.mounted.root),FS.isLink(o.mode)&&(!_||t.follow)){if(!o.node_ops.readlink)throw new FS.ErrnoError(52);var l=o.node_ops.readlink(o);PATH.isAbs(l)||(l=PATH.dirname(s)+\"/\"+l),e=l+\"/\"+a.slice(n+1).join(\"/\");continue e}}return{path:s,node:o}}throw new FS.ErrnoError(32)},getPath(e){for(var t;;){if(FS.isRoot(e)){var r=e.mount.mountpoint;return t?r[r.length-1]!==\"/\"?`${r}/${t}`:r+t:r}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var r=0,a=0;a<t.length;a++)r=(r<<5)-r+t.charCodeAt(a)|0;return(e+r>>>0)%FS.nameTable.length},hashAddNode(e){var t=FS.hashName(e.parent.id,e.name);e.name_next=FS.nameTable[t],FS.nameTable[t]=e},hashRemoveNode(e){var t=FS.hashName(e.parent.id,e.name);if(FS.nameTable[t]===e)FS.nameTable[t]=e.name_next;else for(var r=FS.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode(e,t){var r=FS.mayLookup(e);if(r)throw new FS.ErrnoError(r);for(var a=FS.hashName(e.id,t),o=FS.nameTable[a];o;o=o.name_next){var s=o.name;if(o.parent.id===e.id&&s===t)return o}return FS.lookup(e,t)},createNode(e,t,r,a){var o=new FS.FSNode(e,t,r,a);return FS.hashAddNode(o),o},destroyNode(e){FS.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var t=[\"r\",\"w\",\"rw\"][e&3];return e&512&&(t+=\"w\"),t},nodePermissions(e,t){return FS.ignorePermissions?0:t.includes(\"r\")&&!(e.mode&292)||t.includes(\"w\")&&!(e.mode&146)||t.includes(\"x\")&&!(e.mode&73)?2:0},mayLookup(e){if(!FS.isDir(e.mode))return 54;var t=FS.nodePermissions(e,\"x\");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){if(!FS.isDir(e.mode))return 54;try{var r=FS.lookupNode(e,t);return 20}catch{}return FS.nodePermissions(e,\"wx\")},mayDelete(e,t,r){var a;try{a=FS.lookupNode(e,t)}catch(s){return s.errno}var o=FS.nodePermissions(e,\"wx\");if(o)return o;if(r){if(!FS.isDir(a.mode))return 54;if(FS.isRoot(a)||FS.getPath(a)===FS.cwd())return 10}else if(FS.isDir(a.mode))return 31;return 0},mayOpen(e,t){return e?FS.isLink(e.mode)?32:FS.isDir(e.mode)&&(FS.flagsToPermissionString(t)!==\"r\"||t&512)?31:FS.nodePermissions(e,FS.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=FS.MAX_OPEN_FDS;e++)if(!FS.streams[e])return e;throw new FS.ErrnoError(33)},getStreamChecked(e){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(8);return t},getStream:e=>FS.streams[e],createStream(e,t=-1){return e=Object.assign(new FS.FSStream,e),t==-1&&(t=FS.nextfd()),e.fd=t,FS.streams[t]=e,e},closeStream(e){FS.streams[e]=null},dupStream(e,t=-1){var r=FS.createStream(e,t);return r.stream_ops?.dup?.(r),r},chrdev_stream_ops:{open(e){var t=FS.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new FS.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){FS.devices[e]={stream_ops:t}},getDevice:e=>FS.devices[e],getMounts(e){for(var t=[],r=[e];r.length;){var a=r.pop();t.push(a),r.push(...a.mounts)}return t},syncfs(e,t){typeof e==\"function\"&&(t=e,e=!1),FS.syncFSRequests++,FS.syncFSRequests>1&&err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var r=FS.getMounts(FS.root.mount),a=0;function o(n){return FS.syncFSRequests--,t(n)}function s(n){if(n)return s.errored?void 0:(s.errored=!0,o(n));++a>=r.length&&o(null)}r.forEach(n=>{if(!n.type.syncfs)return s(null);n.type.syncfs(n,e,s)})},mount(e,t,r){var a=r===\"/\",o=!r,s;if(a&&FS.root)throw new FS.ErrnoError(10);if(!a&&!o){var n=FS.lookupPath(r,{follow_mount:!1});if(r=n.path,s=n.node,FS.isMountpoint(s))throw new FS.ErrnoError(10);if(!FS.isDir(s.mode))throw new FS.ErrnoError(54)}var _={type:e,opts:t,mountpoint:r,mounts:[]},l=e.mount(_);return l.mount=_,_.root=l,a?FS.root=l:s&&(s.mounted=_,s.mount&&s.mount.mounts.push(_)),l},unmount(e){var t=FS.lookupPath(e,{follow_mount:!1});if(!FS.isMountpoint(t.node))throw new FS.ErrnoError(28);var r=t.node,a=r.mounted,o=FS.getMounts(a);Object.keys(FS.nameTable).forEach(n=>{for(var _=FS.nameTable[n];_;){var l=_.name_next;o.includes(_.mount)&&FS.destroyNode(_),_=l}}),r.mounted=null;var s=r.mount.mounts.indexOf(a);r.mount.mounts.splice(s,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,r){var a=FS.lookupPath(e,{parent:!0}),o=a.node,s=PATH.basename(e);if(!s||s===\".\"||s===\"..\")throw new FS.ErrnoError(28);var n=FS.mayCreate(o,s);if(n)throw new FS.ErrnoError(n);if(!o.node_ops.mknod)throw new FS.ErrnoError(63);return o.node_ops.mknod(o,s,t,r)},statfs(e){var t={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:FS.nextInode,ffree:FS.nextInode-1,fsid:42,flags:2,namelen:255},r=FS.lookupPath(e,{follow:!0}).node;return r?.node_ops.statfs&&Object.assign(t,r.node_ops.statfs(r.mount.opts.root)),t},create(e,t=438){return t&=4095,t|=32768,FS.mknod(e,t,0)},mkdir(e,t=511){return t&=1023,t|=16384,FS.mknod(e,t,0)},mkdirTree(e,t){for(var r=e.split(\"/\"),a=\"\",o=0;o<r.length;++o)if(r[o]){a+=\"/\"+r[o];try{FS.mkdir(a,t)}catch(s){if(s.errno!=20)throw s}}},mkdev(e,t,r){return typeof r>\"u\"&&(r=t,t=438),t|=8192,FS.mknod(e,t,r)},symlink(e,t){if(!PATH_FS.resolve(e))throw new FS.ErrnoError(44);var r=FS.lookupPath(t,{parent:!0}),a=r.node;if(!a)throw new FS.ErrnoError(44);var o=PATH.basename(t),s=FS.mayCreate(a,o);if(s)throw new FS.ErrnoError(s);if(!a.node_ops.symlink)throw new FS.ErrnoError(63);return a.node_ops.symlink(a,o,e)},rename(e,t){var r=PATH.dirname(e),a=PATH.dirname(t),o=PATH.basename(e),s=PATH.basename(t),n,_,l;if(n=FS.lookupPath(e,{parent:!0}),_=n.node,n=FS.lookupPath(t,{parent:!0}),l=n.node,!_||!l)throw new FS.ErrnoError(44);if(_.mount!==l.mount)throw new FS.ErrnoError(75);var p=FS.lookupNode(_,o),m=PATH_FS.relative(e,a);if(m.charAt(0)!==\".\")throw new FS.ErrnoError(28);if(m=PATH_FS.relative(t,r),m.charAt(0)!==\".\")throw new FS.ErrnoError(55);var d;try{d=FS.lookupNode(l,s)}catch{}if(p!==d){var g=FS.isDir(p.mode),u=FS.mayDelete(_,o,g);if(u)throw new FS.ErrnoError(u);if(u=d?FS.mayDelete(l,s,g):FS.mayCreate(l,s),u)throw new FS.ErrnoError(u);if(!_.node_ops.rename)throw new FS.ErrnoError(63);if(FS.isMountpoint(p)||d&&FS.isMountpoint(d))throw new FS.ErrnoError(10);if(l!==_&&(u=FS.nodePermissions(_,\"w\"),u))throw new FS.ErrnoError(u);FS.hashRemoveNode(p);try{_.node_ops.rename(p,l,s),p.parent=l}catch(f){throw f}finally{FS.hashAddNode(p)}}},rmdir(e){var t=FS.lookupPath(e,{parent:!0}),r=t.node,a=PATH.basename(e),o=FS.lookupNode(r,a),s=FS.mayDelete(r,a,!0);if(s)throw new FS.ErrnoError(s);if(!r.node_ops.rmdir)throw new FS.ErrnoError(63);if(FS.isMountpoint(o))throw new FS.ErrnoError(10);r.node_ops.rmdir(r,a),FS.destroyNode(o)},readdir(e){var t=FS.lookupPath(e,{follow:!0}),r=t.node;if(!r.node_ops.readdir)throw new FS.ErrnoError(54);return r.node_ops.readdir(r)},unlink(e){var t=FS.lookupPath(e,{parent:!0}),r=t.node;if(!r)throw new FS.ErrnoError(44);var a=PATH.basename(e),o=FS.lookupNode(r,a),s=FS.mayDelete(r,a,!1);if(s)throw new FS.ErrnoError(s);if(!r.node_ops.unlink)throw new FS.ErrnoError(63);if(FS.isMountpoint(o))throw new FS.ErrnoError(10);r.node_ops.unlink(r,a),FS.destroyNode(o)},readlink(e){var t=FS.lookupPath(e),r=t.node;if(!r)throw new FS.ErrnoError(44);if(!r.node_ops.readlink)throw new FS.ErrnoError(28);return r.node_ops.readlink(r)},stat(e,t){var r=FS.lookupPath(e,{follow:!t}),a=r.node;if(!a)throw new FS.ErrnoError(44);if(!a.node_ops.getattr)throw new FS.ErrnoError(63);return a.node_ops.getattr(a)},lstat(e){return FS.stat(e,!0)},chmod(e,t,r){var a;if(typeof e==\"string\"){var o=FS.lookupPath(e,{follow:!r});a=o.node}else a=e;if(!a.node_ops.setattr)throw new FS.ErrnoError(63);a.node_ops.setattr(a,{mode:t&4095|a.mode&-4096,ctime:Date.now()})},lchmod(e,t){FS.chmod(e,t,!0)},fchmod(e,t){var r=FS.getStreamChecked(e);FS.chmod(r.node,t)},chown(e,t,r,a){var o;if(typeof e==\"string\"){var s=FS.lookupPath(e,{follow:!a});o=s.node}else o=e;if(!o.node_ops.setattr)throw new FS.ErrnoError(63);o.node_ops.setattr(o,{timestamp:Date.now()})},lchown(e,t,r){FS.chown(e,t,r,!0)},fchown(e,t,r){var a=FS.getStreamChecked(e);FS.chown(a.node,t,r)},truncate(e,t){if(t<0)throw new FS.ErrnoError(28);var r;if(typeof e==\"string\"){var a=FS.lookupPath(e,{follow:!0});r=a.node}else r=e;if(!r.node_ops.setattr)throw new FS.ErrnoError(63);if(FS.isDir(r.mode))throw new FS.ErrnoError(31);if(!FS.isFile(r.mode))throw new FS.ErrnoError(28);var o=FS.nodePermissions(r,\"w\");if(o)throw new FS.ErrnoError(o);r.node_ops.setattr(r,{size:t,timestamp:Date.now()})},ftruncate(e,t){var r=FS.getStreamChecked(e);if(!(r.flags&2097155))throw new FS.ErrnoError(28);FS.truncate(r.node,t)},utime(e,t,r){var a=FS.lookupPath(e,{follow:!0}),o=a.node;o.node_ops.setattr(o,{atime:t,mtime:r})},open(e,t,r=438){if(e===\"\")throw new FS.ErrnoError(44);t=typeof t==\"string\"?FS_modeStringToFlags(t):t,t&64?r=r&4095|32768:r=0;var a;if(typeof e==\"object\")a=e;else{var o=FS.lookupPath(e,{follow:!(t&131072),noent_okay:!0});a=o.node,e=o.path}var s=!1;if(t&64)if(a){if(t&128)throw new FS.ErrnoError(20)}else a=FS.mknod(e,r,0),s=!0;if(!a)throw new FS.ErrnoError(44);if(FS.isChrdev(a.mode)&&(t&=-513),t&65536&&!FS.isDir(a.mode))throw new FS.ErrnoError(54);if(!s){var n=FS.mayOpen(a,t);if(n)throw new FS.ErrnoError(n)}t&512&&!s&&FS.truncate(a,0),t&=-131713;var _=FS.createStream({node:a,path:FS.getPath(a),flags:t,seekable:!0,position:0,stream_ops:a.stream_ops,ungotten:[],error:!1});return _.stream_ops.open&&_.stream_ops.open(_),Module.logReadFiles&&!(t&1)&&(e in FS.readFiles||(FS.readFiles[e]=1)),_},close(e){if(FS.isClosed(e))throw new FS.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(t){throw t}finally{FS.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,t,r){if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new FS.ErrnoError(70);if(r!=0&&r!=1&&r!=2)throw new FS.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,r),e.ungotten=[],e.position},read(e,t,r,a,o){if(a<0||o<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if((e.flags&2097155)===1)throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.read)throw new FS.ErrnoError(28);var s=typeof o<\"u\";if(!s)o=e.position;else if(!e.seekable)throw new FS.ErrnoError(70);var n=e.stream_ops.read(e,t,r,a,o);return s||(e.position+=n),n},write(e,t,r,a,o,s){if(a<0||o<0)throw new FS.ErrnoError(28);if(FS.isClosed(e))throw new FS.ErrnoError(8);if(!(e.flags&2097155))throw new FS.ErrnoError(8);if(FS.isDir(e.node.mode))throw new FS.ErrnoError(31);if(!e.stream_ops.write)throw new FS.ErrnoError(28);e.seekable&&e.flags&1024&&FS.llseek(e,0,2);var n=typeof o<\"u\";if(!n)o=e.position;else if(!e.seekable)throw new FS.ErrnoError(70);var _=e.stream_ops.write(e,t,r,a,o,s);return n||(e.position+=_),_},allocate(e,t,r){if(FS.isClosed(e))throw new FS.ErrnoError(8);if(t<0||r<=0)throw new FS.ErrnoError(28);if(!(e.flags&2097155))throw new FS.ErrnoError(8);if(!FS.isFile(e.node.mode)&&!FS.isDir(e.node.mode))throw new FS.ErrnoError(43);if(!e.stream_ops.allocate)throw new FS.ErrnoError(138);e.stream_ops.allocate(e,t,r)},mmap(e,t,r,a,o){if(a&2&&!(o&2)&&(e.flags&2097155)!==2)throw new FS.ErrnoError(2);if((e.flags&2097155)===1)throw new FS.ErrnoError(2);if(!e.stream_ops.mmap)throw new FS.ErrnoError(43);if(!t)throw new FS.ErrnoError(28);return e.stream_ops.mmap(e,t,r,a,o)},msync(e,t,r,a,o){return e.stream_ops.msync?e.stream_ops.msync(e,t,r,a,o):0},ioctl(e,t,r){if(!e.stream_ops.ioctl)throw new FS.ErrnoError(59);return e.stream_ops.ioctl(e,t,r)},readFile(e,t={}){if(t.flags=t.flags||0,t.encoding=t.encoding||\"binary\",t.encoding!==\"utf8\"&&t.encoding!==\"binary\")throw new Error(`Invalid encoding type \"${t.encoding}\"`);var r,a=FS.open(e,t.flags),o=FS.stat(e),s=o.size,n=new Uint8Array(s);return FS.read(a,n,0,s,0),t.encoding===\"utf8\"?r=UTF8ArrayToString(n):t.encoding===\"binary\"&&(r=n),FS.close(a),r},writeFile(e,t,r={}){r.flags=r.flags||577;var a=FS.open(e,r.flags,r.mode);if(typeof t==\"string\"){var o=new Uint8Array(lengthBytesUTF8(t)+1),s=stringToUTF8Array(t,o,0,o.length);FS.write(a,o,0,s,void 0,r.canOwn)}else if(ArrayBuffer.isView(t))FS.write(a,t,0,t.byteLength,void 0,r.canOwn);else throw new Error(\"Unsupported data type\");FS.close(a)},cwd:()=>FS.currentPath,chdir(e){var t=FS.lookupPath(e,{follow:!0});if(t.node===null)throw new FS.ErrnoError(44);if(!FS.isDir(t.node.mode))throw new FS.ErrnoError(54);var r=FS.nodePermissions(t.node,\"x\");if(r)throw new FS.ErrnoError(r);FS.currentPath=t.path},createDefaultDirectories(){FS.mkdir(\"/tmp\"),FS.mkdir(\"/home\"),FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\"),FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(a,o,s,n,_)=>n,llseek:()=>0}),FS.mkdev(\"/dev/null\",FS.makedev(1,3)),TTY.register(FS.makedev(5,0),TTY.default_tty_ops),TTY.register(FS.makedev(6,0),TTY.default_tty1_ops),FS.mkdev(\"/dev/tty\",FS.makedev(5,0)),FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var e=new Uint8Array(1024),t=0,r=()=>(t===0&&(t=randomFill(e).byteLength),e[--t]);FS.createDevice(\"/dev\",\"random\",r),FS.createDevice(\"/dev\",\"urandom\",r),FS.mkdir(\"/dev/shm\"),FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var e=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\"),FS.mount({mount(){var t=FS.createNode(e,\"fd\",16895,73);return t.stream_ops={llseek:MEMFS.stream_ops.llseek},t.node_ops={lookup(r,a){var o=+a,s=FS.getStreamChecked(o),n={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>s.path},id:o+1};return n.parent=n,n},readdir(){return Array.from(FS.streams.entries()).filter(([r,a])=>a).map(([r,a])=>r.toString())}},t}},{},\"/proc/self/fd\")},createStandardStreams(e,t,r){e?FS.createDevice(\"/dev\",\"stdin\",e):FS.symlink(\"/dev/tty\",\"/dev/stdin\"),t?FS.createDevice(\"/dev\",\"stdout\",null,t):FS.symlink(\"/dev/tty\",\"/dev/stdout\"),r?FS.createDevice(\"/dev\",\"stderr\",null,r):FS.symlink(\"/dev/tty1\",\"/dev/stderr\");var a=FS.open(\"/dev/stdin\",0),o=FS.open(\"/dev/stdout\",1),s=FS.open(\"/dev/stderr\",1)},staticInit(){FS.nameTable=new Array(4096),FS.mount(MEMFS,{},\"/\"),FS.createDefaultDirectories(),FS.createDefaultDevices(),FS.createSpecialDirectories(),FS.filesystems={MEMFS,IDBFS,NODEFS}},init(e,t,r){FS.initialized=!0,e??(e=Module.stdin),t??(t=Module.stdout),r??(r=Module.stderr),FS.createStandardStreams(e,t,r)},quit(){FS.initialized=!1,_fflush(0);for(var e=0;e<FS.streams.length;e++){var t=FS.streams[e];t&&FS.close(t)}},findObject(e,t){var r=FS.analyzePath(e,t);return r.exists?r.object:null},analyzePath(e,t){try{var r=FS.lookupPath(e,{follow:!t});e=r.path}catch{}var a={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var r=FS.lookupPath(e,{parent:!0});a.parentExists=!0,a.parentPath=r.path,a.parentObject=r.node,a.name=PATH.basename(e),r=FS.lookupPath(e,{follow:!t}),a.exists=!0,a.path=r.path,a.object=r.node,a.name=r.node.name,a.isRoot=r.path===\"/\"}catch(o){a.error=o.errno}return a},createPath(e,t,r,a){e=typeof e==\"string\"?e:FS.getPath(e);for(var o=t.split(\"/\").reverse();o.length;){var s=o.pop();if(s){var n=PATH.join2(e,s);try{FS.mkdir(n)}catch{}e=n}}return n},createFile(e,t,r,a,o){var s=PATH.join2(typeof e==\"string\"?e:FS.getPath(e),t),n=FS_getMode(a,o);return FS.create(s,n)},createDataFile(e,t,r,a,o,s){var n=t;e&&(e=typeof e==\"string\"?e:FS.getPath(e),n=t?PATH.join2(e,t):e);var _=FS_getMode(a,o),l=FS.create(n,_);if(r){if(typeof r==\"string\"){for(var p=new Array(r.length),m=0,d=r.length;m<d;++m)p[m]=r.charCodeAt(m);r=p}FS.chmod(l,_|146);var g=FS.open(l,577);FS.write(g,r,0,r.length,0,s),FS.close(g),FS.chmod(l,_)}},createDevice(e,t,r,a){var _;var o=PATH.join2(typeof e==\"string\"?e:FS.getPath(e),t),s=FS_getMode(!!r,!!a);(_=FS.createDevice).major??(_.major=64);var n=FS.makedev(FS.createDevice.major++,0);return FS.registerDevice(n,{open(l){l.seekable=!1},close(l){a?.buffer?.length&&a(10)},read(l,p,m,d,g){for(var u=0,f=0;f<d;f++){var c;try{c=r()}catch{throw new FS.ErrnoError(29)}if(c===void 0&&u===0)throw new FS.ErrnoError(6);if(c==null)break;u++,p[m+f]=c}return u&&(l.node.atime=Date.now()),u},write(l,p,m,d,g){for(var u=0;u<d;u++)try{a(p[m+u])}catch{throw new FS.ErrnoError(29)}return d&&(l.node.mtime=l.node.ctime=Date.now()),u}}),FS.mkdev(o,s,n)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(typeof XMLHttpRequest<\"u\")throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\");try{e.contents=readBinary(e.url),e.usedBytes=e.contents.length}catch{throw new FS.ErrnoError(29)}},createLazyFile(e,t,r,a,o){class s{constructor(){z(this,\"lengthKnown\",!1);z(this,\"chunks\",[])}get(u){if(!(u>this.length-1||u<0)){var f=u%this.chunkSize,c=u/this.chunkSize|0;return this.getter(c)[f]}}setDataGetter(u){this.getter=u}cacheLength(){var u=new XMLHttpRequest;if(u.open(\"HEAD\",r,!1),u.send(null),!(u.status>=200&&u.status<300||u.status===304))throw new Error(\"Couldn't load \"+r+\". Status: \"+u.status);var f=Number(u.getResponseHeader(\"Content-length\")),c,w=(c=u.getResponseHeader(\"Accept-Ranges\"))&&c===\"bytes\",x=(c=u.getResponseHeader(\"Content-Encoding\"))&&c===\"gzip\",S=1024*1024;w||(S=f);var v=(M,y)=>{if(M>y)throw new Error(\"invalid range (\"+M+\", \"+y+\") or no bytes requested!\");if(y>f-1)throw new Error(\"only \"+f+\" bytes available! programmer error!\");var F=new XMLHttpRequest;if(F.open(\"GET\",r,!1),f!==S&&F.setRequestHeader(\"Range\",\"bytes=\"+M+\"-\"+y),F.responseType=\"arraybuffer\",F.overrideMimeType&&F.overrideMimeType(\"text/plain; charset=x-user-defined\"),F.send(null),!(F.status>=200&&F.status<300||F.status===304))throw new Error(\"Couldn't load \"+r+\". Status: \"+F.status);return F.response!==void 0?new Uint8Array(F.response||[]):intArrayFromString(F.responseText||\"\",!0)},b=this;b.setDataGetter(M=>{var y=M*S,F=(M+1)*S-1;if(F=Math.min(F,f-1),typeof b.chunks[M]>\"u\"&&(b.chunks[M]=v(y,F)),typeof b.chunks[M]>\"u\")throw new Error(\"doXHR failed!\");return b.chunks[M]}),(x||!f)&&(S=f=1,f=this.getter(0).length,S=f,out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")),this._length=f,this._chunkSize=S,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<\"u\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var n=new s,_={isDevice:!1,contents:n}}else var _={isDevice:!1,url:r};var l=FS.createFile(e,t,_,a,o);_.contents?l.contents=_.contents:_.url&&(l.contents=null,l.url=_.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var p={},m=Object.keys(l.stream_ops);m.forEach(g=>{var u=l.stream_ops[g];p[g]=(...f)=>(FS.forceLoadFile(l),u(...f))});function d(g,u,f,c,w){var x=g.node.contents;if(w>=x.length)return 0;var S=Math.min(x.length-w,c);if(x.slice)for(var v=0;v<S;v++)u[f+v]=x[w+v];else for(var v=0;v<S;v++)u[f+v]=x.get(w+v);return S}return p.read=(g,u,f,c,w)=>(FS.forceLoadFile(l),d(g,u,f,c,w)),p.mmap=(g,u,f,c,w)=>{FS.forceLoadFile(l);var x=mmapAlloc(u);if(!x)throw new FS.ErrnoError(48);return d(g,HEAP8,x,u,f),{ptr:x,allocated:!0}},l.stream_ops=p,l}},SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(e,t,r){if(PATH.isAbs(t))return t;var a;if(e===-100)a=FS.cwd();else{var o=SYSCALLS.getStreamFromFD(e);a=o.path}if(t.length==0){if(!r)throw new FS.ErrnoError(44);return a}return a+\"/\"+t},doStat(e,t,r){var a=e(t);HEAP32[r>>2]=a.dev,HEAP32[r+4>>2]=a.mode,HEAPU32[r+8>>2]=a.nlink,HEAP32[r+12>>2]=a.uid,HEAP32[r+16>>2]=a.gid,HEAP32[r+20>>2]=a.rdev,HEAP64[r+24>>3]=BigInt(a.size),HEAP32[r+32>>2]=4096,HEAP32[r+36>>2]=a.blocks;var o=a.atime.getTime(),s=a.mtime.getTime(),n=a.ctime.getTime();return HEAP64[r+40>>3]=BigInt(Math.floor(o/1e3)),HEAPU32[r+48>>2]=o%1e3*1e3*1e3,HEAP64[r+56>>3]=BigInt(Math.floor(s/1e3)),HEAPU32[r+64>>2]=s%1e3*1e3*1e3,HEAP64[r+72>>3]=BigInt(Math.floor(n/1e3)),HEAPU32[r+80>>2]=n%1e3*1e3*1e3,HEAP64[r+88>>3]=BigInt(a.ino),0},doMsync(e,t,r,a,o){if(!FS.isFile(t.node.mode))throw new FS.ErrnoError(43);if(a&2)return 0;var s=HEAPU8.slice(e,e+r);FS.msync(t,s,o,r,a)},getStreamFromFD(e){var t=FS.getStreamChecked(e);return t},varargs:void 0,getStr(e){var t=UTF8ToString(e);return t}},___syscall__newselect=function(e,t,r,a,o){try{for(var s=0,n=t?HEAP32[t>>2]:0,_=t?HEAP32[t+4>>2]:0,l=r?HEAP32[r>>2]:0,p=r?HEAP32[r+4>>2]:0,m=a?HEAP32[a>>2]:0,d=a?HEAP32[a+4>>2]:0,g=0,u=0,f=0,c=0,w=0,x=0,S=(t?HEAP32[t>>2]:0)|(r?HEAP32[r>>2]:0)|(a?HEAP32[a>>2]:0),v=(t?HEAP32[t+4>>2]:0)|(r?HEAP32[r+4>>2]:0)|(a?HEAP32[a+4>>2]:0),b=(H,A,D,T)=>H<32?A&T:D&T,M=0;M<e;M++){var y=1<<M%32;if(b(M,S,v,y)){var F=SYSCALLS.getStreamFromFD(M),R=SYSCALLS.DEFAULT_POLLMASK;if(F.stream_ops.poll){var U=-1;if(o){var ee=t?HEAP32[o>>2]:0,N=t?HEAP32[o+4>>2]:0;U=(ee+N/1e6)*1e3}R=F.stream_ops.poll(F,U)}R&1&&b(M,n,_,y)&&(M<32?g=g|y:u=u|y,s++),R&4&&b(M,l,p,y)&&(M<32?f=f|y:c=c|y,s++),R&2&&b(M,m,d,y)&&(M<32?w=w|y:x=x|y,s++)}}return t&&(HEAP32[t>>2]=g,HEAP32[t+4>>2]=u),r&&(HEAP32[r>>2]=f,HEAP32[r+4>>2]=c),a&&(HEAP32[a>>2]=w,HEAP32[a+4>>2]=x),s}catch(H){if(typeof FS>\"u\"||H.name!==\"ErrnoError\")throw H;return-H.errno}};___syscall__newselect.sig=\"iipppp\";var SOCKFS={websocketArgs:{},callbacks:{},on(e,t){SOCKFS.callbacks[e]=t},emit(e,t){SOCKFS.callbacks[e]?.(t)},mount(e){return SOCKFS.websocketArgs=Module.websocket||{},(Module.websocket??(Module.websocket={})).on=SOCKFS.on,FS.createNode(null,\"/\",16895,0)},createSocket(e,t,r){t&=-526337;var a=t==1;if(a&&r&&r!=6)throw new FS.ErrnoError(66);var o={family:e,type:t,protocol:r,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops},s=SOCKFS.nextname(),n=FS.createNode(SOCKFS.root,s,49152,0);n.sock=o;var _=FS.createStream({path:s,node:n,flags:2,seekable:!1,stream_ops:SOCKFS.stream_ops});return o.stream=_,o},getSocket(e){var t=FS.getStream(e);return!t||!FS.isSocket(t.node.mode)?null:t.node.sock},stream_ops:{poll(e){var t=e.node.sock;return t.sock_ops.poll(t)},ioctl(e,t,r){var a=e.node.sock;return a.sock_ops.ioctl(a,t,r)},read(e,t,r,a,o){var s=e.node.sock,n=s.sock_ops.recvmsg(s,a);return n?(t.set(n.buffer,r),n.buffer.length):0},write(e,t,r,a,o){var s=e.node.sock;return s.sock_ops.sendmsg(s,t,r,a)},close(e){var t=e.node.sock;t.sock_ops.close(t)}},nextname(){return SOCKFS.nextname.current||(SOCKFS.nextname.current=0),`socket[${SOCKFS.nextname.current++}]`},websocket_sock_ops:{createPeer(e,t,r){var a;if(typeof t==\"object\"&&(a=t,t=null,r=null),a)if(a._socket)t=a._socket.remoteAddress,r=a._socket.remotePort;else{var o=/ws[s]?:\\/\\/([^:]+):(\\d+)/.exec(a.url);if(!o)throw new Error(\"WebSocket URL must be in the format ws(s)://address:port\");t=o[1],r=parseInt(o[2],10)}else try{var s=\"ws:#\".replace(\"#\",\"//\"),n=\"binary\",_=void 0;if(SOCKFS.websocketArgs.url&&(s=SOCKFS.websocketArgs.url),SOCKFS.websocketArgs.subprotocol?n=SOCKFS.websocketArgs.subprotocol:SOCKFS.websocketArgs.subprotocol===null&&(n=\"null\"),s===\"ws://\"||s===\"wss://\"){var l=t.split(\"/\");s=s+l[0]+\":\"+r+\"/\"+l.slice(1).join(\"/\")}n!==\"null\"&&(n=n.replace(/^ +| +$/g,\"\").split(/ *, */),_=n);var p;ENVIRONMENT_IS_NODE?p=require(\"ws\"):p=WebSocket,a=new p(s,_),a.binaryType=\"arraybuffer\"}catch{throw new FS.ErrnoError(23)}var m={addr:t,port:r,socket:a,msg_send_queue:[]};return SOCKFS.websocket_sock_ops.addPeer(e,m),SOCKFS.websocket_sock_ops.handlePeerEvents(e,m),e.type===2&&typeof e.sport<\"u\"&&m.msg_send_queue.push(new Uint8Array([255,255,255,255,112,111,114,116,(e.sport&65280)>>8,e.sport&255])),m},getPeer(e,t,r){return e.peers[t+\":\"+r]},addPeer(e,t){e.peers[t.addr+\":\"+t.port]=t},removePeer(e,t){delete e.peers[t.addr+\":\"+t.port]},handlePeerEvents(e,t){var r=!0,a=function(){e.connecting=!1,SOCKFS.emit(\"open\",e.stream.fd);try{for(var s=t.msg_send_queue.shift();s;)t.socket.send(s),s=t.msg_send_queue.shift()}catch{t.socket.close()}};function o(s){if(typeof s==\"string\"){var n=new TextEncoder;s=n.encode(s)}else{if(assert(s.byteLength!==void 0),s.byteLength==0)return;s=new Uint8Array(s)}var _=r;if(r=!1,_&&s.length===10&&s[0]===255&&s[1]===255&&s[2]===255&&s[3]===255&&s[4]===112&&s[5]===111&&s[6]===114&&s[7]===116){var l=s[8]<<8|s[9];SOCKFS.websocket_sock_ops.removePeer(e,t),t.port=l,SOCKFS.websocket_sock_ops.addPeer(e,t);return}e.recv_queue.push({addr:t.addr,port:t.port,data:s}),SOCKFS.emit(\"message\",e.stream.fd)}ENVIRONMENT_IS_NODE?(t.socket.on(\"open\",a),t.socket.on(\"message\",function(s,n){n&&o(new Uint8Array(s).buffer)}),t.socket.on(\"close\",function(){SOCKFS.emit(\"close\",e.stream.fd)}),t.socket.on(\"error\",function(s){e.error=14,SOCKFS.emit(\"error\",[e.stream.fd,e.error,\"ECONNREFUSED: Connection refused\"])})):(t.socket.onopen=a,t.socket.onclose=function(){SOCKFS.emit(\"close\",e.stream.fd)},t.socket.onmessage=function(n){o(n.data)},t.socket.onerror=function(s){e.error=14,SOCKFS.emit(\"error\",[e.stream.fd,e.error,\"ECONNREFUSED: Connection refused\"])})},poll(e){if(e.type===1&&e.server)return e.pending.length?65:0;var t=0,r=e.type===1?SOCKFS.websocket_sock_ops.getPeer(e,e.daddr,e.dport):null;return(e.recv_queue.length||!r||r&&r.socket.readyState===r.socket.CLOSING||r&&r.socket.readyState===r.socket.CLOSED)&&(t|=65),(!r||r&&r.socket.readyState===r.socket.OPEN)&&(t|=4),(r&&r.socket.readyState===r.socket.CLOSING||r&&r.socket.readyState===r.socket.CLOSED)&&(e.connecting?t|=4:t|=16),t},ioctl(e,t,r){switch(t){case 21531:var a=0;return e.recv_queue.length&&(a=e.recv_queue[0].data.length),HEAP32[r>>2]=a,0;default:return 28}},close(e){if(e.server){try{e.server.close()}catch{}e.server=null}for(var t=Object.keys(e.peers),r=0;r<t.length;r++){var a=e.peers[t[r]];try{a.socket.close()}catch{}SOCKFS.websocket_sock_ops.removePeer(e,a)}return 0},bind(e,t,r){if(typeof e.saddr<\"u\"||typeof e.sport<\"u\")throw new FS.ErrnoError(28);if(e.saddr=t,e.sport=r,e.type===2){e.server&&(e.server.close(),e.server=null);try{e.sock_ops.listen(e,0)}catch(a){if(a.name!==\"ErrnoError\"||a.errno!==138)throw a}}},connect(e,t,r){if(e.server)throw new FS.ErrnoError(138);if(typeof e.daddr<\"u\"&&typeof e.dport<\"u\"){var a=SOCKFS.websocket_sock_ops.getPeer(e,e.daddr,e.dport);if(a)throw a.socket.readyState===a.socket.CONNECTING?new FS.ErrnoError(7):new FS.ErrnoError(30)}var o=SOCKFS.websocket_sock_ops.createPeer(e,t,r);e.daddr=o.addr,e.dport=o.port,e.connecting=!0},listen(e,t){if(!ENVIRONMENT_IS_NODE)throw new FS.ErrnoError(138);if(e.server)throw new FS.ErrnoError(28);var r=require(\"ws\").Server,a=e.saddr;e.server=new r({host:a,port:e.sport}),SOCKFS.emit(\"listen\",e.stream.fd),e.server.on(\"connection\",function(o){if(e.type===1){var s=SOCKFS.createSocket(e.family,e.type,e.protocol),n=SOCKFS.websocket_sock_ops.createPeer(s,o);s.daddr=n.addr,s.dport=n.port,e.pending.push(s),SOCKFS.emit(\"connection\",s.stream.fd)}else SOCKFS.websocket_sock_ops.createPeer(e,o),SOCKFS.emit(\"connection\",e.stream.fd)}),e.server.on(\"close\",function(){SOCKFS.emit(\"close\",e.stream.fd),e.server=null}),e.server.on(\"error\",function(o){e.error=23,SOCKFS.emit(\"error\",[e.stream.fd,e.error,\"EHOSTUNREACH: Host is unreachable\"])})},accept(e){if(!e.server||!e.pending.length)throw new FS.ErrnoError(28);var t=e.pending.shift();return t.stream.flags=e.stream.flags,t},getname(e,t){var r,a;if(t){if(e.daddr===void 0||e.dport===void 0)throw new FS.ErrnoError(53);r=e.daddr,a=e.dport}else r=e.saddr||0,a=e.sport||0;return{addr:r,port:a}},sendmsg(e,t,r,a,o,s){if(e.type===2){if((o===void 0||s===void 0)&&(o=e.daddr,s=e.dport),o===void 0||s===void 0)throw new FS.ErrnoError(17)}else o=e.daddr,s=e.dport;var n=SOCKFS.websocket_sock_ops.getPeer(e,o,s);if(e.type===1&&(!n||n.socket.readyState===n.socket.CLOSING||n.socket.readyState===n.socket.CLOSED))throw new FS.ErrnoError(53);ArrayBuffer.isView(t)&&(r+=t.byteOffset,t=t.buffer);var _=t.slice(r,r+a);if(!n||n.socket.readyState!==n.socket.OPEN)return e.type===2&&(!n||n.socket.readyState===n.socket.CLOSING||n.socket.readyState===n.socket.CLOSED)&&(n=SOCKFS.websocket_sock_ops.createPeer(e,o,s)),n.msg_send_queue.push(_),a;try{return n.socket.send(_),a}catch{throw new FS.ErrnoError(28)}},recvmsg(e,t){if(e.type===1&&e.server)throw new FS.ErrnoError(53);var r=e.recv_queue.shift();if(!r){if(e.type===1){var a=SOCKFS.websocket_sock_ops.getPeer(e,e.daddr,e.dport);if(!a)throw new FS.ErrnoError(53);if(a.socket.readyState===a.socket.CLOSING||a.socket.readyState===a.socket.CLOSED)return null;throw new FS.ErrnoError(6)}throw new FS.ErrnoError(6)}var o=r.data.byteLength||r.data.length,s=r.data.byteOffset||0,n=r.data.buffer||r.data,_=Math.min(t,o),l={buffer:new Uint8Array(n,s,_),addr:r.addr,port:r.port};if(e.type===1&&_<o){var p=o-_;r.data=new Uint8Array(n,s+_,p),e.recv_queue.unshift(r)}return l}}},getSocketFromFD=e=>{var t=SOCKFS.getSocket(e);if(!t)throw new FS.ErrnoError(8);return t},inetNtop4=e=>(e&255)+\".\"+(e>>8&255)+\".\"+(e>>16&255)+\".\"+(e>>24&255),inetNtop6=e=>{var t=\"\",r=0,a=0,o=0,s=0,n=0,_=0,l=[e[0]&65535,e[0]>>16,e[1]&65535,e[1]>>16,e[2]&65535,e[2]>>16,e[3]&65535,e[3]>>16],p=!0,m=\"\";for(_=0;_<5;_++)if(l[_]!==0){p=!1;break}if(p){if(m=inetNtop4(l[6]|l[7]<<16),l[5]===-1)return t=\"::ffff:\",t+=m,t;if(l[5]===0)return t=\"::\",m===\"0.0.0.0\"&&(m=\"\"),m===\"0.0.0.1\"&&(m=\"1\"),t+=m,t}for(r=0;r<8;r++)l[r]===0&&(r-o>1&&(n=0),o=r,n++),n>a&&(a=n,s=r-a+1);for(r=0;r<8;r++){if(a>1&&l[r]===0&&r>=s&&r<s+a){r===s&&(t+=\":\",s===0&&(t+=\":\"));continue}t+=Number(_ntohs(l[r]&65535)).toString(16),t+=r<7?\":\":\"\"}return t},readSockaddr=(e,t)=>{var r=HEAP16[e>>1],a=_ntohs(HEAPU16[e+2>>1]),o;switch(r){case 2:if(t!==16)return{errno:28};o=HEAP32[e+4>>2],o=inetNtop4(o);break;case 10:if(t!==28)return{errno:28};o=[HEAP32[e+8>>2],HEAP32[e+12>>2],HEAP32[e+16>>2],HEAP32[e+20>>2]],o=inetNtop6(o);break;default:return{errno:5}}return{family:r,addr:o,port:a}},inetPton4=e=>{for(var t=e.split(\".\"),r=0;r<4;r++){var a=Number(t[r]);if(isNaN(a))return null;t[r]=a}return(t[0]|t[1]<<8|t[2]<<16|t[3]<<24)>>>0},jstoi_q=e=>parseInt(e),inetPton6=e=>{var t,r,a,o,s=/^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i,n=[];if(!s.test(e))return null;if(e===\"::\")return[0,0,0,0,0,0,0,0];for(e.startsWith(\"::\")?e=e.replace(\"::\",\"Z:\"):e=e.replace(\"::\",\":Z:\"),e.indexOf(\".\")>0?(e=e.replace(new RegExp(\"[.]\",\"g\"),\":\"),t=e.split(\":\"),t[t.length-4]=jstoi_q(t[t.length-4])+jstoi_q(t[t.length-3])*256,t[t.length-3]=jstoi_q(t[t.length-2])+jstoi_q(t[t.length-1])*256,t=t.slice(0,t.length-2)):t=e.split(\":\"),a=0,o=0,r=0;r<t.length;r++)if(typeof t[r]==\"string\")if(t[r]===\"Z\"){for(o=0;o<8-t.length+1;o++)n[r+o]=0;a=o-1}else n[r+a]=_htons(parseInt(t[r],16));else n[r+a]=t[r];return[n[1]<<16|n[0],n[3]<<16|n[2],n[5]<<16|n[4],n[7]<<16|n[6]]},DNS={address_map:{id:1,addrs:{},names:{}},lookup_name(e){var t=inetPton4(e);if(t!==null||(t=inetPton6(e),t!==null))return e;var r;if(DNS.address_map.addrs[e])r=DNS.address_map.addrs[e];else{var a=DNS.address_map.id++;assert(a<65535,\"exceeded max address mappings of 65535\"),r=\"172.29.\"+(a&255)+\".\"+(a&65280),DNS.address_map.names[r]=e,DNS.address_map.addrs[e]=r}return r},lookup_addr(e){return DNS.address_map.names[e]?DNS.address_map.names[e]:null}},getSocketAddress=(e,t)=>{var r=readSockaddr(e,t);if(r.errno)throw new FS.ErrnoError(r.errno);return r.addr=DNS.lookup_addr(r.addr)||r.addr,r};function ___syscall_bind(e,t,r,a,o,s){try{var n=getSocketFromFD(e),_=getSocketAddress(t,r);return n.sock_ops.bind(n,_.addr,_.port),0}catch(l){if(typeof FS>\"u\"||l.name!==\"ErrnoError\")throw l;return-l.errno}}___syscall_bind.sig=\"iippiii\";function ___syscall_chdir(e){try{return e=SYSCALLS.getStr(e),FS.chdir(e),0}catch(t){if(typeof FS>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}___syscall_chdir.sig=\"ip\";function ___syscall_chmod(e,t){try{return e=SYSCALLS.getStr(e),FS.chmod(e,t),0}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_chmod.sig=\"ipi\";function ___syscall_dup(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.dupStream(t).fd}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_dup.sig=\"ii\";function ___syscall_dup3(e,t,r){try{var a=SYSCALLS.getStreamFromFD(e);if(a.fd===t)return-28;if(t<0||t>=FS.MAX_OPEN_FDS)return-8;var o=FS.getStream(t);return o&&FS.close(o),FS.dupStream(a,t).fd}catch(s){if(typeof FS>\"u\"||s.name!==\"ErrnoError\")throw s;return-s.errno}}___syscall_dup3.sig=\"iiii\";function ___syscall_faccessat(e,t,r,a){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),r&-8)return-28;var o=FS.lookupPath(t,{follow:!0}),s=o.node;if(!s)return-44;var n=\"\";return r&4&&(n+=\"r\"),r&2&&(n+=\"w\"),r&1&&(n+=\"x\"),n&&FS.nodePermissions(s,n)?-2:0}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return-_.errno}}___syscall_faccessat.sig=\"iipii\";var ___syscall_fadvise64=(e,t,r,a)=>0;___syscall_fadvise64.sig=\"iijji\";var INT53_MAX=9007199254740992,INT53_MIN=-9007199254740992,bigintToI53Checked=e=>e<INT53_MIN||e>INT53_MAX?NaN:Number(e);function ___syscall_fallocate(e,t,r,a){r=bigintToI53Checked(r),a=bigintToI53Checked(a);try{if(isNaN(r))return 61;var o=SYSCALLS.getStreamFromFD(e);return FS.allocate(o,r,a),0}catch(s){if(typeof FS>\"u\"||s.name!==\"ErrnoError\")throw s;return-s.errno}}___syscall_fallocate.sig=\"iiijj\";var syscallGetVarargI=()=>{var e=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,e},syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(e,t,r){SYSCALLS.varargs=r;try{var a=SYSCALLS.getStreamFromFD(e);switch(t){case 0:{var o=syscallGetVarargI();if(o<0)return-28;for(;FS.streams[o];)o++;var s;return s=FS.dupStream(a,o),s.fd}case 1:case 2:return 0;case 3:return a.flags;case 4:{var o=syscallGetVarargI();return a.flags|=o,0}case 12:{var o=syscallGetVarargP(),n=0;return HEAP16[o+n>>1]=2,0}case 13:case 14:return 0}return-28}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return-_.errno}}___syscall_fcntl64.sig=\"iiip\";function ___syscall_fdatasync(e){try{var t=SYSCALLS.getStreamFromFD(e);return 0}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_fdatasync.sig=\"ii\";function ___syscall_fstat64(e,t){try{var r=SYSCALLS.getStreamFromFD(e);return SYSCALLS.doStat(FS.stat,r.path,t)}catch(a){if(typeof FS>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}___syscall_fstat64.sig=\"iip\";function ___syscall_ftruncate64(e,t){t=bigintToI53Checked(t);try{return isNaN(t)?61:(FS.ftruncate(e,t),0)}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_ftruncate64.sig=\"iij\";var stringToUTF8=(e,t,r)=>stringToUTF8Array(e,HEAPU8,t,r);function ___syscall_getcwd(e,t){try{if(t===0)return-28;var r=FS.cwd(),a=lengthBytesUTF8(r)+1;return t<a?-68:(stringToUTF8(r,e,t),a)}catch(o){if(typeof FS>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}___syscall_getcwd.sig=\"ipp\";function ___syscall_getdents64(e,t,r){try{var a=SYSCALLS.getStreamFromFD(e);a.getdents||(a.getdents=FS.readdir(a.path));for(var o=280,s=0,n=FS.llseek(a,0,1),_=Math.floor(n/o),l=Math.min(a.getdents.length,_+Math.floor(r/o)),p=_;p<l;p++){var m,d,g=a.getdents[p];if(g===\".\")m=a.node.id,d=4;else if(g===\"..\"){var u=FS.lookupPath(a.path,{parent:!0});m=u.node.id,d=4}else{var f;try{f=FS.lookupNode(a.node,g)}catch(c){if(c?.errno===28)continue;throw c}m=f.id,d=FS.isChrdev(f.mode)?2:FS.isDir(f.mode)?4:FS.isLink(f.mode)?10:8}HEAP64[t+s>>3]=BigInt(m),HEAP64[t+s+8>>3]=BigInt((p+1)*o),HEAP16[t+s+16>>1]=280,HEAP8[t+s+18]=d,stringToUTF8(g,t+s+19,256),s+=o}return FS.llseek(a,p*o,0),s}catch(c){if(typeof FS>\"u\"||c.name!==\"ErrnoError\")throw c;return-c.errno}}___syscall_getdents64.sig=\"iipp\";function ___syscall_ioctl(e,t,r){SYSCALLS.varargs=r;try{var a=SYSCALLS.getStreamFromFD(e);switch(t){case 21509:return a.tty?0:-59;case 21505:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tcgets){var o=a.tty.ops.ioctl_tcgets(a),s=syscallGetVarargP();HEAP32[s>>2]=o.c_iflag||0,HEAP32[s+4>>2]=o.c_oflag||0,HEAP32[s+8>>2]=o.c_cflag||0,HEAP32[s+12>>2]=o.c_lflag||0;for(var n=0;n<32;n++)HEAP8[s+n+17]=o.c_cc[n]||0;return 0}return 0}case 21510:case 21511:case 21512:return a.tty?0:-59;case 21506:case 21507:case 21508:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tcsets){for(var s=syscallGetVarargP(),_=HEAP32[s>>2],l=HEAP32[s+4>>2],p=HEAP32[s+8>>2],m=HEAP32[s+12>>2],d=[],n=0;n<32;n++)d.push(HEAP8[s+n+17]);return a.tty.ops.ioctl_tcsets(a.tty,t,{c_iflag:_,c_oflag:l,c_cflag:p,c_lflag:m,c_cc:d})}return 0}case 21519:{if(!a.tty)return-59;var s=syscallGetVarargP();return HEAP32[s>>2]=0,0}case 21520:return a.tty?-28:-59;case 21531:{var s=syscallGetVarargP();return FS.ioctl(a,t,s)}case 21523:{if(!a.tty)return-59;if(a.tty.ops.ioctl_tiocgwinsz){var g=a.tty.ops.ioctl_tiocgwinsz(a.tty),s=syscallGetVarargP();HEAP16[s>>1]=g[0],HEAP16[s+2>>1]=g[1]}return 0}case 21524:return a.tty?0:-59;case 21515:return a.tty?0:-59;default:return-28}}catch(u){if(typeof FS>\"u\"||u.name!==\"ErrnoError\")throw u;return-u.errno}}___syscall_ioctl.sig=\"iiip\";function ___syscall_lstat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.lstat,e,t)}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_lstat64.sig=\"ipp\";function ___syscall_mkdirat(e,t,r){try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),FS.mkdir(t,r,0),0}catch(a){if(typeof FS>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}___syscall_mkdirat.sig=\"iipi\";function ___syscall_newfstatat(e,t,r,a){try{t=SYSCALLS.getStr(t);var o=a&256,s=a&4096;return a=a&-6401,t=SYSCALLS.calculateAt(e,t,s),SYSCALLS.doStat(o?FS.lstat:FS.stat,t,r)}catch(n){if(typeof FS>\"u\"||n.name!==\"ErrnoError\")throw n;return-n.errno}}___syscall_newfstatat.sig=\"iippi\";function ___syscall_openat(e,t,r,a){SYSCALLS.varargs=a;try{t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t);var o=a?syscallGetVarargI():0;return FS.open(t,r,o).fd}catch(s){if(typeof FS>\"u\"||s.name!==\"ErrnoError\")throw s;return-s.errno}}___syscall_openat.sig=\"iipip\";var PIPEFS={BUCKET_BUFFER_SIZE:8192,mount(e){return FS.createNode(null,\"/\",16895,0)},createPipe(){var e={buckets:[],refcnt:2};e.buckets.push({buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0});var t=PIPEFS.nextname(),r=PIPEFS.nextname(),a=FS.createNode(PIPEFS.root,t,4096,0),o=FS.createNode(PIPEFS.root,r,4096,0);a.pipe=e,o.pipe=e;var s=FS.createStream({path:t,node:a,flags:0,seekable:!1,stream_ops:PIPEFS.stream_ops});a.stream=s;var n=FS.createStream({path:r,node:o,flags:1,seekable:!1,stream_ops:PIPEFS.stream_ops});return o.stream=n,{readable_fd:s.fd,writable_fd:n.fd}},stream_ops:{poll(e){var t=e.node.pipe;if((e.flags&2097155)===1)return 260;if(t.buckets.length>0)for(var r=0;r<t.buckets.length;r++){var a=t.buckets[r];if(a.offset-a.roffset>0)return 65}return 0},ioctl(e,t,r){return 28},fsync(e){return 28},read(e,t,r,a,o){for(var s=e.node.pipe,n=0,_=0;_<s.buckets.length;_++){var l=s.buckets[_];n+=l.offset-l.roffset}var p=t.subarray(r,r+a);if(a<=0)return 0;if(n==0)throw new FS.ErrnoError(6);for(var m=Math.min(n,a),d=m,g=0,_=0;_<s.buckets.length;_++){var u=s.buckets[_],f=u.offset-u.roffset;if(m<=f){var c=u.buffer.subarray(u.roffset,u.offset);m<f?(c=c.subarray(0,m),u.roffset+=m):g++,p.set(c);break}else{var c=u.buffer.subarray(u.roffset,u.offset);p.set(c),p=p.subarray(c.byteLength),m-=c.byteLength,g++}}return g&&g==s.buckets.length&&(g--,s.buckets[g].offset=0,s.buckets[g].roffset=0),s.buckets.splice(0,g),d},write(e,t,r,a,o){var s=e.node.pipe,n=t.subarray(r,r+a),_=n.byteLength;if(_<=0)return 0;var l=null;s.buckets.length==0?(l={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:0,roffset:0},s.buckets.push(l)):l=s.buckets[s.buckets.length-1],assert(l.offset<=PIPEFS.BUCKET_BUFFER_SIZE);var p=PIPEFS.BUCKET_BUFFER_SIZE-l.offset;if(p>=_)return l.buffer.set(n,l.offset),l.offset+=_,_;p>0&&(l.buffer.set(n.subarray(0,p),l.offset),l.offset+=p,n=n.subarray(p,n.byteLength));for(var m=n.byteLength/PIPEFS.BUCKET_BUFFER_SIZE|0,d=n.byteLength%PIPEFS.BUCKET_BUFFER_SIZE,g=0;g<m;g++){var u={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:PIPEFS.BUCKET_BUFFER_SIZE,roffset:0};s.buckets.push(u),u.buffer.set(n.subarray(0,PIPEFS.BUCKET_BUFFER_SIZE)),n=n.subarray(PIPEFS.BUCKET_BUFFER_SIZE,n.byteLength)}if(d>0){var u={buffer:new Uint8Array(PIPEFS.BUCKET_BUFFER_SIZE),offset:n.byteLength,roffset:0};s.buckets.push(u),u.buffer.set(n)}return _},close(e){var t=e.node.pipe;t.refcnt--,t.refcnt===0&&(t.buckets=null)}},nextname(){return PIPEFS.nextname.current||(PIPEFS.nextname.current=0),\"pipe[\"+PIPEFS.nextname.current+++\"]\"}};function ___syscall_pipe(e){try{if(e==0)throw new FS.ErrnoError(21);var t=PIPEFS.createPipe();return HEAP32[e>>2]=t.readable_fd,HEAP32[e+4>>2]=t.writable_fd,0}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_pipe.sig=\"ip\";function ___syscall_readlinkat(e,t,r,a){try{if(t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),a<=0)return-28;var o=FS.readlink(t),s=Math.min(a,lengthBytesUTF8(o)),n=HEAP8[r+s];return stringToUTF8(o,r,a+1),HEAP8[r+s]=n,s}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return-_.errno}}___syscall_readlinkat.sig=\"iippp\";var writeSockaddr=(e,t,r,a,o)=>{switch(t){case 2:r=inetPton4(r),zeroMemory(e,16),o&&(HEAP32[o>>2]=16),HEAP16[e>>1]=t,HEAP32[e+4>>2]=r,HEAP16[e+2>>1]=_htons(a);break;case 10:r=inetPton6(r),zeroMemory(e,28),o&&(HEAP32[o>>2]=28),HEAP32[e>>2]=t,HEAP32[e+8>>2]=r[0],HEAP32[e+12>>2]=r[1],HEAP32[e+16>>2]=r[2],HEAP32[e+20>>2]=r[3],HEAP16[e+2>>1]=_htons(a);break;default:return 5}return 0};function ___syscall_recvfrom(e,t,r,a,o,s){try{var n=getSocketFromFD(e),_=n.sock_ops.recvmsg(n,r);if(!_)return 0;if(o)var l=writeSockaddr(o,n.family,DNS.lookup_name(_.addr),_.port,s);return HEAPU8.set(_.buffer,t),_.buffer.byteLength}catch(p){if(typeof FS>\"u\"||p.name!==\"ErrnoError\")throw p;return-p.errno}}___syscall_recvfrom.sig=\"iippipp\";function ___syscall_renameat(e,t,r,a){try{return t=SYSCALLS.getStr(t),a=SYSCALLS.getStr(a),t=SYSCALLS.calculateAt(e,t),a=SYSCALLS.calculateAt(r,a),FS.rename(t,a),0}catch(o){if(typeof FS>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}___syscall_renameat.sig=\"iipip\";function ___syscall_rmdir(e){try{return e=SYSCALLS.getStr(e),FS.rmdir(e),0}catch(t){if(typeof FS>\"u\"||t.name!==\"ErrnoError\")throw t;return-t.errno}}___syscall_rmdir.sig=\"ip\";function ___syscall_sendto(e,t,r,a,o,s){try{var n=getSocketFromFD(e);if(!o)return FS.write(n.stream,HEAP8,t,r);var _=getSocketAddress(o,s);return n.sock_ops.sendmsg(n,HEAP8,t,r,_.addr,_.port)}catch(l){if(typeof FS>\"u\"||l.name!==\"ErrnoError\")throw l;return-l.errno}}___syscall_sendto.sig=\"iippipp\";function ___syscall_socket(e,t,r){try{var a=SOCKFS.createSocket(e,t,r);return a.stream.fd}catch(o){if(typeof FS>\"u\"||o.name!==\"ErrnoError\")throw o;return-o.errno}}___syscall_socket.sig=\"iiiiiii\";function ___syscall_stat64(e,t){try{return e=SYSCALLS.getStr(e),SYSCALLS.doStat(FS.stat,e,t)}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_stat64.sig=\"ipp\";function ___syscall_symlinkat(e,t,r){try{return e=SYSCALLS.getStr(e),r=SYSCALLS.getStr(r),r=SYSCALLS.calculateAt(t,r),FS.symlink(e,r),0}catch(a){if(typeof FS>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}___syscall_symlinkat.sig=\"ipip\";function ___syscall_truncate64(e,t){t=bigintToI53Checked(t);try{return isNaN(t)?61:(e=SYSCALLS.getStr(e),FS.truncate(e,t),0)}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return-r.errno}}___syscall_truncate64.sig=\"ipj\";function ___syscall_unlinkat(e,t,r){try{return t=SYSCALLS.getStr(t),t=SYSCALLS.calculateAt(e,t),r===0?FS.unlink(t):r===512?FS.rmdir(t):abort(\"Invalid flags passed to unlinkat\"),0}catch(a){if(typeof FS>\"u\"||a.name!==\"ErrnoError\")throw a;return-a.errno}}___syscall_unlinkat.sig=\"iipi\";var ___table_base=new WebAssembly.Global({value:\"i32\",mutable:!1},1);Module.___table_base=___table_base;var __abort_js=()=>abort(\"\");__abort_js.sig=\"v\";var ENV={},stackAlloc=e=>__emscripten_stack_alloc(e),stringToUTF8OnStack=e=>{var t=lengthBytesUTF8(e)+1,r=stackAlloc(t);return stringToUTF8(e,r,t),r},dlSetError=e=>{var t=stackSave(),r=stringToUTF8OnStack(e);___dl_seterr(r,0),stackRestore(t)},dlopenInternal=(e,t)=>{var r=UTF8ToString(e+36),a=HEAP32[e+4>>2];r=PATH.normalize(r);var o=!!(a&256),s=o?null:{},n={global:o,nodelete:!!(a&4096),loadAsync:t.loadAsync};if(t.loadAsync)return loadDynamicLibrary(r,n,s,e);try{return loadDynamicLibrary(r,n,s,e)}catch(_){return dlSetError(`Could not load dynamic lib: ${r}\n${_}`),0}},__dlopen_js=e=>dlopenInternal(e,{loadAsync:!1});__dlopen_js.sig=\"pp\";var __dlsym_js=(e,t,r)=>{t=UTF8ToString(t);var a,o,s=LDSO.loadedLibsByHandle[e];if(!s.exports.hasOwnProperty(t)||s.exports[t].stub)return dlSetError(`Tried to lookup unknown symbol \"${t}\" in dynamic lib: ${s.name}`),0;if(o=Object.keys(s.exports).indexOf(t),a=s.exports[t],typeof a==\"function\"){var n=getFunctionAddress(a);n?a=n:(a=addFunction(a,a.sig),HEAPU32[r>>2]=o)}return a};__dlsym_js.sig=\"pppp\";var __emscripten_memcpy_js=(e,t,r)=>HEAPU8.copyWithin(e,t,t+r);__emscripten_memcpy_js.sig=\"vppp\";var runtimeKeepaliveCounter=0,__emscripten_runtime_keepalive_clear=()=>{noExitRuntime=!1,runtimeKeepaliveCounter=0};__emscripten_runtime_keepalive_clear.sig=\"v\";var __emscripten_system=e=>{if(ENVIRONMENT_IS_NODE){if(!e)return 1;var t=UTF8ToString(e);if(!t.length)return 0;var r=require(\"child_process\"),a=r.spawnSync(t,[],{shell:!0,stdio:\"inherit\"}),o=(n,_)=>n<<8|_;if(a.status===null){var s=n=>{switch(n){case\"SIGHUP\":return 1;case\"SIGQUIT\":return 3;case\"SIGFPE\":return 8;case\"SIGKILL\":return 9;case\"SIGALRM\":return 14;case\"SIGTERM\":return 15;default:return 2}};return o(0,s(a.signal))}return o(a.status,0)}return e?-52:0};__emscripten_system.sig=\"ip\";var __emscripten_throw_longjmp=()=>{throw 1/0};__emscripten_throw_longjmp.sig=\"v\";function __gmtime_js(e,t){e=bigintToI53Checked(e);var r=new Date(e*1e3);HEAP32[t>>2]=r.getUTCSeconds(),HEAP32[t+4>>2]=r.getUTCMinutes(),HEAP32[t+8>>2]=r.getUTCHours(),HEAP32[t+12>>2]=r.getUTCDate(),HEAP32[t+16>>2]=r.getUTCMonth(),HEAP32[t+20>>2]=r.getUTCFullYear()-1900,HEAP32[t+24>>2]=r.getUTCDay();var a=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),o=(r.getTime()-a)/(1e3*60*60*24)|0;HEAP32[t+28>>2]=o}__gmtime_js.sig=\"vjp\";var isLeapYear=e=>e%4===0&&(e%100!==0||e%400===0),MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335],MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334],ydayFromDate=e=>{var t=isLeapYear(e.getFullYear()),r=t?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE,a=r[e.getMonth()]+e.getDate()-1;return a};function __localtime_js(e,t){e=bigintToI53Checked(e);var r=new Date(e*1e3);HEAP32[t>>2]=r.getSeconds(),HEAP32[t+4>>2]=r.getMinutes(),HEAP32[t+8>>2]=r.getHours(),HEAP32[t+12>>2]=r.getDate(),HEAP32[t+16>>2]=r.getMonth(),HEAP32[t+20>>2]=r.getFullYear()-1900,HEAP32[t+24>>2]=r.getDay();var a=ydayFromDate(r)|0;HEAP32[t+28>>2]=a,HEAP32[t+36>>2]=-(r.getTimezoneOffset()*60);var o=new Date(r.getFullYear(),0,1),s=new Date(r.getFullYear(),6,1).getTimezoneOffset(),n=o.getTimezoneOffset(),_=(s!=n&&r.getTimezoneOffset()==Math.min(n,s))|0;HEAP32[t+32>>2]=_}__localtime_js.sig=\"vjp\";function __mmap_js(e,t,r,a,o,s,n){o=bigintToI53Checked(o);try{if(isNaN(o))return 61;var _=SYSCALLS.getStreamFromFD(a),l=FS.mmap(_,e,o,t,r),p=l.ptr;return HEAP32[s>>2]=l.allocated,HEAPU32[n>>2]=p,0}catch(m){if(typeof FS>\"u\"||m.name!==\"ErrnoError\")throw m;return-m.errno}}__mmap_js.sig=\"ipiiijpp\";function __munmap_js(e,t,r,a,o,s){s=bigintToI53Checked(s);try{var n=SYSCALLS.getStreamFromFD(o);r&2&&SYSCALLS.doMsync(e,n,t,a,s)}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return-_.errno}}__munmap_js.sig=\"ippiiij\";var timers={},handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\")return EXITSTATUS;quit_(1,e)},keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_proc_exit=e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))};_proc_exit.sig=\"vi\";var exitJS=(e,t)=>{EXITSTATUS=e,_proc_exit(e)},_exit=exitJS;_exit.sig=\"vi\";var maybeExit=()=>{if(!keepRuntimeAlive())try{_exit(EXITSTATUS)}catch(e){handleException(e)}},callUserCallback=e=>{if(!ABORT)try{e(),maybeExit()}catch(t){handleException(t)}},_emscripten_get_now=()=>performance.now();_emscripten_get_now.sig=\"d\";var __setitimer_js=(e,t)=>{if(timers[e]&&(clearTimeout(timers[e].id),delete timers[e]),!t)return 0;var r=setTimeout(()=>{delete timers[e],callUserCallback(()=>__emscripten_timeout(e,_emscripten_get_now()))},t);return timers[e]={id:r,timeout_ms:t},0};__setitimer_js.sig=\"iid\";var __tzset_js=(e,t,r,a)=>{var o=new Date().getFullYear(),s=new Date(o,0,1),n=new Date(o,6,1),_=s.getTimezoneOffset(),l=n.getTimezoneOffset(),p=Math.max(_,l);HEAPU32[e>>2]=p*60,HEAP32[t>>2]=+(_!=l);var m=u=>{var f=u>=0?\"-\":\"+\",c=Math.abs(u),w=String(Math.floor(c/60)).padStart(2,\"0\"),x=String(c%60).padStart(2,\"0\");return`UTC${f}${w}${x}`},d=m(_),g=m(l);l<_?(stringToUTF8(d,r,17),stringToUTF8(g,a,17)):(stringToUTF8(d,a,17),stringToUTF8(g,r,17))};__tzset_js.sig=\"vpppp\";var _emscripten_date_now=()=>Date.now();_emscripten_date_now.sig=\"d\";var nowIsMonotonic=1,checkWasiClock=e=>e>=0&&e<=3;function _clock_time_get(e,t,r){if(t=bigintToI53Checked(t),!checkWasiClock(e))return 28;var a;if(e===0)a=_emscripten_date_now();else if(nowIsMonotonic)a=_emscripten_get_now();else return 52;var o=Math.round(a*1e3*1e3);return HEAP64[r>>3]=BigInt(o),0}_clock_time_get.sig=\"iijp\";var readEmAsmArgsArray=[],readEmAsmArgs=(e,t)=>{readEmAsmArgsArray.length=0;for(var r;r=HEAPU8[e++];){var a=r!=105;a&=r!=112,t+=a&&t%8?4:0,readEmAsmArgsArray.push(r==112?HEAPU32[t>>2]:r==106?HEAP64[t>>3]:r==105?HEAP32[t>>2]:HEAPF64[t>>3]),t+=a?8:4}return readEmAsmArgsArray},runEmAsmFunction=(e,t,r)=>{var a=readEmAsmArgs(t,r);return ASM_CONSTS[e](...a)},_emscripten_asm_const_int=(e,t,r)=>runEmAsmFunction(e,t,r);_emscripten_asm_const_int.sig=\"ippp\";var _emscripten_force_exit=e=>{__emscripten_runtime_keepalive_clear(),_exit(e)};_emscripten_force_exit.sig=\"vi\";var getHeapMax=()=>2147483648,growMemory=e=>{var t=wasmMemory.buffer,r=(e-t.byteLength+65535)/65536|0;try{return wasmMemory.grow(r),updateMemoryViews(),1}catch{}},_emscripten_resize_heap=e=>{var t=HEAPU8.length;e>>>=0;var r=getHeapMax();if(e>r)return!1;for(var a=1;a<=4;a*=2){var o=t*(1+.2/a);o=Math.min(o,e+100663296);var s=Math.min(r,alignMemory(Math.max(e,o),65536)),n=growMemory(s);if(n)return!0}return!1};_emscripten_resize_heap.sig=\"ip\";var getExecutableName=()=>thisProgram||\"./this.program\",getEnvStrings=()=>{if(!getEnvStrings.strings){var e=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\",t={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:e,_:getExecutableName()};for(var r in ENV)ENV[r]===void 0?delete t[r]:t[r]=ENV[r];var a=[];for(var r in t)a.push(`${r}=${t[r]}`);getEnvStrings.strings=a}return getEnvStrings.strings},stringToAscii=(e,t)=>{for(var r=0;r<e.length;++r)HEAP8[t++]=e.charCodeAt(r);HEAP8[t]=0},_environ_get=(e,t)=>{var r=0;return getEnvStrings().forEach((a,o)=>{var s=t+r;HEAPU32[e+o*4>>2]=s,stringToAscii(a,s),r+=a.length+1}),0};_environ_get.sig=\"ipp\";var _environ_sizes_get=(e,t)=>{var r=getEnvStrings();HEAPU32[e>>2]=r.length;var a=0;return r.forEach(o=>a+=o.length+1),HEAPU32[t>>2]=a,0};_environ_sizes_get.sig=\"ipp\";function _fd_close(e){try{var t=SYSCALLS.getStreamFromFD(e);return FS.close(t),0}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return r.errno}}_fd_close.sig=\"ii\";function _fd_fdstat_get(e,t){try{var r=0,a=0,o=0,s=SYSCALLS.getStreamFromFD(e),n=s.tty?2:FS.isDir(s.mode)?3:FS.isLink(s.mode)?7:4;return HEAP8[t]=n,HEAP16[t+2>>1]=o,HEAP64[t+8>>3]=BigInt(r),HEAP64[t+16>>3]=BigInt(a),0}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return _.errno}}_fd_fdstat_get.sig=\"iip\";var doReadv=(e,t,r,a)=>{for(var o=0,s=0;s<r;s++){var n=HEAPU32[t>>2],_=HEAPU32[t+4>>2];t+=8;var l=FS.read(e,HEAP8,n,_,a);if(l<0)return-1;if(o+=l,l<_)break;typeof a<\"u\"&&(a+=l)}return o};function _fd_pread(e,t,r,a,o){a=bigintToI53Checked(a);try{if(isNaN(a))return 61;var s=SYSCALLS.getStreamFromFD(e),n=doReadv(s,t,r,a);return HEAPU32[o>>2]=n,0}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return _.errno}}_fd_pread.sig=\"iippjp\";var doWritev=(e,t,r,a)=>{for(var o=0,s=0;s<r;s++){var n=HEAPU32[t>>2],_=HEAPU32[t+4>>2];t+=8;var l=FS.write(e,HEAP8,n,_,a);if(l<0)return-1;if(o+=l,l<_)break;typeof a<\"u\"&&(a+=l)}return o};function _fd_pwrite(e,t,r,a,o){a=bigintToI53Checked(a);try{if(isNaN(a))return 61;var s=SYSCALLS.getStreamFromFD(e),n=doWritev(s,t,r,a);return HEAPU32[o>>2]=n,0}catch(_){if(typeof FS>\"u\"||_.name!==\"ErrnoError\")throw _;return _.errno}}_fd_pwrite.sig=\"iippjp\";function _fd_read(e,t,r,a){try{var o=SYSCALLS.getStreamFromFD(e),s=doReadv(o,t,r);return HEAPU32[a>>2]=s,0}catch(n){if(typeof FS>\"u\"||n.name!==\"ErrnoError\")throw n;return n.errno}}_fd_read.sig=\"iippp\";function _fd_seek(e,t,r,a){t=bigintToI53Checked(t);try{if(isNaN(t))return 61;var o=SYSCALLS.getStreamFromFD(e);return FS.llseek(o,t,r),HEAP64[a>>3]=BigInt(o.position),o.getdents&&t===0&&r===0&&(o.getdents=null),0}catch(s){if(typeof FS>\"u\"||s.name!==\"ErrnoError\")throw s;return s.errno}}_fd_seek.sig=\"iijip\";function _fd_sync(e){try{var t=SYSCALLS.getStreamFromFD(e);return t.stream_ops?.fsync?t.stream_ops.fsync(t):0}catch(r){if(typeof FS>\"u\"||r.name!==\"ErrnoError\")throw r;return r.errno}}_fd_sync.sig=\"ii\";function _fd_write(e,t,r,a){try{var o=SYSCALLS.getStreamFromFD(e),s=doWritev(o,t,r);return HEAPU32[a>>2]=s,0}catch(n){if(typeof FS>\"u\"||n.name!==\"ErrnoError\")throw n;return n.errno}}_fd_write.sig=\"iippp\";var _getaddrinfo=(e,t,r,a)=>{var o=0,s=0,n=0,_=0,l=0,p=0,m;function d(g,u,f,c,w,x){var S,v,b,M;return v=g===10?28:16,w=g===10?inetNtop6(w):inetNtop4(w),S=_malloc(v),M=writeSockaddr(S,g,w,x),assert(!M),b=_malloc(32),HEAP32[b+4>>2]=g,HEAP32[b+8>>2]=u,HEAP32[b+12>>2]=f,HEAPU32[b+24>>2]=c,HEAPU32[b+20>>2]=S,g===10?HEAP32[b+16>>2]=28:HEAP32[b+16>>2]=16,HEAP32[b+28>>2]=0,b}if(r&&(n=HEAP32[r>>2],_=HEAP32[r+4>>2],l=HEAP32[r+8>>2],p=HEAP32[r+12>>2]),l&&!p&&(p=l===2?17:6),!l&&p&&(l=p===17?2:1),p===0&&(p=6),l===0&&(l=1),!e&&!t)return-2;if(n&-1088||r!==0&&HEAP32[r>>2]&2&&!e)return-1;if(n&32)return-2;if(l!==0&&l!==1&&l!==2)return-7;if(_!==0&&_!==2&&_!==10)return-6;if(t&&(t=UTF8ToString(t),s=parseInt(t,10),isNaN(s)))return n&1024?-2:-8;if(!e)return _===0&&(_=2),n&1||(_===2?o=_htonl(2130706433):o=[0,0,0,_htonl(1)]),m=d(_,l,p,null,o,s),HEAPU32[a>>2]=m,0;if(e=UTF8ToString(e),o=inetPton4(e),o!==null)if(_===0||_===2)_=2;else if(_===10&&n&8)o=[0,0,_htonl(65535),o],_=10;else return-2;else if(o=inetPton6(e),o!==null)if(_===0||_===10)_=10;else return-2;return o!=null?(m=d(_,l,p,e,o,s),HEAPU32[a>>2]=m,0):n&4?-2:(e=DNS.lookup_name(e),o=inetPton4(e),_===0?_=2:_===10&&(o=[0,0,_htonl(65535),o]),m=d(_,l,p,null,o,s),HEAPU32[a>>2]=m,0)};_getaddrinfo.sig=\"ipppp\";var _getnameinfo=(e,t,r,a,o,s,n)=>{var _=readSockaddr(e,t);if(_.errno)return-6;var l=_.port,p=_.addr,m=!1;if(r&&a){var d;if(n&1||!(d=DNS.lookup_addr(p))){if(n&8)return-2}else p=d;var g=stringToUTF8(p,r,a);g+1>=a&&(m=!0)}if(o&&s){l=\"\"+l;var g=stringToUTF8(l,o,s);g+1>=s&&(m=!0)}return m?-12:0};_getnameinfo.sig=\"ipipipii\";var stringToNewUTF8=e=>{var t=lengthBytesUTF8(e)+1,r=_malloc(t);return r&&stringToUTF8(e,r,t),r},removeFunction=e=>{functionsInTableMap.delete(getWasmTableEntry(e)),setWasmTableEntry(e,null),freeTableIndexes.push(e)},FS_createPath=FS.createPath,FS_unlink=e=>FS.unlink(e),FS_createLazyFile=FS.createLazyFile,FS_createDevice=FS.createDevice,setTempRet0=e=>__emscripten_tempret_set(e),_setTempRet0=setTempRet0;Module._setTempRet0=_setTempRet0;var getTempRet0=e=>__emscripten_tempret_get(),_getTempRet0=getTempRet0;Module._getTempRet0=_getTempRet0,registerWasmPlugin(),FS.createPreloadedFile=FS_createPreloadedFile,FS.staticInit(),Module.FS_createPath=FS.createPath,Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile,Module.FS_unlink=FS.unlink,Module.FS_createLazyFile=FS.createLazyFile,Module.FS_createDevice=FS.createDevice,MEMFS.doesNotExistError=new FS.ErrnoError(44),MEMFS.doesNotExistError.stack=\"<generic error, no stack>\",ENVIRONMENT_IS_NODE&&NODEFS.staticInit();var wasmImports={__assert_fail:___assert_fail,__call_sighandler:___call_sighandler,__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__syscall__newselect:___syscall__newselect,__syscall_bind:___syscall_bind,__syscall_chdir:___syscall_chdir,__syscall_chmod:___syscall_chmod,__syscall_dup:___syscall_dup,__syscall_dup3:___syscall_dup3,__syscall_faccessat:___syscall_faccessat,__syscall_fadvise64:___syscall_fadvise64,__syscall_fallocate:___syscall_fallocate,__syscall_fcntl64:___syscall_fcntl64,__syscall_fdatasync:___syscall_fdatasync,__syscall_fstat64:___syscall_fstat64,__syscall_ftruncate64:___syscall_ftruncate64,__syscall_getcwd:___syscall_getcwd,__syscall_getdents64:___syscall_getdents64,__syscall_ioctl:___syscall_ioctl,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_pipe:___syscall_pipe,__syscall_readlinkat:___syscall_readlinkat,__syscall_recvfrom:___syscall_recvfrom,__syscall_renameat:___syscall_renameat,__syscall_rmdir:___syscall_rmdir,__syscall_sendto:___syscall_sendto,__syscall_socket:___syscall_socket,__syscall_stat64:___syscall_stat64,__syscall_symlinkat:___syscall_symlinkat,__syscall_truncate64:___syscall_truncate64,__syscall_unlinkat:___syscall_unlinkat,__table_base:___table_base,_abort_js:__abort_js,_dlopen_js:__dlopen_js,_dlsym_js:__dlsym_js,_emscripten_memcpy_js:__emscripten_memcpy_js,_emscripten_runtime_keepalive_clear:__emscripten_runtime_keepalive_clear,_emscripten_system:__emscripten_system,_emscripten_throw_longjmp:__emscripten_throw_longjmp,_gmtime_js:__gmtime_js,_localtime_js:__localtime_js,_mmap_js:__mmap_js,_munmap_js:__munmap_js,_setitimer_js:__setitimer_js,_tzset_js:__tzset_js,clock_time_get:_clock_time_get,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_date_now:_emscripten_date_now,emscripten_force_exit:_emscripten_force_exit,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,exit:_exit,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_pread:_fd_pread,fd_pwrite:_fd_pwrite,fd_read:_fd_read,fd_seek:_fd_seek,fd_sync:_fd_sync,fd_write:_fd_write,getTempRet0:_getTempRet0,getaddrinfo:_getaddrinfo,getnameinfo:_getnameinfo,invoke_di,invoke_i,invoke_id,invoke_ii,invoke_iii,invoke_iiii,invoke_iiiii,invoke_iiiiii,invoke_iiiiiii,invoke_iiiiiiii,invoke_iiiiiiiii,invoke_iiiiiiiiii,invoke_iiiiiiiiiii,invoke_iiiiiiiiiiiiii,invoke_iiiiiiiiiiiiiiiiii,invoke_iiiiiji,invoke_iiiij,invoke_iiiijii,invoke_iiij,invoke_iiji,invoke_ij,invoke_ijiiiii,invoke_ijiiiiii,invoke_j,invoke_ji,invoke_jii,invoke_jiiii,invoke_jiiiiii,invoke_jiiiiiiiii,invoke_v,invoke_vi,invoke_vid,invoke_vii,invoke_viii,invoke_viiii,invoke_viiiii,invoke_viiiiii,invoke_viiiiiii,invoke_viiiiiiii,invoke_viiiiiiiii,invoke_viiiiiiiiiiii,invoke_viiiji,invoke_viij,invoke_viiji,invoke_viijii,invoke_viijiiii,invoke_vij,invoke_viji,invoke_vijiji,invoke_vj,invoke_vji,memory:wasmMemory,proc_exit:_proc_exit,setTempRet0:_setTempRet0},wasmExports;createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports.__wasm_call_ctors)(),_fopen=Module._fopen=(e,t)=>(_fopen=Module._fopen=wasmExports.fopen)(e,t),_fflush=Module._fflush=e=>(_fflush=Module._fflush=wasmExports.fflush)(e),___errno_location=Module.___errno_location=()=>(___errno_location=Module.___errno_location=wasmExports.__errno_location)(),_ProcessInterrupts=Module._ProcessInterrupts=()=>(_ProcessInterrupts=Module._ProcessInterrupts=wasmExports.ProcessInterrupts)(),_errstart_cold=Module._errstart_cold=(e,t)=>(_errstart_cold=Module._errstart_cold=wasmExports.errstart_cold)(e,t),_errcode=Module._errcode=e=>(_errcode=Module._errcode=wasmExports.errcode)(e),_errmsg=Module._errmsg=(e,t)=>(_errmsg=Module._errmsg=wasmExports.errmsg)(e,t),_errfinish=Module._errfinish=(e,t,r)=>(_errfinish=Module._errfinish=wasmExports.errfinish)(e,t,r),_puts=Module._puts=e=>(_puts=Module._puts=wasmExports.puts)(e),_errstart=Module._errstart=(e,t)=>(_errstart=Module._errstart=wasmExports.errstart)(e,t),_errmsg_internal=Module._errmsg_internal=(e,t)=>(_errmsg_internal=Module._errmsg_internal=wasmExports.errmsg_internal)(e,t),_errdetail=Module._errdetail=(e,t)=>(_errdetail=Module._errdetail=wasmExports.errdetail)(e,t),_errhint=Module._errhint=(e,t)=>(_errhint=Module._errhint=wasmExports.errhint)(e,t),_pg_parse_query=Module._pg_parse_query=e=>(_pg_parse_query=Module._pg_parse_query=wasmExports.pg_parse_query)(e),_gettimeofday=Module._gettimeofday=(e,t)=>(_gettimeofday=Module._gettimeofday=wasmExports.gettimeofday)(e,t),_raw_parser=Module._raw_parser=(e,t)=>(_raw_parser=Module._raw_parser=wasmExports.raw_parser)(e,t),_initStringInfo=Module._initStringInfo=e=>(_initStringInfo=Module._initStringInfo=wasmExports.initStringInfo)(e),_appendStringInfoString=Module._appendStringInfoString=(e,t)=>(_appendStringInfoString=Module._appendStringInfoString=wasmExports.appendStringInfoString)(e,t),_appendStringInfo=Module._appendStringInfo=(e,t,r)=>(_appendStringInfo=Module._appendStringInfo=wasmExports.appendStringInfo)(e,t,r),_errdetail_internal=Module._errdetail_internal=(e,t)=>(_errdetail_internal=Module._errdetail_internal=wasmExports.errdetail_internal)(e,t),_pfree=Module._pfree=e=>(_pfree=Module._pfree=wasmExports.pfree)(e),_list_make1_impl=Module._list_make1_impl=(e,t)=>(_list_make1_impl=Module._list_make1_impl=wasmExports.list_make1_impl)(e,t),_QueryRewrite=Module._QueryRewrite=e=>(_QueryRewrite=Module._QueryRewrite=wasmExports.QueryRewrite)(e),_pg_plan_query=Module._pg_plan_query=(e,t,r,a)=>(_pg_plan_query=Module._pg_plan_query=wasmExports.pg_plan_query)(e,t,r,a),_palloc0=Module._palloc0=e=>(_palloc0=Module._palloc0=wasmExports.palloc0)(e),_lappend=Module._lappend=(e,t)=>(_lappend=Module._lappend=wasmExports.lappend)(e,t),_GetCurrentTimestamp=Module._GetCurrentTimestamp=()=>(_GetCurrentTimestamp=Module._GetCurrentTimestamp=wasmExports.GetCurrentTimestamp)(),_pg_prng_double=Module._pg_prng_double=e=>(_pg_prng_double=Module._pg_prng_double=wasmExports.pg_prng_double)(e),_pg_snprintf=Module._pg_snprintf=(e,t,r,a)=>(_pg_snprintf=Module._pg_snprintf=wasmExports.pg_snprintf)(e,t,r,a),_die=Module._die=e=>(_die=Module._die=wasmExports.die)(e),_check_stack_depth=Module._check_stack_depth=()=>(_check_stack_depth=Module._check_stack_depth=wasmExports.check_stack_depth)(),_pre_format_elog_string=Module._pre_format_elog_string=(e,t)=>(_pre_format_elog_string=Module._pre_format_elog_string=wasmExports.pre_format_elog_string)(e,t),_format_elog_string=Module._format_elog_string=(e,t)=>(_format_elog_string=Module._format_elog_string=wasmExports.format_elog_string)(e,t),_pstrdup=Module._pstrdup=e=>(_pstrdup=Module._pstrdup=wasmExports.pstrdup)(e),_SplitIdentifierString=Module._SplitIdentifierString=(e,t,r)=>(_SplitIdentifierString=Module._SplitIdentifierString=wasmExports.SplitIdentifierString)(e,t,r),_list_free=Module._list_free=e=>(_list_free=Module._list_free=wasmExports.list_free)(e),_pg_strcasecmp=Module._pg_strcasecmp=(e,t)=>(_pg_strcasecmp=Module._pg_strcasecmp=wasmExports.pg_strcasecmp)(e,t),_guc_malloc=Module._guc_malloc=(e,t)=>(_guc_malloc=Module._guc_malloc=wasmExports.guc_malloc)(e,t),_SetConfigOption=Module._SetConfigOption=(e,t,r,a)=>(_SetConfigOption=Module._SetConfigOption=wasmExports.SetConfigOption)(e,t,r,a),_pg_sprintf=Module._pg_sprintf=(e,t,r)=>(_pg_sprintf=Module._pg_sprintf=wasmExports.pg_sprintf)(e,t,r),_strcmp=Module._strcmp=(e,t)=>(_strcmp=Module._strcmp=wasmExports.strcmp)(e,t),_strdup=Module._strdup=e=>(_strdup=Module._strdup=wasmExports.strdup)(e),_atoi=Module._atoi=e=>(_atoi=Module._atoi=wasmExports.atoi)(e),_strlcpy=Module._strlcpy=(e,t,r)=>(_strlcpy=Module._strlcpy=wasmExports.strlcpy)(e,t,r),_pgl_shutdown=Module._pgl_shutdown=()=>(_pgl_shutdown=Module._pgl_shutdown=wasmExports.pgl_shutdown)(),_pgl_closed=Module._pgl_closed=()=>(_pgl_closed=Module._pgl_closed=wasmExports.pgl_closed)(),_MemoryContextReset=Module._MemoryContextReset=e=>(_MemoryContextReset=Module._MemoryContextReset=wasmExports.MemoryContextReset)(e),_resetStringInfo=Module._resetStringInfo=e=>(_resetStringInfo=Module._resetStringInfo=wasmExports.resetStringInfo)(e),_getc=Module._getc=e=>(_getc=Module._getc=wasmExports.getc)(e),_appendStringInfoChar=Module._appendStringInfoChar=(e,t)=>(_appendStringInfoChar=Module._appendStringInfoChar=wasmExports.appendStringInfoChar)(e,t),_strlen=Module._strlen=e=>(_strlen=Module._strlen=wasmExports.strlen)(e),_strncmp=Module._strncmp=(e,t,r)=>(_strncmp=Module._strncmp=wasmExports.strncmp)(e,t,r),_pg_fprintf=Module._pg_fprintf=(e,t,r)=>(_pg_fprintf=Module._pg_fprintf=wasmExports.pg_fprintf)(e,t,r),_pgstat_report_activity=Module._pgstat_report_activity=(e,t)=>(_pgstat_report_activity=Module._pgstat_report_activity=wasmExports.pgstat_report_activity)(e,t),_errhidestmt=Module._errhidestmt=e=>(_errhidestmt=Module._errhidestmt=wasmExports.errhidestmt)(e),_GetTransactionSnapshot=Module._GetTransactionSnapshot=()=>(_GetTransactionSnapshot=Module._GetTransactionSnapshot=wasmExports.GetTransactionSnapshot)(),_PushActiveSnapshot=Module._PushActiveSnapshot=e=>(_PushActiveSnapshot=Module._PushActiveSnapshot=wasmExports.PushActiveSnapshot)(e),_AllocSetContextCreateInternal=Module._AllocSetContextCreateInternal=(e,t,r,a,o)=>(_AllocSetContextCreateInternal=Module._AllocSetContextCreateInternal=wasmExports.AllocSetContextCreateInternal)(e,t,r,a,o),_PopActiveSnapshot=Module._PopActiveSnapshot=()=>(_PopActiveSnapshot=Module._PopActiveSnapshot=wasmExports.PopActiveSnapshot)(),_CreateDestReceiver=Module._CreateDestReceiver=e=>(_CreateDestReceiver=Module._CreateDestReceiver=wasmExports.CreateDestReceiver)(e),_CommitTransactionCommand=Module._CommitTransactionCommand=()=>(_CommitTransactionCommand=Module._CommitTransactionCommand=wasmExports.CommitTransactionCommand)(),_CommandCounterIncrement=Module._CommandCounterIncrement=()=>(_CommandCounterIncrement=Module._CommandCounterIncrement=wasmExports.CommandCounterIncrement)(),_MemoryContextDelete=Module._MemoryContextDelete=e=>(_MemoryContextDelete=Module._MemoryContextDelete=wasmExports.MemoryContextDelete)(e),_StartTransactionCommand=Module._StartTransactionCommand=()=>(_StartTransactionCommand=Module._StartTransactionCommand=wasmExports.StartTransactionCommand)(),___wasm_setjmp_test=Module.___wasm_setjmp_test=(e,t)=>(___wasm_setjmp_test=Module.___wasm_setjmp_test=wasmExports.__wasm_setjmp_test)(e,t),_pg_printf=Module._pg_printf=(e,t)=>(_pg_printf=Module._pg_printf=wasmExports.pg_printf)(e,t),___wasm_setjmp=Module.___wasm_setjmp=(e,t,r)=>(___wasm_setjmp=Module.___wasm_setjmp=wasmExports.__wasm_setjmp)(e,t,r),_FlushErrorState=Module._FlushErrorState=()=>(_FlushErrorState=Module._FlushErrorState=wasmExports.FlushErrorState)(),_emscripten_longjmp=Module._emscripten_longjmp=(e,t)=>(_emscripten_longjmp=Module._emscripten_longjmp=wasmExports.emscripten_longjmp)(e,t),_enlargeStringInfo=Module._enlargeStringInfo=(e,t)=>(_enlargeStringInfo=Module._enlargeStringInfo=wasmExports.enlargeStringInfo)(e,t),_malloc=Module._malloc=e=>(_malloc=Module._malloc=wasmExports.malloc)(e),_realloc=Module._realloc=(e,t)=>(_realloc=Module._realloc=wasmExports.realloc)(e,t),_getenv=Module._getenv=e=>(_getenv=Module._getenv=wasmExports.getenv)(e),_strspn=Module._strspn=(e,t)=>(_strspn=Module._strspn=wasmExports.strspn)(e,t),_memcpy=Module._memcpy=(e,t,r)=>(_memcpy=Module._memcpy=wasmExports.memcpy)(e,t,r),_fileno=Module._fileno=e=>(_fileno=Module._fileno=wasmExports.fileno)(e),_strchr=Module._strchr=(e,t)=>(_strchr=Module._strchr=wasmExports.strchr)(e,t),_free=Module._free=e=>(_free=Module._free=wasmExports.free)(e),_pg_vsnprintf=Module._pg_vsnprintf=(e,t,r,a)=>(_pg_vsnprintf=Module._pg_vsnprintf=wasmExports.pg_vsnprintf)(e,t,r,a),_strcpy=Module._strcpy=(e,t)=>(_strcpy=Module._strcpy=wasmExports.strcpy)(e,t),_psprintf=Module._psprintf=(e,t)=>(_psprintf=Module._psprintf=wasmExports.psprintf)(e,t),_stat=Module._stat=(e,t)=>(_stat=Module._stat=wasmExports.stat)(e,t),_fwrite=Module._fwrite=(e,t,r,a)=>(_fwrite=Module._fwrite=wasmExports.fwrite)(e,t,r,a),_strftime=Module._strftime=(e,t,r,a)=>(_strftime=Module._strftime=wasmExports.strftime)(e,t,r,a),_strstr=Module._strstr=(e,t)=>(_strstr=Module._strstr=wasmExports.strstr)(e,t),_atexit=Module._atexit=e=>(_atexit=Module._atexit=wasmExports.atexit)(e),_strtol=Module._strtol=(e,t,r)=>(_strtol=Module._strtol=wasmExports.strtol)(e,t,r),_ferror=Module._ferror=e=>(_ferror=Module._ferror=wasmExports.ferror)(e),_clear_error=Module._clear_error=()=>(_clear_error=Module._clear_error=wasmExports.clear_error)(),_interactive_one=Module._interactive_one=(e,t)=>(_interactive_one=Module._interactive_one=wasmExports.interactive_one)(e,t),_pq_getmsgint=Module._pq_getmsgint=(e,t)=>(_pq_getmsgint=Module._pq_getmsgint=wasmExports.pq_getmsgint)(e,t),_palloc=Module._palloc=e=>(_palloc=Module._palloc=wasmExports.palloc)(e),_makeParamList=Module._makeParamList=e=>(_makeParamList=Module._makeParamList=wasmExports.makeParamList)(e),_getTypeInputInfo=Module._getTypeInputInfo=(e,t,r)=>(_getTypeInputInfo=Module._getTypeInputInfo=wasmExports.getTypeInputInfo)(e,t,r),_pnstrdup=Module._pnstrdup=(e,t)=>(_pnstrdup=Module._pnstrdup=wasmExports.pnstrdup)(e,t),_MemoryContextSetParent=Module._MemoryContextSetParent=(e,t)=>(_MemoryContextSetParent=Module._MemoryContextSetParent=wasmExports.MemoryContextSetParent)(e,t),_pgl_backend=Module._pgl_backend=()=>(_pgl_backend=Module._pgl_backend=wasmExports.pgl_backend)(),_pgl_initdb=Module._pgl_initdb=()=>(_pgl_initdb=Module._pgl_initdb=wasmExports.pgl_initdb)(),_main=Module._main=(e,t)=>(_main=Module._main=wasmExports.__main_argc_argv)(e,t),_appendStringInfoStringQuoted=Module._appendStringInfoStringQuoted=(e,t,r)=>(_appendStringInfoStringQuoted=Module._appendStringInfoStringQuoted=wasmExports.appendStringInfoStringQuoted)(e,t,r),_set_errcontext_domain=Module._set_errcontext_domain=e=>(_set_errcontext_domain=Module._set_errcontext_domain=wasmExports.set_errcontext_domain)(e),_errcontext_msg=Module._errcontext_msg=(e,t)=>(_errcontext_msg=Module._errcontext_msg=wasmExports.errcontext_msg)(e,t),_pg_is_ascii=Module._pg_is_ascii=e=>(_pg_is_ascii=Module._pg_is_ascii=wasmExports.pg_is_ascii)(e),_memchr=Module._memchr=(e,t,r)=>(_memchr=Module._memchr=wasmExports.memchr)(e,t,r),_strrchr=Module._strrchr=(e,t)=>(_strrchr=Module._strrchr=wasmExports.strrchr)(e,t),_xsltFreeStylesheet=Module._xsltFreeStylesheet=e=>(_xsltFreeStylesheet=Module._xsltFreeStylesheet=wasmExports.xsltFreeStylesheet)(e),_xsltParseStylesheetDoc=Module._xsltParseStylesheetDoc=e=>(_xsltParseStylesheetDoc=Module._xsltParseStylesheetDoc=wasmExports.xsltParseStylesheetDoc)(e),_xsltSaveResultToString=Module._xsltSaveResultToString=(e,t,r,a)=>(_xsltSaveResultToString=Module._xsltSaveResultToString=wasmExports.xsltSaveResultToString)(e,t,r,a),_xsltCleanupGlobals=Module._xsltCleanupGlobals=()=>(_xsltCleanupGlobals=Module._xsltCleanupGlobals=wasmExports.xsltCleanupGlobals)(),_xsltNewTransformContext=Module._xsltNewTransformContext=(e,t)=>(_xsltNewTransformContext=Module._xsltNewTransformContext=wasmExports.xsltNewTransformContext)(e,t),_xsltFreeTransformContext=Module._xsltFreeTransformContext=e=>(_xsltFreeTransformContext=Module._xsltFreeTransformContext=wasmExports.xsltFreeTransformContext)(e),_xsltApplyStylesheetUser=Module._xsltApplyStylesheetUser=(e,t,r,a,o,s)=>(_xsltApplyStylesheetUser=Module._xsltApplyStylesheetUser=wasmExports.xsltApplyStylesheetUser)(e,t,r,a,o,s),_xsltNewSecurityPrefs=Module._xsltNewSecurityPrefs=()=>(_xsltNewSecurityPrefs=Module._xsltNewSecurityPrefs=wasmExports.xsltNewSecurityPrefs)(),_xsltFreeSecurityPrefs=Module._xsltFreeSecurityPrefs=e=>(_xsltFreeSecurityPrefs=Module._xsltFreeSecurityPrefs=wasmExports.xsltFreeSecurityPrefs)(e),_xsltSetSecurityPrefs=Module._xsltSetSecurityPrefs=(e,t,r)=>(_xsltSetSecurityPrefs=Module._xsltSetSecurityPrefs=wasmExports.xsltSetSecurityPrefs)(e,t,r),_xsltSetCtxtSecurityPrefs=Module._xsltSetCtxtSecurityPrefs=(e,t)=>(_xsltSetCtxtSecurityPrefs=Module._xsltSetCtxtSecurityPrefs=wasmExports.xsltSetCtxtSecurityPrefs)(e,t),_xsltSecurityForbid=Module._xsltSecurityForbid=(e,t,r)=>(_xsltSecurityForbid=Module._xsltSecurityForbid=wasmExports.xsltSecurityForbid)(e,t,r),_replace_percent_placeholders=Module._replace_percent_placeholders=(e,t,r,a)=>(_replace_percent_placeholders=Module._replace_percent_placeholders=wasmExports.replace_percent_placeholders)(e,t,r,a),_memset=Module._memset=(e,t,r)=>(_memset=Module._memset=wasmExports.memset)(e,t,r),_MemoryContextAllocZero=Module._MemoryContextAllocZero=(e,t)=>(_MemoryContextAllocZero=Module._MemoryContextAllocZero=wasmExports.MemoryContextAllocZero)(e,t),_MemoryContextAllocExtended=Module._MemoryContextAllocExtended=(e,t,r)=>(_MemoryContextAllocExtended=Module._MemoryContextAllocExtended=wasmExports.MemoryContextAllocExtended)(e,t,r),_hash_bytes=Module._hash_bytes=(e,t)=>(_hash_bytes=Module._hash_bytes=wasmExports.hash_bytes)(e,t),_memcmp=Module._memcmp=(e,t,r)=>(_memcmp=Module._memcmp=wasmExports.memcmp)(e,t,r),_repalloc=Module._repalloc=(e,t)=>(_repalloc=Module._repalloc=wasmExports.repalloc)(e,t),_pg_qsort=Module._pg_qsort=(e,t,r,a)=>(_pg_qsort=Module._pg_qsort=wasmExports.pg_qsort)(e,t,r,a),_OpenTransientFile=Module._OpenTransientFile=(e,t)=>(_OpenTransientFile=Module._OpenTransientFile=wasmExports.OpenTransientFile)(e,t),_errcode_for_file_access=Module._errcode_for_file_access=()=>(_errcode_for_file_access=Module._errcode_for_file_access=wasmExports.errcode_for_file_access)(),_read=Module._read=(e,t,r)=>(_read=Module._read=wasmExports.read)(e,t,r),_CloseTransientFile=Module._CloseTransientFile=e=>(_CloseTransientFile=Module._CloseTransientFile=wasmExports.CloseTransientFile)(e),_time=Module._time=e=>(_time=Module._time=wasmExports.time)(e),_close=Module._close=e=>(_close=Module._close=wasmExports.close)(e),___multi3=Module.___multi3=(e,t,r,a,o)=>(___multi3=Module.___multi3=wasmExports.__multi3)(e,t,r,a,o),_isalnum=Module._isalnum=e=>(_isalnum=Module._isalnum=wasmExports.isalnum)(e),_wait_result_to_str=Module._wait_result_to_str=e=>(_wait_result_to_str=Module._wait_result_to_str=wasmExports.wait_result_to_str)(e),_float_to_shortest_decimal_bufn=Module._float_to_shortest_decimal_bufn=(e,t)=>(_float_to_shortest_decimal_bufn=Module._float_to_shortest_decimal_bufn=wasmExports.float_to_shortest_decimal_bufn)(e,t),_float_to_shortest_decimal_buf=Module._float_to_shortest_decimal_buf=(e,t)=>(_float_to_shortest_decimal_buf=Module._float_to_shortest_decimal_buf=wasmExports.float_to_shortest_decimal_buf)(e,t),_memmove=Module._memmove=(e,t,r)=>(_memmove=Module._memmove=wasmExports.memmove)(e,t,r),_pwrite=Module._pwrite=(e,t,r,a)=>(_pwrite=Module._pwrite=wasmExports.pwrite)(e,t,r,a),_hash_bytes_extended=Module._hash_bytes_extended=(e,t,r)=>(_hash_bytes_extended=Module._hash_bytes_extended=wasmExports.hash_bytes_extended)(e,t,r),_calloc=(e,t)=>(_calloc=wasmExports.calloc)(e,t),_IsValidJsonNumber=Module._IsValidJsonNumber=(e,t)=>(_IsValidJsonNumber=Module._IsValidJsonNumber=wasmExports.IsValidJsonNumber)(e,t),_appendBinaryStringInfo=Module._appendBinaryStringInfo=(e,t,r)=>(_appendBinaryStringInfo=Module._appendBinaryStringInfo=wasmExports.appendBinaryStringInfo)(e,t,r),_makeStringInfo=Module._makeStringInfo=()=>(_makeStringInfo=Module._makeStringInfo=wasmExports.makeStringInfo)(),_GetDatabaseEncodingName=Module._GetDatabaseEncodingName=()=>(_GetDatabaseEncodingName=Module._GetDatabaseEncodingName=wasmExports.GetDatabaseEncodingName)(),_ScanKeywordLookup=Module._ScanKeywordLookup=(e,t)=>(_ScanKeywordLookup=Module._ScanKeywordLookup=wasmExports.ScanKeywordLookup)(e,t),_strtoul=Module._strtoul=(e,t,r)=>(_strtoul=Module._strtoul=wasmExports.strtoul)(e,t,r),_sscanf=Module._sscanf=(e,t,r)=>(_sscanf=Module._sscanf=wasmExports.sscanf)(e,t,r),_strtoull=Module._strtoull=(e,t,r)=>(_strtoull=Module._strtoull=wasmExports.strtoull)(e,t,r),_pg_prng_uint64=Module._pg_prng_uint64=e=>(_pg_prng_uint64=Module._pg_prng_uint64=wasmExports.pg_prng_uint64)(e),_pg_prng_uint32=Module._pg_prng_uint32=e=>(_pg_prng_uint32=Module._pg_prng_uint32=wasmExports.pg_prng_uint32)(e),_log=Module._log=e=>(_log=Module._log=wasmExports.log)(e),_sin=Module._sin=e=>(_sin=Module._sin=wasmExports.sin)(e),_readdir=Module._readdir=e=>(_readdir=Module._readdir=wasmExports.readdir)(e),_forkname_to_number=Module._forkname_to_number=e=>(_forkname_to_number=Module._forkname_to_number=wasmExports.forkname_to_number)(e),_unlink=Module._unlink=e=>(_unlink=Module._unlink=wasmExports.unlink)(e),_pg_utf_mblen_private=Module._pg_utf_mblen_private=e=>(_pg_utf_mblen_private=Module._pg_utf_mblen_private=wasmExports.pg_utf_mblen_private)(e),_bsearch=Module._bsearch=(e,t,r,a,o)=>(_bsearch=Module._bsearch=wasmExports.bsearch)(e,t,r,a,o),_palloc_extended=Module._palloc_extended=(e,t)=>(_palloc_extended=Module._palloc_extended=wasmExports.palloc_extended)(e,t),_appendStringInfoSpaces=Module._appendStringInfoSpaces=(e,t)=>(_appendStringInfoSpaces=Module._appendStringInfoSpaces=wasmExports.appendStringInfoSpaces)(e,t),_geteuid=Module._geteuid=()=>(_geteuid=Module._geteuid=wasmExports.geteuid)(),_fcntl=Module._fcntl=(e,t,r)=>(_fcntl=Module._fcntl=wasmExports.fcntl)(e,t,r),_pg_popcount_optimized=Module._pg_popcount_optimized=(e,t)=>(_pg_popcount_optimized=Module._pg_popcount_optimized=wasmExports.pg_popcount_optimized)(e,t),_pg_strong_random=Module._pg_strong_random=(e,t)=>(_pg_strong_random=Module._pg_strong_random=wasmExports.pg_strong_random)(e,t),_open=Module._open=(e,t,r)=>(_open=Module._open=wasmExports.open)(e,t,r),_pg_usleep=Module._pg_usleep=e=>(_pg_usleep=Module._pg_usleep=wasmExports.pg_usleep)(e),_nanosleep=Module._nanosleep=(e,t)=>(_nanosleep=Module._nanosleep=wasmExports.nanosleep)(e,t),_getpid=Module._getpid=()=>(_getpid=Module._getpid=wasmExports.getpid)(),_qsort_arg=Module._qsort_arg=(e,t,r,a,o)=>(_qsort_arg=Module._qsort_arg=wasmExports.qsort_arg)(e,t,r,a,o),_strerror=Module._strerror=e=>(_strerror=Module._strerror=wasmExports.strerror)(e),_RelationGetNumberOfBlocksInFork=Module._RelationGetNumberOfBlocksInFork=(e,t)=>(_RelationGetNumberOfBlocksInFork=Module._RelationGetNumberOfBlocksInFork=wasmExports.RelationGetNumberOfBlocksInFork)(e,t),_ExtendBufferedRel=Module._ExtendBufferedRel=(e,t,r,a)=>(_ExtendBufferedRel=Module._ExtendBufferedRel=wasmExports.ExtendBufferedRel)(e,t,r,a),_MarkBufferDirty=Module._MarkBufferDirty=e=>(_MarkBufferDirty=Module._MarkBufferDirty=wasmExports.MarkBufferDirty)(e),_XLogBeginInsert=Module._XLogBeginInsert=()=>(_XLogBeginInsert=Module._XLogBeginInsert=wasmExports.XLogBeginInsert)(),_XLogRegisterData=Module._XLogRegisterData=(e,t)=>(_XLogRegisterData=Module._XLogRegisterData=wasmExports.XLogRegisterData)(e,t),_XLogInsert=Module._XLogInsert=(e,t)=>(_XLogInsert=Module._XLogInsert=wasmExports.XLogInsert)(e,t),_UnlockReleaseBuffer=Module._UnlockReleaseBuffer=e=>(_UnlockReleaseBuffer=Module._UnlockReleaseBuffer=wasmExports.UnlockReleaseBuffer)(e),_brin_build_desc=Module._brin_build_desc=e=>(_brin_build_desc=Module._brin_build_desc=wasmExports.brin_build_desc)(e),_EnterParallelMode=Module._EnterParallelMode=()=>(_EnterParallelMode=Module._EnterParallelMode=wasmExports.EnterParallelMode)(),_CreateParallelContext=Module._CreateParallelContext=(e,t,r)=>(_CreateParallelContext=Module._CreateParallelContext=wasmExports.CreateParallelContext)(e,t,r),_RegisterSnapshot=Module._RegisterSnapshot=e=>(_RegisterSnapshot=Module._RegisterSnapshot=wasmExports.RegisterSnapshot)(e),_table_parallelscan_estimate=Module._table_parallelscan_estimate=(e,t)=>(_table_parallelscan_estimate=Module._table_parallelscan_estimate=wasmExports.table_parallelscan_estimate)(e,t),_add_size=Module._add_size=(e,t)=>(_add_size=Module._add_size=wasmExports.add_size)(e,t),_tuplesort_estimate_shared=Module._tuplesort_estimate_shared=e=>(_tuplesort_estimate_shared=Module._tuplesort_estimate_shared=wasmExports.tuplesort_estimate_shared)(e),_InitializeParallelDSM=Module._InitializeParallelDSM=e=>(_InitializeParallelDSM=Module._InitializeParallelDSM=wasmExports.InitializeParallelDSM)(e),_UnregisterSnapshot=Module._UnregisterSnapshot=e=>(_UnregisterSnapshot=Module._UnregisterSnapshot=wasmExports.UnregisterSnapshot)(e),_DestroyParallelContext=Module._DestroyParallelContext=e=>(_DestroyParallelContext=Module._DestroyParallelContext=wasmExports.DestroyParallelContext)(e),_ExitParallelMode=Module._ExitParallelMode=()=>(_ExitParallelMode=Module._ExitParallelMode=wasmExports.ExitParallelMode)(),_shm_toc_allocate=Module._shm_toc_allocate=(e,t)=>(_shm_toc_allocate=Module._shm_toc_allocate=wasmExports.shm_toc_allocate)(e,t),_ConditionVariableInit=Module._ConditionVariableInit=e=>(_ConditionVariableInit=Module._ConditionVariableInit=wasmExports.ConditionVariableInit)(e),_s_init_lock_sema=Module._s_init_lock_sema=(e,t)=>(_s_init_lock_sema=Module._s_init_lock_sema=wasmExports.s_init_lock_sema)(e,t),_table_parallelscan_initialize=Module._table_parallelscan_initialize=(e,t,r)=>(_table_parallelscan_initialize=Module._table_parallelscan_initialize=wasmExports.table_parallelscan_initialize)(e,t,r),_tuplesort_initialize_shared=Module._tuplesort_initialize_shared=(e,t,r)=>(_tuplesort_initialize_shared=Module._tuplesort_initialize_shared=wasmExports.tuplesort_initialize_shared)(e,t,r),_shm_toc_insert=Module._shm_toc_insert=(e,t,r)=>(_shm_toc_insert=Module._shm_toc_insert=wasmExports.shm_toc_insert)(e,t,r),_LaunchParallelWorkers=Module._LaunchParallelWorkers=e=>(_LaunchParallelWorkers=Module._LaunchParallelWorkers=wasmExports.LaunchParallelWorkers)(e),_WaitForParallelWorkersToAttach=Module._WaitForParallelWorkersToAttach=e=>(_WaitForParallelWorkersToAttach=Module._WaitForParallelWorkersToAttach=wasmExports.WaitForParallelWorkersToAttach)(e),_tas_sema=Module._tas_sema=e=>(_tas_sema=Module._tas_sema=wasmExports.tas_sema)(e),_s_lock=Module._s_lock=(e,t,r,a)=>(_s_lock=Module._s_lock=wasmExports.s_lock)(e,t,r,a),_s_unlock_sema=Module._s_unlock_sema=e=>(_s_unlock_sema=Module._s_unlock_sema=wasmExports.s_unlock_sema)(e),_ConditionVariableSleep=Module._ConditionVariableSleep=(e,t)=>(_ConditionVariableSleep=Module._ConditionVariableSleep=wasmExports.ConditionVariableSleep)(e,t),_ConditionVariableCancelSleep=Module._ConditionVariableCancelSleep=()=>(_ConditionVariableCancelSleep=Module._ConditionVariableCancelSleep=wasmExports.ConditionVariableCancelSleep)(),_tuplesort_performsort=Module._tuplesort_performsort=e=>(_tuplesort_performsort=Module._tuplesort_performsort=wasmExports.tuplesort_performsort)(e),_tuplesort_end=Module._tuplesort_end=e=>(_tuplesort_end=Module._tuplesort_end=wasmExports.tuplesort_end)(e),_brin_deform_tuple=Module._brin_deform_tuple=(e,t,r)=>(_brin_deform_tuple=Module._brin_deform_tuple=wasmExports.brin_deform_tuple)(e,t,r),_log_newpage_buffer=Module._log_newpage_buffer=(e,t)=>(_log_newpage_buffer=Module._log_newpage_buffer=wasmExports.log_newpage_buffer)(e,t),_LockBuffer=Module._LockBuffer=(e,t)=>(_LockBuffer=Module._LockBuffer=wasmExports.LockBuffer)(e,t),_ReleaseBuffer=Module._ReleaseBuffer=e=>(_ReleaseBuffer=Module._ReleaseBuffer=wasmExports.ReleaseBuffer)(e),_IndexGetRelation=Module._IndexGetRelation=(e,t)=>(_IndexGetRelation=Module._IndexGetRelation=wasmExports.IndexGetRelation)(e,t),_table_open=Module._table_open=(e,t)=>(_table_open=Module._table_open=wasmExports.table_open)(e,t),_ReadBufferExtended=Module._ReadBufferExtended=(e,t,r,a,o)=>(_ReadBufferExtended=Module._ReadBufferExtended=wasmExports.ReadBufferExtended)(e,t,r,a,o),_table_close=Module._table_close=(e,t)=>(_table_close=Module._table_close=wasmExports.table_close)(e,t),_build_reloptions=Module._build_reloptions=(e,t,r,a,o,s)=>(_build_reloptions=Module._build_reloptions=wasmExports.build_reloptions)(e,t,r,a,o,s),_RelationGetIndexScan=Module._RelationGetIndexScan=(e,t,r)=>(_RelationGetIndexScan=Module._RelationGetIndexScan=wasmExports.RelationGetIndexScan)(e,t,r),_pgstat_assoc_relation=Module._pgstat_assoc_relation=e=>(_pgstat_assoc_relation=Module._pgstat_assoc_relation=wasmExports.pgstat_assoc_relation)(e),_index_getprocinfo=Module._index_getprocinfo=(e,t,r)=>(_index_getprocinfo=Module._index_getprocinfo=wasmExports.index_getprocinfo)(e,t,r),_fmgr_info_copy=Module._fmgr_info_copy=(e,t,r)=>(_fmgr_info_copy=Module._fmgr_info_copy=wasmExports.fmgr_info_copy)(e,t,r),_FunctionCall4Coll=Module._FunctionCall4Coll=(e,t,r,a,o,s)=>(_FunctionCall4Coll=Module._FunctionCall4Coll=wasmExports.FunctionCall4Coll)(e,t,r,a,o,s),_FunctionCall1Coll=Module._FunctionCall1Coll=(e,t,r)=>(_FunctionCall1Coll=Module._FunctionCall1Coll=wasmExports.FunctionCall1Coll)(e,t,r),_brin_free_desc=Module._brin_free_desc=e=>(_brin_free_desc=Module._brin_free_desc=wasmExports.brin_free_desc)(e),_WaitForParallelWorkersToFinish=Module._WaitForParallelWorkersToFinish=e=>(_WaitForParallelWorkersToFinish=Module._WaitForParallelWorkersToFinish=wasmExports.WaitForParallelWorkersToFinish)(e),_PageGetFreeSpace=Module._PageGetFreeSpace=e=>(_PageGetFreeSpace=Module._PageGetFreeSpace=wasmExports.PageGetFreeSpace)(e),_BufferGetBlockNumber=Module._BufferGetBlockNumber=e=>(_BufferGetBlockNumber=Module._BufferGetBlockNumber=wasmExports.BufferGetBlockNumber)(e),_BuildIndexInfo=Module._BuildIndexInfo=e=>(_BuildIndexInfo=Module._BuildIndexInfo=wasmExports.BuildIndexInfo)(e),_Int64GetDatum=Module._Int64GetDatum=e=>(_Int64GetDatum=Module._Int64GetDatum=wasmExports.Int64GetDatum)(e),_DirectFunctionCall2Coll=Module._DirectFunctionCall2Coll=(e,t,r,a)=>(_DirectFunctionCall2Coll=Module._DirectFunctionCall2Coll=wasmExports.DirectFunctionCall2Coll)(e,t,r,a),_RecoveryInProgress=Module._RecoveryInProgress=()=>(_RecoveryInProgress=Module._RecoveryInProgress=wasmExports.RecoveryInProgress)(),_GetUserIdAndSecContext=Module._GetUserIdAndSecContext=(e,t)=>(_GetUserIdAndSecContext=Module._GetUserIdAndSecContext=wasmExports.GetUserIdAndSecContext)(e,t),_SetUserIdAndSecContext=Module._SetUserIdAndSecContext=(e,t)=>(_SetUserIdAndSecContext=Module._SetUserIdAndSecContext=wasmExports.SetUserIdAndSecContext)(e,t),_NewGUCNestLevel=Module._NewGUCNestLevel=()=>(_NewGUCNestLevel=Module._NewGUCNestLevel=wasmExports.NewGUCNestLevel)(),_RestrictSearchPath=Module._RestrictSearchPath=()=>(_RestrictSearchPath=Module._RestrictSearchPath=wasmExports.RestrictSearchPath)(),_index_open=Module._index_open=(e,t)=>(_index_open=Module._index_open=wasmExports.index_open)(e,t),_object_ownercheck=Module._object_ownercheck=(e,t,r)=>(_object_ownercheck=Module._object_ownercheck=wasmExports.object_ownercheck)(e,t,r),_aclcheck_error=Module._aclcheck_error=(e,t,r)=>(_aclcheck_error=Module._aclcheck_error=wasmExports.aclcheck_error)(e,t,r),_AtEOXact_GUC=Module._AtEOXact_GUC=(e,t)=>(_AtEOXact_GUC=Module._AtEOXact_GUC=wasmExports.AtEOXact_GUC)(e,t),_relation_close=Module._relation_close=(e,t)=>(_relation_close=Module._relation_close=wasmExports.relation_close)(e,t),_GetUserId=Module._GetUserId=()=>(_GetUserId=Module._GetUserId=wasmExports.GetUserId)(),_ReadBuffer=Module._ReadBuffer=(e,t)=>(_ReadBuffer=Module._ReadBuffer=wasmExports.ReadBuffer)(e,t),_shm_toc_lookup=Module._shm_toc_lookup=(e,t,r)=>(_shm_toc_lookup=Module._shm_toc_lookup=wasmExports.shm_toc_lookup)(e,t,r),_tuplesort_attach_shared=Module._tuplesort_attach_shared=(e,t)=>(_tuplesort_attach_shared=Module._tuplesort_attach_shared=wasmExports.tuplesort_attach_shared)(e,t),_index_close=Module._index_close=(e,t)=>(_index_close=Module._index_close=wasmExports.index_close)(e,t),_table_beginscan_parallel=Module._table_beginscan_parallel=(e,t)=>(_table_beginscan_parallel=Module._table_beginscan_parallel=wasmExports.table_beginscan_parallel)(e,t),_ConditionVariableSignal=Module._ConditionVariableSignal=e=>(_ConditionVariableSignal=Module._ConditionVariableSignal=wasmExports.ConditionVariableSignal)(e),_datumCopy=Module._datumCopy=(e,t,r)=>(_datumCopy=Module._datumCopy=wasmExports.datumCopy)(e,t,r),_lookup_type_cache=Module._lookup_type_cache=(e,t)=>(_lookup_type_cache=Module._lookup_type_cache=wasmExports.lookup_type_cache)(e,t),_get_fn_opclass_options=Module._get_fn_opclass_options=e=>(_get_fn_opclass_options=Module._get_fn_opclass_options=wasmExports.get_fn_opclass_options)(e),_pg_detoast_datum=Module._pg_detoast_datum=e=>(_pg_detoast_datum=Module._pg_detoast_datum=wasmExports.pg_detoast_datum)(e),_index_getprocid=Module._index_getprocid=(e,t,r)=>(_index_getprocid=Module._index_getprocid=wasmExports.index_getprocid)(e,t,r),_init_local_reloptions=Module._init_local_reloptions=(e,t)=>(_init_local_reloptions=Module._init_local_reloptions=wasmExports.init_local_reloptions)(e,t),_FunctionCall2Coll=Module._FunctionCall2Coll=(e,t,r,a)=>(_FunctionCall2Coll=Module._FunctionCall2Coll=wasmExports.FunctionCall2Coll)(e,t,r,a),_SysCacheGetAttrNotNull=Module._SysCacheGetAttrNotNull=(e,t,r)=>(_SysCacheGetAttrNotNull=Module._SysCacheGetAttrNotNull=wasmExports.SysCacheGetAttrNotNull)(e,t,r),_ReleaseSysCache=Module._ReleaseSysCache=e=>(_ReleaseSysCache=Module._ReleaseSysCache=wasmExports.ReleaseSysCache)(e),_fmgr_info_cxt=Module._fmgr_info_cxt=(e,t,r)=>(_fmgr_info_cxt=Module._fmgr_info_cxt=wasmExports.fmgr_info_cxt)(e,t,r),_Float8GetDatum=Module._Float8GetDatum=e=>(_Float8GetDatum=Module._Float8GetDatum=wasmExports.Float8GetDatum)(e),_numeric_sub=Module._numeric_sub=e=>(_numeric_sub=Module._numeric_sub=wasmExports.numeric_sub)(e),_DirectFunctionCall1Coll=Module._DirectFunctionCall1Coll=(e,t,r)=>(_DirectFunctionCall1Coll=Module._DirectFunctionCall1Coll=wasmExports.DirectFunctionCall1Coll)(e,t,r),_pg_detoast_datum_packed=Module._pg_detoast_datum_packed=e=>(_pg_detoast_datum_packed=Module._pg_detoast_datum_packed=wasmExports.pg_detoast_datum_packed)(e),_add_local_int_reloption=Module._add_local_int_reloption=(e,t,r,a,o,s,n)=>(_add_local_int_reloption=Module._add_local_int_reloption=wasmExports.add_local_int_reloption)(e,t,r,a,o,s,n),_getTypeOutputInfo=Module._getTypeOutputInfo=(e,t,r)=>(_getTypeOutputInfo=Module._getTypeOutputInfo=wasmExports.getTypeOutputInfo)(e,t,r),_fmgr_info=Module._fmgr_info=(e,t)=>(_fmgr_info=Module._fmgr_info=wasmExports.fmgr_info)(e,t),_OutputFunctionCall=Module._OutputFunctionCall=(e,t)=>(_OutputFunctionCall=Module._OutputFunctionCall=wasmExports.OutputFunctionCall)(e,t),_cstring_to_text_with_len=Module._cstring_to_text_with_len=(e,t)=>(_cstring_to_text_with_len=Module._cstring_to_text_with_len=wasmExports.cstring_to_text_with_len)(e,t),_accumArrayResult=Module._accumArrayResult=(e,t,r,a,o)=>(_accumArrayResult=Module._accumArrayResult=wasmExports.accumArrayResult)(e,t,r,a,o),_makeArrayResult=Module._makeArrayResult=(e,t)=>(_makeArrayResult=Module._makeArrayResult=wasmExports.makeArrayResult)(e,t),_OidOutputFunctionCall=Module._OidOutputFunctionCall=(e,t)=>(_OidOutputFunctionCall=Module._OidOutputFunctionCall=wasmExports.OidOutputFunctionCall)(e,t),_cstring_to_text=Module._cstring_to_text=e=>(_cstring_to_text=Module._cstring_to_text=wasmExports.cstring_to_text)(e),_PageGetExactFreeSpace=Module._PageGetExactFreeSpace=e=>(_PageGetExactFreeSpace=Module._PageGetExactFreeSpace=wasmExports.PageGetExactFreeSpace)(e),_PageIndexTupleOverwrite=Module._PageIndexTupleOverwrite=(e,t,r,a)=>(_PageIndexTupleOverwrite=Module._PageIndexTupleOverwrite=wasmExports.PageIndexTupleOverwrite)(e,t,r,a),_PageInit=Module._PageInit=(e,t,r)=>(_PageInit=Module._PageInit=wasmExports.PageInit)(e,t,r),_PageAddItemExtended=Module._PageAddItemExtended=(e,t,r,a,o)=>(_PageAddItemExtended=Module._PageAddItemExtended=wasmExports.PageAddItemExtended)(e,t,r,a,o),_LockRelationForExtension=Module._LockRelationForExtension=(e,t)=>(_LockRelationForExtension=Module._LockRelationForExtension=wasmExports.LockRelationForExtension)(e,t),_UnlockRelationForExtension=Module._UnlockRelationForExtension=(e,t)=>(_UnlockRelationForExtension=Module._UnlockRelationForExtension=wasmExports.UnlockRelationForExtension)(e,t),_smgropen=Module._smgropen=(e,t)=>(_smgropen=Module._smgropen=wasmExports.smgropen)(e,t),_smgrpin=Module._smgrpin=e=>(_smgrpin=Module._smgrpin=wasmExports.smgrpin)(e),_ItemPointerEquals=Module._ItemPointerEquals=(e,t)=>(_ItemPointerEquals=Module._ItemPointerEquals=wasmExports.ItemPointerEquals)(e,t),_detoast_external_attr=Module._detoast_external_attr=e=>(_detoast_external_attr=Module._detoast_external_attr=wasmExports.detoast_external_attr)(e),_CreateTemplateTupleDesc=Module._CreateTemplateTupleDesc=e=>(_CreateTemplateTupleDesc=Module._CreateTemplateTupleDesc=wasmExports.CreateTemplateTupleDesc)(e),_TupleDescInitEntry=Module._TupleDescInitEntry=(e,t,r,a,o,s)=>(_TupleDescInitEntry=Module._TupleDescInitEntry=wasmExports.TupleDescInitEntry)(e,t,r,a,o,s),_SearchSysCache1=Module._SearchSysCache1=(e,t)=>(_SearchSysCache1=Module._SearchSysCache1=wasmExports.SearchSysCache1)(e,t),_SearchSysCacheList=Module._SearchSysCacheList=(e,t,r,a,o)=>(_SearchSysCacheList=Module._SearchSysCacheList=wasmExports.SearchSysCacheList)(e,t,r,a,o),_check_amproc_signature=Module._check_amproc_signature=(e,t,r,a,o,s)=>(_check_amproc_signature=Module._check_amproc_signature=wasmExports.check_amproc_signature)(e,t,r,a,o,s),_check_amoptsproc_signature=Module._check_amoptsproc_signature=e=>(_check_amoptsproc_signature=Module._check_amoptsproc_signature=wasmExports.check_amoptsproc_signature)(e),_format_procedure=Module._format_procedure=e=>(_format_procedure=Module._format_procedure=wasmExports.format_procedure)(e),_format_operator=Module._format_operator=e=>(_format_operator=Module._format_operator=wasmExports.format_operator)(e),_check_amop_signature=Module._check_amop_signature=(e,t,r,a)=>(_check_amop_signature=Module._check_amop_signature=wasmExports.check_amop_signature)(e,t,r,a),_identify_opfamily_groups=Module._identify_opfamily_groups=(e,t)=>(_identify_opfamily_groups=Module._identify_opfamily_groups=wasmExports.identify_opfamily_groups)(e,t),_format_type_be=Module._format_type_be=e=>(_format_type_be=Module._format_type_be=wasmExports.format_type_be)(e),_ReleaseCatCacheList=Module._ReleaseCatCacheList=e=>(_ReleaseCatCacheList=Module._ReleaseCatCacheList=wasmExports.ReleaseCatCacheList)(e),_format_type_with_typemod=Module._format_type_with_typemod=(e,t)=>(_format_type_with_typemod=Module._format_type_with_typemod=wasmExports.format_type_with_typemod)(e,t),_DatumGetEOHP=Module._DatumGetEOHP=e=>(_DatumGetEOHP=Module._DatumGetEOHP=wasmExports.DatumGetEOHP)(e),_EOH_get_flat_size=Module._EOH_get_flat_size=e=>(_EOH_get_flat_size=Module._EOH_get_flat_size=wasmExports.EOH_get_flat_size)(e),_EOH_flatten_into=Module._EOH_flatten_into=(e,t,r)=>(_EOH_flatten_into=Module._EOH_flatten_into=wasmExports.EOH_flatten_into)(e,t,r),_getmissingattr=Module._getmissingattr=(e,t,r)=>(_getmissingattr=Module._getmissingattr=wasmExports.getmissingattr)(e,t,r),_hash_create=Module._hash_create=(e,t,r,a)=>(_hash_create=Module._hash_create=wasmExports.hash_create)(e,t,r,a),_hash_search=Module._hash_search=(e,t,r,a)=>(_hash_search=Module._hash_search=wasmExports.hash_search)(e,t,r,a),_nocachegetattr=Module._nocachegetattr=(e,t,r)=>(_nocachegetattr=Module._nocachegetattr=wasmExports.nocachegetattr)(e,t,r),_heap_form_tuple=Module._heap_form_tuple=(e,t,r)=>(_heap_form_tuple=Module._heap_form_tuple=wasmExports.heap_form_tuple)(e,t,r),_heap_modify_tuple=Module._heap_modify_tuple=(e,t,r,a,o)=>(_heap_modify_tuple=Module._heap_modify_tuple=wasmExports.heap_modify_tuple)(e,t,r,a,o),_heap_deform_tuple=Module._heap_deform_tuple=(e,t,r,a)=>(_heap_deform_tuple=Module._heap_deform_tuple=wasmExports.heap_deform_tuple)(e,t,r,a),_heap_modify_tuple_by_cols=Module._heap_modify_tuple_by_cols=(e,t,r,a,o,s)=>(_heap_modify_tuple_by_cols=Module._heap_modify_tuple_by_cols=wasmExports.heap_modify_tuple_by_cols)(e,t,r,a,o,s),_heap_freetuple=Module._heap_freetuple=e=>(_heap_freetuple=Module._heap_freetuple=wasmExports.heap_freetuple)(e),_index_form_tuple=Module._index_form_tuple=(e,t,r)=>(_index_form_tuple=Module._index_form_tuple=wasmExports.index_form_tuple)(e,t,r),_nocache_index_getattr=Module._nocache_index_getattr=(e,t,r)=>(_nocache_index_getattr=Module._nocache_index_getattr=wasmExports.nocache_index_getattr)(e,t,r),_index_deform_tuple=Module._index_deform_tuple=(e,t,r,a)=>(_index_deform_tuple=Module._index_deform_tuple=wasmExports.index_deform_tuple)(e,t,r,a),_slot_getsomeattrs_int=Module._slot_getsomeattrs_int=(e,t)=>(_slot_getsomeattrs_int=Module._slot_getsomeattrs_int=wasmExports.slot_getsomeattrs_int)(e,t),_pg_ltoa=Module._pg_ltoa=(e,t)=>(_pg_ltoa=Module._pg_ltoa=wasmExports.pg_ltoa)(e,t),_relation_open=Module._relation_open=(e,t)=>(_relation_open=Module._relation_open=wasmExports.relation_open)(e,t),_LockRelationOid=Module._LockRelationOid=(e,t)=>(_LockRelationOid=Module._LockRelationOid=wasmExports.LockRelationOid)(e,t),_try_relation_open=Module._try_relation_open=(e,t)=>(_try_relation_open=Module._try_relation_open=wasmExports.try_relation_open)(e,t),_relation_openrv=Module._relation_openrv=(e,t)=>(_relation_openrv=Module._relation_openrv=wasmExports.relation_openrv)(e,t),_RangeVarGetRelidExtended=Module._RangeVarGetRelidExtended=(e,t,r,a,o)=>(_RangeVarGetRelidExtended=Module._RangeVarGetRelidExtended=wasmExports.RangeVarGetRelidExtended)(e,t,r,a,o),_add_reloption_kind=Module._add_reloption_kind=()=>(_add_reloption_kind=Module._add_reloption_kind=wasmExports.add_reloption_kind)(),_register_reloptions_validator=Module._register_reloptions_validator=(e,t)=>(_register_reloptions_validator=Module._register_reloptions_validator=wasmExports.register_reloptions_validator)(e,t),_add_int_reloption=Module._add_int_reloption=(e,t,r,a,o,s,n)=>(_add_int_reloption=Module._add_int_reloption=wasmExports.add_int_reloption)(e,t,r,a,o,s,n),_MemoryContextStrdup=Module._MemoryContextStrdup=(e,t)=>(_MemoryContextStrdup=Module._MemoryContextStrdup=wasmExports.MemoryContextStrdup)(e,t),_transformRelOptions=Module._transformRelOptions=(e,t,r,a,o,s)=>(_transformRelOptions=Module._transformRelOptions=wasmExports.transformRelOptions)(e,t,r,a,o,s),_deconstruct_array_builtin=Module._deconstruct_array_builtin=(e,t,r,a,o)=>(_deconstruct_array_builtin=Module._deconstruct_array_builtin=wasmExports.deconstruct_array_builtin)(e,t,r,a,o),_defGetString=Module._defGetString=e=>(_defGetString=Module._defGetString=wasmExports.defGetString)(e),_defGetBoolean=Module._defGetBoolean=e=>(_defGetBoolean=Module._defGetBoolean=wasmExports.defGetBoolean)(e),_untransformRelOptions=Module._untransformRelOptions=e=>(_untransformRelOptions=Module._untransformRelOptions=wasmExports.untransformRelOptions)(e),_text_to_cstring=Module._text_to_cstring=e=>(_text_to_cstring=Module._text_to_cstring=wasmExports.text_to_cstring)(e),_makeString=Module._makeString=e=>(_makeString=Module._makeString=wasmExports.makeString)(e),_makeDefElem=Module._makeDefElem=(e,t,r)=>(_makeDefElem=Module._makeDefElem=wasmExports.makeDefElem)(e,t,r),_heap_reloptions=Module._heap_reloptions=(e,t,r)=>(_heap_reloptions=Module._heap_reloptions=wasmExports.heap_reloptions)(e,t,r),_MemoryContextAlloc=Module._MemoryContextAlloc=(e,t)=>(_MemoryContextAlloc=Module._MemoryContextAlloc=wasmExports.MemoryContextAlloc)(e,t),_parse_bool=Module._parse_bool=(e,t)=>(_parse_bool=Module._parse_bool=wasmExports.parse_bool)(e,t),_parse_int=Module._parse_int=(e,t,r,a)=>(_parse_int=Module._parse_int=wasmExports.parse_int)(e,t,r,a),_parse_real=Module._parse_real=(e,t,r,a)=>(_parse_real=Module._parse_real=wasmExports.parse_real)(e,t,r,a),_ScanKeyInit=Module._ScanKeyInit=(e,t,r,a,o)=>(_ScanKeyInit=Module._ScanKeyInit=wasmExports.ScanKeyInit)(e,t,r,a,o),_dsm_segment_handle=Module._dsm_segment_handle=e=>(_dsm_segment_handle=Module._dsm_segment_handle=wasmExports.dsm_segment_handle)(e),_dsm_create=Module._dsm_create=(e,t)=>(_dsm_create=Module._dsm_create=wasmExports.dsm_create)(e,t),_dsm_segment_address=Module._dsm_segment_address=e=>(_dsm_segment_address=Module._dsm_segment_address=wasmExports.dsm_segment_address)(e),_dsm_attach=Module._dsm_attach=e=>(_dsm_attach=Module._dsm_attach=wasmExports.dsm_attach)(e),_dsm_detach=Module._dsm_detach=e=>(_dsm_detach=Module._dsm_detach=wasmExports.dsm_detach)(e),_ShmemInitStruct=Module._ShmemInitStruct=(e,t,r)=>(_ShmemInitStruct=Module._ShmemInitStruct=wasmExports.ShmemInitStruct)(e,t,r),_LWLockAcquire=Module._LWLockAcquire=(e,t)=>(_LWLockAcquire=Module._LWLockAcquire=wasmExports.LWLockAcquire)(e,t),_LWLockRelease=Module._LWLockRelease=e=>(_LWLockRelease=Module._LWLockRelease=wasmExports.LWLockRelease)(e),_LWLockInitialize=Module._LWLockInitialize=(e,t)=>(_LWLockInitialize=Module._LWLockInitialize=wasmExports.LWLockInitialize)(e,t),_MemoryContextMemAllocated=Module._MemoryContextMemAllocated=(e,t)=>(_MemoryContextMemAllocated=Module._MemoryContextMemAllocated=wasmExports.MemoryContextMemAllocated)(e,t),_GetCurrentCommandId=Module._GetCurrentCommandId=e=>(_GetCurrentCommandId=Module._GetCurrentCommandId=wasmExports.GetCurrentCommandId)(e),_toast_open_indexes=Module._toast_open_indexes=(e,t,r,a)=>(_toast_open_indexes=Module._toast_open_indexes=wasmExports.toast_open_indexes)(e,t,r,a),_RelationGetIndexList=Module._RelationGetIndexList=e=>(_RelationGetIndexList=Module._RelationGetIndexList=wasmExports.RelationGetIndexList)(e),_systable_beginscan=Module._systable_beginscan=(e,t,r,a,o,s)=>(_systable_beginscan=Module._systable_beginscan=wasmExports.systable_beginscan)(e,t,r,a,o,s),_systable_getnext=Module._systable_getnext=e=>(_systable_getnext=Module._systable_getnext=wasmExports.systable_getnext)(e),_systable_endscan=Module._systable_endscan=e=>(_systable_endscan=Module._systable_endscan=wasmExports.systable_endscan)(e),_toast_close_indexes=Module._toast_close_indexes=(e,t,r)=>(_toast_close_indexes=Module._toast_close_indexes=wasmExports.toast_close_indexes)(e,t,r),_systable_beginscan_ordered=Module._systable_beginscan_ordered=(e,t,r,a,o)=>(_systable_beginscan_ordered=Module._systable_beginscan_ordered=wasmExports.systable_beginscan_ordered)(e,t,r,a,o),_systable_getnext_ordered=Module._systable_getnext_ordered=(e,t)=>(_systable_getnext_ordered=Module._systable_getnext_ordered=wasmExports.systable_getnext_ordered)(e,t),_systable_endscan_ordered=Module._systable_endscan_ordered=e=>(_systable_endscan_ordered=Module._systable_endscan_ordered=wasmExports.systable_endscan_ordered)(e),_init_toast_snapshot=Module._init_toast_snapshot=e=>(_init_toast_snapshot=Module._init_toast_snapshot=wasmExports.init_toast_snapshot)(e),_convert_tuples_by_position=Module._convert_tuples_by_position=(e,t,r)=>(_convert_tuples_by_position=Module._convert_tuples_by_position=wasmExports.convert_tuples_by_position)(e,t,r),_execute_attr_map_tuple=Module._execute_attr_map_tuple=(e,t)=>(_execute_attr_map_tuple=Module._execute_attr_map_tuple=wasmExports.execute_attr_map_tuple)(e,t),_ExecStoreVirtualTuple=Module._ExecStoreVirtualTuple=e=>(_ExecStoreVirtualTuple=Module._ExecStoreVirtualTuple=wasmExports.ExecStoreVirtualTuple)(e),_bms_is_member=Module._bms_is_member=(e,t)=>(_bms_is_member=Module._bms_is_member=wasmExports.bms_is_member)(e,t),_bms_add_member=Module._bms_add_member=(e,t)=>(_bms_add_member=Module._bms_add_member=wasmExports.bms_add_member)(e,t),_CreateTupleDescCopy=Module._CreateTupleDescCopy=e=>(_CreateTupleDescCopy=Module._CreateTupleDescCopy=wasmExports.CreateTupleDescCopy)(e),_ResourceOwnerEnlarge=Module._ResourceOwnerEnlarge=e=>(_ResourceOwnerEnlarge=Module._ResourceOwnerEnlarge=wasmExports.ResourceOwnerEnlarge)(e),_ResourceOwnerRemember=Module._ResourceOwnerRemember=(e,t,r)=>(_ResourceOwnerRemember=Module._ResourceOwnerRemember=wasmExports.ResourceOwnerRemember)(e,t,r),_DecrTupleDescRefCount=Module._DecrTupleDescRefCount=e=>(_DecrTupleDescRefCount=Module._DecrTupleDescRefCount=wasmExports.DecrTupleDescRefCount)(e),_ResourceOwnerForget=Module._ResourceOwnerForget=(e,t,r)=>(_ResourceOwnerForget=Module._ResourceOwnerForget=wasmExports.ResourceOwnerForget)(e,t,r),_datumIsEqual=Module._datumIsEqual=(e,t,r,a)=>(_datumIsEqual=Module._datumIsEqual=wasmExports.datumIsEqual)(e,t,r,a),_TupleDescInitEntryCollation=Module._TupleDescInitEntryCollation=(e,t,r)=>(_TupleDescInitEntryCollation=Module._TupleDescInitEntryCollation=wasmExports.TupleDescInitEntryCollation)(e,t,r),_stringToNode=Module._stringToNode=e=>(_stringToNode=Module._stringToNode=wasmExports.stringToNode)(e),_pg_detoast_datum_copy=Module._pg_detoast_datum_copy=e=>(_pg_detoast_datum_copy=Module._pg_detoast_datum_copy=wasmExports.pg_detoast_datum_copy)(e),_get_typlenbyvalalign=Module._get_typlenbyvalalign=(e,t,r,a)=>(_get_typlenbyvalalign=Module._get_typlenbyvalalign=wasmExports.get_typlenbyvalalign)(e,t,r,a),_deconstruct_array=Module._deconstruct_array=(e,t,r,a,o,s,n,_)=>(_deconstruct_array=Module._deconstruct_array=wasmExports.deconstruct_array)(e,t,r,a,o,s,n,_),_tbm_add_tuples=Module._tbm_add_tuples=(e,t,r,a)=>(_tbm_add_tuples=Module._tbm_add_tuples=wasmExports.tbm_add_tuples)(e,t,r,a),_ginPostingListDecode=Module._ginPostingListDecode=(e,t)=>(_ginPostingListDecode=Module._ginPostingListDecode=wasmExports.ginPostingListDecode)(e,t),_ItemPointerCompare=Module._ItemPointerCompare=(e,t)=>(_ItemPointerCompare=Module._ItemPointerCompare=wasmExports.ItemPointerCompare)(e,t),_LockPage=Module._LockPage=(e,t,r)=>(_LockPage=Module._LockPage=wasmExports.LockPage)(e,t,r),_UnlockPage=Module._UnlockPage=(e,t,r)=>(_UnlockPage=Module._UnlockPage=wasmExports.UnlockPage)(e,t,r),_vacuum_delay_point=Module._vacuum_delay_point=()=>(_vacuum_delay_point=Module._vacuum_delay_point=wasmExports.vacuum_delay_point)(),_RecordFreeIndexPage=Module._RecordFreeIndexPage=(e,t)=>(_RecordFreeIndexPage=Module._RecordFreeIndexPage=wasmExports.RecordFreeIndexPage)(e,t),_IndexFreeSpaceMapVacuum=Module._IndexFreeSpaceMapVacuum=e=>(_IndexFreeSpaceMapVacuum=Module._IndexFreeSpaceMapVacuum=wasmExports.IndexFreeSpaceMapVacuum)(e),_log_newpage_range=Module._log_newpage_range=(e,t,r,a,o)=>(_log_newpage_range=Module._log_newpage_range=wasmExports.log_newpage_range)(e,t,r,a,o),_GetFreeIndexPage=Module._GetFreeIndexPage=e=>(_GetFreeIndexPage=Module._GetFreeIndexPage=wasmExports.GetFreeIndexPage)(e),_ConditionalLockBuffer=Module._ConditionalLockBuffer=e=>(_ConditionalLockBuffer=Module._ConditionalLockBuffer=wasmExports.ConditionalLockBuffer)(e),_LockBufferForCleanup=Module._LockBufferForCleanup=e=>(_LockBufferForCleanup=Module._LockBufferForCleanup=wasmExports.LockBufferForCleanup)(e),_gistcheckpage=Module._gistcheckpage=(e,t)=>(_gistcheckpage=Module._gistcheckpage=wasmExports.gistcheckpage)(e,t),_PageIndexMultiDelete=Module._PageIndexMultiDelete=(e,t,r)=>(_PageIndexMultiDelete=Module._PageIndexMultiDelete=wasmExports.PageIndexMultiDelete)(e,t,r),_smgrnblocks=Module._smgrnblocks=(e,t)=>(_smgrnblocks=Module._smgrnblocks=wasmExports.smgrnblocks)(e,t),_list_free_deep=Module._list_free_deep=e=>(_list_free_deep=Module._list_free_deep=wasmExports.list_free_deep)(e),_pairingheap_remove_first=Module._pairingheap_remove_first=e=>(_pairingheap_remove_first=Module._pairingheap_remove_first=wasmExports.pairingheap_remove_first)(e),_pairingheap_add=Module._pairingheap_add=(e,t)=>(_pairingheap_add=Module._pairingheap_add=wasmExports.pairingheap_add)(e,t),_float_overflow_error=Module._float_overflow_error=()=>(_float_overflow_error=Module._float_overflow_error=wasmExports.float_overflow_error)(),_float_underflow_error=Module._float_underflow_error=()=>(_float_underflow_error=Module._float_underflow_error=wasmExports.float_underflow_error)(),_DirectFunctionCall5Coll=Module._DirectFunctionCall5Coll=(e,t,r,a,o,s,n)=>(_DirectFunctionCall5Coll=Module._DirectFunctionCall5Coll=wasmExports.DirectFunctionCall5Coll)(e,t,r,a,o,s,n),_pairingheap_allocate=Module._pairingheap_allocate=(e,t)=>(_pairingheap_allocate=Module._pairingheap_allocate=wasmExports.pairingheap_allocate)(e,t),_GenerationContextCreate=Module._GenerationContextCreate=(e,t,r,a,o)=>(_GenerationContextCreate=Module._GenerationContextCreate=wasmExports.GenerationContextCreate)(e,t,r,a,o),_pgstat_progress_update_param=Module._pgstat_progress_update_param=(e,t)=>(_pgstat_progress_update_param=Module._pgstat_progress_update_param=wasmExports.pgstat_progress_update_param)(e,t),__hash_getbuf=Module.__hash_getbuf=(e,t,r,a)=>(__hash_getbuf=Module.__hash_getbuf=wasmExports._hash_getbuf)(e,t,r,a),__hash_relbuf=Module.__hash_relbuf=(e,t)=>(__hash_relbuf=Module.__hash_relbuf=wasmExports._hash_relbuf)(e,t),__hash_get_indextuple_hashkey=Module.__hash_get_indextuple_hashkey=e=>(__hash_get_indextuple_hashkey=Module.__hash_get_indextuple_hashkey=wasmExports._hash_get_indextuple_hashkey)(e),__hash_getbuf_with_strategy=Module.__hash_getbuf_with_strategy=(e,t,r,a,o)=>(__hash_getbuf_with_strategy=Module.__hash_getbuf_with_strategy=wasmExports._hash_getbuf_with_strategy)(e,t,r,a,o),__hash_ovflblkno_to_bitno=Module.__hash_ovflblkno_to_bitno=(e,t)=>(__hash_ovflblkno_to_bitno=Module.__hash_ovflblkno_to_bitno=wasmExports._hash_ovflblkno_to_bitno)(e,t),_list_member_oid=Module._list_member_oid=(e,t)=>(_list_member_oid=Module._list_member_oid=wasmExports.list_member_oid)(e,t),_HeapTupleSatisfiesVisibility=Module._HeapTupleSatisfiesVisibility=(e,t,r)=>(_HeapTupleSatisfiesVisibility=Module._HeapTupleSatisfiesVisibility=wasmExports.HeapTupleSatisfiesVisibility)(e,t,r),_read_stream_begin_relation=Module._read_stream_begin_relation=(e,t,r,a,o,s,n)=>(_read_stream_begin_relation=Module._read_stream_begin_relation=wasmExports.read_stream_begin_relation)(e,t,r,a,o,s,n),_GetAccessStrategy=Module._GetAccessStrategy=e=>(_GetAccessStrategy=Module._GetAccessStrategy=wasmExports.GetAccessStrategy)(e),_FreeAccessStrategy=Module._FreeAccessStrategy=e=>(_FreeAccessStrategy=Module._FreeAccessStrategy=wasmExports.FreeAccessStrategy)(e),_read_stream_end=Module._read_stream_end=e=>(_read_stream_end=Module._read_stream_end=wasmExports.read_stream_end)(e),_heap_getnext=Module._heap_getnext=(e,t)=>(_heap_getnext=Module._heap_getnext=wasmExports.heap_getnext)(e,t),_HeapTupleSatisfiesVacuum=Module._HeapTupleSatisfiesVacuum=(e,t,r)=>(_HeapTupleSatisfiesVacuum=Module._HeapTupleSatisfiesVacuum=wasmExports.HeapTupleSatisfiesVacuum)(e,t,r),_GetMultiXactIdMembers=Module._GetMultiXactIdMembers=(e,t,r,a)=>(_GetMultiXactIdMembers=Module._GetMultiXactIdMembers=wasmExports.GetMultiXactIdMembers)(e,t,r,a),_TransactionIdPrecedes=Module._TransactionIdPrecedes=(e,t)=>(_TransactionIdPrecedes=Module._TransactionIdPrecedes=wasmExports.TransactionIdPrecedes)(e,t),_HeapTupleGetUpdateXid=Module._HeapTupleGetUpdateXid=e=>(_HeapTupleGetUpdateXid=Module._HeapTupleGetUpdateXid=wasmExports.HeapTupleGetUpdateXid)(e),_visibilitymap_clear=Module._visibilitymap_clear=(e,t,r,a)=>(_visibilitymap_clear=Module._visibilitymap_clear=wasmExports.visibilitymap_clear)(e,t,r,a),_pgstat_count_heap_insert=Module._pgstat_count_heap_insert=(e,t)=>(_pgstat_count_heap_insert=Module._pgstat_count_heap_insert=wasmExports.pgstat_count_heap_insert)(e,t),_ExecFetchSlotHeapTuple=Module._ExecFetchSlotHeapTuple=(e,t,r)=>(_ExecFetchSlotHeapTuple=Module._ExecFetchSlotHeapTuple=wasmExports.ExecFetchSlotHeapTuple)(e,t,r),_PageGetHeapFreeSpace=Module._PageGetHeapFreeSpace=e=>(_PageGetHeapFreeSpace=Module._PageGetHeapFreeSpace=wasmExports.PageGetHeapFreeSpace)(e),_visibilitymap_pin=Module._visibilitymap_pin=(e,t,r)=>(_visibilitymap_pin=Module._visibilitymap_pin=wasmExports.visibilitymap_pin)(e,t,r),_HeapTupleSatisfiesUpdate=Module._HeapTupleSatisfiesUpdate=(e,t,r)=>(_HeapTupleSatisfiesUpdate=Module._HeapTupleSatisfiesUpdate=wasmExports.HeapTupleSatisfiesUpdate)(e,t,r),_TransactionIdIsCurrentTransactionId=Module._TransactionIdIsCurrentTransactionId=e=>(_TransactionIdIsCurrentTransactionId=Module._TransactionIdIsCurrentTransactionId=wasmExports.TransactionIdIsCurrentTransactionId)(e),_TransactionIdDidCommit=Module._TransactionIdDidCommit=e=>(_TransactionIdDidCommit=Module._TransactionIdDidCommit=wasmExports.TransactionIdDidCommit)(e),_TransactionIdIsInProgress=Module._TransactionIdIsInProgress=e=>(_TransactionIdIsInProgress=Module._TransactionIdIsInProgress=wasmExports.TransactionIdIsInProgress)(e),_bms_free=Module._bms_free=e=>(_bms_free=Module._bms_free=wasmExports.bms_free)(e),_bms_add_members=Module._bms_add_members=(e,t)=>(_bms_add_members=Module._bms_add_members=wasmExports.bms_add_members)(e,t),_bms_next_member=Module._bms_next_member=(e,t)=>(_bms_next_member=Module._bms_next_member=wasmExports.bms_next_member)(e,t),_bms_overlap=Module._bms_overlap=(e,t)=>(_bms_overlap=Module._bms_overlap=wasmExports.bms_overlap)(e,t),_MultiXactIdPrecedes=Module._MultiXactIdPrecedes=(e,t)=>(_MultiXactIdPrecedes=Module._MultiXactIdPrecedes=wasmExports.MultiXactIdPrecedes)(e,t),_heap_tuple_needs_eventual_freeze=Module._heap_tuple_needs_eventual_freeze=e=>(_heap_tuple_needs_eventual_freeze=Module._heap_tuple_needs_eventual_freeze=wasmExports.heap_tuple_needs_eventual_freeze)(e),_PrefetchBuffer=Module._PrefetchBuffer=(e,t,r,a)=>(_PrefetchBuffer=Module._PrefetchBuffer=wasmExports.PrefetchBuffer)(e,t,r,a),_XLogRecGetBlockTagExtended=Module._XLogRecGetBlockTagExtended=(e,t,r,a,o,s)=>(_XLogRecGetBlockTagExtended=Module._XLogRecGetBlockTagExtended=wasmExports.XLogRecGetBlockTagExtended)(e,t,r,a,o,s),_read_stream_next_buffer=Module._read_stream_next_buffer=(e,t)=>(_read_stream_next_buffer=Module._read_stream_next_buffer=wasmExports.read_stream_next_buffer)(e,t),_smgrexists=Module._smgrexists=(e,t)=>(_smgrexists=Module._smgrexists=wasmExports.smgrexists)(e,t),_table_slot_create=Module._table_slot_create=(e,t)=>(_table_slot_create=Module._table_slot_create=wasmExports.table_slot_create)(e,t),_ExecDropSingleTupleTableSlot=Module._ExecDropSingleTupleTableSlot=e=>(_ExecDropSingleTupleTableSlot=Module._ExecDropSingleTupleTableSlot=wasmExports.ExecDropSingleTupleTableSlot)(e),_CreateExecutorState=Module._CreateExecutorState=()=>(_CreateExecutorState=Module._CreateExecutorState=wasmExports.CreateExecutorState)(),_MakePerTupleExprContext=Module._MakePerTupleExprContext=e=>(_MakePerTupleExprContext=Module._MakePerTupleExprContext=wasmExports.MakePerTupleExprContext)(e),_GetOldestNonRemovableTransactionId=Module._GetOldestNonRemovableTransactionId=e=>(_GetOldestNonRemovableTransactionId=Module._GetOldestNonRemovableTransactionId=wasmExports.GetOldestNonRemovableTransactionId)(e),_FreeExecutorState=Module._FreeExecutorState=e=>(_FreeExecutorState=Module._FreeExecutorState=wasmExports.FreeExecutorState)(e),_MakeSingleTupleTableSlot=Module._MakeSingleTupleTableSlot=(e,t)=>(_MakeSingleTupleTableSlot=Module._MakeSingleTupleTableSlot=wasmExports.MakeSingleTupleTableSlot)(e,t),_ExecStoreHeapTuple=Module._ExecStoreHeapTuple=(e,t,r)=>(_ExecStoreHeapTuple=Module._ExecStoreHeapTuple=wasmExports.ExecStoreHeapTuple)(e,t,r),_visibilitymap_get_status=Module._visibilitymap_get_status=(e,t,r)=>(_visibilitymap_get_status=Module._visibilitymap_get_status=wasmExports.visibilitymap_get_status)(e,t,r),_ExecStoreAllNullTuple=Module._ExecStoreAllNullTuple=e=>(_ExecStoreAllNullTuple=Module._ExecStoreAllNullTuple=wasmExports.ExecStoreAllNullTuple)(e),_XidInMVCCSnapshot=Module._XidInMVCCSnapshot=(e,t)=>(_XidInMVCCSnapshot=Module._XidInMVCCSnapshot=wasmExports.XidInMVCCSnapshot)(e,t),_hash_seq_init=Module._hash_seq_init=(e,t)=>(_hash_seq_init=Module._hash_seq_init=wasmExports.hash_seq_init)(e,t),_hash_seq_search=Module._hash_seq_search=e=>(_hash_seq_search=Module._hash_seq_search=wasmExports.hash_seq_search)(e),_ftruncate=Module._ftruncate=(e,t)=>(_ftruncate=Module._ftruncate=wasmExports.ftruncate)(e,t),_fd_fsync_fname=Module._fd_fsync_fname=(e,t)=>(_fd_fsync_fname=Module._fd_fsync_fname=wasmExports.fd_fsync_fname)(e,t),_get_namespace_name=Module._get_namespace_name=e=>(_get_namespace_name=Module._get_namespace_name=wasmExports.get_namespace_name)(e),_GetRecordedFreeSpace=Module._GetRecordedFreeSpace=(e,t)=>(_GetRecordedFreeSpace=Module._GetRecordedFreeSpace=wasmExports.GetRecordedFreeSpace)(e,t),_vac_estimate_reltuples=Module._vac_estimate_reltuples=(e,t,r,a)=>(_vac_estimate_reltuples=Module._vac_estimate_reltuples=wasmExports.vac_estimate_reltuples)(e,t,r,a),_WaitLatch=Module._WaitLatch=(e,t,r,a)=>(_WaitLatch=Module._WaitLatch=wasmExports.WaitLatch)(e,t,r,a),_ResetLatch=Module._ResetLatch=e=>(_ResetLatch=Module._ResetLatch=wasmExports.ResetLatch)(e),_clock_gettime=Module._clock_gettime=(e,t)=>(_clock_gettime=Module._clock_gettime=wasmExports.clock_gettime)(e,t),_WalUsageAccumDiff=Module._WalUsageAccumDiff=(e,t,r)=>(_WalUsageAccumDiff=Module._WalUsageAccumDiff=wasmExports.WalUsageAccumDiff)(e,t,r),_BufferUsageAccumDiff=Module._BufferUsageAccumDiff=(e,t,r)=>(_BufferUsageAccumDiff=Module._BufferUsageAccumDiff=wasmExports.BufferUsageAccumDiff)(e,t,r),_visibilitymap_prepare_truncate=Module._visibilitymap_prepare_truncate=(e,t)=>(_visibilitymap_prepare_truncate=Module._visibilitymap_prepare_truncate=wasmExports.visibilitymap_prepare_truncate)(e,t),_pg_class_aclcheck=Module._pg_class_aclcheck=(e,t,r)=>(_pg_class_aclcheck=Module._pg_class_aclcheck=wasmExports.pg_class_aclcheck)(e,t,r),_btboolcmp=Module._btboolcmp=e=>(_btboolcmp=Module._btboolcmp=wasmExports.btboolcmp)(e),_btint2cmp=Module._btint2cmp=e=>(_btint2cmp=Module._btint2cmp=wasmExports.btint2cmp)(e),_btint4cmp=Module._btint4cmp=e=>(_btint4cmp=Module._btint4cmp=wasmExports.btint4cmp)(e),_btint8cmp=Module._btint8cmp=e=>(_btint8cmp=Module._btint8cmp=wasmExports.btint8cmp)(e),_btoidcmp=Module._btoidcmp=e=>(_btoidcmp=Module._btoidcmp=wasmExports.btoidcmp)(e),_btcharcmp=Module._btcharcmp=e=>(_btcharcmp=Module._btcharcmp=wasmExports.btcharcmp)(e),__bt_form_posting=Module.__bt_form_posting=(e,t,r)=>(__bt_form_posting=Module.__bt_form_posting=wasmExports._bt_form_posting)(e,t,r),__bt_mkscankey=Module.__bt_mkscankey=(e,t)=>(__bt_mkscankey=Module.__bt_mkscankey=wasmExports._bt_mkscankey)(e,t),__bt_checkpage=Module.__bt_checkpage=(e,t)=>(__bt_checkpage=Module.__bt_checkpage=wasmExports._bt_checkpage)(e,t),__bt_compare=Module.__bt_compare=(e,t,r,a)=>(__bt_compare=Module.__bt_compare=wasmExports._bt_compare)(e,t,r,a),__bt_relbuf=Module.__bt_relbuf=(e,t)=>(__bt_relbuf=Module.__bt_relbuf=wasmExports._bt_relbuf)(e,t),__bt_search=Module.__bt_search=(e,t,r,a,o)=>(__bt_search=Module.__bt_search=wasmExports._bt_search)(e,t,r,a,o),__bt_binsrch_insert=Module.__bt_binsrch_insert=(e,t)=>(__bt_binsrch_insert=Module.__bt_binsrch_insert=wasmExports._bt_binsrch_insert)(e,t),__bt_freestack=Module.__bt_freestack=e=>(__bt_freestack=Module.__bt_freestack=wasmExports._bt_freestack)(e),__bt_metaversion=Module.__bt_metaversion=(e,t,r)=>(__bt_metaversion=Module.__bt_metaversion=wasmExports._bt_metaversion)(e,t,r),__bt_allequalimage=Module.__bt_allequalimage=(e,t)=>(__bt_allequalimage=Module.__bt_allequalimage=wasmExports._bt_allequalimage)(e,t),_before_shmem_exit=Module._before_shmem_exit=(e,t)=>(_before_shmem_exit=Module._before_shmem_exit=wasmExports.before_shmem_exit)(e,t),_cancel_before_shmem_exit=Module._cancel_before_shmem_exit=(e,t)=>(_cancel_before_shmem_exit=Module._cancel_before_shmem_exit=wasmExports.cancel_before_shmem_exit)(e,t),_pg_re_throw=Module._pg_re_throw=()=>(_pg_re_throw=Module._pg_re_throw=wasmExports.pg_re_throw)(),_get_opfamily_member=Module._get_opfamily_member=(e,t,r,a)=>(_get_opfamily_member=Module._get_opfamily_member=wasmExports.get_opfamily_member)(e,t,r,a),__bt_check_natts=Module.__bt_check_natts=(e,t,r,a)=>(__bt_check_natts=Module.__bt_check_natts=wasmExports._bt_check_natts)(e,t,r,a),_strncpy=Module._strncpy=(e,t,r)=>(_strncpy=Module._strncpy=wasmExports.strncpy)(e,t,r),_timestamptz_to_str=Module._timestamptz_to_str=e=>(_timestamptz_to_str=Module._timestamptz_to_str=wasmExports.timestamptz_to_str)(e),_XLogRecGetBlockRefInfo=Module._XLogRecGetBlockRefInfo=(e,t,r,a,o)=>(_XLogRecGetBlockRefInfo=Module._XLogRecGetBlockRefInfo=wasmExports.XLogRecGetBlockRefInfo)(e,t,r,a,o),_varstr_cmp=Module._varstr_cmp=(e,t,r,a,o)=>(_varstr_cmp=Module._varstr_cmp=wasmExports.varstr_cmp)(e,t,r,a,o),_exprType=Module._exprType=e=>(_exprType=Module._exprType=wasmExports.exprType)(e),_GetActiveSnapshot=Module._GetActiveSnapshot=()=>(_GetActiveSnapshot=Module._GetActiveSnapshot=wasmExports.GetActiveSnapshot)(),_errdetail_relkind_not_supported=Module._errdetail_relkind_not_supported=e=>(_errdetail_relkind_not_supported=Module._errdetail_relkind_not_supported=wasmExports.errdetail_relkind_not_supported)(e),_table_openrv=Module._table_openrv=(e,t)=>(_table_openrv=Module._table_openrv=wasmExports.table_openrv)(e,t),_table_slot_callbacks=Module._table_slot_callbacks=e=>(_table_slot_callbacks=Module._table_slot_callbacks=wasmExports.table_slot_callbacks)(e),_clamp_row_est=Module._clamp_row_est=e=>(_clamp_row_est=Module._clamp_row_est=wasmExports.clamp_row_est)(e),_estimate_expression_value=Module._estimate_expression_value=(e,t)=>(_estimate_expression_value=Module._estimate_expression_value=wasmExports.estimate_expression_value)(e,t),_XLogFlush=Module._XLogFlush=e=>(_XLogFlush=Module._XLogFlush=wasmExports.XLogFlush)(e),_get_call_result_type=Module._get_call_result_type=(e,t,r)=>(_get_call_result_type=Module._get_call_result_type=wasmExports.get_call_result_type)(e,t,r),_HeapTupleHeaderGetDatum=Module._HeapTupleHeaderGetDatum=e=>(_HeapTupleHeaderGetDatum=Module._HeapTupleHeaderGetDatum=wasmExports.HeapTupleHeaderGetDatum)(e),_GenericXLogStart=Module._GenericXLogStart=e=>(_GenericXLogStart=Module._GenericXLogStart=wasmExports.GenericXLogStart)(e),_GenericXLogRegisterBuffer=Module._GenericXLogRegisterBuffer=(e,t,r)=>(_GenericXLogRegisterBuffer=Module._GenericXLogRegisterBuffer=wasmExports.GenericXLogRegisterBuffer)(e,t,r),_GenericXLogFinish=Module._GenericXLogFinish=e=>(_GenericXLogFinish=Module._GenericXLogFinish=wasmExports.GenericXLogFinish)(e),_GenericXLogAbort=Module._GenericXLogAbort=e=>(_GenericXLogAbort=Module._GenericXLogAbort=wasmExports.GenericXLogAbort)(e),_errmsg_plural=Module._errmsg_plural=(e,t,r,a)=>(_errmsg_plural=Module._errmsg_plural=wasmExports.errmsg_plural)(e,t,r,a),_ReadNextMultiXactId=Module._ReadNextMultiXactId=()=>(_ReadNextMultiXactId=Module._ReadNextMultiXactId=wasmExports.ReadNextMultiXactId)(),_ReadMultiXactIdRange=Module._ReadMultiXactIdRange=(e,t)=>(_ReadMultiXactIdRange=Module._ReadMultiXactIdRange=wasmExports.ReadMultiXactIdRange)(e,t),_MultiXactIdPrecedesOrEquals=Module._MultiXactIdPrecedesOrEquals=(e,t)=>(_MultiXactIdPrecedesOrEquals=Module._MultiXactIdPrecedesOrEquals=wasmExports.MultiXactIdPrecedesOrEquals)(e,t),_init_MultiFuncCall=Module._init_MultiFuncCall=e=>(_init_MultiFuncCall=Module._init_MultiFuncCall=wasmExports.init_MultiFuncCall)(e),_TupleDescGetAttInMetadata=Module._TupleDescGetAttInMetadata=e=>(_TupleDescGetAttInMetadata=Module._TupleDescGetAttInMetadata=wasmExports.TupleDescGetAttInMetadata)(e),_per_MultiFuncCall=Module._per_MultiFuncCall=e=>(_per_MultiFuncCall=Module._per_MultiFuncCall=wasmExports.per_MultiFuncCall)(e),_BuildTupleFromCStrings=Module._BuildTupleFromCStrings=(e,t)=>(_BuildTupleFromCStrings=Module._BuildTupleFromCStrings=wasmExports.BuildTupleFromCStrings)(e,t),_end_MultiFuncCall=Module._end_MultiFuncCall=(e,t)=>(_end_MultiFuncCall=Module._end_MultiFuncCall=wasmExports.end_MultiFuncCall)(e,t),_GetCurrentSubTransactionId=Module._GetCurrentSubTransactionId=()=>(_GetCurrentSubTransactionId=Module._GetCurrentSubTransactionId=wasmExports.GetCurrentSubTransactionId)(),_WaitForBackgroundWorkerShutdown=Module._WaitForBackgroundWorkerShutdown=e=>(_WaitForBackgroundWorkerShutdown=Module._WaitForBackgroundWorkerShutdown=wasmExports.WaitForBackgroundWorkerShutdown)(e),_RegisterDynamicBackgroundWorker=Module._RegisterDynamicBackgroundWorker=(e,t)=>(_RegisterDynamicBackgroundWorker=Module._RegisterDynamicBackgroundWorker=wasmExports.RegisterDynamicBackgroundWorker)(e,t),_BackgroundWorkerUnblockSignals=Module._BackgroundWorkerUnblockSignals=()=>(_BackgroundWorkerUnblockSignals=Module._BackgroundWorkerUnblockSignals=wasmExports.BackgroundWorkerUnblockSignals)(),_BackgroundWorkerInitializeConnectionByOid=Module._BackgroundWorkerInitializeConnectionByOid=(e,t,r)=>(_BackgroundWorkerInitializeConnectionByOid=Module._BackgroundWorkerInitializeConnectionByOid=wasmExports.BackgroundWorkerInitializeConnectionByOid)(e,t,r),_GetDatabaseEncoding=Module._GetDatabaseEncoding=()=>(_GetDatabaseEncoding=Module._GetDatabaseEncoding=wasmExports.GetDatabaseEncoding)(),_RmgrNotFound=Module._RmgrNotFound=e=>(_RmgrNotFound=Module._RmgrNotFound=wasmExports.RmgrNotFound)(e),_InitMaterializedSRF=Module._InitMaterializedSRF=(e,t)=>(_InitMaterializedSRF=Module._InitMaterializedSRF=wasmExports.InitMaterializedSRF)(e,t),_tuplestore_putvalues=Module._tuplestore_putvalues=(e,t,r,a)=>(_tuplestore_putvalues=Module._tuplestore_putvalues=wasmExports.tuplestore_putvalues)(e,t,r,a),_AllocateFile=Module._AllocateFile=(e,t)=>(_AllocateFile=Module._AllocateFile=wasmExports.AllocateFile)(e,t),_FreeFile=Module._FreeFile=e=>(_FreeFile=Module._FreeFile=wasmExports.FreeFile)(e),_fd_durable_rename=Module._fd_durable_rename=(e,t,r)=>(_fd_durable_rename=Module._fd_durable_rename=wasmExports.fd_durable_rename)(e,t,r),_BlessTupleDesc=Module._BlessTupleDesc=e=>(_BlessTupleDesc=Module._BlessTupleDesc=wasmExports.BlessTupleDesc)(e),_fstat=Module._fstat=(e,t)=>(_fstat=Module._fstat=wasmExports.fstat)(e,t),_superuser_arg=Module._superuser_arg=e=>(_superuser_arg=Module._superuser_arg=wasmExports.superuser_arg)(e),_wal_segment_close=Module._wal_segment_close=e=>(_wal_segment_close=Module._wal_segment_close=wasmExports.wal_segment_close)(e),_wal_segment_open=Module._wal_segment_open=(e,t,r)=>(_wal_segment_open=Module._wal_segment_open=wasmExports.wal_segment_open)(e,t,r),_XLogReaderAllocate=Module._XLogReaderAllocate=(e,t,r,a)=>(_XLogReaderAllocate=Module._XLogReaderAllocate=wasmExports.XLogReaderAllocate)(e,t,r,a),_XLogReadRecord=Module._XLogReadRecord=(e,t)=>(_XLogReadRecord=Module._XLogReadRecord=wasmExports.XLogReadRecord)(e,t),_XLogReaderFree=Module._XLogReaderFree=e=>(_XLogReaderFree=Module._XLogReaderFree=wasmExports.XLogReaderFree)(e),_GetTopFullTransactionId=Module._GetTopFullTransactionId=()=>(_GetTopFullTransactionId=Module._GetTopFullTransactionId=wasmExports.GetTopFullTransactionId)(),_GetCurrentTransactionNestLevel=Module._GetCurrentTransactionNestLevel=()=>(_GetCurrentTransactionNestLevel=Module._GetCurrentTransactionNestLevel=wasmExports.GetCurrentTransactionNestLevel)(),_ResourceOwnerCreate=Module._ResourceOwnerCreate=(e,t)=>(_ResourceOwnerCreate=Module._ResourceOwnerCreate=wasmExports.ResourceOwnerCreate)(e,t),_RegisterXactCallback=Module._RegisterXactCallback=(e,t)=>(_RegisterXactCallback=Module._RegisterXactCallback=wasmExports.RegisterXactCallback)(e,t),_RegisterSubXactCallback=Module._RegisterSubXactCallback=(e,t)=>(_RegisterSubXactCallback=Module._RegisterSubXactCallback=wasmExports.RegisterSubXactCallback)(e,t),_BeginInternalSubTransaction=Module._BeginInternalSubTransaction=e=>(_BeginInternalSubTransaction=Module._BeginInternalSubTransaction=wasmExports.BeginInternalSubTransaction)(e),_ReleaseCurrentSubTransaction=Module._ReleaseCurrentSubTransaction=()=>(_ReleaseCurrentSubTransaction=Module._ReleaseCurrentSubTransaction=wasmExports.ReleaseCurrentSubTransaction)(),_ResourceOwnerDelete=Module._ResourceOwnerDelete=e=>(_ResourceOwnerDelete=Module._ResourceOwnerDelete=wasmExports.ResourceOwnerDelete)(e),_RollbackAndReleaseCurrentSubTransaction=Module._RollbackAndReleaseCurrentSubTransaction=()=>(_RollbackAndReleaseCurrentSubTransaction=Module._RollbackAndReleaseCurrentSubTransaction=wasmExports.RollbackAndReleaseCurrentSubTransaction)(),_ReleaseExternalFD=Module._ReleaseExternalFD=()=>(_ReleaseExternalFD=Module._ReleaseExternalFD=wasmExports.ReleaseExternalFD)(),_GetFlushRecPtr=Module._GetFlushRecPtr=e=>(_GetFlushRecPtr=Module._GetFlushRecPtr=wasmExports.GetFlushRecPtr)(e),_GetXLogReplayRecPtr=Module._GetXLogReplayRecPtr=e=>(_GetXLogReplayRecPtr=Module._GetXLogReplayRecPtr=wasmExports.GetXLogReplayRecPtr)(e),_TimestampDifferenceMilliseconds=Module._TimestampDifferenceMilliseconds=(e,t)=>(_TimestampDifferenceMilliseconds=Module._TimestampDifferenceMilliseconds=wasmExports.TimestampDifferenceMilliseconds)(e,t),_numeric_in=Module._numeric_in=e=>(_numeric_in=Module._numeric_in=wasmExports.numeric_in)(e),_DirectFunctionCall3Coll=Module._DirectFunctionCall3Coll=(e,t,r,a,o)=>(_DirectFunctionCall3Coll=Module._DirectFunctionCall3Coll=wasmExports.DirectFunctionCall3Coll)(e,t,r,a,o),_XLogFindNextRecord=Module._XLogFindNextRecord=(e,t)=>(_XLogFindNextRecord=Module._XLogFindNextRecord=wasmExports.XLogFindNextRecord)(e,t),_RestoreBlockImage=Module._RestoreBlockImage=(e,t,r)=>(_RestoreBlockImage=Module._RestoreBlockImage=wasmExports.RestoreBlockImage)(e,t,r),_timestamptz_in=Module._timestamptz_in=e=>(_timestamptz_in=Module._timestamptz_in=wasmExports.timestamptz_in)(e),_fscanf=Module._fscanf=(e,t,r)=>(_fscanf=Module._fscanf=wasmExports.fscanf)(e,t,r),_XLogRecStoreStats=Module._XLogRecStoreStats=(e,t)=>(_XLogRecStoreStats=Module._XLogRecStoreStats=wasmExports.XLogRecStoreStats)(e,t),_hash_get_num_entries=Module._hash_get_num_entries=e=>(_hash_get_num_entries=Module._hash_get_num_entries=wasmExports.hash_get_num_entries)(e),_read_local_xlog_page_no_wait=Module._read_local_xlog_page_no_wait=(e,t,r,a,o)=>(_read_local_xlog_page_no_wait=Module._read_local_xlog_page_no_wait=wasmExports.read_local_xlog_page_no_wait)(e,t,r,a,o),_escape_json=Module._escape_json=(e,t)=>(_escape_json=Module._escape_json=wasmExports.escape_json)(e,t),_list_sort=Module._list_sort=(e,t)=>(_list_sort=Module._list_sort=wasmExports.list_sort)(e,t),_getegid=Module._getegid=()=>(_getegid=Module._getegid=wasmExports.getegid)(),_pg_checksum_page=Module._pg_checksum_page=(e,t)=>(_pg_checksum_page=Module._pg_checksum_page=wasmExports.pg_checksum_page)(e,t),_bbsink_forward_end_archive=Module._bbsink_forward_end_archive=e=>(_bbsink_forward_end_archive=Module._bbsink_forward_end_archive=wasmExports.bbsink_forward_end_archive)(e),_bbsink_forward_begin_manifest=Module._bbsink_forward_begin_manifest=e=>(_bbsink_forward_begin_manifest=Module._bbsink_forward_begin_manifest=wasmExports.bbsink_forward_begin_manifest)(e),_bbsink_forward_end_manifest=Module._bbsink_forward_end_manifest=e=>(_bbsink_forward_end_manifest=Module._bbsink_forward_end_manifest=wasmExports.bbsink_forward_end_manifest)(e),_bbsink_forward_end_backup=Module._bbsink_forward_end_backup=(e,t,r)=>(_bbsink_forward_end_backup=Module._bbsink_forward_end_backup=wasmExports.bbsink_forward_end_backup)(e,t,r),_bbsink_forward_cleanup=Module._bbsink_forward_cleanup=e=>(_bbsink_forward_cleanup=Module._bbsink_forward_cleanup=wasmExports.bbsink_forward_cleanup)(e),_list_concat=Module._list_concat=(e,t)=>(_list_concat=Module._list_concat=wasmExports.list_concat)(e,t),_bbsink_forward_begin_backup=Module._bbsink_forward_begin_backup=e=>(_bbsink_forward_begin_backup=Module._bbsink_forward_begin_backup=wasmExports.bbsink_forward_begin_backup)(e),_bbsink_forward_archive_contents=Module._bbsink_forward_archive_contents=(e,t)=>(_bbsink_forward_archive_contents=Module._bbsink_forward_archive_contents=wasmExports.bbsink_forward_archive_contents)(e,t),_bbsink_forward_begin_archive=Module._bbsink_forward_begin_archive=(e,t)=>(_bbsink_forward_begin_archive=Module._bbsink_forward_begin_archive=wasmExports.bbsink_forward_begin_archive)(e,t),_bbsink_forward_manifest_contents=Module._bbsink_forward_manifest_contents=(e,t)=>(_bbsink_forward_manifest_contents=Module._bbsink_forward_manifest_contents=wasmExports.bbsink_forward_manifest_contents)(e,t),_has_privs_of_role=Module._has_privs_of_role=(e,t)=>(_has_privs_of_role=Module._has_privs_of_role=wasmExports.has_privs_of_role)(e,t),_BaseBackupAddTarget=Module._BaseBackupAddTarget=(e,t,r)=>(_BaseBackupAddTarget=Module._BaseBackupAddTarget=wasmExports.BaseBackupAddTarget)(e,t,r),_list_copy=Module._list_copy=e=>(_list_copy=Module._list_copy=wasmExports.list_copy)(e),_tuplestore_puttuple=Module._tuplestore_puttuple=(e,t)=>(_tuplestore_puttuple=Module._tuplestore_puttuple=wasmExports.tuplestore_puttuple)(e,t),_makeRangeVar=Module._makeRangeVar=(e,t,r)=>(_makeRangeVar=Module._makeRangeVar=wasmExports.makeRangeVar)(e,t,r),_DefineIndex=Module._DefineIndex=(e,t,r,a,o,s,n,_,l,p,m,d)=>(_DefineIndex=Module._DefineIndex=wasmExports.DefineIndex)(e,t,r,a,o,s,n,_,l,p,m,d),_fread=Module._fread=(e,t,r,a)=>(_fread=Module._fread=wasmExports.fread)(e,t,r,a),_clearerr=Module._clearerr=e=>(_clearerr=Module._clearerr=wasmExports.clearerr)(e),_copyObjectImpl=Module._copyObjectImpl=e=>(_copyObjectImpl=Module._copyObjectImpl=wasmExports.copyObjectImpl)(e),_lappend_oid=Module._lappend_oid=(e,t)=>(_lappend_oid=Module._lappend_oid=wasmExports.lappend_oid)(e,t),_makeTypeNameFromNameList=Module._makeTypeNameFromNameList=e=>(_makeTypeNameFromNameList=Module._makeTypeNameFromNameList=wasmExports.makeTypeNameFromNameList)(e),_CatalogTupleUpdate=Module._CatalogTupleUpdate=(e,t,r)=>(_CatalogTupleUpdate=Module._CatalogTupleUpdate=wasmExports.CatalogTupleUpdate)(e,t,r),_get_rel_name=Module._get_rel_name=e=>(_get_rel_name=Module._get_rel_name=wasmExports.get_rel_name)(e),_CatalogTupleDelete=Module._CatalogTupleDelete=(e,t)=>(_CatalogTupleDelete=Module._CatalogTupleDelete=wasmExports.CatalogTupleDelete)(e,t),_CatalogTupleInsert=Module._CatalogTupleInsert=(e,t)=>(_CatalogTupleInsert=Module._CatalogTupleInsert=wasmExports.CatalogTupleInsert)(e,t),_recordDependencyOn=Module._recordDependencyOn=(e,t,r)=>(_recordDependencyOn=Module._recordDependencyOn=wasmExports.recordDependencyOn)(e,t,r),_get_element_type=Module._get_element_type=e=>(_get_element_type=Module._get_element_type=wasmExports.get_element_type)(e),_object_aclcheck=Module._object_aclcheck=(e,t,r,a)=>(_object_aclcheck=Module._object_aclcheck=wasmExports.object_aclcheck)(e,t,r,a),_superuser=Module._superuser=()=>(_superuser=Module._superuser=wasmExports.superuser)(),_SearchSysCacheAttName=Module._SearchSysCacheAttName=(e,t)=>(_SearchSysCacheAttName=Module._SearchSysCacheAttName=wasmExports.SearchSysCacheAttName)(e,t),_new_object_addresses=Module._new_object_addresses=()=>(_new_object_addresses=Module._new_object_addresses=wasmExports.new_object_addresses)(),_free_object_addresses=Module._free_object_addresses=e=>(_free_object_addresses=Module._free_object_addresses=wasmExports.free_object_addresses)(e),_performMultipleDeletions=Module._performMultipleDeletions=(e,t,r)=>(_performMultipleDeletions=Module._performMultipleDeletions=wasmExports.performMultipleDeletions)(e,t,r),_recordDependencyOnExpr=Module._recordDependencyOnExpr=(e,t,r,a)=>(_recordDependencyOnExpr=Module._recordDependencyOnExpr=wasmExports.recordDependencyOnExpr)(e,t,r,a),_query_tree_walker_impl=Module._query_tree_walker_impl=(e,t,r,a)=>(_query_tree_walker_impl=Module._query_tree_walker_impl=wasmExports.query_tree_walker_impl)(e,t,r,a),_expression_tree_walker_impl=Module._expression_tree_walker_impl=(e,t,r)=>(_expression_tree_walker_impl=Module._expression_tree_walker_impl=wasmExports.expression_tree_walker_impl)(e,t,r),_add_exact_object_address=Module._add_exact_object_address=(e,t)=>(_add_exact_object_address=Module._add_exact_object_address=wasmExports.add_exact_object_address)(e,t),_get_rel_relkind=Module._get_rel_relkind=e=>(_get_rel_relkind=Module._get_rel_relkind=wasmExports.get_rel_relkind)(e),_get_typtype=Module._get_typtype=e=>(_get_typtype=Module._get_typtype=wasmExports.get_typtype)(e),_list_delete_last=Module._list_delete_last=e=>(_list_delete_last=Module._list_delete_last=wasmExports.list_delete_last)(e),_type_is_collatable=Module._type_is_collatable=e=>(_type_is_collatable=Module._type_is_collatable=wasmExports.type_is_collatable)(e),_GetSysCacheOid=Module._GetSysCacheOid=(e,t,r,a,o,s)=>(_GetSysCacheOid=Module._GetSysCacheOid=wasmExports.GetSysCacheOid)(e,t,r,a,o,s),_CheckTableNotInUse=Module._CheckTableNotInUse=(e,t)=>(_CheckTableNotInUse=Module._CheckTableNotInUse=wasmExports.CheckTableNotInUse)(e,t),_construct_array=Module._construct_array=(e,t,r,a,o,s)=>(_construct_array=Module._construct_array=wasmExports.construct_array)(e,t,r,a,o,s),_make_parsestate=Module._make_parsestate=e=>(_make_parsestate=Module._make_parsestate=wasmExports.make_parsestate)(e),_transformExpr=Module._transformExpr=(e,t,r)=>(_transformExpr=Module._transformExpr=wasmExports.transformExpr)(e,t,r),_equal=Module._equal=(e,t)=>(_equal=Module._equal=wasmExports.equal)(e,t),_pull_var_clause=Module._pull_var_clause=(e,t)=>(_pull_var_clause=Module._pull_var_clause=wasmExports.pull_var_clause)(e,t),_get_attname=Module._get_attname=(e,t,r)=>(_get_attname=Module._get_attname=wasmExports.get_attname)(e,t,r),_coerce_to_target_type=Module._coerce_to_target_type=(e,t,r,a,o,s,n,_)=>(_coerce_to_target_type=Module._coerce_to_target_type=wasmExports.coerce_to_target_type)(e,t,r,a,o,s,n,_),_nodeToString=Module._nodeToString=e=>(_nodeToString=Module._nodeToString=wasmExports.nodeToString)(e),_parser_errposition=Module._parser_errposition=(e,t)=>(_parser_errposition=Module._parser_errposition=wasmExports.parser_errposition)(e,t),_exprTypmod=Module._exprTypmod=e=>(_exprTypmod=Module._exprTypmod=wasmExports.exprTypmod)(e),_get_base_element_type=Module._get_base_element_type=e=>(_get_base_element_type=Module._get_base_element_type=wasmExports.get_base_element_type)(e),_SystemFuncName=Module._SystemFuncName=e=>(_SystemFuncName=Module._SystemFuncName=wasmExports.SystemFuncName)(e),_CreateTrigger=Module._CreateTrigger=(e,t,r,a,o,s,n,_,l,p,m,d)=>(_CreateTrigger=Module._CreateTrigger=wasmExports.CreateTrigger)(e,t,r,a,o,s,n,_,l,p,m,d),_plan_create_index_workers=Module._plan_create_index_workers=(e,t)=>(_plan_create_index_workers=Module._plan_create_index_workers=wasmExports.plan_create_index_workers)(e,t),_get_rel_namespace=Module._get_rel_namespace=e=>(_get_rel_namespace=Module._get_rel_namespace=wasmExports.get_rel_namespace)(e),_ConditionalLockRelationOid=Module._ConditionalLockRelationOid=(e,t)=>(_ConditionalLockRelationOid=Module._ConditionalLockRelationOid=wasmExports.ConditionalLockRelationOid)(e,t),_RelnameGetRelid=Module._RelnameGetRelid=e=>(_RelnameGetRelid=Module._RelnameGetRelid=wasmExports.RelnameGetRelid)(e),_get_relkind_objtype=Module._get_relkind_objtype=e=>(_get_relkind_objtype=Module._get_relkind_objtype=wasmExports.get_relkind_objtype)(e),_RelationIsVisible=Module._RelationIsVisible=e=>(_RelationIsVisible=Module._RelationIsVisible=wasmExports.RelationIsVisible)(e),_get_func_arg_info=Module._get_func_arg_info=(e,t,r,a)=>(_get_func_arg_info=Module._get_func_arg_info=wasmExports.get_func_arg_info)(e,t,r,a),_NameListToString=Module._NameListToString=e=>(_NameListToString=Module._NameListToString=wasmExports.NameListToString)(e),_OpernameGetOprid=Module._OpernameGetOprid=(e,t,r)=>(_OpernameGetOprid=Module._OpernameGetOprid=wasmExports.OpernameGetOprid)(e,t,r),_makeRangeVarFromNameList=Module._makeRangeVarFromNameList=e=>(_makeRangeVarFromNameList=Module._makeRangeVarFromNameList=wasmExports.makeRangeVarFromNameList)(e),_quote_identifier=Module._quote_identifier=e=>(_quote_identifier=Module._quote_identifier=wasmExports.quote_identifier)(e),_GetSearchPathMatcher=Module._GetSearchPathMatcher=e=>(_GetSearchPathMatcher=Module._GetSearchPathMatcher=wasmExports.GetSearchPathMatcher)(e),_SearchPathMatchesCurrentEnvironment=Module._SearchPathMatchesCurrentEnvironment=e=>(_SearchPathMatchesCurrentEnvironment=Module._SearchPathMatchesCurrentEnvironment=wasmExports.SearchPathMatchesCurrentEnvironment)(e),_get_collation_oid=Module._get_collation_oid=(e,t)=>(_get_collation_oid=Module._get_collation_oid=wasmExports.get_collation_oid)(e,t),_CacheRegisterSyscacheCallback=Module._CacheRegisterSyscacheCallback=(e,t,r)=>(_CacheRegisterSyscacheCallback=Module._CacheRegisterSyscacheCallback=wasmExports.CacheRegisterSyscacheCallback)(e,t,r),_get_extension_oid=Module._get_extension_oid=(e,t)=>(_get_extension_oid=Module._get_extension_oid=wasmExports.get_extension_oid)(e,t),_get_role_oid=Module._get_role_oid=(e,t)=>(_get_role_oid=Module._get_role_oid=wasmExports.get_role_oid)(e,t),_GetForeignServerByName=Module._GetForeignServerByName=(e,t)=>(_GetForeignServerByName=Module._GetForeignServerByName=wasmExports.GetForeignServerByName)(e,t),_typeStringToTypeName=Module._typeStringToTypeName=(e,t)=>(_typeStringToTypeName=Module._typeStringToTypeName=wasmExports.typeStringToTypeName)(e,t),_list_make2_impl=Module._list_make2_impl=(e,t,r)=>(_list_make2_impl=Module._list_make2_impl=wasmExports.list_make2_impl)(e,t,r),_GetUserNameFromId=Module._GetUserNameFromId=(e,t)=>(_GetUserNameFromId=Module._GetUserNameFromId=wasmExports.GetUserNameFromId)(e,t),_format_type_extended=Module._format_type_extended=(e,t,r)=>(_format_type_extended=Module._format_type_extended=wasmExports.format_type_extended)(e,t,r),_quote_qualified_identifier=Module._quote_qualified_identifier=(e,t)=>(_quote_qualified_identifier=Module._quote_qualified_identifier=wasmExports.quote_qualified_identifier)(e,t),_get_tablespace_name=Module._get_tablespace_name=e=>(_get_tablespace_name=Module._get_tablespace_name=wasmExports.get_tablespace_name)(e),_GetForeignServerExtended=Module._GetForeignServerExtended=(e,t)=>(_GetForeignServerExtended=Module._GetForeignServerExtended=wasmExports.GetForeignServerExtended)(e,t),_GetForeignServer=Module._GetForeignServer=e=>(_GetForeignServer=Module._GetForeignServer=wasmExports.GetForeignServer)(e),_construct_empty_array=Module._construct_empty_array=e=>(_construct_empty_array=Module._construct_empty_array=wasmExports.construct_empty_array)(e),_format_type_be_qualified=Module._format_type_be_qualified=e=>(_format_type_be_qualified=Module._format_type_be_qualified=wasmExports.format_type_be_qualified)(e),_get_namespace_name_or_temp=Module._get_namespace_name_or_temp=e=>(_get_namespace_name_or_temp=Module._get_namespace_name_or_temp=wasmExports.get_namespace_name_or_temp)(e),_list_make3_impl=Module._list_make3_impl=(e,t,r,a)=>(_list_make3_impl=Module._list_make3_impl=wasmExports.list_make3_impl)(e,t,r,a),_construct_md_array=Module._construct_md_array=(e,t,r,a,o,s,n,_,l)=>(_construct_md_array=Module._construct_md_array=wasmExports.construct_md_array)(e,t,r,a,o,s,n,_,l),_pull_varattnos=Module._pull_varattnos=(e,t,r)=>(_pull_varattnos=Module._pull_varattnos=wasmExports.pull_varattnos)(e,t,r),_get_func_name=Module._get_func_name=e=>(_get_func_name=Module._get_func_name=wasmExports.get_func_name)(e),_construct_array_builtin=Module._construct_array_builtin=(e,t,r)=>(_construct_array_builtin=Module._construct_array_builtin=wasmExports.construct_array_builtin)(e,t,r),_makeObjectName=Module._makeObjectName=(e,t,r)=>(_makeObjectName=Module._makeObjectName=wasmExports.makeObjectName)(e,t,r),_get_primary_key_attnos=Module._get_primary_key_attnos=(e,t,r)=>(_get_primary_key_attnos=Module._get_primary_key_attnos=wasmExports.get_primary_key_attnos)(e,t,r),_bms_is_subset=Module._bms_is_subset=(e,t)=>(_bms_is_subset=Module._bms_is_subset=wasmExports.bms_is_subset)(e,t),_getExtensionOfObject=Module._getExtensionOfObject=(e,t)=>(_getExtensionOfObject=Module._getExtensionOfObject=wasmExports.getExtensionOfObject)(e,t),_find_inheritance_children=Module._find_inheritance_children=(e,t)=>(_find_inheritance_children=Module._find_inheritance_children=wasmExports.find_inheritance_children)(e,t),_lappend_int=Module._lappend_int=(e,t)=>(_lappend_int=Module._lappend_int=wasmExports.lappend_int)(e,t),_has_superclass=Module._has_superclass=e=>(_has_superclass=Module._has_superclass=wasmExports.has_superclass)(e),_CheckFunctionValidatorAccess=Module._CheckFunctionValidatorAccess=(e,t)=>(_CheckFunctionValidatorAccess=Module._CheckFunctionValidatorAccess=wasmExports.CheckFunctionValidatorAccess)(e,t),_AcquireRewriteLocks=Module._AcquireRewriteLocks=(e,t,r)=>(_AcquireRewriteLocks=Module._AcquireRewriteLocks=wasmExports.AcquireRewriteLocks)(e,t,r),_function_parse_error_transpose=Module._function_parse_error_transpose=e=>(_function_parse_error_transpose=Module._function_parse_error_transpose=wasmExports.function_parse_error_transpose)(e),_geterrposition=Module._geterrposition=()=>(_geterrposition=Module._geterrposition=wasmExports.geterrposition)(),_getinternalerrposition=Module._getinternalerrposition=()=>(_getinternalerrposition=Module._getinternalerrposition=wasmExports.getinternalerrposition)(),_pg_mblen=Module._pg_mblen=e=>(_pg_mblen=Module._pg_mblen=wasmExports.pg_mblen)(e),_pg_mbstrlen_with_len=Module._pg_mbstrlen_with_len=(e,t)=>(_pg_mbstrlen_with_len=Module._pg_mbstrlen_with_len=wasmExports.pg_mbstrlen_with_len)(e,t),_errposition=Module._errposition=e=>(_errposition=Module._errposition=wasmExports.errposition)(e),_internalerrposition=Module._internalerrposition=e=>(_internalerrposition=Module._internalerrposition=wasmExports.internalerrposition)(e),_internalerrquery=Module._internalerrquery=e=>(_internalerrquery=Module._internalerrquery=wasmExports.internalerrquery)(e),_list_delete_nth_cell=Module._list_delete_nth_cell=(e,t)=>(_list_delete_nth_cell=Module._list_delete_nth_cell=wasmExports.list_delete_nth_cell)(e,t),_get_array_type=Module._get_array_type=e=>(_get_array_type=Module._get_array_type=wasmExports.get_array_type)(e),_smgrtruncate2=Module._smgrtruncate2=(e,t,r,a,o)=>(_smgrtruncate2=Module._smgrtruncate2=wasmExports.smgrtruncate2)(e,t,r,a,o),_smgrreadv=Module._smgrreadv=(e,t,r,a,o)=>(_smgrreadv=Module._smgrreadv=wasmExports.smgrreadv)(e,t,r,a,o),_NewRelationCreateToastTable=Module._NewRelationCreateToastTable=(e,t)=>(_NewRelationCreateToastTable=Module._NewRelationCreateToastTable=wasmExports.NewRelationCreateToastTable)(e,t),_transformStmt=Module._transformStmt=(e,t)=>(_transformStmt=Module._transformStmt=wasmExports.transformStmt)(e,t),_exprLocation=Module._exprLocation=e=>(_exprLocation=Module._exprLocation=wasmExports.exprLocation)(e),_ParseFuncOrColumn=Module._ParseFuncOrColumn=(e,t,r,a,o,s,n)=>(_ParseFuncOrColumn=Module._ParseFuncOrColumn=wasmExports.ParseFuncOrColumn)(e,t,r,a,o,s,n),_exprCollation=Module._exprCollation=e=>(_exprCollation=Module._exprCollation=wasmExports.exprCollation)(e),_transformDistinctClause=Module._transformDistinctClause=(e,t,r,a)=>(_transformDistinctClause=Module._transformDistinctClause=wasmExports.transformDistinctClause)(e,t,r,a),_makeTargetEntry=Module._makeTargetEntry=(e,t,r,a)=>(_makeTargetEntry=Module._makeTargetEntry=wasmExports.makeTargetEntry)(e,t,r,a),_makeAlias=Module._makeAlias=(e,t)=>(_makeAlias=Module._makeAlias=wasmExports.makeAlias)(e,t),_addRangeTableEntryForSubquery=Module._addRangeTableEntryForSubquery=(e,t,r,a,o)=>(_addRangeTableEntryForSubquery=Module._addRangeTableEntryForSubquery=wasmExports.addRangeTableEntryForSubquery)(e,t,r,a,o),_makeVar=Module._makeVar=(e,t,r,a,o,s)=>(_makeVar=Module._makeVar=wasmExports.makeVar)(e,t,r,a,o,s),_makeBoolean=Module._makeBoolean=e=>(_makeBoolean=Module._makeBoolean=wasmExports.makeBoolean)(e),_makeInteger=Module._makeInteger=e=>(_makeInteger=Module._makeInteger=wasmExports.makeInteger)(e),_makeTypeName=Module._makeTypeName=e=>(_makeTypeName=Module._makeTypeName=wasmExports.makeTypeName)(e),_makeFuncCall=Module._makeFuncCall=(e,t,r,a)=>(_makeFuncCall=Module._makeFuncCall=wasmExports.makeFuncCall)(e,t,r,a),_list_make4_impl=Module._list_make4_impl=(e,t,r,a,o)=>(_list_make4_impl=Module._list_make4_impl=wasmExports.list_make4_impl)(e,t,r,a,o),_get_sortgroupclause_tle=Module._get_sortgroupclause_tle=(e,t)=>(_get_sortgroupclause_tle=Module._get_sortgroupclause_tle=wasmExports.get_sortgroupclause_tle)(e,t),_flatten_join_alias_vars=Module._flatten_join_alias_vars=(e,t,r)=>(_flatten_join_alias_vars=Module._flatten_join_alias_vars=wasmExports.flatten_join_alias_vars)(e,t,r),_list_member_int=Module._list_member_int=(e,t)=>(_list_member_int=Module._list_member_int=wasmExports.list_member_int)(e,t),_addRangeTableEntryForENR=Module._addRangeTableEntryForENR=(e,t,r)=>(_addRangeTableEntryForENR=Module._addRangeTableEntryForENR=wasmExports.addRangeTableEntryForENR)(e,t,r),_typenameTypeIdAndMod=Module._typenameTypeIdAndMod=(e,t,r,a)=>(_typenameTypeIdAndMod=Module._typenameTypeIdAndMod=wasmExports.typenameTypeIdAndMod)(e,t,r,a),_get_typcollation=Module._get_typcollation=e=>(_get_typcollation=Module._get_typcollation=wasmExports.get_typcollation)(e),_strip_implicit_coercions=Module._strip_implicit_coercions=e=>(_strip_implicit_coercions=Module._strip_implicit_coercions=wasmExports.strip_implicit_coercions)(e),_get_sortgroupref_tle=Module._get_sortgroupref_tle=(e,t)=>(_get_sortgroupref_tle=Module._get_sortgroupref_tle=wasmExports.get_sortgroupref_tle)(e,t),_contain_aggs_of_level=Module._contain_aggs_of_level=(e,t)=>(_contain_aggs_of_level=Module._contain_aggs_of_level=wasmExports.contain_aggs_of_level)(e,t),_typeidType=Module._typeidType=e=>(_typeidType=Module._typeidType=wasmExports.typeidType)(e),_typeTypeCollation=Module._typeTypeCollation=e=>(_typeTypeCollation=Module._typeTypeCollation=wasmExports.typeTypeCollation)(e),_typeLen=Module._typeLen=e=>(_typeLen=Module._typeLen=wasmExports.typeLen)(e),_typeByVal=Module._typeByVal=e=>(_typeByVal=Module._typeByVal=wasmExports.typeByVal)(e),_makeConst=Module._makeConst=(e,t,r,a,o,s,n)=>(_makeConst=Module._makeConst=wasmExports.makeConst)(e,t,r,a,o,s,n),_lookup_rowtype_tupdesc=Module._lookup_rowtype_tupdesc=(e,t)=>(_lookup_rowtype_tupdesc=Module._lookup_rowtype_tupdesc=wasmExports.lookup_rowtype_tupdesc)(e,t),_bms_del_member=Module._bms_del_member=(e,t)=>(_bms_del_member=Module._bms_del_member=wasmExports.bms_del_member)(e,t),_list_member=Module._list_member=(e,t)=>(_list_member=Module._list_member=wasmExports.list_member)(e,t),_type_is_rowtype=Module._type_is_rowtype=e=>(_type_is_rowtype=Module._type_is_rowtype=wasmExports.type_is_rowtype)(e),_bit_in=Module._bit_in=e=>(_bit_in=Module._bit_in=wasmExports.bit_in)(e),_bms_union=Module._bms_union=(e,t)=>(_bms_union=Module._bms_union=wasmExports.bms_union)(e,t),_varstr_levenshtein_less_equal=Module._varstr_levenshtein_less_equal=(e,t,r,a,o,s,n,_,l)=>(_varstr_levenshtein_less_equal=Module._varstr_levenshtein_less_equal=wasmExports.varstr_levenshtein_less_equal)(e,t,r,a,o,s,n,_,l),_errsave_start=Module._errsave_start=(e,t)=>(_errsave_start=Module._errsave_start=wasmExports.errsave_start)(e,t),_errsave_finish=Module._errsave_finish=(e,t,r,a)=>(_errsave_finish=Module._errsave_finish=wasmExports.errsave_finish)(e,t,r,a),_makeColumnDef=Module._makeColumnDef=(e,t,r,a)=>(_makeColumnDef=Module._makeColumnDef=wasmExports.makeColumnDef)(e,t,r,a),_GetDefaultOpClass=Module._GetDefaultOpClass=(e,t)=>(_GetDefaultOpClass=Module._GetDefaultOpClass=wasmExports.GetDefaultOpClass)(e,t),_scanner_init=Module._scanner_init=(e,t,r,a)=>(_scanner_init=Module._scanner_init=wasmExports.scanner_init)(e,t,r,a),_scanner_finish=Module._scanner_finish=e=>(_scanner_finish=Module._scanner_finish=wasmExports.scanner_finish)(e),_core_yylex=Module._core_yylex=(e,t,r)=>(_core_yylex=Module._core_yylex=wasmExports.core_yylex)(e,t,r),_isxdigit=Module._isxdigit=e=>(_isxdigit=Module._isxdigit=wasmExports.isxdigit)(e),_scanner_isspace=Module._scanner_isspace=e=>(_scanner_isspace=Module._scanner_isspace=wasmExports.scanner_isspace)(e),_truncate_identifier=Module._truncate_identifier=(e,t,r)=>(_truncate_identifier=Module._truncate_identifier=wasmExports.truncate_identifier)(e,t,r),_downcase_truncate_identifier=Module._downcase_truncate_identifier=(e,t,r)=>(_downcase_truncate_identifier=Module._downcase_truncate_identifier=wasmExports.downcase_truncate_identifier)(e,t,r),_pg_database_encoding_max_length=Module._pg_database_encoding_max_length=()=>(_pg_database_encoding_max_length=Module._pg_database_encoding_max_length=wasmExports.pg_database_encoding_max_length)(),_namein=Module._namein=e=>(_namein=Module._namein=wasmExports.namein)(e),_BlockSampler_Init=Module._BlockSampler_Init=(e,t,r,a)=>(_BlockSampler_Init=Module._BlockSampler_Init=wasmExports.BlockSampler_Init)(e,t,r,a),_reservoir_init_selection_state=Module._reservoir_init_selection_state=(e,t)=>(_reservoir_init_selection_state=Module._reservoir_init_selection_state=wasmExports.reservoir_init_selection_state)(e,t),_reservoir_get_next_S=Module._reservoir_get_next_S=(e,t,r)=>(_reservoir_get_next_S=Module._reservoir_get_next_S=wasmExports.reservoir_get_next_S)(e,t,r),_sampler_random_fract=Module._sampler_random_fract=e=>(_sampler_random_fract=Module._sampler_random_fract=wasmExports.sampler_random_fract)(e),_BlockSampler_HasMore=Module._BlockSampler_HasMore=e=>(_BlockSampler_HasMore=Module._BlockSampler_HasMore=wasmExports.BlockSampler_HasMore)(e),_BlockSampler_Next=Module._BlockSampler_Next=e=>(_BlockSampler_Next=Module._BlockSampler_Next=wasmExports.BlockSampler_Next)(e),_Async_Notify=Module._Async_Notify=(e,t)=>(_Async_Notify=Module._Async_Notify=wasmExports.Async_Notify)(e,t),_RangeVarCallbackMaintainsTable=Module._RangeVarCallbackMaintainsTable=(e,t,r,a)=>(_RangeVarCallbackMaintainsTable=Module._RangeVarCallbackMaintainsTable=wasmExports.RangeVarCallbackMaintainsTable)(e,t,r,a),_make_new_heap=Module._make_new_heap=(e,t,r,a,o)=>(_make_new_heap=Module._make_new_heap=wasmExports.make_new_heap)(e,t,r,a,o),_finish_heap_swap=Module._finish_heap_swap=(e,t,r,a,o,s,n,_,l)=>(_finish_heap_swap=Module._finish_heap_swap=wasmExports.finish_heap_swap)(e,t,r,a,o,s,n,_,l),_wasm_OpenPipeStream=Module._wasm_OpenPipeStream=(e,t)=>(_wasm_OpenPipeStream=Module._wasm_OpenPipeStream=wasmExports.wasm_OpenPipeStream)(e,t),_ClosePipeStream=Module._ClosePipeStream=e=>(_ClosePipeStream=Module._ClosePipeStream=wasmExports.ClosePipeStream)(e),_BeginCopyFrom=Module._BeginCopyFrom=(e,t,r,a,o,s,n,_)=>(_BeginCopyFrom=Module._BeginCopyFrom=wasmExports.BeginCopyFrom)(e,t,r,a,o,s,n,_),_EndCopyFrom=Module._EndCopyFrom=e=>(_EndCopyFrom=Module._EndCopyFrom=wasmExports.EndCopyFrom)(e),_ProcessCopyOptions=Module._ProcessCopyOptions=(e,t,r,a)=>(_ProcessCopyOptions=Module._ProcessCopyOptions=wasmExports.ProcessCopyOptions)(e,t,r,a),_CopyFromErrorCallback=Module._CopyFromErrorCallback=e=>(_CopyFromErrorCallback=Module._CopyFromErrorCallback=wasmExports.CopyFromErrorCallback)(e),_NextCopyFrom=Module._NextCopyFrom=(e,t,r,a)=>(_NextCopyFrom=Module._NextCopyFrom=wasmExports.NextCopyFrom)(e,t,r,a),_ExecInitExpr=Module._ExecInitExpr=(e,t)=>(_ExecInitExpr=Module._ExecInitExpr=wasmExports.ExecInitExpr)(e,t),_tolower=Module._tolower=e=>(_tolower=Module._tolower=wasmExports.tolower)(e),_PushCopiedSnapshot=Module._PushCopiedSnapshot=e=>(_PushCopiedSnapshot=Module._PushCopiedSnapshot=wasmExports.PushCopiedSnapshot)(e),_UpdateActiveSnapshotCommandId=Module._UpdateActiveSnapshotCommandId=()=>(_UpdateActiveSnapshotCommandId=Module._UpdateActiveSnapshotCommandId=wasmExports.UpdateActiveSnapshotCommandId)(),_CreateQueryDesc=Module._CreateQueryDesc=(e,t,r,a,o,s,n,_)=>(_CreateQueryDesc=Module._CreateQueryDesc=wasmExports.CreateQueryDesc)(e,t,r,a,o,s,n,_),_ExecutorStart=Module._ExecutorStart=(e,t)=>(_ExecutorStart=Module._ExecutorStart=wasmExports.ExecutorStart)(e,t),_ExecutorFinish=Module._ExecutorFinish=e=>(_ExecutorFinish=Module._ExecutorFinish=wasmExports.ExecutorFinish)(e),_ExecutorEnd=Module._ExecutorEnd=e=>(_ExecutorEnd=Module._ExecutorEnd=wasmExports.ExecutorEnd)(e),_FreeQueryDesc=Module._FreeQueryDesc=e=>(_FreeQueryDesc=Module._FreeQueryDesc=wasmExports.FreeQueryDesc)(e),_pg_server_to_any=Module._pg_server_to_any=(e,t,r)=>(_pg_server_to_any=Module._pg_server_to_any=wasmExports.pg_server_to_any)(e,t,r),_ExecutorRun=Module._ExecutorRun=(e,t,r,a)=>(_ExecutorRun=Module._ExecutorRun=wasmExports.ExecutorRun)(e,t,r,a),_CreateTableAsRelExists=Module._CreateTableAsRelExists=e=>(_CreateTableAsRelExists=Module._CreateTableAsRelExists=wasmExports.CreateTableAsRelExists)(e),_DefineRelation=Module._DefineRelation=(e,t,r,a,o,s)=>(_DefineRelation=Module._DefineRelation=wasmExports.DefineRelation)(e,t,r,a,o,s),_oidin=Module._oidin=e=>(_oidin=Module._oidin=wasmExports.oidin)(e),_GetCommandTagName=Module._GetCommandTagName=e=>(_GetCommandTagName=Module._GetCommandTagName=wasmExports.GetCommandTagName)(e),_ExplainBeginOutput=Module._ExplainBeginOutput=e=>(_ExplainBeginOutput=Module._ExplainBeginOutput=wasmExports.ExplainBeginOutput)(e),_NewExplainState=Module._NewExplainState=()=>(_NewExplainState=Module._NewExplainState=wasmExports.NewExplainState)(),_ExplainEndOutput=Module._ExplainEndOutput=e=>(_ExplainEndOutput=Module._ExplainEndOutput=wasmExports.ExplainEndOutput)(e),_ExplainPrintPlan=Module._ExplainPrintPlan=(e,t)=>(_ExplainPrintPlan=Module._ExplainPrintPlan=wasmExports.ExplainPrintPlan)(e,t),_ExplainPrintTriggers=Module._ExplainPrintTriggers=(e,t)=>(_ExplainPrintTriggers=Module._ExplainPrintTriggers=wasmExports.ExplainPrintTriggers)(e,t),_ExplainPrintJITSummary=Module._ExplainPrintJITSummary=(e,t)=>(_ExplainPrintJITSummary=Module._ExplainPrintJITSummary=wasmExports.ExplainPrintJITSummary)(e,t),_InstrEndLoop=Module._InstrEndLoop=e=>(_InstrEndLoop=Module._InstrEndLoop=wasmExports.InstrEndLoop)(e),_ExplainPropertyInteger=Module._ExplainPropertyInteger=(e,t,r,a)=>(_ExplainPropertyInteger=Module._ExplainPropertyInteger=wasmExports.ExplainPropertyInteger)(e,t,r,a),_ExplainQueryText=Module._ExplainQueryText=(e,t)=>(_ExplainQueryText=Module._ExplainQueryText=wasmExports.ExplainQueryText)(e,t),_ExplainPropertyText=Module._ExplainPropertyText=(e,t,r)=>(_ExplainPropertyText=Module._ExplainPropertyText=wasmExports.ExplainPropertyText)(e,t,r),_ExplainQueryParameters=Module._ExplainQueryParameters=(e,t,r)=>(_ExplainQueryParameters=Module._ExplainQueryParameters=wasmExports.ExplainQueryParameters)(e,t,r),_get_func_namespace=Module._get_func_namespace=e=>(_get_func_namespace=Module._get_func_namespace=wasmExports.get_func_namespace)(e),_get_rel_type_id=Module._get_rel_type_id=e=>(_get_rel_type_id=Module._get_rel_type_id=wasmExports.get_rel_type_id)(e),_set_config_option=Module._set_config_option=(e,t,r,a,o,s,n,_)=>(_set_config_option=Module._set_config_option=wasmExports.set_config_option)(e,t,r,a,o,s,n,_),_pg_any_to_server=Module._pg_any_to_server=(e,t,r)=>(_pg_any_to_server=Module._pg_any_to_server=wasmExports.pg_any_to_server)(e,t,r),_DirectFunctionCall4Coll=Module._DirectFunctionCall4Coll=(e,t,r,a,o,s)=>(_DirectFunctionCall4Coll=Module._DirectFunctionCall4Coll=wasmExports.DirectFunctionCall4Coll)(e,t,r,a,o,s),_list_delete_cell=Module._list_delete_cell=(e,t)=>(_list_delete_cell=Module._list_delete_cell=wasmExports.list_delete_cell)(e,t),_GetForeignDataWrapper=Module._GetForeignDataWrapper=e=>(_GetForeignDataWrapper=Module._GetForeignDataWrapper=wasmExports.GetForeignDataWrapper)(e),_CreateExprContext=Module._CreateExprContext=e=>(_CreateExprContext=Module._CreateExprContext=wasmExports.CreateExprContext)(e),_EnsurePortalSnapshotExists=Module._EnsurePortalSnapshotExists=()=>(_EnsurePortalSnapshotExists=Module._EnsurePortalSnapshotExists=wasmExports.EnsurePortalSnapshotExists)(),_CheckIndexCompatible=Module._CheckIndexCompatible=(e,t,r,a)=>(_CheckIndexCompatible=Module._CheckIndexCompatible=wasmExports.CheckIndexCompatible)(e,t,r,a),_pgstat_count_truncate=Module._pgstat_count_truncate=e=>(_pgstat_count_truncate=Module._pgstat_count_truncate=wasmExports.pgstat_count_truncate)(e),_SPI_connect=Module._SPI_connect=()=>(_SPI_connect=Module._SPI_connect=wasmExports.SPI_connect)(),_SPI_exec=Module._SPI_exec=(e,t)=>(_SPI_exec=Module._SPI_exec=wasmExports.SPI_exec)(e,t),_SPI_execute=Module._SPI_execute=(e,t,r)=>(_SPI_execute=Module._SPI_execute=wasmExports.SPI_execute)(e,t,r),_SPI_getvalue=Module._SPI_getvalue=(e,t,r)=>(_SPI_getvalue=Module._SPI_getvalue=wasmExports.SPI_getvalue)(e,t,r),_generate_operator_clause=Module._generate_operator_clause=(e,t,r,a,o,s)=>(_generate_operator_clause=Module._generate_operator_clause=wasmExports.generate_operator_clause)(e,t,r,a,o,s),_SPI_finish=Module._SPI_finish=()=>(_SPI_finish=Module._SPI_finish=wasmExports.SPI_finish)(),_CreateTransientRelDestReceiver=Module._CreateTransientRelDestReceiver=e=>(_CreateTransientRelDestReceiver=Module._CreateTransientRelDestReceiver=wasmExports.CreateTransientRelDestReceiver)(e),_MemoryContextSetIdentifier=Module._MemoryContextSetIdentifier=(e,t)=>(_MemoryContextSetIdentifier=Module._MemoryContextSetIdentifier=wasmExports.MemoryContextSetIdentifier)(e,t),_checkExprHasSubLink=Module._checkExprHasSubLink=e=>(_checkExprHasSubLink=Module._checkExprHasSubLink=wasmExports.checkExprHasSubLink)(e),_SetTuplestoreDestReceiverParams=Module._SetTuplestoreDestReceiverParams=(e,t,r,a,o,s)=>(_SetTuplestoreDestReceiverParams=Module._SetTuplestoreDestReceiverParams=wasmExports.SetTuplestoreDestReceiverParams)(e,t,r,a,o,s),_tuplestore_rescan=Module._tuplestore_rescan=e=>(_tuplestore_rescan=Module._tuplestore_rescan=wasmExports.tuplestore_rescan)(e),_MemoryContextDeleteChildren=Module._MemoryContextDeleteChildren=e=>(_MemoryContextDeleteChildren=Module._MemoryContextDeleteChildren=wasmExports.MemoryContextDeleteChildren)(e),_ReleaseCachedPlan=Module._ReleaseCachedPlan=(e,t)=>(_ReleaseCachedPlan=Module._ReleaseCachedPlan=wasmExports.ReleaseCachedPlan)(e,t),_nextval=Module._nextval=e=>(_nextval=Module._nextval=wasmExports.nextval)(e),_textToQualifiedNameList=Module._textToQualifiedNameList=e=>(_textToQualifiedNameList=Module._textToQualifiedNameList=wasmExports.textToQualifiedNameList)(e),_tuplestore_gettupleslot=Module._tuplestore_gettupleslot=(e,t,r,a)=>(_tuplestore_gettupleslot=Module._tuplestore_gettupleslot=wasmExports.tuplestore_gettupleslot)(e,t,r,a),_list_delete=Module._list_delete=(e,t)=>(_list_delete=Module._list_delete=wasmExports.list_delete)(e,t),_tuplestore_end=Module._tuplestore_end=e=>(_tuplestore_end=Module._tuplestore_end=wasmExports.tuplestore_end)(e),_quote_literal_cstr=Module._quote_literal_cstr=e=>(_quote_literal_cstr=Module._quote_literal_cstr=wasmExports.quote_literal_cstr)(e),_contain_mutable_functions=Module._contain_mutable_functions=e=>(_contain_mutable_functions=Module._contain_mutable_functions=wasmExports.contain_mutable_functions)(e),_ExecuteTruncateGuts=Module._ExecuteTruncateGuts=(e,t,r,a,o,s)=>(_ExecuteTruncateGuts=Module._ExecuteTruncateGuts=wasmExports.ExecuteTruncateGuts)(e,t,r,a,o,s),_bms_make_singleton=Module._bms_make_singleton=e=>(_bms_make_singleton=Module._bms_make_singleton=wasmExports.bms_make_singleton)(e),_tuplestore_puttupleslot=Module._tuplestore_puttupleslot=(e,t)=>(_tuplestore_puttupleslot=Module._tuplestore_puttupleslot=wasmExports.tuplestore_puttupleslot)(e,t),_tuplestore_begin_heap=Module._tuplestore_begin_heap=(e,t,r)=>(_tuplestore_begin_heap=Module._tuplestore_begin_heap=wasmExports.tuplestore_begin_heap)(e,t,r),_ExecForceStoreHeapTuple=Module._ExecForceStoreHeapTuple=(e,t,r)=>(_ExecForceStoreHeapTuple=Module._ExecForceStoreHeapTuple=wasmExports.ExecForceStoreHeapTuple)(e,t,r),_strtod=Module._strtod=(e,t)=>(_strtod=Module._strtod=wasmExports.strtod)(e,t),_plain_crypt_verify=Module._plain_crypt_verify=(e,t,r,a)=>(_plain_crypt_verify=Module._plain_crypt_verify=wasmExports.plain_crypt_verify)(e,t,r,a),_ProcessConfigFile=Module._ProcessConfigFile=e=>(_ProcessConfigFile=Module._ProcessConfigFile=wasmExports.ProcessConfigFile)(e),_ExecReScan=Module._ExecReScan=e=>(_ExecReScan=Module._ExecReScan=wasmExports.ExecReScan)(e),_ExecAsyncResponse=Module._ExecAsyncResponse=e=>(_ExecAsyncResponse=Module._ExecAsyncResponse=wasmExports.ExecAsyncResponse)(e),_ExecAsyncRequestDone=Module._ExecAsyncRequestDone=(e,t)=>(_ExecAsyncRequestDone=Module._ExecAsyncRequestDone=wasmExports.ExecAsyncRequestDone)(e,t),_ExecAsyncRequestPending=Module._ExecAsyncRequestPending=e=>(_ExecAsyncRequestPending=Module._ExecAsyncRequestPending=wasmExports.ExecAsyncRequestPending)(e),_ExprEvalPushStep=Module._ExprEvalPushStep=(e,t)=>(_ExprEvalPushStep=Module._ExprEvalPushStep=wasmExports.ExprEvalPushStep)(e,t),_ExecInitExprWithParams=Module._ExecInitExprWithParams=(e,t)=>(_ExecInitExprWithParams=Module._ExecInitExprWithParams=wasmExports.ExecInitExprWithParams)(e,t),_ExecInitExprList=Module._ExecInitExprList=(e,t)=>(_ExecInitExprList=Module._ExecInitExprList=wasmExports.ExecInitExprList)(e,t),_MakeExpandedObjectReadOnlyInternal=Module._MakeExpandedObjectReadOnlyInternal=e=>(_MakeExpandedObjectReadOnlyInternal=Module._MakeExpandedObjectReadOnlyInternal=wasmExports.MakeExpandedObjectReadOnlyInternal)(e),_tuplesort_puttupleslot=Module._tuplesort_puttupleslot=(e,t)=>(_tuplesort_puttupleslot=Module._tuplesort_puttupleslot=wasmExports.tuplesort_puttupleslot)(e,t),_ArrayGetNItems=Module._ArrayGetNItems=(e,t)=>(_ArrayGetNItems=Module._ArrayGetNItems=wasmExports.ArrayGetNItems)(e,t),_expanded_record_fetch_tupdesc=Module._expanded_record_fetch_tupdesc=e=>(_expanded_record_fetch_tupdesc=Module._expanded_record_fetch_tupdesc=wasmExports.expanded_record_fetch_tupdesc)(e),_expanded_record_fetch_field=Module._expanded_record_fetch_field=(e,t,r)=>(_expanded_record_fetch_field=Module._expanded_record_fetch_field=wasmExports.expanded_record_fetch_field)(e,t,r),_JsonbValueToJsonb=Module._JsonbValueToJsonb=e=>(_JsonbValueToJsonb=Module._JsonbValueToJsonb=wasmExports.JsonbValueToJsonb)(e),_boolout=Module._boolout=e=>(_boolout=Module._boolout=wasmExports.boolout)(e),_lookup_rowtype_tupdesc_domain=Module._lookup_rowtype_tupdesc_domain=(e,t,r)=>(_lookup_rowtype_tupdesc_domain=Module._lookup_rowtype_tupdesc_domain=wasmExports.lookup_rowtype_tupdesc_domain)(e,t,r),_MemoryContextGetParent=Module._MemoryContextGetParent=e=>(_MemoryContextGetParent=Module._MemoryContextGetParent=wasmExports.MemoryContextGetParent)(e),_DeleteExpandedObject=Module._DeleteExpandedObject=e=>(_DeleteExpandedObject=Module._DeleteExpandedObject=wasmExports.DeleteExpandedObject)(e),_ExecFindJunkAttributeInTlist=Module._ExecFindJunkAttributeInTlist=(e,t)=>(_ExecFindJunkAttributeInTlist=Module._ExecFindJunkAttributeInTlist=wasmExports.ExecFindJunkAttributeInTlist)(e,t),_standard_ExecutorStart=Module._standard_ExecutorStart=(e,t)=>(_standard_ExecutorStart=Module._standard_ExecutorStart=wasmExports.standard_ExecutorStart)(e,t),_standard_ExecutorRun=Module._standard_ExecutorRun=(e,t,r,a)=>(_standard_ExecutorRun=Module._standard_ExecutorRun=wasmExports.standard_ExecutorRun)(e,t,r,a),_standard_ExecutorFinish=Module._standard_ExecutorFinish=e=>(_standard_ExecutorFinish=Module._standard_ExecutorFinish=wasmExports.standard_ExecutorFinish)(e),_standard_ExecutorEnd=Module._standard_ExecutorEnd=e=>(_standard_ExecutorEnd=Module._standard_ExecutorEnd=wasmExports.standard_ExecutorEnd)(e),_InstrAlloc=Module._InstrAlloc=(e,t,r)=>(_InstrAlloc=Module._InstrAlloc=wasmExports.InstrAlloc)(e,t,r),_get_typlenbyval=Module._get_typlenbyval=(e,t,r)=>(_get_typlenbyval=Module._get_typlenbyval=wasmExports.get_typlenbyval)(e,t,r),_InputFunctionCall=Module._InputFunctionCall=(e,t,r,a)=>(_InputFunctionCall=Module._InputFunctionCall=wasmExports.InputFunctionCall)(e,t,r,a),_FreeExprContext=Module._FreeExprContext=(e,t)=>(_FreeExprContext=Module._FreeExprContext=wasmExports.FreeExprContext)(e,t),_ExecOpenScanRelation=Module._ExecOpenScanRelation=(e,t,r)=>(_ExecOpenScanRelation=Module._ExecOpenScanRelation=wasmExports.ExecOpenScanRelation)(e,t,r),_bms_intersect=Module._bms_intersect=(e,t)=>(_bms_intersect=Module._bms_intersect=wasmExports.bms_intersect)(e,t),_ExecGetReturningSlot=Module._ExecGetReturningSlot=(e,t)=>(_ExecGetReturningSlot=Module._ExecGetReturningSlot=wasmExports.ExecGetReturningSlot)(e,t),_ExecGetResultRelCheckAsUser=Module._ExecGetResultRelCheckAsUser=(e,t)=>(_ExecGetResultRelCheckAsUser=Module._ExecGetResultRelCheckAsUser=wasmExports.ExecGetResultRelCheckAsUser)(e,t),_get_call_expr_argtype=Module._get_call_expr_argtype=(e,t)=>(_get_call_expr_argtype=Module._get_call_expr_argtype=wasmExports.get_call_expr_argtype)(e,t),_tuplestore_clear=Module._tuplestore_clear=e=>(_tuplestore_clear=Module._tuplestore_clear=wasmExports.tuplestore_clear)(e),_InstrUpdateTupleCount=Module._InstrUpdateTupleCount=(e,t)=>(_InstrUpdateTupleCount=Module._InstrUpdateTupleCount=wasmExports.InstrUpdateTupleCount)(e,t),_tuplesort_begin_heap=Module._tuplesort_begin_heap=(e,t,r,a,o,s,n,_,l)=>(_tuplesort_begin_heap=Module._tuplesort_begin_heap=wasmExports.tuplesort_begin_heap)(e,t,r,a,o,s,n,_,l),_tuplesort_gettupleslot=Module._tuplesort_gettupleslot=(e,t,r,a,o)=>(_tuplesort_gettupleslot=Module._tuplesort_gettupleslot=wasmExports.tuplesort_gettupleslot)(e,t,r,a,o),_AddWaitEventToSet=Module._AddWaitEventToSet=(e,t,r,a,o)=>(_AddWaitEventToSet=Module._AddWaitEventToSet=wasmExports.AddWaitEventToSet)(e,t,r,a,o),_GetNumRegisteredWaitEvents=Module._GetNumRegisteredWaitEvents=e=>(_GetNumRegisteredWaitEvents=Module._GetNumRegisteredWaitEvents=wasmExports.GetNumRegisteredWaitEvents)(e),_get_attstatsslot=Module._get_attstatsslot=(e,t,r,a,o)=>(_get_attstatsslot=Module._get_attstatsslot=wasmExports.get_attstatsslot)(e,t,r,a,o),_free_attstatsslot=Module._free_attstatsslot=e=>(_free_attstatsslot=Module._free_attstatsslot=wasmExports.free_attstatsslot)(e),_tuplesort_reset=Module._tuplesort_reset=e=>(_tuplesort_reset=Module._tuplesort_reset=wasmExports.tuplesort_reset)(e),_pairingheap_first=Module._pairingheap_first=e=>(_pairingheap_first=Module._pairingheap_first=wasmExports.pairingheap_first)(e),_bms_nonempty_difference=Module._bms_nonempty_difference=(e,t)=>(_bms_nonempty_difference=Module._bms_nonempty_difference=wasmExports.bms_nonempty_difference)(e,t),_SPI_connect_ext=Module._SPI_connect_ext=e=>(_SPI_connect_ext=Module._SPI_connect_ext=wasmExports.SPI_connect_ext)(e),_SPI_commit=Module._SPI_commit=()=>(_SPI_commit=Module._SPI_commit=wasmExports.SPI_commit)(),_CopyErrorData=Module._CopyErrorData=()=>(_CopyErrorData=Module._CopyErrorData=wasmExports.CopyErrorData)(),_ReThrowError=Module._ReThrowError=e=>(_ReThrowError=Module._ReThrowError=wasmExports.ReThrowError)(e),_SPI_commit_and_chain=Module._SPI_commit_and_chain=()=>(_SPI_commit_and_chain=Module._SPI_commit_and_chain=wasmExports.SPI_commit_and_chain)(),_SPI_rollback=Module._SPI_rollback=()=>(_SPI_rollback=Module._SPI_rollback=wasmExports.SPI_rollback)(),_SPI_rollback_and_chain=Module._SPI_rollback_and_chain=()=>(_SPI_rollback_and_chain=Module._SPI_rollback_and_chain=wasmExports.SPI_rollback_and_chain)(),_SPI_freetuptable=Module._SPI_freetuptable=e=>(_SPI_freetuptable=Module._SPI_freetuptable=wasmExports.SPI_freetuptable)(e),_SPI_execute_extended=Module._SPI_execute_extended=(e,t)=>(_SPI_execute_extended=Module._SPI_execute_extended=wasmExports.SPI_execute_extended)(e,t),_SPI_execute_plan=Module._SPI_execute_plan=(e,t,r,a,o)=>(_SPI_execute_plan=Module._SPI_execute_plan=wasmExports.SPI_execute_plan)(e,t,r,a,o),_SPI_execp=Module._SPI_execp=(e,t,r,a)=>(_SPI_execp=Module._SPI_execp=wasmExports.SPI_execp)(e,t,r,a),_SPI_execute_plan_extended=Module._SPI_execute_plan_extended=(e,t)=>(_SPI_execute_plan_extended=Module._SPI_execute_plan_extended=wasmExports.SPI_execute_plan_extended)(e,t),_SPI_execute_plan_with_paramlist=Module._SPI_execute_plan_with_paramlist=(e,t,r,a)=>(_SPI_execute_plan_with_paramlist=Module._SPI_execute_plan_with_paramlist=wasmExports.SPI_execute_plan_with_paramlist)(e,t,r,a),_SPI_prepare=Module._SPI_prepare=(e,t,r)=>(_SPI_prepare=Module._SPI_prepare=wasmExports.SPI_prepare)(e,t,r),_SPI_prepare_extended=Module._SPI_prepare_extended=(e,t)=>(_SPI_prepare_extended=Module._SPI_prepare_extended=wasmExports.SPI_prepare_extended)(e,t),_SPI_keepplan=Module._SPI_keepplan=e=>(_SPI_keepplan=Module._SPI_keepplan=wasmExports.SPI_keepplan)(e),_SPI_freeplan=Module._SPI_freeplan=e=>(_SPI_freeplan=Module._SPI_freeplan=wasmExports.SPI_freeplan)(e),_SPI_copytuple=Module._SPI_copytuple=e=>(_SPI_copytuple=Module._SPI_copytuple=wasmExports.SPI_copytuple)(e),_SPI_returntuple=Module._SPI_returntuple=(e,t)=>(_SPI_returntuple=Module._SPI_returntuple=wasmExports.SPI_returntuple)(e,t),_SPI_fnumber=Module._SPI_fnumber=(e,t)=>(_SPI_fnumber=Module._SPI_fnumber=wasmExports.SPI_fnumber)(e,t),_SPI_fname=Module._SPI_fname=(e,t)=>(_SPI_fname=Module._SPI_fname=wasmExports.SPI_fname)(e,t),_SPI_getbinval=Module._SPI_getbinval=(e,t,r,a)=>(_SPI_getbinval=Module._SPI_getbinval=wasmExports.SPI_getbinval)(e,t,r,a),_SPI_gettype=Module._SPI_gettype=(e,t)=>(_SPI_gettype=Module._SPI_gettype=wasmExports.SPI_gettype)(e,t),_SPI_gettypeid=Module._SPI_gettypeid=(e,t)=>(_SPI_gettypeid=Module._SPI_gettypeid=wasmExports.SPI_gettypeid)(e,t),_SPI_getrelname=Module._SPI_getrelname=e=>(_SPI_getrelname=Module._SPI_getrelname=wasmExports.SPI_getrelname)(e),_SPI_palloc=Module._SPI_palloc=e=>(_SPI_palloc=Module._SPI_palloc=wasmExports.SPI_palloc)(e),_SPI_datumTransfer=Module._SPI_datumTransfer=(e,t,r)=>(_SPI_datumTransfer=Module._SPI_datumTransfer=wasmExports.SPI_datumTransfer)(e,t,r),_datumTransfer=Module._datumTransfer=(e,t,r)=>(_datumTransfer=Module._datumTransfer=wasmExports.datumTransfer)(e,t,r),_SPI_cursor_open_with_paramlist=Module._SPI_cursor_open_with_paramlist=(e,t,r,a)=>(_SPI_cursor_open_with_paramlist=Module._SPI_cursor_open_with_paramlist=wasmExports.SPI_cursor_open_with_paramlist)(e,t,r,a),_SPI_cursor_parse_open=Module._SPI_cursor_parse_open=(e,t,r)=>(_SPI_cursor_parse_open=Module._SPI_cursor_parse_open=wasmExports.SPI_cursor_parse_open)(e,t,r),_SPI_cursor_find=Module._SPI_cursor_find=e=>(_SPI_cursor_find=Module._SPI_cursor_find=wasmExports.SPI_cursor_find)(e),_SPI_cursor_fetch=Module._SPI_cursor_fetch=(e,t,r)=>(_SPI_cursor_fetch=Module._SPI_cursor_fetch=wasmExports.SPI_cursor_fetch)(e,t,r),_SPI_scroll_cursor_fetch=Module._SPI_scroll_cursor_fetch=(e,t,r)=>(_SPI_scroll_cursor_fetch=Module._SPI_scroll_cursor_fetch=wasmExports.SPI_scroll_cursor_fetch)(e,t,r),_SPI_scroll_cursor_move=Module._SPI_scroll_cursor_move=(e,t,r)=>(_SPI_scroll_cursor_move=Module._SPI_scroll_cursor_move=wasmExports.SPI_scroll_cursor_move)(e,t,r),_SPI_cursor_close=Module._SPI_cursor_close=e=>(_SPI_cursor_close=Module._SPI_cursor_close=wasmExports.SPI_cursor_close)(e),_SPI_plan_is_valid=Module._SPI_plan_is_valid=e=>(_SPI_plan_is_valid=Module._SPI_plan_is_valid=wasmExports.SPI_plan_is_valid)(e),_SPI_result_code_string=Module._SPI_result_code_string=e=>(_SPI_result_code_string=Module._SPI_result_code_string=wasmExports.SPI_result_code_string)(e),_SPI_plan_get_plan_sources=Module._SPI_plan_get_plan_sources=e=>(_SPI_plan_get_plan_sources=Module._SPI_plan_get_plan_sources=wasmExports.SPI_plan_get_plan_sources)(e),_SPI_plan_get_cached_plan=Module._SPI_plan_get_cached_plan=e=>(_SPI_plan_get_cached_plan=Module._SPI_plan_get_cached_plan=wasmExports.SPI_plan_get_cached_plan)(e),_SPI_register_relation=Module._SPI_register_relation=e=>(_SPI_register_relation=Module._SPI_register_relation=wasmExports.SPI_register_relation)(e),_create_queryEnv=Module._create_queryEnv=()=>(_create_queryEnv=Module._create_queryEnv=wasmExports.create_queryEnv)(),_register_ENR=Module._register_ENR=(e,t)=>(_register_ENR=Module._register_ENR=wasmExports.register_ENR)(e,t),_SPI_register_trigger_data=Module._SPI_register_trigger_data=e=>(_SPI_register_trigger_data=Module._SPI_register_trigger_data=wasmExports.SPI_register_trigger_data)(e),_tuplestore_tuple_count=Module._tuplestore_tuple_count=e=>(_tuplestore_tuple_count=Module._tuplestore_tuple_count=wasmExports.tuplestore_tuple_count)(e),_GetUserMapping=Module._GetUserMapping=(e,t)=>(_GetUserMapping=Module._GetUserMapping=wasmExports.GetUserMapping)(e,t),_GetForeignTable=Module._GetForeignTable=e=>(_GetForeignTable=Module._GetForeignTable=wasmExports.GetForeignTable)(e),_GetForeignColumnOptions=Module._GetForeignColumnOptions=(e,t)=>(_GetForeignColumnOptions=Module._GetForeignColumnOptions=wasmExports.GetForeignColumnOptions)(e,t),_initClosestMatch=Module._initClosestMatch=(e,t,r)=>(_initClosestMatch=Module._initClosestMatch=wasmExports.initClosestMatch)(e,t,r),_updateClosestMatch=Module._updateClosestMatch=(e,t)=>(_updateClosestMatch=Module._updateClosestMatch=wasmExports.updateClosestMatch)(e,t),_getClosestMatch=Module._getClosestMatch=e=>(_getClosestMatch=Module._getClosestMatch=wasmExports.getClosestMatch)(e),_GetExistingLocalJoinPath=Module._GetExistingLocalJoinPath=e=>(_GetExistingLocalJoinPath=Module._GetExistingLocalJoinPath=wasmExports.GetExistingLocalJoinPath)(e),_bloom_create=Module._bloom_create=(e,t,r)=>(_bloom_create=Module._bloom_create=wasmExports.bloom_create)(e,t,r),_bloom_free=Module._bloom_free=e=>(_bloom_free=Module._bloom_free=wasmExports.bloom_free)(e),_bloom_add_element=Module._bloom_add_element=(e,t,r)=>(_bloom_add_element=Module._bloom_add_element=wasmExports.bloom_add_element)(e,t,r),_bloom_lacks_element=Module._bloom_lacks_element=(e,t,r)=>(_bloom_lacks_element=Module._bloom_lacks_element=wasmExports.bloom_lacks_element)(e,t,r),_bloom_prop_bits_set=Module._bloom_prop_bits_set=e=>(_bloom_prop_bits_set=Module._bloom_prop_bits_set=wasmExports.bloom_prop_bits_set)(e),_gai_strerror=Module._gai_strerror=e=>(_gai_strerror=Module._gai_strerror=wasmExports.gai_strerror)(e),_socket=Module._socket=(e,t,r)=>(_socket=Module._socket=wasmExports.socket)(e,t,r),_connect=Module._connect=(e,t,r)=>(_connect=Module._connect=wasmExports.connect)(e,t,r),_send=Module._send=(e,t,r,a)=>(_send=Module._send=wasmExports.send)(e,t,r,a),_recv=Module._recv=(e,t,r,a)=>(_recv=Module._recv=wasmExports.recv)(e,t,r,a),_be_lo_unlink=Module._be_lo_unlink=e=>(_be_lo_unlink=Module._be_lo_unlink=wasmExports.be_lo_unlink)(e),_text_to_cstring_buffer=Module._text_to_cstring_buffer=(e,t,r)=>(_text_to_cstring_buffer=Module._text_to_cstring_buffer=wasmExports.text_to_cstring_buffer)(e,t,r),_set_read_write_cbs=Module._set_read_write_cbs=(e,t)=>(_set_read_write_cbs=Module._set_read_write_cbs=wasmExports.set_read_write_cbs)(e,t),_setsockopt=Module._setsockopt=(e,t,r,a,o)=>(_setsockopt=Module._setsockopt=wasmExports.setsockopt)(e,t,r,a,o),_getsockopt=Module._getsockopt=(e,t,r,a,o)=>(_getsockopt=Module._getsockopt=wasmExports.getsockopt)(e,t,r,a,o),_getsockname=Module._getsockname=(e,t,r)=>(_getsockname=Module._getsockname=wasmExports.getsockname)(e,t,r),_poll=Module._poll=(e,t,r)=>(_poll=Module._poll=wasmExports.poll)(e,t,r),_pg_mb2wchar_with_len=Module._pg_mb2wchar_with_len=(e,t,r)=>(_pg_mb2wchar_with_len=Module._pg_mb2wchar_with_len=wasmExports.pg_mb2wchar_with_len)(e,t,r),_pg_regcomp=Module._pg_regcomp=(e,t,r,a,o)=>(_pg_regcomp=Module._pg_regcomp=wasmExports.pg_regcomp)(e,t,r,a,o),_pg_regerror=Module._pg_regerror=(e,t,r,a)=>(_pg_regerror=Module._pg_regerror=wasmExports.pg_regerror)(e,t,r,a),_strcat=Module._strcat=(e,t)=>(_strcat=Module._strcat=wasmExports.strcat)(e,t),_pq_sendtext=Module._pq_sendtext=(e,t,r)=>(_pq_sendtext=Module._pq_sendtext=wasmExports.pq_sendtext)(e,t,r),_pq_sendfloat4=Module._pq_sendfloat4=(e,t)=>(_pq_sendfloat4=Module._pq_sendfloat4=wasmExports.pq_sendfloat4)(e,t),_pq_sendfloat8=Module._pq_sendfloat8=(e,t)=>(_pq_sendfloat8=Module._pq_sendfloat8=wasmExports.pq_sendfloat8)(e,t),_pq_begintypsend=Module._pq_begintypsend=e=>(_pq_begintypsend=Module._pq_begintypsend=wasmExports.pq_begintypsend)(e),_pq_endtypsend=Module._pq_endtypsend=e=>(_pq_endtypsend=Module._pq_endtypsend=wasmExports.pq_endtypsend)(e),_pq_getmsgfloat4=Module._pq_getmsgfloat4=e=>(_pq_getmsgfloat4=Module._pq_getmsgfloat4=wasmExports.pq_getmsgfloat4)(e),_pq_getmsgfloat8=Module._pq_getmsgfloat8=e=>(_pq_getmsgfloat8=Module._pq_getmsgfloat8=wasmExports.pq_getmsgfloat8)(e),_pq_getmsgtext=Module._pq_getmsgtext=(e,t,r)=>(_pq_getmsgtext=Module._pq_getmsgtext=wasmExports.pq_getmsgtext)(e,t,r),_pg_strtoint32=Module._pg_strtoint32=e=>(_pg_strtoint32=Module._pg_strtoint32=wasmExports.pg_strtoint32)(e),_bms_membership=Module._bms_membership=e=>(_bms_membership=Module._bms_membership=wasmExports.bms_membership)(e),_list_make5_impl=Module._list_make5_impl=(e,t,r,a,o,s)=>(_list_make5_impl=Module._list_make5_impl=wasmExports.list_make5_impl)(e,t,r,a,o,s),_list_insert_nth=Module._list_insert_nth=(e,t,r)=>(_list_insert_nth=Module._list_insert_nth=wasmExports.list_insert_nth)(e,t,r),_list_member_ptr=Module._list_member_ptr=(e,t)=>(_list_member_ptr=Module._list_member_ptr=wasmExports.list_member_ptr)(e,t),_list_append_unique_ptr=Module._list_append_unique_ptr=(e,t)=>(_list_append_unique_ptr=Module._list_append_unique_ptr=wasmExports.list_append_unique_ptr)(e,t),_make_opclause=Module._make_opclause=(e,t,r,a,o,s,n)=>(_make_opclause=Module._make_opclause=wasmExports.make_opclause)(e,t,r,a,o,s,n),_exprIsLengthCoercion=Module._exprIsLengthCoercion=(e,t)=>(_exprIsLengthCoercion=Module._exprIsLengthCoercion=wasmExports.exprIsLengthCoercion)(e,t),_fix_opfuncids=Module._fix_opfuncids=e=>(_fix_opfuncids=Module._fix_opfuncids=wasmExports.fix_opfuncids)(e),_CleanQuerytext=Module._CleanQuerytext=(e,t,r)=>(_CleanQuerytext=Module._CleanQuerytext=wasmExports.CleanQuerytext)(e,t,r),_EnableQueryId=Module._EnableQueryId=()=>(_EnableQueryId=Module._EnableQueryId=wasmExports.EnableQueryId)(),_find_base_rel=Module._find_base_rel=(e,t)=>(_find_base_rel=Module._find_base_rel=wasmExports.find_base_rel)(e,t),_add_path=Module._add_path=(e,t)=>(_add_path=Module._add_path=wasmExports.add_path)(e,t),_pathkeys_contained_in=Module._pathkeys_contained_in=(e,t)=>(_pathkeys_contained_in=Module._pathkeys_contained_in=wasmExports.pathkeys_contained_in)(e,t),_create_sort_path=Module._create_sort_path=(e,t,r,a,o)=>(_create_sort_path=Module._create_sort_path=wasmExports.create_sort_path)(e,t,r,a,o),_set_baserel_size_estimates=Module._set_baserel_size_estimates=(e,t)=>(_set_baserel_size_estimates=Module._set_baserel_size_estimates=wasmExports.set_baserel_size_estimates)(e,t),_clauselist_selectivity=Module._clauselist_selectivity=(e,t,r,a,o)=>(_clauselist_selectivity=Module._clauselist_selectivity=wasmExports.clauselist_selectivity)(e,t,r,a,o),_get_tablespace_page_costs=Module._get_tablespace_page_costs=(e,t,r)=>(_get_tablespace_page_costs=Module._get_tablespace_page_costs=wasmExports.get_tablespace_page_costs)(e,t,r),_cost_qual_eval=Module._cost_qual_eval=(e,t,r)=>(_cost_qual_eval=Module._cost_qual_eval=wasmExports.cost_qual_eval)(e,t,r),_estimate_num_groups=Module._estimate_num_groups=(e,t,r,a,o)=>(_estimate_num_groups=Module._estimate_num_groups=wasmExports.estimate_num_groups)(e,t,r,a,o),_cost_sort=Module._cost_sort=(e,t,r,a,o,s,n,_,l)=>(_cost_sort=Module._cost_sort=wasmExports.cost_sort)(e,t,r,a,o,s,n,_,l),_get_sortgrouplist_exprs=Module._get_sortgrouplist_exprs=(e,t)=>(_get_sortgrouplist_exprs=Module._get_sortgrouplist_exprs=wasmExports.get_sortgrouplist_exprs)(e,t),_make_restrictinfo=Module._make_restrictinfo=(e,t,r,a,o,s,n,_,l,p)=>(_make_restrictinfo=Module._make_restrictinfo=wasmExports.make_restrictinfo)(e,t,r,a,o,s,n,_,l,p),_generate_implied_equalities_for_column=Module._generate_implied_equalities_for_column=(e,t,r,a,o)=>(_generate_implied_equalities_for_column=Module._generate_implied_equalities_for_column=wasmExports.generate_implied_equalities_for_column)(e,t,r,a,o),_eclass_useful_for_merging=Module._eclass_useful_for_merging=(e,t,r)=>(_eclass_useful_for_merging=Module._eclass_useful_for_merging=wasmExports.eclass_useful_for_merging)(e,t,r),_join_clause_is_movable_to=Module._join_clause_is_movable_to=(e,t)=>(_join_clause_is_movable_to=Module._join_clause_is_movable_to=wasmExports.join_clause_is_movable_to)(e,t),_get_plan_rowmark=Module._get_plan_rowmark=(e,t)=>(_get_plan_rowmark=Module._get_plan_rowmark=wasmExports.get_plan_rowmark)(e,t),_update_mergeclause_eclasses=Module._update_mergeclause_eclasses=(e,t)=>(_update_mergeclause_eclasses=Module._update_mergeclause_eclasses=wasmExports.update_mergeclause_eclasses)(e,t),_find_join_rel=Module._find_join_rel=(e,t)=>(_find_join_rel=Module._find_join_rel=wasmExports.find_join_rel)(e,t),_make_canonical_pathkey=Module._make_canonical_pathkey=(e,t,r,a,o)=>(_make_canonical_pathkey=Module._make_canonical_pathkey=wasmExports.make_canonical_pathkey)(e,t,r,a,o),_get_sortgroupref_clause_noerr=Module._get_sortgroupref_clause_noerr=(e,t)=>(_get_sortgroupref_clause_noerr=Module._get_sortgroupref_clause_noerr=wasmExports.get_sortgroupref_clause_noerr)(e,t),_extract_actual_clauses=Module._extract_actual_clauses=(e,t)=>(_extract_actual_clauses=Module._extract_actual_clauses=wasmExports.extract_actual_clauses)(e,t),_change_plan_targetlist=Module._change_plan_targetlist=(e,t,r)=>(_change_plan_targetlist=Module._change_plan_targetlist=wasmExports.change_plan_targetlist)(e,t,r),_make_foreignscan=Module._make_foreignscan=(e,t,r,a,o,s,n,_)=>(_make_foreignscan=Module._make_foreignscan=wasmExports.make_foreignscan)(e,t,r,a,o,s,n,_),_tlist_member=Module._tlist_member=(e,t)=>(_tlist_member=Module._tlist_member=wasmExports.tlist_member)(e,t),_pull_vars_of_level=Module._pull_vars_of_level=(e,t)=>(_pull_vars_of_level=Module._pull_vars_of_level=wasmExports.pull_vars_of_level)(e,t),_IncrementVarSublevelsUp=Module._IncrementVarSublevelsUp=(e,t,r)=>(_IncrementVarSublevelsUp=Module._IncrementVarSublevelsUp=wasmExports.IncrementVarSublevelsUp)(e,t,r),_standard_planner=Module._standard_planner=(e,t,r,a)=>(_standard_planner=Module._standard_planner=wasmExports.standard_planner)(e,t,r,a),_get_relids_in_jointree=Module._get_relids_in_jointree=(e,t,r)=>(_get_relids_in_jointree=Module._get_relids_in_jointree=wasmExports.get_relids_in_jointree)(e,t,r),_add_new_columns_to_pathtarget=Module._add_new_columns_to_pathtarget=(e,t)=>(_add_new_columns_to_pathtarget=Module._add_new_columns_to_pathtarget=wasmExports.add_new_columns_to_pathtarget)(e,t),_get_agg_clause_costs=Module._get_agg_clause_costs=(e,t,r)=>(_get_agg_clause_costs=Module._get_agg_clause_costs=wasmExports.get_agg_clause_costs)(e,t,r),_grouping_is_sortable=Module._grouping_is_sortable=e=>(_grouping_is_sortable=Module._grouping_is_sortable=wasmExports.grouping_is_sortable)(e),_copy_pathtarget=Module._copy_pathtarget=e=>(_copy_pathtarget=Module._copy_pathtarget=wasmExports.copy_pathtarget)(e),_create_projection_path=Module._create_projection_path=(e,t,r,a)=>(_create_projection_path=Module._create_projection_path=wasmExports.create_projection_path)(e,t,r,a),_GetSysCacheHashValue=Module._GetSysCacheHashValue=(e,t,r,a,o)=>(_GetSysCacheHashValue=Module._GetSysCacheHashValue=wasmExports.GetSysCacheHashValue)(e,t,r,a,o),_get_translated_update_targetlist=Module._get_translated_update_targetlist=(e,t,r,a)=>(_get_translated_update_targetlist=Module._get_translated_update_targetlist=wasmExports.get_translated_update_targetlist)(e,t,r,a),_add_row_identity_var=Module._add_row_identity_var=(e,t,r,a)=>(_add_row_identity_var=Module._add_row_identity_var=wasmExports.add_row_identity_var)(e,t,r,a),_get_rel_all_updated_cols=Module._get_rel_all_updated_cols=(e,t)=>(_get_rel_all_updated_cols=Module._get_rel_all_updated_cols=wasmExports.get_rel_all_updated_cols)(e,t),_get_baserel_parampathinfo=Module._get_baserel_parampathinfo=(e,t,r)=>(_get_baserel_parampathinfo=Module._get_baserel_parampathinfo=wasmExports.get_baserel_parampathinfo)(e,t,r),_create_foreignscan_path=Module._create_foreignscan_path=(e,t,r,a,o,s,n,_,l,p,m)=>(_create_foreignscan_path=Module._create_foreignscan_path=wasmExports.create_foreignscan_path)(e,t,r,a,o,s,n,_,l,p,m),_create_foreign_join_path=Module._create_foreign_join_path=(e,t,r,a,o,s,n,_,l,p,m)=>(_create_foreign_join_path=Module._create_foreign_join_path=wasmExports.create_foreign_join_path)(e,t,r,a,o,s,n,_,l,p,m),_create_foreign_upper_path=Module._create_foreign_upper_path=(e,t,r,a,o,s,n,_,l,p)=>(_create_foreign_upper_path=Module._create_foreign_upper_path=wasmExports.create_foreign_upper_path)(e,t,r,a,o,s,n,_,l,p),_adjust_limit_rows_costs=Module._adjust_limit_rows_costs=(e,t,r,a,o)=>(_adjust_limit_rows_costs=Module._adjust_limit_rows_costs=wasmExports.adjust_limit_rows_costs)(e,t,r,a,o),_add_to_flat_tlist=Module._add_to_flat_tlist=(e,t)=>(_add_to_flat_tlist=Module._add_to_flat_tlist=wasmExports.add_to_flat_tlist)(e,t),_get_fn_expr_argtype=Module._get_fn_expr_argtype=(e,t)=>(_get_fn_expr_argtype=Module._get_fn_expr_argtype=wasmExports.get_fn_expr_argtype)(e,t),_on_shmem_exit=Module._on_shmem_exit=(e,t)=>(_on_shmem_exit=Module._on_shmem_exit=wasmExports.on_shmem_exit)(e,t),_SignalHandlerForConfigReload=Module._SignalHandlerForConfigReload=e=>(_SignalHandlerForConfigReload=Module._SignalHandlerForConfigReload=wasmExports.SignalHandlerForConfigReload)(e),_SignalHandlerForShutdownRequest=Module._SignalHandlerForShutdownRequest=e=>(_SignalHandlerForShutdownRequest=Module._SignalHandlerForShutdownRequest=wasmExports.SignalHandlerForShutdownRequest)(e),_procsignal_sigusr1_handler=Module._procsignal_sigusr1_handler=e=>(_procsignal_sigusr1_handler=Module._procsignal_sigusr1_handler=wasmExports.procsignal_sigusr1_handler)(e),_RegisterBackgroundWorker=Module._RegisterBackgroundWorker=e=>(_RegisterBackgroundWorker=Module._RegisterBackgroundWorker=wasmExports.RegisterBackgroundWorker)(e),_WaitForBackgroundWorkerStartup=Module._WaitForBackgroundWorkerStartup=(e,t)=>(_WaitForBackgroundWorkerStartup=Module._WaitForBackgroundWorkerStartup=wasmExports.WaitForBackgroundWorkerStartup)(e,t),_GetConfigOption=Module._GetConfigOption=(e,t,r)=>(_GetConfigOption=Module._GetConfigOption=wasmExports.GetConfigOption)(e,t,r),_toupper=Module._toupper=e=>(_toupper=Module._toupper=wasmExports.toupper)(e),_pg_reg_getinitialstate=Module._pg_reg_getinitialstate=e=>(_pg_reg_getinitialstate=Module._pg_reg_getinitialstate=wasmExports.pg_reg_getinitialstate)(e),_pg_reg_getfinalstate=Module._pg_reg_getfinalstate=e=>(_pg_reg_getfinalstate=Module._pg_reg_getfinalstate=wasmExports.pg_reg_getfinalstate)(e),_pg_reg_getnumoutarcs=Module._pg_reg_getnumoutarcs=(e,t)=>(_pg_reg_getnumoutarcs=Module._pg_reg_getnumoutarcs=wasmExports.pg_reg_getnumoutarcs)(e,t),_pg_reg_getoutarcs=Module._pg_reg_getoutarcs=(e,t,r,a)=>(_pg_reg_getoutarcs=Module._pg_reg_getoutarcs=wasmExports.pg_reg_getoutarcs)(e,t,r,a),_pg_reg_getnumcolors=Module._pg_reg_getnumcolors=e=>(_pg_reg_getnumcolors=Module._pg_reg_getnumcolors=wasmExports.pg_reg_getnumcolors)(e),_pg_reg_colorisbegin=Module._pg_reg_colorisbegin=(e,t)=>(_pg_reg_colorisbegin=Module._pg_reg_colorisbegin=wasmExports.pg_reg_colorisbegin)(e,t),_pg_reg_colorisend=Module._pg_reg_colorisend=(e,t)=>(_pg_reg_colorisend=Module._pg_reg_colorisend=wasmExports.pg_reg_colorisend)(e,t),_pg_reg_getnumcharacters=Module._pg_reg_getnumcharacters=(e,t)=>(_pg_reg_getnumcharacters=Module._pg_reg_getnumcharacters=wasmExports.pg_reg_getnumcharacters)(e,t),_pg_reg_getcharacters=Module._pg_reg_getcharacters=(e,t,r,a)=>(_pg_reg_getcharacters=Module._pg_reg_getcharacters=wasmExports.pg_reg_getcharacters)(e,t,r,a),_OutputPluginPrepareWrite=Module._OutputPluginPrepareWrite=(e,t)=>(_OutputPluginPrepareWrite=Module._OutputPluginPrepareWrite=wasmExports.OutputPluginPrepareWrite)(e,t),_OutputPluginWrite=Module._OutputPluginWrite=(e,t)=>(_OutputPluginWrite=Module._OutputPluginWrite=wasmExports.OutputPluginWrite)(e,t),_array_contains_nulls=Module._array_contains_nulls=e=>(_array_contains_nulls=Module._array_contains_nulls=wasmExports.array_contains_nulls)(e),_hash_seq_term=Module._hash_seq_term=e=>(_hash_seq_term=Module._hash_seq_term=wasmExports.hash_seq_term)(e),_FreeErrorData=Module._FreeErrorData=e=>(_FreeErrorData=Module._FreeErrorData=wasmExports.FreeErrorData)(e),_RelidByRelfilenumber=Module._RelidByRelfilenumber=(e,t)=>(_RelidByRelfilenumber=Module._RelidByRelfilenumber=wasmExports.RelidByRelfilenumber)(e,t),_WaitLatchOrSocket=Module._WaitLatchOrSocket=(e,t,r,a,o)=>(_WaitLatchOrSocket=Module._WaitLatchOrSocket=wasmExports.WaitLatchOrSocket)(e,t,r,a,o),_get_row_security_policies=Module._get_row_security_policies=(e,t,r,a,o,s,n)=>(_get_row_security_policies=Module._get_row_security_policies=wasmExports.get_row_security_policies)(e,t,r,a,o,s,n),_hash_estimate_size=Module._hash_estimate_size=(e,t)=>(_hash_estimate_size=Module._hash_estimate_size=wasmExports.hash_estimate_size)(e,t),_ShmemInitHash=Module._ShmemInitHash=(e,t,r,a,o)=>(_ShmemInitHash=Module._ShmemInitHash=wasmExports.ShmemInitHash)(e,t,r,a,o),_LockBufHdr=Module._LockBufHdr=e=>(_LockBufHdr=Module._LockBufHdr=wasmExports.LockBufHdr)(e),_EvictUnpinnedBuffer=Module._EvictUnpinnedBuffer=e=>(_EvictUnpinnedBuffer=Module._EvictUnpinnedBuffer=wasmExports.EvictUnpinnedBuffer)(e),_have_free_buffer=Module._have_free_buffer=()=>(_have_free_buffer=Module._have_free_buffer=wasmExports.have_free_buffer)(),_copy_file=Module._copy_file=(e,t)=>(_copy_file=Module._copy_file=wasmExports.copy_file)(e,t),_AcquireExternalFD=Module._AcquireExternalFD=()=>(_AcquireExternalFD=Module._AcquireExternalFD=wasmExports.AcquireExternalFD)(),_GetNamedDSMSegment=Module._GetNamedDSMSegment=(e,t,r,a)=>(_GetNamedDSMSegment=Module._GetNamedDSMSegment=wasmExports.GetNamedDSMSegment)(e,t,r,a),_RequestAddinShmemSpace=Module._RequestAddinShmemSpace=e=>(_RequestAddinShmemSpace=Module._RequestAddinShmemSpace=wasmExports.RequestAddinShmemSpace)(e),_GetRunningTransactionData=Module._GetRunningTransactionData=()=>(_GetRunningTransactionData=Module._GetRunningTransactionData=wasmExports.GetRunningTransactionData)(),_BackendXidGetPid=Module._BackendXidGetPid=e=>(_BackendXidGetPid=Module._BackendXidGetPid=wasmExports.BackendXidGetPid)(e),_LWLockRegisterTranche=Module._LWLockRegisterTranche=(e,t)=>(_LWLockRegisterTranche=Module._LWLockRegisterTranche=wasmExports.LWLockRegisterTranche)(e,t),_GetNamedLWLockTranche=Module._GetNamedLWLockTranche=e=>(_GetNamedLWLockTranche=Module._GetNamedLWLockTranche=wasmExports.GetNamedLWLockTranche)(e),_LWLockNewTrancheId=Module._LWLockNewTrancheId=()=>(_LWLockNewTrancheId=Module._LWLockNewTrancheId=wasmExports.LWLockNewTrancheId)(),_RequestNamedLWLockTranche=Module._RequestNamedLWLockTranche=(e,t)=>(_RequestNamedLWLockTranche=Module._RequestNamedLWLockTranche=wasmExports.RequestNamedLWLockTranche)(e,t),_standard_ProcessUtility=Module._standard_ProcessUtility=(e,t,r,a,o,s,n,_)=>(_standard_ProcessUtility=Module._standard_ProcessUtility=wasmExports.standard_ProcessUtility)(e,t,r,a,o,s,n,_),_lookup_ts_dictionary_cache=Module._lookup_ts_dictionary_cache=e=>(_lookup_ts_dictionary_cache=Module._lookup_ts_dictionary_cache=wasmExports.lookup_ts_dictionary_cache)(e),_get_tsearch_config_filename=Module._get_tsearch_config_filename=(e,t)=>(_get_tsearch_config_filename=Module._get_tsearch_config_filename=wasmExports.get_tsearch_config_filename)(e,t),_lowerstr=Module._lowerstr=e=>(_lowerstr=Module._lowerstr=wasmExports.lowerstr)(e),_readstoplist=Module._readstoplist=(e,t,r)=>(_readstoplist=Module._readstoplist=wasmExports.readstoplist)(e,t,r),_lowerstr_with_len=Module._lowerstr_with_len=(e,t)=>(_lowerstr_with_len=Module._lowerstr_with_len=wasmExports.lowerstr_with_len)(e,t),_searchstoplist=Module._searchstoplist=(e,t)=>(_searchstoplist=Module._searchstoplist=wasmExports.searchstoplist)(e,t),_tsearch_readline_begin=Module._tsearch_readline_begin=(e,t)=>(_tsearch_readline_begin=Module._tsearch_readline_begin=wasmExports.tsearch_readline_begin)(e,t),_tsearch_readline=Module._tsearch_readline=e=>(_tsearch_readline=Module._tsearch_readline=wasmExports.tsearch_readline)(e),_t_isspace=Module._t_isspace=e=>(_t_isspace=Module._t_isspace=wasmExports.t_isspace)(e),_tsearch_readline_end=Module._tsearch_readline_end=e=>(_tsearch_readline_end=Module._tsearch_readline_end=wasmExports.tsearch_readline_end)(e),_stringToQualifiedNameList=Module._stringToQualifiedNameList=(e,t)=>(_stringToQualifiedNameList=Module._stringToQualifiedNameList=wasmExports.stringToQualifiedNameList)(e,t),_t_isdigit=Module._t_isdigit=e=>(_t_isdigit=Module._t_isdigit=wasmExports.t_isdigit)(e),_t_isalnum=Module._t_isalnum=e=>(_t_isalnum=Module._t_isalnum=wasmExports.t_isalnum)(e),_get_restriction_variable=Module._get_restriction_variable=(e,t,r,a,o,s)=>(_get_restriction_variable=Module._get_restriction_variable=wasmExports.get_restriction_variable)(e,t,r,a,o,s),_MemoryContextAllocHuge=Module._MemoryContextAllocHuge=(e,t)=>(_MemoryContextAllocHuge=Module._MemoryContextAllocHuge=wasmExports.MemoryContextAllocHuge)(e,t),_WaitEventExtensionNew=Module._WaitEventExtensionNew=e=>(_WaitEventExtensionNew=Module._WaitEventExtensionNew=wasmExports.WaitEventExtensionNew)(e),_expand_array=Module._expand_array=(e,t,r)=>(_expand_array=Module._expand_array=wasmExports.expand_array)(e,t,r),_arraycontsel=Module._arraycontsel=e=>(_arraycontsel=Module._arraycontsel=wasmExports.arraycontsel)(e),_arraycontjoinsel=Module._arraycontjoinsel=e=>(_arraycontjoinsel=Module._arraycontjoinsel=wasmExports.arraycontjoinsel)(e),_initArrayResult=Module._initArrayResult=(e,t,r)=>(_initArrayResult=Module._initArrayResult=wasmExports.initArrayResult)(e,t,r),_array_create_iterator=Module._array_create_iterator=(e,t,r)=>(_array_create_iterator=Module._array_create_iterator=wasmExports.array_create_iterator)(e,t,r),_array_iterate=Module._array_iterate=(e,t,r)=>(_array_iterate=Module._array_iterate=wasmExports.array_iterate)(e,t,r),_ArrayGetIntegerTypmods=Module._ArrayGetIntegerTypmods=(e,t)=>(_ArrayGetIntegerTypmods=Module._ArrayGetIntegerTypmods=wasmExports.ArrayGetIntegerTypmods)(e,t),_boolin=Module._boolin=e=>(_boolin=Module._boolin=wasmExports.boolin)(e),_cash_cmp=Module._cash_cmp=e=>(_cash_cmp=Module._cash_cmp=wasmExports.cash_cmp)(e),_int64_to_numeric=Module._int64_to_numeric=e=>(_int64_to_numeric=Module._int64_to_numeric=wasmExports.int64_to_numeric)(e),_numeric_div=Module._numeric_div=e=>(_numeric_div=Module._numeric_div=wasmExports.numeric_div)(e),_date_eq=Module._date_eq=e=>(_date_eq=Module._date_eq=wasmExports.date_eq)(e),_date_lt=Module._date_lt=e=>(_date_lt=Module._date_lt=wasmExports.date_lt)(e),_date_le=Module._date_le=e=>(_date_le=Module._date_le=wasmExports.date_le)(e),_date_gt=Module._date_gt=e=>(_date_gt=Module._date_gt=wasmExports.date_gt)(e),_date_ge=Module._date_ge=e=>(_date_ge=Module._date_ge=wasmExports.date_ge)(e),_date_cmp=Module._date_cmp=e=>(_date_cmp=Module._date_cmp=wasmExports.date_cmp)(e),_date_mi=Module._date_mi=e=>(_date_mi=Module._date_mi=wasmExports.date_mi)(e),_time_eq=Module._time_eq=e=>(_time_eq=Module._time_eq=wasmExports.time_eq)(e),_time_lt=Module._time_lt=e=>(_time_lt=Module._time_lt=wasmExports.time_lt)(e),_time_le=Module._time_le=e=>(_time_le=Module._time_le=wasmExports.time_le)(e),_time_gt=Module._time_gt=e=>(_time_gt=Module._time_gt=wasmExports.time_gt)(e),_time_ge=Module._time_ge=e=>(_time_ge=Module._time_ge=wasmExports.time_ge)(e),_time_cmp=Module._time_cmp=e=>(_time_cmp=Module._time_cmp=wasmExports.time_cmp)(e),_time_mi_time=Module._time_mi_time=e=>(_time_mi_time=Module._time_mi_time=wasmExports.time_mi_time)(e),_timetz_cmp=Module._timetz_cmp=e=>(_timetz_cmp=Module._timetz_cmp=wasmExports.timetz_cmp)(e),_TransferExpandedObject=Module._TransferExpandedObject=(e,t)=>(_TransferExpandedObject=Module._TransferExpandedObject=wasmExports.TransferExpandedObject)(e,t),_numeric_lt=Module._numeric_lt=e=>(_numeric_lt=Module._numeric_lt=wasmExports.numeric_lt)(e),_numeric_ge=Module._numeric_ge=e=>(_numeric_ge=Module._numeric_ge=wasmExports.numeric_ge)(e),_err_generic_string=Module._err_generic_string=(e,t)=>(_err_generic_string=Module._err_generic_string=wasmExports.err_generic_string)(e,t),_domain_check=Module._domain_check=(e,t,r,a,o)=>(_domain_check=Module._domain_check=wasmExports.domain_check)(e,t,r,a,o),_enum_lt=Module._enum_lt=e=>(_enum_lt=Module._enum_lt=wasmExports.enum_lt)(e),_enum_le=Module._enum_le=e=>(_enum_le=Module._enum_le=wasmExports.enum_le)(e),_enum_ge=Module._enum_ge=e=>(_enum_ge=Module._enum_ge=wasmExports.enum_ge)(e),_enum_gt=Module._enum_gt=e=>(_enum_gt=Module._enum_gt=wasmExports.enum_gt)(e),_enum_cmp=Module._enum_cmp=e=>(_enum_cmp=Module._enum_cmp=wasmExports.enum_cmp)(e),_make_expanded_record_from_typeid=Module._make_expanded_record_from_typeid=(e,t,r)=>(_make_expanded_record_from_typeid=Module._make_expanded_record_from_typeid=wasmExports.make_expanded_record_from_typeid)(e,t,r),_make_expanded_record_from_tupdesc=Module._make_expanded_record_from_tupdesc=(e,t)=>(_make_expanded_record_from_tupdesc=Module._make_expanded_record_from_tupdesc=wasmExports.make_expanded_record_from_tupdesc)(e,t),_make_expanded_record_from_exprecord=Module._make_expanded_record_from_exprecord=(e,t)=>(_make_expanded_record_from_exprecord=Module._make_expanded_record_from_exprecord=wasmExports.make_expanded_record_from_exprecord)(e,t),_expanded_record_set_tuple=Module._expanded_record_set_tuple=(e,t,r,a)=>(_expanded_record_set_tuple=Module._expanded_record_set_tuple=wasmExports.expanded_record_set_tuple)(e,t,r,a),_expanded_record_get_tuple=Module._expanded_record_get_tuple=e=>(_expanded_record_get_tuple=Module._expanded_record_get_tuple=wasmExports.expanded_record_get_tuple)(e),_deconstruct_expanded_record=Module._deconstruct_expanded_record=e=>(_deconstruct_expanded_record=Module._deconstruct_expanded_record=wasmExports.deconstruct_expanded_record)(e),_expanded_record_lookup_field=Module._expanded_record_lookup_field=(e,t,r)=>(_expanded_record_lookup_field=Module._expanded_record_lookup_field=wasmExports.expanded_record_lookup_field)(e,t,r),_expanded_record_set_field_internal=Module._expanded_record_set_field_internal=(e,t,r,a,o,s)=>(_expanded_record_set_field_internal=Module._expanded_record_set_field_internal=wasmExports.expanded_record_set_field_internal)(e,t,r,a,o,s),_expanded_record_set_fields=Module._expanded_record_set_fields=(e,t,r,a)=>(_expanded_record_set_fields=Module._expanded_record_set_fields=wasmExports.expanded_record_set_fields)(e,t,r,a),_float4in_internal=Module._float4in_internal=(e,t,r,a,o)=>(_float4in_internal=Module._float4in_internal=wasmExports.float4in_internal)(e,t,r,a,o),_strtof=Module._strtof=(e,t)=>(_strtof=Module._strtof=wasmExports.strtof)(e,t),_float8in_internal=Module._float8in_internal=(e,t,r,a,o)=>(_float8in_internal=Module._float8in_internal=wasmExports.float8in_internal)(e,t,r,a,o),_float8out_internal=Module._float8out_internal=e=>(_float8out_internal=Module._float8out_internal=wasmExports.float8out_internal)(e),_btfloat4cmp=Module._btfloat4cmp=e=>(_btfloat4cmp=Module._btfloat4cmp=wasmExports.btfloat4cmp)(e),_btfloat8cmp=Module._btfloat8cmp=e=>(_btfloat8cmp=Module._btfloat8cmp=wasmExports.btfloat8cmp)(e),_acos=Module._acos=e=>(_acos=Module._acos=wasmExports.acos)(e),_asin=Module._asin=e=>(_asin=Module._asin=wasmExports.asin)(e),_cos=Module._cos=e=>(_cos=Module._cos=wasmExports.cos)(e),_str_tolower=Module._str_tolower=(e,t,r)=>(_str_tolower=Module._str_tolower=wasmExports.str_tolower)(e,t,r),_pushJsonbValue=Module._pushJsonbValue=(e,t,r)=>(_pushJsonbValue=Module._pushJsonbValue=wasmExports.pushJsonbValue)(e,t,r),_numeric_float4=Module._numeric_float4=e=>(_numeric_float4=Module._numeric_float4=wasmExports.numeric_float4)(e),_numeric_cmp=Module._numeric_cmp=e=>(_numeric_cmp=Module._numeric_cmp=wasmExports.numeric_cmp)(e),_numeric_eq=Module._numeric_eq=e=>(_numeric_eq=Module._numeric_eq=wasmExports.numeric_eq)(e),_numeric_is_nan=Module._numeric_is_nan=e=>(_numeric_is_nan=Module._numeric_is_nan=wasmExports.numeric_is_nan)(e),_timestamp_cmp=Module._timestamp_cmp=e=>(_timestamp_cmp=Module._timestamp_cmp=wasmExports.timestamp_cmp)(e),_macaddr_cmp=Module._macaddr_cmp=e=>(_macaddr_cmp=Module._macaddr_cmp=wasmExports.macaddr_cmp)(e),_macaddr_lt=Module._macaddr_lt=e=>(_macaddr_lt=Module._macaddr_lt=wasmExports.macaddr_lt)(e),_macaddr_le=Module._macaddr_le=e=>(_macaddr_le=Module._macaddr_le=wasmExports.macaddr_le)(e),_macaddr_eq=Module._macaddr_eq=e=>(_macaddr_eq=Module._macaddr_eq=wasmExports.macaddr_eq)(e),_macaddr_ge=Module._macaddr_ge=e=>(_macaddr_ge=Module._macaddr_ge=wasmExports.macaddr_ge)(e),_macaddr_gt=Module._macaddr_gt=e=>(_macaddr_gt=Module._macaddr_gt=wasmExports.macaddr_gt)(e),_macaddr8_cmp=Module._macaddr8_cmp=e=>(_macaddr8_cmp=Module._macaddr8_cmp=wasmExports.macaddr8_cmp)(e),_macaddr8_lt=Module._macaddr8_lt=e=>(_macaddr8_lt=Module._macaddr8_lt=wasmExports.macaddr8_lt)(e),_macaddr8_le=Module._macaddr8_le=e=>(_macaddr8_le=Module._macaddr8_le=wasmExports.macaddr8_le)(e),_macaddr8_eq=Module._macaddr8_eq=e=>(_macaddr8_eq=Module._macaddr8_eq=wasmExports.macaddr8_eq)(e),_macaddr8_ge=Module._macaddr8_ge=e=>(_macaddr8_ge=Module._macaddr8_ge=wasmExports.macaddr8_ge)(e),_macaddr8_gt=Module._macaddr8_gt=e=>(_macaddr8_gt=Module._macaddr8_gt=wasmExports.macaddr8_gt)(e),_current_query=Module._current_query=e=>(_current_query=Module._current_query=wasmExports.current_query)(e),_unpack_sql_state=Module._unpack_sql_state=e=>(_unpack_sql_state=Module._unpack_sql_state=wasmExports.unpack_sql_state)(e),_get_fn_expr_rettype=Module._get_fn_expr_rettype=e=>(_get_fn_expr_rettype=Module._get_fn_expr_rettype=wasmExports.get_fn_expr_rettype)(e),_btnamecmp=Module._btnamecmp=e=>(_btnamecmp=Module._btnamecmp=wasmExports.btnamecmp)(e),_inet_in=Module._inet_in=e=>(_inet_in=Module._inet_in=wasmExports.inet_in)(e),_network_cmp=Module._network_cmp=e=>(_network_cmp=Module._network_cmp=wasmExports.network_cmp)(e),_convert_network_to_scalar=Module._convert_network_to_scalar=(e,t,r)=>(_convert_network_to_scalar=Module._convert_network_to_scalar=wasmExports.convert_network_to_scalar)(e,t,r),_numeric_gt=Module._numeric_gt=e=>(_numeric_gt=Module._numeric_gt=wasmExports.numeric_gt)(e),_numeric_le=Module._numeric_le=e=>(_numeric_le=Module._numeric_le=wasmExports.numeric_le)(e),_numeric_float8_no_overflow=Module._numeric_float8_no_overflow=e=>(_numeric_float8_no_overflow=Module._numeric_float8_no_overflow=wasmExports.numeric_float8_no_overflow)(e),_oidout=Module._oidout=e=>(_oidout=Module._oidout=wasmExports.oidout)(e),_interval_mi=Module._interval_mi=e=>(_interval_mi=Module._interval_mi=wasmExports.interval_mi)(e),_quote_ident=Module._quote_ident=e=>(_quote_ident=Module._quote_ident=wasmExports.quote_ident)(e),_pg_wchar2mb_with_len=Module._pg_wchar2mb_with_len=(e,t,r)=>(_pg_wchar2mb_with_len=Module._pg_wchar2mb_with_len=wasmExports.pg_wchar2mb_with_len)(e,t,r),_pg_get_indexdef_columns_extended=Module._pg_get_indexdef_columns_extended=(e,t)=>(_pg_get_indexdef_columns_extended=Module._pg_get_indexdef_columns_extended=wasmExports.pg_get_indexdef_columns_extended)(e,t),_pg_get_querydef=Module._pg_get_querydef=(e,t)=>(_pg_get_querydef=Module._pg_get_querydef=wasmExports.pg_get_querydef)(e,t),_strcspn=Module._strcspn=(e,t)=>(_strcspn=Module._strcspn=wasmExports.strcspn)(e,t),_generic_restriction_selectivity=Module._generic_restriction_selectivity=(e,t,r,a,o,s)=>(_generic_restriction_selectivity=Module._generic_restriction_selectivity=wasmExports.generic_restriction_selectivity)(e,t,r,a,o,s),_genericcostestimate=Module._genericcostestimate=(e,t,r,a)=>(_genericcostestimate=Module._genericcostestimate=wasmExports.genericcostestimate)(e,t,r,a),_tidin=Module._tidin=e=>(_tidin=Module._tidin=wasmExports.tidin)(e),_tidout=Module._tidout=e=>(_tidout=Module._tidout=wasmExports.tidout)(e),_timestamp_in=Module._timestamp_in=e=>(_timestamp_in=Module._timestamp_in=wasmExports.timestamp_in)(e),_timestamp_eq=Module._timestamp_eq=e=>(_timestamp_eq=Module._timestamp_eq=wasmExports.timestamp_eq)(e),_timestamp_lt=Module._timestamp_lt=e=>(_timestamp_lt=Module._timestamp_lt=wasmExports.timestamp_lt)(e),_timestamp_gt=Module._timestamp_gt=e=>(_timestamp_gt=Module._timestamp_gt=wasmExports.timestamp_gt)(e),_timestamp_le=Module._timestamp_le=e=>(_timestamp_le=Module._timestamp_le=wasmExports.timestamp_le)(e),_timestamp_ge=Module._timestamp_ge=e=>(_timestamp_ge=Module._timestamp_ge=wasmExports.timestamp_ge)(e),_interval_eq=Module._interval_eq=e=>(_interval_eq=Module._interval_eq=wasmExports.interval_eq)(e),_interval_lt=Module._interval_lt=e=>(_interval_lt=Module._interval_lt=wasmExports.interval_lt)(e),_interval_gt=Module._interval_gt=e=>(_interval_gt=Module._interval_gt=wasmExports.interval_gt)(e),_interval_le=Module._interval_le=e=>(_interval_le=Module._interval_le=wasmExports.interval_le)(e),_interval_ge=Module._interval_ge=e=>(_interval_ge=Module._interval_ge=wasmExports.interval_ge)(e),_interval_cmp=Module._interval_cmp=e=>(_interval_cmp=Module._interval_cmp=wasmExports.interval_cmp)(e),_timestamp_mi=Module._timestamp_mi=e=>(_timestamp_mi=Module._timestamp_mi=wasmExports.timestamp_mi)(e),_interval_um=Module._interval_um=e=>(_interval_um=Module._interval_um=wasmExports.interval_um)(e),_has_fn_opclass_options=Module._has_fn_opclass_options=e=>(_has_fn_opclass_options=Module._has_fn_opclass_options=wasmExports.has_fn_opclass_options)(e),_uuid_in=Module._uuid_in=e=>(_uuid_in=Module._uuid_in=wasmExports.uuid_in)(e),_uuid_out=Module._uuid_out=e=>(_uuid_out=Module._uuid_out=wasmExports.uuid_out)(e),_uuid_cmp=Module._uuid_cmp=e=>(_uuid_cmp=Module._uuid_cmp=wasmExports.uuid_cmp)(e),_gen_random_uuid=Module._gen_random_uuid=e=>(_gen_random_uuid=Module._gen_random_uuid=wasmExports.gen_random_uuid)(e),_varbit_in=Module._varbit_in=e=>(_varbit_in=Module._varbit_in=wasmExports.varbit_in)(e),_biteq=Module._biteq=e=>(_biteq=Module._biteq=wasmExports.biteq)(e),_bitlt=Module._bitlt=e=>(_bitlt=Module._bitlt=wasmExports.bitlt)(e),_bitle=Module._bitle=e=>(_bitle=Module._bitle=wasmExports.bitle)(e),_bitgt=Module._bitgt=e=>(_bitgt=Module._bitgt=wasmExports.bitgt)(e),_bitge=Module._bitge=e=>(_bitge=Module._bitge=wasmExports.bitge)(e),_bitcmp=Module._bitcmp=e=>(_bitcmp=Module._bitcmp=wasmExports.bitcmp)(e),_bpchareq=Module._bpchareq=e=>(_bpchareq=Module._bpchareq=wasmExports.bpchareq)(e),_bpcharlt=Module._bpcharlt=e=>(_bpcharlt=Module._bpcharlt=wasmExports.bpcharlt)(e),_bpcharle=Module._bpcharle=e=>(_bpcharle=Module._bpcharle=wasmExports.bpcharle)(e),_bpchargt=Module._bpchargt=e=>(_bpchargt=Module._bpchargt=wasmExports.bpchargt)(e),_bpcharge=Module._bpcharge=e=>(_bpcharge=Module._bpcharge=wasmExports.bpcharge)(e),_bpcharcmp=Module._bpcharcmp=e=>(_bpcharcmp=Module._bpcharcmp=wasmExports.bpcharcmp)(e),_texteq=Module._texteq=e=>(_texteq=Module._texteq=wasmExports.texteq)(e),_text_lt=Module._text_lt=e=>(_text_lt=Module._text_lt=wasmExports.text_lt)(e),_text_le=Module._text_le=e=>(_text_le=Module._text_le=wasmExports.text_le)(e),_text_gt=Module._text_gt=e=>(_text_gt=Module._text_gt=wasmExports.text_gt)(e),_text_ge=Module._text_ge=e=>(_text_ge=Module._text_ge=wasmExports.text_ge)(e),_bttextcmp=Module._bttextcmp=e=>(_bttextcmp=Module._bttextcmp=wasmExports.bttextcmp)(e),_byteaeq=Module._byteaeq=e=>(_byteaeq=Module._byteaeq=wasmExports.byteaeq)(e),_bytealt=Module._bytealt=e=>(_bytealt=Module._bytealt=wasmExports.bytealt)(e),_byteale=Module._byteale=e=>(_byteale=Module._byteale=wasmExports.byteale)(e),_byteagt=Module._byteagt=e=>(_byteagt=Module._byteagt=wasmExports.byteagt)(e),_byteage=Module._byteage=e=>(_byteage=Module._byteage=wasmExports.byteage)(e),_byteacmp=Module._byteacmp=e=>(_byteacmp=Module._byteacmp=wasmExports.byteacmp)(e),_to_hex32=Module._to_hex32=e=>(_to_hex32=Module._to_hex32=wasmExports.to_hex32)(e),_varstr_levenshtein=Module._varstr_levenshtein=(e,t,r,a,o,s,n,_)=>(_varstr_levenshtein=Module._varstr_levenshtein=wasmExports.varstr_levenshtein)(e,t,r,a,o,s,n,_),_pg_xml_init=Module._pg_xml_init=e=>(_pg_xml_init=Module._pg_xml_init=wasmExports.pg_xml_init)(e),_xmlInitParser=Module._xmlInitParser=()=>(_xmlInitParser=Module._xmlInitParser=wasmExports.xmlInitParser)(),_xml_ereport=Module._xml_ereport=(e,t,r,a)=>(_xml_ereport=Module._xml_ereport=wasmExports.xml_ereport)(e,t,r,a),_pg_xml_done=Module._pg_xml_done=(e,t)=>(_pg_xml_done=Module._pg_xml_done=wasmExports.pg_xml_done)(e,t),_xmlXPathNewContext=Module._xmlXPathNewContext=e=>(_xmlXPathNewContext=Module._xmlXPathNewContext=wasmExports.xmlXPathNewContext)(e),_xmlXPathFreeContext=Module._xmlXPathFreeContext=e=>(_xmlXPathFreeContext=Module._xmlXPathFreeContext=wasmExports.xmlXPathFreeContext)(e),_xmlFreeDoc=Module._xmlFreeDoc=e=>(_xmlFreeDoc=Module._xmlFreeDoc=wasmExports.xmlFreeDoc)(e),_xmlXPathCtxtCompile=Module._xmlXPathCtxtCompile=(e,t)=>(_xmlXPathCtxtCompile=Module._xmlXPathCtxtCompile=wasmExports.xmlXPathCtxtCompile)(e,t),_xmlXPathCompiledEval=Module._xmlXPathCompiledEval=(e,t)=>(_xmlXPathCompiledEval=Module._xmlXPathCompiledEval=wasmExports.xmlXPathCompiledEval)(e,t),_xmlXPathFreeObject=Module._xmlXPathFreeObject=e=>(_xmlXPathFreeObject=Module._xmlXPathFreeObject=wasmExports.xmlXPathFreeObject)(e),_xmlXPathFreeCompExpr=Module._xmlXPathFreeCompExpr=e=>(_xmlXPathFreeCompExpr=Module._xmlXPathFreeCompExpr=wasmExports.xmlXPathFreeCompExpr)(e),_pg_do_encoding_conversion=Module._pg_do_encoding_conversion=(e,t,r,a)=>(_pg_do_encoding_conversion=Module._pg_do_encoding_conversion=wasmExports.pg_do_encoding_conversion)(e,t,r,a),_xmlStrdup=Module._xmlStrdup=e=>(_xmlStrdup=Module._xmlStrdup=wasmExports.xmlStrdup)(e),_xmlEncodeSpecialChars=Module._xmlEncodeSpecialChars=(e,t)=>(_xmlEncodeSpecialChars=Module._xmlEncodeSpecialChars=wasmExports.xmlEncodeSpecialChars)(e,t),_xmlStrlen=Module._xmlStrlen=e=>(_xmlStrlen=Module._xmlStrlen=wasmExports.xmlStrlen)(e),_xmlBufferCreate=Module._xmlBufferCreate=()=>(_xmlBufferCreate=Module._xmlBufferCreate=wasmExports.xmlBufferCreate)(),_xmlBufferFree=Module._xmlBufferFree=e=>(_xmlBufferFree=Module._xmlBufferFree=wasmExports.xmlBufferFree)(e),_xmlXPathCastNodeToString=Module._xmlXPathCastNodeToString=e=>(_xmlXPathCastNodeToString=Module._xmlXPathCastNodeToString=wasmExports.xmlXPathCastNodeToString)(e),_xmlNodeDump=Module._xmlNodeDump=(e,t,r,a,o)=>(_xmlNodeDump=Module._xmlNodeDump=wasmExports.xmlNodeDump)(e,t,r,a,o),_get_typsubscript=Module._get_typsubscript=(e,t)=>(_get_typsubscript=Module._get_typsubscript=wasmExports.get_typsubscript)(e,t),_CachedPlanAllowsSimpleValidityCheck=Module._CachedPlanAllowsSimpleValidityCheck=(e,t,r)=>(_CachedPlanAllowsSimpleValidityCheck=Module._CachedPlanAllowsSimpleValidityCheck=wasmExports.CachedPlanAllowsSimpleValidityCheck)(e,t,r),_CachedPlanIsSimplyValid=Module._CachedPlanIsSimplyValid=(e,t,r)=>(_CachedPlanIsSimplyValid=Module._CachedPlanIsSimplyValid=wasmExports.CachedPlanIsSimplyValid)(e,t,r),_GetCachedExpression=Module._GetCachedExpression=e=>(_GetCachedExpression=Module._GetCachedExpression=wasmExports.GetCachedExpression)(e),_FreeCachedExpression=Module._FreeCachedExpression=e=>(_FreeCachedExpression=Module._FreeCachedExpression=wasmExports.FreeCachedExpression)(e),_ReleaseAllPlanCacheRefsInOwner=Module._ReleaseAllPlanCacheRefsInOwner=e=>(_ReleaseAllPlanCacheRefsInOwner=Module._ReleaseAllPlanCacheRefsInOwner=wasmExports.ReleaseAllPlanCacheRefsInOwner)(e),_in_error_recursion_trouble=Module._in_error_recursion_trouble=()=>(_in_error_recursion_trouble=Module._in_error_recursion_trouble=wasmExports.in_error_recursion_trouble)(),_GetErrorContextStack=Module._GetErrorContextStack=()=>(_GetErrorContextStack=Module._GetErrorContextStack=wasmExports.GetErrorContextStack)(),_find_rendezvous_variable=Module._find_rendezvous_variable=e=>(_find_rendezvous_variable=Module._find_rendezvous_variable=wasmExports.find_rendezvous_variable)(e),_CallerFInfoFunctionCall2=Module._CallerFInfoFunctionCall2=(e,t,r,a,o)=>(_CallerFInfoFunctionCall2=Module._CallerFInfoFunctionCall2=wasmExports.CallerFInfoFunctionCall2)(e,t,r,a,o),_FunctionCall0Coll=Module._FunctionCall0Coll=(e,t)=>(_FunctionCall0Coll=Module._FunctionCall0Coll=wasmExports.FunctionCall0Coll)(e,t),_resolve_polymorphic_argtypes=Module._resolve_polymorphic_argtypes=(e,t,r,a)=>(_resolve_polymorphic_argtypes=Module._resolve_polymorphic_argtypes=wasmExports.resolve_polymorphic_argtypes)(e,t,r,a),_pg_bindtextdomain=Module._pg_bindtextdomain=e=>(_pg_bindtextdomain=Module._pg_bindtextdomain=wasmExports.pg_bindtextdomain)(e),_DefineCustomBoolVariable=Module._DefineCustomBoolVariable=(e,t,r,a,o,s,n,_,l,p)=>(_DefineCustomBoolVariable=Module._DefineCustomBoolVariable=wasmExports.DefineCustomBoolVariable)(e,t,r,a,o,s,n,_,l,p),_DefineCustomIntVariable=Module._DefineCustomIntVariable=(e,t,r,a,o,s,n,_,l,p,m,d)=>(_DefineCustomIntVariable=Module._DefineCustomIntVariable=wasmExports.DefineCustomIntVariable)(e,t,r,a,o,s,n,_,l,p,m,d),_DefineCustomRealVariable=Module._DefineCustomRealVariable=(e,t,r,a,o,s,n,_,l,p,m,d)=>(_DefineCustomRealVariable=Module._DefineCustomRealVariable=wasmExports.DefineCustomRealVariable)(e,t,r,a,o,s,n,_,l,p,m,d),_DefineCustomStringVariable=Module._DefineCustomStringVariable=(e,t,r,a,o,s,n,_,l,p)=>(_DefineCustomStringVariable=Module._DefineCustomStringVariable=wasmExports.DefineCustomStringVariable)(e,t,r,a,o,s,n,_,l,p),_DefineCustomEnumVariable=Module._DefineCustomEnumVariable=(e,t,r,a,o,s,n,_,l,p,m)=>(_DefineCustomEnumVariable=Module._DefineCustomEnumVariable=wasmExports.DefineCustomEnumVariable)(e,t,r,a,o,s,n,_,l,p,m),_MarkGUCPrefixReserved=Module._MarkGUCPrefixReserved=e=>(_MarkGUCPrefixReserved=Module._MarkGUCPrefixReserved=wasmExports.MarkGUCPrefixReserved)(e),_sampler_random_init_state=Module._sampler_random_init_state=(e,t)=>(_sampler_random_init_state=Module._sampler_random_init_state=wasmExports.sampler_random_init_state)(e,t),_pchomp=Module._pchomp=e=>(_pchomp=Module._pchomp=wasmExports.pchomp)(e),_PinPortal=Module._PinPortal=e=>(_PinPortal=Module._PinPortal=wasmExports.PinPortal)(e),_UnpinPortal=Module._UnpinPortal=e=>(_UnpinPortal=Module._UnpinPortal=wasmExports.UnpinPortal)(e),_xmlBufferWriteCHAR=Module._xmlBufferWriteCHAR=(e,t)=>(_xmlBufferWriteCHAR=Module._xmlBufferWriteCHAR=wasmExports.xmlBufferWriteCHAR)(e,t),_xmlBufferWriteChar=Module._xmlBufferWriteChar=(e,t)=>(_xmlBufferWriteChar=Module._xmlBufferWriteChar=wasmExports.xmlBufferWriteChar)(e,t),_xmlReadMemory=Module._xmlReadMemory=(e,t,r,a,o)=>(_xmlReadMemory=Module._xmlReadMemory=wasmExports.xmlReadMemory)(e,t,r,a,o),_xmlDocGetRootElement=Module._xmlDocGetRootElement=e=>(_xmlDocGetRootElement=Module._xmlDocGetRootElement=wasmExports.xmlDocGetRootElement)(e),_xmlXPathIsNaN=Module._xmlXPathIsNaN=e=>(_xmlXPathIsNaN=Module._xmlXPathIsNaN=wasmExports.xmlXPathIsNaN)(e),_xmlXPathCastToBoolean=Module._xmlXPathCastToBoolean=e=>(_xmlXPathCastToBoolean=Module._xmlXPathCastToBoolean=wasmExports.xmlXPathCastToBoolean)(e),_xmlXPathCastToNumber=Module._xmlXPathCastToNumber=e=>(_xmlXPathCastToNumber=Module._xmlXPathCastToNumber=wasmExports.xmlXPathCastToNumber)(e),___dl_seterr=(e,t)=>(___dl_seterr=wasmExports.__dl_seterr)(e,t),_getgid=Module._getgid=()=>(_getgid=Module._getgid=wasmExports.getgid)(),_getuid=Module._getuid=()=>(_getuid=Module._getuid=wasmExports.getuid)(),_gmtime=Module._gmtime=e=>(_gmtime=Module._gmtime=wasmExports.gmtime)(e),_htonl=e=>(_htonl=wasmExports.htonl)(e),_htons=e=>(_htons=wasmExports.htons)(e),_ioctl=Module._ioctl=(e,t,r)=>(_ioctl=Module._ioctl=wasmExports.ioctl)(e,t,r),_emscripten_builtin_memalign=(e,t)=>(_emscripten_builtin_memalign=wasmExports.emscripten_builtin_memalign)(e,t),_ntohs=e=>(_ntohs=wasmExports.ntohs)(e),_perror=Module._perror=e=>(_perror=Module._perror=wasmExports.perror)(e),_qsort=Module._qsort=(e,t,r,a)=>(_qsort=Module._qsort=wasmExports.qsort)(e,t,r,a),_srand=Module._srand=e=>(_srand=Module._srand=wasmExports.srand)(e),_rand=Module._rand=()=>(_rand=Module._rand=wasmExports.rand)(),__emscripten_timeout=(e,t)=>(__emscripten_timeout=wasmExports._emscripten_timeout)(e,t),_strerror_r=Module._strerror_r=(e,t,r)=>(_strerror_r=Module._strerror_r=wasmExports.strerror_r)(e,t,r),_strncat=Module._strncat=(e,t,r)=>(_strncat=Module._strncat=wasmExports.strncat)(e,t,r),_setThrew=(e,t)=>(_setThrew=wasmExports.setThrew)(e,t),__emscripten_tempret_set=e=>(__emscripten_tempret_set=wasmExports._emscripten_tempret_set)(e),__emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports._emscripten_tempret_get)(),__emscripten_stack_restore=e=>(__emscripten_stack_restore=wasmExports._emscripten_stack_restore)(e),__emscripten_stack_alloc=e=>(__emscripten_stack_alloc=wasmExports._emscripten_stack_alloc)(e),_emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports.emscripten_stack_get_current)(),___wasm_apply_data_relocs=()=>(___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs)(),_stderr=Module._stderr=2536848,_InterruptPending=Module._InterruptPending=2677872,_MyLatch=Module._MyLatch=2678060,_CritSectionCount=Module._CritSectionCount=2677924,_MyProc=Module._MyProc=2647676,_pg_global_prng_state=Module._pg_global_prng_state=2624256,_error_context_stack=Module._error_context_stack=2676168,_GUC_check_errdetail_string=Module._GUC_check_errdetail_string=2681820,_IsUnderPostmaster=Module._IsUnderPostmaster=2677953,_CurrentMemoryContext=Module._CurrentMemoryContext=2683248,_stdout=Module._stdout=2537152,_debug_query_string=Module._debug_query_string=2538700,_MyProcPort=Module._MyProcPort=2678048,___THREW__=Module.___THREW__=2698916,___threwValue=Module.___threwValue=2698920,_MyDatabaseId=Module._MyDatabaseId=2677932,_TopMemoryContext=Module._TopMemoryContext=2683252,_PG_exception_stack=Module._PG_exception_stack=2676172,_MyProcPid=Module._MyProcPid=2678024,_stdin=Module._stdin=2537e3,_ScanKeywords=Module._ScanKeywords=2374040,_pg_number_of_ones=Module._pg_number_of_ones=925120,_LocalBufferBlockPointers=Module._LocalBufferBlockPointers=2644252,_BufferBlocks=Module._BufferBlocks=2638988,_wal_level=Module._wal_level=2387920,_SnapshotAnyData=Module._SnapshotAnyData=2474096,_maintenance_work_mem=Module._maintenance_work_mem=2421576,_ParallelWorkerNumber=Module._ParallelWorkerNumber=2379480,_MainLWLockArray=Module._MainLWLockArray=2645860,_CurrentResourceOwner=Module._CurrentResourceOwner=2683296,_work_mem=Module._work_mem=2421560,_NBuffers=Module._NBuffers=2421584,_bsysscan=Module._bsysscan=2625492,_CheckXidAlive=Module._CheckXidAlive=2625488,_RecentXmin=Module._RecentXmin=2474188,_XactIsoLevel=Module._XactIsoLevel=2387784,_pgWalUsage=Module._pgWalUsage=2628960,_pgBufferUsage=Module._pgBufferUsage=2628832,_TTSOpsVirtual=Module._TTSOpsVirtual=2391608,_TransamVariables=Module._TransamVariables=2625480,_TopTransactionContext=Module._TopTransactionContext=2683272,_RmgrTable=Module._RmgrTable=2379504,_process_shared_preload_libraries_in_progress=Module._process_shared_preload_libraries_in_progress=2681216,_wal_segment_size=Module._wal_segment_size=2387940,_TopTransactionResourceOwner=Module._TopTransactionResourceOwner=2683304,_arch_module_check_errdetail_string=Module._arch_module_check_errdetail_string=2638372,_object_access_hook=Module._object_access_hook=2627600,_InvalidObjectAddress=Module._InvalidObjectAddress=1520620,_check_function_bodies=Module._check_function_bodies=2421750,_post_parse_analyze_hook=Module._post_parse_analyze_hook=2627640,_ScanKeywordTokens=Module._ScanKeywordTokens=1551648,_SPI_processed=Module._SPI_processed=2628984,_SPI_tuptable=Module._SPI_tuptable=2628992,_TTSOpsMinimalTuple=Module._TTSOpsMinimalTuple=2391712,_check_password_hook=Module._check_password_hook=2627908,_ConfigReloadPending=Module._ConfigReloadPending=2638360,_max_parallel_maintenance_workers=Module._max_parallel_maintenance_workers=2421580,_DateStyle=Module._DateStyle=2421548,_ExecutorStart_hook=Module._ExecutorStart_hook=2628808,_ExecutorRun_hook=Module._ExecutorRun_hook=2628812,_ExecutorFinish_hook=Module._ExecutorFinish_hook=2628816,_ExecutorEnd_hook=Module._ExecutorEnd_hook=2628820,_SPI_result=Module._SPI_result=2628996,_ClientAuthentication_hook=Module._ClientAuthentication_hook=2629168,_cpu_tuple_cost=Module._cpu_tuple_cost=2392168,_cpu_operator_cost=Module._cpu_operator_cost=2392184,_seq_page_cost=Module._seq_page_cost=2392152,_planner_hook=Module._planner_hook=2638056,_ShutdownRequestPending=Module._ShutdownRequestPending=2638364,_MyStartTime=Module._MyStartTime=2678032,_cluster_name=Module._cluster_name=2421800,_application_name=Module._application_name=2682044,_BufferDescriptors=Module._BufferDescriptors=2638984,_shmem_startup_hook=Module._shmem_startup_hook=2644932,_ProcessUtility_hook=Module._ProcessUtility_hook=2647764,_IntervalStyle=Module._IntervalStyle=2677956,_extra_float_digits=Module._extra_float_digits=2411976,_pg_crc32_table=Module._pg_crc32_table=2112288,_xmlFree=Module._xmlFree=2523400,_shmem_request_hook=Module._shmem_request_hook=2681220;function invoke_iii(e,t,r){var a=stackSave();try{return getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_viiii(e,t,r,a,o){var s=stackSave();try{getWasmTableEntry(e)(t,r,a,o)}catch(n){if(stackRestore(s),n!==n+0)throw n;_setThrew(1,0)}}function invoke_vi(e,t){var r=stackSave();try{getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_v(e){var t=stackSave();try{getWasmTableEntry(e)()}catch(r){if(stackRestore(t),r!==r+0)throw r;_setThrew(1,0)}}function invoke_j(e){var t=stackSave();try{return getWasmTableEntry(e)()}catch(r){if(stackRestore(t),r!==r+0)throw r;return _setThrew(1,0),0n}}function invoke_viiiiii(e,t,r,a,o,s,n){var _=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;_setThrew(1,0)}}function invoke_vii(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_iiiiii(e,t,r,a,o,s){var n=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_i(e){var t=stackSave();try{return getWasmTableEntry(e)()}catch(r){if(stackRestore(t),r!==r+0)throw r;_setThrew(1,0)}}function invoke_ii(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_viii(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_vji(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_iiii(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_iiiiiiii(e,t,r,a,o,s,n,_){var l=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_)}catch(p){if(stackRestore(l),p!==p+0)throw p;_setThrew(1,0)}}function invoke_iiiii(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(n){if(stackRestore(s),n!==n+0)throw n;_setThrew(1,0)}}function invoke_viiiiiiiii(e,t,r,a,o,s,n,_,l,p){var m=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p)}catch(d){if(stackRestore(m),d!==d+0)throw d;_setThrew(1,0)}}function invoke_viiiii(e,t,r,a,o,s){var n=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_jii(e,t,r){var a=stackSave();try{return getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;return _setThrew(1,0),0n}}function invoke_ji(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;return _setThrew(1,0),0n}}function invoke_jiiiiiiiii(e,t,r,a,o,s,n,_,l,p){var m=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p)}catch(d){if(stackRestore(m),d!==d+0)throw d;return _setThrew(1,0),0n}}function invoke_jiiiiii(e,t,r,a,o,s,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;return _setThrew(1,0),0n}}function invoke_iiiiiiiiiiiiii(e,t,r,a,o,s,n,_,l,p,m,d,g,u){var f=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p,m,d,g,u)}catch(c){if(stackRestore(f),c!==c+0)throw c;_setThrew(1,0)}}function invoke_iiiijii(e,t,r,a,o,s,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;_setThrew(1,0)}}function invoke_vijiji(e,t,r,a,o,s){var n=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_viji(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_iiji(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_iiiiiiiii(e,t,r,a,o,s,n,_,l){var p=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l)}catch(m){if(stackRestore(p),m!==m+0)throw m;_setThrew(1,0)}}function invoke_iiiiiiiiiiiiiiiiii(e,t,r,a,o,s,n,_,l,p,m,d,g,u,f,c,w,x){var S=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p,m,d,g,u,f,c,w,x)}catch(v){if(stackRestore(S),v!==v+0)throw v;_setThrew(1,0)}}function invoke_iiiij(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(n){if(stackRestore(s),n!==n+0)throw n;_setThrew(1,0)}}function invoke_iiiiiii(e,t,r,a,o,s,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;_setThrew(1,0)}}function invoke_vj(e,t){var r=stackSave();try{getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_iiiiiiiiii(e,t,r,a,o,s,n,_,l,p){var m=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p)}catch(d){if(stackRestore(m),d!==d+0)throw d;_setThrew(1,0)}}function invoke_viiji(e,t,r,a,o){var s=stackSave();try{getWasmTableEntry(e)(t,r,a,o)}catch(n){if(stackRestore(s),n!==n+0)throw n;_setThrew(1,0)}}function invoke_viiiiiiii(e,t,r,a,o,s,n,_,l){var p=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n,_,l)}catch(m){if(stackRestore(p),m!==m+0)throw m;_setThrew(1,0)}}function invoke_vij(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_ij(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_viiiiiii(e,t,r,a,o,s,n,_){var l=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n,_)}catch(p){if(stackRestore(l),p!==p+0)throw p;_setThrew(1,0)}}function invoke_viiiji(e,t,r,a,o,s){var n=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_iiij(e,t,r,a){var o=stackSave();try{return getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_vid(e,t,r){var a=stackSave();try{getWasmTableEntry(e)(t,r)}catch(o){if(stackRestore(a),o!==o+0)throw o;_setThrew(1,0)}}function invoke_ijiiiiii(e,t,r,a,o,s,n,_){var l=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_)}catch(p){if(stackRestore(l),p!==p+0)throw p;_setThrew(1,0)}}function invoke_viijii(e,t,r,a,o,s){var n=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s)}catch(_){if(stackRestore(n),_!==_+0)throw _;_setThrew(1,0)}}function invoke_iiiiiji(e,t,r,a,o,s,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;_setThrew(1,0)}}function invoke_viijiiii(e,t,r,a,o,s,n,_){var l=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n,_)}catch(p){if(stackRestore(l),p!==p+0)throw p;_setThrew(1,0)}}function invoke_viij(e,t,r,a){var o=stackSave();try{getWasmTableEntry(e)(t,r,a)}catch(s){if(stackRestore(o),s!==s+0)throw s;_setThrew(1,0)}}function invoke_jiiii(e,t,r,a,o){var s=stackSave();try{return getWasmTableEntry(e)(t,r,a,o)}catch(n){if(stackRestore(s),n!==n+0)throw n;return _setThrew(1,0),0n}}function invoke_viiiiiiiiiiii(e,t,r,a,o,s,n,_,l,p,m,d,g){var u=stackSave();try{getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p,m,d,g)}catch(f){if(stackRestore(u),f!==f+0)throw f;_setThrew(1,0)}}function invoke_di(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_id(e,t){var r=stackSave();try{return getWasmTableEntry(e)(t)}catch(a){if(stackRestore(r),a!==a+0)throw a;_setThrew(1,0)}}function invoke_ijiiiii(e,t,r,a,o,s,n){var _=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n)}catch(l){if(stackRestore(_),l!==l+0)throw l;_setThrew(1,0)}}function invoke_iiiiiiiiiii(e,t,r,a,o,s,n,_,l,p,m){var d=stackSave();try{return getWasmTableEntry(e)(t,r,a,o,s,n,_,l,p,m)}catch(g){if(stackRestore(d),g!==g+0)throw g;_setThrew(1,0)}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.wasmTable=wasmTable,Module.addFunction=addFunction,Module.removeFunction=removeFunction,Module.setValue=setValue,Module.getValue=getValue,Module.UTF8ToString=UTF8ToString,Module.stringToNewUTF8=stringToNewUTF8,Module.stringToUTF8OnStack=stringToUTF8OnStack,Module.FS_createPreloadedFile=FS_createPreloadedFile,Module.FS_unlink=FS_unlink,Module.FS_createPath=FS_createPath,Module.FS_createDevice=FS_createDevice,Module.FS=FS,Module.FS_createDataFile=FS_createDataFile,Module.FS_createLazyFile=FS_createLazyFile,Module.MEMFS=MEMFS,Module.IDBFS=IDBFS;var calledRun;dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)};function callMain(e=[]){var t=resolveGlobalSymbol(\"main\").sym;if(t){e.unshift(thisProgram);var r=e.length,a=stackAlloc((r+1)*4),o=a;e.forEach(n=>{HEAPU32[o>>2]=stringToUTF8OnStack(n),o+=4}),HEAPU32[o>>2]=0;try{var s=t(r,a);return exitJS(s,!0),s}catch(n){return handleException(n)}}}function run(e=arguments_){if(runDependencies>0||(preRun(),runDependencies>0))return;function t(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),preMain(),readyPromiseResolve(Module),Module.onRuntimeInitialized?.(),shouldRunNow&&callMain(e),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(()=>{setTimeout(()=>Module.setStatus(\"\"),1),t()},1)):t()}if(Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;return Module.noInitialRun&&(shouldRunNow=!1),run(),moduleRtn=readyPromise,moduleRtn}})(),He=pt;var je=He;var ne,te,re,ie,_e,xe,we,Se,ye,le,pe,he,de,ae,$,I,oe,me,B,Q,K,ue,se,J,O,Z,q,G,C,Ve,Xe,fe,Ke,Ye,L=class L extends qe{constructor(r={},a={}){super();k(this,C);k(this,ne,!1);k(this,te,!1);k(this,re,!1);k(this,ie,!1);k(this,_e,!1);k(this,xe,new Y);k(this,we,new Y);k(this,Se,new Y);k(this,ye,new Y);k(this,le,!1);this.debug=0;k(this,pe);k(this,he,[]);k(this,de,new ve);k(this,ae);k(this,$);k(this,I,new Map);k(this,oe,new Set);k(this,me,-1);k(this,B,[]);k(this,Q,!1);k(this,K);k(this,ue,-1);k(this,se,[]);k(this,J,0);k(this,O,null);k(this,Z,!0);k(this,q,new Uint8Array(0));k(this,G,0);typeof r==\"string\"?a={dataDir:r,...a}:a=r,this.dataDir=a.dataDir,a.parsers!==void 0&&(this.parsers={...this.parsers,...a.parsers}),a.serializers!==void 0&&(this.serializers={...this.serializers,...a.serializers}),a?.debug!==void 0&&(this.debug=a.debug),a?.relaxedDurability!==void 0&&E(this,_e,a.relaxedDurability),E(this,pe,a.extensions??{}),this.waitReady=j(this,C,Ve).call(this,a??{})}static async create(r,a){let o=typeof r==\"string\"?{dataDir:r,...a??{}}:r??{},s=new L(o);return await s.waitReady,s}get Module(){return this.mod}get ready(){return h(this,ne)&&!h(this,te)&&!h(this,re)}get closed(){return h(this,re)}async close(){await this._checkReady(),E(this,te,!0);for(let r of h(this,he))await r();try{await this.execProtocol(Pe.end()),this.mod._pgl_shutdown(),this.mod.removeFunction(h(this,ue)),this.mod.removeFunction(h(this,me))}catch(r){let a=r;if(!(a.name===\"ExitStatus\"&&a.status===0))throw r}await this.fs.closeFs(),E(this,re,!0),E(this,te,!1)}async[Symbol.asyncDispose](){await this.close()}async _handleBlob(r){E(this,ae,r?await r.arrayBuffer():void 0)}async _cleanupBlob(){E(this,ae,void 0)}async _getWrittenBlob(){if(!h(this,$))return;let r=new Blob(h(this,$));return E(this,$,void 0),r}async _checkReady(){if(h(this,te))throw new Error(\"PGlite is closing\");if(h(this,re))throw new Error(\"PGlite is closed\");h(this,ne)||await this.waitReady}execProtocolRawSync(r){let a=this.mod;return E(this,J,0),E(this,G,0),E(this,se,r),h(this,Z)&&h(this,q).length!==L.DEFAULT_RECV_BUF_SIZE&&E(this,q,new Uint8Array(L.DEFAULT_RECV_BUF_SIZE)),a._interactive_one(r.length,r[0]),E(this,se,[]),h(this,Z)&&h(this,G)?h(this,q).subarray(0,h(this,G)):new Uint8Array(0)}async execProtocolRaw(r,{syncToFs:a=!0}={}){let o=this.execProtocolRawSync(r);return a&&await this.syncToFs(),o}async execProtocol(r,{syncToFs:a=!0,throwOnError:o=!0,onNotice:s}={}){E(this,Q,o),E(this,K,s),E(this,B,[]),E(this,O,null);let n=await this.execProtocolRaw(r,{syncToFs:a}),_=h(this,O);E(this,Q,!1),E(this,K,void 0),E(this,O,null);let l={messages:h(this,B),data:n};if(E(this,B,[]),o&&_)throw E(this,de,new ve),_;return l}async execProtocolStream(r,{syncToFs:a,throwOnError:o=!0,onNotice:s}={}){E(this,Q,o),E(this,K,s),E(this,B,[]),E(this,O,null),E(this,Z,!1),await this.execProtocolRaw(r,{syncToFs:a}),E(this,Z,!0);let n=h(this,O);E(this,Q,!1),E(this,K,void 0),E(this,O,null);let _=h(this,B);if(E(this,B,[]),o&&n)throw E(this,de,new ve),n;return _}isInTransaction(){return h(this,ie)}async syncToFs(){if(h(this,le))return;E(this,le,!0);let r=async()=>{await h(this,ye).runExclusive(async()=>{E(this,le,!1),await this.fs.syncToFs(h(this,_e))})};h(this,_e)?r():await r()}async listen(r,a,o){return this._runExclusiveListen(()=>j(this,C,Ke).call(this,r,a,o))}async unlisten(r,a,o){return this._runExclusiveListen(()=>j(this,C,Ye).call(this,r,a,o))}onNotification(r){return h(this,oe).add(r),()=>{h(this,oe).delete(r)}}offNotification(r){h(this,oe).delete(r)}async dumpDataDir(r){await this._checkReady();let a=this.dataDir?.split(\"/\").pop()??\"pgdata\";return this.fs.dumpTar(a,r)}_runExclusiveQuery(r){return h(this,xe).runExclusive(r)}_runExclusiveTransaction(r){return h(this,we).runExclusive(r)}async clone(){let r=await this.dumpDataDir(\"none\");return L.create({loadDataDir:r,extensions:h(this,pe)})}_runExclusiveListen(r){return h(this,Se).runExclusive(r)}};ne=new WeakMap,te=new WeakMap,re=new WeakMap,ie=new WeakMap,_e=new WeakMap,xe=new WeakMap,we=new WeakMap,Se=new WeakMap,ye=new WeakMap,le=new WeakMap,pe=new WeakMap,he=new WeakMap,de=new WeakMap,ae=new WeakMap,$=new WeakMap,I=new WeakMap,oe=new WeakMap,me=new WeakMap,B=new WeakMap,Q=new WeakMap,K=new WeakMap,ue=new WeakMap,se=new WeakMap,J=new WeakMap,O=new WeakMap,Z=new WeakMap,q=new WeakMap,G=new WeakMap,C=new WeakSet,Ve=async function(r){if(r.fs)this.fs=r.fs;else{let{dataDir:d,fsType:g}=Ge(r.dataDir);this.fs=await Ue(d,g)}let a={},o=[],s=[`PGDATA=${W}`,`PREFIX=${Me}`,`PGUSER=${r.username??\"postgres\"}`,`PGDATABASE=${r.database??\"template1\"}`,\"MODE=REACT\",\"REPL=N\",...this.debug?[\"-d\",this.debug.toString()]:[]];r.wasmModule||De();let n=r.fsBundle?r.fsBundle.arrayBuffer():Oe(),_;n.then(d=>{_=d});let l={WASM_PREFIX:Me,arguments:s,INITIAL_MEMORY:r.initialMemory,noExitRuntime:!0,...this.debug>0?{print:console.info,printErr:console.error}:{print:()=>{},printErr:()=>{}},instantiateWasm:(d,g)=>(ze(d,r.wasmModule).then(({instance:u,module:f})=>{g(u,f)}),{}),getPreloadedPackage:(d,g)=>{if(d===\"pglite.data\"){if(_.byteLength!==g)throw new Error(`Invalid FS bundle size: ${_.byteLength} !== ${g}`);return _}throw new Error(`Unknown package: ${d}`)},preRun:[d=>{let g=d.FS.makedev(64,0),u={open:f=>{},close:f=>{},read:(f,c,w,x,S)=>{let v=h(this,ae);if(!v)throw new Error(\"No /dev/blob File or Blob provided to read from\");let b=new Uint8Array(v);if(S>=b.length)return 0;let M=Math.min(b.length-S,x);for(let y=0;y<M;y++)c[w+y]=b[S+y];return M},write:(f,c,w,x,S)=>(h(this,$)??E(this,$,[]),h(this,$).push(c.slice(w,w+x)),x),llseek:(f,c,w)=>{let x=h(this,ae);if(!x)throw new Error(\"No /dev/blob File or Blob provided to llseek\");let S=c;if(w===1?S+=f.position:w===2&&(S=new Uint8Array(x).length),S<0)throw new d.FS.ErrnoError(28);return S}};d.FS.registerDevice(g,u),d.FS.mkdev(\"/dev/blob\",g)}]},{emscriptenOpts:p}=await this.fs.init(this,l);l=p;for(let[d,g]of Object.entries(h(this,pe)))if(g instanceof URL)a[d]=ke(g);else{let u=await g.setup(this,l);if(u.emscriptenOpts&&(l=u.emscriptenOpts),u.namespaceObj){let f=this;f[d]=u.namespaceObj}u.bundlePath&&(a[d]=ke(u.bundlePath)),u.init&&o.push(u.init),u.close&&h(this,he).push(u.close)}if(l.pg_extensions=a,await n,this.mod=await je(l),E(this,me,this.mod.addFunction((d,g)=>{let u;try{u=this.mod.HEAPU8.subarray(d,d+g)}catch(f){throw console.error(\"error\",f),f}if(h(this,de).parse(u,f=>{j(this,C,Xe).call(this,f)}),h(this,Z)){let f=u.slice(),c=h(this,G)+f.length;if(c>h(this,q).length){let w=h(this,q).length+(h(this,q).length>>1)+c;c>L.MAX_BUFFER_SIZE&&(c=L.MAX_BUFFER_SIZE);let x=new Uint8Array(w);x.set(h(this,q).subarray(0,h(this,G))),E(this,q,x)}return h(this,q).set(f,h(this,G)),E(this,G,h(this,G)+f.length),h(this,q).length}return g},\"iii\")),E(this,ue,this.mod.addFunction((d,g)=>{let u=h(this,se).length-h(this,J);u>g&&(u=g);try{this.mod.HEAP8.set(h(this,se).subarray(h(this,J),h(this,J)+u),d),E(this,J,h(this,J)+u)}catch(f){console.log(f)}return u},\"iii\")),this.mod._set_read_write_cbs(h(this,ue),h(this,me)),await this.fs.initialSyncFs(),r.loadDataDir){if(this.mod.FS.analyzePath(W+\"/PG_VERSION\").exists)throw new Error(\"Database already exists, cannot load from tarball\");j(this,C,fe).call(this,\"pglite: loading data from tarball\"),await Ne(this.mod.FS,r.loadDataDir,W)}this.mod.FS.analyzePath(W+\"/PG_VERSION\").exists?j(this,C,fe).call(this,\"pglite: found DB, resuming\"):j(this,C,fe).call(this,\"pglite: no db\"),await Be(this.mod,(...d)=>j(this,C,fe).call(this,...d));let m=this.mod._pgl_initdb();if(!m)throw new Error(\"INITDB failed to return value\");if(m&1)throw new Error(\"INITDB: failed to execute\");if(m&2){let d=r.username??\"postgres\",g=r.database??\"template1\";if(m&4){if(!(m&12))throw new Error(`INITDB: Invalid db ${g}/user ${d} combination`)}else if(g!==\"template1\"&&d!==\"postgres\")throw new Error(`INITDB: created a new datadir ${W}, but an alternative db ${g}/user ${d} was requested`)}this.mod._pgl_backend(),await this.syncToFs(),E(this,ne,!0),await this.exec(\"SET search_path TO public;\"),await this._initArrayTypes();for(let d of o)await d()},Xe=function(r){if(!h(this,O)){if(r instanceof Ae)h(this,Q)&&E(this,O,r);else if(r instanceof Ie)this.debug>0&&console.warn(r),h(this,K)&&h(this,K).call(this,r);else if(r instanceof Ce)switch(r.text){case\"BEGIN\":E(this,ie,!0);break;case\"COMMIT\":case\"ROLLBACK\":E(this,ie,!1);break}else if(r instanceof Te){let a=h(this,I).get(r.channel);a&&a.forEach(o=>{queueMicrotask(()=>o(r.payload))}),h(this,oe).forEach(o=>{queueMicrotask(()=>o(r.channel,r.payload))})}h(this,B).push(r)}},fe=function(...r){this.debug>0&&console.log(...r)},Ke=async function(r,a,o){let s=be(r),n=o??this;h(this,I).has(s)||h(this,I).set(s,new Set),h(this,I).get(s).add(a);try{await n.exec(`LISTEN ${r}`)}catch(_){throw h(this,I).get(s).delete(a),h(this,I).get(s)?.size===0&&h(this,I).delete(s),_}return async _=>{await this.unlisten(s,a,_)}},Ye=async function(r,a,o){let s=be(r),n=o??this,_=async()=>{await n.exec(`UNLISTEN ${r}`),h(this,I).get(s)?.size===0&&h(this,I).delete(s)};a?(h(this,I).get(s)?.delete(a),h(this,I).get(s)?.size===0&&await _()):await _()},L.DEFAULT_RECV_BUF_SIZE=1*1024*1024,L.MAX_BUFFER_SIZE=Math.pow(2,30);var We=L;P();export{ce as IdbFs,ge as MemoryFS,Y as Mutex,We as PGlite,ot as formatQuery,et as messages,Ze as parse,tt as protocol,Je as types,at as uuid};\n//# sourceMappingURL=index.js.map","/// <reference types=\"./object-utils.d.ts\" />\nexport function isEmpty(obj) {\n if (Array.isArray(obj) || isString(obj) || isBuffer(obj)) {\n return obj.length === 0;\n }\n else if (obj) {\n return Object.keys(obj).length === 0;\n }\n return false;\n}\nexport function isUndefined(obj) {\n return typeof obj === 'undefined' || obj === undefined;\n}\nexport function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isBoolean(obj) {\n return typeof obj === 'boolean';\n}\nexport function isNull(obj) {\n return obj === null;\n}\nexport function isDate(obj) {\n return obj instanceof Date;\n}\nexport function isBigInt(obj) {\n return typeof obj === 'bigint';\n}\n// Don't change the returnd type to `obj is Buffer` to not create a\n// hard dependency to node.\nexport function isBuffer(obj) {\n return typeof Buffer !== 'undefined' && Buffer.isBuffer(obj);\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function isObject(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nexport function isArrayBufferOrView(obj) {\n return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);\n}\nexport function isPlainObject(obj) {\n if (!isObject(obj) || getTag(obj) !== '[object Object]') {\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function getLast(arr) {\n return arr[arr.length - 1];\n}\nexport function freeze(obj) {\n return Object.freeze(obj);\n}\nexport function asArray(arg) {\n if (isReadonlyArray(arg)) {\n return arg;\n }\n else {\n return [arg];\n }\n}\nexport function asReadonlyArray(arg) {\n if (isReadonlyArray(arg)) {\n return arg;\n }\n else {\n return freeze([arg]);\n }\n}\nexport function isReadonlyArray(arg) {\n return Array.isArray(arg);\n}\nexport function noop(obj) {\n return obj;\n}\nexport function compare(obj1, obj2) {\n if (isReadonlyArray(obj1) && isReadonlyArray(obj2)) {\n return compareArrays(obj1, obj2);\n }\n else if (isObject(obj1) && isObject(obj2)) {\n return compareObjects(obj1, obj2);\n }\n return obj1 === obj2;\n}\nfunction compareArrays(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0; i < arr1.length; ++i) {\n if (!compare(arr1[i], arr2[i])) {\n return false;\n }\n }\n return true;\n}\nfunction compareObjects(obj1, obj2) {\n if (isBuffer(obj1) && isBuffer(obj2)) {\n return compareBuffers(obj1, obj2);\n }\n else if (isDate(obj1) && isDate(obj2)) {\n return compareDates(obj1, obj2);\n }\n return compareGenericObjects(obj1, obj2);\n}\nfunction compareBuffers(buf1, buf2) {\n return Buffer.compare(buf1, buf2) === 0;\n}\nfunction compareDates(date1, date2) {\n return date1.getTime() === date2.getTime();\n}\nfunction compareGenericObjects(obj1, obj2) {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n if (keys1.length !== keys2.length) {\n return false;\n }\n for (const key of keys1) {\n if (!compare(obj1[key], obj2[key])) {\n return false;\n }\n }\n return true;\n}\nconst toString = Object.prototype.toString;\nfunction getTag(value) {\n if (value == null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n return toString.call(value);\n}\n","/// <reference types=\"./alter-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AlterTableNode = freeze({\n is(node) {\n return node.kind === 'AlterTableNode';\n },\n create(table) {\n return freeze({\n kind: 'AlterTableNode',\n table,\n });\n },\n cloneWithTableProps(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumnAlteration(node, columnAlteration) {\n return freeze({\n ...node,\n columnAlterations: node.columnAlterations\n ? [...node.columnAlterations, columnAlteration]\n : [columnAlteration],\n });\n },\n});\n","/// <reference types=\"./identifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const IdentifierNode = freeze({\n is(node) {\n return node.kind === 'IdentifierNode';\n },\n create(name) {\n return freeze({\n kind: 'IdentifierNode',\n name,\n });\n },\n});\n","/// <reference types=\"./create-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateIndexNode = freeze({\n is(node) {\n return node.kind === 'CreateIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./create-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CreateSchemaNode = freeze({\n is(node) {\n return node.kind === 'CreateSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'CreateSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(createSchema, params) {\n return freeze({\n ...createSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./create-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport const ON_COMMIT_ACTIONS = ['preserve rows', 'delete rows', 'drop'];\n/**\n * @internal\n */\nexport const CreateTableNode = freeze({\n is(node) {\n return node.kind === 'CreateTableNode';\n },\n create(table) {\n return freeze({\n kind: 'CreateTableNode',\n table,\n columns: freeze([]),\n });\n },\n cloneWithColumn(createTable, column) {\n return freeze({\n ...createTable,\n columns: freeze([...createTable.columns, column]),\n });\n },\n cloneWithConstraint(createTable, constraint) {\n return freeze({\n ...createTable,\n constraints: createTable.constraints\n ? freeze([...createTable.constraints, constraint])\n : freeze([constraint]),\n });\n },\n cloneWithFrontModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n frontModifiers: createTable.frontModifiers\n ? freeze([...createTable.frontModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWithEndModifier(createTable, modifier) {\n return freeze({\n ...createTable,\n endModifiers: createTable.endModifiers\n ? freeze([...createTable.endModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWith(createTable, params) {\n return freeze({\n ...createTable,\n ...params,\n });\n },\n});\n","/// <reference types=\"./schemable-identifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const SchemableIdentifierNode = freeze({\n is(node) {\n return node.kind === 'SchemableIdentifierNode';\n },\n create(identifier) {\n return freeze({\n kind: 'SchemableIdentifierNode',\n identifier: IdentifierNode.create(identifier),\n });\n },\n createWithSchema(schema, identifier) {\n return freeze({\n kind: 'SchemableIdentifierNode',\n schema: IdentifierNode.create(schema),\n identifier: IdentifierNode.create(identifier),\n });\n },\n});\n","/// <reference types=\"./drop-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropIndexNode = freeze({\n is(node) {\n return node.kind === 'DropIndexNode';\n },\n create(name, params) {\n return freeze({\n kind: 'DropIndexNode',\n name: SchemableIdentifierNode.create(name),\n ...params,\n });\n },\n cloneWith(dropIndex, props) {\n return freeze({\n ...dropIndex,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-schema-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropSchemaNode = freeze({\n is(node) {\n return node.kind === 'DropSchemaNode';\n },\n create(schema, params) {\n return freeze({\n kind: 'DropSchemaNode',\n schema: IdentifierNode.create(schema),\n ...params,\n });\n },\n cloneWith(dropSchema, params) {\n return freeze({\n ...dropSchema,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTableNode = freeze({\n is(node) {\n return node.kind === 'DropTableNode';\n },\n create(table, params) {\n return freeze({\n kind: 'DropTableNode',\n table,\n ...params,\n });\n },\n cloneWith(dropIndex, params) {\n return freeze({\n ...dropIndex,\n ...params,\n });\n },\n});\n","/// <reference types=\"./alias-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AliasNode = freeze({\n is(node) {\n return node.kind === 'AliasNode';\n },\n create(node, alias) {\n return freeze({\n kind: 'AliasNode',\n node,\n alias,\n });\n },\n});\n","/// <reference types=\"./table-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const TableNode = freeze({\n is(node) {\n return node.kind === 'TableNode';\n },\n create(table) {\n return freeze({\n kind: 'TableNode',\n table: SchemableIdentifierNode.create(table),\n });\n },\n createWithSchema(schema, table) {\n return freeze({\n kind: 'TableNode',\n table: SchemableIdentifierNode.createWithSchema(schema, table),\n });\n },\n});\n","/// <reference types=\"./operation-node-source.d.ts\" />\nimport { isFunction, isObject } from '../util/object-utils.js';\nexport function isOperationNodeSource(obj) {\n return isObject(obj) && isFunction(obj.toOperationNode);\n}\n","/// <reference types=\"./expression.d.ts\" />\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport function isExpression(obj) {\n return isObject(obj) && 'expressionType' in obj && isOperationNodeSource(obj);\n}\nexport function isAliasedExpression(obj) {\n return (isObject(obj) &&\n 'expression' in obj &&\n isString(obj.alias) &&\n isOperationNodeSource(obj));\n}\n","/// <reference types=\"./select-modifier-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SelectModifierNode = freeze({\n is(node) {\n return node.kind === 'SelectModifierNode';\n },\n create(modifier, of) {\n return freeze({\n kind: 'SelectModifierNode',\n modifier,\n of,\n });\n },\n createWithExpression(modifier) {\n return freeze({\n kind: 'SelectModifierNode',\n rawModifier: modifier,\n });\n },\n});\n","/// <reference types=\"./and-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AndNode = freeze({\n is(node) {\n return node.kind === 'AndNode';\n },\n create(left, right) {\n return freeze({\n kind: 'AndNode',\n left,\n right,\n });\n },\n});\n","/// <reference types=\"./or-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrNode = freeze({\n is(node) {\n return node.kind === 'OrNode';\n },\n create(left, right) {\n return freeze({\n kind: 'OrNode',\n left,\n right,\n });\n },\n});\n","/// <reference types=\"./on-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const OnNode = freeze({\n is(node) {\n return node.kind === 'OnNode';\n },\n create(filter) {\n return freeze({\n kind: 'OnNode',\n on: filter,\n });\n },\n cloneWithOperation(onNode, operator, operation) {\n return freeze({\n ...onNode,\n on: operator === 'And'\n ? AndNode.create(onNode.on, operation)\n : OrNode.create(onNode.on, operation),\n });\n },\n});\n","/// <reference types=\"./join-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { OnNode } from './on-node.js';\n/**\n * @internal\n */\nexport const JoinNode = freeze({\n is(node) {\n return node.kind === 'JoinNode';\n },\n create(joinType, table) {\n return freeze({\n kind: 'JoinNode',\n joinType,\n table,\n on: undefined,\n });\n },\n createWithOn(joinType, table, on) {\n return freeze({\n kind: 'JoinNode',\n joinType,\n table,\n on: OnNode.create(on),\n });\n },\n cloneWithOn(joinNode, operation) {\n return freeze({\n ...joinNode,\n on: joinNode.on\n ? OnNode.cloneWithOperation(joinNode.on, 'And', operation)\n : OnNode.create(operation),\n });\n },\n});\n","/// <reference types=\"./binary-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const BinaryOperationNode = freeze({\n is(node) {\n return node.kind === 'BinaryOperationNode';\n },\n create(leftOperand, operator, rightOperand) {\n return freeze({\n kind: 'BinaryOperationNode',\n leftOperand,\n operator,\n rightOperand,\n });\n },\n});\n","/// <reference types=\"./operator-node.d.ts\" />\nimport { freeze, isString } from '../util/object-utils.js';\nexport const COMPARISON_OPERATORS = [\n '=',\n '==',\n '!=',\n '<>',\n '>',\n '>=',\n '<',\n '<=',\n 'in',\n 'not in',\n 'is',\n 'is not',\n 'like',\n 'not like',\n 'match',\n 'ilike',\n 'not ilike',\n '@>',\n '<@',\n '^@',\n '&&',\n '?',\n '?&',\n '?|',\n '!<',\n '!>',\n '<=>',\n '!~',\n '~',\n '~*',\n '!~*',\n '@@',\n '@@@',\n '!!',\n '<->',\n 'regexp',\n 'is distinct from',\n 'is not distinct from',\n];\nexport const ARITHMETIC_OPERATORS = [\n '+',\n '-',\n '*',\n '/',\n '%',\n '^',\n '&',\n '|',\n '#',\n '<<',\n '>>',\n];\nexport const JSON_OPERATORS = ['->', '->>'];\nexport const BINARY_OPERATORS = [\n ...COMPARISON_OPERATORS,\n ...ARITHMETIC_OPERATORS,\n '&&',\n '||',\n];\nexport const UNARY_FILTER_OPERATORS = ['exists', 'not exists'];\nexport const UNARY_OPERATORS = ['not', '-', ...UNARY_FILTER_OPERATORS];\nexport const OPERATORS = [\n ...BINARY_OPERATORS,\n ...JSON_OPERATORS,\n ...UNARY_OPERATORS,\n 'between',\n 'between symmetric',\n];\n/**\n * @internal\n */\nexport const OperatorNode = freeze({\n is(node) {\n return node.kind === 'OperatorNode';\n },\n create(operator) {\n return freeze({\n kind: 'OperatorNode',\n operator,\n });\n },\n});\nexport function isOperator(op) {\n return isString(op) && OPERATORS.includes(op);\n}\nexport function isBinaryOperator(op) {\n return isString(op) && BINARY_OPERATORS.includes(op);\n}\nexport function isComparisonOperator(op) {\n return isString(op) && COMPARISON_OPERATORS.includes(op);\n}\nexport function isArithmeticOperator(op) {\n return isString(op) && ARITHMETIC_OPERATORS.includes(op);\n}\nexport function isJSONOperator(op) {\n return isString(op) && JSON_OPERATORS.includes(op);\n}\n","/// <reference types=\"./column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const ColumnNode = freeze({\n is(node) {\n return node.kind === 'ColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'ColumnNode',\n column: IdentifierNode.create(column),\n });\n },\n});\n","/// <reference types=\"./select-all-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SelectAllNode = freeze({\n is(node) {\n return node.kind === 'SelectAllNode';\n },\n create() {\n return freeze({\n kind: 'SelectAllNode',\n });\n },\n});\n","/// <reference types=\"./reference-node.d.ts\" />\nimport { SelectAllNode } from './select-all-node.js';\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ReferenceNode = freeze({\n is(node) {\n return node.kind === 'ReferenceNode';\n },\n create(column, table) {\n return freeze({\n kind: 'ReferenceNode',\n table,\n column,\n });\n },\n createSelectAll(table) {\n return freeze({\n kind: 'ReferenceNode',\n table,\n column: SelectAllNode.create(),\n });\n },\n});\n","/// <reference types=\"./dynamic-reference-builder.d.ts\" />\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { parseSimpleReferenceExpression } from '../parser/reference-parser.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport class DynamicReferenceBuilder {\n #dynamicReference;\n get dynamicReference() {\n return this.#dynamicReference;\n }\n /**\n * @private\n *\n * This needs to be here just so that the typings work. Without this\n * the generated .d.ts file contains no reference to the type param R\n * which causes this type to be equal to DynamicReferenceBuilder with\n * any R.\n */\n get refType() {\n return undefined;\n }\n constructor(reference) {\n this.#dynamicReference = reference;\n }\n toOperationNode() {\n return parseSimpleReferenceExpression(this.#dynamicReference);\n }\n}\nexport function isDynamicReferenceBuilder(obj) {\n return (isObject(obj) &&\n isOperationNodeSource(obj) &&\n isString(obj.dynamicReference));\n}\n","/// <reference types=\"./order-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrderByItemNode = freeze({\n is(node) {\n return node.kind === 'OrderByItemNode';\n },\n create(orderBy, direction) {\n return freeze({\n kind: 'OrderByItemNode',\n orderBy,\n direction,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./raw-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const RawNode = freeze({\n is(node) {\n return node.kind === 'RawNode';\n },\n create(sqlFragments, parameters) {\n return freeze({\n kind: 'RawNode',\n sqlFragments: freeze(sqlFragments),\n parameters: freeze(parameters),\n });\n },\n createWithSql(sql) {\n return RawNode.create([sql], []);\n },\n createWithChild(child) {\n return RawNode.create(['', ''], [child]);\n },\n createWithChildren(children) {\n return RawNode.create(new Array(children.length + 1).fill(''), children);\n },\n});\n","/// <reference types=\"./collate-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CollateNode = freeze({\n is(node) {\n return node.kind === 'CollateNode';\n },\n create(collation) {\n return freeze({\n kind: 'CollateNode',\n collation: IdentifierNode.create(collation),\n });\n },\n});\n","/// <reference types=\"./order-by-item-builder.d.ts\" />\nimport { CollateNode } from '../operation-node/collate-node.js';\nimport { OrderByItemNode } from '../operation-node/order-by-item-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OrderByItemBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds `desc` to the `order by` item.\n *\n * See {@link asc} for the opposite.\n */\n desc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql('desc'),\n }),\n });\n }\n /**\n * Adds `asc` to the `order by` item.\n *\n * See {@link desc} for the opposite.\n */\n asc() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n direction: RawNode.createWithSql('asc'),\n }),\n });\n }\n /**\n * Adds `nulls last` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsFirst} for the opposite.\n */\n nullsLast() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'last' }),\n });\n }\n /**\n * Adds `nulls first` to the `order by` item.\n *\n * This is only supported by some dialects like PostgreSQL and SQLite.\n *\n * See {@link nullsLast} for the opposite.\n */\n nullsFirst() {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'first' }),\n });\n }\n /**\n * Adds `collate <collationName>` to the `order by` item.\n */\n collate(collation) {\n return new OrderByItemBuilder({\n node: OrderByItemNode.cloneWith(this.#props.node, {\n collation: CollateNode.create(collation),\n }),\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\n","/// <reference types=\"./log-once.d.ts\" />\nconst LOGGED_MESSAGES = new Set();\n/**\n * Use for system-level logging, such as deprecation messages.\n * Logs a message and ensures it won't be logged again.\n */\nexport function logOnce(message) {\n if (LOGGED_MESSAGES.has(message)) {\n return;\n }\n LOGGED_MESSAGES.add(message);\n console.log(message);\n}\n","/// <reference types=\"./order-by-parser.d.ts\" />\nimport { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';\nimport { isExpression } from '../expression/expression.js';\nimport { OrderByItemNode } from '../operation-node/order-by-item-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { OrderByItemBuilder } from '../query-builder/order-by-item-builder.js';\nimport { logOnce } from '../util/log-once.js';\nimport { isExpressionOrFactory, parseExpression, } from './expression-parser.js';\nimport { parseStringReference, } from './reference-parser.js';\nexport function isOrderByDirection(thing) {\n return thing === 'asc' || thing === 'desc';\n}\nexport function parseOrderBy(args) {\n if (args.length === 2) {\n return [parseOrderByItem(args[0], args[1])];\n }\n if (args.length === 1) {\n const [orderBy] = args;\n if (Array.isArray(orderBy)) {\n logOnce('orderBy(array) is deprecated, use multiple orderBy calls instead.');\n return orderBy.map((item) => parseOrderByItem(item));\n }\n return [parseOrderByItem(orderBy)];\n }\n throw new Error(`Invalid number of arguments at order by! expected 1-2, received ${args.length}`);\n}\nexport function parseOrderByItem(expr, modifiers) {\n const parsedRef = parseOrderByExpression(expr);\n if (OrderByItemNode.is(parsedRef)) {\n if (modifiers) {\n throw new Error('Cannot specify direction twice!');\n }\n return parsedRef;\n }\n return parseOrderByWithModifiers(parsedRef, modifiers);\n}\nfunction parseOrderByExpression(expr) {\n if (isExpressionOrFactory(expr)) {\n return parseExpression(expr);\n }\n if (isDynamicReferenceBuilder(expr)) {\n return expr.toOperationNode();\n }\n const [ref, direction] = expr.split(' ');\n if (direction) {\n logOnce(\"`orderBy('column asc')` is deprecated. Use `orderBy('column', 'asc')` instead.\");\n return parseOrderByWithModifiers(parseStringReference(ref), direction);\n }\n return parseStringReference(expr);\n}\nfunction parseOrderByWithModifiers(expr, modifiers) {\n if (typeof modifiers === 'string') {\n if (!isOrderByDirection(modifiers)) {\n throw new Error(`Invalid order by direction: ${modifiers}`);\n }\n return OrderByItemNode.create(expr, RawNode.createWithSql(modifiers));\n }\n if (isExpression(modifiers)) {\n logOnce(\"`orderBy(..., expr)` is deprecated. Use `orderBy(..., 'asc')` or `orderBy(..., (ob) => ...)` instead.\");\n return OrderByItemNode.create(expr, modifiers.toOperationNode());\n }\n const node = OrderByItemNode.create(expr);\n if (!modifiers) {\n return node;\n }\n return modifiers(new OrderByItemBuilder({ node })).toOperationNode();\n}\n","/// <reference types=\"./json-reference-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONReferenceNode = freeze({\n is(node) {\n return node.kind === 'JSONReferenceNode';\n },\n create(reference, traversal) {\n return freeze({\n kind: 'JSONReferenceNode',\n reference,\n traversal,\n });\n },\n cloneWithTraversal(node, traversal) {\n return freeze({\n ...node,\n traversal,\n });\n },\n});\n","/// <reference types=\"./json-operator-chain-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONOperatorChainNode = freeze({\n is(node) {\n return node.kind === 'JSONOperatorChainNode';\n },\n create(operator) {\n return freeze({\n kind: 'JSONOperatorChainNode',\n operator,\n values: freeze([]),\n });\n },\n cloneWithValue(node, value) {\n return freeze({\n ...node,\n values: freeze([...node.values, value]),\n });\n },\n});\n","/// <reference types=\"./json-path-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONPathNode = freeze({\n is(node) {\n return node.kind === 'JSONPathNode';\n },\n create(inOperator) {\n return freeze({\n kind: 'JSONPathNode',\n inOperator,\n pathLegs: freeze([]),\n });\n },\n cloneWithLeg(jsonPathNode, pathLeg) {\n return freeze({\n ...jsonPathNode,\n pathLegs: freeze([...jsonPathNode.pathLegs, pathLeg]),\n });\n },\n});\n","/// <reference types=\"./reference-parser.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ReferenceNode } from '../operation-node/reference-node.js';\nimport { TableNode } from '../operation-node/table-node.js';\nimport { isReadonlyArray, isString } from '../util/object-utils.js';\nimport { parseExpression, isExpressionOrFactory, } from './expression-parser.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOrderByDirection, parseOrderBy, } from './order-by-parser.js';\nimport { OperatorNode, isJSONOperator, } from '../operation-node/operator-node.js';\nimport { JSONReferenceNode } from '../operation-node/json-reference-node.js';\nimport { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nexport function parseSimpleReferenceExpression(exp) {\n if (isString(exp)) {\n return parseStringReference(exp);\n }\n return exp.toOperationNode();\n}\nexport function parseReferenceExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return arg.map((it) => parseReferenceExpression(it));\n }\n else {\n return [parseReferenceExpression(arg)];\n }\n}\nexport function parseReferenceExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return parseSimpleReferenceExpression(exp);\n}\nexport function parseJSONReference(ref, op) {\n const referenceNode = parseStringReference(ref);\n if (isJSONOperator(op)) {\n return JSONReferenceNode.create(referenceNode, JSONOperatorChainNode.create(OperatorNode.create(op)));\n }\n const opWithoutLastChar = op.slice(0, -1);\n if (isJSONOperator(opWithoutLastChar)) {\n return JSONReferenceNode.create(referenceNode, JSONPathNode.create(OperatorNode.create(opWithoutLastChar)));\n }\n throw new Error(`Invalid JSON operator: ${op}`);\n}\nexport function parseStringReference(ref) {\n const COLUMN_SEPARATOR = '.';\n if (!ref.includes(COLUMN_SEPARATOR)) {\n return ReferenceNode.create(ColumnNode.create(ref));\n }\n const parts = ref.split(COLUMN_SEPARATOR).map(trim);\n if (parts.length === 3) {\n return parseStringReferenceWithTableAndSchema(parts);\n }\n if (parts.length === 2) {\n return parseStringReferenceWithTable(parts);\n }\n throw new Error(`invalid column reference ${ref}`);\n}\nexport function parseAliasedStringReference(ref) {\n const ALIAS_SEPARATOR = ' as ';\n if (ref.includes(ALIAS_SEPARATOR)) {\n const [columnRef, alias] = ref.split(ALIAS_SEPARATOR).map(trim);\n return AliasNode.create(parseStringReference(columnRef), IdentifierNode.create(alias));\n }\n else {\n return parseStringReference(ref);\n }\n}\nexport function parseColumnName(column) {\n return ColumnNode.create(column);\n}\nexport function parseOrderedColumnName(column) {\n const ORDER_SEPARATOR = ' ';\n if (column.includes(ORDER_SEPARATOR)) {\n const [columnName, order] = column.split(ORDER_SEPARATOR).map(trim);\n if (!isOrderByDirection(order)) {\n throw new Error(`invalid order direction \"${order}\" next to \"${columnName}\"`);\n }\n return parseOrderBy([columnName, order])[0];\n }\n else {\n return parseColumnName(column);\n }\n}\nfunction parseStringReferenceWithTableAndSchema(parts) {\n const [schema, table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.createWithSchema(schema, table));\n}\nfunction parseStringReferenceWithTable(parts) {\n const [table, column] = parts;\n return ReferenceNode.create(ColumnNode.create(column), TableNode.create(table));\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./primitive-value-list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PrimitiveValueListNode = freeze({\n is(node) {\n return node.kind === 'PrimitiveValueListNode';\n },\n create(values) {\n return freeze({\n kind: 'PrimitiveValueListNode',\n values: freeze([...values]),\n });\n },\n});\n","/// <reference types=\"./value-list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValueListNode = freeze({\n is(node) {\n return node.kind === 'ValueListNode';\n },\n create(values) {\n return freeze({\n kind: 'ValueListNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValueNode = freeze({\n is(node) {\n return node.kind === 'ValueNode';\n },\n create(value) {\n return freeze({\n kind: 'ValueNode',\n value,\n });\n },\n createImmediate(value) {\n return freeze({\n kind: 'ValueNode',\n value,\n immediate: true,\n });\n },\n});\n","/// <reference types=\"./value-parser.d.ts\" />\nimport { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';\nimport { ValueListNode } from '../operation-node/value-list-node.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { isBoolean, isNull, isNumber, isReadonlyArray, } from '../util/object-utils.js';\nimport { parseExpression, isExpressionOrFactory, } from './expression-parser.js';\nexport function parseValueExpressionOrList(arg) {\n if (isReadonlyArray(arg)) {\n return parseValueExpressionList(arg);\n }\n return parseValueExpression(arg);\n}\nexport function parseValueExpression(exp) {\n if (isExpressionOrFactory(exp)) {\n return parseExpression(exp);\n }\n return ValueNode.create(exp);\n}\nexport function isSafeImmediateValue(value) {\n return isNumber(value) || isBoolean(value) || isNull(value);\n}\nexport function parseSafeImmediateValue(value) {\n if (!isSafeImmediateValue(value)) {\n throw new Error(`unsafe immediate value ${JSON.stringify(value)}`);\n }\n return ValueNode.createImmediate(value);\n}\nfunction parseValueExpressionList(arg) {\n if (arg.some(isExpressionOrFactory)) {\n return ValueListNode.create(arg.map((it) => parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(arg);\n}\n","/// <reference types=\"./parens-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ParensNode = freeze({\n is(node) {\n return node.kind === 'ParensNode';\n },\n create(node) {\n return freeze({\n kind: 'ParensNode',\n node,\n });\n },\n});\n","/// <reference types=\"./binary-operation-parser.d.ts\" />\nimport { BinaryOperationNode } from '../operation-node/binary-operation-node.js';\nimport { isBoolean, isNull, isString, isUndefined, } from '../util/object-utils.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { OperatorNode, OPERATORS, } from '../operation-node/operator-node.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nimport { parseValueExpression, parseValueExpressionOrList, } from './value-parser.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { OrNode } from '../operation-node/or-node.js';\nexport function parseValueBinaryOperationOrExpression(args) {\n if (args.length === 3) {\n return parseValueBinaryOperation(args[0], args[1], args[2]);\n }\n else if (args.length === 1) {\n return parseValueExpression(args[0]);\n }\n throw new Error(`invalid arguments: ${JSON.stringify(args)}`);\n}\nexport function parseValueBinaryOperation(left, operator, right) {\n if (isIsOperator(operator) && needsIsOperator(right)) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), ValueNode.createImmediate(right));\n }\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseValueExpressionOrList(right));\n}\nexport function parseReferentialBinaryOperation(left, operator, right) {\n return BinaryOperationNode.create(parseReferenceExpression(left), parseOperator(operator), parseReferenceExpression(right));\n}\nexport function parseFilterObject(obj, combinator) {\n return parseFilterList(Object.entries(obj)\n .filter(([, v]) => !isUndefined(v))\n .map(([k, v]) => parseValueBinaryOperation(k, needsIsOperator(v) ? 'is' : '=', v)), combinator);\n}\nexport function parseFilterList(list, combinator, withParens = true) {\n const combine = combinator === 'and' ? AndNode.create : OrNode.create;\n if (list.length === 0) {\n return BinaryOperationNode.create(ValueNode.createImmediate(1), OperatorNode.create('='), ValueNode.createImmediate(combinator === 'and' ? 1 : 0));\n }\n let node = toOperationNode(list[0]);\n for (let i = 1; i < list.length; ++i) {\n node = combine(node, toOperationNode(list[i]));\n }\n if (list.length > 1 && withParens) {\n return ParensNode.create(node);\n }\n return node;\n}\nfunction isIsOperator(operator) {\n return operator === 'is' || operator === 'is not';\n}\nfunction needsIsOperator(value) {\n return isNull(value) || isBoolean(value);\n}\nfunction parseOperator(operator) {\n if (isString(operator) && OPERATORS.includes(operator)) {\n return OperatorNode.create(operator);\n }\n if (isOperationNodeSource(operator)) {\n return operator.toOperationNode();\n }\n throw new Error(`invalid operator ${JSON.stringify(operator)}`);\n}\nfunction toOperationNode(nodeOrSource) {\n return isOperationNodeSource(nodeOrSource)\n ? nodeOrSource.toOperationNode()\n : nodeOrSource;\n}\n","/// <reference types=\"./order-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrderByNode = freeze({\n is(node) {\n return node.kind === 'OrderByNode';\n },\n create(items) {\n return freeze({\n kind: 'OrderByNode',\n items: freeze([...items]),\n });\n },\n cloneWithItems(orderBy, items) {\n return freeze({\n ...orderBy,\n items: freeze([...orderBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./partition-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PartitionByNode = freeze({\n is(node) {\n return node.kind === 'PartitionByNode';\n },\n create(items) {\n return freeze({\n kind: 'PartitionByNode',\n items: freeze(items),\n });\n },\n cloneWithItems(partitionBy, items) {\n return freeze({\n ...partitionBy,\n items: freeze([...partitionBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./over-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { OrderByNode } from './order-by-node.js';\nimport { PartitionByNode } from './partition-by-node.js';\n/**\n * @internal\n */\nexport const OverNode = freeze({\n is(node) {\n return node.kind === 'OverNode';\n },\n create() {\n return freeze({\n kind: 'OverNode',\n });\n },\n cloneWithOrderByItems(overNode, items) {\n return freeze({\n ...overNode,\n orderBy: overNode.orderBy\n ? OrderByNode.cloneWithItems(overNode.orderBy, items)\n : OrderByNode.create(items),\n });\n },\n cloneWithPartitionByItems(overNode, items) {\n return freeze({\n ...overNode,\n partitionBy: overNode.partitionBy\n ? PartitionByNode.cloneWithItems(overNode.partitionBy, items)\n : PartitionByNode.create(items),\n });\n },\n});\n","/// <reference types=\"./from-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const FromNode = freeze({\n is(node) {\n return node.kind === 'FromNode';\n },\n create(froms) {\n return freeze({\n kind: 'FromNode',\n froms: freeze(froms),\n });\n },\n cloneWithFroms(from, froms) {\n return freeze({\n ...from,\n froms: freeze([...from.froms, ...froms]),\n });\n },\n});\n","/// <reference types=\"./group-by-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GroupByNode = freeze({\n is(node) {\n return node.kind === 'GroupByNode';\n },\n create(items) {\n return freeze({\n kind: 'GroupByNode',\n items: freeze(items),\n });\n },\n cloneWithItems(groupBy, items) {\n return freeze({\n ...groupBy,\n items: freeze([...groupBy.items, ...items]),\n });\n },\n});\n","/// <reference types=\"./having-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const HavingNode = freeze({\n is(node) {\n return node.kind === 'HavingNode';\n },\n create(filter) {\n return freeze({\n kind: 'HavingNode',\n having: filter,\n });\n },\n cloneWithOperation(havingNode, operator, operation) {\n return freeze({\n ...havingNode,\n having: operator === 'And'\n ? AndNode.create(havingNode.having, operation)\n : OrNode.create(havingNode.having, operation),\n });\n },\n});\n","/// <reference types=\"./insert-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const InsertQueryNode = freeze({\n is(node) {\n return node.kind === 'InsertQueryNode';\n },\n create(into, withNode, replace) {\n return freeze({\n kind: 'InsertQueryNode',\n into,\n ...(withNode && { with: withNode }),\n replace,\n });\n },\n createWithoutInto() {\n return freeze({\n kind: 'InsertQueryNode',\n });\n },\n cloneWith(insertQuery, props) {\n return freeze({\n ...insertQuery,\n ...props,\n });\n },\n});\n","/// <reference types=\"./list-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ListNode = freeze({\n is(node) {\n return node.kind === 'ListNode';\n },\n create(items) {\n return freeze({\n kind: 'ListNode',\n items: freeze(items),\n });\n },\n});\n","/// <reference types=\"./update-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { ListNode } from './list-node.js';\n/**\n * @internal\n */\nexport const UpdateQueryNode = freeze({\n is(node) {\n return node.kind === 'UpdateQueryNode';\n },\n create(tables, withNode) {\n return freeze({\n kind: 'UpdateQueryNode',\n // For backwards compatibility, use the raw table node when there's only one table\n // and don't rename the property to something like `tables`.\n table: tables.length === 1 ? tables[0] : ListNode.create(tables),\n ...(withNode && { with: withNode }),\n });\n },\n createWithoutTable() {\n return freeze({\n kind: 'UpdateQueryNode',\n });\n },\n cloneWithFromItems(updateQuery, fromItems) {\n return freeze({\n ...updateQuery,\n from: updateQuery.from\n ? FromNode.cloneWithFroms(updateQuery.from, fromItems)\n : FromNode.create(fromItems),\n });\n },\n cloneWithUpdates(updateQuery, updates) {\n return freeze({\n ...updateQuery,\n updates: updateQuery.updates\n ? freeze([...updateQuery.updates, ...updates])\n : updates,\n });\n },\n cloneWithLimit(updateQuery, limit) {\n return freeze({\n ...updateQuery,\n limit,\n });\n },\n});\n","/// <reference types=\"./using-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const UsingNode = freeze({\n is(node) {\n return node.kind === 'UsingNode';\n },\n create(tables) {\n return freeze({\n kind: 'UsingNode',\n tables: freeze(tables),\n });\n },\n cloneWithTables(using, tables) {\n return freeze({\n ...using,\n tables: freeze([...using.tables, ...tables]),\n });\n },\n});\n","/// <reference types=\"./delete-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { UsingNode } from './using-node.js';\nimport { QueryNode } from './query-node.js';\n/**\n * @internal\n */\nexport const DeleteQueryNode = freeze({\n is(node) {\n return node.kind === 'DeleteQueryNode';\n },\n create(fromItems, withNode) {\n return freeze({\n kind: 'DeleteQueryNode',\n from: FromNode.create(fromItems),\n ...(withNode && { with: withNode }),\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithLimit(deleteNode, limit) {\n return freeze({\n ...deleteNode,\n limit,\n });\n },\n cloneWithoutLimit(deleteNode) {\n return freeze({\n ...deleteNode,\n limit: undefined,\n });\n },\n cloneWithUsing(deleteNode, tables) {\n return freeze({\n ...deleteNode,\n using: deleteNode.using !== undefined\n ? UsingNode.cloneWithTables(deleteNode.using, tables)\n : UsingNode.create(tables),\n });\n },\n});\n","/// <reference types=\"./where-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AndNode } from './and-node.js';\nimport { OrNode } from './or-node.js';\n/**\n * @internal\n */\nexport const WhereNode = freeze({\n is(node) {\n return node.kind === 'WhereNode';\n },\n create(filter) {\n return freeze({\n kind: 'WhereNode',\n where: filter,\n });\n },\n cloneWithOperation(whereNode, operator, operation) {\n return freeze({\n ...whereNode,\n where: operator === 'And'\n ? AndNode.create(whereNode.where, operation)\n : OrNode.create(whereNode.where, operation),\n });\n },\n});\n","/// <reference types=\"./returning-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ReturningNode = freeze({\n is(node) {\n return node.kind === 'ReturningNode';\n },\n create(selections) {\n return freeze({\n kind: 'ReturningNode',\n selections: freeze(selections),\n });\n },\n cloneWithSelections(returning, selections) {\n return freeze({\n ...returning,\n selections: returning.selections\n ? freeze([...returning.selections, ...selections])\n : freeze(selections),\n });\n },\n});\n","/// <reference types=\"./explain-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ExplainNode = freeze({\n is(node) {\n return node.kind === 'ExplainNode';\n },\n create(format, options) {\n return freeze({\n kind: 'ExplainNode',\n format,\n options,\n });\n },\n});\n","/// <reference types=\"./when-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const WhenNode = freeze({\n is(node) {\n return node.kind === 'WhenNode';\n },\n create(condition) {\n return freeze({\n kind: 'WhenNode',\n condition,\n });\n },\n cloneWithResult(whenNode, result) {\n return freeze({\n ...whenNode,\n result,\n });\n },\n});\n","/// <reference types=\"./merge-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhenNode } from './when-node.js';\n/**\n * @internal\n */\nexport const MergeQueryNode = freeze({\n is(node) {\n return node.kind === 'MergeQueryNode';\n },\n create(into, withNode) {\n return freeze({\n kind: 'MergeQueryNode',\n into,\n ...(withNode && { with: withNode }),\n });\n },\n cloneWithUsing(mergeNode, using) {\n return freeze({\n ...mergeNode,\n using,\n });\n },\n cloneWithWhen(mergeNode, when) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens\n ? freeze([...mergeNode.whens, when])\n : freeze([when]),\n });\n },\n cloneWithThen(mergeNode, then) {\n return freeze({\n ...mergeNode,\n whens: mergeNode.whens\n ? freeze([\n ...mergeNode.whens.slice(0, -1),\n WhenNode.cloneWithResult(mergeNode.whens[mergeNode.whens.length - 1], then),\n ])\n : undefined,\n });\n },\n});\n","/// <reference types=\"./output-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OutputNode = freeze({\n is(node) {\n return node.kind === 'OutputNode';\n },\n create(selections) {\n return freeze({\n kind: 'OutputNode',\n selections: freeze(selections),\n });\n },\n cloneWithSelections(output, selections) {\n return freeze({\n ...output,\n selections: output.selections\n ? freeze([...output.selections, ...selections])\n : freeze(selections),\n });\n },\n});\n","/// <reference types=\"./query-node.d.ts\" />\nimport { InsertQueryNode } from './insert-query-node.js';\nimport { SelectQueryNode } from './select-query-node.js';\nimport { UpdateQueryNode } from './update-query-node.js';\nimport { DeleteQueryNode } from './delete-query-node.js';\nimport { WhereNode } from './where-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { ReturningNode } from './returning-node.js';\nimport { ExplainNode } from './explain-node.js';\nimport { MergeQueryNode } from './merge-query-node.js';\nimport { OutputNode } from './output-node.js';\nimport { OrderByNode } from './order-by-node.js';\n/**\n * @internal\n */\nexport const QueryNode = freeze({\n is(node) {\n return (SelectQueryNode.is(node) ||\n InsertQueryNode.is(node) ||\n UpdateQueryNode.is(node) ||\n DeleteQueryNode.is(node) ||\n MergeQueryNode.is(node));\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers\n ? freeze([...node.endModifiers, modifier])\n : freeze([modifier]),\n });\n },\n cloneWithWhere(node, operation) {\n return freeze({\n ...node,\n where: node.where\n ? WhereNode.cloneWithOperation(node.where, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithJoin(node, join) {\n return freeze({\n ...node,\n joins: node.joins ? freeze([...node.joins, join]) : freeze([join]),\n });\n },\n cloneWithReturning(node, selections) {\n return freeze({\n ...node,\n returning: node.returning\n ? ReturningNode.cloneWithSelections(node.returning, selections)\n : ReturningNode.create(selections),\n });\n },\n cloneWithoutReturning(node) {\n return freeze({\n ...node,\n returning: undefined,\n });\n },\n cloneWithoutWhere(node) {\n return freeze({\n ...node,\n where: undefined,\n });\n },\n cloneWithExplain(node, format, options) {\n return freeze({\n ...node,\n explain: ExplainNode.create(format, options?.toOperationNode()),\n });\n },\n cloneWithTop(node, top) {\n return freeze({\n ...node,\n top,\n });\n },\n cloneWithOutput(node, selections) {\n return freeze({\n ...node,\n output: node.output\n ? OutputNode.cloneWithSelections(node.output, selections)\n : OutputNode.create(selections),\n });\n },\n cloneWithOrderByItems(node, items) {\n return freeze({\n ...node,\n orderBy: node.orderBy\n ? OrderByNode.cloneWithItems(node.orderBy, items)\n : OrderByNode.create(items),\n });\n },\n cloneWithoutOrderBy(node) {\n return freeze({\n ...node,\n orderBy: undefined,\n });\n },\n});\n","/// <reference types=\"./select-query-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { FromNode } from './from-node.js';\nimport { GroupByNode } from './group-by-node.js';\nimport { HavingNode } from './having-node.js';\nimport { QueryNode } from './query-node.js';\n/**\n * @internal\n */\nexport const SelectQueryNode = freeze({\n is(node) {\n return node.kind === 'SelectQueryNode';\n },\n create(withNode) {\n return freeze({\n kind: 'SelectQueryNode',\n ...(withNode && { with: withNode }),\n });\n },\n createFrom(fromItems, withNode) {\n return freeze({\n kind: 'SelectQueryNode',\n from: FromNode.create(fromItems),\n ...(withNode && { with: withNode }),\n });\n },\n cloneWithSelections(select, selections) {\n return freeze({\n ...select,\n selections: select.selections\n ? freeze([...select.selections, ...selections])\n : freeze(selections),\n });\n },\n cloneWithDistinctOn(select, expressions) {\n return freeze({\n ...select,\n distinctOn: select.distinctOn\n ? freeze([...select.distinctOn, ...expressions])\n : freeze(expressions),\n });\n },\n cloneWithFrontModifier(select, modifier) {\n return freeze({\n ...select,\n frontModifiers: select.frontModifiers\n ? freeze([...select.frontModifiers, modifier])\n : freeze([modifier]),\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithOrderByItems: (node, items) => QueryNode.cloneWithOrderByItems(node, items),\n cloneWithGroupByItems(selectNode, items) {\n return freeze({\n ...selectNode,\n groupBy: selectNode.groupBy\n ? GroupByNode.cloneWithItems(selectNode.groupBy, items)\n : GroupByNode.create(items),\n });\n },\n cloneWithLimit(selectNode, limit) {\n return freeze({\n ...selectNode,\n limit,\n });\n },\n cloneWithOffset(selectNode, offset) {\n return freeze({\n ...selectNode,\n offset,\n });\n },\n cloneWithFetch(selectNode, fetch) {\n return freeze({\n ...selectNode,\n fetch,\n });\n },\n cloneWithHaving(selectNode, operation) {\n return freeze({\n ...selectNode,\n having: selectNode.having\n ? HavingNode.cloneWithOperation(selectNode.having, 'And', operation)\n : HavingNode.create(operation),\n });\n },\n cloneWithSetOperations(selectNode, setOperations) {\n return freeze({\n ...selectNode,\n setOperations: selectNode.setOperations\n ? freeze([...selectNode.setOperations, ...setOperations])\n : freeze([...setOperations]),\n });\n },\n cloneWithoutSelections(select) {\n return freeze({\n ...select,\n selections: [],\n });\n },\n cloneWithoutLimit(select) {\n return freeze({\n ...select,\n limit: undefined,\n });\n },\n cloneWithoutOffset(select) {\n return freeze({\n ...select,\n offset: undefined,\n });\n },\n // TODO: remove in v0.29\n /**\n * @deprecated Use `QueryNode.cloneWithoutOrderBy` instead.\n */\n cloneWithoutOrderBy: (node) => QueryNode.cloneWithoutOrderBy(node),\n cloneWithoutGroupBy(select) {\n return freeze({\n ...select,\n groupBy: undefined,\n });\n },\n});\n","/// <reference types=\"./join-builder.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class JoinBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n on(...args) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Just like {@link WhereInterface.whereRef} but adds an item to the join's\n * `on` clause instead.\n *\n * See {@link WhereInterface.whereRef} for documentation and examples.\n */\n onRef(lhs, op, rhs) {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n /**\n * Adds `on true`.\n */\n onTrue() {\n return new JoinBuilder({\n ...this.#props,\n joinNode: JoinNode.cloneWithOn(this.#props.joinNode, RawNode.createWithSql('true')),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.joinNode;\n }\n}\n","/// <reference types=\"./partition-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const PartitionByItemNode = freeze({\n is(node) {\n return node.kind === 'PartitionByItemNode';\n },\n create(partitionBy) {\n return freeze({\n kind: 'PartitionByItemNode',\n partitionBy,\n });\n },\n});\n","/// <reference types=\"./partition-by-parser.d.ts\" />\nimport { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';\nimport { parseReferenceExpressionOrList, } from './reference-parser.js';\nexport function parsePartitionBy(partitionBy) {\n return parseReferenceExpressionOrList(partitionBy).map(PartitionByItemNode.create);\n}\n","/// <reference types=\"./over-builder.d.ts\" />\nimport { OverNode } from '../operation-node/over-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { parsePartitionBy, } from '../parser/partition-by-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OverBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n orderBy(...args) {\n return new OverBuilder({\n overNode: OverNode.cloneWithOrderByItems(this.#props.overNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new OverBuilder({\n overNode: QueryNode.cloneWithoutOrderBy(this.#props.overNode),\n });\n }\n partitionBy(partitionBy) {\n return new OverBuilder({\n overNode: OverNode.cloneWithPartitionByItems(this.#props.overNode, parsePartitionBy(partitionBy)),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.overNode;\n }\n}\n","/// <reference types=\"./selection-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ReferenceNode } from './reference-node.js';\nimport { SelectAllNode } from './select-all-node.js';\n/**\n * @internal\n */\nexport const SelectionNode = freeze({\n is(node) {\n return node.kind === 'SelectionNode';\n },\n create(selection) {\n return freeze({\n kind: 'SelectionNode',\n selection: selection,\n });\n },\n createSelectAll() {\n return freeze({\n kind: 'SelectionNode',\n selection: SelectAllNode.create(),\n });\n },\n createSelectAllFromTable(table) {\n return freeze({\n kind: 'SelectionNode',\n selection: ReferenceNode.createSelectAll(table),\n });\n },\n});\n","/// <reference types=\"./select-parser.d.ts\" />\nimport { isFunction, isReadonlyArray, isString } from '../util/object-utils.js';\nimport { SelectionNode } from '../operation-node/selection-node.js';\nimport { parseAliasedStringReference } from './reference-parser.js';\nimport { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';\nimport { parseAliasedExpression, } from './expression-parser.js';\nimport { parseTable } from './table-parser.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nexport function parseSelectArg(selection) {\n if (isFunction(selection)) {\n return parseSelectArg(selection(expressionBuilder()));\n }\n else if (isReadonlyArray(selection)) {\n return selection.map((it) => parseSelectExpression(it));\n }\n else {\n return [parseSelectExpression(selection)];\n }\n}\nfunction parseSelectExpression(selection) {\n if (isString(selection)) {\n return SelectionNode.create(parseAliasedStringReference(selection));\n }\n else if (isDynamicReferenceBuilder(selection)) {\n return SelectionNode.create(selection.toOperationNode());\n }\n else {\n return SelectionNode.create(parseAliasedExpression(selection));\n }\n}\nexport function parseSelectAll(table) {\n if (!table) {\n return [SelectionNode.createSelectAll()];\n }\n else if (Array.isArray(table)) {\n return table.map(parseSelectAllArg);\n }\n else {\n return [parseSelectAllArg(table)];\n }\n}\nfunction parseSelectAllArg(table) {\n if (isString(table)) {\n return SelectionNode.createSelectAllFromTable(parseTable(table));\n }\n throw new Error(`invalid value selectAll expression: ${JSON.stringify(table)}`);\n}\n","/// <reference types=\"./values-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ValuesNode = freeze({\n is(node) {\n return node.kind === 'ValuesNode';\n },\n create(values) {\n return freeze({\n kind: 'ValuesNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./default-insert-value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DefaultInsertValueNode = freeze({\n is(node) {\n return node.kind === 'DefaultInsertValueNode';\n },\n create() {\n return freeze({\n kind: 'DefaultInsertValueNode',\n });\n },\n});\n","/// <reference types=\"./insert-values-parser.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { PrimitiveValueListNode } from '../operation-node/primitive-value-list-node.js';\nimport { ValueListNode } from '../operation-node/value-list-node.js';\nimport { freeze, isFunction, isReadonlyArray, isUndefined, } from '../util/object-utils.js';\nimport { parseValueExpression } from './value-parser.js';\nimport { ValuesNode } from '../operation-node/values-node.js';\nimport { isExpressionOrFactory } from './expression-parser.js';\nimport { DefaultInsertValueNode } from '../operation-node/default-insert-value-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nexport function parseInsertExpression(arg) {\n const objectOrList = isFunction(arg) ? arg(expressionBuilder()) : arg;\n const list = isReadonlyArray(objectOrList)\n ? objectOrList\n : freeze([objectOrList]);\n return parseInsertColumnsAndValues(list);\n}\nfunction parseInsertColumnsAndValues(rows) {\n const columns = parseColumnNamesAndIndexes(rows);\n return [\n freeze([...columns.keys()].map(ColumnNode.create)),\n ValuesNode.create(rows.map((row) => parseRowValues(row, columns))),\n ];\n}\nfunction parseColumnNamesAndIndexes(rows) {\n const columns = new Map();\n for (const row of rows) {\n const cols = Object.keys(row);\n for (const col of cols) {\n if (!columns.has(col) && row[col] !== undefined) {\n columns.set(col, columns.size);\n }\n }\n }\n return columns;\n}\nfunction parseRowValues(row, columns) {\n const rowColumns = Object.keys(row);\n const rowValues = Array.from({\n length: columns.size,\n });\n let hasUndefinedOrComplexColumns = false;\n let indexedRowColumns = rowColumns.length;\n for (const col of rowColumns) {\n const columnIdx = columns.get(col);\n if (isUndefined(columnIdx)) {\n indexedRowColumns--;\n continue;\n }\n const value = row[col];\n if (isUndefined(value) || isExpressionOrFactory(value)) {\n hasUndefinedOrComplexColumns = true;\n }\n rowValues[columnIdx] = value;\n }\n const hasMissingColumns = indexedRowColumns < columns.size;\n if (hasMissingColumns || hasUndefinedOrComplexColumns) {\n const defaultValue = DefaultInsertValueNode.create();\n return ValueListNode.create(rowValues.map((it) => isUndefined(it) ? defaultValue : parseValueExpression(it)));\n }\n return PrimitiveValueListNode.create(rowValues);\n}\n","/// <reference types=\"./column-update-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ColumnUpdateNode = freeze({\n is(node) {\n return node.kind === 'ColumnUpdateNode';\n },\n create(column, value) {\n return freeze({\n kind: 'ColumnUpdateNode',\n column,\n value,\n });\n },\n});\n","/// <reference types=\"./update-set-parser.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ColumnUpdateNode } from '../operation-node/column-update-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { parseValueExpression } from './value-parser.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nexport function parseUpdate(...args) {\n if (args.length === 2) {\n return [\n ColumnUpdateNode.create(parseReferenceExpression(args[0]), parseValueExpression(args[1])),\n ];\n }\n return parseUpdateObjectExpression(args[0]);\n}\nexport function parseUpdateObjectExpression(update) {\n const updateObj = isFunction(update) ? update(expressionBuilder()) : update;\n return Object.entries(updateObj)\n .filter(([_, value]) => value !== undefined)\n .map(([key, value]) => {\n return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));\n });\n}\n","/// <reference types=\"./on-duplicate-key-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OnDuplicateKeyNode = freeze({\n is(node) {\n return node.kind === 'OnDuplicateKeyNode';\n },\n create(updates) {\n return freeze({\n kind: 'OnDuplicateKeyNode',\n updates,\n });\n },\n});\n","/// <reference types=\"./insert-result.d.ts\" />\n/**\n * The result of an insert query.\n *\n * If the table has an auto incrementing primary key {@link insertId} will hold\n * the generated id on dialects that support it. For example PostgreSQL doesn't\n * return the id by default and {@link insertId} is undefined. On PostgreSQL you\n * need to use {@link ReturningInterface.returning} or {@link ReturningInterface.returningAll}\n * to get out the inserted id.\n *\n * {@link numInsertedOrUpdatedRows} holds the number of (actually) inserted rows.\n * On MySQL, updated rows are counted twice when using `on duplicate key update`.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function insertPerson(person: NewPerson) {\n * const result = await db\n * .insertInto('person')\n * .values(person)\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.insertId) // relevant on MySQL\n * console.log(result.numInsertedOrUpdatedRows) // always relevant\n * }\n * ```\n */\nexport class InsertResult {\n /**\n * The auto incrementing primary key of the inserted row.\n *\n * This property can be undefined when the query contains an `on conflict`\n * clause that makes the query succeed even when nothing gets inserted.\n *\n * This property is always undefined on dialects like PostgreSQL that\n * don't return the inserted id by default. On those dialects you need\n * to use the {@link ReturningInterface.returning | returning} method.\n */\n insertId;\n /**\n * Affected rows count.\n */\n numInsertedOrUpdatedRows;\n constructor(insertId, numInsertedOrUpdatedRows) {\n this.insertId = insertId;\n this.numInsertedOrUpdatedRows = numInsertedOrUpdatedRows;\n }\n}\n","/// <reference types=\"./no-result-error.d.ts\" />\nexport class NoResultError extends Error {\n /**\n * The operation node tree of the query that was executed.\n */\n node;\n constructor(node) {\n super('no result');\n this.node = node;\n }\n}\nexport function isNoResultErrorConstructor(fn) {\n return Object.prototype.hasOwnProperty.call(fn, 'prototype');\n}\n","/// <reference types=\"./on-conflict-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhereNode } from './where-node.js';\n/**\n * @internal\n */\nexport const OnConflictNode = freeze({\n is(node) {\n return node.kind === 'OnConflictNode';\n },\n create() {\n return freeze({\n kind: 'OnConflictNode',\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithIndexWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere\n ? WhereNode.cloneWithOperation(node.indexWhere, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithIndexOrWhere(node, operation) {\n return freeze({\n ...node,\n indexWhere: node.indexWhere\n ? WhereNode.cloneWithOperation(node.indexWhere, 'Or', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithUpdateWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere\n ? WhereNode.cloneWithOperation(node.updateWhere, 'And', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithUpdateOrWhere(node, operation) {\n return freeze({\n ...node,\n updateWhere: node.updateWhere\n ? WhereNode.cloneWithOperation(node.updateWhere, 'Or', operation)\n : WhereNode.create(operation),\n });\n },\n cloneWithoutIndexWhere(node) {\n return freeze({\n ...node,\n indexWhere: undefined,\n });\n },\n cloneWithoutUpdateWhere(node) {\n return freeze({\n ...node,\n updateWhere: undefined,\n });\n },\n});\n","/// <reference types=\"./on-conflict-builder.d.ts\" />\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { OnConflictNode } from '../operation-node/on-conflict-node.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class OnConflictBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specify a single column as the conflict target.\n *\n * Also see the {@link columns}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n column(column) {\n const columnNode = ColumnNode.create(column);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns\n ? freeze([...this.#props.onConflictNode.columns, columnNode])\n : freeze([columnNode]),\n }),\n });\n }\n /**\n * Specify a list of columns as the conflict target.\n *\n * Also see the {@link column}, {@link constraint} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n columns(columns) {\n const columnNodes = columns.map(ColumnNode.create);\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n columns: this.#props.onConflictNode.columns\n ? freeze([...this.#props.onConflictNode.columns, ...columnNodes])\n : freeze(columnNodes),\n }),\n });\n }\n /**\n * Specify a specific constraint by name as the conflict target.\n *\n * Also see the {@link column}, {@link columns} and {@link expression}\n * methods for alternative ways to specify the conflict target.\n */\n constraint(constraintName) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n constraint: IdentifierNode.create(constraintName),\n }),\n });\n }\n /**\n * Specify an expression as the conflict target.\n *\n * This can be used if the unique index is an expression index.\n *\n * Also see the {@link column}, {@link columns} and {@link constraint}\n * methods for alternative ways to specify the conflict target.\n */\n expression(expression) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n indexExpression: expression.toOperationNode(),\n }),\n });\n }\n where(...args) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithIndexWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new OnConflictBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutIndexWhere(this.#props.onConflictNode),\n });\n }\n /**\n * Adds the \"do nothing\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\") do nothing\n * ```\n */\n doNothing() {\n return new OnConflictDoNothingBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n doNothing: true,\n }),\n });\n }\n /**\n * Adds the \"do update set\" conflict action.\n *\n * ### Examples\n *\n * ```ts\n * const id = 1\n * const first_name = 'John'\n *\n * await db\n * .insertInto('person')\n * .values({ first_name, id })\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet({ first_name })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"id\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set \"first_name\" = $3\n * ```\n *\n * In the next example we use the `ref` method to reference\n * columns of the virtual table `excluded` in a type-safe way\n * to create an upsert operation:\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function upsertPerson(person: NewPerson): Promise<void> {\n * await db.insertInto('person')\n * .values(person)\n * .onConflict((oc) => oc\n * .column('id')\n * .doUpdateSet((eb) => ({\n * first_name: eb.ref('excluded.first_name'),\n * last_name: eb.ref('excluded.last_name')\n * })\n * )\n * )\n * .execute()\n * }\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\")\n * values ($1, $2)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = excluded.\"first_name\",\n * \"last_name\" = excluded.\"last_name\"\n * ```\n */\n doUpdateSet(update) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWith(this.#props.onConflictNode, {\n updates: parseUpdateObjectExpression(update),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\nexport class OnConflictDoNothingBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\nexport class OnConflictUpdateBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Specify a where condition for the update operation.\n *\n * See {@link WhereInterface.whereRef} for more info.\n */\n whereRef(lhs, op, rhs) {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithUpdateWhere(this.#props.onConflictNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new OnConflictUpdateBuilder({\n ...this.#props,\n onConflictNode: OnConflictNode.cloneWithoutUpdateWhere(this.#props.onConflictNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.onConflictNode;\n }\n}\n","/// <reference types=\"./top-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const TopNode = freeze({\n is(node) {\n return node.kind === 'TopNode';\n },\n create(expression, modifiers) {\n return freeze({\n kind: 'TopNode',\n expression,\n modifiers,\n });\n },\n});\n","/// <reference types=\"./top-parser.d.ts\" />\nimport { TopNode } from '../operation-node/top-node.js';\nimport { isBigInt, isNumber, isUndefined } from '../util/object-utils.js';\nexport function parseTop(expression, modifiers) {\n if (!isNumber(expression) && !isBigInt(expression)) {\n throw new Error(`Invalid top expression: ${expression}`);\n }\n if (!isUndefined(modifiers) && !isTopModifiers(modifiers)) {\n throw new Error(`Invalid top modifiers: ${modifiers}`);\n }\n return TopNode.create(expression, modifiers);\n}\nfunction isTopModifiers(modifiers) {\n return (modifiers === 'percent' ||\n modifiers === 'with ties' ||\n modifiers === 'percent with ties');\n}\n","/// <reference types=\"./or-action-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OrActionNode = freeze({\n is(node) {\n return node.kind === 'OrActionNode';\n },\n create(action) {\n return freeze({\n kind: 'OrActionNode',\n action,\n });\n },\n});\n","/// <reference types=\"./insert-query-builder.d.ts\" />\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { parseInsertExpression, } from '../parser/insert-values-parser.js';\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';\nimport { InsertResult } from './insert-result.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { parseExpression, } from '../parser/expression-parser.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { OnConflictBuilder, } from './on-conflict-builder.js';\nimport { OnConflictNode } from '../operation-node/on-conflict-node.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { OrActionNode } from '../operation-node/or-action-node.js';\nexport class InsertQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Sets the values to insert for an {@link Kysely.insertInto | insert} query.\n *\n * This method takes an object whose keys are column names and values are\n * values to insert. In addition to the column's type, the values can be\n * raw {@link sql} snippets or select queries.\n *\n * You must provide all fields you haven't explicitly marked as nullable\n * or optional using {@link Generated} or {@link ColumnType}.\n *\n * The return value of an `insert` query is an instance of {@link InsertResult}. The\n * {@link InsertResult.insertId | insertId} field holds the auto incremented primary\n * key if the database returned one.\n *\n * On PostgreSQL and some other dialects, you need to call `returning` to get\n * something out of the query.\n *\n * Also see the {@link expression} method for inserting the result of a select\n * query or any other expression.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Single row\", 10) -->\n *\n * Insert a single row:\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40\n * })\n * .executeTakeFirst()\n *\n * // `insertId` is only available on dialects that\n * // automatically return the id of the inserted row\n * // such as MySQL and SQLite. On PostgreSQL, for example,\n * // you need to add a `returning` clause to the query to\n * // get anything out. See the \"returning data\" example.\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`first_name`, `last_name`, `age`) values (?, ?, ?)\n * ```\n *\n * <!-- siteExample(\"insert\", \"Multiple rows\", 20) -->\n *\n * On dialects that support it (for example PostgreSQL) you can insert multiple\n * rows by providing an array. Note that the return value is once again very\n * dialect-specific. Some databases may only return the id of the *last* inserted\n * row and some return nothing at all unless you call `returning`.\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values([{\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * }, {\n * first_name: 'Arnold',\n * last_name: 'Schwarzenegger',\n * age: 70,\n * }])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values (($1, $2, $3), ($4, $5, $6))\n * ```\n *\n * <!-- siteExample(\"insert\", \"Returning data\", 30) -->\n *\n * On supported dialects like PostgreSQL you need to chain `returning` to the query to get\n * the inserted row's columns (or any other expression) as the return value. `returning`\n * works just like `select`. Refer to `select` method's examples and documentation for\n * more info.\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning(['id', 'first_name as name'])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\") values ($1, $2, $3) returning \"id\", \"first_name\" as \"name\"\n * ```\n *\n * <!-- siteExample(\"insert\", \"Complex values\", 40) -->\n *\n * In addition to primitives, the values can also be arbitrary expressions.\n * You can build the expressions by using a callback and calling the methods\n * on the expression builder passed to it:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const ani = \"Ani\"\n * const ston = \"ston\"\n *\n * const result = await db\n * .insertInto('person')\n * .values(({ ref, selectFrom, fn }) => ({\n * first_name: 'Jennifer',\n * last_name: sql<string>`concat(${ani}, ${ston})`,\n * middle_name: ref('first_name'),\n * age: selectFrom('person')\n * .select(fn.avg<number>('age').as('avg_age')),\n * }))\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\n * \"first_name\",\n * \"last_name\",\n * \"middle_name\",\n * \"age\"\n * )\n * values (\n * $1,\n * concat($2, $3),\n * \"first_name\",\n * (select avg(\"age\") as \"avg_age\" from \"person\")\n * )\n * ```\n *\n * You can also use the callback version of subqueries or raw expressions:\n *\n * ```ts\n * await db.with('jennifer', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'first_name', 'gender'])\n * .limit(1)\n * ).insertInto('pet').values((eb) => ({\n * owner_id: eb.selectFrom('jennifer').select('id'),\n * name: eb.selectFrom('jennifer').select('first_name'),\n * species: 'cat',\n * }))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * with \"jennifer\" as (\n * select \"id\", \"first_name\", \"gender\"\n * from \"person\"\n * where \"first_name\" = $1\n * limit $2\n * )\n * insert into \"pet\" (\"owner_id\", \"name\", \"species\")\n * values (\n * (select \"id\" from \"jennifer\"),\n * (select \"first_name\" from \"jennifer\"),\n * $3\n * )\n * ```\n */\n values(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns,\n values,\n }),\n });\n }\n /**\n * Sets the columns to insert.\n *\n * The {@link values} method sets both the columns and the values and this method\n * is not needed. But if you are using the {@link expression} method, you can use\n * this method to set the columns to insert.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .columns(['first_name'])\n * .expression((eb) => eb.selectFrom('pet').select('pet.name'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\")\n * select \"pet\".\"name\" from \"pet\"\n * ```\n */\n columns(columns) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n columns: freeze(columns.map(ColumnNode.create)),\n }),\n });\n }\n /**\n * Insert an arbitrary expression. For example the result of a select query.\n *\n * ### Examples\n *\n * <!-- siteExample(\"insert\", \"Insert subquery\", 50) -->\n *\n * You can create an `INSERT INTO SELECT FROM` query using the `expression` method.\n * This API doesn't follow our WYSIWYG principles and might be a bit difficult to\n * remember. The reasons for this design stem from implementation difficulties.\n *\n * ```ts\n * const result = await db.insertInto('person')\n * .columns(['first_name', 'last_name', 'age'])\n * .expression((eb) => eb\n * .selectFrom('pet')\n * .select((eb) => [\n * 'pet.name',\n * eb.val('Petson').as('last_name'),\n * eb.lit(7).as('age'),\n * ])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"age\")\n * select \"pet\".\"name\", $1 as \"last_name\", 7 as \"age from \"pet\"\n * ```\n */\n expression(expression) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n values: parseExpression(expression),\n }),\n });\n }\n /**\n * Creates an `insert into \"person\" default values` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .defaultValues()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" default values\n * ```\n */\n defaultValues() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n defaultValues: true,\n }),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (\"first_name\", \"last_name\", \"gender\")\n * values (?, ?, ?) -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Changes an `insert into` query to an `insert ignore into` query.\n *\n * This is only supported by some dialects like MySQL.\n *\n * To avoid a footgun, when invoked with the SQLite dialect, this method will\n * be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},\n * {@link orReplace}, and {@link orRollback}.\n *\n * If you use the ignore modifier, ignorable errors that occur while executing the\n * insert statement are ignored. For example, without ignore, a row that duplicates\n * an existing unique index or primary key value in the table causes a duplicate-key\n * error and the statement is aborted. With ignore, the row is discarded and no error\n * occurs.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .ignore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n ignore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('ignore'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or ignore into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * To avoid a footgun, when invoked with the MySQL dialect, this method will\n * be handled like {@link ignore}.\n *\n * See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orIgnore()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or ignore into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)\n * ```\n */\n orIgnore() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('ignore'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or abort into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orAbort()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or abort into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orAbort() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('abort'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or fail into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orFail()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or fail into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orFail() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('fail'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or replace into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * You can also use {@link Kysely.replaceInto} to achieve the same result.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orReplace()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or replace into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orReplace() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('replace'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert or rollback into` query.\n *\n * This is only supported by some dialects like SQLite.\n *\n * See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .orRollback()\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'female',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * insert or rollback into \"person\" (\"first_name\", \"last_name\", \"gender\") values (?, ?, ?)\n * ```\n */\n orRollback() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n orAction: OrActionNode.create('rollback'),\n }),\n });\n }\n /**\n * Changes an `insert into` query to an `insert top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Insert the first 5 rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(5)\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(5) into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n *\n * Insert the first 50 percent of rows:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.insertInto('person')\n * .top(50, 'percent')\n * .columns(['first_name', 'gender'])\n * .expression(\n * (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * insert top(50) percent into \"person\" (\"first_name\", \"gender\") select \"name\", 'other' as \"gender\" from \"pet\"\n * ```\n */\n top(expression, modifiers) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n /**\n * Adds an `on conflict` clause to the query.\n *\n * `on conflict` is only supported by some dialects like PostgreSQL and SQLite. On MySQL\n * you can use {@link ignore} and {@link onDuplicateKeyUpdate} to achieve similar results.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * ```\n *\n * You can provide the name of the constraint instead of a column name:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .constraint('pet_name_key')\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict on constraint \"pet_name_key\"\n * do update set \"species\" = $4\n * ```\n *\n * You can also specify an expression as the conflict target in case\n * the unique index is an expression index:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .expression(sql<string>`lower(name)`)\n * .doUpdateSet({ species: 'hamster' })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (lower(name))\n * do update set \"species\" = $4\n * ```\n *\n * You can add a filter for the update statement like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doUpdateSet({ species: 'hamster' })\n * .where('excluded.name', '!=', 'Catto')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\")\n * do update set \"species\" = $4\n * where \"excluded\".\"name\" != $5\n * ```\n *\n * You can create an `on conflict do nothing` clauses like this:\n *\n * ```ts\n * await db\n * .insertInto('pet')\n * .values({\n * name: 'Catto',\n * species: 'cat',\n * owner_id: 3,\n * })\n * .onConflict((oc) => oc\n * .column('name')\n * .doNothing()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"pet\" (\"name\", \"species\", \"owner_id\")\n * values ($1, $2, $3)\n * on conflict (\"name\") do nothing\n * ```\n *\n * You can refer to the columns of the virtual `excluded` table\n * in a type-safe way using a callback and the `ref` method of\n * `ExpressionBuilder`:\n *\n * ```ts\n * await db.insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onConflict(oc => oc\n * .column('id')\n * .doUpdateSet({\n * first_name: (eb) => eb.ref('excluded.first_name'),\n * last_name: (eb) => eb.ref('excluded.last_name')\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"id\", \"first_name\", \"last_name\", \"gender\")\n * values ($1, $2, $3, $4)\n * on conflict (\"id\")\n * do update set\n * \"first_name\" = \"excluded\".\"first_name\",\n * \"last_name\" = \"excluded\".\"last_name\"\n * ```\n */\n onConflict(callback) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onConflict: callback(new OnConflictBuilder({\n onConflictNode: OnConflictNode.create(),\n })).toOperationNode(),\n }),\n });\n }\n /**\n * Adds `on duplicate key update` to the query.\n *\n * If you specify `on duplicate key update`, and a row is inserted that would cause\n * a duplicate value in a unique index or primary key, an update of the old row occurs.\n *\n * This is only implemented by some dialects like MySQL. On most dialects you should\n * use {@link onConflict} instead.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .insertInto('person')\n * .values({\n * id: 1,\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * })\n * .onDuplicateKeyUpdate({ updated_at: new Date().toISOString() })\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * insert into `person` (`id`, `first_name`, `last_name`, `gender`)\n * values (?, ?, ?, ?)\n * on duplicate key update `updated_at` = ?\n * ```\n */\n onDuplicateKeyUpdate(update) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {\n onDuplicateKey: OnDuplicateKeyNode.create(parseUpdateObjectExpression(update)),\n }),\n });\n }\n returning(selection) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll()),\n });\n }\n output(args) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.insertInto('person')\n * .values({ first_name: 'James', last_name: 'Smith', gender: 'male' })\n * .returning(['first_name'])\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * insert into \"person\" (\"first_name\", \"last_name\", \"gender\") values ($1, $2, $3)\n * ```\n */\n clearReturning() {\n return new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.insertInto('person')\n * .values({ first_name: 'John', last_name: 'Doe', gender: 'male' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson } from 'type-editor' // imaginary module\n *\n * async function insertPerson(values: NewPerson, returnLastName: boolean) {\n * return await db\n * .insertInto('person')\n * .values(values)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `insertPerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new InsertQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `InsertQueryBuilder` with a new output type.\n */\n $castTo() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link values} input\n * when using {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.insertInto('person')\n * .values({\n * first_name: 'John',\n * last_name: 'Doe',\n * gender: 'male',\n * nullable_column: 'hell yeah!'\n * })\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { NewPerson, NewPet, Species } from 'type-editor' // imaginary module\n *\n * async function insertPersonAndPet(person: NewPerson, pet: Omit<NewPet, 'owner_id'>) {\n * return await db\n * .with('new_person', (qb) => qb\n * .insertInto('person')\n * .values(person)\n * .returning('id')\n * .$assertType<{ id: number }>()\n * )\n * .with('new_pet', (qb) => qb\n * .insertInto('pet')\n * .values((eb) => ({\n * owner_id: eb.selectFrom('new_person').select('id'),\n * ...pet\n * }))\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * }\n * ```\n */\n $assertType() {\n return new InsertQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this InsertQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new InsertQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [\n new InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0)),\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new InsertQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./delete-result.d.ts\" />\nexport class DeleteResult {\n numDeletedRows;\n constructor(numDeletedRows) {\n this.numDeletedRows = numDeletedRows;\n }\n}\n","/// <reference types=\"./limit-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const LimitNode = freeze({\n is(node) {\n return node.kind === 'LimitNode';\n },\n create(limit) {\n return freeze({\n kind: 'LimitNode',\n limit,\n });\n },\n});\n","/// <reference types=\"./delete-query-builder.d.ts\" />\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTableExpressionOrList, } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { DeleteResult } from './delete-result.js';\nimport { DeleteQueryNode } from '../operation-node/delete-query-node.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nexport class DeleteQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n /**\n * Changes a `delete from` query into a `delete top from` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Delete the first 5 rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(5)\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(5) from \"person\" where \"age\" > @1\n * ```\n *\n * Delete the first 50% of rows:\n *\n * ```ts\n * await db\n * .deleteFrom('person')\n * .top(50, 'percent')\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * delete top(50) percent from \"person\" where \"age\" > @1\n * ```\n */\n top(expression, modifiers) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n using(tables) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithUsing(this.#props.queryNode, parseTableExpressionOrList(tables)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n #join(joinType, args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n returning(selection) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .clearReturning()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\"\n * ```\n */\n clearReturning() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Clears the `limit` clause from the query.\n *\n * ### Examples\n *\n * ```ts\n * await db.deleteFrom('pet')\n * .returningAll()\n * .where('name', '=', 'Max')\n * .limit(5)\n * .clearLimit()\n * .execute()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * delete from \"pet\" where \"name\" = \"Max\" returning *\n * ```\n */\n clearLimit() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n orderBy(...args) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n /**\n * Adds a limit clause to the query.\n *\n * A limit clause in a delete query is only supported by some dialects\n * like MySQL.\n *\n * ### Examples\n *\n * Delete 5 oldest items in a table:\n *\n * ```ts\n * await db\n * .deleteFrom('pet')\n * .orderBy('created_at')\n * .limit(5)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `pet` order by `created_at` limit ?\n * ```\n */\n limit(limit) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: DeleteQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.deleteFrom('person')\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql`-- This is a comment`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.deleteFrom('person')\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * async function deletePerson(id: number, returnLastName: boolean) {\n * return await db\n * .deleteFrom('person')\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `deletePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new DeleteQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `DeleteQueryBuilder` with a new output type.\n */\n $castTo() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query when using {@link where} and {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const person = await db.deleteFrom('person')\n * .where('id', '=', 3)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { Species } from 'type-editor' // imaginary module\n *\n * async function deletePersonAndPets(personId: number) {\n * return await db\n * .with('deleted_person', (qb) => qb\n * .deleteFrom('person')\n * .where('id', '=', personId)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('deleted_pets', (qb) => qb\n * .deleteFrom('pet')\n * .where('owner_id', '=', personId)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['deleted_person', 'deleted_pets'])\n * .selectAll()\n * .execute()\n * }\n * ```\n */\n $assertType() {\n return new DeleteQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new DeleteQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [new DeleteResult(result.numAffectedRows ?? BigInt(0))];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new DeleteQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./update-result.d.ts\" />\nexport class UpdateResult {\n /**\n * The number of rows the update query updated (even if not changed).\n */\n numUpdatedRows;\n /**\n * The number of rows the update query changed.\n *\n * This is **optional** and only supported in dialects such as MySQL.\n * You would probably use {@link numUpdatedRows} in most cases.\n */\n numChangedRows;\n constructor(numUpdatedRows, numChangedRows) {\n this.numUpdatedRows = numUpdatedRows;\n this.numChangedRows = numChangedRows;\n }\n}\n","/// <reference types=\"./update-query-builder.d.ts\" />\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTableExpressionOrList, } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { UpdateQueryNode } from '../operation-node/update-query-node.js';\nimport { parseUpdate, } from '../parser/update-set-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { UpdateResult } from './update-result.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nexport class UpdateQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n where(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n clearWhere() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n /**\n * Changes an `update` query into a `update top` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Update the first row:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(1)\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(1) \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n *\n * Update the 50% first rows:\n *\n * ```ts\n * await db.updateTable('person')\n * .top(50, 'percent')\n * .set({ first_name: 'Foo' })\n * .where('age', '>', 18)\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * update top(50) percent \"person\" set \"first_name\" = @1 where \"age\" > @2\n * ```\n */\n top(expression, modifiers) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n from(from) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithFromItems(this.#props.queryNode, parseTableExpressionOrList(from)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n #join(joinType, args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n /**\n * Adds a limit clause to the update query for supported databases, such as MySQL.\n *\n * ### Examples\n *\n * Update the first 2 rows in the 'person' table:\n *\n * ```ts\n * await db\n * .updateTable('person')\n * .set({ first_name: 'Foo' })\n * .limit(2)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person` set `first_name` = ? limit ?\n * ```\n */\n limit(limit) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n set(...args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, parseUpdate(...args)),\n });\n }\n returning(selection) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n returningAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.updateTable('person')\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .modifyEnd(sql.raw('-- This is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * update `person`\n * set `age` = 39\n * where `first_name` = \"John\" -- This is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Clears all `returning` clauses from the query.\n *\n * ### Examples\n *\n * ```ts\n * db.updateTable('person')\n * .returningAll()\n * .set({ age: 39 })\n * .where('first_name', '=', 'John')\n * .clearReturning()\n * ```\n *\n * The generated SQL(PostgreSQL):\n *\n * ```sql\n * update \"person\" set \"age\" = 39 where \"first_name\" = \"John\"\n * ```\n */\n clearReturning() {\n return new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * const values = {\n * first_name: 'John',\n * } satisfies PersonUpdate\n *\n * db.updateTable('person')\n * .set(values)\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new UpdateQueryBuilder({\n ...this.#props,\n });\n }\n /**\n * Change the output type of the query.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `UpdateQueryBuilder` with a new output type.\n */\n $castTo() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Narrows (parts of) the output type of the query.\n *\n * Kysely tries to be as type-safe as possible, but in some cases we have to make\n * compromises for better maintainability and compilation performance. At present,\n * Kysely doesn't narrow the output type of the query based on {@link set} input\n * when using {@link where} and/or {@link returning} or {@link returningAll}.\n *\n * This utility method is very useful for these situations, as it removes unncessary\n * runtime assertion/guard code. Its input type is limited to the output type\n * of the query, so you can't add a column that doesn't exist, or change a column's\n * type to something that doesn't exist in its union type.\n *\n * ### Examples\n *\n * Turn this code:\n *\n * ```ts\n * import type { Person } from 'type-editor' // imaginary module\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * if (isWithNoNullValue(person)) {\n * functionThatExpectsPersonWithNonNullValue(person)\n * }\n *\n * function isWithNoNullValue(person: Person): person is Person & { nullable_column: string } {\n * return person.nullable_column != null\n * }\n * ```\n *\n * Into this:\n *\n * ```ts\n * import type { NotNull } from 'kysely'\n *\n * const id = 1\n * const now = new Date().toISOString()\n *\n * const person = await db.updateTable('person')\n * .set({ deleted_at: now })\n * .where('id', '=', id)\n * .where('nullable_column', 'is not', null)\n * .returningAll()\n * .$narrowType<{ deleted_at: Date; nullable_column: NotNull }>()\n * .executeTakeFirstOrThrow()\n *\n * functionThatExpectsPersonWithNonNullValue(person)\n * ```\n */\n $narrowType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Asserts that query's output row type equals the given type `T`.\n *\n * This method can be used to simplify excessively complex types to make TypeScript happy\n * and much faster.\n *\n * Kysely uses complex type magic to achieve its type safety. This complexity is sometimes too much\n * for TypeScript and you get errors like this:\n *\n * ```\n * error TS2589: Type instantiation is excessively deep and possibly infinite.\n * ```\n *\n * In these case you can often use this method to help TypeScript a little bit. When you use this\n * method to assert the output type of a query, Kysely can drop the complex output type that\n * consists of multiple nested helper types and replace it with the simple asserted type.\n *\n * Using this method doesn't reduce type safety at all. You have to pass in a type that is\n * structurally equal to the current type.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate, PetUpdate, Species } from 'type-editor' // imaginary module\n *\n * const person = {\n * id: 1,\n * gender: 'other',\n * } satisfies PersonUpdate\n *\n * const pet = {\n * name: 'Fluffy',\n * } satisfies PetUpdate\n *\n * const result = await db\n * .with('updated_person', (qb) => qb\n * .updateTable('person')\n * .set(person)\n * .where('id', '=', person.id)\n * .returning('first_name')\n * .$assertType<{ first_name: string }>()\n * )\n * .with('updated_pet', (qb) => qb\n * .updateTable('pet')\n * .set(pet)\n * .where('owner_id', '=', person.id)\n * .returning(['name as pet_name', 'species'])\n * .$assertType<{ pet_name: string, species: Species }>()\n * )\n * .selectFrom(['updated_person', 'updated_pet'])\n * .selectAll()\n * .executeTakeFirstOrThrow()\n * ```\n */\n $assertType() {\n return new UpdateQueryBuilder(this.#props);\n }\n /**\n * Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new UpdateQueryBuilder({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [\n new UpdateResult(result.numAffectedRows ?? BigInt(0), result.numChangedRows),\n ];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new UpdateQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\n","/// <reference types=\"./common-table-expression-name-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { TableNode } from './table-node.js';\n/**\n * @internal\n */\nexport const CommonTableExpressionNameNode = freeze({\n is(node) {\n return node.kind === 'CommonTableExpressionNameNode';\n },\n create(tableName, columnNames) {\n return freeze({\n kind: 'CommonTableExpressionNameNode',\n table: TableNode.create(tableName),\n columns: columnNames\n ? freeze(columnNames.map(ColumnNode.create))\n : undefined,\n });\n },\n});\n","/// <reference types=\"./common-table-expression-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const CommonTableExpressionNode = freeze({\n is(node) {\n return node.kind === 'CommonTableExpressionNode';\n },\n create(name, expression) {\n return freeze({\n kind: 'CommonTableExpressionNode',\n name,\n expression,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./cte-builder.d.ts\" />\nimport { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class CTEBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the common table expression materialized.\n */\n materialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n /**\n * Makes the common table expression not materialized.\n */\n notMaterialized() {\n return new CTEBuilder({\n ...this.#props,\n node: CommonTableExpressionNode.cloneWith(this.#props.node, {\n materialized: false,\n }),\n });\n }\n toOperationNode() {\n return this.#props.node;\n }\n}\n","/// <reference types=\"./with-parser.d.ts\" />\nimport { CommonTableExpressionNameNode } from '../operation-node/common-table-expression-name-node.js';\nimport { createQueryCreator } from './parse-utils.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { CTEBuilder, } from '../query-builder/cte-builder.js';\nimport { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';\nexport function parseCommonTableExpression(nameOrBuilderCallback, expression) {\n const expressionNode = expression(createQueryCreator()).toOperationNode();\n if (isFunction(nameOrBuilderCallback)) {\n return nameOrBuilderCallback(cteBuilderFactory(expressionNode)).toOperationNode();\n }\n return CommonTableExpressionNode.create(parseCommonTableExpressionName(nameOrBuilderCallback), expressionNode);\n}\nfunction cteBuilderFactory(expressionNode) {\n return (name) => {\n return new CTEBuilder({\n node: CommonTableExpressionNode.create(parseCommonTableExpressionName(name), expressionNode),\n });\n };\n}\nfunction parseCommonTableExpressionName(name) {\n if (name.includes('(')) {\n const parts = name.split(/[\\(\\)]/);\n const table = parts[0];\n const columns = parts[1].split(',').map((it) => it.trim());\n return CommonTableExpressionNameNode.create(table, columns);\n }\n else {\n return CommonTableExpressionNameNode.create(name);\n }\n}\n","/// <reference types=\"./with-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const WithNode = freeze({\n is(node) {\n return node.kind === 'WithNode';\n },\n create(expression, params) {\n return freeze({\n kind: 'WithNode',\n expressions: freeze([expression]),\n ...params,\n });\n },\n cloneWithExpression(withNode, expression) {\n return freeze({\n ...withNode,\n expressions: freeze([...withNode.expressions, expression]),\n });\n },\n});\n","/// <reference types=\"./random-string.d.ts\" />\nconst CHARS = [\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n];\nexport function randomString(length) {\n let chars = '';\n for (let i = 0; i < length; ++i) {\n chars += randomChar();\n }\n return chars;\n}\nfunction randomChar() {\n return CHARS[~~(Math.random() * CHARS.length)];\n}\n","/// <reference types=\"./query-id.d.ts\" />\nimport { randomString } from './random-string.js';\nexport function createQueryId() {\n return new LazyQueryId();\n}\nclass LazyQueryId {\n #queryId;\n get queryId() {\n if (this.#queryId === undefined) {\n this.#queryId = randomString(8);\n }\n return this.#queryId;\n }\n}\n","/// <reference types=\"./require-all-props.d.ts\" />\n/**\n * Helper function to check listed properties according to given type. Check if all properties has been used when object is initialised.\n *\n * Example use:\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n *\n * // propB has to be mentioned even it is optional. It still should be initialized with undefined.\n * const a: SomeType = requireAllProps<SomeType>({ propA: \"value A\", propB: undefined });\n *\n * // checked type is implicit for variable.\n * const b = requireAllProps<SomeType>({ propA: \"value A\", propB: undefined });\n * ```\n *\n * Wrong use of this helper:\n *\n * 1. Omit checked type - all checked properties will be expect as of type never\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n * // const z: SomeType = requireAllProps({ propC: \"no type will work\" }); // Property 'propA' is missing in type '{ propC: string; }' but required in type 'SomeType'.\n * ```\n *\n * 2. Apply to spreaded object - there is no way how to check in compile time if spreaded object contains all properties\n *\n * ```ts\n * type SomeType = { propA: string; propB?: number; }\n * const y: SomeType = { propA: \"\" }; // valid object according to SomeType declaration\n * // const x = requireAllProps<SomeType>({ ...y }); // Argument of type '{ propA: string; propB?: number; }' is not assignable to parameter of type 'AllProps<SomeType>'.\n * ```\n *\n * @param obj object to check if all properties has been used\n * @returns untouched obj parameter is returned\n */\nexport function requireAllProps(obj) {\n return obj;\n}\n","/// <reference types=\"./operation-node-transformer.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { requireAllProps } from '../util/require-all-props.js';\n/**\n * Transforms an operation node tree into another one.\n *\n * Kysely queries are expressed internally as a tree of objects (operation nodes).\n * `OperationNodeTransformer` takes such a tree as its input and returns a\n * transformed deep copy of it. By default the `OperationNodeTransformer`\n * does nothing. You need to override one or more methods to make it do\n * something.\n *\n * There's a method for each node type. For example if you'd like to convert\n * each identifier (table name, column name, alias etc.) from camelCase to\n * snake_case, you'd do something like this:\n *\n * ```ts\n * import { type IdentifierNode, OperationNodeTransformer } from 'kysely'\n * import snakeCase from 'lodash/snakeCase'\n *\n * class CamelCaseTransformer extends OperationNodeTransformer {\n * override transformIdentifier(node: IdentifierNode): IdentifierNode {\n * node = super.transformIdentifier(node)\n *\n * return {\n * ...node,\n * name: snakeCase(node.name),\n * }\n * }\n * }\n *\n * const transformer = new CamelCaseTransformer()\n *\n * const query = db.selectFrom('person').select(['first_name', 'last_name'])\n *\n * const tree = transformer.transformNode(query.toOperationNode())\n * ```\n */\nexport class OperationNodeTransformer {\n nodeStack = [];\n #transformers = freeze({\n AliasNode: this.transformAlias.bind(this),\n ColumnNode: this.transformColumn.bind(this),\n IdentifierNode: this.transformIdentifier.bind(this),\n SchemableIdentifierNode: this.transformSchemableIdentifier.bind(this),\n RawNode: this.transformRaw.bind(this),\n ReferenceNode: this.transformReference.bind(this),\n SelectQueryNode: this.transformSelectQuery.bind(this),\n SelectionNode: this.transformSelection.bind(this),\n TableNode: this.transformTable.bind(this),\n FromNode: this.transformFrom.bind(this),\n SelectAllNode: this.transformSelectAll.bind(this),\n AndNode: this.transformAnd.bind(this),\n OrNode: this.transformOr.bind(this),\n ValueNode: this.transformValue.bind(this),\n ValueListNode: this.transformValueList.bind(this),\n PrimitiveValueListNode: this.transformPrimitiveValueList.bind(this),\n ParensNode: this.transformParens.bind(this),\n JoinNode: this.transformJoin.bind(this),\n OperatorNode: this.transformOperator.bind(this),\n WhereNode: this.transformWhere.bind(this),\n InsertQueryNode: this.transformInsertQuery.bind(this),\n DeleteQueryNode: this.transformDeleteQuery.bind(this),\n ReturningNode: this.transformReturning.bind(this),\n CreateTableNode: this.transformCreateTable.bind(this),\n AddColumnNode: this.transformAddColumn.bind(this),\n ColumnDefinitionNode: this.transformColumnDefinition.bind(this),\n DropTableNode: this.transformDropTable.bind(this),\n DataTypeNode: this.transformDataType.bind(this),\n OrderByNode: this.transformOrderBy.bind(this),\n OrderByItemNode: this.transformOrderByItem.bind(this),\n GroupByNode: this.transformGroupBy.bind(this),\n GroupByItemNode: this.transformGroupByItem.bind(this),\n UpdateQueryNode: this.transformUpdateQuery.bind(this),\n ColumnUpdateNode: this.transformColumnUpdate.bind(this),\n LimitNode: this.transformLimit.bind(this),\n OffsetNode: this.transformOffset.bind(this),\n OnConflictNode: this.transformOnConflict.bind(this),\n OnDuplicateKeyNode: this.transformOnDuplicateKey.bind(this),\n CreateIndexNode: this.transformCreateIndex.bind(this),\n DropIndexNode: this.transformDropIndex.bind(this),\n ListNode: this.transformList.bind(this),\n PrimaryKeyConstraintNode: this.transformPrimaryKeyConstraint.bind(this),\n UniqueConstraintNode: this.transformUniqueConstraint.bind(this),\n ReferencesNode: this.transformReferences.bind(this),\n CheckConstraintNode: this.transformCheckConstraint.bind(this),\n WithNode: this.transformWith.bind(this),\n CommonTableExpressionNode: this.transformCommonTableExpression.bind(this),\n CommonTableExpressionNameNode: this.transformCommonTableExpressionName.bind(this),\n HavingNode: this.transformHaving.bind(this),\n CreateSchemaNode: this.transformCreateSchema.bind(this),\n DropSchemaNode: this.transformDropSchema.bind(this),\n AlterTableNode: this.transformAlterTable.bind(this),\n DropColumnNode: this.transformDropColumn.bind(this),\n RenameColumnNode: this.transformRenameColumn.bind(this),\n AlterColumnNode: this.transformAlterColumn.bind(this),\n ModifyColumnNode: this.transformModifyColumn.bind(this),\n AddConstraintNode: this.transformAddConstraint.bind(this),\n DropConstraintNode: this.transformDropConstraint.bind(this),\n RenameConstraintNode: this.transformRenameConstraint.bind(this),\n ForeignKeyConstraintNode: this.transformForeignKeyConstraint.bind(this),\n CreateViewNode: this.transformCreateView.bind(this),\n RefreshMaterializedViewNode: this.transformRefreshMaterializedView.bind(this),\n DropViewNode: this.transformDropView.bind(this),\n GeneratedNode: this.transformGenerated.bind(this),\n DefaultValueNode: this.transformDefaultValue.bind(this),\n OnNode: this.transformOn.bind(this),\n ValuesNode: this.transformValues.bind(this),\n SelectModifierNode: this.transformSelectModifier.bind(this),\n CreateTypeNode: this.transformCreateType.bind(this),\n DropTypeNode: this.transformDropType.bind(this),\n ExplainNode: this.transformExplain.bind(this),\n DefaultInsertValueNode: this.transformDefaultInsertValue.bind(this),\n AggregateFunctionNode: this.transformAggregateFunction.bind(this),\n OverNode: this.transformOver.bind(this),\n PartitionByNode: this.transformPartitionBy.bind(this),\n PartitionByItemNode: this.transformPartitionByItem.bind(this),\n SetOperationNode: this.transformSetOperation.bind(this),\n BinaryOperationNode: this.transformBinaryOperation.bind(this),\n UnaryOperationNode: this.transformUnaryOperation.bind(this),\n UsingNode: this.transformUsing.bind(this),\n FunctionNode: this.transformFunction.bind(this),\n CaseNode: this.transformCase.bind(this),\n WhenNode: this.transformWhen.bind(this),\n JSONReferenceNode: this.transformJSONReference.bind(this),\n JSONPathNode: this.transformJSONPath.bind(this),\n JSONPathLegNode: this.transformJSONPathLeg.bind(this),\n JSONOperatorChainNode: this.transformJSONOperatorChain.bind(this),\n TupleNode: this.transformTuple.bind(this),\n MergeQueryNode: this.transformMergeQuery.bind(this),\n MatchedNode: this.transformMatched.bind(this),\n AddIndexNode: this.transformAddIndex.bind(this),\n CastNode: this.transformCast.bind(this),\n FetchNode: this.transformFetch.bind(this),\n TopNode: this.transformTop.bind(this),\n OutputNode: this.transformOutput.bind(this),\n OrActionNode: this.transformOrAction.bind(this),\n CollateNode: this.transformCollate.bind(this),\n });\n transformNode(node, queryId) {\n if (!node) {\n return node;\n }\n this.nodeStack.push(node);\n const out = this.transformNodeImpl(node, queryId);\n this.nodeStack.pop();\n return freeze(out);\n }\n transformNodeImpl(node, queryId) {\n return this.#transformers[node.kind](node, queryId);\n }\n transformNodeList(list, queryId) {\n if (!list) {\n return list;\n }\n return freeze(list.map((node) => this.transformNode(node, queryId)));\n }\n transformSelectQuery(node, queryId) {\n return requireAllProps({\n kind: 'SelectQueryNode',\n from: this.transformNode(node.from, queryId),\n selections: this.transformNodeList(node.selections, queryId),\n distinctOn: this.transformNodeList(node.distinctOn, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n groupBy: this.transformNode(node.groupBy, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n where: this.transformNode(node.where, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n limit: this.transformNode(node.limit, queryId),\n offset: this.transformNode(node.offset, queryId),\n with: this.transformNode(node.with, queryId),\n having: this.transformNode(node.having, queryId),\n explain: this.transformNode(node.explain, queryId),\n setOperations: this.transformNodeList(node.setOperations, queryId),\n fetch: this.transformNode(node.fetch, queryId),\n top: this.transformNode(node.top, queryId),\n });\n }\n transformSelection(node, queryId) {\n return requireAllProps({\n kind: 'SelectionNode',\n selection: this.transformNode(node.selection, queryId),\n });\n }\n transformColumn(node, queryId) {\n return requireAllProps({\n kind: 'ColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformAlias(node, queryId) {\n return requireAllProps({\n kind: 'AliasNode',\n node: this.transformNode(node.node, queryId),\n alias: this.transformNode(node.alias, queryId),\n });\n }\n transformTable(node, queryId) {\n return requireAllProps({\n kind: 'TableNode',\n table: this.transformNode(node.table, queryId),\n });\n }\n transformFrom(node, queryId) {\n return requireAllProps({\n kind: 'FromNode',\n froms: this.transformNodeList(node.froms, queryId),\n });\n }\n transformReference(node, queryId) {\n return requireAllProps({\n kind: 'ReferenceNode',\n column: this.transformNode(node.column, queryId),\n table: this.transformNode(node.table, queryId),\n });\n }\n transformAnd(node, queryId) {\n return requireAllProps({\n kind: 'AndNode',\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId),\n });\n }\n transformOr(node, queryId) {\n return requireAllProps({\n kind: 'OrNode',\n left: this.transformNode(node.left, queryId),\n right: this.transformNode(node.right, queryId),\n });\n }\n transformValueList(node, queryId) {\n return requireAllProps({\n kind: 'ValueListNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformParens(node, queryId) {\n return requireAllProps({\n kind: 'ParensNode',\n node: this.transformNode(node.node, queryId),\n });\n }\n transformJoin(node, queryId) {\n return requireAllProps({\n kind: 'JoinNode',\n joinType: node.joinType,\n table: this.transformNode(node.table, queryId),\n on: this.transformNode(node.on, queryId),\n });\n }\n transformRaw(node, queryId) {\n return requireAllProps({\n kind: 'RawNode',\n sqlFragments: freeze([...node.sqlFragments]),\n parameters: this.transformNodeList(node.parameters, queryId),\n });\n }\n transformWhere(node, queryId) {\n return requireAllProps({\n kind: 'WhereNode',\n where: this.transformNode(node.where, queryId),\n });\n }\n transformInsertQuery(node, queryId) {\n return requireAllProps({\n kind: 'InsertQueryNode',\n into: this.transformNode(node.into, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n values: this.transformNode(node.values, queryId),\n returning: this.transformNode(node.returning, queryId),\n onConflict: this.transformNode(node.onConflict, queryId),\n onDuplicateKey: this.transformNode(node.onDuplicateKey, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n ignore: node.ignore,\n orAction: this.transformNode(node.orAction, queryId),\n replace: node.replace,\n explain: this.transformNode(node.explain, queryId),\n defaultValues: node.defaultValues,\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n });\n }\n transformValues(node, queryId) {\n return requireAllProps({\n kind: 'ValuesNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformDeleteQuery(node, queryId) {\n return requireAllProps({\n kind: 'DeleteQueryNode',\n from: this.transformNode(node.from, queryId),\n using: this.transformNode(node.using, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n limit: this.transformNode(node.limit, queryId),\n explain: this.transformNode(node.explain, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n });\n }\n transformReturning(node, queryId) {\n return requireAllProps({\n kind: 'ReturningNode',\n selections: this.transformNodeList(node.selections, queryId),\n });\n }\n transformCreateTable(node, queryId) {\n return requireAllProps({\n kind: 'CreateTableNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n constraints: this.transformNodeList(node.constraints, queryId),\n temporary: node.temporary,\n ifNotExists: node.ifNotExists,\n onCommit: node.onCommit,\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n selectQuery: this.transformNode(node.selectQuery, queryId),\n });\n }\n transformColumnDefinition(node, queryId) {\n return requireAllProps({\n kind: 'ColumnDefinitionNode',\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n references: this.transformNode(node.references, queryId),\n primaryKey: node.primaryKey,\n autoIncrement: node.autoIncrement,\n unique: node.unique,\n notNull: node.notNull,\n unsigned: node.unsigned,\n defaultTo: this.transformNode(node.defaultTo, queryId),\n check: this.transformNode(node.check, queryId),\n generated: this.transformNode(node.generated, queryId),\n frontModifiers: this.transformNodeList(node.frontModifiers, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n identity: node.identity,\n ifNotExists: node.ifNotExists,\n });\n }\n transformAddColumn(node, queryId) {\n return requireAllProps({\n kind: 'AddColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformDropTable(node, queryId) {\n return requireAllProps({\n kind: 'DropTableNode',\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformOrderBy(node, queryId) {\n return requireAllProps({\n kind: 'OrderByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformOrderByItem(node, queryId) {\n return requireAllProps({\n kind: 'OrderByItemNode',\n orderBy: this.transformNode(node.orderBy, queryId),\n direction: this.transformNode(node.direction, queryId),\n collation: this.transformNode(node.collation, queryId),\n nulls: node.nulls,\n });\n }\n transformGroupBy(node, queryId) {\n return requireAllProps({\n kind: 'GroupByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformGroupByItem(node, queryId) {\n return requireAllProps({\n kind: 'GroupByItemNode',\n groupBy: this.transformNode(node.groupBy, queryId),\n });\n }\n transformUpdateQuery(node, queryId) {\n return requireAllProps({\n kind: 'UpdateQueryNode',\n table: this.transformNode(node.table, queryId),\n from: this.transformNode(node.from, queryId),\n joins: this.transformNodeList(node.joins, queryId),\n where: this.transformNode(node.where, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n returning: this.transformNode(node.returning, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n with: this.transformNode(node.with, queryId),\n explain: this.transformNode(node.explain, queryId),\n limit: this.transformNode(node.limit, queryId),\n top: this.transformNode(node.top, queryId),\n output: this.transformNode(node.output, queryId),\n orderBy: this.transformNode(node.orderBy, queryId),\n });\n }\n transformColumnUpdate(node, queryId) {\n return requireAllProps({\n kind: 'ColumnUpdateNode',\n column: this.transformNode(node.column, queryId),\n value: this.transformNode(node.value, queryId),\n });\n }\n transformLimit(node, queryId) {\n return requireAllProps({\n kind: 'LimitNode',\n limit: this.transformNode(node.limit, queryId),\n });\n }\n transformOffset(node, queryId) {\n return requireAllProps({\n kind: 'OffsetNode',\n offset: this.transformNode(node.offset, queryId),\n });\n }\n transformOnConflict(node, queryId) {\n return requireAllProps({\n kind: 'OnConflictNode',\n columns: this.transformNodeList(node.columns, queryId),\n constraint: this.transformNode(node.constraint, queryId),\n indexExpression: this.transformNode(node.indexExpression, queryId),\n indexWhere: this.transformNode(node.indexWhere, queryId),\n updates: this.transformNodeList(node.updates, queryId),\n updateWhere: this.transformNode(node.updateWhere, queryId),\n doNothing: node.doNothing,\n });\n }\n transformOnDuplicateKey(node, queryId) {\n return requireAllProps({\n kind: 'OnDuplicateKeyNode',\n updates: this.transformNodeList(node.updates, queryId),\n });\n }\n transformCreateIndex(node, queryId) {\n return requireAllProps({\n kind: 'CreateIndexNode',\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists,\n where: this.transformNode(node.where, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n });\n }\n transformList(node, queryId) {\n return requireAllProps({\n kind: 'ListNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformDropIndex(node, queryId) {\n return requireAllProps({\n kind: 'DropIndexNode',\n name: this.transformNode(node.name, queryId),\n table: this.transformNode(node.table, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformPrimaryKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: 'PrimaryKeyConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformUniqueConstraint(node, queryId) {\n return requireAllProps({\n kind: 'UniqueConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n name: this.transformNode(node.name, queryId),\n nullsNotDistinct: node.nullsNotDistinct,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformForeignKeyConstraint(node, queryId) {\n return requireAllProps({\n kind: 'ForeignKeyConstraintNode',\n columns: this.transformNodeList(node.columns, queryId),\n references: this.transformNode(node.references, queryId),\n name: this.transformNode(node.name, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate,\n deferrable: node.deferrable,\n initiallyDeferred: node.initiallyDeferred,\n });\n }\n transformSetOperation(node, queryId) {\n return requireAllProps({\n kind: 'SetOperationNode',\n operator: node.operator,\n expression: this.transformNode(node.expression, queryId),\n all: node.all,\n });\n }\n transformReferences(node, queryId) {\n return requireAllProps({\n kind: 'ReferencesNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n onDelete: node.onDelete,\n onUpdate: node.onUpdate,\n });\n }\n transformCheckConstraint(node, queryId) {\n return requireAllProps({\n kind: 'CheckConstraintNode',\n expression: this.transformNode(node.expression, queryId),\n name: this.transformNode(node.name, queryId),\n });\n }\n transformWith(node, queryId) {\n return requireAllProps({\n kind: 'WithNode',\n expressions: this.transformNodeList(node.expressions, queryId),\n recursive: node.recursive,\n });\n }\n transformCommonTableExpression(node, queryId) {\n return requireAllProps({\n kind: 'CommonTableExpressionNode',\n name: this.transformNode(node.name, queryId),\n materialized: node.materialized,\n expression: this.transformNode(node.expression, queryId),\n });\n }\n transformCommonTableExpressionName(node, queryId) {\n return requireAllProps({\n kind: 'CommonTableExpressionNameNode',\n table: this.transformNode(node.table, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n });\n }\n transformHaving(node, queryId) {\n return requireAllProps({\n kind: 'HavingNode',\n having: this.transformNode(node.having, queryId),\n });\n }\n transformCreateSchema(node, queryId) {\n return requireAllProps({\n kind: 'CreateSchemaNode',\n schema: this.transformNode(node.schema, queryId),\n ifNotExists: node.ifNotExists,\n });\n }\n transformDropSchema(node, queryId) {\n return requireAllProps({\n kind: 'DropSchemaNode',\n schema: this.transformNode(node.schema, queryId),\n ifExists: node.ifExists,\n cascade: node.cascade,\n });\n }\n transformAlterTable(node, queryId) {\n return requireAllProps({\n kind: 'AlterTableNode',\n table: this.transformNode(node.table, queryId),\n renameTo: this.transformNode(node.renameTo, queryId),\n setSchema: this.transformNode(node.setSchema, queryId),\n columnAlterations: this.transformNodeList(node.columnAlterations, queryId),\n addConstraint: this.transformNode(node.addConstraint, queryId),\n dropConstraint: this.transformNode(node.dropConstraint, queryId),\n renameConstraint: this.transformNode(node.renameConstraint, queryId),\n addIndex: this.transformNode(node.addIndex, queryId),\n dropIndex: this.transformNode(node.dropIndex, queryId),\n });\n }\n transformDropColumn(node, queryId) {\n return requireAllProps({\n kind: 'DropColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformRenameColumn(node, queryId) {\n return requireAllProps({\n kind: 'RenameColumnNode',\n column: this.transformNode(node.column, queryId),\n renameTo: this.transformNode(node.renameTo, queryId),\n });\n }\n transformAlterColumn(node, queryId) {\n return requireAllProps({\n kind: 'AlterColumnNode',\n column: this.transformNode(node.column, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n dataTypeExpression: this.transformNode(node.dataTypeExpression, queryId),\n setDefault: this.transformNode(node.setDefault, queryId),\n dropDefault: node.dropDefault,\n setNotNull: node.setNotNull,\n dropNotNull: node.dropNotNull,\n });\n }\n transformModifyColumn(node, queryId) {\n return requireAllProps({\n kind: 'ModifyColumnNode',\n column: this.transformNode(node.column, queryId),\n });\n }\n transformAddConstraint(node, queryId) {\n return requireAllProps({\n kind: 'AddConstraintNode',\n constraint: this.transformNode(node.constraint, queryId),\n });\n }\n transformDropConstraint(node, queryId) {\n return requireAllProps({\n kind: 'DropConstraintNode',\n constraintName: this.transformNode(node.constraintName, queryId),\n ifExists: node.ifExists,\n modifier: node.modifier,\n });\n }\n transformRenameConstraint(node, queryId) {\n return requireAllProps({\n kind: 'RenameConstraintNode',\n oldName: this.transformNode(node.oldName, queryId),\n newName: this.transformNode(node.newName, queryId),\n });\n }\n transformCreateView(node, queryId) {\n return requireAllProps({\n kind: 'CreateViewNode',\n name: this.transformNode(node.name, queryId),\n temporary: node.temporary,\n orReplace: node.orReplace,\n ifNotExists: node.ifNotExists,\n materialized: node.materialized,\n columns: this.transformNodeList(node.columns, queryId),\n as: this.transformNode(node.as, queryId),\n });\n }\n transformRefreshMaterializedView(node, queryId) {\n return requireAllProps({\n kind: 'RefreshMaterializedViewNode',\n name: this.transformNode(node.name, queryId),\n concurrently: node.concurrently,\n withNoData: node.withNoData,\n });\n }\n transformDropView(node, queryId) {\n return requireAllProps({\n kind: 'DropViewNode',\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists,\n materialized: node.materialized,\n cascade: node.cascade,\n });\n }\n transformGenerated(node, queryId) {\n return requireAllProps({\n kind: 'GeneratedNode',\n byDefault: node.byDefault,\n always: node.always,\n identity: node.identity,\n stored: node.stored,\n expression: this.transformNode(node.expression, queryId),\n });\n }\n transformDefaultValue(node, queryId) {\n return requireAllProps({\n kind: 'DefaultValueNode',\n defaultValue: this.transformNode(node.defaultValue, queryId),\n });\n }\n transformOn(node, queryId) {\n return requireAllProps({\n kind: 'OnNode',\n on: this.transformNode(node.on, queryId),\n });\n }\n transformSelectModifier(node, queryId) {\n return requireAllProps({\n kind: 'SelectModifierNode',\n modifier: node.modifier,\n rawModifier: this.transformNode(node.rawModifier, queryId),\n of: this.transformNodeList(node.of, queryId),\n });\n }\n transformCreateType(node, queryId) {\n return requireAllProps({\n kind: 'CreateTypeNode',\n name: this.transformNode(node.name, queryId),\n enum: this.transformNode(node.enum, queryId),\n });\n }\n transformDropType(node, queryId) {\n return requireAllProps({\n kind: 'DropTypeNode',\n name: this.transformNode(node.name, queryId),\n ifExists: node.ifExists,\n });\n }\n transformExplain(node, queryId) {\n return requireAllProps({\n kind: 'ExplainNode',\n format: node.format,\n options: this.transformNode(node.options, queryId),\n });\n }\n transformSchemableIdentifier(node, queryId) {\n return requireAllProps({\n kind: 'SchemableIdentifierNode',\n schema: this.transformNode(node.schema, queryId),\n identifier: this.transformNode(node.identifier, queryId),\n });\n }\n transformAggregateFunction(node, queryId) {\n return requireAllProps({\n kind: 'AggregateFunctionNode',\n func: node.func,\n aggregated: this.transformNodeList(node.aggregated, queryId),\n distinct: node.distinct,\n orderBy: this.transformNode(node.orderBy, queryId),\n withinGroup: this.transformNode(node.withinGroup, queryId),\n filter: this.transformNode(node.filter, queryId),\n over: this.transformNode(node.over, queryId),\n });\n }\n transformOver(node, queryId) {\n return requireAllProps({\n kind: 'OverNode',\n orderBy: this.transformNode(node.orderBy, queryId),\n partitionBy: this.transformNode(node.partitionBy, queryId),\n });\n }\n transformPartitionBy(node, queryId) {\n return requireAllProps({\n kind: 'PartitionByNode',\n items: this.transformNodeList(node.items, queryId),\n });\n }\n transformPartitionByItem(node, queryId) {\n return requireAllProps({\n kind: 'PartitionByItemNode',\n partitionBy: this.transformNode(node.partitionBy, queryId),\n });\n }\n transformBinaryOperation(node, queryId) {\n return requireAllProps({\n kind: 'BinaryOperationNode',\n leftOperand: this.transformNode(node.leftOperand, queryId),\n operator: this.transformNode(node.operator, queryId),\n rightOperand: this.transformNode(node.rightOperand, queryId),\n });\n }\n transformUnaryOperation(node, queryId) {\n return requireAllProps({\n kind: 'UnaryOperationNode',\n operator: this.transformNode(node.operator, queryId),\n operand: this.transformNode(node.operand, queryId),\n });\n }\n transformUsing(node, queryId) {\n return requireAllProps({\n kind: 'UsingNode',\n tables: this.transformNodeList(node.tables, queryId),\n });\n }\n transformFunction(node, queryId) {\n return requireAllProps({\n kind: 'FunctionNode',\n func: node.func,\n arguments: this.transformNodeList(node.arguments, queryId),\n });\n }\n transformCase(node, queryId) {\n return requireAllProps({\n kind: 'CaseNode',\n value: this.transformNode(node.value, queryId),\n when: this.transformNodeList(node.when, queryId),\n else: this.transformNode(node.else, queryId),\n isStatement: node.isStatement,\n });\n }\n transformWhen(node, queryId) {\n return requireAllProps({\n kind: 'WhenNode',\n condition: this.transformNode(node.condition, queryId),\n result: this.transformNode(node.result, queryId),\n });\n }\n transformJSONReference(node, queryId) {\n return requireAllProps({\n kind: 'JSONReferenceNode',\n reference: this.transformNode(node.reference, queryId),\n traversal: this.transformNode(node.traversal, queryId),\n });\n }\n transformJSONPath(node, queryId) {\n return requireAllProps({\n kind: 'JSONPathNode',\n inOperator: this.transformNode(node.inOperator, queryId),\n pathLegs: this.transformNodeList(node.pathLegs, queryId),\n });\n }\n transformJSONPathLeg(node, _queryId) {\n return requireAllProps({\n kind: 'JSONPathLegNode',\n type: node.type,\n value: node.value,\n });\n }\n transformJSONOperatorChain(node, queryId) {\n return requireAllProps({\n kind: 'JSONOperatorChainNode',\n operator: this.transformNode(node.operator, queryId),\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformTuple(node, queryId) {\n return requireAllProps({\n kind: 'TupleNode',\n values: this.transformNodeList(node.values, queryId),\n });\n }\n transformMergeQuery(node, queryId) {\n return requireAllProps({\n kind: 'MergeQueryNode',\n into: this.transformNode(node.into, queryId),\n using: this.transformNode(node.using, queryId),\n whens: this.transformNodeList(node.whens, queryId),\n with: this.transformNode(node.with, queryId),\n top: this.transformNode(node.top, queryId),\n endModifiers: this.transformNodeList(node.endModifiers, queryId),\n output: this.transformNode(node.output, queryId),\n returning: this.transformNode(node.returning, queryId),\n });\n }\n transformMatched(node, _queryId) {\n return requireAllProps({\n kind: 'MatchedNode',\n not: node.not,\n bySource: node.bySource,\n });\n }\n transformAddIndex(node, queryId) {\n return requireAllProps({\n kind: 'AddIndexNode',\n name: this.transformNode(node.name, queryId),\n columns: this.transformNodeList(node.columns, queryId),\n unique: node.unique,\n using: this.transformNode(node.using, queryId),\n ifNotExists: node.ifNotExists,\n });\n }\n transformCast(node, queryId) {\n return requireAllProps({\n kind: 'CastNode',\n expression: this.transformNode(node.expression, queryId),\n dataType: this.transformNode(node.dataType, queryId),\n });\n }\n transformFetch(node, queryId) {\n return requireAllProps({\n kind: 'FetchNode',\n rowCount: this.transformNode(node.rowCount, queryId),\n modifier: node.modifier,\n });\n }\n transformTop(node, _queryId) {\n return requireAllProps({\n kind: 'TopNode',\n expression: node.expression,\n modifiers: node.modifiers,\n });\n }\n transformOutput(node, queryId) {\n return requireAllProps({\n kind: 'OutputNode',\n selections: this.transformNodeList(node.selections, queryId),\n });\n }\n transformDataType(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformSelectAll(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformIdentifier(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformValue(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformPrimitiveValueList(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformOperator(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformDefaultInsertValue(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformOrAction(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n transformCollate(node, _queryId) {\n // An Object.freezed leaf node. No need to clone.\n return node;\n }\n}\n","/// <reference types=\"./with-schema-transformer.d.ts\" />\nimport { AliasNode } from '../../operation-node/alias-node.js';\nimport { IdentifierNode } from '../../operation-node/identifier-node.js';\nimport { JoinNode } from '../../operation-node/join-node.js';\nimport { ListNode } from '../../operation-node/list-node.js';\nimport { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';\nimport { SchemableIdentifierNode } from '../../operation-node/schemable-identifier-node.js';\nimport { TableNode } from '../../operation-node/table-node.js';\nimport { UsingNode } from '../../operation-node/using-node.js';\nimport { freeze } from '../../util/object-utils.js';\n// This object exist only so that we get a type error when a new RootOperationNode\n// is added. If you get a type error here, make sure to add the new root node and\n// handle it correctly in the transformer.\n//\n// DO NOT REFACTOR THIS EVEN IF IT SEEMS USELESS TO YOU!\nconst ROOT_OPERATION_NODES = freeze({\n AlterTableNode: true,\n CreateIndexNode: true,\n CreateSchemaNode: true,\n CreateTableNode: true,\n CreateTypeNode: true,\n CreateViewNode: true,\n RefreshMaterializedViewNode: true,\n DeleteQueryNode: true,\n DropIndexNode: true,\n DropSchemaNode: true,\n DropTableNode: true,\n DropTypeNode: true,\n DropViewNode: true,\n InsertQueryNode: true,\n RawNode: true,\n SelectQueryNode: true,\n UpdateQueryNode: true,\n MergeQueryNode: true,\n});\nconst SCHEMALESS_FUNCTIONS = {\n json_agg: true,\n to_json: true,\n};\nexport class WithSchemaTransformer extends OperationNodeTransformer {\n #schema;\n #schemableIds = new Set();\n #ctes = new Set();\n constructor(schema) {\n super();\n this.#schema = schema;\n }\n transformNodeImpl(node, queryId) {\n if (!this.#isRootOperationNode(node)) {\n return super.transformNodeImpl(node, queryId);\n }\n const ctes = this.#collectCTEs(node);\n for (const cte of ctes) {\n this.#ctes.add(cte);\n }\n const tables = this.#collectSchemableIds(node);\n for (const table of tables) {\n this.#schemableIds.add(table);\n }\n const transformed = super.transformNodeImpl(node, queryId);\n for (const table of tables) {\n this.#schemableIds.delete(table);\n }\n for (const cte of ctes) {\n this.#ctes.delete(cte);\n }\n return transformed;\n }\n transformSchemableIdentifier(node, queryId) {\n const transformed = super.transformSchemableIdentifier(node, queryId);\n if (transformed.schema || !this.#schemableIds.has(node.identifier.name)) {\n return transformed;\n }\n return {\n ...transformed,\n schema: IdentifierNode.create(this.#schema),\n };\n }\n transformReferences(node, queryId) {\n const transformed = super.transformReferences(node, queryId);\n if (transformed.table.table.schema) {\n return transformed;\n }\n return {\n ...transformed,\n table: TableNode.createWithSchema(this.#schema, transformed.table.table.identifier.name),\n };\n }\n transformAggregateFunction(node, queryId) {\n return {\n ...super.transformAggregateFunction({ ...node, aggregated: [] }, queryId),\n aggregated: this.#transformTableArgsWithoutSchemas(node, queryId, 'aggregated'),\n };\n }\n transformFunction(node, queryId) {\n return {\n ...super.transformFunction({ ...node, arguments: [] }, queryId),\n arguments: this.#transformTableArgsWithoutSchemas(node, queryId, 'arguments'),\n };\n }\n transformSelectModifier(node, queryId) {\n return {\n ...super.transformSelectModifier({ ...node, of: undefined }, queryId),\n of: node.of?.map((item) => TableNode.is(item) && !item.table.schema\n ? {\n ...item,\n table: this.transformIdentifier(item.table.identifier, queryId),\n }\n : this.transformNode(item, queryId)),\n };\n }\n #transformTableArgsWithoutSchemas(node, queryId, argsKey) {\n return SCHEMALESS_FUNCTIONS[node.func]\n ? node[argsKey].map((arg) => !TableNode.is(arg) || arg.table.schema\n ? this.transformNode(arg, queryId)\n : {\n ...arg,\n table: this.transformIdentifier(arg.table.identifier, queryId),\n })\n : this.transformNodeList(node[argsKey], queryId);\n }\n #isRootOperationNode(node) {\n return node.kind in ROOT_OPERATION_NODES;\n }\n #collectSchemableIds(node) {\n const schemableIds = new Set();\n if ('name' in node && node.name && SchemableIdentifierNode.is(node.name)) {\n this.#collectSchemableId(node.name, schemableIds);\n }\n if ('from' in node && node.from) {\n for (const from of node.from.froms) {\n this.#collectSchemableIdsFromTableExpr(from, schemableIds);\n }\n }\n if ('into' in node && node.into) {\n this.#collectSchemableIdsFromTableExpr(node.into, schemableIds);\n }\n if ('table' in node && node.table) {\n this.#collectSchemableIdsFromTableExpr(node.table, schemableIds);\n }\n if ('joins' in node && node.joins) {\n for (const join of node.joins) {\n this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);\n }\n }\n if ('using' in node && node.using) {\n if (JoinNode.is(node.using)) {\n this.#collectSchemableIdsFromTableExpr(node.using.table, schemableIds);\n }\n else {\n this.#collectSchemableIdsFromTableExpr(node.using, schemableIds);\n }\n }\n return schemableIds;\n }\n #collectCTEs(node) {\n const ctes = new Set();\n if ('with' in node && node.with) {\n this.#collectCTEIds(node.with, ctes);\n }\n return ctes;\n }\n #collectSchemableIdsFromTableExpr(node, schemableIds) {\n if (TableNode.is(node)) {\n return this.#collectSchemableId(node.table, schemableIds);\n }\n if (AliasNode.is(node) && TableNode.is(node.node)) {\n return this.#collectSchemableId(node.node.table, schemableIds);\n }\n if (ListNode.is(node)) {\n for (const table of node.items) {\n this.#collectSchemableIdsFromTableExpr(table, schemableIds);\n }\n return;\n }\n if (UsingNode.is(node)) {\n for (const table of node.tables) {\n this.#collectSchemableIdsFromTableExpr(table, schemableIds);\n }\n return;\n }\n }\n #collectSchemableId(node, schemableIds) {\n const id = node.identifier.name;\n if (!this.#schemableIds.has(id) && !this.#ctes.has(id)) {\n schemableIds.add(id);\n }\n }\n #collectCTEIds(node, ctes) {\n for (const expr of node.expressions) {\n const cteId = expr.name.table.table.identifier.name;\n if (!this.#ctes.has(cteId)) {\n ctes.add(cteId);\n }\n }\n }\n}\n","/// <reference types=\"./with-schema-plugin.d.ts\" />\nimport { WithSchemaTransformer } from './with-schema-transformer.js';\nexport class WithSchemaPlugin {\n #transformer;\n constructor(schema) {\n this.#transformer = new WithSchemaTransformer(schema);\n }\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n async transformResult(args) {\n return args.result;\n }\n}\n","/// <reference types=\"./matched-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const MatchedNode = freeze({\n is(node) {\n return node.kind === 'MatchedNode';\n },\n create(not, bySource = false) {\n return freeze({\n kind: 'MatchedNode',\n not,\n bySource,\n });\n },\n});\n","/// <reference types=\"./merge-parser.d.ts\" />\nimport { MatchedNode } from '../operation-node/matched-node.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { WhenNode } from '../operation-node/when-node.js';\nimport { isString } from '../util/object-utils.js';\nimport { parseFilterList, parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from './binary-operation-parser.js';\nexport function parseMergeWhen(type, args, refRight) {\n return WhenNode.create(parseFilterList([\n MatchedNode.create(!type.isMatched, type.bySource),\n ...(args && args.length > 0\n ? [\n args.length === 3 && refRight\n ? parseReferentialBinaryOperation(args[0], args[1], args[2])\n : parseValueBinaryOperationOrExpression(args),\n ]\n : []),\n ], 'and', false));\n}\nexport function parseMergeThen(result) {\n if (isString(result)) {\n return RawNode.create([result], []);\n }\n if (isOperationNodeSource(result)) {\n return result.toOperationNode();\n }\n return result;\n}\n","/// <reference types=\"./deferred.d.ts\" />\nexport class Deferred {\n #promise;\n #resolve;\n #reject;\n constructor() {\n this.#promise = new Promise((resolve, reject) => {\n this.#reject = reject;\n this.#resolve = resolve;\n });\n }\n get promise() {\n return this.#promise;\n }\n resolve = (value) => {\n if (this.#resolve) {\n this.#resolve(value);\n }\n };\n reject = (reason) => {\n if (this.#reject) {\n this.#reject(reason);\n }\n };\n}\n","/// <reference types=\"./provide-controlled-connection.d.ts\" />\nimport { Deferred } from './deferred.js';\nimport { freeze } from './object-utils.js';\nexport async function provideControlledConnection(connectionProvider) {\n const connectionDefer = new Deferred();\n const connectionReleaseDefer = new Deferred();\n connectionProvider\n .provideConnection(async (connection) => {\n connectionDefer.resolve(connection);\n return await connectionReleaseDefer.promise;\n })\n .catch((ex) => connectionDefer.reject(ex));\n // Create composite of the connection and the release method instead of\n // modifying the connection or creating a new nesting `DatabaseConnection`.\n // This way we don't accidentally override any methods of 3rd party\n // connections and don't return wrapped connections to drivers that\n // expect a certain specific connection class.\n return freeze({\n connection: await connectionDefer.promise,\n release: connectionReleaseDefer.resolve,\n });\n}\n","/// <reference types=\"./query-executor-base.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { provideControlledConnection } from '../util/provide-controlled-connection.js';\nimport { logOnce } from '../util/log-once.js';\nconst NO_PLUGINS = freeze([]);\nexport class QueryExecutorBase {\n #plugins;\n constructor(plugins = NO_PLUGINS) {\n this.#plugins = plugins;\n }\n get plugins() {\n return this.#plugins;\n }\n transformQuery(node, queryId) {\n for (const plugin of this.#plugins) {\n const transformedNode = plugin.transformQuery({ node, queryId });\n // We need to do a runtime check here. There is no good way\n // to write types that enforce this constraint.\n if (transformedNode.kind === node.kind) {\n node = transformedNode;\n }\n else {\n throw new Error([\n `KyselyPlugin.transformQuery must return a node`,\n `of the same kind that was given to it.`,\n `The plugin was given a ${node.kind}`,\n `but it returned a ${transformedNode.kind}`,\n ].join(' '));\n }\n }\n return node;\n }\n async executeQuery(compiledQuery) {\n return await this.provideConnection(async (connection) => {\n const result = await connection.executeQuery(compiledQuery);\n if ('numUpdatedOrDeletedRows' in result) {\n logOnce('kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.');\n }\n return await this.#transformResult(result, compiledQuery.queryId);\n });\n }\n async *stream(compiledQuery, chunkSize) {\n const { connection, release } = await provideControlledConnection(this);\n try {\n for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {\n yield await this.#transformResult(result, compiledQuery.queryId);\n }\n }\n finally {\n release();\n }\n }\n async #transformResult(result, queryId) {\n for (const plugin of this.#plugins) {\n result = await plugin.transformResult({ result, queryId });\n }\n return result;\n }\n}\n","/// <reference types=\"./noop-query-executor.d.ts\" />\nimport { QueryExecutorBase } from './query-executor-base.js';\n/**\n * A {@link QueryExecutor} subclass that can be used when you don't\n * have a {@link QueryCompiler}, {@link ConnectionProvider} or any\n * other needed things to actually execute queries.\n */\nexport class NoopQueryExecutor extends QueryExecutorBase {\n get adapter() {\n throw new Error('this query cannot be compiled to SQL');\n }\n compileQuery() {\n throw new Error('this query cannot be compiled to SQL');\n }\n provideConnection() {\n throw new Error('this query cannot be executed');\n }\n withConnectionProvider() {\n throw new Error('this query cannot have a connection provider');\n }\n withPlugin(plugin) {\n return new NoopQueryExecutor([...this.plugins, plugin]);\n }\n withPlugins(plugins) {\n return new NoopQueryExecutor([...this.plugins, ...plugins]);\n }\n withPluginAtFront(plugin) {\n return new NoopQueryExecutor([plugin, ...this.plugins]);\n }\n withoutPlugins() {\n return new NoopQueryExecutor([]);\n }\n}\nexport const NOOP_QUERY_EXECUTOR = new NoopQueryExecutor();\n","/// <reference types=\"./merge-result.d.ts\" />\nexport class MergeResult {\n numChangedRows;\n constructor(numChangedRows) {\n this.numChangedRows = numChangedRows;\n }\n}\n","/// <reference types=\"./merge-query-builder.d.ts\" />\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { MergeQueryNode } from '../operation-node/merge-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { UpdateQueryNode } from '../operation-node/update-query-node.js';\nimport { parseInsertExpression, } from '../parser/insert-values-parser.js';\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseMergeThen, parseMergeWhen } from '../parser/merge-parser.js';\nimport { parseSelectAll, parseSelectArg, } from '../parser/select-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { freeze } from '../util/object-utils.js';\nimport { MergeResult } from './merge-result.js';\nimport { NoResultError, isNoResultErrorConstructor, } from './no-result-error.js';\nimport { UpdateQueryBuilder } from './update-query-builder.js';\nexport class MergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * Changes a `merge into` query to an `merge top into` query.\n *\n * `top` clause is only supported by some dialects like MS SQL Server.\n *\n * ### Examples\n *\n * Affect 5 matched rows at most:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(5)\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(5) into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n *\n * Affect 50% of matched rows:\n *\n * ```ts\n * await db.mergeInto('person')\n * .top(50, 'percent')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (MS SQL Server):\n *\n * ```sql\n * merge top(50) percent into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n top(expression, modifiers) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n using(...args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithUsing(this.#props.queryNode, parseJoin('Using', args)),\n });\n }\n returning(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n returningAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new MergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n}\nexport class WheneableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db\n * .mergeInto('person')\n * .using('pet', 'pet.owner_id', 'person.id')\n * .whenMatched()\n * .thenDelete()\n * .modifyEnd(sql.raw('-- this is a comment'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\" using \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\" when matched then delete -- this is a comment\n * ```\n */\n modifyEnd(modifier) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, modifier.toOperationNode()),\n });\n }\n /**\n * See {@link MergeQueryBuilder.top}.\n */\n top(expression, modifiers) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n /**\n * Adds a simple `when matched` clause to the query.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * For a simple `when not matched` clause, see {@link whenNotMatched}.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n whenMatched() {\n return this.#whenMatched([]);\n }\n whenMatchedAnd(...args) {\n return this.#whenMatched(args);\n }\n /**\n * Adds the `when matched` clause to the query with an `and` condition. But unlike\n * {@link whenMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenMatchedAndRef(lhs, op, rhs) {\n return this.#whenMatched([lhs, op, rhs], true);\n }\n #whenMatched(args, refRight) {\n return new MatchedThenableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: true }, args, refRight)),\n });\n }\n /**\n * Adds a simple `when not matched` clause to the query.\n *\n * For a `when not matched` clause with an `and` condition, see {@link whenNotMatchedAnd}.\n *\n * For a simple `when matched` clause, see {@link whenMatched}.\n *\n * For a `when matched` clause with an `and` condition, see {@link whenMatchedAnd}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenInsertValues({\n * first_name: 'John',\n * last_name: 'Doe',\n * })\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * insert (\"first_name\", \"last_name\") values ($1, $2)\n * ```\n */\n whenNotMatched() {\n return this.#whenNotMatched([]);\n }\n whenNotMatchedAnd(...args) {\n return this.#whenNotMatched(args);\n }\n /**\n * Adds the `when not matched` clause to the query with an `and` condition. But unlike\n * {@link whenNotMatchedAnd}, this method accepts a column reference as the 3rd argument.\n *\n * Unlike {@link whenMatchedAndRef}, you cannot reference columns from the target table.\n *\n * This method is similar to {@link SelectQueryBuilder.whereRef}, so see the documentation\n * for that method for more examples.\n */\n whenNotMatchedAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true);\n }\n /**\n * Adds a simple `when not matched by source` clause to the query.\n *\n * Supported in MS SQL Server.\n *\n * Similar to {@link whenNotMatched}, but returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySource() {\n return this.#whenNotMatched([], false, true);\n }\n whenNotMatchedBySourceAnd(...args) {\n return this.#whenNotMatched(args, false, true);\n }\n /**\n * Adds the `when not matched by source` clause to the query with an `and` condition.\n *\n * Similar to {@link whenNotMatchedAndRef}, but you can reference columns from\n * the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.\n */\n whenNotMatchedBySourceAndRef(lhs, op, rhs) {\n return this.#whenNotMatched([lhs, op, rhs], true, true);\n }\n returning(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n returningAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n output(args) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectArg(args)),\n });\n }\n outputAll(table) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: QueryNode.cloneWithOutput(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n #whenNotMatched(args, refRight = false, bySource = false) {\n const props = {\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithWhen(this.#props.queryNode, parseMergeWhen({ isMatched: false, bySource }, args, refRight)),\n };\n const Builder = bySource\n ? MatchedThenableMergeQueryBuilder\n : NotMatchedThenableMergeQueryBuilder;\n return new Builder(props);\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n *\n * If you want to conditionally call a method on `this`, see\n * the {@link $if} method.\n *\n * ### Examples\n *\n * The next example uses a helper function `log` to log a query:\n *\n * ```ts\n * import type { Compilable } from 'kysely'\n *\n * function log<T extends Compilable>(qb: T): T {\n * console.log(qb.compile())\n * return qb\n * }\n *\n * await db.updateTable('person')\n * .set({ first_name: 'John' })\n * .$call(log)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n /**\n * Call `func(this)` if `condition` is true.\n *\n * This method is especially handy with optional selects. Any `returning` or `returningAll`\n * method calls add columns as optional fields to the output type when called inside\n * the `func` callback. This is because we can't know if those selections were actually\n * made before running the code.\n *\n * You can also call any other methods inside the callback.\n *\n * ### Examples\n *\n * ```ts\n * import type { PersonUpdate } from 'type-editor' // imaginary module\n *\n * async function updatePerson(id: number, updates: PersonUpdate, returnLastName: boolean) {\n * return await db\n * .updateTable('person')\n * .set(updates)\n * .where('id', '=', id)\n * .returning(['id', 'first_name'])\n * .$if(returnLastName, (qb) => qb.returning('last_name'))\n * .executeTakeFirstOrThrow()\n * }\n * ```\n *\n * Any selections added inside the `if` callback will be added as optional fields to the\n * output type since we can't know if the selections were actually made before running\n * the code. In the example above the return type of the `updatePerson` function is:\n *\n * ```ts\n * Promise<{\n * id: number\n * first_name: string\n * last_name?: string\n * }>\n * ```\n */\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n /**\n * Executes the query and returns an array of rows.\n *\n * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.\n */\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n const { adapter } = this.#props.executor;\n const query = compiledQuery.query;\n if ((query.returning && adapter.supportsReturning) ||\n (query.output && adapter.supportsOutput)) {\n return result.rows;\n }\n return [new MergeResult(result.numAffectedRows)];\n }\n /**\n * Executes the query and returns the first result or undefined if\n * the query returned no result.\n */\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n /**\n * Executes the query and returns the first result or throws if\n * the query returned no result.\n *\n * By default an instance of {@link NoResultError} is thrown, but you can\n * provide a custom error class, or callback as the only argument to throw a different\n * error.\n */\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n}\nexport class MatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `delete` action.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDelete()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * delete\n * ```\n */\n thenDelete() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('delete')),\n });\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `update` action, see {@link thenUpdate} or {@link thenUpdateSet}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('do nothing')),\n });\n }\n /**\n * Perform an `update` operation with a full-fledged {@link UpdateQueryBuilder}.\n * This is handy when multiple `set` invocations are needed.\n *\n * For a shorthand version of this method, see {@link thenUpdateSet}.\n *\n * To perform the `delete` action, see {@link thenDelete}.\n *\n * To perform the `do nothing` action, see {@link thenDoNothing}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenMatched()\n * .thenUpdate((ub) => ub\n * .set(sql`metadata['has_pets']`, 'Y')\n * .set({\n * updated_at: new Date().toISOString(),\n * })\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when matched then\n * update set metadata['has_pets'] = $1, \"updated_at\" = $2\n * ```\n */\n thenUpdate(set) {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(set(new UpdateQueryBuilder({\n queryId: this.#props.queryId,\n executor: NOOP_QUERY_EXECUTOR,\n queryNode: UpdateQueryNode.createWithoutTable(),\n })))),\n });\n }\n thenUpdateSet(...args) {\n // @ts-ignore not sure how to type this so it won't complain about set(...args).\n return this.thenUpdate((ub) => ub.set(...args));\n }\n}\nexport class NotMatchedThenableMergeQueryBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Performs the `do nothing` action.\n *\n * This is supported in PostgreSQL.\n *\n * To perform the `insert` action, see {@link thenInsertValues}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db.mergeInto('person')\n * .using('pet', 'person.id', 'pet.owner_id')\n * .whenNotMatched()\n * .thenDoNothing()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\" on \"person\".\"id\" = \"pet\".\"owner_id\"\n * when not matched then\n * do nothing\n * ```\n */\n thenDoNothing() {\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen('do nothing')),\n });\n }\n thenInsertValues(insert) {\n const [columns, values] = parseInsertExpression(insert);\n return new WheneableMergeQueryBuilder({\n ...this.#props,\n queryNode: MergeQueryNode.cloneWithThen(this.#props.queryNode, parseMergeThen(InsertQueryNode.cloneWith(InsertQueryNode.createWithoutInto(), {\n columns,\n values,\n }))),\n });\n }\n}\n","/// <reference types=\"./query-creator.d.ts\" />\nimport { createSelectQueryBuilder, } from './query-builder/select-query-builder.js';\nimport { InsertQueryBuilder } from './query-builder/insert-query-builder.js';\nimport { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';\nimport { UpdateQueryBuilder } from './query-builder/update-query-builder.js';\nimport { DeleteQueryNode } from './operation-node/delete-query-node.js';\nimport { InsertQueryNode } from './operation-node/insert-query-node.js';\nimport { SelectQueryNode } from './operation-node/select-query-node.js';\nimport { UpdateQueryNode } from './operation-node/update-query-node.js';\nimport { parseTable, parseTableExpressionOrList, parseAliasedTable, } from './parser/table-parser.js';\nimport { parseCommonTableExpression, } from './parser/with-parser.js';\nimport { WithNode } from './operation-node/with-node.js';\nimport { createQueryId } from './util/query-id.js';\nimport { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';\nimport { freeze } from './util/object-utils.js';\nimport { parseSelectArg, } from './parser/select-parser.js';\nimport { MergeQueryBuilder } from './query-builder/merge-query-builder.js';\nimport { MergeQueryNode } from './operation-node/merge-query-node.js';\nexport class QueryCreator {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Creates a `select` query builder for the given table or tables.\n *\n * The tables passed to this method are built as the query's `from` clause.\n *\n * ### Examples\n *\n * Create a select query for one table:\n *\n * ```ts\n * db.selectFrom('person').selectAll()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"person\"\n * ```\n *\n * Create a select query for one table with an alias:\n *\n * ```ts\n * const persons = await db.selectFrom('person as p')\n * .select(['p.id', 'first_name'])\n * .execute()\n *\n * console.log(persons[0].id)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"id\", \"first_name\" from \"person\" as \"p\"\n * ```\n *\n * Create a select query from a subquery:\n *\n * ```ts\n * const persons = await db.selectFrom(\n * (eb) => eb.selectFrom('person').select('person.id as identifier').as('p')\n * )\n * .select('p.identifier')\n * .execute()\n *\n * console.log(persons[0].identifier)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"identifier\",\n * from (\n * select \"person\".\"id\" as \"identifier\" from \"person\"\n * ) as p\n * ```\n *\n * Create a select query from raw sql:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db\n * .selectFrom(sql<{ one: number }>`(select 1 as one)`.as('q'))\n * .select('q.one')\n * .execute()\n *\n * console.log(items[0].one)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"q\".\"one\",\n * from (\n * select 1 as one\n * ) as q\n * ```\n *\n * When you use the `sql` tag you need to also provide the result type of the\n * raw snippet / query so that Kysely can figure out what columns are\n * available for the rest of the query.\n *\n * The `selectFrom` method also accepts an array for multiple tables. All\n * the above examples can also be used in an array.\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * const items = await db.selectFrom([\n * 'person as p',\n * db.selectFrom('pet').select('pet.species').as('a'),\n * sql<{ one: number }>`(select 1 as one)`.as('q')\n * ])\n * .select(['p.id', 'a.species', 'q.one'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".id, \"a\".\"species\", \"q\".\"one\"\n * from\n * \"person\" as \"p\",\n * (select \"pet\".\"species\" from \"pet\") as a,\n * (select 1 as one) as \"q\"\n * ```\n */\n selectFrom(from) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(from), this.#props.withNode),\n });\n }\n selectNoFrom(selection) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: SelectQueryNode.cloneWithSelections(SelectQueryNode.create(this.#props.withNode), parseSelectArg(selection)),\n });\n }\n /**\n * Creates an insert query.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples. Also see\n * the {@link ReturningInterface.returning | returning} method for a way to return columns\n * on supported databases like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirst()\n *\n * console.log(result.insertId)\n * ```\n *\n * Some databases like PostgreSQL support the `returning` method:\n *\n * ```ts\n * const { id } = await db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n * ```\n */\n insertInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode),\n });\n }\n /**\n * Creates a \"replace into\" query.\n *\n * This is only supported by some dialects like MySQL or SQLite.\n *\n * Similar to MySQL's {@link InsertQueryBuilder.onDuplicateKeyUpdate} that deletes\n * and inserts values on collision instead of updating existing rows.\n *\n * An alias of SQLite's {@link InsertQueryBuilder.orReplace}.\n *\n * The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}\n * has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of\n * the inserted row if the db returned one.\n *\n * See the {@link InsertQueryBuilder.values | values} method for more info and examples.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .replaceInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston'\n * })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.insertId)\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * replace into `person` (`first_name`, `last_name`) values (?, ?)\n * ```\n */\n replaceInto(table) {\n return new InsertQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: InsertQueryNode.create(parseTable(table), this.#props.withNode, true),\n });\n }\n /**\n * Creates a delete query.\n *\n * See the {@link DeleteQueryBuilder.where} method for examples on how to specify\n * a where clause for the delete operation.\n *\n * The return value of the query is an instance of {@link DeleteResult}.\n *\n * ### Examples\n *\n * <!-- siteExample(\"delete\", \"Single row\", 10) -->\n *\n * Delete a single row:\n *\n * ```ts\n * const result = await db\n * .deleteFrom('person')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numDeletedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * delete from \"person\" where \"person\".\"id\" = $1\n * ```\n *\n * Some databases such as MySQL support deleting from multiple tables:\n *\n * ```ts\n * const result = await db\n * .deleteFrom(['person', 'pet'])\n * .using('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * delete from `person`, `pet`\n * using `person`\n * inner join `pet` on `pet`.`owner_id` = `person`.`id`\n * where `person`.`id` = ?\n * ```\n */\n deleteFrom(from) {\n return new DeleteQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: DeleteQueryNode.create(parseTableExpressionOrList(from), this.#props.withNode),\n });\n }\n /**\n * Creates an update query.\n *\n * See the {@link UpdateQueryBuilder.where} method for examples on how to specify\n * a where clause for the update operation.\n *\n * See the {@link UpdateQueryBuilder.set} method for examples on how to\n * specify the updates.\n *\n * The return value of the query is an {@link UpdateResult}.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .updateTable('person')\n * .set({ first_name: 'Jennifer' })\n * .where('person.id', '=', 1)\n * .executeTakeFirst()\n *\n * console.log(result.numUpdatedRows)\n * ```\n */\n updateTable(tables) {\n return new UpdateQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: UpdateQueryNode.create(parseTableExpressionOrList(tables), this.#props.withNode),\n });\n }\n /**\n * Creates a merge query.\n *\n * The return value of the query is a {@link MergeResult}.\n *\n * See the {@link MergeQueryBuilder.using} method for examples on how to specify\n * the other table.\n *\n * ### Examples\n *\n * <!-- siteExample(\"merge\", \"Source row existence\", 10) -->\n *\n * Update a target column based on the existence of a source row:\n *\n * ```ts\n * const result = await db\n * .mergeInto('person as target')\n * .using('pet as source', 'source.owner_id', 'target.id')\n * .whenMatchedAnd('target.has_pets', '!=', 'Y')\n * .thenUpdateSet({ has_pets: 'Y' })\n * .whenNotMatchedBySourceAnd('target.has_pets', '=', 'Y')\n * .thenUpdateSet({ has_pets: 'N' })\n * .executeTakeFirstOrThrow()\n *\n * console.log(result.numChangedRows)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"person\"\n * using \"pet\"\n * on \"pet\".\"owner_id\" = \"person\".\"id\"\n * when matched and \"has_pets\" != $1\n * then update set \"has_pets\" = $2\n * when not matched by source and \"has_pets\" = $3\n * then update set \"has_pets\" = $4\n * ```\n *\n * <!-- siteExample(\"merge\", \"Temporary changes table\", 20) -->\n *\n * Merge new entries from a temporary changes table:\n *\n * ```ts\n * const result = await db\n * .mergeInto('wine as target')\n * .using(\n * 'wine_stock_change as source',\n * 'source.wine_name',\n * 'target.name',\n * )\n * .whenNotMatchedAnd('source.stock_delta', '>', 0)\n * .thenInsertValues(({ ref }) => ({\n * name: ref('source.wine_name'),\n * stock: ref('source.stock_delta'),\n * }))\n * .whenMatchedAnd(\n * (eb) => eb('target.stock', '+', eb.ref('source.stock_delta')),\n * '>',\n * 0,\n * )\n * .thenUpdateSet('stock', (eb) =>\n * eb('target.stock', '+', eb.ref('source.stock_delta')),\n * )\n * .whenMatched()\n * .thenDelete()\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * merge into \"wine\" as \"target\"\n * using \"wine_stock_change\" as \"source\"\n * on \"source\".\"wine_name\" = \"target\".\"name\"\n * when not matched and \"source\".\"stock_delta\" > $1\n * then insert (\"name\", \"stock\") values (\"source\".\"wine_name\", \"source\".\"stock_delta\")\n * when matched and \"target\".\"stock\" + \"source\".\"stock_delta\" > $2\n * then update set \"stock\" = \"target\".\"stock\" + \"source\".\"stock_delta\"\n * when matched\n * then delete\n * ```\n */\n mergeInto(targetTable) {\n return new MergeQueryBuilder({\n queryId: createQueryId(),\n executor: this.#props.executor,\n queryNode: MergeQueryNode.create(parseAliasedTable(targetTable), this.#props.withNode),\n });\n }\n /**\n * Creates a `with` query (Common Table Expression).\n *\n * ### Examples\n *\n * <!-- siteExample(\"cte\", \"Simple selects\", 10) -->\n *\n * Common table expressions (CTE) are a great way to modularize complex queries.\n * Essentially they allow you to run multiple separate queries within a\n * single roundtrip to the DB.\n *\n * Since CTEs are a part of the main query, query optimizers inside DB\n * engines are able to optimize the overall query. For example, postgres\n * is able to inline the CTEs inside the using queries if it decides it's\n * faster.\n *\n * ```ts\n * const result = await db\n * // Create a CTE called `jennifers` that selects all\n * // persons named 'Jennifer'.\n * .with('jennifers', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * // Select all rows from the `jennifers` CTE and\n * // further filter it.\n * .with('adult_jennifers', (db) => db\n * .selectFrom('jennifers')\n * .where('age', '>', 18)\n * .select(['id', 'age'])\n * )\n * // Finally select all adult jennifers that are\n * // also younger than 60.\n * .selectFrom('adult_jennifers')\n * .where('age', '<', 60)\n * .selectAll()\n * .execute()\n * ```\n *\n * <!-- siteExample(\"cte\", \"Inserts, updates and deletions\", 20) -->\n *\n * Some databases like postgres also allow you to run other queries than selects\n * in CTEs. On these databases CTEs are extremely powerful:\n *\n * ```ts\n * const result = await db\n * .with('new_person', (db) => db\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * age: 35,\n * })\n * .returning('id')\n * )\n * .with('new_pet', (db) => db\n * .insertInto('pet')\n * .values({\n * name: 'Doggo',\n * species: 'dog',\n * is_favorite: true,\n * // Use the id of the person we just inserted.\n * owner_id: db\n * .selectFrom('new_person')\n * .select('id')\n * })\n * .returning('id')\n * )\n * .selectFrom(['new_person', 'new_pet'])\n * .select([\n * 'new_person.id as person_id',\n * 'new_pet.id as pet_id'\n * ])\n * .execute()\n * ```\n *\n * The CTE name can optionally specify column names in addition to\n * a name. In that case Kysely requires the expression to retun\n * rows with the same columns.\n *\n * ```ts\n * await db\n * .with('jennifers(id, age)', (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * // This is ok since we return columns with the same\n * // names as specified by `jennifers(id, age)`.\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n *\n * The first argument can also be a callback. The callback is passed\n * a `CTEBuilder` instance that can be used to configure the CTE:\n *\n * ```ts\n * await db\n * .with(\n * (cte) => cte('jennifers').materialized(),\n * (db) => db\n * .selectFrom('person')\n * .where('first_name', '=', 'Jennifer')\n * .select(['id', 'age'])\n * )\n * .selectFrom('jennifers')\n * .selectAll()\n * .execute()\n * ```\n */\n with(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode\n ? WithNode.cloneWithExpression(this.#props.withNode, cte)\n : WithNode.create(cte),\n });\n }\n /**\n * Creates a recursive `with` query (Common Table Expression).\n *\n * Note that recursiveness is a property of the whole `with` statement.\n * You cannot have recursive and non-recursive CTEs in a same `with` statement.\n * Therefore the recursiveness is determined by the **first** `with` or\n * `withRecusive` call you make.\n *\n * See the {@link with} method for examples and more documentation.\n */\n withRecursive(nameOrBuilder, expression) {\n const cte = parseCommonTableExpression(nameOrBuilder, expression);\n return new QueryCreator({\n ...this.#props,\n withNode: this.#props.withNode\n ? WithNode.cloneWithExpression(this.#props.withNode, cte)\n : WithNode.create(cte, { recursive: true }),\n });\n }\n /**\n * Returns a copy of this query creator instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n /**\n * Returns a copy of this query creator instance without any plugins.\n */\n withoutPlugins() {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n /**\n * Sets the schema to be used for all table references that don't explicitly\n * specify a schema.\n *\n * This only affects the query created through the builder returned from\n * this method and doesn't modify the `db` instance.\n *\n * See [this recipe](https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0007-schemas.md)\n * for a more detailed explanation.\n *\n * ### Examples\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet')\n * .selectAll()\n * .innerJoin('public.person', 'public.person.id', 'pet.owner_id')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select * from \"mammals\".\"pet\"\n * inner join \"public\".\"person\"\n * on \"public\".\"person\".\"id\" = \"mammals\".\"pet\".\"owner_id\"\n * ```\n *\n * `withSchema` is smart enough to not add schema for aliases,\n * common table expressions or other places where the schema\n * doesn't belong to:\n *\n * ```\n * await db\n * .withSchema('mammals')\n * .selectFrom('pet as p')\n * .select('p.name')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"p\".\"name\" from \"mammals\".\"pet\" as \"p\"\n * ```\n */\n withSchema(schema) {\n return new QueryCreator({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n}\n","/// <reference types=\"./parse-utils.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { OverNode } from '../operation-node/over-node.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { JoinBuilder } from '../query-builder/join-builder.js';\nimport { OverBuilder } from '../query-builder/over-builder.js';\nimport { createSelectQueryBuilder as newSelectQueryBuilder, } from '../query-builder/select-query-builder.js';\nimport { QueryCreator } from '../query-creator.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { parseTableExpression, parseTableExpressionOrList, } from './table-parser.js';\nexport function createSelectQueryBuilder() {\n return newSelectQueryBuilder({\n queryId: createQueryId(),\n executor: NOOP_QUERY_EXECUTOR,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList([])),\n });\n}\nexport function createQueryCreator() {\n return new QueryCreator({\n executor: NOOP_QUERY_EXECUTOR,\n });\n}\nexport function createJoinBuilder(joinType, table) {\n return new JoinBuilder({\n joinNode: JoinNode.create(joinType, parseTableExpression(table)),\n });\n}\nexport function createOverBuilder() {\n return new OverBuilder({\n overNode: OverNode.create(),\n });\n}\n","/// <reference types=\"./join-parser.d.ts\" />\nimport { JoinNode } from '../operation-node/join-node.js';\nimport { parseReferentialBinaryOperation } from './binary-operation-parser.js';\nimport { createJoinBuilder } from './parse-utils.js';\nimport { parseTableExpression, } from './table-parser.js';\nexport function parseJoin(joinType, args) {\n if (args.length === 3) {\n return parseSingleOnJoin(joinType, args[0], args[1], args[2]);\n }\n else if (args.length === 2) {\n return parseCallbackJoin(joinType, args[0], args[1]);\n }\n else if (args.length === 1) {\n return parseOnlessJoin(joinType, args[0]);\n }\n else {\n throw new Error('not implemented');\n }\n}\nfunction parseCallbackJoin(joinType, from, callback) {\n return callback(createJoinBuilder(joinType, from)).toOperationNode();\n}\nfunction parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {\n return JoinNode.createWithOn(joinType, parseTableExpression(from), parseReferentialBinaryOperation(lhsColumn, '=', rhsColumn));\n}\nfunction parseOnlessJoin(joinType, from) {\n return JoinNode.create(joinType, parseTableExpression(from));\n}\n","/// <reference types=\"./offset-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const OffsetNode = freeze({\n is(node) {\n return node.kind === 'OffsetNode';\n },\n create(offset) {\n return freeze({\n kind: 'OffsetNode',\n offset,\n });\n },\n});\n","/// <reference types=\"./group-by-item-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GroupByItemNode = freeze({\n is(node) {\n return node.kind === 'GroupByItemNode';\n },\n create(groupBy) {\n return freeze({\n kind: 'GroupByItemNode',\n groupBy,\n });\n },\n});\n","/// <reference types=\"./group-by-parser.d.ts\" />\nimport { GroupByItemNode } from '../operation-node/group-by-item-node.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nimport { parseReferenceExpressionOrList, } from './reference-parser.js';\nexport function parseGroupBy(groupBy) {\n groupBy = isFunction(groupBy) ? groupBy(expressionBuilder()) : groupBy;\n return parseReferenceExpressionOrList(groupBy).map(GroupByItemNode.create);\n}\n","/// <reference types=\"./set-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const SetOperationNode = freeze({\n is(node) {\n return node.kind === 'SetOperationNode';\n },\n create(operator, expression, all) {\n return freeze({\n kind: 'SetOperationNode',\n operator,\n expression,\n all,\n });\n },\n});\n","/// <reference types=\"./set-operation-parser.d.ts\" />\nimport { createExpressionBuilder, } from '../expression/expression-builder.js';\nimport { SetOperationNode, } from '../operation-node/set-operation-node.js';\nimport { isFunction, isReadonlyArray } from '../util/object-utils.js';\nimport { parseExpression } from './expression-parser.js';\nexport function parseSetOperations(operator, expression, all) {\n if (isFunction(expression)) {\n expression = expression(createExpressionBuilder());\n }\n if (!isReadonlyArray(expression)) {\n expression = [expression];\n }\n return expression.map((expr) => SetOperationNode.create(operator, parseExpression(expr), all));\n}\n","/// <reference types=\"./expression-wrapper.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { OrNode } from '../operation-node/or-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nexport class ExpressionWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `ExpressionWrapper` with a new output type.\n */\n $castTo() {\n return new ExpressionWrapper(this.#node);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new ExpressionWrapper(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nexport class AliasedExpressionWrapper {\n #expr;\n #alias;\n constructor(expr, alias) {\n this.#expr = expr;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#expr;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#expr.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\nexport class OrWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n or(...args) {\n return new OrWrapper(OrNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `OrWrapper` with a new output type.\n */\n $castTo() {\n return new OrWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\nexport class AndWrapper {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedExpressionWrapper(this, alias);\n }\n and(...args) {\n return new AndWrapper(AndNode.create(this.#node, parseValueBinaryOperationOrExpression(args)));\n }\n /**\n * Change the output type of the expression.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AndWrapper` with a new output type.\n */\n $castTo() {\n return new AndWrapper(this.#node);\n }\n toOperationNode() {\n return ParensNode.create(this.#node);\n }\n}\n","/// <reference types=\"./fetch-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const FetchNode = freeze({\n is(node) {\n return node.kind === 'FetchNode';\n },\n create(rowCount, modifier) {\n return {\n kind: 'FetchNode',\n rowCount: ValueNode.create(rowCount),\n modifier,\n };\n },\n});\n","/// <reference types=\"./fetch-parser.d.ts\" />\nimport { FetchNode } from '../operation-node/fetch-node.js';\nimport { isBigInt, isNumber } from '../util/object-utils.js';\nexport function parseFetch(rowCount, modifier) {\n if (!isNumber(rowCount) && !isBigInt(rowCount)) {\n throw new Error(`Invalid fetch row count: ${rowCount}`);\n }\n if (!isFetchModifier(modifier)) {\n throw new Error(`Invalid fetch modifier: ${modifier}`);\n }\n return FetchNode.create(rowCount, modifier);\n}\nfunction isFetchModifier(value) {\n return value === 'only' || value === 'with ties';\n}\n","/// <reference types=\"./select-query-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { SelectModifierNode } from '../operation-node/select-modifier-node.js';\nimport { parseJoin, } from '../parser/join-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';\nimport { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { LimitNode } from '../operation-node/limit-node.js';\nimport { OffsetNode } from '../operation-node/offset-node.js';\nimport { asArray, freeze } from '../util/object-utils.js';\nimport { parseGroupBy } from '../parser/group-by-parser.js';\nimport { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { parseSetOperations, } from '../parser/set-operation-parser.js';\nimport { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { parseValueExpression, } from '../parser/value-parser.js';\nimport { parseFetch } from '../parser/fetch-parser.js';\nimport { parseTop } from '../parser/top-parser.js';\nclass SelectQueryBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return undefined;\n }\n get isSelectQueryBuilder() {\n return true;\n }\n where(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n whereRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n having(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n havingRef(lhs, op, rhs) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n select(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectArg(selection)),\n });\n }\n distinctOn(selection) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection)),\n });\n }\n modifyFront(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n modifyEnd(modifier) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),\n });\n }\n distinct() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.create('Distinct')),\n });\n }\n forUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForUpdate', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForShare', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forKeyShare(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForKeyShare', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n forNoKeyUpdate(of) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('ForNoKeyUpdate', of ? asArray(of).map(parseTable) : undefined)),\n });\n }\n skipLocked() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('SkipLocked')),\n });\n }\n noWait() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.create('NoWait')),\n });\n }\n selectAll(table) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSelections(this.#props.queryNode, parseSelectAll(table)),\n });\n }\n innerJoin(...args) {\n return this.#join('InnerJoin', args);\n }\n leftJoin(...args) {\n return this.#join('LeftJoin', args);\n }\n rightJoin(...args) {\n return this.#join('RightJoin', args);\n }\n fullJoin(...args) {\n return this.#join('FullJoin', args);\n }\n crossJoin(...args) {\n return this.#join('CrossJoin', args);\n }\n innerJoinLateral(...args) {\n return this.#join('LateralInnerJoin', args);\n }\n leftJoinLateral(...args) {\n return this.#join('LateralLeftJoin', args);\n }\n crossJoinLateral(...args) {\n return this.#join('LateralCrossJoin', args);\n }\n crossApply(...args) {\n return this.#join('CrossApply', args);\n }\n outerApply(...args) {\n return this.#join('OuterApply', args);\n }\n #join(joinType, args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),\n });\n }\n orderBy(...args) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),\n });\n }\n groupBy(groupBy) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, parseGroupBy(groupBy)),\n });\n }\n limit(limit) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithLimit(this.#props.queryNode, LimitNode.create(parseValueExpression(limit))),\n });\n }\n offset(offset) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithOffset(this.#props.queryNode, OffsetNode.create(parseValueExpression(offset))),\n });\n }\n fetch(rowCount, modifier = 'only') {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithFetch(this.#props.queryNode, parseFetch(rowCount, modifier)),\n });\n }\n top(expression, modifiers) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),\n });\n }\n union(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, false)),\n });\n }\n unionAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('union', expression, true)),\n });\n }\n intersect(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, false)),\n });\n }\n intersectAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('intersect', expression, true)),\n });\n }\n except(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('except', expression, false)),\n });\n }\n exceptAll(expression) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithSetOperations(this.#props.queryNode, parseSetOperations('except', expression, true)),\n });\n }\n as(alias) {\n return new AliasedSelectQueryBuilderImpl(this, alias);\n }\n clearSelect() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutSelections(this.#props.queryNode),\n });\n }\n clearWhere() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),\n });\n }\n clearLimit() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutLimit(this.#props.queryNode),\n });\n }\n clearOffset() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutOffset(this.#props.queryNode),\n });\n }\n clearOrderBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),\n });\n }\n clearGroupBy() {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: SelectQueryNode.cloneWithoutGroupBy(this.#props.queryNode),\n });\n }\n $call(func) {\n return func(this);\n }\n $if(condition, func) {\n if (condition) {\n return func(this);\n }\n return new SelectQueryBuilderImpl({\n ...this.#props,\n });\n }\n $castTo() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $narrowType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $assertType() {\n return new SelectQueryBuilderImpl(this.#props);\n }\n $asTuple() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n $asScalar() {\n return new ExpressionWrapper(this.toOperationNode());\n }\n withPlugin(plugin) {\n return new SelectQueryBuilderImpl({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.queryNode, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n const compiledQuery = this.compile();\n const result = await this.#props.executor.executeQuery(compiledQuery);\n return result.rows;\n }\n async executeTakeFirst() {\n const [result] = await this.execute();\n return result;\n }\n async executeTakeFirstOrThrow(errorConstructor = NoResultError) {\n const result = await this.executeTakeFirst();\n if (result === undefined) {\n const error = isNoResultErrorConstructor(errorConstructor)\n ? new errorConstructor(this.toOperationNode())\n : errorConstructor(this.toOperationNode());\n throw error;\n }\n return result;\n }\n async *stream(chunkSize = 100) {\n const compiledQuery = this.compile();\n const stream = this.#props.executor.stream(compiledQuery, chunkSize);\n for await (const item of stream) {\n yield* item.rows;\n }\n }\n async explain(format, options) {\n const builder = new SelectQueryBuilderImpl({\n ...this.#props,\n queryNode: QueryNode.cloneWithExplain(this.#props.queryNode, format, options),\n });\n return await builder.execute();\n }\n}\nexport function createSelectQueryBuilder(props) {\n return new SelectQueryBuilderImpl(props);\n}\n/**\n * {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.\n */\nclass AliasedSelectQueryBuilderImpl {\n #queryBuilder;\n #alias;\n constructor(queryBuilder, alias) {\n this.#queryBuilder = queryBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#queryBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get isAliasedSelectQueryBuilder() {\n return true;\n }\n toOperationNode() {\n return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./aggregate-function-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhereNode } from './where-node.js';\nimport { OrderByNode } from './order-by-node.js';\n/**\n * @internal\n */\nexport const AggregateFunctionNode = freeze({\n is(node) {\n return node.kind === 'AggregateFunctionNode';\n },\n create(aggregateFunction, aggregated = []) {\n return freeze({\n kind: 'AggregateFunctionNode',\n func: aggregateFunction,\n aggregated,\n });\n },\n cloneWithDistinct(aggregateFunctionNode) {\n return freeze({\n ...aggregateFunctionNode,\n distinct: true,\n });\n },\n cloneWithOrderBy(aggregateFunctionNode, orderItems, withinGroup = false) {\n const prop = withinGroup ? 'withinGroup' : 'orderBy';\n return freeze({\n ...aggregateFunctionNode,\n [prop]: aggregateFunctionNode[prop]\n ? OrderByNode.cloneWithItems(aggregateFunctionNode[prop], orderItems)\n : OrderByNode.create(orderItems),\n });\n },\n cloneWithFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter\n ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'And', filter)\n : WhereNode.create(filter),\n });\n },\n cloneWithOrFilter(aggregateFunctionNode, filter) {\n return freeze({\n ...aggregateFunctionNode,\n filter: aggregateFunctionNode.filter\n ? WhereNode.cloneWithOperation(aggregateFunctionNode.filter, 'Or', filter)\n : WhereNode.create(filter),\n });\n },\n cloneWithOver(aggregateFunctionNode, over) {\n return freeze({\n ...aggregateFunctionNode,\n over,\n });\n },\n});\n","/// <reference types=\"./function-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const FunctionNode = freeze({\n is(node) {\n return node.kind === 'FunctionNode';\n },\n create(func, args) {\n return freeze({\n kind: 'FunctionNode',\n func,\n arguments: args,\n });\n },\n});\n","/// <reference types=\"./aggregate-function-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { createOverBuilder } from '../parser/parse-utils.js';\nimport { parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { parseOrderBy, } from '../parser/order-by-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nexport class AggregateFunctionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n /**\n * Returns an aliased version of the function.\n *\n * In addition to slapping `as \"the_alias\"` to the end of the SQL,\n * this method also provides strict typing:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.count<number>('id').as('person_count')\n * )\n * .executeTakeFirstOrThrow()\n *\n * // `person_count: number` field exists in the result type.\n * console.log(result.person_count)\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(\"id\") as \"person_count\"\n * from \"person\"\n * ```\n */\n as(alias) {\n return new AliasedAggregateFunctionBuilder(this, alias);\n }\n /**\n * Adds a `distinct` clause inside the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) =>\n * eb.fn.count<number>('first_name').distinct().as('first_name_count')\n * )\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select count(distinct \"first_name\") as \"first_name_count\"\n * from \"person\"\n * ```\n */\n distinct() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithDistinct(this.#props.aggregateFunctionNode),\n });\n }\n orderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithOrderByItems(this.#props.aggregateFunctionNode, parseOrderBy(args)),\n });\n }\n clearOrderBy() {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: QueryNode.cloneWithoutOrderBy(this.#props.aggregateFunctionNode),\n });\n }\n withinGroupOrderBy(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOrderBy(this.#props.aggregateFunctionNode, parseOrderBy(args), true),\n });\n }\n filterWhere(...args) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseValueBinaryOperationOrExpression(args)),\n });\n }\n /**\n * Adds a `filter` clause with a nested `where` clause after the function, where\n * both sides of the operator are references to columns.\n *\n * Similar to {@link WhereInterface}'s `whereRef` method.\n *\n * ### Examples\n *\n * Count people with same first and last names versus general public:\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select((eb) => [\n * eb.fn\n * .count<number>('id')\n * .filterWhereRef('first_name', '=', 'last_name')\n * .as('repeat_name_count'),\n * eb.fn.count<number>('id').as('total_count'),\n * ])\n * .executeTakeFirstOrThrow()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select\n * count(\"id\") filter(where \"first_name\" = \"last_name\") as \"repeat_name_count\",\n * count(\"id\") as \"total_count\"\n * from \"person\"\n * ```\n */\n filterWhereRef(lhs, op, rhs) {\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseReferentialBinaryOperation(lhs, op, rhs)),\n });\n }\n /**\n * Adds an `over` clause (window functions) after the function.\n *\n * ### Examples\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over().as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over() as \"average_age\"\n * from \"person\"\n * ```\n *\n * Also supports passing a callback that returns an over builder,\n * allowing to add partition by and sort by clauses inside over.\n *\n * ```ts\n * const result = await db\n * .selectFrom('person')\n * .select(\n * (eb) => eb.fn.avg<number>('age').over(\n * ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')\n * ).as('average_age')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select avg(\"age\") over(partition by \"last_name\" order by \"first_name\" asc) as \"average_age\"\n * from \"person\"\n * ```\n */\n over(over) {\n const builder = createOverBuilder();\n return new AggregateFunctionBuilder({\n ...this.#props,\n aggregateFunctionNode: AggregateFunctionNode.cloneWithOver(this.#props.aggregateFunctionNode, (over ? over(builder) : builder).toOperationNode()),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n /**\n * Casts the expression to the given type.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `AggregateFunctionBuilder` with a new output type.\n */\n $castTo() {\n return new AggregateFunctionBuilder(this.#props);\n }\n /**\n * Omit null from the expression's type.\n *\n * This function can be useful in cases where you know an expression can't be\n * null, but Kysely is unable to infer it.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of `this` with a new output type.\n */\n $notNull() {\n return new AggregateFunctionBuilder(this.#props);\n }\n toOperationNode() {\n return this.#props.aggregateFunctionNode;\n }\n}\n/**\n * {@link AggregateFunctionBuilder} with an alias. The result of calling {@link AggregateFunctionBuilder.as}.\n */\nexport class AliasedAggregateFunctionBuilder {\n #aggregateFunctionBuilder;\n #alias;\n constructor(aggregateFunctionBuilder, alias) {\n this.#aggregateFunctionBuilder = aggregateFunctionBuilder;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#aggregateFunctionBuilder;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#aggregateFunctionBuilder.toOperationNode(), IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./function-module.d.ts\" />\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';\nimport { FunctionNode } from '../operation-node/function-node.js';\nimport { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';\nimport { parseSelectAll } from '../parser/select-parser.js';\nimport { AggregateFunctionBuilder } from './aggregate-function-builder.js';\nimport { isString } from '../util/object-utils.js';\nimport { parseTable } from '../parser/table-parser.js';\nexport function createFunctionModule() {\n const fn = (name, args) => {\n return new ExpressionWrapper(FunctionNode.create(name, parseReferenceExpressionOrList(args ?? [])));\n };\n const agg = (name, args) => {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create(name, args ? parseReferenceExpressionOrList(args) : undefined),\n });\n };\n return Object.assign(fn, {\n agg,\n avg(column) {\n return agg('avg', [column]);\n },\n coalesce(...values) {\n return fn('coalesce', values);\n },\n count(column) {\n return agg('count', [column]);\n },\n countAll(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create('count', parseSelectAll(table)),\n });\n },\n max(column) {\n return agg('max', [column]);\n },\n min(column) {\n return agg('min', [column]);\n },\n sum(column) {\n return agg('sum', [column]);\n },\n any(column) {\n return fn('any', [column]);\n },\n jsonAgg(table) {\n return new AggregateFunctionBuilder({\n aggregateFunctionNode: AggregateFunctionNode.create('json_agg', [\n isString(table) ? parseTable(table) : table.toOperationNode(),\n ]),\n });\n },\n toJson(table) {\n return new ExpressionWrapper(FunctionNode.create('to_json', [\n isString(table) ? parseTable(table) : table.toOperationNode(),\n ]));\n },\n });\n}\n","/// <reference types=\"./unary-operation-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const UnaryOperationNode = freeze({\n is(node) {\n return node.kind === 'UnaryOperationNode';\n },\n create(operator, operand) {\n return freeze({\n kind: 'UnaryOperationNode',\n operator,\n operand,\n });\n },\n});\n","/// <reference types=\"./unary-operation-parser.d.ts\" />\nimport { OperatorNode, } from '../operation-node/operator-node.js';\nimport { UnaryOperationNode } from '../operation-node/unary-operation-node.js';\nimport { parseReferenceExpression, } from './reference-parser.js';\nexport function parseExists(operand) {\n return parseUnaryOperation('exists', operand);\n}\nexport function parseNotExists(operand) {\n return parseUnaryOperation('not exists', operand);\n}\nexport function parseUnaryOperation(operator, operand) {\n return UnaryOperationNode.create(OperatorNode.create(operator), parseReferenceExpression(operand));\n}\n","/// <reference types=\"./case-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { WhenNode } from './when-node.js';\n/**\n * @internal\n */\nexport const CaseNode = freeze({\n is(node) {\n return node.kind === 'CaseNode';\n },\n create(value) {\n return freeze({\n kind: 'CaseNode',\n value,\n });\n },\n cloneWithWhen(caseNode, when) {\n return freeze({\n ...caseNode,\n when: freeze(caseNode.when ? [...caseNode.when, when] : [when]),\n });\n },\n cloneWithThen(caseNode, then) {\n return freeze({\n ...caseNode,\n when: caseNode.when\n ? freeze([\n ...caseNode.when.slice(0, -1),\n WhenNode.cloneWithResult(caseNode.when[caseNode.when.length - 1], then),\n ])\n : undefined,\n });\n },\n cloneWith(caseNode, props) {\n return freeze({\n ...caseNode,\n ...props,\n });\n },\n});\n","/// <reference types=\"./case-builder.d.ts\" />\nimport { ExpressionWrapper } from '../expression/expression-wrapper.js';\nimport { freeze } from '../util/object-utils.js';\nimport { CaseNode } from '../operation-node/case-node.js';\nimport { WhenNode } from '../operation-node/when-node.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { isSafeImmediateValue, parseSafeImmediateValue, parseValueExpression, } from '../parser/value-parser.js';\nexport class CaseBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args))),\n });\n }\n}\nexport class CaseThenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n then(valueExpression) {\n return new CaseWhenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithThen(this.#props.node, isSafeImmediateValue(valueExpression)\n ? parseSafeImmediateValue(valueExpression)\n : parseValueExpression(valueExpression)),\n });\n }\n}\nexport class CaseWhenBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n when(...args) {\n return new CaseThenBuilder({\n ...this.#props,\n node: CaseNode.cloneWithWhen(this.#props.node, WhenNode.create(parseValueBinaryOperationOrExpression(args))),\n });\n }\n else(valueExpression) {\n return new CaseEndBuilder({\n ...this.#props,\n node: CaseNode.cloneWith(this.#props.node, {\n else: isSafeImmediateValue(valueExpression)\n ? parseSafeImmediateValue(valueExpression)\n : parseValueExpression(valueExpression),\n }),\n });\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\nexport class CaseEndBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n end() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: false }));\n }\n endCase() {\n return new ExpressionWrapper(CaseNode.cloneWith(this.#props.node, { isStatement: true }));\n }\n}\n","/// <reference types=\"./json-path-leg-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const JSONPathLegNode = freeze({\n is(node) {\n return node.kind === 'JSONPathLegNode';\n },\n create(type, value) {\n return freeze({\n kind: 'JSONPathLegNode',\n type,\n value,\n });\n },\n});\n","/// <reference types=\"./json-path-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';\nimport { JSONPathLegNode, } from '../operation-node/json-path-leg-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nimport { JSONReferenceNode } from '../operation-node/json-reference-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nexport class JSONPathBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Access an element of a JSON array in a specific location.\n *\n * Since there's no guarantee an element exists in the given array location, the\n * resulting type is always nullable. If you're sure the element exists, you\n * should use {@link SelectQueryBuilder.$assertType} to narrow the type safely.\n *\n * See also {@link key} to access properties of JSON objects.\n *\n * ### Examples\n *\n * ```ts\n * await db.selectFrom('person')\n * .select(eb =>\n * eb.ref('nicknames', '->').at(0).as('primary_nickname')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"nicknames\"->0 as \"primary_nickname\" from \"person\"\n *```\n *\n * Combined with {@link key}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('experience', '->').at(0).key('role').as('first_role')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"experience\"->0->'role' as \"first_role\" from \"person\"\n * ```\n *\n * You can use `'last'` to access the last element of the array in MySQL:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->$').at('last').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `nicknames`->'$[last]' as `last_nickname` from `person`\n * ```\n *\n * Or `'#-1'` in SQLite:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('nicknames', '->>$').at('#-1').as('last_nickname')\n * )\n * ```\n *\n * The generated SQL (SQLite):\n *\n * ```sql\n * select \"nicknames\"->>'$[#-1]' as `last_nickname` from `person`\n * ```\n */\n at(index) {\n return this.#createBuilderWithPathLeg('ArrayLocation', index);\n }\n /**\n * Access a property of a JSON object.\n *\n * If a field is optional, the resulting type will be nullable.\n *\n * See also {@link at} to access elements of JSON arrays.\n *\n * ### Examples\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('address', '->').key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"address\"->'city' as \"city\" from \"person\"\n * ```\n *\n * Going deeper:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->$').key('website').key('url').as('website_url')\n * )\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * select `profile`->'$.website.url' as `website_url` from `person`\n * ```\n *\n * Combined with {@link at}:\n *\n * ```ts\n * db.selectFrom('person').select(eb =>\n * eb.ref('profile', '->').key('addresses').at(0).key('city').as('city')\n * )\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"profile\"->'addresses'->0->'city' as \"city\" from \"person\"\n * ```\n */\n key(key) {\n return this.#createBuilderWithPathLeg('Member', key);\n }\n #createBuilderWithPathLeg(legType, value) {\n if (JSONReferenceNode.is(this.#node)) {\n return new TraversedJSONPathBuilder(JSONReferenceNode.cloneWithTraversal(this.#node, JSONPathNode.is(this.#node.traversal)\n ? JSONPathNode.cloneWithLeg(this.#node.traversal, JSONPathLegNode.create(legType, value))\n : JSONOperatorChainNode.cloneWithValue(this.#node.traversal, ValueNode.createImmediate(value))));\n }\n return new TraversedJSONPathBuilder(JSONPathNode.cloneWithLeg(this.#node, JSONPathLegNode.create(legType, value)));\n }\n}\nexport class TraversedJSONPathBuilder extends JSONPathBuilder {\n #node;\n constructor(node) {\n super(node);\n this.#node = node;\n }\n /** @private */\n get expressionType() {\n return undefined;\n }\n as(alias) {\n return new AliasedJSONPathBuilder(this, alias);\n }\n /**\n * Change the output type of the json path.\n *\n * This method call doesn't change the SQL in any way. This methods simply\n * returns a copy of this `JSONPathBuilder` with a new output type.\n */\n $castTo() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n $notNull() {\n return new TraversedJSONPathBuilder(this.#node);\n }\n toOperationNode() {\n return this.#node;\n }\n}\nexport class AliasedJSONPathBuilder {\n #jsonPath;\n #alias;\n constructor(jsonPath, alias) {\n this.#jsonPath = jsonPath;\n this.#alias = alias;\n }\n /** @private */\n get expression() {\n return this.#jsonPath;\n }\n /** @private */\n get alias() {\n return this.#alias;\n }\n toOperationNode() {\n return AliasNode.create(this.#jsonPath.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./tuple-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const TupleNode = freeze({\n is(node) {\n return node.kind === 'TupleNode';\n },\n create(values) {\n return freeze({\n kind: 'TupleNode',\n values: freeze(values),\n });\n },\n});\n","/// <reference types=\"./data-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nconst SIMPLE_COLUMN_DATA_TYPES = [\n 'varchar',\n 'char',\n 'text',\n 'integer',\n 'int2',\n 'int4',\n 'int8',\n 'smallint',\n 'bigint',\n 'boolean',\n 'real',\n 'double precision',\n 'float4',\n 'float8',\n 'decimal',\n 'numeric',\n 'binary',\n 'bytea',\n 'date',\n 'datetime',\n 'time',\n 'timetz',\n 'timestamp',\n 'timestamptz',\n 'serial',\n 'bigserial',\n 'uuid',\n 'json',\n 'jsonb',\n 'blob',\n 'varbinary',\n 'int4range',\n 'int4multirange',\n 'int8range',\n 'int8multirange',\n 'numrange',\n 'nummultirange',\n 'tsrange',\n 'tsmultirange',\n 'tstzrange',\n 'tstzmultirange',\n 'daterange',\n 'datemultirange',\n];\nconst COLUMN_DATA_TYPE_REGEX = [\n /^varchar\\(\\d+\\)$/,\n /^char\\(\\d+\\)$/,\n /^decimal\\(\\d+, \\d+\\)$/,\n /^numeric\\(\\d+, \\d+\\)$/,\n /^binary\\(\\d+\\)$/,\n /^datetime\\(\\d+\\)$/,\n /^time\\(\\d+\\)$/,\n /^timetz\\(\\d+\\)$/,\n /^timestamp\\(\\d+\\)$/,\n /^timestamptz\\(\\d+\\)$/,\n /^varbinary\\(\\d+\\)$/,\n];\n/**\n * @internal\n */\nexport const DataTypeNode = freeze({\n is(node) {\n return node.kind === 'DataTypeNode';\n },\n create(dataType) {\n return freeze({\n kind: 'DataTypeNode',\n dataType,\n });\n },\n});\nexport function isColumnDataType(dataType) {\n if (SIMPLE_COLUMN_DATA_TYPES.includes(dataType)) {\n return true;\n }\n if (COLUMN_DATA_TYPE_REGEX.some((r) => r.test(dataType))) {\n return true;\n }\n return false;\n}\n","/// <reference types=\"./data-type-parser.d.ts\" />\nimport { DataTypeNode, isColumnDataType, } from '../operation-node/data-type-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nexport function parseDataTypeExpression(dataType) {\n if (isOperationNodeSource(dataType)) {\n return dataType.toOperationNode();\n }\n if (isColumnDataType(dataType)) {\n return DataTypeNode.create(dataType);\n }\n throw new Error(`invalid column data type ${JSON.stringify(dataType)}`);\n}\n","/// <reference types=\"./cast-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const CastNode = freeze({\n is(node) {\n return node.kind === 'CastNode';\n },\n create(expression, dataType) {\n return freeze({\n kind: 'CastNode',\n expression,\n dataType,\n });\n },\n});\n","/// <reference types=\"./expression-builder.d.ts\" />\nimport { createSelectQueryBuilder, } from '../query-builder/select-query-builder.js';\nimport { SelectQueryNode } from '../operation-node/select-query-node.js';\nimport { parseTableExpressionOrList, parseTable, } from '../parser/table-parser.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { createFunctionModule, } from '../query-builder/function-module.js';\nimport { parseJSONReference, parseReferenceExpression, parseStringReference, } from '../parser/reference-parser.js';\nimport { parseFilterList, parseFilterObject, parseValueBinaryOperation, parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { ExpressionWrapper } from './expression-wrapper.js';\nimport { OperatorNode, } from '../operation-node/operator-node.js';\nimport { parseUnaryOperation } from '../parser/unary-operation-parser.js';\nimport { parseSafeImmediateValue, parseValueExpression, } from '../parser/value-parser.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { CaseBuilder } from '../query-builder/case-builder.js';\nimport { CaseNode } from '../operation-node/case-node.js';\nimport { isReadonlyArray, isUndefined } from '../util/object-utils.js';\nimport { JSONPathBuilder } from '../query-builder/json-path-builder.js';\nimport { BinaryOperationNode } from '../operation-node/binary-operation-node.js';\nimport { AndNode } from '../operation-node/and-node.js';\nimport { TupleNode } from '../operation-node/tuple-node.js';\nimport { JSONPathNode } from '../operation-node/json-path-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { CastNode } from '../operation-node/cast-node.js';\nexport function createExpressionBuilder(executor = NOOP_QUERY_EXECUTOR) {\n function binary(lhs, op, rhs) {\n return new ExpressionWrapper(parseValueBinaryOperation(lhs, op, rhs));\n }\n function unary(op, expr) {\n return new ExpressionWrapper(parseUnaryOperation(op, expr));\n }\n const eb = Object.assign(binary, {\n fn: undefined,\n eb: undefined,\n selectFrom(table) {\n return createSelectQueryBuilder({\n queryId: createQueryId(),\n executor,\n queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(table)),\n });\n },\n case(reference) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(reference)\n ? undefined\n : parseReferenceExpression(reference)),\n });\n },\n ref(reference, op) {\n if (isUndefined(op)) {\n return new ExpressionWrapper(parseStringReference(reference));\n }\n return new JSONPathBuilder(parseJSONReference(reference, op));\n },\n jsonPath() {\n return new JSONPathBuilder(JSONPathNode.create());\n },\n table(table) {\n return new ExpressionWrapper(parseTable(table));\n },\n val(value) {\n return new ExpressionWrapper(parseValueExpression(value));\n },\n refTuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseReferenceExpression)));\n },\n tuple(...values) {\n return new ExpressionWrapper(TupleNode.create(values.map(parseValueExpression)));\n },\n lit(value) {\n return new ExpressionWrapper(parseSafeImmediateValue(value));\n },\n unary,\n not(expr) {\n return unary('not', expr);\n },\n exists(expr) {\n return unary('exists', expr);\n },\n neg(expr) {\n return unary('-', expr);\n },\n between(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create('between'), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n betweenSymmetric(expr, start, end) {\n return new ExpressionWrapper(BinaryOperationNode.create(parseReferenceExpression(expr), OperatorNode.create('between symmetric'), AndNode.create(parseValueExpression(start), parseValueExpression(end))));\n },\n and(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, 'and'));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, 'and'));\n },\n or(exprs) {\n if (isReadonlyArray(exprs)) {\n return new ExpressionWrapper(parseFilterList(exprs, 'or'));\n }\n return new ExpressionWrapper(parseFilterObject(exprs, 'or'));\n },\n parens(...args) {\n const node = parseValueBinaryOperationOrExpression(args);\n if (ParensNode.is(node)) {\n // No double wrapping.\n return new ExpressionWrapper(node);\n }\n else {\n return new ExpressionWrapper(ParensNode.create(node));\n }\n },\n cast(expr, dataType) {\n return new ExpressionWrapper(CastNode.create(parseReferenceExpression(expr), parseDataTypeExpression(dataType)));\n },\n withSchema(schema) {\n return createExpressionBuilder(executor.withPluginAtFront(new WithSchemaPlugin(schema)));\n },\n });\n eb.fn = createFunctionModule();\n eb.eb = eb;\n return eb;\n}\nexport function expressionBuilder(_) {\n return createExpressionBuilder();\n}\n","/// <reference types=\"./expression-parser.d.ts\" />\nimport { isAliasedExpression, isExpression, } from '../expression/expression.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { expressionBuilder, } from '../expression/expression-builder.js';\nimport { isFunction } from '../util/object-utils.js';\nexport function parseExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n }\n else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid expression: ${JSON.stringify(exp)}`);\n}\nexport function parseAliasedExpression(exp) {\n if (isOperationNodeSource(exp)) {\n return exp.toOperationNode();\n }\n else if (isFunction(exp)) {\n return exp(expressionBuilder()).toOperationNode();\n }\n throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);\n}\nexport function isExpressionOrFactory(obj) {\n return isExpression(obj) || isAliasedExpression(obj) || isFunction(obj);\n}\n","/// <reference types=\"./dynamic-table-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource, } from '../operation-node/operation-node-source.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { isObject, isString } from '../util/object-utils.js';\nexport class DynamicTableBuilder {\n #table;\n get table() {\n return this.#table;\n }\n constructor(table) {\n this.#table = table;\n }\n as(alias) {\n return new AliasedDynamicTableBuilder(this.#table, alias);\n }\n}\nexport class AliasedDynamicTableBuilder {\n #table;\n #alias;\n get table() {\n return this.#table;\n }\n get alias() {\n return this.#alias;\n }\n constructor(table, alias) {\n this.#table = table;\n this.#alias = alias;\n }\n toOperationNode() {\n return AliasNode.create(parseTable(this.#table), IdentifierNode.create(this.#alias));\n }\n}\nexport function isAliasedDynamicTableBuilder(obj) {\n return (isObject(obj) &&\n isOperationNodeSource(obj) &&\n isString(obj.table) &&\n isString(obj.alias));\n}\n","/// <reference types=\"./table-parser.d.ts\" />\nimport { isReadonlyArray, isString } from '../util/object-utils.js';\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { TableNode } from '../operation-node/table-node.js';\nimport { parseAliasedExpression, } from './expression-parser.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isAliasedDynamicTableBuilder, } from '../dynamic/dynamic-table-builder.js';\nexport function parseTableExpressionOrList(table) {\n if (isReadonlyArray(table)) {\n return table.map((it) => parseTableExpression(it));\n }\n else {\n return [parseTableExpression(table)];\n }\n}\nexport function parseTableExpression(table) {\n if (isString(table)) {\n return parseAliasedTable(table);\n }\n else if (isAliasedDynamicTableBuilder(table)) {\n return table.toOperationNode();\n }\n else {\n return parseAliasedExpression(table);\n }\n}\nexport function parseAliasedTable(from) {\n const ALIAS_SEPARATOR = ' as ';\n if (from.includes(ALIAS_SEPARATOR)) {\n const [table, alias] = from.split(ALIAS_SEPARATOR).map(trim);\n return AliasNode.create(parseTable(table), IdentifierNode.create(alias));\n }\n else {\n return parseTable(from);\n }\n}\nexport function parseTable(from) {\n const SCHEMA_SEPARATOR = '.';\n if (from.includes(SCHEMA_SEPARATOR)) {\n const [schema, table] = from.split(SCHEMA_SEPARATOR).map(trim);\n return TableNode.createWithSchema(schema, table);\n }\n else {\n return TableNode.create(from);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./add-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddColumnNode = freeze({\n is(node) {\n return node.kind === 'AddColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'AddColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./column-definition-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const ColumnDefinitionNode = freeze({\n is(node) {\n return node.kind === 'ColumnDefinitionNode';\n },\n create(column, dataType) {\n return freeze({\n kind: 'ColumnDefinitionNode',\n column: ColumnNode.create(column),\n dataType,\n });\n },\n cloneWithFrontModifier(node, modifier) {\n return freeze({\n ...node,\n frontModifiers: node.frontModifiers\n ? freeze([...node.frontModifiers, modifier])\n : [modifier],\n });\n },\n cloneWithEndModifier(node, modifier) {\n return freeze({\n ...node,\n endModifiers: node.endModifiers\n ? freeze([...node.endModifiers, modifier])\n : [modifier],\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const DropColumnNode = freeze({\n is(node) {\n return node.kind === 'DropColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'DropColumnNode',\n column: ColumnNode.create(column),\n });\n },\n});\n","/// <reference types=\"./rename-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const RenameColumnNode = freeze({\n is(node) {\n return node.kind === 'RenameColumnNode';\n },\n create(column, newColumn) {\n return freeze({\n kind: 'RenameColumnNode',\n column: ColumnNode.create(column),\n renameTo: ColumnNode.create(newColumn),\n });\n },\n});\n","/// <reference types=\"./check-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const CheckConstraintNode = freeze({\n is(node) {\n return node.kind === 'CheckConstraintNode';\n },\n create(expression, constraintName) {\n return freeze({\n kind: 'CheckConstraintNode',\n expression,\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n});\n","/// <reference types=\"./references-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport const ON_MODIFY_FOREIGN_ACTIONS = [\n 'no action',\n 'restrict',\n 'cascade',\n 'set null',\n 'set default',\n];\n/**\n * @internal\n */\nexport const ReferencesNode = freeze({\n is(node) {\n return node.kind === 'ReferencesNode';\n },\n create(table, columns) {\n return freeze({\n kind: 'ReferencesNode',\n table,\n columns: freeze([...columns]),\n });\n },\n cloneWithOnDelete(references, onDelete) {\n return freeze({\n ...references,\n onDelete,\n });\n },\n cloneWithOnUpdate(references, onUpdate) {\n return freeze({\n ...references,\n onUpdate,\n });\n },\n});\n","/// <reference types=\"./default-value-parser.d.ts\" />\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nexport function parseDefaultValueExpression(value) {\n return isOperationNodeSource(value)\n ? value.toOperationNode()\n : ValueNode.createImmediate(value);\n}\n","/// <reference types=\"./generated-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const GeneratedNode = freeze({\n is(node) {\n return node.kind === 'GeneratedNode';\n },\n create(params) {\n return freeze({\n kind: 'GeneratedNode',\n ...params,\n });\n },\n createWithExpression(expression) {\n return freeze({\n kind: 'GeneratedNode',\n always: true,\n expression,\n });\n },\n cloneWith(node, params) {\n return freeze({\n ...node,\n ...params,\n });\n },\n});\n","/// <reference types=\"./default-value-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DefaultValueNode = freeze({\n is(node) {\n return node.kind === 'DefaultValueNode';\n },\n create(defaultValue) {\n return freeze({\n kind: 'DefaultValueNode',\n defaultValue,\n });\n },\n});\n","/// <reference types=\"./on-modify-action-parser.d.ts\" />\nimport { ON_MODIFY_FOREIGN_ACTIONS, } from '../operation-node/references-node.js';\nexport function parseOnModifyForeignAction(action) {\n if (ON_MODIFY_FOREIGN_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnModifyForeignAction ${action}`);\n}\n","/// <reference types=\"./column-definition-builder.d.ts\" />\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ReferencesNode, } from '../operation-node/references-node.js';\nimport { SelectAllNode } from '../operation-node/select-all-node.js';\nimport { parseStringReference } from '../parser/reference-parser.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nimport { GeneratedNode } from '../operation-node/generated-node.js';\nimport { DefaultValueNode } from '../operation-node/default-value-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ColumnDefinitionBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `auto_increment` or `autoincrement` to the column definition\n * depending on the dialect.\n *\n * Some dialects like PostgreSQL don't support this. On PostgreSQL\n * you can use the `serial` or `bigserial` data type instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.autoIncrement().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key auto_increment\n * )\n * ```\n */\n autoIncrement() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { autoIncrement: true }));\n }\n /**\n * Makes the column an identity column.\n *\n * This only works on some dialects like MS SQL Server (MSSQL).\n *\n * For PostgreSQL's `generated always as identity` use {@link generatedAlwaysAsIdentity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.identity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MSSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer identity primary key\n * )\n * ```\n */\n identity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { identity: true }));\n }\n /**\n * Makes the column the primary key.\n *\n * If you want to specify a composite primary key use the\n * {@link CreateTableBuilder.addPrimaryKeyConstraint} method.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key\n * )\n */\n primaryKey() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { primaryKey: true }));\n }\n /**\n * Adds a foreign key constraint for the column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer', (col) => col.references('person.id'))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\")\n * )\n * ```\n */\n references(ref) {\n const references = parseStringReference(ref);\n if (!references.table || SelectAllNode.is(references.column)) {\n throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.create(references.table, [\n references.column,\n ]),\n }));\n }\n /**\n * Adds an `on delete` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on delete cascade\n * )\n * ```\n */\n onDelete(onDelete) {\n if (!this.#node.references) {\n throw new Error('on delete constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnDelete(this.#node.references, parseOnModifyForeignAction(onDelete)),\n }));\n }\n /**\n * Adds an `on update` constraint for the foreign key column.\n *\n * If your database engine doesn't support foreign key constraints in the\n * column definition (like MySQL 5) you need to call the table level\n * {@link CreateTableBuilder.addForeignKeyConstraint} method instead.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'owner_id',\n * 'integer',\n * (col) => col.references('person.id').onUpdate('cascade')\n * )\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"pet\" (\n * \"owner_id\" integer references \"person\" (\"id\") on update cascade\n * )\n * ```\n */\n onUpdate(onUpdate) {\n if (!this.#node.references) {\n throw new Error('on update constraint can only be added for foreign keys');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n references: ReferencesNode.cloneWithOnUpdate(this.#node.references, parseOnModifyForeignAction(onUpdate)),\n }));\n }\n /**\n * Adds a unique constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `email` varchar(255) unique\n * )\n * ```\n */\n unique() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unique: true }));\n }\n /**\n * Adds a `not null` constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(255)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `first_name` varchar(255) not null\n * )\n * ```\n */\n notNull() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { notNull: true }));\n }\n /**\n * Adds a `unsigned` modifier for the column.\n *\n * This only works on some dialects like MySQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('age', 'integer', col => col.unsigned())\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `age` integer unsigned\n * )\n * ```\n */\n unsigned() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { unsigned: true }));\n }\n /**\n * Adds a default value constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) => col.defaultTo(4))\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer default 4\n * )\n * ```\n *\n * Values passed to `defaultTo` are interpreted as value literals by default. You can define\n * an arbitrary SQL expression using the {@link sql} template tag:\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn(\n * 'created_at',\n * 'timestamp',\n * (col) => col.defaultTo(sql`CURRENT_TIMESTAMP`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `created_at` timestamp default CURRENT_TIMESTAMP\n * )\n * ```\n */\n defaultTo(value) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n defaultTo: DefaultValueNode.create(parseDefaultValueExpression(value)),\n }));\n }\n /**\n * Adds a check constraint for the column.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('pet')\n * .addColumn('number_of_legs', 'integer', (col) =>\n * col.check(sql`number_of_legs < 5`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `pet` (\n * `number_of_legs` integer check (number_of_legs < 5)\n * )\n * ```\n */\n check(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n check: CheckConstraintNode.create(expression.toOperationNode()),\n }));\n }\n /**\n * Makes the column a generated column using a `generated always as` statement.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)',\n * (col) => col.generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name))\n * )\n * ```\n */\n generatedAlwaysAs(expression) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.createWithExpression(expression.toOperationNode()),\n }));\n }\n /**\n * Adds the `generated always as identity` specifier.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedAlwaysAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated always as identity primary key\n * )\n * ```\n */\n generatedAlwaysAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, always: true }),\n }));\n }\n /**\n * Adds the `generated by default as identity` specifier on supported dialects.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * For MS SQL Server (MSSQL)'s identity column use {@link identity}.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.generatedByDefaultAsIdentity().primaryKey())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer generated by default as identity primary key\n * )\n * ```\n */\n generatedByDefaultAsIdentity() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.create({ identity: true, byDefault: true }),\n }));\n }\n /**\n * Makes a generated column stored instead of virtual. This method can only\n * be used with {@link generatedAlwaysAs}\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('full_name', 'varchar(255)', (col) => col\n * .generatedAlwaysAs(sql`concat(first_name, ' ', last_name)`)\n * .stored()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `full_name` varchar(255) generated always as (concat(first_name, ' ', last_name)) stored\n * )\n * ```\n */\n stored() {\n if (!this.#node.generated) {\n throw new Error('stored() can only be called after generatedAlwaysAs');\n }\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {\n generated: GeneratedNode.cloneWith(this.#node.generated, {\n stored: true,\n }),\n }));\n }\n /**\n * This can be used to add any additional SQL right after the column's data type.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'first_name',\n * 'varchar(36)',\n * (col) => col.modifyFront(sql`collate utf8mb4_general_ci`).notNull()\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(36) collate utf8mb4_general_ci not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithFrontModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Adds `nulls not distinct` specifier.\n * Should be used with `unique` constraint.\n *\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(30)', col => col.unique().nullsNotDistinct())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(30) unique nulls not distinct\n * )\n * ```\n */\n nullsNotDistinct() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n /**\n * Adds `if not exists` specifier. This only works for PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addColumn('email', 'varchar(255)', col => col.unique().ifNotExists())\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * alter table \"person\" add column if not exists \"email\" varchar(255) unique\n * ```\n */\n ifNotExists() {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, { ifNotExists: true }));\n }\n /**\n * This can be used to add any additional SQL to the end of the column definition.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn(\n * 'age',\n * 'integer',\n * col => col.unsigned()\n * .notNull()\n * .modifyEnd(sql`comment ${sql.lit('it is not polite to ask a woman her age')}`)\n * )\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `age` integer unsigned not null comment 'it is not polite to ask a woman her age'\n * )\n * ```\n */\n modifyEnd(modifier) {\n return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWithEndModifier(this.#node, modifier.toOperationNode()));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./modify-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const ModifyColumnNode = freeze({\n is(node) {\n return node.kind === 'ModifyColumnNode';\n },\n create(column) {\n return freeze({\n kind: 'ModifyColumnNode',\n column,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\nimport { ReferencesNode, } from './references-node.js';\n/**\n * @internal\n */\nexport const ForeignKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'ForeignKeyConstraintNode';\n },\n create(sourceColumns, targetTable, targetColumns, constraintName) {\n return freeze({\n kind: 'ForeignKeyConstraintNode',\n columns: sourceColumns,\n references: ReferencesNode.create(targetTable, targetColumns),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./foreign-key-constraint-builder.d.ts\" />\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { parseOnModifyForeignAction } from '../parser/on-modify-action-parser.js';\nexport class ForeignKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n onDelete(onDelete) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onDelete: parseOnModifyForeignAction(onDelete),\n }));\n }\n onUpdate(onUpdate) {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n onUpdate: parseOnModifyForeignAction(onUpdate),\n }));\n }\n deferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./add-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const AddConstraintNode = freeze({\n is(node) {\n return node.kind === 'AddConstraintNode';\n },\n create(constraint) {\n return freeze({\n kind: 'AddConstraintNode',\n constraint,\n });\n },\n});\n","/// <reference types=\"./unique-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const UniqueConstraintNode = freeze({\n is(node) {\n return node.kind === 'UniqueConstraintNode';\n },\n create(columns, constraintName, nullsNotDistinct) {\n return freeze({\n kind: 'UniqueConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n nullsNotDistinct,\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n});\n","/// <reference types=\"./drop-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const DropConstraintNode = freeze({\n is(node) {\n return node.kind === 'DropConstraintNode';\n },\n create(constraintName) {\n return freeze({\n kind: 'DropConstraintNode',\n constraintName: IdentifierNode.create(constraintName),\n });\n },\n cloneWith(dropConstraint, props) {\n return freeze({\n ...dropConstraint,\n ...props,\n });\n },\n});\n","/// <reference types=\"./alter-column-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\n/**\n * @internal\n */\nexport const AlterColumnNode = freeze({\n is(node) {\n return node.kind === 'AlterColumnNode';\n },\n create(column, prop, value) {\n return freeze({\n kind: 'AlterColumnNode',\n column: ColumnNode.create(column),\n [prop]: value,\n });\n },\n});\n","/// <reference types=\"./alter-column-builder.d.ts\" />\nimport { AlterColumnNode } from '../operation-node/alter-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { parseDefaultValueExpression, } from '../parser/default-value-parser.js';\nexport class AlterColumnBuilder {\n #column;\n constructor(column) {\n this.#column = column;\n }\n setDataType(dataType) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dataType', parseDataTypeExpression(dataType)));\n }\n setDefault(value) {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setDefault', parseDefaultValueExpression(value)));\n }\n dropDefault() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropDefault', true));\n }\n setNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setNotNull', true));\n }\n dropNotNull() {\n return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropNotNull', true));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n}\n/**\n * Allows us to force consumers to do exactly one alteration to a column.\n *\n * One cannot do no alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .execute() // Property 'execute' does not exist on type 'AlteredColumnBuilder'.\n * ```\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac) // Type 'AlterColumnBuilder' is not assignable to type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * One cannot do multiple alterations:\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * // .alterColumn('age', (ac) => ac.dropNotNull().setNotNull()) // Property 'setNotNull' does not exist on type 'AlteredColumnBuilder'.\n * // .execute()\n * ```\n *\n * Which would now throw a compilation error, instead of a runtime error.\n */\nexport class AlteredColumnBuilder {\n #alterColumnNode;\n constructor(alterColumnNode) {\n this.#alterColumnNode = alterColumnNode;\n }\n toOperationNode() {\n return this.#alterColumnNode;\n }\n}\n","/// <reference types=\"./alter-table-executor.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableExecutor {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-add-foreign-key-constraint-builder.d.ts\" />\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddForeignKeyConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n onDelete(onDelete) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onDelete(onDelete),\n });\n }\n onUpdate(onUpdate) {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),\n });\n }\n deferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.deferrable(),\n });\n }\n notDeferrable() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.notDeferrable(),\n });\n }\n initiallyDeferred() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyDeferred(),\n });\n }\n initiallyImmediate() {\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder: this.#props.constraintBuilder.initiallyImmediate(),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(this.#props.constraintBuilder.toOperationNode()),\n }), this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./alter-table-drop-constraint-builder.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableDropConstraintBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n ifExists: true,\n }),\n }),\n });\n }\n cascade() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'cascade',\n }),\n }),\n });\n }\n restrict() {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.cloneWith(this.#props.node.dropConstraint, {\n modifier: 'restrict',\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./primary-key-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ColumnNode } from './column-node.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const PrimaryKeyConstraintNode = freeze({\n is(node) {\n return node.kind === 'PrimaryKeyConstraintNode';\n },\n create(columns, constraintName) {\n return freeze({\n kind: 'PrimaryKeyConstraintNode',\n columns: freeze(columns.map(ColumnNode.create)),\n name: constraintName\n ? IdentifierNode.create(constraintName)\n : undefined,\n });\n },\n cloneWith(node, props) {\n return freeze({ ...node, ...props });\n },\n});\n/**\n * Backwards compatibility for a typo in the codebase.\n *\n * @deprecated Use {@link PrimaryKeyConstraintNode} instead.\n */\nexport const PrimaryConstraintNode = PrimaryKeyConstraintNode;\n","/// <reference types=\"./add-index-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const AddIndexNode = freeze({\n is(node) {\n return node.kind === 'AddIndexNode';\n },\n create(name) {\n return freeze({\n kind: 'AddIndexNode',\n name: IdentifierNode.create(name),\n });\n },\n cloneWith(node, props) {\n return freeze({\n ...node,\n ...props,\n });\n },\n cloneWithColumns(node, columns) {\n return freeze({\n ...node,\n columns: [...(node.columns || []), ...columns],\n });\n },\n});\n","/// <reference types=\"./alter-table-add-index-builder.d.ts\" />\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class AlterTableAddIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Makes the index unique.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .unique()\n * .column('email')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_first_name_index` (`email`)\n * ```\n */\n unique() {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n unique: true,\n }),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n column(column) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n parseOrderedColumnName(column),\n ]),\n }),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_and_age_index')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)\n * ```\n */\n columns(columns) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(parseOrderedColumnName)),\n }),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .alterTable('person')\n * .addIndex('person_first_name_index')\n * .expression(sql<boolean>`(first_name < 'Sami')`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))\n * ```\n */\n expression(expression) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [\n expression.toOperationNode(),\n ]),\n }),\n });\n }\n using(indexType) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.cloneWith(this.#props.node.addIndex, {\n using: RawNode.createWithSql(indexType),\n }),\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./unique-constraint-builder.d.ts\" />\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nexport class UniqueConstraintNodeBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Adds `nulls not distinct` to the unique constraint definition\n *\n * Supported by PostgreSQL dialect only\n */\n nullsNotDistinct() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));\n }\n deferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new UniqueConstraintNodeBuilder(UniqueConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./primary-key-constraint-builder.d.ts\" />\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nexport class PrimaryKeyConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n deferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: true }));\n }\n notDeferrable() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, { deferrable: false }));\n }\n initiallyDeferred() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: true,\n }));\n }\n initiallyImmediate() {\n return new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.cloneWith(this.#node, {\n initiallyDeferred: false,\n }));\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./check-constraint-builder.d.ts\" />\nexport class CheckConstraintBuilder {\n #node;\n constructor(node) {\n this.#node = node;\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#node;\n }\n}\n","/// <reference types=\"./rename-constraint-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { IdentifierNode } from './identifier-node.js';\n/**\n * @internal\n */\nexport const RenameConstraintNode = freeze({\n is(node) {\n return node.kind === 'RenameConstraintNode';\n },\n create(oldName, newName) {\n return freeze({\n kind: 'RenameConstraintNode',\n oldName: IdentifierNode.create(oldName),\n newName: IdentifierNode.create(newName),\n });\n },\n});\n","/// <reference types=\"./alter-table-builder.d.ts\" />\nimport { AddColumnNode } from '../operation-node/add-column-node.js';\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { DropColumnNode } from '../operation-node/drop-column-node.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { RenameColumnNode } from '../operation-node/rename-column-node.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ColumnDefinitionBuilder, } from './column-definition-builder.js';\nimport { ModifyColumnNode } from '../operation-node/modify-column-node.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { AddConstraintNode } from '../operation-node/add-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { DropConstraintNode } from '../operation-node/drop-constraint-node.js';\nimport { AlterColumnBuilder, } from './alter-column-builder.js';\nimport { AlterTableExecutor } from './alter-table-executor.js';\nimport { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';\nimport { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { AddIndexNode } from '../operation-node/add-index-node.js';\nimport { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\nimport { RenameConstraintNode } from '../operation-node/rename-constraint-node.js';\n/**\n * This builder can be used to create a `alter table` query.\n */\nexport class AlterTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n renameTo(newTableName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameTo: parseTable(newTableName),\n }),\n });\n }\n setSchema(newSchema) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n setSchema: IdentifierNode.create(newSchema),\n }),\n });\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n /**\n * See {@link CreateTableBuilder.addUniqueConstraint}\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addCheckConstraint}\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n /**\n * See {@link CreateTableBuilder.addForeignKeyConstraint}\n *\n * Unlike {@link CreateTableBuilder.addForeignKeyConstraint} this method returns\n * the constraint builder and doesn't take a callback as the last argument. This\n * is because you can only add one column per `ALTER TABLE` query.\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const constraintBuilder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new AlterTableAddForeignKeyConstraintBuilder({\n ...this.#props,\n constraintBuilder,\n });\n }\n /**\n * See {@link CreateTableBuilder.addPrimaryKeyConstraint}\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addConstraint: AddConstraintNode.create(constraintBuilder.toOperationNode()),\n }),\n });\n }\n dropConstraint(constraintName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropConstraint: DropConstraintNode.create(constraintName),\n }),\n });\n }\n renameConstraint(oldName, newName) {\n return new AlterTableDropConstraintBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n renameConstraint: RenameConstraintNode.create(oldName, newName),\n }),\n });\n }\n /**\n * This can be used to add index to table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .addIndex('person_email_index')\n * .column('email')\n * .unique()\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` add unique index `person_email_index` (`email`)\n * ```\n */\n addIndex(indexName) {\n return new AlterTableAddIndexBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n addIndex: AddIndexNode.create(indexName),\n }),\n });\n }\n /**\n * This can be used to drop index from table.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.alterTable('person')\n * .dropIndex('person_email_index')\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * alter table `person` drop index `test_first_name_index`\n * ```\n */\n dropIndex(indexName) {\n return new AlterTableExecutor({\n ...this.#props,\n node: AlterTableNode.cloneWithTableProps(this.#props.node, {\n dropIndex: DropIndexNode.create(indexName),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * See {@link CreateTableBuilder.$call}\n */\n $call(func) {\n return func(this);\n }\n}\nexport class AlterTableColumnAlteringBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n alterColumn(column, alteration) {\n const builder = alteration(new AlterColumnBuilder(column));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),\n });\n }\n dropColumn(column) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, DropColumnNode.create(column)),\n });\n }\n renameColumn(column, newColumn) {\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, RenameColumnNode.create(column, newColumn)),\n });\n }\n addColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, AddColumnNode.create(builder.toOperationNode())),\n });\n }\n modifyColumn(columnName, dataType, build = noop) {\n const builder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new AlterTableColumnAlteringBuilder({\n ...this.#props,\n node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, ModifyColumnNode.create(builder.toOperationNode())),\n });\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./immediate-value-transformer.d.ts\" />\nimport { OperationNodeTransformer } from '../../operation-node/operation-node-transformer.js';\nimport { ValueListNode } from '../../operation-node/value-list-node.js';\nimport { ValueNode } from '../../operation-node/value-node.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValueTransformer extends OperationNodeTransformer {\n transformPrimitiveValueList(node) {\n return ValueListNode.create(node.values.map(ValueNode.createImmediate));\n }\n transformValue(node) {\n return ValueNode.createImmediate(node.value);\n }\n}\n","/// <reference types=\"./create-index-builder.d.ts\" />\nimport { CreateIndexNode, } from '../operation-node/create-index-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { parseOrderedColumnName, } from '../parser/reference-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nimport { parseValueBinaryOperationOrExpression, } from '../parser/binary-operation-parser.js';\nimport { QueryNode } from '../operation-node/query-node.js';\nimport { ImmediateValueTransformer } from '../plugin/immediate-value/immediate-value-transformer.js';\nexport class CreateIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the index already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Makes the index unique.\n */\n unique() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n unique: true,\n }),\n });\n }\n /**\n * Adds `nulls not distinct` specifier to index.\n * This only works on some dialects like PostgreSQL.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createIndex('person_first_name_index')\n * .on('person')\n * .column('first_name')\n * .nullsNotDistinct()\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\"\n * on \"test\" (\"first_name\")\n * nulls not distinct;\n * ```\n */\n nullsNotDistinct() {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n nullsNotDistinct: true,\n }),\n });\n }\n /**\n * Specifies the table for the index.\n */\n on(table) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n /**\n * Adds a column to the index.\n *\n * Also see {@link columns} for adding multiple columns at once or {@link expression}\n * for specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .column('first_name')\n * .column('age desc')\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n column(column) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n parseOrderedColumnName(column),\n ]),\n });\n }\n /**\n * Specifies a list of columns for the index.\n *\n * Also see {@link column} for adding a single column or {@link expression} for\n * specifying an arbitrary expression.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_first_name_and_age_index')\n * .on('person')\n * .columns(['first_name', 'age desc'])\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_and_age_index\" on \"person\" (\"first_name\", \"age\" desc)\n * ```\n */\n columns(columns) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, columns.map(parseOrderedColumnName)),\n });\n }\n /**\n * Specifies an arbitrary expression for the index.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createIndex('person_first_name_index')\n * .on('person')\n * .expression(sql`first_name COLLATE \"fi_FI\"`)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create index \"person_first_name_index\" on \"person\" (first_name COLLATE \"fi_FI\")\n * ```\n */\n expression(expression) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWithColumns(this.#props.node, [\n expression.toOperationNode(),\n ]),\n });\n }\n using(indexType) {\n return new CreateIndexBuilder({\n ...this.#props,\n node: CreateIndexNode.cloneWith(this.#props.node, {\n using: RawNode.createWithSql(indexType),\n }),\n });\n }\n where(...args) {\n const transformer = new ImmediateValueTransformer();\n return new CreateIndexBuilder({\n ...this.#props,\n node: QueryNode.cloneWithWhere(this.#props.node, transformer.transformNode(parseValueBinaryOperationOrExpression(args), this.#props.queryId)),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-schema-builder.d.ts\" />\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class CreateSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifNotExists() {\n return new CreateSchemaBuilder({\n ...this.#props,\n node: CreateSchemaNode.cloneWith(this.#props.node, { ifNotExists: true }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./on-commit-action-parse.d.ts\" />\nimport { ON_COMMIT_ACTIONS, } from '../operation-node/create-table-node.js';\nexport function parseOnCommitAction(action) {\n if (ON_COMMIT_ACTIONS.includes(action)) {\n return action;\n }\n throw new Error(`invalid OnCommitAction ${action}`);\n}\n","/// <reference types=\"./create-table-builder.d.ts\" />\nimport { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';\nimport { CreateTableNode, } from '../operation-node/create-table-node.js';\nimport { ColumnDefinitionBuilder } from './column-definition-builder.js';\nimport { freeze, noop } from '../util/object-utils.js';\nimport { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';\nimport { ColumnNode } from '../operation-node/column-node.js';\nimport { ForeignKeyConstraintBuilder, } from './foreign-key-constraint-builder.js';\nimport { parseDataTypeExpression, } from '../parser/data-type-parser.js';\nimport { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';\nimport { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';\nimport { CheckConstraintNode } from '../operation-node/check-constraint-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseOnCommitAction } from '../parser/on-commit-action-parse.js';\nimport { UniqueConstraintNodeBuilder, } from './unique-constraint-builder.js';\nimport { parseExpression } from '../parser/expression-parser.js';\nimport { PrimaryKeyConstraintBuilder, } from './primary-key-constraint-builder.js';\nimport { CheckConstraintBuilder, } from './check-constraint-builder.js';\n/**\n * This builder can be used to create a `create table` query.\n */\nexport class CreateTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary table.\n */\n temporary() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n /**\n * Adds an \"on commit\" statement.\n *\n * This can be used in conjunction with temporary tables on supported databases\n * like PostgreSQL.\n */\n onCommit(onCommit) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n onCommit: parseOnCommitAction(onCommit),\n }),\n });\n }\n /**\n * Adds the \"if not exists\" modifier.\n *\n * If the table already exists, no error is thrown if this method has been called.\n */\n ifNotExists() {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n /**\n * Adds a column to the table.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.autoIncrement().primaryKey())\n * .addColumn('first_name', 'varchar(50)', (col) => col.notNull())\n * .addColumn('last_name', 'varchar(255)')\n * .addColumn('bank_balance', 'numeric(8, 2)')\n * // You can specify any data type using the `sql` tag if the types\n * // don't include it.\n * .addColumn('data', sql`any_type_here`)\n * .addColumn('parent_id', 'integer', (col) =>\n * col.references('person.id').onDelete('cascade')\n * )\n * ```\n *\n * With this method, it's once again good to remember that Kysely just builds the\n * query and doesn't provide the same API for all databases. For example, some\n * databases like older MySQL don't support the `references` statement in the\n * column definition. Instead foreign key constraints need to be defined in the\n * `create table` query. See the next example:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', (col) => col.primaryKey())\n * .addColumn('parent_id', 'integer')\n * .addForeignKeyConstraint(\n * 'person_parent_id_fk',\n * ['parent_id'],\n * 'person',\n * ['id'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * Another good example is that PostgreSQL doesn't support the `auto_increment`\n * keyword and you need to define an autoincrementing column for example using\n * `serial`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'serial', (col) => col.primaryKey())\n * .execute()\n * ```\n */\n addColumn(columnName, dataType, build = noop) {\n const columnBuilder = build(new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType))));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithColumn(this.#props.node, columnBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a primary key constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addPrimaryKeyConstraint('primary_key', ['first_name', 'last_name'])\n * .execute()\n * ```\n */\n addPrimaryKeyConstraint(constraintName, columns, build = noop) {\n const constraintBuilder = build(new PrimaryKeyConstraintBuilder(PrimaryKeyConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a unique constraint for one or more columns.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name']\n * )\n * .execute()\n * ```\n *\n * In dialects such as PostgreSQL you can specify `nulls not distinct` as follows:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('first_name', 'varchar(64)')\n * .addColumn('last_name', 'varchar(64)')\n * .addUniqueConstraint(\n * 'first_name_last_name_unique',\n * ['first_name', 'last_name'],\n * (cb) => cb.nullsNotDistinct()\n * )\n * .execute()\n * ```\n */\n addUniqueConstraint(constraintName, columns, build = noop) {\n const uniqueConstraintBuilder = build(new UniqueConstraintNodeBuilder(UniqueConstraintNode.create(columns, constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, uniqueConstraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a check constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('animal')\n * .addColumn('number_of_legs', 'integer')\n * .addCheckConstraint('check_legs', sql`number_of_legs < 5`)\n * .execute()\n * ```\n */\n addCheckConstraint(constraintName, checkExpression, build = noop) {\n const constraintBuilder = build(new CheckConstraintBuilder(CheckConstraintNode.create(checkExpression.toOperationNode(), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, constraintBuilder.toOperationNode()),\n });\n }\n /**\n * Adds a foreign key constraint.\n *\n * The constraint name can be anything you want, but it must be unique\n * across the whole database.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id'],\n * 'person',\n * ['id'],\n * )\n * .execute()\n * ```\n *\n * Add constraint for multiple columns:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('owner_id1', 'integer')\n * .addColumn('owner_id2', 'integer')\n * .addForeignKeyConstraint(\n * 'owner_id_foreign',\n * ['owner_id1', 'owner_id2'],\n * 'person',\n * ['id1', 'id2'],\n * (cb) => cb.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build = noop) {\n const builder = build(new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), parseTable(targetTable), targetColumns.map(ColumnNode.create), constraintName)));\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithConstraint(this.#props.node, builder.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the front of the query __after__ the `create` keyword.\n *\n * Also see {@link temporary}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .modifyFront(sql`global temporary`)\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .execute()\n * ```\n *\n * The generated SQL (Postgres):\n *\n * ```sql\n * create global temporary table \"person\" (\n * \"id\" integer primary key,\n * \"first_name\" varchar(64) not null,\n * \"last_name\" varchar(64) not null\n * )\n * ```\n */\n modifyFront(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithFrontModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * This can be used to add any additional SQL to the end of the query.\n *\n * Also see {@link onCommit}.\n *\n * ### Examples\n *\n * ```ts\n * import { sql } from 'kysely'\n *\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey())\n * .addColumn('first_name', 'varchar(64)', col => col.notNull())\n * .addColumn('last_name', 'varchar(64)', col => col.notNull())\n * .modifyEnd(sql`collate utf8_unicode_ci`)\n * .execute()\n * ```\n *\n * The generated SQL (MySQL):\n *\n * ```sql\n * create table `person` (\n * `id` integer primary key,\n * `first_name` varchar(64) not null,\n * `last_name` varchar(64) not null\n * ) collate utf8_unicode_ci\n * ```\n */\n modifyEnd(modifier) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWithEndModifier(this.#props.node, modifier.toOperationNode()),\n });\n }\n /**\n * Allows to create table from `select` query.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('copy')\n * .temporary()\n * .as(db.selectFrom('person').select(['first_name', 'last_name']))\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * create temporary table \"copy\" as\n * select \"first_name\", \"last_name\" from \"person\"\n * ```\n */\n as(expression) {\n return new CreateTableBuilder({\n ...this.#props,\n node: CreateTableNode.cloneWith(this.#props.node, {\n selectQuery: parseExpression(expression),\n }),\n });\n }\n /**\n * Calls the given function passing `this` as the only argument.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createTable('test')\n * .$call((builder) => builder.addColumn('id', 'integer'))\n * .execute()\n * ```\n *\n * This is useful for creating reusable functions that can be called with a builder.\n *\n * ```ts\n * import { type CreateTableBuilder, sql } from 'kysely'\n *\n * const addDefaultColumns = (ctb: CreateTableBuilder<any, any>) => {\n * return ctb\n * .addColumn('id', 'integer', (col) => col.notNull())\n * .addColumn('created_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * .addColumn('updated_at', 'date', (col) =>\n * col.notNull().defaultTo(sql`now()`)\n * )\n * }\n *\n * await db.schema\n * .createTable('test')\n * .$call(addDefaultColumns)\n * .execute()\n * ```\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-index-builder.d.ts\" />\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropIndexBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Specifies the table the index was created for. This is not needed\n * in all dialects.\n */\n on(table) {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n table: parseTable(table),\n }),\n });\n }\n ifExists() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropIndexBuilder({\n ...this.#props,\n node: DropIndexNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-schema-builder.d.ts\" />\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropSchemaBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropSchemaBuilder({\n ...this.#props,\n node: DropSchemaNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-table-builder.d.ts\" />\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTableBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropTableBuilder({\n ...this.#props,\n node: DropTableNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const CreateViewNode = freeze({\n is(node) {\n return node.kind === 'CreateViewNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(createView, params) {\n return freeze({\n ...createView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./immediate-value-plugin.d.ts\" />\nimport { ImmediateValueTransformer } from './immediate-value-transformer.js';\n/**\n * Transforms all ValueNodes to immediate.\n *\n * WARNING! This should never be part of the public API. Users should never use this.\n * This is an internal helper.\n *\n * @internal\n */\nexport class ImmediateValuePlugin {\n #transformer = new ImmediateValueTransformer();\n transformQuery(args) {\n return this.#transformer.transformNode(args.node, args.queryId);\n }\n transformResult(args) {\n return Promise.resolve(args.result);\n }\n}\n","/// <reference types=\"./create-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { parseColumnName } from '../parser/reference-parser.js';\nimport { ImmediateValuePlugin } from '../plugin/immediate-value/immediate-value-plugin.js';\nexport class CreateViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"temporary\" modifier.\n *\n * Use this to create a temporary view.\n */\n temporary() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n temporary: true,\n }),\n });\n }\n materialized() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n /**\n * Only implemented on some dialects like SQLite. On most dialects, use {@link orReplace}.\n */\n ifNotExists() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n ifNotExists: true,\n }),\n });\n }\n orReplace() {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n orReplace: true,\n }),\n });\n }\n columns(columns) {\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n columns: columns.map(parseColumnName),\n }),\n });\n }\n /**\n * Sets the select query or a `values` statement that creates the view.\n *\n * WARNING!\n * Some dialects don't support parameterized queries in DDL statements and therefore\n * the query or raw {@link sql } expression passed here is interpolated into a single\n * string opening an SQL injection vulnerability. DO NOT pass unchecked user input\n * into the query or raw expression passed to this method!\n */\n as(query) {\n const queryNode = query\n .withPlugin(new ImmediateValuePlugin())\n .toOperationNode();\n return new CreateViewBuilder({\n ...this.#props,\n node: CreateViewNode.cloneWith(this.#props.node, {\n as: queryNode,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const DropViewNode = freeze({\n is(node) {\n return node.kind === 'DropViewNode';\n },\n create(name) {\n return freeze({\n kind: 'DropViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(dropView, params) {\n return freeze({\n ...dropView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nexport class DropViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n materialized() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n materialized: true,\n }),\n });\n }\n ifExists() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n cascade() {\n return new DropViewBuilder({\n ...this.#props,\n node: DropViewNode.cloneWith(this.#props.node, {\n cascade: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./create-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { ValueListNode } from './value-list-node.js';\nimport { ValueNode } from './value-node.js';\n/**\n * @internal\n */\nexport const CreateTypeNode = freeze({\n is(node) {\n return node.kind === 'CreateTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'CreateTypeNode',\n name,\n });\n },\n cloneWithEnum(createType, values) {\n return freeze({\n ...createType,\n enum: ValueListNode.create(values.map(ValueNode.createImmediate)),\n });\n },\n});\n","/// <reference types=\"./create-type-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nexport class CreateTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n /**\n * Creates an anum type.\n *\n * ### Examples\n *\n * ```ts\n * db.schema.createType('species').asEnum(['cat', 'dog', 'frog'])\n * ```\n */\n asEnum(values) {\n return new CreateTypeBuilder({\n ...this.#props,\n node: CreateTypeNode.cloneWithEnum(this.#props.node, values),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./drop-type-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\n/**\n * @internal\n */\nexport const DropTypeNode = freeze({\n is(node) {\n return node.kind === 'DropTypeNode';\n },\n create(name) {\n return freeze({\n kind: 'DropTypeNode',\n name,\n });\n },\n cloneWith(dropType, params) {\n return freeze({\n ...dropType,\n ...params,\n });\n },\n});\n","/// <reference types=\"./drop-type-builder.d.ts\" />\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { freeze } from '../util/object-utils.js';\nexport class DropTypeBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n ifExists() {\n return new DropTypeBuilder({\n ...this.#props,\n node: DropTypeNode.cloneWith(this.#props.node, {\n ifExists: true,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./identifier-parser.d.ts\" />\nimport { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';\nexport function parseSchemableIdentifier(id) {\n const SCHEMA_SEPARATOR = '.';\n if (id.includes(SCHEMA_SEPARATOR)) {\n const parts = id.split(SCHEMA_SEPARATOR).map(trim);\n if (parts.length === 2) {\n return SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);\n }\n else {\n throw new Error(`invalid schemable identifier ${id}`);\n }\n }\n else {\n return SchemableIdentifierNode.create(id);\n }\n}\nfunction trim(str) {\n return str.trim();\n}\n","/// <reference types=\"./refresh-materialized-view-node.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { SchemableIdentifierNode } from './schemable-identifier-node.js';\n/**\n * @internal\n */\nexport const RefreshMaterializedViewNode = freeze({\n is(node) {\n return node.kind === 'RefreshMaterializedViewNode';\n },\n create(name) {\n return freeze({\n kind: 'RefreshMaterializedViewNode',\n name: SchemableIdentifierNode.create(name),\n });\n },\n cloneWith(createView, params) {\n return freeze({\n ...createView,\n ...params,\n });\n },\n});\n","/// <reference types=\"./refresh-materialized-view-builder.d.ts\" />\nimport { freeze } from '../util/object-utils.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\nexport class RefreshMaterializedViewBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Adds the \"concurrently\" modifier.\n *\n * Use this to refresh the view without locking out concurrent selects on the materialized view.\n *\n * WARNING!\n * This cannot be used with the \"with no data\" modifier.\n */\n concurrently() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n concurrently: true,\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with data\" modifier.\n *\n * If specified (or defaults) the backing query is executed to provide the new data, and the materialized view is left in a scannable state\n */\n withData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: false,\n }),\n });\n }\n /**\n * Adds the \"with no data\" modifier.\n *\n * If specified, no new data is generated and the materialized view is left in an unscannable state.\n *\n * WARNING!\n * This cannot be used with the \"concurrently\" modifier.\n */\n withNoData() {\n return new RefreshMaterializedViewBuilder({\n ...this.#props,\n node: RefreshMaterializedViewNode.cloneWith(this.#props.node, {\n withNoData: true,\n concurrently: false,\n }),\n });\n }\n /**\n * Simply calls the provided function passing `this` as the only argument. `$call` returns\n * what the provided function returns.\n */\n $call(func) {\n return func(this);\n }\n toOperationNode() {\n return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);\n }\n compile() {\n return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);\n }\n async execute() {\n await this.#props.executor.executeQuery(this.compile());\n }\n}\n","/// <reference types=\"./schema.d.ts\" />\nimport { AlterTableNode } from '../operation-node/alter-table-node.js';\nimport { CreateIndexNode } from '../operation-node/create-index-node.js';\nimport { CreateSchemaNode } from '../operation-node/create-schema-node.js';\nimport { CreateTableNode } from '../operation-node/create-table-node.js';\nimport { DropIndexNode } from '../operation-node/drop-index-node.js';\nimport { DropSchemaNode } from '../operation-node/drop-schema-node.js';\nimport { DropTableNode } from '../operation-node/drop-table-node.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { AlterTableBuilder } from './alter-table-builder.js';\nimport { CreateIndexBuilder } from './create-index-builder.js';\nimport { CreateSchemaBuilder } from './create-schema-builder.js';\nimport { CreateTableBuilder } from './create-table-builder.js';\nimport { DropIndexBuilder } from './drop-index-builder.js';\nimport { DropSchemaBuilder } from './drop-schema-builder.js';\nimport { DropTableBuilder } from './drop-table-builder.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { CreateViewBuilder } from './create-view-builder.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { DropViewBuilder } from './drop-view-builder.js';\nimport { DropViewNode } from '../operation-node/drop-view-node.js';\nimport { CreateTypeBuilder } from './create-type-builder.js';\nimport { DropTypeBuilder } from './drop-type-builder.js';\nimport { CreateTypeNode } from '../operation-node/create-type-node.js';\nimport { DropTypeNode } from '../operation-node/drop-type-node.js';\nimport { parseSchemableIdentifier } from '../parser/identifier-parser.js';\nimport { RefreshMaterializedViewBuilder } from './refresh-materialized-view-builder.js';\nimport { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';\n/**\n * Provides methods for building database schema.\n */\nexport class SchemaModule {\n #executor;\n constructor(executor) {\n this.#executor = executor;\n }\n /**\n * Create a new table.\n *\n * ### Examples\n *\n * This example creates a new table with columns `id`, `first_name`,\n * `last_name` and `gender`:\n *\n * ```ts\n * await db.schema\n * .createTable('person')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('first_name', 'varchar', col => col.notNull())\n * .addColumn('last_name', 'varchar', col => col.notNull())\n * .addColumn('gender', 'varchar')\n * .execute()\n * ```\n *\n * This example creates a table with a foreign key. Not all database\n * engines support column-level foreign key constraint definitions.\n * For example if you are using MySQL 5.X see the next example after\n * this one.\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer', col => col\n * .references('person.id')\n * .onDelete('cascade')\n * )\n * .execute()\n * ```\n *\n * This example adds a foreign key constraint for a columns just\n * like the previous example, but using a table-level statement.\n * On MySQL 5.X you need to define foreign key constraints like\n * this:\n *\n * ```ts\n * await db.schema\n * .createTable('pet')\n * .addColumn('id', 'integer', col => col.primaryKey().autoIncrement())\n * .addColumn('owner_id', 'integer')\n * .addForeignKeyConstraint(\n * 'pet_owner_id_foreign', ['owner_id'], 'person', ['id'],\n * (constraint) => constraint.onDelete('cascade')\n * )\n * .execute()\n * ```\n */\n createTable(table) {\n return new CreateTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTableNode.create(parseTable(table)),\n });\n }\n /**\n * Drop a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropTable('person')\n * .execute()\n * ```\n */\n dropTable(table) {\n return new DropTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createIndex('person_full_name_unique_index')\n * .on('person')\n * .columns(['first_name', 'last_name'])\n * .execute()\n * ```\n */\n createIndex(indexName) {\n return new CreateIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateIndexNode.create(indexName),\n });\n }\n /**\n * Drop an index.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropIndex('person_full_name_unique_index')\n * .execute()\n * ```\n */\n dropIndex(indexName) {\n return new DropIndexBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropIndexNode.create(indexName),\n });\n }\n /**\n * Create a new schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createSchema('some_schema')\n * .execute()\n * ```\n */\n createSchema(schema) {\n return new CreateSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateSchemaNode.create(schema),\n });\n }\n /**\n * Drop a schema.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropSchema('some_schema')\n * .execute()\n * ```\n */\n dropSchema(schema) {\n return new DropSchemaBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropSchemaNode.create(schema),\n });\n }\n /**\n * Alter a table.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .alterTable('person')\n * .alterColumn('first_name', (ac) => ac.setDataType('text'))\n * .execute()\n * ```\n */\n alterTable(table) {\n return new AlterTableBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: AlterTableNode.create(parseTable(table)),\n });\n }\n /**\n * Create a new view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createView('dogs')\n * .orReplace()\n * .as(db.selectFrom('pet').selectAll().where('species', '=', 'dog'))\n * .execute()\n * ```\n */\n createView(viewName) {\n return new CreateViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateViewNode.create(viewName),\n });\n }\n /**\n * Refresh a materialized view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .refreshMaterializedView('my_view')\n * .concurrently()\n * .execute()\n * ```\n */\n refreshMaterializedView(viewName) {\n return new RefreshMaterializedViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: RefreshMaterializedViewNode.create(viewName),\n });\n }\n /**\n * Drop a view.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropView('dogs')\n * .ifExists()\n * .execute()\n * ```\n */\n dropView(viewName) {\n return new DropViewBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropViewNode.create(viewName),\n });\n }\n /**\n * Create a new type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .createType('species')\n * .asEnum(['dog', 'cat', 'frog'])\n * .execute()\n * ```\n */\n createType(typeName) {\n return new CreateTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: CreateTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Drop a type.\n *\n * Only some dialects like PostgreSQL have user-defined types.\n *\n * ### Examples\n *\n * ```ts\n * await db.schema\n * .dropType('species')\n * .ifExists()\n * .execute()\n * ```\n */\n dropType(typeName) {\n return new DropTypeBuilder({\n queryId: createQueryId(),\n executor: this.#executor,\n node: DropTypeNode.create(parseSchemableIdentifier(typeName)),\n });\n }\n /**\n * Returns a copy of this schema module with the given plugin installed.\n */\n withPlugin(plugin) {\n return new SchemaModule(this.#executor.withPlugin(plugin));\n }\n /**\n * Returns a copy of this schema module without any plugins.\n */\n withoutPlugins() {\n return new SchemaModule(this.#executor.withoutPlugins());\n }\n /**\n * See {@link QueryCreator.withSchema}\n */\n withSchema(schema) {\n return new SchemaModule(this.#executor.withPluginAtFront(new WithSchemaPlugin(schema)));\n }\n}\n","/// <reference types=\"./dynamic.d.ts\" />\nimport { DynamicReferenceBuilder } from './dynamic-reference-builder.js';\nimport { DynamicTableBuilder } from './dynamic-table-builder.js';\nexport class DynamicModule {\n /**\n * Creates a dynamic reference to a column that is not know at compile time.\n *\n * Kysely is built in a way that by default you can't refer to tables or columns\n * that are not actually visible in the current query and context. This is all\n * done by TypeScript at compile time, which means that you need to know the\n * columns and tables at compile time. This is not always the case of course.\n *\n * This method is meant to be used in those cases where the column names\n * come from the user input or are not otherwise known at compile time.\n *\n * WARNING! Unlike values, column names are not escaped by the database engine\n * or Kysely and if you pass in unchecked column names using this method, you\n * create an SQL injection vulnerability. Always __always__ validate the user\n * input before passing it to this method.\n *\n * There are couple of examples below for some use cases, but you can pass\n * `ref` to other methods as well. If the types allow you to pass a `ref`\n * value to some place, it should work.\n *\n * ### Examples\n *\n * Filter by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(filterColumn: string, filterValue: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .selectAll()\n * .where(ref(filterColumn), '=', filterValue)\n * .execute()\n * }\n *\n * someQuery('first_name', 'Arnold')\n * someQuery('person.last_name', 'Aniston')\n * ```\n *\n * Order by a column not know at compile time:\n *\n * ```ts\n * async function someQuery(orderBy: string) {\n * const { ref } = db.dynamic\n *\n * return await db\n * .selectFrom('person')\n * .select('person.first_name as fn')\n * .orderBy(ref(orderBy))\n * .execute()\n * }\n *\n * someQuery('fn')\n * ```\n *\n * In this example we add selections dynamically:\n *\n * ```ts\n * const { ref } = db.dynamic\n *\n * // Some column name provided by the user. Value not known at compile time.\n * const columnFromUserInput: PossibleColumns = 'birthdate';\n *\n * // A type that lists all possible values `columnFromUserInput` can have.\n * // You can use `keyof Person` if any column of an interface is allowed.\n * type PossibleColumns = 'last_name' | 'first_name' | 'birthdate'\n *\n * const [person] = await db.selectFrom('person')\n * .select([\n * ref<PossibleColumns>(columnFromUserInput),\n * 'id'\n * ])\n * .execute()\n *\n * // The resulting type contains all `PossibleColumns` as optional fields\n * // because we cannot know which field was actually selected before\n * // running the code.\n * const lastName: string | null | undefined = person?.last_name\n * const firstName: string | undefined = person?.first_name\n * const birthDate: Date | null | undefined = person?.birthdate\n *\n * // The result type also contains the compile time selection `id`.\n * person?.id\n * ```\n */\n ref(reference) {\n return new DynamicReferenceBuilder(reference);\n }\n /**\n * Creates a table reference to a table that's not fully known at compile time.\n *\n * The type `T` is allowed to be a union of multiple tables.\n *\n * <!-- siteExample(\"select\", \"Generic find query\", 130) -->\n *\n * A generic type-safe helper function for finding a row by a column value:\n *\n * ```ts\n * import { SelectType } from 'kysely'\n * import { Database } from 'type-editor'\n *\n * async function getRowByColumn<\n * T extends keyof Database,\n * C extends keyof Database[T] & string,\n * V extends SelectType<Database[T][C]>,\n * >(t: T, c: C, v: V) {\n * // We need to use the dynamic module since the table name\n * // is not known at compile time.\n * const { table, ref } = db.dynamic\n *\n * return await db\n * .selectFrom(table(t).as('t'))\n * .selectAll()\n * .where(ref(c), '=', v)\n * .orderBy('t.id')\n * .executeTakeFirstOrThrow()\n * }\n *\n * const person = await getRowByColumn('person', 'first_name', 'Arnold')\n * ```\n */\n table(table) {\n return new DynamicTableBuilder(table);\n }\n}\n","/// <reference types=\"./default-connection-provider.d.ts\" />\nexport class DefaultConnectionProvider {\n #driver;\n constructor(driver) {\n this.#driver = driver;\n }\n async provideConnection(consumer) {\n const connection = await this.#driver.acquireConnection();\n try {\n return await consumer(connection);\n }\n finally {\n await this.#driver.releaseConnection(connection);\n }\n }\n}\n","/// <reference types=\"./default-query-executor.d.ts\" />\nimport { QueryExecutorBase } from './query-executor-base.js';\nexport class DefaultQueryExecutor extends QueryExecutorBase {\n #compiler;\n #adapter;\n #connectionProvider;\n constructor(compiler, adapter, connectionProvider, plugins = []) {\n super(plugins);\n this.#compiler = compiler;\n this.#adapter = adapter;\n this.#connectionProvider = connectionProvider;\n }\n get adapter() {\n return this.#adapter;\n }\n compileQuery(node, queryId) {\n return this.#compiler.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#connectionProvider.provideConnection(consumer);\n }\n withPlugins(plugins) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, ...plugins]);\n }\n withPlugin(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [...this.plugins, plugin]);\n }\n withPluginAtFront(plugin) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, [plugin, ...this.plugins]);\n }\n withConnectionProvider(connectionProvider) {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, connectionProvider, [...this.plugins]);\n }\n withoutPlugins() {\n return new DefaultQueryExecutor(this.#compiler, this.#adapter, this.#connectionProvider, []);\n }\n}\n","/// <reference types=\"./performance-now.d.ts\" />\nimport { isFunction } from './object-utils.js';\nexport function performanceNow() {\n if (typeof performance !== 'undefined' && isFunction(performance.now)) {\n return performance.now();\n }\n else {\n return Date.now();\n }\n}\n","/// <reference types=\"./runtime-driver.d.ts\" />\nimport { performanceNow } from '../util/performance-now.js';\n/**\n * A small wrapper around {@link Driver} that makes sure the driver is\n * initialized before it is used, only initialized and destroyed\n * once etc.\n */\nexport class RuntimeDriver {\n #driver;\n #log;\n #initPromise;\n #initDone;\n #destroyPromise;\n #connections = new WeakSet();\n constructor(driver, log) {\n this.#initDone = false;\n this.#driver = driver;\n this.#log = log;\n }\n async init() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initPromise) {\n this.#initPromise = this.#driver\n .init()\n .then(() => {\n this.#initDone = true;\n })\n .catch((err) => {\n this.#initPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#initPromise;\n }\n async acquireConnection() {\n if (this.#destroyPromise) {\n throw new Error('driver has already been destroyed');\n }\n if (!this.#initDone) {\n await this.init();\n }\n const connection = await this.#driver.acquireConnection();\n if (!this.#connections.has(connection)) {\n if (this.#needsLogging()) {\n this.#addLogging(connection);\n }\n this.#connections.add(connection);\n }\n return connection;\n }\n async releaseConnection(connection) {\n await this.#driver.releaseConnection(connection);\n }\n beginTransaction(connection, settings) {\n return this.#driver.beginTransaction(connection, settings);\n }\n commitTransaction(connection) {\n return this.#driver.commitTransaction(connection);\n }\n rollbackTransaction(connection) {\n return this.#driver.rollbackTransaction(connection);\n }\n savepoint(connection, savepointName, compileQuery) {\n if (this.#driver.savepoint) {\n return this.#driver.savepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `savepoint` method is not supported by this driver');\n }\n rollbackToSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.rollbackToSavepoint) {\n return this.#driver.rollbackToSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `rollbackToSavepoint` method is not supported by this driver');\n }\n releaseSavepoint(connection, savepointName, compileQuery) {\n if (this.#driver.releaseSavepoint) {\n return this.#driver.releaseSavepoint(connection, savepointName, compileQuery);\n }\n throw new Error('The `releaseSavepoint` method is not supported by this driver');\n }\n async destroy() {\n if (!this.#initPromise) {\n return;\n }\n await this.#initPromise;\n if (!this.#destroyPromise) {\n this.#destroyPromise = this.#driver.destroy().catch((err) => {\n this.#destroyPromise = undefined;\n return Promise.reject(err);\n });\n }\n await this.#destroyPromise;\n }\n #needsLogging() {\n return (this.#log.isLevelEnabled('query') || this.#log.isLevelEnabled('error'));\n }\n // This method monkey patches the database connection's executeQuery method\n // by adding logging code around it. Monkey patching is not pretty, but it's\n // the best option in this case.\n #addLogging(connection) {\n const executeQuery = connection.executeQuery;\n const streamQuery = connection.streamQuery;\n const dis = this;\n connection.executeQuery = async (compiledQuery) => {\n let caughtError;\n const startTime = performanceNow();\n try {\n return await executeQuery.call(connection, compiledQuery);\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime);\n }\n }\n };\n connection.streamQuery = async function* (compiledQuery, chunkSize) {\n let caughtError;\n const startTime = performanceNow();\n try {\n for await (const result of streamQuery.call(connection, compiledQuery, chunkSize)) {\n yield result;\n }\n }\n catch (error) {\n caughtError = error;\n await dis.#logError(error, compiledQuery, startTime);\n throw error;\n }\n finally {\n if (!caughtError) {\n await dis.#logQuery(compiledQuery, startTime, true);\n }\n }\n };\n }\n async #logError(error, compiledQuery, startTime) {\n await this.#log.error(() => ({\n level: 'error',\n error,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n async #logQuery(compiledQuery, startTime, isStream = false) {\n await this.#log.query(() => ({\n level: 'query',\n isStream,\n query: compiledQuery,\n queryDurationMillis: this.#calculateDurationMillis(startTime),\n }));\n }\n #calculateDurationMillis(startTime) {\n return performanceNow() - startTime;\n }\n}\n","/// <reference types=\"./single-connection-provider.d.ts\" />\nconst ignoreError = () => { };\nexport class SingleConnectionProvider {\n #connection;\n #runningPromise;\n constructor(connection) {\n this.#connection = connection;\n }\n async provideConnection(consumer) {\n while (this.#runningPromise) {\n await this.#runningPromise.catch(ignoreError);\n }\n // `#runningPromise` must be set to undefined before it's\n // resolved or rejected. Otherwise the while loop above\n // will misbehave.\n this.#runningPromise = this.#run(consumer).finally(() => {\n this.#runningPromise = undefined;\n });\n return this.#runningPromise;\n }\n // Run the runner in an async function to make sure it doesn't\n // throw synchronous errors.\n async #run(runner) {\n return await runner(this.#connection);\n }\n}\n","/// <reference types=\"./driver.d.ts\" />\nexport const TRANSACTION_ACCESS_MODES = ['read only', 'read write'];\nexport const TRANSACTION_ISOLATION_LEVELS = [\n 'read uncommitted',\n 'read committed',\n 'repeatable read',\n 'serializable',\n 'snapshot',\n];\nexport function validateTransactionSettings(settings) {\n if (settings.accessMode &&\n !TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {\n throw new Error(`invalid transaction access mode ${settings.accessMode}`);\n }\n if (settings.isolationLevel &&\n !TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {\n throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);\n }\n}\n","/// <reference types=\"./log.d.ts\" />\nimport { freeze, isFunction } from './object-utils.js';\nconst logLevels = ['query', 'error'];\nexport const LOG_LEVELS = freeze(logLevels);\nexport class Log {\n #levels;\n #logger;\n constructor(config) {\n if (isFunction(config)) {\n this.#logger = config;\n this.#levels = freeze({\n query: true,\n error: true,\n });\n }\n else {\n this.#logger = defaultLogger;\n this.#levels = freeze({\n query: config.includes('query'),\n error: config.includes('error'),\n });\n }\n }\n isLevelEnabled(level) {\n return this.#levels[level];\n }\n async query(getEvent) {\n if (this.#levels.query) {\n await this.#logger(getEvent());\n }\n }\n async error(getEvent) {\n if (this.#levels.error) {\n await this.#logger(getEvent());\n }\n }\n}\nfunction defaultLogger(event) {\n if (event.level === 'query') {\n const prefix = `kysely:query:${event.isStream ? 'stream:' : ''}`;\n console.log(`${prefix} ${event.query.sql}`);\n console.log(`${prefix} duration: ${event.queryDurationMillis.toFixed(1)}ms`);\n }\n else if (event.level === 'error') {\n if (event.error instanceof Error) {\n console.error(`kysely:error: ${event.error.stack ?? event.error.message}`);\n }\n else {\n console.error(`kysely:error: ${JSON.stringify({\n error: event.error,\n query: event.query.sql,\n queryDurationMillis: event.queryDurationMillis,\n })}`);\n }\n }\n}\n","/// <reference types=\"./compilable.d.ts\" />\nimport { isFunction, isObject } from './object-utils.js';\nexport function isCompilable(value) {\n return isObject(value) && isFunction(value.compile);\n}\n","/// <reference types=\"./kysely.d.ts\" />\nimport { SchemaModule } from './schema/schema.js';\nimport { DynamicModule } from './dynamic/dynamic.js';\nimport { DefaultConnectionProvider } from './driver/default-connection-provider.js';\nimport { QueryCreator } from './query-creator.js';\nimport { DefaultQueryExecutor } from './query-executor/default-query-executor.js';\nimport { freeze, isObject, isUndefined } from './util/object-utils.js';\nimport { RuntimeDriver } from './driver/runtime-driver.js';\nimport { SingleConnectionProvider } from './driver/single-connection-provider.js';\nimport { validateTransactionSettings, } from './driver/driver.js';\nimport { createFunctionModule, } from './query-builder/function-module.js';\nimport { Log } from './util/log.js';\nimport { createQueryId } from './util/query-id.js';\nimport { isCompilable } from './util/compilable.js';\nimport { CaseBuilder } from './query-builder/case-builder.js';\nimport { CaseNode } from './operation-node/case-node.js';\nimport { parseExpression } from './parser/expression-parser.js';\nimport { WithSchemaPlugin } from './plugin/with-schema/with-schema-plugin.js';\nimport { provideControlledConnection, } from './util/provide-controlled-connection.js';\nimport { logOnce } from './util/log-once.js';\n// @ts-ignore\nSymbol.asyncDispose ??= Symbol('Symbol.asyncDispose');\n/**\n * The main Kysely class.\n *\n * You should create one instance of `Kysely` per database using the {@link Kysely}\n * constructor. Each `Kysely` instance maintains its own connection pool.\n *\n * ### Examples\n *\n * This example assumes your database has a \"person\" table:\n *\n * ```ts\n * import * as Sqlite from 'better-sqlite3'\n * import { type Generated, Kysely, SqliteDialect } from 'kysely'\n *\n * interface Database {\n * person: {\n * id: Generated<number>\n * first_name: string\n * last_name: string | null\n * }\n * }\n *\n * const db = new Kysely<Database>({\n * dialect: new SqliteDialect({\n * database: new Sqlite(':memory:'),\n * })\n * })\n * ```\n *\n * @typeParam DB - The database interface type. Keys of this type must be table names\n * in the database and values must be interfaces that describe the rows in those\n * tables. See the examples above.\n */\nexport class Kysely extends QueryCreator {\n #props;\n constructor(args) {\n let superProps;\n let props;\n if (isKyselyProps(args)) {\n superProps = { executor: args.executor };\n props = { ...args };\n }\n else {\n const dialect = args.dialect;\n const driver = dialect.createDriver();\n const compiler = dialect.createQueryCompiler();\n const adapter = dialect.createAdapter();\n const log = new Log(args.log ?? []);\n const runtimeDriver = new RuntimeDriver(driver, log);\n const connectionProvider = new DefaultConnectionProvider(runtimeDriver);\n const executor = new DefaultQueryExecutor(compiler, adapter, connectionProvider, args.plugins ?? []);\n superProps = { executor };\n props = {\n config: args,\n executor,\n dialect,\n driver: runtimeDriver,\n };\n }\n super(superProps);\n this.#props = freeze(props);\n }\n /**\n * Returns the {@link SchemaModule} module for building database schema.\n */\n get schema() {\n return new SchemaModule(this.#props.executor);\n }\n /**\n * Returns a the {@link DynamicModule} module.\n *\n * The {@link DynamicModule} module can be used to bypass strict typing and\n * passing in dynamic values for the queries.\n */\n get dynamic() {\n return new DynamicModule();\n }\n /**\n * Returns a {@link DatabaseIntrospector | database introspector}.\n */\n get introspection() {\n return this.#props.dialect.createIntrospector(this.withoutPlugins());\n }\n case(value) {\n return new CaseBuilder({\n node: CaseNode.create(isUndefined(value) ? undefined : parseExpression(value)),\n });\n }\n /**\n * Returns a {@link FunctionModule} that can be used to write somewhat type-safe function\n * calls.\n *\n * ```ts\n * const { count } = db.fn\n *\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select([\n * 'id',\n * count('pet.id').as('person_count'),\n * ])\n * .groupBy('person.id')\n * .having(count('pet.id'), '>', 10)\n * .execute()\n * ```\n *\n * The generated SQL (PostgreSQL):\n *\n * ```sql\n * select \"person\".\"id\", count(\"pet\".\"id\") as \"person_count\"\n * from \"person\"\n * inner join \"pet\" on \"pet\".\"owner_id\" = \"person\".\"id\"\n * group by \"person\".\"id\"\n * having count(\"pet\".\"id\") > $1\n * ```\n *\n * Why \"somewhat\" type-safe? Because the function calls are not bound to the\n * current query context. They allow you to reference columns and tables that\n * are not in the current query. E.g. remove the `innerJoin` from the previous\n * query and TypeScript won't even complain.\n *\n * If you want to make the function calls fully type-safe, you can use the\n * {@link ExpressionBuilder.fn} getter for a query context-aware, stricter {@link FunctionModule}.\n *\n * ```ts\n * await db.selectFrom('person')\n * .innerJoin('pet', 'pet.owner_id', 'person.id')\n * .select((eb) => [\n * 'person.id',\n * eb.fn.count('pet.id').as('pet_count')\n * ])\n * .groupBy('person.id')\n * .having((eb) => eb.fn.count('pet.id'), '>', 10)\n * .execute()\n * ```\n */\n get fn() {\n return createFunctionModule();\n }\n /**\n * Creates a {@link TransactionBuilder} that can be used to run queries inside a transaction.\n *\n * The returned {@link TransactionBuilder} can be used to configure the transaction. The\n * {@link TransactionBuilder.execute} method can then be called to run the transaction.\n * {@link TransactionBuilder.execute} takes a function that is run inside the\n * transaction. If the function throws an exception,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * The callback function passed to the {@link TransactionBuilder.execute | execute}\n * method gets the transaction object as its only argument. The transaction is\n * of type {@link Transaction} which inherits {@link Kysely}. Any query\n * started through the transaction object is executed inside the transaction.\n *\n * To run a controlled transaction, allowing you to commit and rollback manually,\n * use {@link startTransaction} instead.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Simple transaction\", 10) -->\n *\n * This example inserts two rows in a transaction. If an exception is thrown inside\n * the callback passed to the `execute` method,\n * 1. the exception is caught,\n * 2. the transaction is rolled back, and\n * 3. the exception is thrown again.\n * Otherwise the transaction is committed.\n *\n * ```ts\n * const catto = await db.transaction().execute(async (trx) => {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * return await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirst()\n * })\n * ```\n *\n * Setting the isolation level:\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n *\n * await db\n * .transaction()\n * .setIsolationLevel('serializable')\n * .execute(async (trx) => {\n * await doStuff(trx)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n transaction() {\n return new TransactionBuilder({ ...this.#props });\n }\n /**\n * Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.\n *\n * The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.\n * The {@link ControlledTransactionBuilder.execute} method can then be called\n * to start the transaction and return a {@link ControlledTransaction}.\n *\n * A {@link ControlledTransaction} allows you to commit and rollback manually,\n * execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},\n * so you can run queries inside the transaction. Once the transaction is committed,\n * or rolled back, it can't be used anymore - all queries will throw an error.\n * This is to prevent accidentally running queries outside the transaction - where\n * atomicity is not guaranteed anymore.\n *\n * ### Examples\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction\", 11) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, use it to insert two rows and then commit\n * the transaction. If an error is thrown, we catch it and rollback the transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx.insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const catto = await trx.insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * is_favorite: false,\n * })\n * .returningAll()\n * .executeTakeFirstOrThrow()\n *\n * await trx.commit().execute()\n *\n * // ...\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n *\n * <!-- siteExample(\"transactions\", \"Controlled transaction /w savepoints\", 12) -->\n *\n * A controlled transaction allows you to commit and rollback manually, execute\n * savepoint commands, and queries in general.\n *\n * In this example we start a transaction, insert a person, create a savepoint,\n * try inserting a toy and a pet, and if an error is thrown, we rollback to the\n * savepoint. Eventually we release the savepoint, insert an audit record and\n * commit the transaction. If an error is thrown, we catch it and rollback the\n * transaction.\n *\n * ```ts\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * const jennifer = await trx\n * .insertInto('person')\n * .values({\n * first_name: 'Jennifer',\n * last_name: 'Aniston',\n * age: 40,\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * const catto = await trxAfterJennifer\n * .insertInto('pet')\n * .values({\n * owner_id: jennifer.id,\n * name: 'Catto',\n * species: 'cat',\n * })\n * .returning('id')\n * .executeTakeFirstOrThrow()\n *\n * await trxAfterJennifer\n * .insertInto('toy')\n * .values({ name: 'Bone', price: 1.99, pet_id: catto.id })\n * .execute()\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n * ```\n */\n startTransaction() {\n return new ControlledTransactionBuilder({ ...this.#props });\n }\n /**\n * Provides a kysely instance bound to a single database connection.\n *\n * ### Examples\n *\n * ```ts\n * await db\n * .connection()\n * .execute(async (db) => {\n * // `db` is an instance of `Kysely` that's bound to a single\n * // database connection. All queries executed through `db` use\n * // the same connection.\n * await doStuff(db)\n * })\n *\n * async function doStuff(kysely: typeof db) {\n * // ...\n * }\n * ```\n */\n connection() {\n return new ConnectionBuilder({ ...this.#props });\n }\n /**\n * Returns a copy of this Kysely instance with the given plugin installed.\n */\n withPlugin(plugin) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n /**\n * Returns a copy of this Kysely instance without any plugins.\n */\n withoutPlugins() {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n /**\n * @override\n */\n withSchema(schema) {\n return new Kysely({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n /**\n * Returns a copy of this Kysely instance with tables added to its\n * database type.\n *\n * This method only modifies the types and doesn't affect any of the\n * executed queries in any way.\n *\n * ### Examples\n *\n * The following example adds and uses a temporary table:\n *\n * ```ts\n * await db.schema\n * .createTable('temp_table')\n * .temporary()\n * .addColumn('some_column', 'integer')\n * .execute()\n *\n * const tempDb = db.withTables<{\n * temp_table: {\n * some_column: number\n * }\n * }>()\n *\n * await tempDb\n * .insertInto('temp_table')\n * .values({ some_column: 100 })\n * .execute()\n * ```\n */\n withTables() {\n return new Kysely({ ...this.#props });\n }\n /**\n * Releases all resources and disconnects from the database.\n *\n * You need to call this when you are done using the `Kysely` instance.\n */\n async destroy() {\n await this.#props.driver.destroy();\n }\n /**\n * Returns true if this `Kysely` instance is a transaction.\n *\n * You can also use `db instanceof Transaction`.\n */\n get isTransaction() {\n return false;\n }\n /**\n * @internal\n * @private\n */\n getExecutor() {\n return this.#props.executor;\n }\n /**\n * Executes a given compiled query or query builder.\n *\n * See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.\n */\n executeQuery(query, \n // TODO: remove this in the future. deprecated in 0.28.x\n queryId) {\n if (queryId !== undefined) {\n logOnce('Passing `queryId` in `db.executeQuery` is deprecated and will result in a compile-time error in the future.');\n }\n const compiledQuery = isCompilable(query) ? query.compile() : query;\n return this.getExecutor().executeQuery(compiledQuery);\n }\n async [Symbol.asyncDispose]() {\n await this.destroy();\n }\n}\nexport class Transaction extends Kysely {\n #props;\n constructor(props) {\n super(props);\n this.#props = props;\n }\n // The return type is `true` instead of `boolean` to make Kysely<DB>\n // unassignable to Transaction<DB> while allowing assignment the\n // other way around.\n get isTransaction() {\n return true;\n }\n transaction() {\n throw new Error('calling the transaction method for a Transaction is not supported');\n }\n connection() {\n throw new Error('calling the connection method for a Transaction is not supported');\n }\n async destroy() {\n throw new Error('calling the destroy method for a Transaction is not supported');\n }\n withPlugin(plugin) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new Transaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new Transaction({ ...this.#props });\n }\n}\nexport function isKyselyProps(obj) {\n return (isObject(obj) &&\n isObject(obj.config) &&\n isObject(obj.driver) &&\n isObject(obj.executor) &&\n isObject(obj.dialect));\n}\nexport class ConnectionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n async execute(callback) {\n return this.#props.executor.provideConnection(async (connection) => {\n const executor = this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection));\n const db = new Kysely({\n ...this.#props,\n executor,\n });\n return await callback(db);\n });\n }\n}\nexport class TransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new TransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new TransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute(callback) {\n const { isolationLevel, accessMode, ...kyselyProps } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n return this.#props.executor.provideConnection(async (connection) => {\n const state = { isCommitted: false, isRolledBack: false };\n const executor = new NotCommittedOrRolledBackAssertingExecutor(this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection)), state);\n const transaction = new Transaction({\n ...kyselyProps,\n executor,\n });\n let transactionBegun = false;\n try {\n await this.#props.driver.beginTransaction(connection, settings);\n transactionBegun = true;\n const result = await callback(transaction);\n await this.#props.driver.commitTransaction(connection);\n state.isCommitted = true;\n return result;\n }\n catch (error) {\n if (transactionBegun) {\n await this.#props.driver.rollbackTransaction(connection);\n state.isRolledBack = true;\n }\n throw error;\n }\n });\n }\n}\nexport class ControlledTransactionBuilder {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n setAccessMode(accessMode) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n accessMode,\n });\n }\n setIsolationLevel(isolationLevel) {\n return new ControlledTransactionBuilder({\n ...this.#props,\n isolationLevel,\n });\n }\n async execute() {\n const { isolationLevel, accessMode, ...props } = this.#props;\n const settings = { isolationLevel, accessMode };\n validateTransactionSettings(settings);\n const connection = await provideControlledConnection(this.#props.executor);\n await this.#props.driver.beginTransaction(connection.connection, settings);\n return new ControlledTransaction({\n ...props,\n connection,\n executor: this.#props.executor.withConnectionProvider(new SingleConnectionProvider(connection.connection)),\n });\n }\n}\nexport class ControlledTransaction extends Transaction {\n #props;\n #compileQuery;\n #state;\n constructor(props) {\n const state = { isCommitted: false, isRolledBack: false };\n props = {\n ...props,\n executor: new NotCommittedOrRolledBackAssertingExecutor(props.executor, state),\n };\n const { connection, ...transactionProps } = props;\n super(transactionProps);\n this.#props = freeze(props);\n this.#state = state;\n const queryId = createQueryId();\n this.#compileQuery = (node) => props.executor.compileQuery(node, queryId);\n }\n get isCommitted() {\n return this.#state.isCommitted;\n }\n get isRolledBack() {\n return this.#state.isRolledBack;\n }\n /**\n * Commits the transaction.\n *\n * See {@link rollback}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n commit() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.commitTransaction(this.#props.connection.connection);\n this.#state.isCommitted = true;\n this.#props.connection.release();\n });\n }\n /**\n * Rolls back the transaction.\n *\n * See {@link commit} and {@link rollbackToSavepoint}.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * try {\n * await doSomething(trx)\n *\n * await trx.commit().execute()\n * } catch (error) {\n * await trx.rollback().execute()\n * }\n *\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollback() {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackTransaction(this.#props.connection.connection);\n this.#state.isRolledBack = true;\n this.#props.connection.release();\n });\n }\n /**\n * Creates a savepoint with a given name.\n *\n * See {@link rollbackToSavepoint} and {@link releaseSavepoint}.\n *\n * For a type-safe experience, you should use the returned instance from now on.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n savepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.savepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Rolls back to a savepoint with a given name.\n *\n * See {@link savepoint} and {@link releaseSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * ```\n */\n rollbackToSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.rollbackToSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n /**\n * Releases a savepoint with a given name.\n *\n * See {@link savepoint} and {@link rollbackToSavepoint}.\n *\n * You must use the same instance returned by {@link savepoint}, or\n * escape the type-check by using `as any`.\n *\n * ### Examples\n *\n * ```ts\n * import type { Kysely } from 'kysely'\n * import type { Database } from 'type-editor' // imaginary module\n *\n * const trx = await db.startTransaction().execute()\n *\n * await insertJennifer(trx)\n *\n * const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()\n *\n * try {\n * await doSomething(trxAfterJennifer)\n * } catch (error) {\n * await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()\n * }\n *\n * await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()\n *\n * await doSomethingElse(trx)\n *\n * async function insertJennifer(kysely: Kysely<Database>) {}\n * async function doSomething(kysely: Kysely<Database>) {}\n * async function doSomethingElse(kysely: Kysely<Database>) {}\n * ```\n */\n releaseSavepoint(savepointName) {\n assertNotCommittedOrRolledBack(this.#state);\n return new Command(async () => {\n await this.#props.driver.releaseSavepoint?.(this.#props.connection.connection, savepointName, this.#compileQuery);\n return new ControlledTransaction({ ...this.#props });\n });\n }\n withPlugin(plugin) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPlugin(plugin),\n });\n }\n withoutPlugins() {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withoutPlugins(),\n });\n }\n withSchema(schema) {\n return new ControlledTransaction({\n ...this.#props,\n executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),\n });\n }\n withTables() {\n return new ControlledTransaction({ ...this.#props });\n }\n}\nexport class Command {\n #cb;\n constructor(cb) {\n this.#cb = cb;\n }\n /**\n * Executes the command.\n */\n async execute() {\n return await this.#cb();\n }\n}\nfunction assertNotCommittedOrRolledBack(state) {\n if (state.isCommitted) {\n throw new Error('Transaction is already committed');\n }\n if (state.isRolledBack) {\n throw new Error('Transaction is already rolled back');\n }\n}\n/**\n * An executor wrapper that asserts that the transaction state is not committed\n * or rolled back when a query is executed.\n *\n * @internal\n */\nclass NotCommittedOrRolledBackAssertingExecutor {\n #executor;\n #state;\n constructor(executor, state) {\n if (executor instanceof NotCommittedOrRolledBackAssertingExecutor) {\n this.#executor = executor.#executor;\n }\n else {\n this.#executor = executor;\n }\n this.#state = state;\n }\n get adapter() {\n return this.#executor.adapter;\n }\n get plugins() {\n return this.#executor.plugins;\n }\n transformQuery(node, queryId) {\n return this.#executor.transformQuery(node, queryId);\n }\n compileQuery(node, queryId) {\n return this.#executor.compileQuery(node, queryId);\n }\n provideConnection(consumer) {\n return this.#executor.provideConnection(consumer);\n }\n executeQuery(compiledQuery) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.executeQuery(compiledQuery);\n }\n stream(compiledQuery, chunkSize) {\n assertNotCommittedOrRolledBack(this.#state);\n return this.#executor.stream(compiledQuery, chunkSize);\n }\n withConnectionProvider(connectionProvider) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withConnectionProvider(connectionProvider), this.#state);\n }\n withPlugin(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugin(plugin), this.#state);\n }\n withPlugins(plugins) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPlugins(plugins), this.#state);\n }\n withPluginAtFront(plugin) {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withPluginAtFront(plugin), this.#state);\n }\n withoutPlugins() {\n return new NotCommittedOrRolledBackAssertingExecutor(this.#executor.withoutPlugins(), this.#state);\n }\n}\n","/// <reference types=\"./raw-builder.d.ts\" />\nimport { AliasNode } from '../operation-node/alias-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nclass RawBuilderImpl {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n get expressionType() {\n return undefined;\n }\n get isRawBuilder() {\n return true;\n }\n as(alias) {\n return new AliasedRawBuilderImpl(this, alias);\n }\n $castTo() {\n return new RawBuilderImpl({ ...this.#props });\n }\n $notNull() {\n return new RawBuilderImpl(this.#props);\n }\n withPlugin(plugin) {\n return new RawBuilderImpl({\n ...this.#props,\n plugins: this.#props.plugins !== undefined\n ? freeze([...this.#props.plugins, plugin])\n : freeze([plugin]),\n });\n }\n toOperationNode() {\n return this.#toOperationNode(this.#getExecutor());\n }\n compile(executorProvider) {\n return this.#compile(this.#getExecutor(executorProvider));\n }\n async execute(executorProvider) {\n const executor = this.#getExecutor(executorProvider);\n return executor.executeQuery(this.#compile(executor));\n }\n #getExecutor(executorProvider) {\n const executor = executorProvider !== undefined\n ? executorProvider.getExecutor()\n : NOOP_QUERY_EXECUTOR;\n return this.#props.plugins !== undefined\n ? executor.withPlugins(this.#props.plugins)\n : executor;\n }\n #toOperationNode(executor) {\n return executor.transformQuery(this.#props.rawNode, this.#props.queryId);\n }\n #compile(executor) {\n return executor.compileQuery(this.#toOperationNode(executor), this.#props.queryId);\n }\n}\nexport function createRawBuilder(props) {\n return new RawBuilderImpl(props);\n}\nclass AliasedRawBuilderImpl {\n #rawBuilder;\n #alias;\n constructor(rawBuilder, alias) {\n this.#rawBuilder = rawBuilder;\n this.#alias = alias;\n }\n get expression() {\n return this.#rawBuilder;\n }\n get alias() {\n return this.#alias;\n }\n get rawBuilder() {\n return this.#rawBuilder;\n }\n toOperationNode() {\n return AliasNode.create(this.#rawBuilder.toOperationNode(), isOperationNodeSource(this.#alias)\n ? this.#alias.toOperationNode()\n : IdentifierNode.create(this.#alias));\n }\n}\n","/// <reference types=\"./sql.d.ts\" />\nimport { IdentifierNode } from '../operation-node/identifier-node.js';\nimport { isOperationNodeSource } from '../operation-node/operation-node-source.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { ValueNode } from '../operation-node/value-node.js';\nimport { parseStringReference } from '../parser/reference-parser.js';\nimport { parseTable } from '../parser/table-parser.js';\nimport { parseValueExpression } from '../parser/value-parser.js';\nimport { createQueryId } from '../util/query-id.js';\nimport { createRawBuilder } from './raw-builder.js';\nexport const sql = Object.assign((sqlFragments, ...parameters) => {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(sqlFragments, parameters?.map(parseParameter) ?? []),\n });\n}, {\n ref(columnReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseStringReference(columnReference)),\n });\n },\n val(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseValueExpression(value)),\n });\n },\n value(value) {\n return this.val(value);\n },\n table(tableReference) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(parseTable(tableReference)),\n });\n },\n id(...ids) {\n const fragments = new Array(ids.length + 1).fill('.');\n fragments[0] = '';\n fragments[fragments.length - 1] = '';\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.create(fragments, ids.map(IdentifierNode.create)),\n });\n },\n lit(value) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChild(ValueNode.createImmediate(value)),\n });\n },\n literal(value) {\n return this.lit(value);\n },\n raw(sql) {\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithSql(sql),\n });\n },\n join(array, separator = sql `, `) {\n const nodes = new Array(Math.max(2 * array.length - 1, 0));\n const sep = separator.toOperationNode();\n for (let i = 0; i < array.length; ++i) {\n nodes[2 * i] = parseParameter(array[i]);\n if (i !== array.length - 1) {\n nodes[2 * i + 1] = sep;\n }\n }\n return createRawBuilder({\n queryId: createQueryId(),\n rawNode: RawNode.createWithChildren(nodes),\n });\n },\n});\nfunction parseParameter(param) {\n if (isOperationNodeSource(param)) {\n return param.toOperationNode();\n }\n return parseValueExpression(param);\n}\n","/// <reference types=\"./default-query-compiler.d.ts\" />\nimport { CreateTableNode } from '../operation-node/create-table-node.js';\nimport { InsertQueryNode } from '../operation-node/insert-query-node.js';\nimport { OperationNodeVisitor } from '../operation-node/operation-node-visitor.js';\nimport { OperatorNode } from '../operation-node/operator-node.js';\nimport { ParensNode } from '../operation-node/parens-node.js';\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from '../util/object-utils.js';\nimport { CreateViewNode } from '../operation-node/create-view-node.js';\nimport { SetOperationNode } from '../operation-node/set-operation-node.js';\nimport { WhenNode } from '../operation-node/when-node.js';\nimport { logOnce } from '../util/log-once.js';\nconst LIT_WRAP_REGEX = /'/g;\nexport class DefaultQueryCompiler extends OperationNodeVisitor {\n #sql = '';\n #parameters = [];\n get numParameters() {\n return this.#parameters.length;\n }\n compileQuery(node, queryId) {\n this.#sql = '';\n this.#parameters = [];\n this.nodeStack.splice(0, this.nodeStack.length);\n this.visitNode(node);\n return freeze({\n query: node,\n queryId,\n sql: this.getSql(),\n parameters: [...this.#parameters],\n });\n }\n getSql() {\n return this.#sql;\n }\n visitSelectQuery(node) {\n const wrapInParens = this.parentNode !== undefined &&\n !ParensNode.is(this.parentNode) &&\n !InsertQueryNode.is(this.parentNode) &&\n !CreateTableNode.is(this.parentNode) &&\n !CreateViewNode.is(this.parentNode) &&\n !SetOperationNode.is(this.parentNode);\n if (this.parentNode === undefined && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (wrapInParens) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('select');\n if (node.distinctOn) {\n this.append(' ');\n this.compileDistinctOn(node.distinctOn);\n }\n if (node.frontModifiers?.length) {\n this.append(' ');\n this.compileList(node.frontModifiers, ' ');\n }\n if (node.top) {\n this.append(' ');\n this.visitNode(node.top);\n }\n if (node.selections) {\n this.append(' ');\n this.compileList(node.selections);\n }\n if (node.from) {\n this.append(' ');\n this.visitNode(node.from);\n }\n if (node.joins) {\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.groupBy) {\n this.append(' ');\n this.visitNode(node.groupBy);\n }\n if (node.having) {\n this.append(' ');\n this.visitNode(node.having);\n }\n if (node.setOperations) {\n this.append(' ');\n this.compileList(node.setOperations, ' ');\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (node.offset) {\n this.append(' ');\n this.visitNode(node.offset);\n }\n if (node.fetch) {\n this.append(' ');\n this.visitNode(node.fetch);\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(this.sortSelectModifiers([...node.endModifiers]), ' ');\n }\n if (wrapInParens) {\n this.append(')');\n }\n }\n visitFrom(node) {\n this.append('from ');\n this.compileList(node.froms);\n }\n visitSelection(node) {\n this.visitNode(node.selection);\n }\n visitColumn(node) {\n this.visitNode(node.column);\n }\n compileDistinctOn(expressions) {\n this.append('distinct on (');\n this.compileList(expressions);\n this.append(')');\n }\n compileList(nodes, separator = ', ') {\n const lastIndex = nodes.length - 1;\n for (let i = 0; i <= lastIndex; i++) {\n this.visitNode(nodes[i]);\n if (i < lastIndex) {\n this.append(separator);\n }\n }\n }\n visitWhere(node) {\n this.append('where ');\n this.visitNode(node.where);\n }\n visitHaving(node) {\n this.append('having ');\n this.visitNode(node.having);\n }\n visitInsertQuery(node) {\n const wrapInParens = this.parentNode !== undefined &&\n !ParensNode.is(this.parentNode) &&\n !RawNode.is(this.parentNode) &&\n !WhenNode.is(this.parentNode);\n if (this.parentNode === undefined && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (wrapInParens) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append(node.replace ? 'replace' : 'insert');\n // TODO: remove in 0.29.\n if (node.ignore) {\n logOnce('`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead.');\n this.append(' ignore');\n }\n if (node.orAction) {\n this.append(' ');\n this.visitNode(node.orAction);\n }\n if (node.top) {\n this.append(' ');\n this.visitNode(node.top);\n }\n if (node.into) {\n this.append(' into ');\n this.visitNode(node.into);\n }\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.values) {\n this.append(' ');\n this.visitNode(node.values);\n }\n if (node.defaultValues) {\n this.append(' ');\n this.append('default values');\n }\n if (node.onConflict) {\n this.append(' ');\n this.visitNode(node.onConflict);\n }\n if (node.onDuplicateKey) {\n this.append(' ');\n this.visitNode(node.onDuplicateKey);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (wrapInParens) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitValues(node) {\n this.append('values ');\n this.compileList(node.values);\n }\n visitDeleteQuery(node) {\n const wrapInParens = this.parentNode !== undefined &&\n !ParensNode.is(this.parentNode) &&\n !RawNode.is(this.parentNode);\n if (this.parentNode === undefined && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (wrapInParens) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('delete ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n this.visitNode(node.from);\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.using) {\n this.append(' ');\n this.visitNode(node.using);\n }\n if (node.joins) {\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (wrapInParens) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitReturning(node) {\n this.append('returning ');\n this.compileList(node.selections);\n }\n visitAlias(node) {\n this.visitNode(node.node);\n this.append(' as ');\n this.visitNode(node.alias);\n }\n visitReference(node) {\n if (node.table) {\n this.visitNode(node.table);\n this.append('.');\n }\n this.visitNode(node.column);\n }\n visitSelectAll(_) {\n this.append('*');\n }\n visitIdentifier(node) {\n this.append(this.getLeftIdentifierWrapper());\n this.compileUnwrappedIdentifier(node);\n this.append(this.getRightIdentifierWrapper());\n }\n compileUnwrappedIdentifier(node) {\n if (!isString(node.name)) {\n throw new Error('a non-string identifier was passed to compileUnwrappedIdentifier.');\n }\n this.append(this.sanitizeIdentifier(node.name));\n }\n visitAnd(node) {\n this.visitNode(node.left);\n this.append(' and ');\n this.visitNode(node.right);\n }\n visitOr(node) {\n this.visitNode(node.left);\n this.append(' or ');\n this.visitNode(node.right);\n }\n visitValue(node) {\n if (node.immediate) {\n this.appendImmediateValue(node.value);\n }\n else {\n this.appendValue(node.value);\n }\n }\n visitValueList(node) {\n this.append('(');\n this.compileList(node.values);\n this.append(')');\n }\n visitTuple(node) {\n this.append('(');\n this.compileList(node.values);\n this.append(')');\n }\n visitPrimitiveValueList(node) {\n this.append('(');\n const { values } = node;\n for (let i = 0; i < values.length; ++i) {\n this.appendValue(values[i]);\n if (i !== values.length - 1) {\n this.append(', ');\n }\n }\n this.append(')');\n }\n visitParens(node) {\n this.append('(');\n this.visitNode(node.node);\n this.append(')');\n }\n visitJoin(node) {\n this.append(JOIN_TYPE_SQL[node.joinType]);\n this.append(' ');\n this.visitNode(node.table);\n if (node.on) {\n this.append(' ');\n this.visitNode(node.on);\n }\n }\n visitOn(node) {\n this.append('on ');\n this.visitNode(node.on);\n }\n visitRaw(node) {\n const { sqlFragments, parameters: params } = node;\n for (let i = 0; i < sqlFragments.length; ++i) {\n this.append(sqlFragments[i]);\n if (params.length > i) {\n this.visitNode(params[i]);\n }\n }\n }\n visitOperator(node) {\n this.append(node.operator);\n }\n visitTable(node) {\n this.visitNode(node.table);\n }\n visitSchemableIdentifier(node) {\n if (node.schema) {\n this.visitNode(node.schema);\n this.append('.');\n }\n this.visitNode(node.identifier);\n }\n visitCreateTable(node) {\n this.append('create ');\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.compileList(node.frontModifiers, ' ');\n this.append(' ');\n }\n if (node.temporary) {\n this.append('temporary ');\n }\n this.append('table ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.table);\n if (node.selectQuery) {\n this.append(' as ');\n this.visitNode(node.selectQuery);\n }\n else {\n this.append(' (');\n this.compileList([...node.columns, ...(node.constraints ?? [])]);\n this.append(')');\n if (node.onCommit) {\n this.append(' on commit ');\n this.append(node.onCommit);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n }\n visitColumnDefinition(node) {\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.column);\n this.append(' ');\n this.visitNode(node.dataType);\n if (node.unsigned) {\n this.append(' unsigned');\n }\n if (node.frontModifiers && node.frontModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.frontModifiers, ' ');\n }\n if (node.generated) {\n this.append(' ');\n this.visitNode(node.generated);\n }\n if (node.identity) {\n this.append(' identity');\n }\n if (node.defaultTo) {\n this.append(' ');\n this.visitNode(node.defaultTo);\n }\n if (node.notNull) {\n this.append(' not null');\n }\n if (node.unique) {\n this.append(' unique');\n }\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n if (node.primaryKey) {\n this.append(' primary key');\n }\n if (node.autoIncrement) {\n this.append(' ');\n this.append(this.getAutoIncrement());\n }\n if (node.references) {\n this.append(' ');\n this.visitNode(node.references);\n }\n if (node.check) {\n this.append(' ');\n this.visitNode(node.check);\n }\n if (node.endModifiers && node.endModifiers.length > 0) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n getAutoIncrement() {\n return 'auto_increment';\n }\n visitReferences(node) {\n this.append('references ');\n this.visitNode(node.table);\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n if (node.onDelete) {\n this.append(' on delete ');\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(' on update ');\n this.append(node.onUpdate);\n }\n }\n visitDropTable(node) {\n this.append('drop table ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.table);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitDataType(node) {\n this.append(node.dataType);\n }\n visitOrderBy(node) {\n this.append('order by ');\n this.compileList(node.items);\n }\n visitOrderByItem(node) {\n this.visitNode(node.orderBy);\n if (node.collation) {\n this.append(' ');\n this.visitNode(node.collation);\n }\n if (node.direction) {\n this.append(' ');\n this.visitNode(node.direction);\n }\n if (node.nulls) {\n this.append(' nulls ');\n this.append(node.nulls);\n }\n }\n visitGroupBy(node) {\n this.append('group by ');\n this.compileList(node.items);\n }\n visitGroupByItem(node) {\n this.visitNode(node.groupBy);\n }\n visitUpdateQuery(node) {\n const wrapInParens = this.parentNode !== undefined &&\n !ParensNode.is(this.parentNode) &&\n !RawNode.is(this.parentNode) &&\n !WhenNode.is(this.parentNode);\n if (this.parentNode === undefined && node.explain) {\n this.visitNode(node.explain);\n this.append(' ');\n }\n if (wrapInParens) {\n this.append('(');\n }\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('update ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n if (node.table) {\n this.visitNode(node.table);\n this.append(' ');\n }\n this.append('set ');\n if (node.updates) {\n this.compileList(node.updates);\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.from) {\n this.append(' ');\n this.visitNode(node.from);\n }\n if (node.joins) {\n if (!node.from) {\n throw new Error(\"Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins\");\n }\n this.append(' ');\n this.compileList(node.joins, ' ');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n if (node.limit) {\n this.append(' ');\n this.visitNode(node.limit);\n }\n if (wrapInParens) {\n this.append(')');\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitColumnUpdate(node) {\n this.visitNode(node.column);\n this.append(' = ');\n this.visitNode(node.value);\n }\n visitLimit(node) {\n this.append('limit ');\n this.visitNode(node.limit);\n }\n visitOffset(node) {\n this.append('offset ');\n this.visitNode(node.offset);\n }\n visitOnConflict(node) {\n this.append('on conflict');\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n else if (node.constraint) {\n this.append(' on constraint ');\n this.visitNode(node.constraint);\n }\n else if (node.indexExpression) {\n this.append(' (');\n this.visitNode(node.indexExpression);\n this.append(')');\n }\n if (node.indexWhere) {\n this.append(' ');\n this.visitNode(node.indexWhere);\n }\n if (node.doNothing === true) {\n this.append(' do nothing');\n }\n else if (node.updates) {\n this.append(' do update set ');\n this.compileList(node.updates);\n if (node.updateWhere) {\n this.append(' ');\n this.visitNode(node.updateWhere);\n }\n }\n }\n visitOnDuplicateKey(node) {\n this.append('on duplicate key update ');\n this.compileList(node.updates);\n }\n visitCreateIndex(node) {\n this.append('create ');\n if (node.unique) {\n this.append('unique ');\n }\n this.append('index ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(' on ');\n this.visitNode(node.table);\n }\n if (node.using) {\n this.append(' using ');\n this.visitNode(node.using);\n }\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n if (node.where) {\n this.append(' ');\n this.visitNode(node.where);\n }\n }\n visitDropIndex(node) {\n this.append('drop index ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n if (node.table) {\n this.append(' on ');\n this.visitNode(node.table);\n }\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitCreateSchema(node) {\n this.append('create schema ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.schema);\n }\n visitDropSchema(node) {\n this.append('drop schema ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.schema);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitPrimaryKeyConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('primary key (');\n this.compileList(node.columns);\n this.append(')');\n this.buildDeferrable(node);\n }\n buildDeferrable(node) {\n if (node.deferrable !== undefined) {\n if (node.deferrable) {\n this.append(' deferrable');\n }\n else {\n this.append(' not deferrable');\n }\n }\n if (node.initiallyDeferred !== undefined) {\n if (node.initiallyDeferred) {\n this.append(' initially deferred');\n }\n else {\n this.append(' initially immediate');\n }\n }\n }\n visitUniqueConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('unique');\n if (node.nullsNotDistinct) {\n this.append(' nulls not distinct');\n }\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n this.buildDeferrable(node);\n }\n visitCheckConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('check (');\n this.visitNode(node.expression);\n this.append(')');\n }\n visitForeignKeyConstraint(node) {\n if (node.name) {\n this.append('constraint ');\n this.visitNode(node.name);\n this.append(' ');\n }\n this.append('foreign key (');\n this.compileList(node.columns);\n this.append(') ');\n this.visitNode(node.references);\n if (node.onDelete) {\n this.append(' on delete ');\n this.append(node.onDelete);\n }\n if (node.onUpdate) {\n this.append(' on update ');\n this.append(node.onUpdate);\n }\n this.buildDeferrable(node);\n }\n visitList(node) {\n this.compileList(node.items);\n }\n visitWith(node) {\n this.append('with ');\n if (node.recursive) {\n this.append('recursive ');\n }\n this.compileList(node.expressions);\n }\n visitCommonTableExpression(node) {\n this.visitNode(node.name);\n this.append(' as ');\n if (isBoolean(node.materialized)) {\n if (!node.materialized) {\n this.append('not ');\n }\n this.append('materialized ');\n }\n this.visitNode(node.expression);\n }\n visitCommonTableExpressionName(node) {\n this.visitNode(node.table);\n if (node.columns) {\n this.append('(');\n this.compileList(node.columns);\n this.append(')');\n }\n }\n visitAlterTable(node) {\n this.append('alter table ');\n this.visitNode(node.table);\n this.append(' ');\n if (node.renameTo) {\n this.append('rename to ');\n this.visitNode(node.renameTo);\n }\n if (node.setSchema) {\n this.append('set schema ');\n this.visitNode(node.setSchema);\n }\n if (node.addConstraint) {\n this.visitNode(node.addConstraint);\n }\n if (node.dropConstraint) {\n this.visitNode(node.dropConstraint);\n }\n if (node.renameConstraint) {\n this.visitNode(node.renameConstraint);\n }\n if (node.columnAlterations) {\n this.compileColumnAlterations(node.columnAlterations);\n }\n if (node.addIndex) {\n this.visitNode(node.addIndex);\n }\n if (node.dropIndex) {\n this.visitNode(node.dropIndex);\n }\n }\n visitAddColumn(node) {\n this.append('add column ');\n this.visitNode(node.column);\n }\n visitRenameColumn(node) {\n this.append('rename column ');\n this.visitNode(node.column);\n this.append(' to ');\n this.visitNode(node.renameTo);\n }\n visitDropColumn(node) {\n this.append('drop column ');\n this.visitNode(node.column);\n }\n visitAlterColumn(node) {\n this.append('alter column ');\n this.visitNode(node.column);\n this.append(' ');\n if (node.dataType) {\n if (this.announcesNewColumnDataType()) {\n this.append('type ');\n }\n this.visitNode(node.dataType);\n if (node.dataTypeExpression) {\n this.append('using ');\n this.visitNode(node.dataTypeExpression);\n }\n }\n if (node.setDefault) {\n this.append('set default ');\n this.visitNode(node.setDefault);\n }\n if (node.dropDefault) {\n this.append('drop default');\n }\n if (node.setNotNull) {\n this.append('set not null');\n }\n if (node.dropNotNull) {\n this.append('drop not null');\n }\n }\n visitModifyColumn(node) {\n this.append('modify column ');\n this.visitNode(node.column);\n }\n visitAddConstraint(node) {\n this.append('add ');\n this.visitNode(node.constraint);\n }\n visitDropConstraint(node) {\n this.append('drop constraint ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.constraintName);\n if (node.modifier === 'cascade') {\n this.append(' cascade');\n }\n else if (node.modifier === 'restrict') {\n this.append(' restrict');\n }\n }\n visitRenameConstraint(node) {\n this.append('rename constraint ');\n this.visitNode(node.oldName);\n this.append(' to ');\n this.visitNode(node.newName);\n }\n visitSetOperation(node) {\n this.append(node.operator);\n this.append(' ');\n if (node.all) {\n this.append('all ');\n }\n this.visitNode(node.expression);\n }\n visitCreateView(node) {\n this.append('create ');\n if (node.orReplace) {\n this.append('or replace ');\n }\n if (node.materialized) {\n this.append('materialized ');\n }\n if (node.temporary) {\n this.append('temporary ');\n }\n this.append('view ');\n if (node.ifNotExists) {\n this.append('if not exists ');\n }\n this.visitNode(node.name);\n this.append(' ');\n if (node.columns) {\n this.append('(');\n this.compileList(node.columns);\n this.append(') ');\n }\n if (node.as) {\n this.append('as ');\n this.visitNode(node.as);\n }\n }\n visitRefreshMaterializedView(node) {\n this.append('refresh materialized view ');\n if (node.concurrently) {\n this.append('concurrently ');\n }\n this.visitNode(node.name);\n if (node.withNoData) {\n this.append(' with no data');\n }\n else {\n this.append(' with data');\n }\n }\n visitDropView(node) {\n this.append('drop ');\n if (node.materialized) {\n this.append('materialized ');\n }\n this.append('view ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n if (node.cascade) {\n this.append(' cascade');\n }\n }\n visitGenerated(node) {\n this.append('generated ');\n if (node.always) {\n this.append('always ');\n }\n if (node.byDefault) {\n this.append('by default ');\n }\n this.append('as ');\n if (node.identity) {\n this.append('identity');\n }\n if (node.expression) {\n this.append('(');\n this.visitNode(node.expression);\n this.append(')');\n }\n if (node.stored) {\n this.append(' stored');\n }\n }\n visitDefaultValue(node) {\n this.append('default ');\n this.visitNode(node.defaultValue);\n }\n visitSelectModifier(node) {\n if (node.rawModifier) {\n this.visitNode(node.rawModifier);\n }\n else {\n this.append(SELECT_MODIFIER_SQL[node.modifier]);\n }\n if (node.of) {\n this.append(' of ');\n this.compileList(node.of, ', ');\n }\n }\n visitCreateType(node) {\n this.append('create type ');\n this.visitNode(node.name);\n if (node.enum) {\n this.append(' as enum ');\n this.visitNode(node.enum);\n }\n }\n visitDropType(node) {\n this.append('drop type ');\n if (node.ifExists) {\n this.append('if exists ');\n }\n this.visitNode(node.name);\n }\n visitExplain(node) {\n this.append('explain');\n if (node.options || node.format) {\n this.append(' ');\n this.append(this.getLeftExplainOptionsWrapper());\n if (node.options) {\n this.visitNode(node.options);\n if (node.format) {\n this.append(this.getExplainOptionsDelimiter());\n }\n }\n if (node.format) {\n this.append('format');\n this.append(this.getExplainOptionAssignment());\n this.append(node.format);\n }\n this.append(this.getRightExplainOptionsWrapper());\n }\n }\n visitDefaultInsertValue(_) {\n this.append('default');\n }\n visitAggregateFunction(node) {\n this.append(node.func);\n this.append('(');\n if (node.distinct) {\n this.append('distinct ');\n }\n this.compileList(node.aggregated);\n if (node.orderBy) {\n this.append(' ');\n this.visitNode(node.orderBy);\n }\n this.append(')');\n if (node.withinGroup) {\n this.append(' within group (');\n this.visitNode(node.withinGroup);\n this.append(')');\n }\n if (node.filter) {\n this.append(' filter(');\n this.visitNode(node.filter);\n this.append(')');\n }\n if (node.over) {\n this.append(' ');\n this.visitNode(node.over);\n }\n }\n visitOver(node) {\n this.append('over(');\n if (node.partitionBy) {\n this.visitNode(node.partitionBy);\n if (node.orderBy) {\n this.append(' ');\n }\n }\n if (node.orderBy) {\n this.visitNode(node.orderBy);\n }\n this.append(')');\n }\n visitPartitionBy(node) {\n this.append('partition by ');\n this.compileList(node.items);\n }\n visitPartitionByItem(node) {\n this.visitNode(node.partitionBy);\n }\n visitBinaryOperation(node) {\n this.visitNode(node.leftOperand);\n this.append(' ');\n this.visitNode(node.operator);\n this.append(' ');\n this.visitNode(node.rightOperand);\n }\n visitUnaryOperation(node) {\n this.visitNode(node.operator);\n if (!this.isMinusOperator(node.operator)) {\n this.append(' ');\n }\n this.visitNode(node.operand);\n }\n isMinusOperator(node) {\n return OperatorNode.is(node) && node.operator === '-';\n }\n visitUsing(node) {\n this.append('using ');\n this.compileList(node.tables);\n }\n visitFunction(node) {\n this.append(node.func);\n this.append('(');\n this.compileList(node.arguments);\n this.append(')');\n }\n visitCase(node) {\n this.append('case');\n if (node.value) {\n this.append(' ');\n this.visitNode(node.value);\n }\n if (node.when) {\n this.append(' ');\n this.compileList(node.when, ' ');\n }\n if (node.else) {\n this.append(' else ');\n this.visitNode(node.else);\n }\n this.append(' end');\n if (node.isStatement) {\n this.append(' case');\n }\n }\n visitWhen(node) {\n this.append('when ');\n this.visitNode(node.condition);\n if (node.result) {\n this.append(' then ');\n this.visitNode(node.result);\n }\n }\n visitJSONReference(node) {\n this.visitNode(node.reference);\n this.visitNode(node.traversal);\n }\n visitJSONPath(node) {\n if (node.inOperator) {\n this.visitNode(node.inOperator);\n }\n this.append(\"'$\");\n for (const pathLeg of node.pathLegs) {\n this.visitNode(pathLeg);\n }\n this.append(\"'\");\n }\n visitJSONPathLeg(node) {\n const isArrayLocation = node.type === 'ArrayLocation';\n this.append(isArrayLocation ? '[' : '.');\n this.append(String(node.value));\n if (isArrayLocation) {\n this.append(']');\n }\n }\n visitJSONOperatorChain(node) {\n for (let i = 0, len = node.values.length; i < len; i++) {\n if (i === len - 1) {\n this.visitNode(node.operator);\n }\n else {\n this.append('->');\n }\n this.visitNode(node.values[i]);\n }\n }\n visitMergeQuery(node) {\n if (node.with) {\n this.visitNode(node.with);\n this.append(' ');\n }\n this.append('merge ');\n if (node.top) {\n this.visitNode(node.top);\n this.append(' ');\n }\n this.append('into ');\n this.visitNode(node.into);\n if (node.using) {\n this.append(' ');\n this.visitNode(node.using);\n }\n if (node.whens) {\n this.append(' ');\n this.compileList(node.whens, ' ');\n }\n if (node.returning) {\n this.append(' ');\n this.visitNode(node.returning);\n }\n if (node.output) {\n this.append(' ');\n this.visitNode(node.output);\n }\n if (node.endModifiers?.length) {\n this.append(' ');\n this.compileList(node.endModifiers, ' ');\n }\n }\n visitMatched(node) {\n if (node.not) {\n this.append('not ');\n }\n this.append('matched');\n if (node.bySource) {\n this.append(' by source');\n }\n }\n visitAddIndex(node) {\n this.append('add ');\n if (node.unique) {\n this.append('unique ');\n }\n this.append('index ');\n this.visitNode(node.name);\n if (node.columns) {\n this.append(' (');\n this.compileList(node.columns);\n this.append(')');\n }\n if (node.using) {\n this.append(' using ');\n this.visitNode(node.using);\n }\n }\n visitCast(node) {\n this.append('cast(');\n this.visitNode(node.expression);\n this.append(' as ');\n this.visitNode(node.dataType);\n this.append(')');\n }\n visitFetch(node) {\n this.append('fetch next ');\n this.visitNode(node.rowCount);\n this.append(` rows ${node.modifier}`);\n }\n visitOutput(node) {\n this.append('output ');\n this.compileList(node.selections);\n }\n visitTop(node) {\n this.append(`top(${node.expression})`);\n if (node.modifiers) {\n this.append(` ${node.modifiers}`);\n }\n }\n visitOrAction(node) {\n this.append(node.action);\n }\n visitCollate(node) {\n this.append('collate ');\n this.visitNode(node.collation);\n }\n append(str) {\n this.#sql += str;\n }\n appendValue(parameter) {\n this.addParameter(parameter);\n this.append(this.getCurrentParameterPlaceholder());\n }\n getLeftIdentifierWrapper() {\n return '\"';\n }\n getRightIdentifierWrapper() {\n return '\"';\n }\n getCurrentParameterPlaceholder() {\n return '$' + this.numParameters;\n }\n getLeftExplainOptionsWrapper() {\n return '(';\n }\n getExplainOptionAssignment() {\n return ' ';\n }\n getExplainOptionsDelimiter() {\n return ', ';\n }\n getRightExplainOptionsWrapper() {\n return ')';\n }\n sanitizeIdentifier(identifier) {\n const leftWrap = this.getLeftIdentifierWrapper();\n const rightWrap = this.getRightIdentifierWrapper();\n let sanitized = '';\n for (const c of identifier) {\n sanitized += c;\n if (c === leftWrap) {\n sanitized += leftWrap;\n }\n else if (c === rightWrap) {\n sanitized += rightWrap;\n }\n }\n return sanitized;\n }\n sanitizeStringLiteral(value) {\n return value.replace(LIT_WRAP_REGEX, \"''\");\n }\n addParameter(parameter) {\n this.#parameters.push(parameter);\n }\n appendImmediateValue(value) {\n if (isString(value)) {\n this.appendStringLiteral(value);\n }\n else if (isNumber(value) || isBoolean(value) || isBigInt(value)) {\n this.append(value.toString());\n }\n else if (isNull(value)) {\n this.append('null');\n }\n else if (isDate(value)) {\n this.appendImmediateValue(value.toISOString());\n }\n else {\n throw new Error(`invalid immediate value ${value}`);\n }\n }\n appendStringLiteral(value) {\n this.append(\"'\");\n this.append(this.sanitizeStringLiteral(value));\n this.append(\"'\");\n }\n sortSelectModifiers(arr) {\n arr.sort((left, right) => left.modifier && right.modifier\n ? SELECT_MODIFIER_PRIORITY[left.modifier] -\n SELECT_MODIFIER_PRIORITY[right.modifier]\n : 1);\n return freeze(arr);\n }\n compileColumnAlterations(columnAlterations) {\n this.compileList(columnAlterations);\n }\n /**\n * controls whether the dialect adds a \"type\" keyword before a column's new data\n * type in an ALTER TABLE statement.\n */\n announcesNewColumnDataType() {\n return true;\n }\n}\nconst SELECT_MODIFIER_SQL = freeze({\n ForKeyShare: 'for key share',\n ForNoKeyUpdate: 'for no key update',\n ForUpdate: 'for update',\n ForShare: 'for share',\n NoWait: 'nowait',\n SkipLocked: 'skip locked',\n Distinct: 'distinct',\n});\nconst SELECT_MODIFIER_PRIORITY = freeze({\n ForKeyShare: 1,\n ForNoKeyUpdate: 1,\n ForUpdate: 1,\n ForShare: 1,\n NoWait: 2,\n SkipLocked: 2,\n Distinct: 0,\n});\nconst JOIN_TYPE_SQL = freeze({\n InnerJoin: 'inner join',\n LeftJoin: 'left join',\n RightJoin: 'right join',\n FullJoin: 'full join',\n CrossJoin: 'cross join',\n LateralInnerJoin: 'inner join lateral',\n LateralLeftJoin: 'left join lateral',\n LateralCrossJoin: 'cross join lateral',\n OuterApply: 'outer apply',\n CrossApply: 'cross apply',\n Using: 'using',\n});\n","/// <reference types=\"./compiled-query.d.ts\" />\nimport { RawNode } from '../operation-node/raw-node.js';\nimport { freeze } from '../util/object-utils.js';\nimport { createQueryId } from '../util/query-id.js';\nexport const CompiledQuery = freeze({\n raw(sql, parameters = []) {\n return freeze({\n sql,\n query: RawNode.createWithSql(sql),\n parameters: freeze(parameters),\n queryId: createQueryId(),\n });\n },\n});\n","/// <reference types=\"./migrator.d.ts\" />\nimport { NoopPlugin } from '../plugin/noop-plugin.js';\nimport { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';\nimport { freeze, getLast, isObject } from '../util/object-utils.js';\nexport const DEFAULT_MIGRATION_TABLE = 'kysely_migration';\nexport const DEFAULT_MIGRATION_LOCK_TABLE = 'kysely_migration_lock';\nexport const DEFAULT_ALLOW_UNORDERED_MIGRATIONS = false;\nexport const MIGRATION_LOCK_ID = 'migration_lock';\nexport const NO_MIGRATIONS = freeze({ __noMigrations__: true });\n/**\n * A class for running migrations.\n *\n * ### Example\n *\n * This example uses the {@link FileMigrationProvider} that reads migrations\n * files from a single folder. You can easily implement your own\n * {@link MigrationProvider} if you want to provide migrations some\n * other way.\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import * as Sqlite from 'better-sqlite3'\n * import {\n * FileMigrationProvider,\n * Kysely,\n * Migrator,\n * SqliteDialect\n * } from 'kysely'\n *\n * const db = new Kysely<any>({\n * dialect: new SqliteDialect({\n * database: Sqlite(':memory:')\n * })\n * })\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n * ```\n */\nexport class Migrator {\n #props;\n constructor(props) {\n this.#props = freeze(props);\n }\n /**\n * Returns a {@link MigrationInfo} object for each migration.\n *\n * The returned array is sorted by migration name.\n */\n async getMigrations() {\n const tableExists = await this.#doesTableExist(this.#migrationTable);\n const executedMigrations = tableExists\n ? await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationTable)\n .select(['name', 'timestamp'])\n .$narrowType()\n .execute()\n : [];\n const migrations = await this.#resolveMigrations();\n return migrations.map(({ name, ...migration }) => {\n const executed = executedMigrations.find((it) => it.name === name);\n return {\n name,\n migration,\n executedAt: executed ? new Date(executed.timestamp) : undefined,\n };\n });\n }\n /**\n * Runs all migrations that have not yet been run.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed. See the examples below.\n *\n * This method goes through all possible migrations provided by the provider and runs the\n * ones whose names come alphabetically after the last migration that has been run. If the\n * list of executed migrations doesn't match the beginning of the list of possible migrations\n * an error is returned.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import * as Sqlite from 'better-sqlite3'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * const { error, results } = await migrator.migrateToLatest()\n *\n * results?.forEach((it) => {\n * if (it.status === 'Success') {\n * console.log(`migration \"${it.migrationName}\" was executed successfully`)\n * } else if (it.status === 'Error') {\n * console.error(`failed to execute migration \"${it.migrationName}\"`)\n * }\n * })\n *\n * if (error) {\n * console.error('failed to run `migrateToLatest`')\n * console.error(error)\n * }\n * ```\n */\n async migrateToLatest() {\n return this.#migrate(() => ({ direction: 'Up', step: Infinity }));\n }\n /**\n * Migrate up/down to a specific migration.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateTo('some_migration')\n * ```\n *\n * If you specify the name of the first migration, this method migrates\n * down to the first migration, but doesn't run the `down` method of\n * the first migration. In case you want to migrate all the way down,\n * you can use a special constant `NO_MIGRATIONS`:\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator, NO_MIGRATIONS } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateTo(NO_MIGRATIONS)\n * ```\n */\n async migrateTo(targetMigrationName) {\n return this.#migrate(({ migrations, executedMigrations, pendingMigrations, }) => {\n if (isObject(targetMigrationName) &&\n targetMigrationName.__noMigrations__ === true) {\n return { direction: 'Down', step: Infinity };\n }\n if (!migrations.find((m) => m.name === targetMigrationName)) {\n throw new Error(`migration \"${targetMigrationName}\" doesn't exist`);\n }\n const executedIndex = executedMigrations.indexOf(targetMigrationName);\n const pendingIndex = pendingMigrations.findIndex((m) => m.name === targetMigrationName);\n if (executedIndex !== -1) {\n return {\n direction: 'Down',\n step: executedMigrations.length - executedIndex - 1,\n };\n }\n else if (pendingIndex !== -1) {\n return { direction: 'Up', step: pendingIndex + 1 };\n }\n else {\n throw new Error(`migration \"${targetMigrationName}\" isn't executed or pending`);\n }\n });\n }\n /**\n * Migrate one step up.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateUp()\n * ```\n */\n async migrateUp() {\n return this.#migrate(() => ({ direction: 'Up', step: 1 }));\n }\n /**\n * Migrate one step down.\n *\n * This method returns a {@link MigrationResultSet} instance and _never_ throws.\n * {@link MigrationResultSet.error} holds the error if something went wrong.\n * {@link MigrationResultSet.results} contains information about which migrations\n * were executed and which failed.\n *\n * ### Examples\n *\n * ```ts\n * import { promises as fs } from 'node:fs'\n * import path from 'node:path'\n * import { FileMigrationProvider, Migrator } from 'kysely'\n *\n * const migrator = new Migrator({\n * db,\n * provider: new FileMigrationProvider({\n * fs,\n * // Path to the folder that contains all your migrations.\n * migrationFolder: 'some/path/to/migrations',\n * path,\n * })\n * })\n *\n * await migrator.migrateDown()\n * ```\n */\n async migrateDown() {\n return this.#migrate(() => ({ direction: 'Down', step: 1 }));\n }\n async #migrate(getMigrationDirectionAndStep) {\n try {\n await this.#ensureMigrationTableSchemaExists();\n await this.#ensureMigrationTableExists();\n await this.#ensureMigrationLockTableExists();\n await this.#ensureLockRowExists();\n return await this.#runMigrations(getMigrationDirectionAndStep);\n }\n catch (error) {\n if (error instanceof MigrationResultSetError) {\n return error.resultSet;\n }\n return { error };\n }\n }\n get #migrationTableSchema() {\n return this.#props.migrationTableSchema;\n }\n get #migrationTable() {\n return this.#props.migrationTableName ?? DEFAULT_MIGRATION_TABLE;\n }\n get #migrationLockTable() {\n return this.#props.migrationLockTableName ?? DEFAULT_MIGRATION_LOCK_TABLE;\n }\n get #allowUnorderedMigrations() {\n return (this.#props.allowUnorderedMigrations ?? DEFAULT_ALLOW_UNORDERED_MIGRATIONS);\n }\n get #schemaPlugin() {\n if (this.#migrationTableSchema) {\n return new WithSchemaPlugin(this.#migrationTableSchema);\n }\n return new NoopPlugin();\n }\n async #ensureMigrationTableSchemaExists() {\n if (!this.#migrationTableSchema) {\n // Use default schema. Nothing to do.\n return;\n }\n const schemaExists = await this.#doesSchemaExist();\n if (schemaExists) {\n return;\n }\n try {\n await this.#createIfNotExists(this.#props.db.schema.createSchema(this.#migrationTableSchema));\n }\n catch (error) {\n const schemaExists = await this.#doesSchemaExist();\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create schema`\n // query doesn't throw if the schema already exits. That's why we check if\n // the schema exist here and ignore the error if it does.\n if (!schemaExists) {\n throw error;\n }\n }\n }\n async #ensureMigrationTableExists() {\n const tableExists = await this.#doesTableExist(this.#migrationTable);\n if (tableExists) {\n return;\n }\n try {\n await this.#createIfNotExists(this.#props.db.schema\n .withPlugin(this.#schemaPlugin)\n .createTable(this.#migrationTable)\n .addColumn('name', 'varchar(255)', (col) => col.notNull().primaryKey())\n // The migration run time as ISO string. This is not a real date type as we\n // can't know which data type is supported by all future dialects.\n .addColumn('timestamp', 'varchar(255)', (col) => col.notNull()));\n }\n catch (error) {\n const tableExists = await this.#doesTableExist(this.#migrationTable);\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`\n // query doesn't throw if the table already exits. That's why we check if\n // the table exist here and ignore the error if it does.\n if (!tableExists) {\n throw error;\n }\n }\n }\n async #ensureMigrationLockTableExists() {\n const tableExists = await this.#doesTableExist(this.#migrationLockTable);\n if (tableExists) {\n return;\n }\n try {\n await this.#createIfNotExists(this.#props.db.schema\n .withPlugin(this.#schemaPlugin)\n .createTable(this.#migrationLockTable)\n .addColumn('id', 'varchar(255)', (col) => col.notNull().primaryKey())\n .addColumn('is_locked', 'integer', (col) => col.notNull().defaultTo(0)));\n }\n catch (error) {\n const tableExists = await this.#doesTableExist(this.#migrationLockTable);\n // At least on PostgreSQL, `if not exists` doesn't guarantee the `create table`\n // query doesn't throw if the table already exits. That's why we check if\n // the table exist here and ignore the error if it does.\n if (!tableExists) {\n throw error;\n }\n }\n }\n async #ensureLockRowExists() {\n const lockRowExists = await this.#doesLockRowExists();\n if (lockRowExists) {\n return;\n }\n try {\n await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .insertInto(this.#migrationLockTable)\n .values({ id: MIGRATION_LOCK_ID, is_locked: 0 })\n .execute();\n }\n catch (error) {\n const lockRowExists = await this.#doesLockRowExists();\n if (!lockRowExists) {\n throw error;\n }\n }\n }\n async #doesSchemaExist() {\n const schemas = await this.#props.db.introspection.getSchemas();\n return schemas.some((it) => it.name === this.#migrationTableSchema);\n }\n async #doesTableExist(tableName) {\n const schema = this.#migrationTableSchema;\n const tables = await this.#props.db.introspection.getTables({\n withInternalKyselyTables: true,\n });\n return tables.some((it) => it.name === tableName && (!schema || it.schema === schema));\n }\n async #doesLockRowExists() {\n const lockRow = await this.#props.db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationLockTable)\n .where('id', '=', MIGRATION_LOCK_ID)\n .select('id')\n .executeTakeFirst();\n return !!lockRow;\n }\n async #runMigrations(getMigrationDirectionAndStep) {\n const adapter = this.#props.db.getExecutor().adapter;\n const lockOptions = freeze({\n lockTable: this.#props.migrationLockTableName ?? DEFAULT_MIGRATION_LOCK_TABLE,\n lockRowId: MIGRATION_LOCK_ID,\n lockTableSchema: this.#props.migrationTableSchema,\n });\n const run = async (db) => {\n try {\n await adapter.acquireMigrationLock(db, lockOptions);\n const state = await this.#getState(db);\n if (state.migrations.length === 0) {\n return { results: [] };\n }\n const { direction, step } = getMigrationDirectionAndStep(state);\n if (step <= 0) {\n return { results: [] };\n }\n if (direction === 'Down') {\n return await this.#migrateDown(db, state, step);\n }\n else if (direction === 'Up') {\n return await this.#migrateUp(db, state, step);\n }\n return { results: [] };\n }\n finally {\n await adapter.releaseMigrationLock(db, lockOptions);\n }\n };\n if (adapter.supportsTransactionalDdl && !this.#props.disableTransactions) {\n return this.#props.db.transaction().execute(run);\n }\n else {\n return this.#props.db.connection().execute(run);\n }\n }\n async #getState(db) {\n const migrations = await this.#resolveMigrations();\n const executedMigrations = await this.#getExecutedMigrations(db);\n this.#ensureNoMissingMigrations(migrations, executedMigrations);\n if (!this.#allowUnorderedMigrations) {\n this.#ensureMigrationsInOrder(migrations, executedMigrations);\n }\n const pendingMigrations = this.#getPendingMigrations(migrations, executedMigrations);\n return freeze({\n migrations,\n executedMigrations,\n lastMigration: getLast(executedMigrations),\n pendingMigrations,\n });\n }\n #getPendingMigrations(migrations, executedMigrations) {\n return migrations.filter((migration) => {\n return !executedMigrations.includes(migration.name);\n });\n }\n async #resolveMigrations() {\n const allMigrations = await this.#props.provider.getMigrations();\n return Object.keys(allMigrations)\n .sort()\n .map((name) => ({\n ...allMigrations[name],\n name,\n }));\n }\n async #getExecutedMigrations(db) {\n const executedMigrations = await db\n .withPlugin(this.#schemaPlugin)\n .selectFrom(this.#migrationTable)\n .select(['name', 'timestamp'])\n .$narrowType()\n .execute();\n const nameComparator = this.#props.nameComparator || ((a, b) => a.localeCompare(b));\n return (executedMigrations\n // https://github.com/kysely-org/kysely/issues/843\n .sort((a, b) => {\n if (a.timestamp === b.timestamp) {\n return nameComparator(a.name, b.name);\n }\n return (new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());\n })\n .map((it) => it.name));\n }\n #ensureNoMissingMigrations(migrations, executedMigrations) {\n // Ensure all executed migrations exist in the `migrations` list.\n for (const executed of executedMigrations) {\n if (!migrations.some((it) => it.name === executed)) {\n throw new Error(`corrupted migrations: previously executed migration ${executed} is missing`);\n }\n }\n }\n #ensureMigrationsInOrder(migrations, executedMigrations) {\n // Ensure the executed migrations are the first ones in the migration list.\n for (let i = 0; i < executedMigrations.length; ++i) {\n if (migrations[i].name !== executedMigrations[i]) {\n throw new Error(`corrupted migrations: expected previously executed migration ${executedMigrations[i]} to be at index ${i} but ${migrations[i].name} was found in its place. New migrations must always have a name that comes alphabetically after the last executed migration.`);\n }\n }\n }\n async #migrateDown(db, state, step) {\n const migrationsToRollback = state.executedMigrations\n .slice()\n .reverse()\n .slice(0, step)\n .map((name) => {\n return state.migrations.find((it) => it.name === name);\n });\n const results = migrationsToRollback.map((migration) => {\n return {\n migrationName: migration.name,\n direction: 'Down',\n status: 'NotExecuted',\n };\n });\n for (let i = 0; i < results.length; ++i) {\n const migration = migrationsToRollback[i];\n try {\n if (migration.down) {\n await migration.down(db);\n await db\n .withPlugin(this.#schemaPlugin)\n .deleteFrom(this.#migrationTable)\n .where('name', '=', migration.name)\n .execute();\n results[i] = {\n migrationName: migration.name,\n direction: 'Down',\n status: 'Success',\n };\n }\n }\n catch (error) {\n results[i] = {\n migrationName: migration.name,\n direction: 'Down',\n status: 'Error',\n };\n throw new MigrationResultSetError({\n error,\n results,\n });\n }\n }\n return { results };\n }\n async #migrateUp(db, state, step) {\n const migrationsToRun = state.pendingMigrations.slice(0, step);\n const results = migrationsToRun.map((migration) => {\n return {\n migrationName: migration.name,\n direction: 'Up',\n status: 'NotExecuted',\n };\n });\n for (let i = 0; i < results.length; i++) {\n const migration = state.pendingMigrations[i];\n try {\n await migration.up(db);\n await db\n .withPlugin(this.#schemaPlugin)\n .insertInto(this.#migrationTable)\n .values({\n name: migration.name,\n timestamp: new Date().toISOString(),\n })\n .execute();\n results[i] = {\n migrationName: migration.name,\n direction: 'Up',\n status: 'Success',\n };\n }\n catch (error) {\n results[i] = {\n migrationName: migration.name,\n direction: 'Up',\n status: 'Error',\n };\n throw new MigrationResultSetError({\n error,\n results,\n });\n }\n }\n return { results };\n }\n async #createIfNotExists(qb) {\n if (this.#props.db.getExecutor().adapter.supportsCreateIfNotExists) {\n qb = qb.ifNotExists();\n }\n await qb.execute();\n }\n}\nclass MigrationResultSetError extends Error {\n #resultSet;\n constructor(result) {\n super();\n this.#resultSet = result;\n }\n get resultSet() {\n return this.#resultSet;\n }\n}\n","/// <reference types=\"./postgres-adapter.d.ts\" />\nimport { sql } from '../../raw-builder/sql.js';\nimport { DialectAdapterBase } from '../dialect-adapter-base.js';\n// Random id for our transaction lock.\nconst LOCK_ID = BigInt('3853314791062309107');\nexport class PostgresAdapter extends DialectAdapterBase {\n get supportsTransactionalDdl() {\n return true;\n }\n get supportsReturning() {\n return true;\n }\n async acquireMigrationLock(db, _opt) {\n // Acquire a transaction level advisory lock.\n await sql `select pg_advisory_xact_lock(${sql.lit(LOCK_ID)})`.execute(db);\n }\n async releaseMigrationLock(_db, _opt) {\n // Nothing to do here. `pg_advisory_xact_lock` is automatically released at the\n // end of the transaction and since `supportsTransactionalDdl` true, we know\n // the `db` instance passed to acquireMigrationLock is actually a transaction.\n }\n}\n","/// <reference types=\"./stack-trace-utils.d.ts\" />\nimport { isObject, isString } from './object-utils.js';\nexport function extendStackTrace(err, stackError) {\n if (isStackHolder(err) && stackError.stack) {\n // Remove the first line that just says `Error`.\n const stackExtension = stackError.stack.split('\\n').slice(1).join('\\n');\n err.stack += `\\n${stackExtension}`;\n return err;\n }\n return err;\n}\nfunction isStackHolder(obj) {\n return isObject(obj) && isString(obj.stack);\n}\n","/// <reference types=\"./mysql-driver.d.ts\" />\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { isFunction, isObject, freeze } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nconst PRIVATE_RELEASE_METHOD = Symbol();\nexport class MysqlDriver {\n #config;\n #connections = new WeakMap();\n #pool;\n constructor(configOrPool) {\n this.#config = freeze({ ...configOrPool });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool)\n ? await this.#config.pool()\n : this.#config.pool;\n }\n async acquireConnection() {\n const rawConnection = await this.#acquireConnection();\n let connection = this.#connections.get(rawConnection);\n if (!connection) {\n connection = new MysqlConnection(rawConnection);\n this.#connections.set(rawConnection, connection);\n // The driver must take care of calling `onCreateConnection` when a new\n // connection is created. The `mysql2` module doesn't provide an async hook\n // for the connection creation. We need to call the method explicitly.\n if (this.#config?.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config?.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async #acquireConnection() {\n return new Promise((resolve, reject) => {\n this.#pool.getConnection(async (err, rawConnection) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(rawConnection);\n }\n });\n });\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n const parts = [];\n if (settings.isolationLevel) {\n parts.push(`isolation level ${settings.isolationLevel}`);\n }\n if (settings.accessMode) {\n parts.push(settings.accessMode);\n }\n const sql = `set transaction ${parts.join(', ')}`;\n // On MySQL this sets the isolation level of the next transaction.\n await connection.executeQuery(CompiledQuery.raw(sql));\n }\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release savepoint', savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n return new Promise((resolve, reject) => {\n this.#pool.end((err) => {\n if (err) {\n reject(err);\n }\n else {\n resolve();\n }\n });\n });\n }\n}\nfunction isOkPacket(obj) {\n return isObject(obj) && 'insertId' in obj && 'affectedRows' in obj;\n}\nclass MysqlConnection {\n #rawConnection;\n constructor(rawConnection) {\n this.#rawConnection = rawConnection;\n }\n async executeQuery(compiledQuery) {\n try {\n const result = await this.#executeQuery(compiledQuery);\n if (isOkPacket(result)) {\n const { insertId, affectedRows, changedRows } = result;\n return {\n insertId: insertId !== undefined &&\n insertId !== null &&\n insertId.toString() !== '0'\n ? BigInt(insertId)\n : undefined,\n numAffectedRows: affectedRows !== undefined && affectedRows !== null\n ? BigInt(affectedRows)\n : undefined,\n numChangedRows: changedRows !== undefined && changedRows !== null\n ? BigInt(changedRows)\n : undefined,\n rows: [],\n };\n }\n else if (Array.isArray(result)) {\n return {\n rows: result,\n };\n }\n return {\n rows: [],\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n #executeQuery(compiledQuery) {\n return new Promise((resolve, reject) => {\n this.#rawConnection.query(compiledQuery.sql, compiledQuery.parameters, (err, result) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(result);\n }\n });\n });\n }\n async *streamQuery(compiledQuery, _chunkSize) {\n const stream = this.#rawConnection\n .query(compiledQuery.sql, compiledQuery.parameters)\n .stream({\n objectMode: true,\n });\n try {\n for await (const row of stream) {\n yield {\n rows: [row],\n };\n }\n }\n catch (ex) {\n if (ex &&\n typeof ex === 'object' &&\n 'code' in ex &&\n // @ts-ignore\n ex.code === 'ERR_STREAM_PREMATURE_CLOSE') {\n // Most likely because of https://github.com/mysqljs/mysql/blob/master/lib/protocol/sequences/Query.js#L220\n return;\n }\n throw ex;\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#rawConnection.release();\n }\n}\n","/// <reference types=\"./postgres-driver.d.ts\" />\nimport { parseSavepointCommand } from '../../parser/savepoint-parser.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { isFunction, freeze } from '../../util/object-utils.js';\nimport { createQueryId } from '../../util/query-id.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nconst PRIVATE_RELEASE_METHOD = Symbol();\nexport class PostgresDriver {\n #config;\n #connections = new WeakMap();\n #pool;\n constructor(config) {\n this.#config = freeze({ ...config });\n }\n async init() {\n this.#pool = isFunction(this.#config.pool)\n ? await this.#config.pool()\n : this.#config.pool;\n }\n async acquireConnection() {\n const client = await this.#pool.connect();\n let connection = this.#connections.get(client);\n if (!connection) {\n connection = new PostgresConnection(client, {\n cursor: this.#config.cursor ?? null,\n });\n this.#connections.set(client, connection);\n // The driver must take care of calling `onCreateConnection` when a new\n // connection is created. The `pg` module doesn't provide an async hook\n // for the connection creation. We need to call the method explicitly.\n if (this.#config.onCreateConnection) {\n await this.#config.onCreateConnection(connection);\n }\n }\n if (this.#config.onReserveConnection) {\n await this.#config.onReserveConnection(connection);\n }\n return connection;\n }\n async beginTransaction(connection, settings) {\n if (settings.isolationLevel || settings.accessMode) {\n let sql = 'start transaction';\n if (settings.isolationLevel) {\n sql += ` isolation level ${settings.isolationLevel}`;\n }\n if (settings.accessMode) {\n sql += ` ${settings.accessMode}`;\n }\n await connection.executeQuery(CompiledQuery.raw(sql));\n }\n else {\n await connection.executeQuery(CompiledQuery.raw('begin'));\n }\n }\n async commitTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('commit'));\n }\n async rollbackTransaction(connection) {\n await connection.executeQuery(CompiledQuery.raw('rollback'));\n }\n async savepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));\n }\n async rollbackToSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));\n }\n async releaseSavepoint(connection, savepointName, compileQuery) {\n await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));\n }\n async releaseConnection(connection) {\n connection[PRIVATE_RELEASE_METHOD]();\n }\n async destroy() {\n if (this.#pool) {\n const pool = this.#pool;\n this.#pool = undefined;\n await pool.end();\n }\n }\n}\nclass PostgresConnection {\n #client;\n #options;\n constructor(client, options) {\n this.#client = client;\n this.#options = options;\n }\n async executeQuery(compiledQuery) {\n try {\n const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);\n return {\n numAffectedRows: command === 'INSERT' ||\n command === 'UPDATE' ||\n command === 'DELETE' ||\n command === 'MERGE'\n ? BigInt(rowCount)\n : undefined,\n rows: rows ?? [],\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!this.#options.cursor) {\n throw new Error(\"'cursor' is not present in your postgres dialect config. It's required to make streaming work in postgres.\");\n }\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error('chunkSize must be a positive integer');\n }\n const cursor = this.#client.query(new this.#options.cursor(compiledQuery.sql, compiledQuery.parameters.slice()));\n try {\n while (true) {\n const rows = await cursor.read(chunkSize);\n if (rows.length === 0) {\n break;\n }\n yield {\n rows,\n };\n }\n }\n finally {\n await cursor.close();\n }\n }\n [PRIVATE_RELEASE_METHOD]() {\n this.#client.release();\n }\n}\n","/// <reference types=\"./mssql-driver.d.ts\" />\nimport { freeze, isBigInt, isBoolean, isBuffer, isDate, isNull, isNumber, isString, isUndefined, } from '../../util/object-utils.js';\nimport { CompiledQuery } from '../../query-compiler/compiled-query.js';\nimport { extendStackTrace } from '../../util/stack-trace-utils.js';\nimport { randomString } from '../../util/random-string.js';\nimport { Deferred } from '../../util/deferred.js';\nconst PRIVATE_RESET_METHOD = Symbol();\nconst PRIVATE_DESTROY_METHOD = Symbol();\nconst PRIVATE_VALIDATE_METHOD = Symbol();\nexport class MssqlDriver {\n #config;\n #pool;\n constructor(config) {\n this.#config = freeze({ ...config });\n const { tarn, tedious, validateConnections } = this.#config;\n const { validateConnections: deprecatedValidateConnections, ...poolOptions } = tarn.options;\n this.#pool = new tarn.Pool({\n ...poolOptions,\n create: async () => {\n const connection = await tedious.connectionFactory();\n return await new MssqlConnection(connection, tedious).connect();\n },\n destroy: async (connection) => {\n await connection[PRIVATE_DESTROY_METHOD]();\n },\n // @ts-ignore `tarn` accepts a function that returns a promise here, but\n // the types are not aligned and it type errors.\n validate: validateConnections === false ||\n deprecatedValidateConnections === false\n ? undefined\n : (connection) => connection[PRIVATE_VALIDATE_METHOD](),\n });\n }\n async init() {\n // noop\n }\n async acquireConnection() {\n return await this.#pool.acquire().promise;\n }\n async beginTransaction(connection, settings) {\n await connection.beginTransaction(settings);\n }\n async commitTransaction(connection) {\n await connection.commitTransaction();\n }\n async rollbackTransaction(connection) {\n await connection.rollbackTransaction();\n }\n async savepoint(connection, savepointName) {\n await connection.savepoint(savepointName);\n }\n async rollbackToSavepoint(connection, savepointName) {\n await connection.rollbackTransaction(savepointName);\n }\n async releaseConnection(connection) {\n if (this.#config.resetConnectionsOnRelease ||\n this.#config.tedious.resetConnectionOnRelease) {\n await connection[PRIVATE_RESET_METHOD]();\n }\n this.#pool.release(connection);\n }\n async destroy() {\n await this.#pool.destroy();\n }\n}\nclass MssqlConnection {\n #connection;\n #hasSocketError;\n #tedious;\n constructor(connection, tedious) {\n this.#connection = connection;\n this.#hasSocketError = false;\n this.#tedious = tedious;\n }\n async beginTransaction(settings) {\n const { isolationLevel } = settings;\n await new Promise((resolve, reject) => this.#connection.beginTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, isolationLevel ? randomString(8) : undefined, isolationLevel\n ? this.#getTediousIsolationLevel(isolationLevel)\n : undefined));\n }\n async commitTransaction() {\n await new Promise((resolve, reject) => this.#connection.commitTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }));\n }\n async connect() {\n const { promise: waitForConnected, reject, resolve } = new Deferred();\n this.#connection.connect((error) => {\n if (error) {\n return reject(error);\n }\n resolve();\n });\n this.#connection.on('error', (error) => {\n if (error instanceof Error &&\n 'code' in error &&\n error.code === 'ESOCKET') {\n this.#hasSocketError = true;\n }\n console.error(error);\n reject(error);\n });\n function endListener() {\n reject(new Error('The connection ended without ever completing the connection'));\n }\n this.#connection.once('end', endListener);\n await waitForConnected;\n this.#connection.off('end', endListener);\n return this;\n }\n async executeQuery(compiledQuery) {\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery,\n tedious: this.#tedious,\n onDone: deferred,\n });\n this.#connection.execSql(request.request);\n const { rowCount, rows } = await deferred.promise;\n return {\n numAffectedRows: rowCount !== undefined ? BigInt(rowCount) : undefined,\n rows,\n };\n }\n catch (err) {\n throw extendStackTrace(err, new Error());\n }\n }\n async rollbackTransaction(savepointName) {\n await new Promise((resolve, reject) => this.#connection.rollbackTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, savepointName));\n }\n async savepoint(savepointName) {\n await new Promise((resolve, reject) => this.#connection.saveTransaction((error) => {\n if (error)\n reject(error);\n else\n resolve(undefined);\n }, savepointName));\n }\n async *streamQuery(compiledQuery, chunkSize) {\n if (!Number.isInteger(chunkSize) || chunkSize <= 0) {\n throw new Error('chunkSize must be a positive integer');\n }\n const request = new MssqlRequest({\n compiledQuery,\n streamChunkSize: chunkSize,\n tedious: this.#tedious,\n });\n this.#connection.execSql(request.request);\n try {\n while (true) {\n const rows = await request.readChunk();\n if (rows.length === 0) {\n break;\n }\n yield { rows };\n if (rows.length < chunkSize) {\n break;\n }\n }\n }\n finally {\n await this.#cancelRequest(request);\n }\n }\n #getTediousIsolationLevel(isolationLevel) {\n const { ISOLATION_LEVEL } = this.#tedious;\n const mapper = {\n 'read committed': ISOLATION_LEVEL.READ_COMMITTED,\n 'read uncommitted': ISOLATION_LEVEL.READ_UNCOMMITTED,\n 'repeatable read': ISOLATION_LEVEL.REPEATABLE_READ,\n serializable: ISOLATION_LEVEL.SERIALIZABLE,\n snapshot: ISOLATION_LEVEL.SNAPSHOT,\n };\n const tediousIsolationLevel = mapper[isolationLevel];\n if (tediousIsolationLevel === undefined) {\n throw new Error(`Unknown isolation level: ${isolationLevel}`);\n }\n return tediousIsolationLevel;\n }\n #cancelRequest(request) {\n return new Promise((resolve) => {\n request.request.once('requestCompleted', resolve);\n const wasCanceled = this.#connection.cancel();\n if (!wasCanceled) {\n request.request.off('requestCompleted', resolve);\n resolve();\n }\n });\n }\n [PRIVATE_DESTROY_METHOD]() {\n if ('closed' in this.#connection && this.#connection.closed) {\n return Promise.resolve();\n }\n return new Promise((resolve) => {\n this.#connection.once('end', resolve);\n this.#connection.close();\n });\n }\n async [PRIVATE_RESET_METHOD]() {\n await new Promise((resolve, reject) => {\n this.#connection.reset((error) => {\n if (error) {\n return reject(error);\n }\n resolve();\n });\n });\n }\n async [PRIVATE_VALIDATE_METHOD]() {\n if (this.#hasSocketError || this.#isConnectionClosed()) {\n return false;\n }\n try {\n const deferred = new Deferred();\n const request = new MssqlRequest({\n compiledQuery: CompiledQuery.raw('select 1'),\n onDone: deferred,\n tedious: this.#tedious,\n });\n this.#connection.execSql(request.request);\n await deferred.promise;\n return true;\n }\n catch {\n return false;\n }\n }\n #isConnectionClosed() {\n return 'closed' in this.#connection && Boolean(this.#connection.closed);\n }\n}\nclass MssqlRequest {\n #request;\n #rows;\n #streamChunkSize;\n #subscribers;\n #tedious;\n #rowCount;\n constructor(props) {\n const { compiledQuery, onDone, streamChunkSize, tedious } = props;\n this.#rows = [];\n this.#streamChunkSize = streamChunkSize;\n this.#subscribers = {};\n this.#tedious = tedious;\n if (onDone) {\n const subscriptionKey = 'onDone';\n this.#subscribers[subscriptionKey] = (event, error) => {\n if (event === 'chunkReady') {\n return;\n }\n delete this.#subscribers[subscriptionKey];\n if (event === 'error') {\n return onDone.reject(error);\n }\n onDone.resolve({\n rowCount: this.#rowCount,\n rows: this.#rows,\n });\n };\n }\n this.#request = new this.#tedious.Request(compiledQuery.sql, (err, rowCount) => {\n if (err) {\n return Object.values(this.#subscribers).forEach((subscriber) => subscriber('error', err instanceof AggregateError ? err.errors : err));\n }\n this.#rowCount = rowCount;\n });\n this.#addParametersToRequest(compiledQuery.parameters);\n this.#attachListeners();\n }\n get request() {\n return this.#request;\n }\n readChunk() {\n const subscriptionKey = this.readChunk.name;\n return new Promise((resolve, reject) => {\n this.#subscribers[subscriptionKey] = (event, error) => {\n delete this.#subscribers[subscriptionKey];\n if (event === 'error') {\n return reject(error);\n }\n resolve(this.#rows.splice(0, this.#streamChunkSize));\n };\n this.#request.resume();\n });\n }\n #addParametersToRequest(parameters) {\n for (let i = 0; i < parameters.length; i++) {\n const parameter = parameters[i];\n this.#request.addParameter(String(i + 1), this.#getTediousDataType(parameter), parameter);\n }\n }\n #attachListeners() {\n const pauseAndEmitChunkReady = this.#streamChunkSize\n ? () => {\n if (this.#streamChunkSize <= this.#rows.length) {\n this.#request.pause();\n Object.values(this.#subscribers).forEach((subscriber) => subscriber('chunkReady'));\n }\n }\n : () => { };\n const rowListener = (columns) => {\n const row = {};\n for (const column of columns) {\n row[column.metadata.colName] = column.value;\n }\n this.#rows.push(row);\n pauseAndEmitChunkReady();\n };\n this.#request.on('row', rowListener);\n this.#request.once('requestCompleted', () => {\n Object.values(this.#subscribers).forEach((subscriber) => subscriber('completed'));\n this.#request.off('row', rowListener);\n });\n }\n #getTediousDataType(value) {\n if (isNull(value) || isUndefined(value) || isString(value)) {\n return this.#tedious.TYPES.NVarChar;\n }\n if (isBigInt(value) || (isNumber(value) && value % 1 === 0)) {\n if (value < -2147483648 || value > 2147483647) {\n return this.#tedious.TYPES.BigInt;\n }\n else {\n return this.#tedious.TYPES.Int;\n }\n }\n if (isNumber(value)) {\n return this.#tedious.TYPES.Float;\n }\n if (isBoolean(value)) {\n return this.#tedious.TYPES.Bit;\n }\n if (isDate(value)) {\n return this.#tedious.TYPES.DateTime;\n }\n if (isBuffer(value)) {\n return this.#tedious.TYPES.VarBinary;\n }\n return this.#tedious.TYPES.NVarChar;\n }\n}\n","import { actions, actions as documentActions, createPresignedHeader, defaultBaseState, deriveOperationId, generateId, hashDocumentStateForScope, isUndoRedo } from \"@powerhousedao/shared/document-model\";\nimport { addFile, deleteNode } from \"@powerhousedao/shared/document-drive\";\nimport { v4 } from \"uuid\";\nimport { PGlite } from \"@electric-sql/pglite\";\nimport { ConsoleLogger } from \"document-model\";\nimport { Kysely, Migrator, sql } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\nimport { RelationalDbProcessor, createRelationalDb } from \"@powerhousedao/shared/processors\";\n//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\n//#region src/actions/index.ts\n/**\n* Creates a CREATE_DOCUMENT action for document creation.\n*/\nfunction createDocumentAction(input) {\n\treturn {\n\t\tid: generateId(),\n\t\ttype: \"CREATE_DOCUMENT\",\n\t\tscope: \"document\",\n\t\ttimestampUtcMs: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tinput\n\t};\n}\n/**\n* Creates an UPGRADE_DOCUMENT action to set initial document state.\n*/\nfunction upgradeDocumentAction(input) {\n\treturn {\n\t\tid: generateId(),\n\t\ttype: \"UPGRADE_DOCUMENT\",\n\t\tscope: \"document\",\n\t\ttimestampUtcMs: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tinput\n\t};\n}\n/**\n* Creates a DELETE_DOCUMENT action for document deletion.\n*/\nfunction deleteDocumentAction(documentId) {\n\tconst input = { documentId };\n\treturn {\n\t\tid: generateId(),\n\t\ttype: \"DELETE_DOCUMENT\",\n\t\tscope: \"document\",\n\t\ttimestampUtcMs: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tinput\n\t};\n}\n/**\n* Creates an ADD_RELATIONSHIP action to establish a parent-child relationship.\n*/\nfunction addRelationshipAction(sourceId, targetId, relationshipType = \"child\") {\n\tconst input = {\n\t\tsourceId,\n\t\ttargetId,\n\t\trelationshipType\n\t};\n\treturn {\n\t\tid: generateId(),\n\t\ttype: \"ADD_RELATIONSHIP\",\n\t\tscope: \"document\",\n\t\ttimestampUtcMs: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tinput\n\t};\n}\n/**\n* Creates a REMOVE_RELATIONSHIP action to remove a parent-child relationship.\n*/\nfunction removeRelationshipAction(sourceId, targetId, relationshipType = \"child\") {\n\tconst input = {\n\t\tsourceId,\n\t\ttargetId,\n\t\trelationshipType\n\t};\n\treturn {\n\t\tid: generateId(),\n\t\ttype: \"REMOVE_RELATIONSHIP\",\n\t\tscope: \"document\",\n\t\ttimestampUtcMs: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tinput\n\t};\n}\n//#endregion\n//#region src/core/utils.ts\n/**\n* Validates structural properties shared by all batch requests:\n* duplicate keys, missing dependencies, and dependency cycles.\n*/\nfunction validateBatchStructure(jobs) {\n\tconst keys = /* @__PURE__ */ new Set();\n\tfor (const job of jobs) {\n\t\tif (keys.has(job.key)) throw new Error(`Duplicate plan key: ${job.key}`);\n\t\tkeys.add(job.key);\n\t}\n\tfor (const job of jobs) for (const depKey of job.dependsOn) if (!keys.has(depKey)) throw new Error(`Job '${job.key}' depends on non-existent key: ${depKey}`);\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst recStack = /* @__PURE__ */ new Set();\n\tconst detectCycle = (key) => {\n\t\tvisited.add(key);\n\t\trecStack.add(key);\n\t\tconst job = jobs.find((j) => j.key === key);\n\t\tif (job) {\n\t\t\tfor (const depKey of job.dependsOn) if (!visited.has(depKey)) {\n\t\t\t\tif (detectCycle(depKey)) return true;\n\t\t\t} else if (recStack.has(depKey)) return true;\n\t\t}\n\t\trecStack.delete(key);\n\t\treturn false;\n\t};\n\tfor (const job of jobs) if (!visited.has(job.key)) {\n\t\tif (detectCycle(job.key)) throw new Error(`Dependency cycle detected involving key: ${job.key}`);\n\t}\n}\n/**\n* Validates a batch mutation request for common errors\n*/\nfunction validateBatchRequest(jobs) {\n\tvalidateBatchStructure(jobs);\n\tfor (const job of jobs) if (job.actions.length === 0) throw new Error(`Job '${job.key}' has empty actions array`);\n}\n/**\n* Validates a batch load request for common errors\n*/\nfunction validateBatchLoadRequest(jobs) {\n\tvalidateBatchStructure(jobs);\n\tfor (const job of jobs) if (job.operations.length === 0) throw new Error(`Job '${job.key}' has empty operations array`);\n}\n/**\n* Validates that all actions in a job match the declared scope\n*/\nfunction validateActionScopes(job) {\n\tfor (const action of job.actions) {\n\t\tconst actionScope = action.scope || \"global\";\n\t\tif (actionScope !== job.scope) throw new Error(`Job '${job.key}' declares scope '${job.scope}' but action has scope '${actionScope}'`);\n\t}\n}\n/**\n* Validates that all operations in a job match the declared scope\n*/\nfunction validateOperationScopes(job) {\n\tfor (const operation of job.operations) {\n\t\tconst operationScope = operation.action.scope || \"global\";\n\t\tif (operationScope !== job.scope) throw new Error(`Job '${job.key}' declares scope '${job.scope}' but operation has scope '${operationScope}'`);\n\t}\n}\n/**\n* Performs topological sort on jobs based on dependencies\n*/\nfunction topologicalSort(jobs) {\n\tconst result = [];\n\tconst visited = /* @__PURE__ */ new Set();\n\tconst visit = (key) => {\n\t\tif (visited.has(key)) return;\n\t\tvisited.add(key);\n\t\tconst job = jobs.find((j) => j.key === key);\n\t\tif (job) for (const depKey of job.dependsOn) visit(depKey);\n\t\tresult.push(key);\n\t};\n\tfor (const job of jobs) visit(job.key);\n\treturn result;\n}\n/**\n* Converts an Error or string to ErrorInfo\n*/\nfunction toErrorInfo(error) {\n\tif (error instanceof Error) return {\n\t\tmessage: error.message,\n\t\tstack: error.stack || (/* @__PURE__ */ new Error()).stack || \"\"\n\t};\n\treturn {\n\t\tmessage: error,\n\t\tstack: (/* @__PURE__ */ new Error()).stack || \"\"\n\t};\n}\n/**\n* Filters paged results by document type\n*/\nfunction filterByType(results, type) {\n\treturn {\n\t\tresults: results.results.filter((document) => document.header.documentType === type),\n\t\toptions: results.options,\n\t\tnextCursor: results.nextCursor,\n\t\tnext: results.next ? async () => {\n\t\t\treturn filterByType(await results.next(), type);\n\t\t} : void 0\n\t};\n}\n/**\n* Validates that all operations share the same scope.\n* Throws an error if any operation has a different scope.\n*/\nfunction getSharedOperationScope(operations) {\n\tif (operations.length === 0) throw new Error(\"No operations provided\");\n\tconst baseScope = operations[0].action.scope;\n\tfor (const [index, operation] of operations.entries()) {\n\t\tconst scope = operation.action.scope;\n\t\tif (scope !== baseScope) throw new Error(`All operations in load must share the same scope. Expected '${baseScope}', received '${scope}' at position ${index}`);\n\t}\n\treturn baseScope;\n}\n/**\n* Validates that all actions share the same scope.\n* Throws an error if any action has a different scope.\n*/\nfunction getSharedActionScope(actions) {\n\tif (actions.length === 0) throw new Error(\"No actions provided\");\n\tconst baseScope = actions[0].scope;\n\tfor (const action of actions) if (action.scope !== baseScope) throw new Error(`All actions must share the same scope. Expected '${baseScope}', received '${action.scope}'`);\n\treturn baseScope;\n}\n/**\n* Signs an action with the provided signer.\n* If the action already has valid signatures, it is returned unchanged.\n*/\nconst signAction = async (action, signer, signal) => {\n\tconst existingSignatures = action.context?.signer?.signatures;\n\tif (existingSignatures && existingSignatures.length > 0) return action;\n\tconst signature = await signer.signAction(action, signal);\n\treturn {\n\t\t...action,\n\t\tcontext: {\n\t\t\t...action.context,\n\t\t\tsigner: {\n\t\t\t\tuser: {\n\t\t\t\t\taddress: signer.user?.address || \"\",\n\t\t\t\t\tnetworkId: signer.user?.networkId || \"\",\n\t\t\t\t\tchainId: signer.user?.chainId || 0\n\t\t\t\t},\n\t\t\t\tapp: {\n\t\t\t\t\tname: signer.app?.name || \"\",\n\t\t\t\t\tkey: signer.app?.key || \"\"\n\t\t\t\t},\n\t\t\t\tsignatures: [signature]\n\t\t\t}\n\t\t}\n\t};\n};\n/**\n* Signs multiple actions with the provided signer\n*/\nconst signActions = async (actions, signer, signal) => {\n\treturn Promise.all(actions.map((action) => signAction(action, signer, signal)));\n};\nfunction buildSingleJobMeta(jobId, callerMeta) {\n\treturn {\n\t\t...callerMeta,\n\t\tbatchId: v4(),\n\t\tbatchJobIds: [jobId]\n\t};\n}\n//#endregion\n//#region src/events/types.ts\n/**\n* Custom error class that aggregates multiple errors from event subscribers.\n*/\nvar EventBusAggregateError = class extends Error {\n\terrors;\n\tconstructor(errors) {\n\t\tconst message = `EventBus emit failed with ${errors.length} error(s): ${errors.map((e) => {\n\t\t\tif (e && typeof e === \"object\" && \"message\" in e) return e.message;\n\t\t\treturn String(e);\n\t\t}).join(\"; \")}`;\n\t\tsuper(message);\n\t\tthis.name = \"EventBusAggregateError\";\n\t\tthis.errors = errors;\n\t}\n};\n/**\n* Event types for reactor lifecycle events.\n*/\nconst ReactorEventTypes = {\n\tJOB_PENDING: 10001,\n\tJOB_RUNNING: 10002,\n\tJOB_WRITE_READY: 10003,\n\tJOB_READ_READY: 10004,\n\tJOB_FAILED: 10005\n};\n//#endregion\n//#region src/shared/types.ts\n/**\n* Enum that determines deletion propagation.\n*/\nlet PropagationMode = /* @__PURE__ */ function(PropagationMode) {\n\tPropagationMode[\"None\"] = \"none\";\n\tPropagationMode[\"Cascade\"] = \"cascade\";\n\treturn PropagationMode;\n}({});\n/**\n* Enum that describes the type of relationship change.\n*/\nlet RelationshipChangeType = /* @__PURE__ */ function(RelationshipChangeType) {\n\tRelationshipChangeType[\"Added\"] = \"added\";\n\tRelationshipChangeType[\"Removed\"] = \"removed\";\n\treturn RelationshipChangeType;\n}({});\n/**\n* Job execution statuses\n*/\nlet JobStatus = /* @__PURE__ */ function(JobStatus) {\n\t/** Job is queued but not yet started */\n\tJobStatus[\"PENDING\"] = \"PENDING\";\n\t/** Job is currently being executed */\n\tJobStatus[\"RUNNING\"] = \"RUNNING\";\n\t/** Operations have been written to the operation store (JOB_WRITE_READY event) */\n\tJobStatus[\"WRITE_READY\"] = \"WRITE_READY\";\n\t/** Read models have finished indexing operations (JOB_READ_READY event) */\n\tJobStatus[\"READ_READY\"] = \"READ_READY\";\n\t/** Job failed (may be retried) */\n\tJobStatus[\"FAILED\"] = \"FAILED\";\n\treturn JobStatus;\n}({});\n//#endregion\n//#region src/shared/awaiter.ts\n/**\n* Checks if a job status is terminal (job has finished).\n* WRITE_READY is not terminal - it's an intermediate state.\n* Only READ_READY and FAILED are truly terminal.\n*/\nfunction isTerminalStatus(status) {\n\treturn status === JobStatus.READ_READY || status === JobStatus.FAILED;\n}\n/**\n* Event-driven implementation of IJobAwaiter.\n* Subscribes to operation events to detect job completion without polling.\n*/\nvar JobAwaiter = class {\n\tpendingJobs = /* @__PURE__ */ new Map();\n\tunsubscribers = [];\n\tconstructor(eventBus, getJobStatus) {\n\t\tthis.eventBus = eventBus;\n\t\tthis.getJobStatus = getJobStatus;\n\t\tthis.subscribeToEvents();\n\t}\n\tsubscribeToEvents() {\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_WRITE_READY, async (_type, event) => {\n\t\t\tawait this.handleWriteReady(event);\n\t\t}));\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_READ_READY, async (_type, event) => {\n\t\t\tawait this.handleReadReady(event);\n\t\t}));\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_FAILED, async (_type, event) => {\n\t\t\tawait this.handleJobFailed(event);\n\t\t}));\n\t}\n\tshutdown() {\n\t\tfor (const unsubscribe of this.unsubscribers) unsubscribe();\n\t\tthis.unsubscribers = [];\n\t\tfor (const [, waiters] of this.pendingJobs) for (const waiter of waiters) waiter.reject(/* @__PURE__ */ new Error(\"JobAwaiter destroyed\"));\n\t\tthis.pendingJobs.clear();\n\t}\n\tasync waitForJob(jobId, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst currentStatus = await this.getJobStatus(jobId, signal);\n\t\tif (isTerminalStatus(currentStatus.status)) return currentStatus;\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst waiter = {\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t\tsignal\n\t\t\t};\n\t\t\tconst existingWaiters = this.pendingJobs.get(jobId) || [];\n\t\t\texistingWaiters.push(waiter);\n\t\t\tthis.pendingJobs.set(jobId, existingWaiters);\n\t\t\tif (signal) {\n\t\t\t\tconst abortHandler = () => {\n\t\t\t\t\tconst waiters = this.pendingJobs.get(jobId);\n\t\t\t\t\tif (waiters) {\n\t\t\t\t\t\tconst index = waiters.indexOf(waiter);\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\twaiters.splice(index, 1);\n\t\t\t\t\t\t\tif (waiters.length === 0) this.pendingJobs.delete(jobId);\n\t\t\t\t\t\t\twaiter.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tsignal.addEventListener(\"abort\", abortHandler, { once: true });\n\t\t\t}\n\t\t});\n\t}\n\tasync handleWriteReady(event) {\n\t\tconst jobId = event.jobId;\n\t\tawait this.checkAndResolveWaiters(jobId);\n\t}\n\tasync handleReadReady(event) {\n\t\tconst jobId = event.jobId;\n\t\tawait this.checkAndResolveWaiters(jobId);\n\t}\n\tasync handleJobFailed(event) {\n\t\tawait this.checkAndResolveWaiters(event.jobId);\n\t}\n\tasync checkAndResolveWaiters(jobId) {\n\t\tconst waiters = this.pendingJobs.get(jobId);\n\t\tif (!waiters || waiters.length === 0) return;\n\t\ttry {\n\t\t\tconst activeWaiters = waiters.filter((w) => !w.signal?.aborted);\n\t\t\tif (activeWaiters.length === 0) {\n\t\t\t\tthis.pendingJobs.delete(jobId);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst jobInfo = await this.getJobStatus(jobId, activeWaiters[0].signal);\n\t\t\tif (isTerminalStatus(jobInfo.status)) {\n\t\t\t\tthis.pendingJobs.delete(jobId);\n\t\t\t\tfor (const waiter of activeWaiters) waiter.resolve(jobInfo);\n\t\t\t\tfor (const waiter of waiters) if (waiter.signal?.aborted) waiter.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tthis.pendingJobs.delete(jobId);\n\t\t\tfor (const waiter of waiters) waiter.reject(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t}\n};\n//#endregion\n//#region src/client/types.ts\n/**\n* Describes the types of document changes that can occur.\n*/\nlet DocumentChangeType = /* @__PURE__ */ function(DocumentChangeType) {\n\tDocumentChangeType[\"Created\"] = \"created\";\n\tDocumentChangeType[\"Deleted\"] = \"deleted\";\n\tDocumentChangeType[\"Updated\"] = \"updated\";\n\tDocumentChangeType[\"ParentAdded\"] = \"parent_added\";\n\tDocumentChangeType[\"ParentRemoved\"] = \"parent_removed\";\n\tDocumentChangeType[\"ChildAdded\"] = \"child_added\";\n\tDocumentChangeType[\"ChildRemoved\"] = \"child_removed\";\n\treturn DocumentChangeType;\n}({});\n//#endregion\n//#region src/client/reactor-client.ts\n/**\n* ReactorClient implementation that wraps lower-level APIs to provide\n* a simpler interface for document operations.\n*\n* Features:\n* - Wraps Jobs with Promises for easier async handling\n* - Manages signing of submitted Action objects\n* - Provides quality-of-life functions for common tasks\n* - Wraps subscription interface with ViewFilters\n*/\nvar ReactorClient = class {\n\tlogger;\n\treactor;\n\tsigner;\n\tsubscriptionManager;\n\tjobAwaiter;\n\tdocumentIndexer;\n\tdocumentView;\n\tconstructor(logger, reactor, signer, subscriptionManager, jobAwaiter, documentIndexer, documentView) {\n\t\tthis.logger = logger;\n\t\tthis.reactor = reactor;\n\t\tthis.signer = signer;\n\t\tthis.subscriptionManager = subscriptionManager;\n\t\tthis.jobAwaiter = jobAwaiter;\n\t\tthis.documentIndexer = documentIndexer;\n\t\tthis.documentView = documentView;\n\t\tthis.logger.verbose(\"ReactorClient initialized\");\n\t}\n\t/**\n\t* Retrieves a list of document model modules.\n\t*/\n\tasync getDocumentModelModules(namespace, paging, signal) {\n\t\tthis.logger.verbose(\"getDocumentModels(@namespace, @paging)\", namespace, paging);\n\t\treturn this.reactor.getDocumentModels(namespace, paging, signal);\n\t}\n\t/**\n\t* Retrieves a specific document model module by document type.\n\t*\n\t* @param documentType - The document type identifier\n\t* @returns The document model module\n\t*/\n\tasync getDocumentModelModule(documentType) {\n\t\tconst module = (await this.reactor.getDocumentModels()).results.find((m) => m.documentModel.global.id === documentType);\n\t\tif (!module) throw new Error(`Document model module not found for type: ${documentType}`);\n\t\treturn module;\n\t}\n\t/**\n\t* Retrieves a specific PHDocument\n\t*/\n\tasync get(identifier, view, signal) {\n\t\tthis.logger.verbose(\"get(@identifier, @view)\", identifier, view);\n\t\treturn await this.reactor.getByIdOrSlug(identifier, view, void 0, signal);\n\t}\n\t/**\n\t* Retrieves operations for a document\n\t*/\n\tasync getOperations(documentIdentifier, view, filter, paging, signal) {\n\t\tthis.logger.verbose(\"getOperations(@documentIdentifier, @view, @filter, @paging)\", documentIdentifier, view, filter, paging);\n\t\tconst documentId = await this.documentView.resolveIdOrSlug(documentIdentifier, view, void 0, signal);\n\t\tconst operationsByScope = await this.reactor.getOperations(documentId, view, filter, paging, void 0, signal);\n\t\tconst scopeEntries = Object.values(operationsByScope);\n\t\tconst allOperations = [];\n\t\tfor (const scopeResults of scopeEntries) allOperations.push(...scopeResults.results);\n\t\tallOperations.sort((a, b) => a.index - b.index);\n\t\treturn {\n\t\t\tresults: allOperations,\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor: scopeEntries.length === 1 ? scopeEntries[0].nextCursor : void 0\n\t\t};\n\t}\n\t/**\n\t* Retrieves children of a document\n\t*/\n\tasync getChildren(parentIdentifier, view, paging, signal) {\n\t\tthis.logger.verbose(\"getChildren(@parentIdentifier, @view, @paging)\", parentIdentifier, view, paging);\n\t\tconst parentId = await this.documentView.resolveIdOrSlug(parentIdentifier, view, void 0, signal);\n\t\tconst childIds = (await this.documentIndexer.getOutgoing(parentId, void 0, void 0, void 0, signal)).results.map((rel) => rel.targetId);\n\t\tif (childIds.length === 0) return {\n\t\t\tresults: [],\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 0\n\t\t\t}\n\t\t};\n\t\treturn this.reactor.find({ ids: childIds }, view, paging, void 0, signal);\n\t}\n\t/**\n\t* Retrieves parents of a document\n\t*/\n\tasync getParents(childIdentifier, view, paging, signal) {\n\t\tthis.logger.verbose(\"getParents(@childIdentifier, @view, @paging)\", childIdentifier, view, paging);\n\t\tconst childId = await this.documentView.resolveIdOrSlug(childIdentifier, view, void 0, signal);\n\t\tconst parentIds = (await this.documentIndexer.getIncoming(childId, void 0, void 0, void 0, signal)).results.map((rel) => rel.sourceId);\n\t\tif (parentIds.length === 0) return {\n\t\t\tresults: [],\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 0\n\t\t\t}\n\t\t};\n\t\treturn this.reactor.find({ ids: parentIds }, view, paging, void 0, signal);\n\t}\n\t/**\n\t* Filters documents by criteria and returns a list of them\n\t*/\n\tasync find(search, view, paging, signal) {\n\t\tthis.logger.verbose(\"find(@search, @view, @paging)\", search, view, paging);\n\t\treturn this.reactor.find(search, view, paging, void 0, signal);\n\t}\n\t/**\n\t* Creates a document and waits for completion\n\t*/\n\tasync create(document, parentIdentifier, signal) {\n\t\tthis.logger.verbose(\"create(@id, @parentIdentifier)\", document.header.id, parentIdentifier);\n\t\tconst documentId = document.header.id;\n\t\tconst createActions = await signActions([createDocumentAction({\n\t\t\tmodel: document.header.documentType,\n\t\t\tversion: 0,\n\t\t\tdocumentId,\n\t\t\tsigning: {\n\t\t\t\tsignature: documentId,\n\t\t\t\tpublicKey: document.header.sig.publicKey,\n\t\t\t\tnonce: document.header.sig.nonce,\n\t\t\t\tcreatedAtUtcIso: document.header.createdAtUtcIso,\n\t\t\t\tdocumentType: document.header.documentType\n\t\t\t},\n\t\t\tslug: document.header.slug,\n\t\t\tname: document.header.name,\n\t\t\tbranch: document.header.branch,\n\t\t\tmeta: document.header.meta,\n\t\t\tprotocolVersions: document.header.protocolVersions ?? { \"base-reducer\": 2 }\n\t\t}), upgradeDocumentAction({\n\t\t\tdocumentId,\n\t\t\tmodel: document.header.documentType,\n\t\t\tfromVersion: 0,\n\t\t\ttoVersion: document.state.document.version,\n\t\t\tinitialState: document.state\n\t\t})], this.signer, signal);\n\t\tconst jobs = [{\n\t\t\tkey: \"create\",\n\t\t\tdocumentId,\n\t\t\tscope: getSharedActionScope(createActions),\n\t\t\tbranch: \"main\",\n\t\t\tactions: createActions,\n\t\t\tdependsOn: []\n\t\t}];\n\t\tif (parentIdentifier) {\n\t\t\tconst parentActions = await signActions([addRelationshipAction(parentIdentifier, documentId, \"child\")], this.signer, signal);\n\t\t\tjobs.push({\n\t\t\t\tkey: \"parent\",\n\t\t\t\tdocumentId: parentIdentifier,\n\t\t\t\tscope: getSharedActionScope(parentActions),\n\t\t\t\tbranch: \"main\",\n\t\t\t\tactions: parentActions,\n\t\t\t\tdependsOn: [\"create\"]\n\t\t\t});\n\t\t}\n\t\tconst batchResult = await this.reactor.executeBatch({ jobs }, signal);\n\t\tconst completedJobs = await Promise.all(Object.values(batchResult.jobs).map((job) => this.waitForJob(job, signal)));\n\t\tfor (const job of completedJobs) if (job.status === JobStatus.FAILED) throw new Error(job.error?.message);\n\t\treturn await this.reactor.get(documentId);\n\t}\n\t/**\n\t* Creates an empty document and waits for completion\n\t*/\n\tasync createEmpty(documentModelType, options, signal) {\n\t\tthis.logger.verbose(\"createEmpty(@documentModelType, @options)\", documentModelType, options);\n\t\tconst matchingModules = (await this.reactor.getDocumentModels(void 0, void 0, signal)).results.filter((m) => m.documentModel.global.id === documentModelType);\n\t\tlet module;\n\t\tif (options?.documentModelVersion !== void 0) {\n\t\t\tmodule = matchingModules.find((m) => m.version === options.documentModelVersion);\n\t\t\tif (!module) throw new Error(`Document model not found for type: ${documentModelType} with version: ${options.documentModelVersion}`);\n\t\t} else {\n\t\t\tmodule = matchingModules.reduce((latest, current) => {\n\t\t\t\tif (latest === void 0) return current;\n\t\t\t\treturn (current.version ?? 0) > (latest.version ?? 0) ? current : latest;\n\t\t\t}, void 0);\n\t\t\tif (!module) throw new Error(`Document model not found for type: ${documentModelType}`);\n\t\t}\n\t\tconst document = module.utils.createDocument();\n\t\tdocument.state.document.version = module.version ?? 1;\n\t\treturn this.create(document, options?.parentIdentifier, signal);\n\t}\n\t/**\n\t* Creates an empty document in a drive as a single batched operation.\n\t*/\n\tasync createDocumentInDrive(driveId, document, parentFolder, signal) {\n\t\tthis.logger.verbose(\"createDocumentInDrive(@driveId, @document, @parentFolder)\", driveId, document, parentFolder);\n\t\tconst documentId = document.header.id;\n\t\tconst documentActions = await signActions([\n\t\t\tcreateDocumentAction({\n\t\t\t\tmodel: document.header.documentType,\n\t\t\t\tversion: 0,\n\t\t\t\tdocumentId: document.header.id,\n\t\t\t\tsigning: {\n\t\t\t\t\tsignature: document.header.id,\n\t\t\t\t\tpublicKey: document.header.sig.publicKey,\n\t\t\t\t\tnonce: document.header.sig.nonce,\n\t\t\t\t\tcreatedAtUtcIso: document.header.createdAtUtcIso,\n\t\t\t\t\tdocumentType: document.header.documentType\n\t\t\t\t},\n\t\t\t\tslug: document.header.slug,\n\t\t\t\tname: document.header.name,\n\t\t\t\tbranch: document.header.branch,\n\t\t\t\tmeta: document.header.meta,\n\t\t\t\tprotocolVersions: document.header.protocolVersions ?? { \"base-reducer\": 2 }\n\t\t\t}),\n\t\t\tupgradeDocumentAction({\n\t\t\t\tdocumentId: document.header.id,\n\t\t\t\tmodel: document.header.documentType,\n\t\t\t\tfromVersion: 0,\n\t\t\t\ttoVersion: 1,\n\t\t\t\tinitialState: document.state\n\t\t\t}),\n\t\t\taddRelationshipAction(driveId, documentId, \"child\")\n\t\t], this.signer, signal);\n\t\tconst driveActions = await signActions([addFile({\n\t\t\tid: documentId,\n\t\t\tname: document.header.name || documentId,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tparentFolder\n\t\t})], this.signer, signal);\n\t\tconst batchResult = await this.reactor.executeBatch({ jobs: [{\n\t\t\tkey: \"document\",\n\t\t\tdocumentId,\n\t\t\tscope: getSharedActionScope(documentActions),\n\t\t\tbranch: \"main\",\n\t\t\tactions: documentActions,\n\t\t\tdependsOn: []\n\t\t}, {\n\t\t\tkey: \"drive\",\n\t\t\tdocumentId: driveId,\n\t\t\tscope: getSharedActionScope(driveActions),\n\t\t\tbranch: \"main\",\n\t\t\tactions: driveActions,\n\t\t\tdependsOn: [\"document\"]\n\t\t}] }, signal);\n\t\tconst completedJobs = await Promise.all(Object.values(batchResult.jobs).map((job) => this.waitForJob(job, signal)));\n\t\tfor (const job of completedJobs) if (job.status === JobStatus.FAILED) throw new Error(job.error?.message);\n\t\treturn this.reactor.get(documentId);\n\t}\n\t/**\n\t* Applies a list of actions to a document and waits for completion\n\t*/\n\tasync execute(documentIdentifier, branch, actions, signal) {\n\t\tthis.logger.verbose(\"execute(@documentIdentifier, @branch, @count actions)\", documentIdentifier, branch, actions.length);\n\t\tconst signedActions = await signActions(actions, this.signer, signal);\n\t\tconst jobInfo = await this.reactor.execute(documentIdentifier, branch, signedActions, signal);\n\t\tconst completedJob = await this.waitForJob(jobInfo, signal);\n\t\tif (completedJob.status === JobStatus.FAILED) throw new Error(completedJob.error?.message);\n\t\tconst view = { branch };\n\t\treturn await this.reactor.getByIdOrSlug(documentIdentifier, view, completedJob.consistencyToken, signal);\n\t}\n\t/**\n\t* Submits a list of actions to a document\n\t*/\n\tasync executeAsync(documentIdentifier, branch, actions, signal) {\n\t\tthis.logger.verbose(\"executeAsync(@documentIdentifier, @branch, @count actions)\", documentIdentifier, branch, actions.length);\n\t\tconst signedActions = await signActions(actions, this.signer, signal);\n\t\treturn this.reactor.execute(documentIdentifier, branch, signedActions, signal);\n\t}\n\t/**\n\t* Renames a document and waits for completion\n\t*/\n\tasync rename(documentIdentifier, name, branch = \"main\", signal) {\n\t\tthis.logger.verbose(\"rename(@documentIdentifier, @name, @branch)\", documentIdentifier, name, branch);\n\t\treturn this.execute(documentIdentifier, branch, [actions.setName(name)], signal);\n\t}\n\t/**\n\t* Adds multiple documents as children to another and waits for completion\n\t*/\n\tasync addChildren(parentIdentifier, documentIdentifiers, branch = \"main\", signal) {\n\t\tthis.logger.verbose(\"addChildren(@parentIdentifier, @count children, @branch)\", parentIdentifier, documentIdentifiers.length, branch);\n\t\tconst jobInfo = await this.reactor.addChildren(parentIdentifier, documentIdentifiers, branch, this.signer, signal);\n\t\tconst completedJob = await this.waitForJob(jobInfo, signal);\n\t\tif (completedJob.status === JobStatus.FAILED) throw new Error(completedJob.error?.message);\n\t\treturn await this.reactor.getByIdOrSlug(parentIdentifier, { branch }, completedJob.consistencyToken, signal);\n\t}\n\t/**\n\t* Removes multiple documents as children from another and waits for completion\n\t*/\n\tasync removeChildren(parentIdentifier, documentIdentifiers, branch = \"main\", signal) {\n\t\tthis.logger.verbose(\"removeChildren(@parentIdentifier, @count children, @branch)\", parentIdentifier, documentIdentifiers.length, branch);\n\t\tconst jobInfo = await this.reactor.removeChildren(parentIdentifier, documentIdentifiers, branch, this.signer, signal);\n\t\tconst completedJob = await this.waitForJob(jobInfo, signal);\n\t\tif (completedJob.status === JobStatus.FAILED) throw new Error(completedJob.error?.message);\n\t\treturn await this.reactor.getByIdOrSlug(parentIdentifier, { branch }, completedJob.consistencyToken, signal);\n\t}\n\t/**\n\t* Moves multiple documents from one parent to another and waits for completion\n\t*/\n\tasync moveChildren(sourceParentIdentifier, targetParentIdentifier, documentIdentifiers, branch = \"main\", signal) {\n\t\tthis.logger.verbose(\"moveChildren(@sourceParentIdentifier, @targetParentIdentifier, @count children, @branch)\", sourceParentIdentifier, targetParentIdentifier, documentIdentifiers.length, branch);\n\t\tconst removeJobInfo = await this.reactor.removeChildren(sourceParentIdentifier, documentIdentifiers, branch, this.signer, signal);\n\t\tconst removeCompletedJob = await this.waitForJob(removeJobInfo, signal);\n\t\tif (removeCompletedJob.status === JobStatus.FAILED) throw new Error(removeCompletedJob.error?.message);\n\t\tconst addJobInfo = await this.reactor.addChildren(targetParentIdentifier, documentIdentifiers, branch, this.signer, signal);\n\t\tconst addCompletedJob = await this.waitForJob(addJobInfo, signal);\n\t\tif (addCompletedJob.status === JobStatus.FAILED) throw new Error(addCompletedJob.error?.message);\n\t\treturn {\n\t\t\tsource: await this.reactor.getByIdOrSlug(sourceParentIdentifier, { branch }, removeCompletedJob.consistencyToken, signal),\n\t\t\ttarget: await this.reactor.getByIdOrSlug(targetParentIdentifier, { branch }, addCompletedJob.consistencyToken, signal)\n\t\t};\n\t}\n\tasync loadBatch(request, signal) {\n\t\tthis.logger.verbose(\"loadBatch(@count jobs)\", request.jobs.length);\n\t\tconst result = await this.reactor.loadBatch(request, signal);\n\t\tconst completedJobs = await Promise.all(Object.entries(result.jobs).map(async ([key, jobInfo]) => {\n\t\t\treturn [key, await this.waitForJob(jobInfo, signal)];\n\t\t}));\n\t\tfor (const [, completedJob] of completedJobs) if (completedJob.status === JobStatus.FAILED) throw new Error(completedJob.error?.message);\n\t\treturn { jobs: Object.fromEntries(completedJobs) };\n\t}\n\t/**\n\t* Deletes a document and waits for completion\n\t*/\n\tasync deleteDocument(identifier, propagate, signal) {\n\t\tthis.logger.verbose(\"deleteDocument(@identifier, @propagate)\", identifier, propagate);\n\t\tconst jobs = [];\n\t\tif (propagate === PropagationMode.Cascade) {\n\t\t\tconst descendants = [];\n\t\t\tconst queue = [identifier];\n\t\t\tconst visited = /* @__PURE__ */ new Set();\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tconst currentId = queue.shift();\n\t\t\t\tif (visited.has(currentId)) continue;\n\t\t\t\tvisited.add(currentId);\n\t\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\t\tconst relationships = await this.documentIndexer.getOutgoing(currentId, [\"child\"], void 0, void 0, signal);\n\t\t\t\tfor (const rel of relationships.results) if (!visited.has(rel.targetId)) {\n\t\t\t\t\tdescendants.push(rel.targetId);\n\t\t\t\t\tqueue.push(rel.targetId);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const descendantId of descendants) {\n\t\t\t\tconst removalJobs = await this.removeFromAllParents(descendantId, signal);\n\t\t\t\tjobs.push(...removalJobs);\n\t\t\t\tconst jobInfo = await this.reactor.deleteDocument(descendantId, this.signer, signal);\n\t\t\t\tjobs.push(jobInfo);\n\t\t\t}\n\t\t}\n\t\tconst removalJobs = await this.removeFromAllParents(identifier, signal);\n\t\tjobs.push(...removalJobs);\n\t\tconst jobInfo = await this.reactor.deleteDocument(identifier, this.signer, signal);\n\t\tjobs.push(jobInfo);\n\t\tconst completedJobs = await Promise.all(jobs.map((job) => this.waitForJob(job, signal)));\n\t\tfor (const completedJob of completedJobs) if (completedJob.status === JobStatus.FAILED) throw new Error(completedJob.error?.message);\n\t}\n\t/**\n\t* Deletes documents and waits for completion\n\t*/\n\tasync deleteDocuments(identifiers, propagate, signal) {\n\t\tthis.logger.verbose(\"deleteDocuments(@count identifiers, @propagate)\", identifiers.length, propagate);\n\t\tconst deletePromises = identifiers.map((identifier) => this.deleteDocument(identifier, propagate, signal));\n\t\tawait Promise.all(deletePromises);\n\t}\n\t/**\n\t* Retrieves the status of a job\n\t*/\n\tasync getJobStatus(jobId, signal) {\n\t\tthis.logger.verbose(\"getJobStatus(@jobId)\", jobId);\n\t\treturn this.reactor.getJobStatus(jobId, signal);\n\t}\n\t/**\n\t* Waits for a job to complete\n\t*/\n\tasync waitForJob(jobId, signal) {\n\t\tconst id = typeof jobId === \"string\" ? jobId : jobId.id;\n\t\tthis.logger.verbose(\"waitForJob(@id)\", id);\n\t\treturn this.jobAwaiter.waitForJob(id, signal);\n\t}\n\t/**\n\t* Subscribes to changes for documents matching specified filters\n\t*/\n\tsubscribe(search, callback, view) {\n\t\tthis.logger.verbose(\"subscribe(@search, @view)\", search, view);\n\t\tconst unsubscribeCreated = this.subscriptionManager.onDocumentCreated((result) => {\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst documents = await Promise.all(result.results.map((id) => this.reactor.get(id, view, void 0, void 0)));\n\t\t\t\t\tcallback({\n\t\t\t\t\t\ttype: DocumentChangeType.Created,\n\t\t\t\t\t\tdocuments\n\t\t\t\t\t});\n\t\t\t\t} catch {}\n\t\t\t})();\n\t\t}, search);\n\t\tconst unsubscribeDeleted = this.subscriptionManager.onDocumentDeleted((documentIds) => {\n\t\t\tcallback({\n\t\t\t\ttype: DocumentChangeType.Deleted,\n\t\t\t\tdocuments: [],\n\t\t\t\tcontext: { childId: documentIds[0] }\n\t\t\t});\n\t\t}, search);\n\t\tconst unsubscribeUpdated = this.subscriptionManager.onDocumentStateUpdated((result) => {\n\t\t\tcallback({\n\t\t\t\ttype: DocumentChangeType.Updated,\n\t\t\t\tdocuments: result.results\n\t\t\t});\n\t\t}, search, view);\n\t\tconst unsubscribeRelationship = this.subscriptionManager.onRelationshipChanged((parentId, childId, changeType) => {\n\t\t\tcallback({\n\t\t\t\ttype: changeType === RelationshipChangeType.Added ? DocumentChangeType.ChildAdded : DocumentChangeType.ChildRemoved,\n\t\t\t\tdocuments: [],\n\t\t\t\tcontext: {\n\t\t\t\t\tparentId,\n\t\t\t\t\tchildId\n\t\t\t\t}\n\t\t\t});\n\t\t}, search);\n\t\treturn () => {\n\t\t\tunsubscribeCreated();\n\t\t\tunsubscribeDeleted();\n\t\t\tunsubscribeUpdated();\n\t\t\tunsubscribeRelationship();\n\t\t};\n\t}\n\tasync removeFromAllParents(documentId, signal) {\n\t\tconst incoming = await this.documentIndexer.getIncoming(documentId, void 0, void 0, void 0, signal);\n\t\tconst jobs = [];\n\t\tfor (const rel of incoming.results) {\n\t\t\tconst parentId = rel.sourceId;\n\t\t\tlet parentDoc;\n\t\t\ttry {\n\t\t\t\tparentDoc = await this.reactor.get(parentId, void 0, void 0, signal);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst isDrive = parentDoc.header.documentType === \"powerhouse/document-drive\";\n\t\t\tconst relationshipActions = await signActions([removeRelationshipAction(parentId, documentId, rel.relationshipType)], this.signer, signal);\n\t\t\tif (isDrive) {\n\t\t\t\tconst driveActions = await signActions([deleteNode({ id: documentId })], this.signer, signal);\n\t\t\t\tconst batchResult = await this.reactor.executeBatch({ jobs: [{\n\t\t\t\t\tkey: \"relationship\",\n\t\t\t\t\tdocumentId: parentId,\n\t\t\t\t\tscope: getSharedActionScope(relationshipActions),\n\t\t\t\t\tbranch: \"main\",\n\t\t\t\t\tactions: relationshipActions,\n\t\t\t\t\tdependsOn: []\n\t\t\t\t}, {\n\t\t\t\t\tkey: \"drive\",\n\t\t\t\t\tdocumentId: parentId,\n\t\t\t\t\tscope: getSharedActionScope(driveActions),\n\t\t\t\t\tbranch: \"main\",\n\t\t\t\t\tactions: driveActions,\n\t\t\t\t\tdependsOn: [\"relationship\"]\n\t\t\t\t}] }, signal);\n\t\t\t\tjobs.push(...Object.values(batchResult.jobs));\n\t\t\t} else {\n\t\t\t\tconst jobInfo = await this.reactor.removeChildren(parentId, [documentId], \"main\", this.signer, signal);\n\t\t\t\tjobs.push(jobInfo);\n\t\t\t}\n\t\t}\n\t\treturn jobs;\n\t}\n};\n//#endregion\n//#region src/cache/collection-membership-cache.ts\nvar CollectionMembershipCache = class CollectionMembershipCache {\n\tcache = /* @__PURE__ */ new Map();\n\tconstructor(operationIndex) {\n\t\tthis.operationIndex = operationIndex;\n\t}\n\twithScopedIndex(operationIndex) {\n\t\tconst scoped = new CollectionMembershipCache(operationIndex);\n\t\tscoped.cache = this.cache;\n\t\treturn scoped;\n\t}\n\tasync getCollectionsForDocuments(documentIds) {\n\t\tconst result = {};\n\t\tconst missing = [];\n\t\tfor (const docId of documentIds) {\n\t\t\tconst cached = this.cache.get(docId);\n\t\t\tif (cached !== void 0) result[docId] = cached;\n\t\t\telse missing.push(docId);\n\t\t}\n\t\tif (missing.length > 0) {\n\t\t\tconst fromDb = await this.operationIndex.getCollectionsForDocuments(missing);\n\t\t\tfor (const docId of missing) {\n\t\t\t\tconst collections = fromDb[docId] ?? [];\n\t\t\t\tresult[docId] = collections;\n\t\t\t\tthis.cache.set(docId, collections);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\tinvalidate(documentId) {\n\t\tthis.cache.delete(documentId);\n\t}\n};\n//#endregion\n//#region src/shared/errors.ts\n/**\n* Error thrown when attempting to access a deleted document.\n*/\nvar DocumentDeletedError = class DocumentDeletedError extends Error {\n\tdocumentId;\n\tdeletedAtUtcIso;\n\tconstructor(documentId, deletedAtUtcIso = null) {\n\t\tconst message = deletedAtUtcIso ? `Document ${documentId} was deleted at ${deletedAtUtcIso}` : `Document ${documentId} has been deleted`;\n\t\tsuper(message);\n\t\tthis.name = \"DocumentDeletedError\";\n\t\tthis.documentId = documentId;\n\t\tthis.deletedAtUtcIso = deletedAtUtcIso;\n\t\tError.captureStackTrace(this, DocumentDeletedError);\n\t}\n\tstatic isError(error) {\n\t\treturn Error.isError(error) && error.name === \"DocumentDeletedError\";\n\t}\n};\n/**\n* Error thrown when an operation has an invalid signature.\n*/\nvar InvalidSignatureError = class InvalidSignatureError extends Error {\n\tdocumentId;\n\treason;\n\tconstructor(documentId, reason) {\n\t\tsuper(`Invalid signature in document ${documentId}: ${reason}`);\n\t\tthis.name = \"InvalidSignatureError\";\n\t\tthis.documentId = documentId;\n\t\tthis.reason = reason;\n\t\tError.captureStackTrace(this, InvalidSignatureError);\n\t}\n};\n/**\n* Error thrown when attempting to downgrade a document version.\n*/\nvar DowngradeNotSupportedError$1 = class DowngradeNotSupportedError$1 extends Error {\n\tdocumentType;\n\tfromVersion;\n\ttoVersion;\n\tconstructor(documentType, fromVersion, toVersion) {\n\t\tsuper(`Downgrade not supported for ${documentType}: cannot upgrade from version ${fromVersion} to ${toVersion}`);\n\t\tthis.name = \"DowngradeNotSupportedError\";\n\t\tthis.documentType = documentType;\n\t\tthis.fromVersion = fromVersion;\n\t\tthis.toVersion = toVersion;\n\t\tError.captureStackTrace(this, DowngradeNotSupportedError$1);\n\t}\n};\n/**\n* Error thrown when a document is not found (no operations exist for the document ID).\n*/\nvar DocumentNotFoundError = class DocumentNotFoundError extends Error {\n\tdocumentId;\n\tconstructor(documentId) {\n\t\tsuper(`Document ${documentId} not found`);\n\t\tthis.name = \"DocumentNotFoundError\";\n\t\tthis.documentId = documentId;\n\t\tError.captureStackTrace(this, DocumentNotFoundError);\n\t}\n\tstatic isError(error) {\n\t\treturn Error.isError(error) && error.name === \"DocumentNotFoundError\";\n\t}\n};\n//#endregion\n//#region src/executor/util.ts\n/**\n* Creates a PHDocument from a CREATE_DOCUMENT action input.\n* Reconstructs the document header and initializes the base state.\n*\n* @param action - The CREATE_DOCUMENT action containing the document parameters\n* @returns A newly constructed PHDocument with initialized header and base state\n*/\nfunction createDocumentFromAction(action) {\n\tconst input = action.input;\n\tconst header = createPresignedHeader();\n\theader.id = input.documentId;\n\theader.documentType = input.model;\n\tif (input.signing) {\n\t\theader.createdAtUtcIso = input.signing.createdAtUtcIso;\n\t\theader.lastModifiedAtUtcIso = input.signing.createdAtUtcIso;\n\t\theader.sig = {\n\t\t\tpublicKey: input.signing.publicKey,\n\t\t\tnonce: input.signing.nonce\n\t\t};\n\t}\n\tif (input.slug !== void 0) header.slug = input.slug;\n\tif (!header.slug) header.slug = input.documentId;\n\tif (input.name !== void 0) header.name = input.name;\n\tif (input.branch !== void 0) header.branch = input.branch;\n\tif (input.meta !== void 0) header.meta = input.meta;\n\tif (input.protocolVersions !== void 0) header.protocolVersions = input.protocolVersions;\n\tconst baseState = defaultBaseState();\n\treturn {\n\t\theader,\n\t\toperations: {},\n\t\tstate: baseState,\n\t\tinitialState: baseState,\n\t\tclipboard: []\n\t};\n}\n/**\n* Applies an UPGRADE_DOCUMENT action to a document.\n* Handles all upgrade scenarios including initial upgrades, no-ops, and multi-step upgrades.\n*\n* Behavior based on fromVersion/toVersion:\n* - fromVersion === toVersion (and fromVersion > 0): No-op - return unchanged document\n* - fromVersion > toVersion: Throw DowngradeNotSupportedError\n* - All other cases: Apply upgradePath transitions (if provided), then apply initialState, set version\n*\n* The initialState from the action is always applied (if provided) to maintain backward\n* compatibility with the original implementation.\n*\n* @param document - The document to upgrade\n* @param action - The UPGRADE_DOCUMENT action\n* @param upgradePath - Optional pre-computed upgrade path for multi-step upgrades\n* @returns The upgraded document (unchanged if no-op)\n* @throws DowngradeNotSupportedError if attempting to downgrade\n*/\nfunction applyUpgradeDocumentAction(document, action, upgradePath) {\n\tconst fromVersion = action.input.fromVersion;\n\tconst toVersion = action.input.toVersion;\n\tif (fromVersion === toVersion && fromVersion > 0) return document;\n\tif (fromVersion > toVersion) throw new DowngradeNotSupportedError$1(document.header.documentType, fromVersion, toVersion);\n\tif (upgradePath) for (const transition of upgradePath) document = transition.upgradeReducer(document, action);\n\tapplyInitialState(document, action);\n\tdocument.state.document = {\n\t\t...document.state.document,\n\t\tversion: toVersion\n\t};\n\treturn document;\n}\nfunction applyInitialState(document, action) {\n\tconst input = action.input;\n\tconst newState = input.initialState || input.state;\n\tif (newState) {\n\t\tdocument.state = {\n\t\t\t...document.state,\n\t\t\t...newState\n\t\t};\n\t\tdocument.initialState = document.state;\n\t}\n}\n/**\n* Applies a DELETE_DOCUMENT action to a document.\n* Marks the document as deleted in the document scope state.\n*\n* @param document - The document to mark as deleted\n* @param action - The DELETE_DOCUMENT action\n* @returns The updated document (mutates in place and returns for convenience)\n*/\nfunction applyDeleteDocumentAction(document, action) {\n\tconst deletedAt = action.timestampUtcMs || (/* @__PURE__ */ new Date()).toISOString();\n\tdocument.state = {\n\t\t...document.state,\n\t\tdocument: {\n\t\t\t...document.state.document,\n\t\t\tisDeleted: true,\n\t\t\tdeletedAtUtcIso: deletedAt\n\t\t}\n\t};\n\treturn document;\n}\n/**\n* Calculate the next operation index for a specific scope.\n* Each scope maintains its own independent index sequence.\n*\n* Per-scope indexing means:\n* - Each scope (document, global, local, etc.) has independent indexes\n* - Indexes start at 0 for each scope\n* - Different scopes can have operations with the same index value\n*\n* This function uses header.revision which is populated by the cache/storage layer\n* and contains the next available index for each scope. This design avoids requiring\n* the full operation history to be loaded, which is crucial for snapshot-based caching.\n*\n* @param document - The document whose header.revision to inspect\n* @param scope - The scope to calculate the next index for\n* @returns The next available index in the specified scope\n*/\nconst getNextIndexForScope = (document, scope) => {\n\treturn document.header.revision[scope] || 0;\n};\n/**\n* Creates an empty consistency token with no coordinates.\n* Used when a job is registered or fails without writing operations.\n*\n* @returns A consistency token with an empty coordinates array\n*/\nfunction createEmptyConsistencyToken() {\n\treturn {\n\t\tversion: 1,\n\t\tcreatedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tcoordinates: []\n\t};\n}\n/**\n* Creates a consistency token from operations written during job execution.\n* Maps each operation to a consistency coordinate tracking (documentId, scope, branch, operationIndex).\n* If no operations are provided, returns an empty token.\n*\n* @param operationsWithContext - Array of operations with their execution context\n* @returns A consistency token representing all operations written\n*/\nfunction createConsistencyToken(operationsWithContext) {\n\tif (operationsWithContext.length === 0) return createEmptyConsistencyToken();\n\tconst coordinates = [];\n\tfor (let i = 0; i < operationsWithContext.length; i++) {\n\t\tconst opWithContext = operationsWithContext[i];\n\t\tcoordinates.push({\n\t\t\tdocumentId: opWithContext.context.documentId,\n\t\t\tscope: opWithContext.context.scope,\n\t\t\tbranch: opWithContext.context.branch,\n\t\t\toperationIndex: opWithContext.operation.index\n\t\t});\n\t}\n\treturn {\n\t\tversion: 1,\n\t\tcreatedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tcoordinates\n\t};\n}\nfunction createOperation(action, index, skip, context) {\n\treturn {\n\t\tid: deriveOperationId(context.documentId, context.scope, context.branch, action.id),\n\t\tindex,\n\t\ttimestampUtcMs: action.timestampUtcMs || (/* @__PURE__ */ new Date()).toISOString(),\n\t\thash: \"\",\n\t\tskip,\n\t\taction\n\t};\n}\nfunction updateDocumentRevision(document, scope, operationIndex) {\n\tdocument.header.revision = {\n\t\t...document.header.revision,\n\t\t[scope]: operationIndex + 1\n\t};\n}\nfunction buildSuccessResult(job, operation, documentId, documentType, resultingState, startTime) {\n\treturn {\n\t\tjob,\n\t\tsuccess: true,\n\t\toperations: [operation],\n\t\toperationsWithContext: [{\n\t\t\toperation,\n\t\t\tcontext: {\n\t\t\t\tdocumentId,\n\t\t\t\tscope: job.scope,\n\t\t\t\tbranch: job.branch,\n\t\t\t\tdocumentType,\n\t\t\t\tresultingState,\n\t\t\t\tordinal: 0\n\t\t\t}\n\t\t}],\n\t\tduration: Date.now() - startTime\n\t};\n}\nfunction buildErrorResult(job, error, startTime) {\n\treturn {\n\t\tjob,\n\t\tsuccess: false,\n\t\terror,\n\t\tduration: Date.now() - startTime\n\t};\n}\n//#endregion\n//#region src/cache/lru/lru-tracker.ts\nvar LRUNode = class {\n\tkey;\n\tprev;\n\tnext;\n\tconstructor(key) {\n\t\tthis.key = key;\n\t\tthis.prev = void 0;\n\t\tthis.next = void 0;\n\t}\n};\nvar LRUTracker = class {\n\tmap;\n\thead;\n\ttail;\n\tconstructor() {\n\t\tthis.map = /* @__PURE__ */ new Map();\n\t\tthis.head = void 0;\n\t\tthis.tail = void 0;\n\t}\n\tget size() {\n\t\treturn this.map.size;\n\t}\n\ttouch(key) {\n\t\tconst node = this.map.get(key);\n\t\tif (node) this.moveToFront(node);\n\t\telse this.addToFront(key);\n\t}\n\tevict() {\n\t\tif (!this.tail) return;\n\t\tconst key = this.tail.key;\n\t\tthis.remove(key);\n\t\treturn key;\n\t}\n\tremove(key) {\n\t\tconst node = this.map.get(key);\n\t\tif (!node) return;\n\t\tthis.removeNode(node);\n\t\tthis.map.delete(key);\n\t}\n\tclear() {\n\t\tthis.map.clear();\n\t\tthis.head = void 0;\n\t\tthis.tail = void 0;\n\t}\n\taddToFront(key) {\n\t\tconst node = new LRUNode(key);\n\t\tthis.map.set(key, node);\n\t\tif (!this.head) {\n\t\t\tthis.head = node;\n\t\t\tthis.tail = node;\n\t\t} else {\n\t\t\tnode.next = this.head;\n\t\t\tthis.head.prev = node;\n\t\t\tthis.head = node;\n\t\t}\n\t}\n\tmoveToFront(node) {\n\t\tif (node === this.head) return;\n\t\tthis.removeNode(node);\n\t\tnode.prev = void 0;\n\t\tnode.next = this.head;\n\t\tif (this.head) this.head.prev = node;\n\t\tthis.head = node;\n\t\tif (!this.tail) this.tail = node;\n\t}\n\tremoveNode(node) {\n\t\tif (node.prev) node.prev.next = node.next;\n\t\telse this.head = node.next;\n\t\tif (node.next) node.next.prev = node.prev;\n\t\telse this.tail = node.prev;\n\t}\n};\n//#endregion\n//#region src/cache/document-meta-cache.ts\n/**\n* In-memory document metadata cache with LRU eviction.\n*\n* Caches PHDocumentState per (documentId, branch) key. On cache miss,\n* rebuilds from document scope operations. Provides an explicit cross-scope\n* contract for accessing document scope metadata.\n*\n* **Thread Safety:**\n* Not thread-safe. Designed for single-threaded job executor environment.\n*/\nvar DocumentMetaCache = class DocumentMetaCache {\n\tcache;\n\tlruTracker;\n\toperationStore;\n\tconfig;\n\tconstructor(operationStore, config) {\n\t\tthis.operationStore = operationStore;\n\t\tthis.config = { maxDocuments: config.maxDocuments };\n\t\tthis.cache = /* @__PURE__ */ new Map();\n\t\tthis.lruTracker = new LRUTracker();\n\t}\n\twithScopedStore(operationStore) {\n\t\tconst scoped = new DocumentMetaCache(operationStore, this.config);\n\t\tscoped.cache = this.cache;\n\t\tscoped.lruTracker = this.lruTracker;\n\t\treturn scoped;\n\t}\n\tasync startup() {\n\t\treturn Promise.resolve();\n\t}\n\tasync shutdown() {\n\t\treturn Promise.resolve();\n\t}\n\tasync getDocumentMeta(documentId, branch, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst key = this.makeKey(documentId, branch);\n\t\tconst cached = this.cache.get(key);\n\t\tif (cached) {\n\t\t\tthis.lruTracker.touch(key);\n\t\t\treturn cached;\n\t\t}\n\t\tconst meta = await this.rebuildLatest(documentId, branch, signal);\n\t\tthis.putDocumentMeta(documentId, branch, meta);\n\t\treturn meta;\n\t}\n\tasync rebuildAtRevision(documentId, branch, targetRevision, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn this.rebuildFromOperations(documentId, branch, targetRevision, signal);\n\t}\n\tputDocumentMeta(documentId, branch, meta) {\n\t\tconst key = this.makeKey(documentId, branch);\n\t\tif (!this.cache.has(key) && this.cache.size >= this.config.maxDocuments) {\n\t\t\tconst evictKey = this.lruTracker.evict();\n\t\t\tif (evictKey) this.cache.delete(evictKey);\n\t\t}\n\t\tthis.cache.set(key, structuredClone(meta));\n\t\tthis.lruTracker.touch(key);\n\t}\n\tinvalidate(documentId, branch) {\n\t\tlet evicted = 0;\n\t\tif (branch === void 0) {\n\t\t\tfor (const key of this.cache.keys()) if (key.startsWith(`${documentId}:`)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tthis.lruTracker.remove(key);\n\t\t\t\tevicted++;\n\t\t\t}\n\t\t} else {\n\t\t\tconst key = this.makeKey(documentId, branch);\n\t\t\tif (this.cache.has(key)) {\n\t\t\t\tthis.cache.delete(key);\n\t\t\t\tthis.lruTracker.remove(key);\n\t\t\t\tevicted = 1;\n\t\t\t}\n\t\t}\n\t\treturn evicted;\n\t}\n\tclear() {\n\t\tthis.cache.clear();\n\t\tthis.lruTracker.clear();\n\t}\n\tmakeKey(documentId, branch) {\n\t\treturn `${documentId}:${branch}`;\n\t}\n\tasync rebuildLatest(documentId, branch, signal) {\n\t\treturn this.rebuildFromOperations(documentId, branch, void 0, signal);\n\t}\n\tasync rebuildFromOperations(documentId, branch, targetRevision, signal) {\n\t\tconst docScopeOps = await this.operationStore.getSince(documentId, \"document\", branch, -1, void 0, void 0, signal);\n\t\tif (docScopeOps.results.length === 0) throw new DocumentNotFoundError(documentId);\n\t\tconst createOp = docScopeOps.results[0];\n\t\tif (createOp.action.type !== \"CREATE_DOCUMENT\") throw new Error(`Invalid document: first operation must be CREATE_DOCUMENT, found ${createOp.action.type}`);\n\t\tconst createAction = createOp.action;\n\t\tconst documentType = createAction.input.model;\n\t\tlet document = createDocumentFromAction(createAction);\n\t\tlet documentScopeRevision = 0;\n\t\tfor (const op of docScopeOps.results) {\n\t\t\tif (targetRevision !== void 0 && op.index > targetRevision) break;\n\t\t\tdocumentScopeRevision = op.index;\n\t\t\tif (op.action.type === \"UPGRADE_DOCUMENT\") {\n\t\t\t\tconst upgradeAction = op.action;\n\t\t\t\tdocument = applyUpgradeDocumentAction(document, upgradeAction);\n\t\t\t} else if (op.action.type === \"DELETE_DOCUMENT\") document = applyDeleteDocumentAction(document, op.action);\n\t\t}\n\t\treturn {\n\t\t\tstate: document.state.document,\n\t\t\tdocumentType,\n\t\t\tdocumentScopeRevision: documentScopeRevision + 1\n\t\t};\n\t}\n};\n//#endregion\n//#region src/cache/kysely-operation-index.ts\nvar KyselyOperationIndexTxn = class {\n\tcollections = [];\n\tcollectionMemberships = [];\n\tcollectionRemovals = [];\n\toperations = [];\n\tcreateCollection(collectionId) {\n\t\tthis.collections.push(collectionId);\n\t}\n\taddToCollection(collectionId, documentId) {\n\t\tconst lastOpIndex = this.operations.length - 1;\n\t\tif (lastOpIndex < 0) throw new Error(\"addToCollection must be called after write() - no operations in transaction\");\n\t\tthis.collectionMemberships.push({\n\t\t\tcollectionId,\n\t\t\tdocumentId,\n\t\t\toperationIndex: lastOpIndex\n\t\t});\n\t}\n\tremoveFromCollection(collectionId, documentId) {\n\t\tconst lastOpIndex = this.operations.length - 1;\n\t\tif (lastOpIndex < 0) throw new Error(\"removeFromCollection must be called after write() - no operations in transaction\");\n\t\tthis.collectionRemovals.push({\n\t\t\tcollectionId,\n\t\t\tdocumentId,\n\t\t\toperationIndex: lastOpIndex\n\t\t});\n\t}\n\twrite(operations) {\n\t\tthis.operations.push(...operations);\n\t}\n\tgetCollections() {\n\t\treturn this.collections;\n\t}\n\tgetCollectionMembershipRecords() {\n\t\treturn this.collectionMemberships;\n\t}\n\tgetCollectionRemovals() {\n\t\treturn this.collectionRemovals;\n\t}\n\tgetOperations() {\n\t\treturn this.operations;\n\t}\n};\nvar KyselyOperationIndex = class KyselyOperationIndex {\n\ttrx;\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tget queryExecutor() {\n\t\treturn this.trx ?? this.db;\n\t}\n\twithTransaction(trx) {\n\t\tconst instance = new KyselyOperationIndex(this.db);\n\t\tinstance.trx = trx;\n\t\treturn instance;\n\t}\n\tstart() {\n\t\treturn new KyselyOperationIndexTxn();\n\t}\n\tasync commit(txn, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst kyselyTxn = txn;\n\t\tif (this.trx) return this.executeCommit(this.trx, kyselyTxn);\n\t\tlet resultOrdinals = [];\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tresultOrdinals = await this.executeCommit(trx, kyselyTxn);\n\t\t});\n\t\treturn resultOrdinals;\n\t}\n\tasync executeCommit(trx, kyselyTxn) {\n\t\tconst collections = kyselyTxn.getCollections();\n\t\tconst memberships = kyselyTxn.getCollectionMembershipRecords();\n\t\tconst removals = kyselyTxn.getCollectionRemovals();\n\t\tconst operations = kyselyTxn.getOperations();\n\t\tif (collections.length > 0) {\n\t\t\tconst collectionRows = collections.map((collectionId) => ({\n\t\t\t\tdocumentId: collectionId,\n\t\t\t\tcollectionId,\n\t\t\t\tjoinedOrdinal: BigInt(0),\n\t\t\t\tleftOrdinal: null\n\t\t\t}));\n\t\t\tawait trx.insertInto(\"document_collections\").values(collectionRows).onConflict((oc) => oc.doNothing()).execute();\n\t\t}\n\t\tlet operationOrdinals = [];\n\t\tif (operations.length > 0) {\n\t\t\tconst operationRows = operations.map((op) => ({\n\t\t\t\topId: op.id || \"\",\n\t\t\t\tdocumentId: op.documentId,\n\t\t\t\tdocumentType: op.documentType,\n\t\t\t\tscope: op.scope,\n\t\t\t\tbranch: op.branch,\n\t\t\t\ttimestampUtcMs: op.timestampUtcMs,\n\t\t\t\tindex: op.index,\n\t\t\t\tskip: op.skip,\n\t\t\t\thash: op.hash,\n\t\t\t\taction: op.action,\n\t\t\t\tsourceRemote: op.sourceRemote\n\t\t\t}));\n\t\t\toperationOrdinals = (await trx.insertInto(\"operation_index_operations\").values(operationRows).returning(\"ordinal\").execute()).map((row) => row.ordinal);\n\t\t}\n\t\tif (memberships.length > 0) for (const m of memberships) {\n\t\t\tconst ordinal = operationOrdinals[m.operationIndex];\n\t\t\tawait trx.insertInto(\"document_collections\").values({\n\t\t\t\tdocumentId: m.documentId,\n\t\t\t\tcollectionId: m.collectionId,\n\t\t\t\tjoinedOrdinal: BigInt(ordinal),\n\t\t\t\tleftOrdinal: null\n\t\t\t}).onConflict((oc) => oc.columns([\"documentId\", \"collectionId\"]).doUpdateSet({\n\t\t\t\tjoinedOrdinal: BigInt(ordinal),\n\t\t\t\tleftOrdinal: null\n\t\t\t})).execute();\n\t\t}\n\t\tif (removals.length > 0) for (const r of removals) {\n\t\t\tconst ordinal = operationOrdinals[r.operationIndex];\n\t\t\tawait trx.updateTable(\"document_collections\").set({ leftOrdinal: BigInt(ordinal) }).where(\"collectionId\", \"=\", r.collectionId).where(\"documentId\", \"=\", r.documentId).where(\"leftOrdinal\", \"is\", null).execute();\n\t\t}\n\t\treturn operationOrdinals;\n\t}\n\tasync find(collectionId, cursor, view, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"operation_index_operations as oi\").innerJoin(\"document_collections as dc\", \"oi.documentId\", \"dc.documentId\").selectAll(\"oi\").select([\"dc.documentId\", \"dc.collectionId\"]).where(\"dc.collectionId\", \"=\", collectionId).where(sql`(dc.\"leftOrdinal\" IS NULL OR oi.ordinal < dc.\"leftOrdinal\")`).orderBy(\"oi.ordinal\", \"asc\");\n\t\tif (cursor !== void 0) query = query.where(\"oi.ordinal\", \">\", cursor);\n\t\tif (view?.branch) query = query.where(\"oi.branch\", \"=\", view.branch);\n\t\tif (view?.scopes && view.scopes.length > 0) query = query.where(\"oi.scope\", \"in\", view.scopes);\n\t\tif (view?.excludeSourceRemote) query = query.where(\"oi.sourceRemote\", \"!=\", view.excludeSourceRemote);\n\t\tif (paging?.cursor) {\n\t\t\tconst cursorOrdinal = Number.parseInt(paging.cursor, 10);\n\t\t\tquery = query.where(\"oi.ordinal\", \">\", cursorOrdinal);\n\t\t}\n\t\tif (paging?.limit) query = query.limit(paging.limit + 1);\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].ordinal.toString() : void 0;\n\t\tconst cursorValue = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperationIndexEntry(row)),\n\t\t\toptions: {\n\t\t\t\tcursor: cursorValue,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.find(collectionId, cursor, view, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\tasync get(documentId, view, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"operation_index_operations\").selectAll().where(\"documentId\", \"=\", documentId).orderBy(\"ordinal\", \"asc\");\n\t\tif (view?.branch) query = query.where(\"branch\", \"=\", view.branch);\n\t\tif (view?.scopes && view.scopes.length > 0) query = query.where(\"scope\", \"in\", view.scopes);\n\t\tif (paging?.cursor) {\n\t\t\tconst cursorOrdinal = Number.parseInt(paging.cursor, 10);\n\t\t\tquery = query.where(\"ordinal\", \">\", cursorOrdinal);\n\t\t}\n\t\tif (paging?.limit) query = query.limit(paging.limit + 1);\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].ordinal.toString() : void 0;\n\t\tconst cursorValue = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperationIndexEntry(row)),\n\t\t\toptions: {\n\t\t\t\tcursor: cursorValue,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.get(documentId, view, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\tasync getSinceOrdinal(ordinal, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"operation_index_operations\").selectAll().where(\"ordinal\", \">\", ordinal).orderBy(\"ordinal\", \"asc\");\n\t\tif (paging?.cursor) {\n\t\t\tconst cursorOrdinal = Number.parseInt(paging.cursor, 10);\n\t\t\tquery = query.where(\"ordinal\", \">\", cursorOrdinal);\n\t\t}\n\t\tif (paging?.limit) query = query.limit(paging.limit + 1);\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].ordinal.toString() : void 0;\n\t\tconst cursorValue = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperationWithContext(row)),\n\t\t\toptions: {\n\t\t\t\tcursor: cursorValue,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getSinceOrdinal(ordinal, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\trowToOperationWithContext(row) {\n\t\treturn {\n\t\t\toperation: {\n\t\t\t\tindex: row.index,\n\t\t\t\ttimestampUtcMs: row.timestampUtcMs,\n\t\t\t\thash: row.hash,\n\t\t\t\tskip: row.skip,\n\t\t\t\taction: row.action,\n\t\t\t\tid: row.opId\n\t\t\t},\n\t\t\tcontext: {\n\t\t\t\tdocumentId: row.documentId,\n\t\t\t\tdocumentType: row.documentType,\n\t\t\t\tscope: row.scope,\n\t\t\t\tbranch: row.branch,\n\t\t\t\tordinal: row.ordinal\n\t\t\t}\n\t\t};\n\t}\n\trowToOperationIndexEntry(row) {\n\t\treturn {\n\t\t\tordinal: row.ordinal,\n\t\t\tdocumentId: row.documentId,\n\t\t\tdocumentType: row.documentType,\n\t\t\tbranch: row.branch,\n\t\t\tscope: row.scope,\n\t\t\tindex: row.index,\n\t\t\ttimestampUtcMs: row.timestampUtcMs,\n\t\t\thash: row.hash,\n\t\t\tskip: row.skip,\n\t\t\taction: row.action,\n\t\t\tid: row.opId,\n\t\t\tsourceRemote: row.sourceRemote\n\t\t};\n\t}\n\tasync getLatestTimestampForCollection(collectionId, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn (await this.queryExecutor.selectFrom(\"operation_index_operations as oi\").innerJoin(\"document_collections as dc\", \"oi.documentId\", \"dc.documentId\").select(\"oi.timestampUtcMs\").where(\"dc.collectionId\", \"=\", collectionId).where(sql`(dc.\"leftOrdinal\" IS NULL OR oi.ordinal < dc.\"leftOrdinal\")`).orderBy(\"oi.ordinal\", \"desc\").limit(1).executeTakeFirst())?.timestampUtcMs ?? null;\n\t}\n\tasync getCollectionsForDocuments(documentIds) {\n\t\tif (documentIds.length === 0) return {};\n\t\tconst rows = await this.queryExecutor.selectFrom(\"document_collections\").select([\"documentId\", \"collectionId\"]).where(\"documentId\", \"in\", documentIds).where(\"leftOrdinal\", \"is\", null).execute();\n\t\tconst result = {};\n\t\tfor (const row of rows) {\n\t\t\tif (!(row.documentId in result)) result[row.documentId] = [];\n\t\t\tresult[row.documentId].push(row.collectionId);\n\t\t}\n\t\treturn result;\n\t}\n};\n//#endregion\n//#region src/cache/buffer/ring-buffer.ts\n/**\n* RingBuffer is a generic circular buffer implementation that stores a fixed number\n* of items. When the buffer is full, new items overwrite the oldest items.\n*\n* This implementation maintains O(1) time complexity for push operations and provides\n* items in chronological order (oldest to newest) via getAll().\n*\n* @template T - The type of items stored in the buffer\n*/\nvar RingBuffer = class {\n\tbuffer;\n\thead = 0;\n\tsize = 0;\n\tcapacity;\n\tconstructor(capacity) {\n\t\tif (capacity <= 0) throw new Error(\"Ring buffer capacity must be greater than 0\");\n\t\tthis.capacity = capacity;\n\t\tthis.buffer = new Array(capacity);\n\t}\n\t/**\n\t* Adds an item to the buffer. If the buffer is full, overwrites the oldest item.\n\t*\n\t* @param item - The item to add\n\t*/\n\tpush(item) {\n\t\tconst index = (this.head + this.size) % this.capacity;\n\t\tif (this.size < this.capacity) {\n\t\t\tthis.buffer[index] = item;\n\t\t\tthis.size++;\n\t\t} else {\n\t\t\tthis.buffer[this.head] = item;\n\t\t\tthis.head = (this.head + 1) % this.capacity;\n\t\t}\n\t}\n\t/**\n\t* Returns all items in the buffer in chronological order (oldest to newest).\n\t*\n\t* @returns Array of items in insertion order\n\t*/\n\tgetAll() {\n\t\tif (this.size === 0) return [];\n\t\tconst result = [];\n\t\tfor (let i = 0; i < this.size; i++) {\n\t\t\tconst index = (this.head + i) % this.capacity;\n\t\t\tresult.push(this.buffer[index]);\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Clears all items from the buffer.\n\t*/\n\tclear() {\n\t\tthis.buffer = new Array(this.capacity);\n\t\tthis.head = 0;\n\t\tthis.size = 0;\n\t}\n\t/**\n\t* Gets the current number of items in the buffer.\n\t*/\n\tget length() {\n\t\treturn this.size;\n\t}\n};\n//#endregion\n//#region src/cache/kysely-write-cache.ts\nfunction extractModuleVersion(doc) {\n\tconst v = doc.state.document.version;\n\treturn v === 0 ? void 0 : v;\n}\n/**\n* In-memory write cache with keyframe persistence for PHDocuments.\n*\n* Caches document snapshots in ring buffers with LRU eviction. On cache miss,\n* rebuilds documents from nearest keyframe or full operation history.\n*\n* **Performance Characteristics:**\n* - Cache hit: O(1) lookup in ring buffer\n* - Cold miss: O(n) where n is total operation count, or O(k) where k is operations since keyframe\n* - Warm miss: O(m) where m is operations since cached revision\n* - Eviction: O(1) for LRU tracking and removal\n*\n* **Thread Safety:**\n* Not thread-safe. Designed for single-threaded job executor environment.\n* External synchronization required for concurrent access across multiple executors.\n*\n* **Example:**\n* ```typescript\n* const cache = new KyselyWriteCache(\n* keyframeStore,\n* operationStore,\n* registry,\n* { maxDocuments: 1000, ringBufferSize: 10, keyframeInterval: 10 }\n* );\n*\n* await cache.startup();\n*\n* // Retrieve or rebuild document\n* const doc = await cache.getState(docId, docType, scope, branch, revision);\n*\n* // Cache result after job execution\n* cache.putState(docId, docType, scope, branch, newRevision, updatedDoc);\n*\n* await cache.shutdown();\n* ```\n*/\nvar KyselyWriteCache = class KyselyWriteCache {\n\tstreams;\n\tlruTracker;\n\tkeyframeStore;\n\toperationStore;\n\tregistry;\n\tconfig;\n\tconstructor(keyframeStore, operationStore, registry, config) {\n\t\tthis.keyframeStore = keyframeStore;\n\t\tthis.operationStore = operationStore;\n\t\tthis.registry = registry;\n\t\tthis.config = {\n\t\t\tmaxDocuments: config.maxDocuments,\n\t\t\tringBufferSize: config.ringBufferSize,\n\t\t\tkeyframeInterval: config.keyframeInterval\n\t\t};\n\t\tthis.streams = /* @__PURE__ */ new Map();\n\t\tthis.lruTracker = new LRUTracker();\n\t}\n\twithScopedStores(operationStore, keyframeStore) {\n\t\tconst scoped = new KyselyWriteCache(keyframeStore, operationStore, this.registry, this.config);\n\t\tscoped.streams = this.streams;\n\t\tscoped.lruTracker = this.lruTracker;\n\t\treturn scoped;\n\t}\n\t/**\n\t* Initializes the write cache.\n\t* Currently a no-op as keyframe store lifecycle is managed externally.\n\t*/\n\tasync startup() {\n\t\treturn Promise.resolve();\n\t}\n\t/**\n\t* Shuts down the write cache.\n\t* Currently a no-op as keyframe store lifecycle is managed externally.\n\t*/\n\tasync shutdown() {\n\t\treturn Promise.resolve();\n\t}\n\t/**\n\t* Retrieves document state at a specific revision from cache or rebuilds it.\n\t*\n\t* Cache hit path: Returns cached snapshot if available (O(1))\n\t* Warm miss path: Rebuilds from cached base revision + incremental ops\n\t* Cold miss path: Rebuilds from keyframe or from scratch using all operations\n\t*\n\t* @param documentId - The document identifier\n\t* @param scope - The operation scope\n\t* @param branch - The operation branch\n\t* @param targetRevision - The target revision, or undefined for newest\n\t* @param signal - Optional abort signal to cancel the operation\n\t* @returns The document at the target revision\n\t* @throws {Error} \"Operation aborted\" if signal is aborted\n\t* @throws {ModuleNotFoundError} If document type not registered in registry\n\t* @throws {Error} \"Failed to rebuild document\" if operation store fails\n\t* @throws {Error} If reducer throws during operation application\n\t* @throws {Error} If document serialization fails\n\t*/\n\tasync getState(documentId, scope, branch, targetRevision, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst streamKey = this.makeStreamKey(documentId, scope, branch);\n\t\tconst stream = this.streams.get(streamKey);\n\t\tif (stream) {\n\t\t\tconst snapshots = stream.ringBuffer.getAll();\n\t\t\tif (targetRevision === void 0) {\n\t\t\t\tif (snapshots.length > 0) {\n\t\t\t\t\tconst newest = snapshots[snapshots.length - 1];\n\t\t\t\t\tthis.lruTracker.touch(streamKey);\n\t\t\t\t\treturn newest.document;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst exactMatch = snapshots.find((s) => s.revision === targetRevision);\n\t\t\t\tif (exactMatch) {\n\t\t\t\t\tthis.lruTracker.touch(streamKey);\n\t\t\t\t\treturn exactMatch.document;\n\t\t\t\t}\n\t\t\t\tconst newestOlder = this.findNearestOlderSnapshot(snapshots, targetRevision);\n\t\t\t\tif (newestOlder) {\n\t\t\t\t\tconst document = await this.warmMissRebuild(newestOlder.document, newestOlder.revision, documentId, scope, branch, targetRevision, signal);\n\t\t\t\t\tthis.putState(documentId, scope, branch, targetRevision, document);\n\t\t\t\t\tthis.lruTracker.touch(streamKey);\n\t\t\t\t\treturn document;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst document = await this.coldMissRebuild(documentId, scope, branch, targetRevision, signal);\n\t\tlet revision = targetRevision;\n\t\tif (revision === void 0) revision = document.header.revision[scope] || 0;\n\t\tthis.putState(documentId, scope, branch, revision, document);\n\t\treturn document;\n\t}\n\t/**\n\t* Stores a document snapshot in the cache at a specific revision.\n\t*\n\t* The cached document is a shallow copy of the input with its operation history\n\t* truncated to the last operation per scope and its clipboard cleared. This keeps\n\t* memory use and copy costs constant regardless of operation count. Consumers of\n\t* getState() must not rely on the full operation history being present; the only\n\t* guaranteed invariant is that operations[scope].at(-1) reflects the latest\n\t* operation index for each scope.\n\t*\n\t* Updates LRU tracker and may evict least recently used stream if at capacity.\n\t* Asynchronously persists keyframes at configured intervals (fire-and-forget).\n\t*\n\t* @param documentId - The document identifier\n\t* @param scope - The operation scope\n\t* @param branch - The operation branch\n\t* @param revision - The revision number\n\t* @param document - The document to cache\n\t* @throws {Error} If document serialization fails\n\t*/\n\tputState(documentId, scope, branch, revision, document) {\n\t\tconst streamKey = this.makeStreamKey(documentId, scope, branch);\n\t\tconst stream = this.getOrCreateStream(streamKey);\n\t\tconst snapshot = {\n\t\t\trevision,\n\t\t\tdocument: {\n\t\t\t\t...document,\n\t\t\t\toperations: Object.fromEntries(Object.entries(document.operations).map(([k, ops]) => [k, ops.length ? [ops.at(-1)] : []])),\n\t\t\t\tclipboard: []\n\t\t\t}\n\t\t};\n\t\tstream.ringBuffer.push(snapshot);\n\t\tif (this.isKeyframeRevision(revision)) this.keyframeStore.putKeyframe(documentId, scope, branch, revision, {\n\t\t\t...document,\n\t\t\toperations: {},\n\t\t\tclipboard: []\n\t\t}).catch((err) => {\n\t\t\tconsole.error(`Failed to persist keyframe ${documentId}@${revision}:`, err);\n\t\t});\n\t}\n\t/**\n\t* Invalidates cached document streams.\n\t*\n\t* Supports three invalidation scopes:\n\t* - Document-level: invalidate(documentId) - removes all streams for document\n\t* - Scope-level: invalidate(documentId, scope) - removes all branches for scope\n\t* - Stream-level: invalidate(documentId, scope, branch) - removes specific stream\n\t*\n\t* @param documentId - The document identifier\n\t* @param scope - Optional scope to narrow invalidation\n\t* @param branch - Optional branch to narrow invalidation (requires scope)\n\t* @returns The number of streams evicted\n\t*/\n\tinvalidate(documentId, scope, branch) {\n\t\tlet evicted = 0;\n\t\tif (scope === void 0 && branch === void 0) {\n\t\t\tfor (const [key] of this.streams.entries()) if (key.startsWith(`${documentId}:`)) {\n\t\t\t\tthis.streams.delete(key);\n\t\t\t\tthis.lruTracker.remove(key);\n\t\t\t\tevicted++;\n\t\t\t}\n\t\t} else if (scope !== void 0 && branch === void 0) {\n\t\t\tfor (const [key] of this.streams.entries()) if (key.startsWith(`${documentId}:${scope}:`)) {\n\t\t\t\tthis.streams.delete(key);\n\t\t\t\tthis.lruTracker.remove(key);\n\t\t\t\tevicted++;\n\t\t\t}\n\t\t} else if (scope !== void 0 && branch !== void 0) {\n\t\t\tconst key = this.makeStreamKey(documentId, scope, branch);\n\t\t\tif (this.streams.has(key)) {\n\t\t\t\tthis.streams.delete(key);\n\t\t\t\tthis.lruTracker.remove(key);\n\t\t\t\tevicted = 1;\n\t\t\t}\n\t\t}\n\t\treturn evicted;\n\t}\n\t/**\n\t* Clears the entire cache, removing all cached document streams.\n\t* Resets LRU tracking state. This operation always succeeds.\n\t*/\n\tclear() {\n\t\tthis.streams.clear();\n\t\tthis.lruTracker.clear();\n\t}\n\t/**\n\t* Retrieves a specific stream for a document. Exposed on the implementation\n\t* for testing, but not on the interface.\n\t*\n\t* @internal\n\t*/\n\tgetStream(documentId, scope, branch) {\n\t\tconst key = this.makeStreamKey(documentId, scope, branch);\n\t\treturn this.streams.get(key);\n\t}\n\tasync findNearestKeyframe(documentId, scope, branch, targetRevision, signal) {\n\t\tif (targetRevision === Number.MAX_SAFE_INTEGER || targetRevision <= 0) return;\n\t\treturn this.keyframeStore.findNearestKeyframe(documentId, scope, branch, targetRevision, signal);\n\t}\n\tasync coldMissRebuild(documentId, scope, branch, targetRevision, signal) {\n\t\tconst effectiveTargetRevision = targetRevision || Number.MAX_SAFE_INTEGER;\n\t\tconst keyframe = await this.findNearestKeyframe(documentId, scope, branch, effectiveTargetRevision, signal);\n\t\tlet document;\n\t\tlet startRevision;\n\t\tlet documentType;\n\t\tif (keyframe) {\n\t\t\tdocument = keyframe.document;\n\t\t\tstartRevision = keyframe.revision;\n\t\t\tdocumentType = keyframe.document.header.documentType;\n\t\t} else {\n\t\t\tdocument = void 0;\n\t\t\tstartRevision = -1;\n\t\t\tconst createOpResult = await this.operationStore.getSince(documentId, \"document\", branch, -1, void 0, {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 1\n\t\t\t}, signal);\n\t\t\tif (createOpResult.results.length === 0) throw new Error(`Failed to rebuild document ${documentId}: no CREATE_DOCUMENT operation found in document scope`);\n\t\t\tconst createOp = createOpResult.results[0];\n\t\t\tif (createOp.action.type !== \"CREATE_DOCUMENT\") throw new Error(`Failed to rebuild document ${documentId}: first operation in document scope must be CREATE_DOCUMENT, found ${createOp.action.type}`);\n\t\t\tconst documentCreateAction = createOp.action;\n\t\t\tdocumentType = documentCreateAction.input.model;\n\t\t\tif (!documentType) throw new Error(`Failed to rebuild document ${documentId}: CREATE_DOCUMENT action missing model in input`);\n\t\t\tdocument = createDocumentFromAction(documentCreateAction);\n\t\t\tlet docModule = this.registry.getModule(documentType, extractModuleVersion(document));\n\t\t\tconst docScopeOps = await this.operationStore.getSince(documentId, \"document\", branch, 0, void 0, void 0, signal);\n\t\t\tfor (const operation of docScopeOps.results) {\n\t\t\t\tif (operation.index === 0) continue;\n\t\t\t\tif (operation.action.type === \"UPGRADE_DOCUMENT\") {\n\t\t\t\t\tconst upgradeAction = operation.action;\n\t\t\t\t\tdocument = applyUpgradeDocumentAction(document, upgradeAction);\n\t\t\t\t\tdocModule = this.registry.getModule(documentType, extractModuleVersion(document));\n\t\t\t\t} else if (operation.action.type === \"DELETE_DOCUMENT\") applyDeleteDocumentAction(document, operation.action);\n\t\t\t\telse {\n\t\t\t\t\tconst protocolVersion = document.header.protocolVersions?.[\"base-reducer\"] ?? 1;\n\t\t\t\t\tdocument = docModule.reducer(document, operation.action, void 0, {\n\t\t\t\t\t\tskip: operation.skip,\n\t\t\t\t\t\tprotocolVersion\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tconst module = this.registry.getModule(documentType, extractModuleVersion(document));\n\t\tlet cursor = void 0;\n\t\tconst pageSize = 100;\n\t\tlet hasMorePages;\n\t\tdo {\n\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\tconst paging = {\n\t\t\t\tcursor: cursor || \"0\",\n\t\t\t\tlimit: pageSize\n\t\t\t};\n\t\t\ttry {\n\t\t\t\tconst result = await this.operationStore.getSince(documentId, scope, branch, startRevision, void 0, paging, signal);\n\t\t\t\tfor (const operation of result.results) {\n\t\t\t\t\tif (targetRevision !== void 0 && operation.index > targetRevision) break;\n\t\t\t\t\tconst protocolVersion = document.header.protocolVersions?.[\"base-reducer\"] ?? 1;\n\t\t\t\t\tdocument = module.reducer(document, operation.action, void 0, {\n\t\t\t\t\t\tskip: operation.skip,\n\t\t\t\t\t\tprotocolVersion\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst reachedTarget = targetRevision !== void 0 && result.results.some((op) => op.index >= targetRevision);\n\t\t\t\thasMorePages = Boolean(result.nextCursor) && !reachedTarget;\n\t\t\t\tif (hasMorePages) cursor = result.nextCursor;\n\t\t\t} catch (err) {\n\t\t\t\tthrow new Error(`Failed to rebuild document ${documentId}: ${err instanceof Error ? err.message : String(err)}`);\n\t\t\t}\n\t\t} while (hasMorePages);\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\tdocument.header.revision = revisions.revision;\n\t\tdocument.header.lastModifiedAtUtcIso = revisions.latestTimestamp;\n\t\treturn document;\n\t}\n\tasync warmMissRebuild(baseDocument, baseRevision, documentId, scope, branch, targetRevision, signal) {\n\t\tconst documentType = baseDocument.header.documentType;\n\t\tconst module = this.registry.getModule(documentType);\n\t\tlet document = baseDocument;\n\t\ttry {\n\t\t\tconst pagedResults = await this.operationStore.getSince(documentId, scope, branch, baseRevision, void 0, void 0, signal);\n\t\t\tfor (const operation of pagedResults.results) {\n\t\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\t\tif (targetRevision !== void 0 && operation.index > targetRevision) break;\n\t\t\t\tconst protocolVersion = document.header.protocolVersions?.[\"base-reducer\"] ?? 1;\n\t\t\t\tdocument = module.reducer(document, operation.action, void 0, {\n\t\t\t\t\tskip: operation.skip,\n\t\t\t\t\tprotocolVersion\n\t\t\t\t});\n\t\t\t\tif (targetRevision !== void 0 && operation.index === targetRevision) break;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthrow new Error(`Failed to rebuild document ${documentId}: ${err instanceof Error ? err.message : String(err)}`);\n\t\t}\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\tdocument.header.revision = revisions.revision;\n\t\tdocument.header.lastModifiedAtUtcIso = revisions.latestTimestamp;\n\t\treturn document;\n\t}\n\tfindNearestOlderSnapshot(snapshots, targetRevision) {\n\t\tlet nearest = void 0;\n\t\tfor (const snapshot of snapshots) if (snapshot.revision < targetRevision) {\n\t\t\tif (!nearest || snapshot.revision > nearest.revision) nearest = snapshot;\n\t\t}\n\t\treturn nearest;\n\t}\n\tmakeStreamKey(documentId, scope, branch) {\n\t\treturn `${documentId}:${scope}:${branch}`;\n\t}\n\tgetOrCreateStream(key) {\n\t\tlet stream = this.streams.get(key);\n\t\tif (!stream) {\n\t\t\tif (this.streams.size >= this.config.maxDocuments) {\n\t\t\t\tconst evictKey = this.lruTracker.evict();\n\t\t\t\tif (evictKey) this.streams.delete(evictKey);\n\t\t\t}\n\t\t\tstream = {\n\t\t\t\tkey,\n\t\t\t\tringBuffer: new RingBuffer(this.config.ringBufferSize)\n\t\t\t};\n\t\t\tthis.streams.set(key, stream);\n\t\t}\n\t\tthis.lruTracker.touch(key);\n\t\treturn stream;\n\t}\n\tisKeyframeRevision(revision) {\n\t\treturn revision > 0 && revision % this.config.keyframeInterval === 0;\n\t}\n};\n//#endregion\n//#region src/events/event-bus.ts\nvar EventBus = class {\n\teventTypeToSubscribers = /* @__PURE__ */ new Map();\n\tsubscribe(type, subscriber) {\n\t\tlet list = this.eventTypeToSubscribers.get(type);\n\t\tif (!list) {\n\t\t\tlist = [];\n\t\t\tthis.eventTypeToSubscribers.set(type, list);\n\t\t}\n\t\tlist.push(subscriber);\n\t\tlet done = false;\n\t\treturn () => {\n\t\t\tif (done) return;\n\t\t\tdone = true;\n\t\t\tconst arr = this.eventTypeToSubscribers.get(type);\n\t\t\tif (!arr) return;\n\t\t\tconst idx = arr.indexOf(subscriber);\n\t\t\tif (idx !== -1) arr.splice(idx, 1);\n\t\t\tif (arr.length === 0) this.eventTypeToSubscribers.delete(type);\n\t\t};\n\t}\n\tasync emit(type, data) {\n\t\tconst list = this.eventTypeToSubscribers.get(type);\n\t\tif (!list || list.length === 0) return;\n\t\tconst snapshot = list.slice();\n\t\tconst errors = [];\n\t\tfor (const fn of snapshot) try {\n\t\t\tawait Promise.resolve(fn(type, data));\n\t\t} catch (err) {\n\t\t\terrors.push(err);\n\t\t}\n\t\tif (errors.length > 0) throw new EventBusAggregateError(errors);\n\t}\n};\n//#endregion\n//#region src/executor/execution-scope.ts\nvar DefaultExecutionScope = class {\n\tconstructor(operationStore, operationIndex, writeCache, documentMetaCache, collectionMembershipCache) {\n\t\tthis.operationStore = operationStore;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.writeCache = writeCache;\n\t\tthis.documentMetaCache = documentMetaCache;\n\t\tthis.collectionMembershipCache = collectionMembershipCache;\n\t}\n\tasync run(fn, signal) {\n\t\tsignal?.throwIfAborted();\n\t\treturn fn({\n\t\t\toperationStore: this.operationStore,\n\t\t\toperationIndex: this.operationIndex,\n\t\t\twriteCache: this.writeCache,\n\t\t\tdocumentMetaCache: this.documentMetaCache,\n\t\t\tcollectionMembershipCache: this.collectionMembershipCache\n\t\t});\n\t}\n};\nvar KyselyExecutionScope = class {\n\tconstructor(db, operationStore, operationIndex, keyframeStore, writeCache, documentMetaCache, collectionMembershipCache) {\n\t\tthis.db = db;\n\t\tthis.operationStore = operationStore;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.keyframeStore = keyframeStore;\n\t\tthis.writeCache = writeCache;\n\t\tthis.documentMetaCache = documentMetaCache;\n\t\tthis.collectionMembershipCache = collectionMembershipCache;\n\t}\n\tasync run(fn, signal) {\n\t\tsignal?.throwIfAborted();\n\t\treturn this.db.transaction().execute(async (trx) => {\n\t\t\tconst scopedOperationStore = this.operationStore.withTransaction(trx);\n\t\t\tconst scopedOperationIndex = this.operationIndex.withTransaction(trx);\n\t\t\tconst scopedKeyframeStore = this.keyframeStore.withTransaction(trx);\n\t\t\treturn fn({\n\t\t\t\toperationStore: scopedOperationStore,\n\t\t\t\toperationIndex: scopedOperationIndex,\n\t\t\t\twriteCache: this.writeCache.withScopedStores(scopedOperationStore, scopedKeyframeStore),\n\t\t\t\tdocumentMetaCache: this.documentMetaCache.withScopedStore(scopedOperationStore),\n\t\t\t\tcollectionMembershipCache: this.collectionMembershipCache.withScopedIndex(scopedOperationIndex)\n\t\t\t});\n\t\t});\n\t}\n};\n//#endregion\n//#region src/queue/types.ts\n/**\n* State of a job in the queue\n*/\nlet JobQueueState = /* @__PURE__ */ function(JobQueueState) {\n\tJobQueueState[JobQueueState[\"UNKNOWN\"] = -1] = \"UNKNOWN\";\n\tJobQueueState[JobQueueState[\"PREPROCESSING\"] = 0] = \"PREPROCESSING\";\n\tJobQueueState[JobQueueState[\"PENDING\"] = 1] = \"PENDING\";\n\tJobQueueState[JobQueueState[\"READY\"] = 2] = \"READY\";\n\tJobQueueState[JobQueueState[\"RUNNING\"] = 3] = \"RUNNING\";\n\tJobQueueState[JobQueueState[\"RESOLVED\"] = 4] = \"RESOLVED\";\n\treturn JobQueueState;\n}({});\n/**\n* Event types for the queue system\n*/\nconst QueueEventTypes = { JOB_AVAILABLE: 1e4 };\n//#endregion\n//#region src/registry/implementation.ts\n/**\n* Error thrown when a document model module is not found in the registry.\n*/\nvar ModuleNotFoundError = class extends Error {\n\tdocumentType;\n\trequestedVersion;\n\tconstructor(documentType, version) {\n\t\tconst versionSuffix = version !== void 0 ? ` version ${version}` : \"\";\n\t\tsuper(`Document model module not found for type: ${documentType}${versionSuffix}`);\n\t\tthis.name = \"ModuleNotFoundError\";\n\t\tthis.documentType = documentType;\n\t\tthis.requestedVersion = version;\n\t}\n\tstatic isError(error) {\n\t\treturn Error.isError(error) && error.name === \"ModuleNotFoundError\";\n\t}\n};\n/**\n* Error thrown when attempting to register a module that already exists.\n*/\nvar DuplicateModuleError = class extends Error {\n\tconstructor(documentType, version) {\n\t\tconst versionSuffix = version !== void 0 ? ` (version ${version})` : \"\";\n\t\tsuper(`Document model module already registered for type: ${documentType}${versionSuffix}`);\n\t\tthis.name = \"DuplicateModuleError\";\n\t}\n\tstatic isError(error) {\n\t\treturn Error.isError(error) && error.name === \"DuplicateModuleError\";\n\t}\n};\n/**\n* Error thrown when a module is invalid or malformed.\n*/\nvar InvalidModuleError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(`Invalid document model module: ${message}`);\n\t\tthis.name = \"InvalidModuleError\";\n\t}\n};\n/**\n* Error thrown when attempting to register an upgrade manifest that already exists.\n*/\nvar DuplicateManifestError = class extends Error {\n\tconstructor(documentType) {\n\t\tsuper(`Upgrade manifest already registered for type: ${documentType}`);\n\t\tthis.name = \"DuplicateManifestError\";\n\t}\n};\n/**\n* Error thrown when an upgrade manifest is not found.\n*/\nvar ManifestNotFoundError = class extends Error {\n\tconstructor(documentType) {\n\t\tsuper(`Upgrade manifest not found for type: ${documentType}`);\n\t\tthis.name = \"ManifestNotFoundError\";\n\t}\n};\n/**\n* Error thrown when attempting a downgrade operation.\n*/\nvar DowngradeNotSupportedError = class extends Error {\n\tconstructor(documentType, fromVersion, toVersion) {\n\t\tsuper(`Downgrade not supported for ${documentType}: cannot go from version ${fromVersion} to ${toVersion}`);\n\t\tthis.name = \"DowngradeNotSupportedError\";\n\t}\n};\n/**\n* Error thrown when a required upgrade transition is missing from the manifest.\n*/\nvar MissingUpgradeTransitionError = class extends Error {\n\tconstructor(documentType, fromVersion, toVersion) {\n\t\tsuper(`Missing upgrade transition for ${documentType}: v${fromVersion} to v${toVersion}`);\n\t\tthis.name = \"MissingUpgradeTransitionError\";\n\t}\n};\n/**\n* Error thrown when getUpgradeReducer is called with a non-single-step version increment.\n*/\nvar InvalidUpgradeStepError = class extends Error {\n\tconstructor(documentType, fromVersion, toVersion) {\n\t\tsuper(`Invalid upgrade step for ${documentType}: must be single version increment, got v${fromVersion} to v${toVersion}`);\n\t\tthis.name = \"InvalidUpgradeStepError\";\n\t}\n};\n/**\n* In-memory implementation of the IDocumentModelRegistry interface.\n* Manages document model modules with version-aware storage and upgrade manifest support.\n*/\nvar DocumentModelRegistry = class {\n\tmodules = [];\n\tmanifests = [];\n\tregisterModules(...modules) {\n\t\tfor (const module of modules) {\n\t\t\tconst documentType = module.documentModel.global.id;\n\t\t\tconst version = module.version ?? 1;\n\t\t\tfor (let i = 0; i < this.modules.length; i++) {\n\t\t\t\tconst existing = this.modules[i];\n\t\t\t\tconst existingType = existing.documentModel.global.id;\n\t\t\t\tconst existingVersion = existing.version ?? 1;\n\t\t\t\tif (existingType === documentType && existingVersion === version) throw new DuplicateModuleError(documentType, version);\n\t\t\t}\n\t\t\tthis.modules.push(module);\n\t\t}\n\t}\n\tunregisterModules(...documentTypes) {\n\t\tlet allFound = true;\n\t\tfor (const documentType of documentTypes) {\n\t\t\tif (!this.modules.some((m) => m.documentModel.global.id === documentType)) allFound = false;\n\t\t\tthis.modules = this.modules.filter((m) => m.documentModel.global.id !== documentType);\n\t\t}\n\t\treturn allFound;\n\t}\n\tgetModule(documentType, version) {\n\t\tlet latestModule;\n\t\tlet latestVersion = -1;\n\t\tfor (let i = 0; i < this.modules.length; i++) {\n\t\t\tconst module = this.modules[i];\n\t\t\tconst moduleType = module.documentModel.global.id;\n\t\t\tconst moduleVersion = module.version ?? 1;\n\t\t\tif (moduleType === documentType) {\n\t\t\t\tif (version !== void 0 && moduleVersion === version) return module;\n\t\t\t\tif (moduleVersion > latestVersion) {\n\t\t\t\t\tlatestModule = module;\n\t\t\t\t\tlatestVersion = moduleVersion;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (version === void 0 && latestModule !== void 0) return latestModule;\n\t\tthrow new ModuleNotFoundError(documentType, version);\n\t}\n\tgetAllModules() {\n\t\treturn [...this.modules];\n\t}\n\tclear() {\n\t\tthis.modules = [];\n\t\tthis.manifests = [];\n\t}\n\tgetSupportedVersions(documentType) {\n\t\tconst versions = [];\n\t\tfor (const module of this.modules) if (module.documentModel.global.id === documentType) versions.push(module.version ?? 1);\n\t\tif (versions.length === 0) throw new ModuleNotFoundError(documentType);\n\t\treturn versions.sort((a, b) => a - b);\n\t}\n\tgetLatestVersion(documentType) {\n\t\tlet latest = -1;\n\t\tlet found = false;\n\t\tfor (const module of this.modules) if (module.documentModel.global.id === documentType) {\n\t\t\tfound = true;\n\t\t\tconst version = module.version ?? 1;\n\t\t\tif (version > latest) latest = version;\n\t\t}\n\t\tif (!found) throw new ModuleNotFoundError(documentType);\n\t\treturn latest;\n\t}\n\tregisterUpgradeManifests(...manifestsToRegister) {\n\t\tfor (const manifestToRegister of manifestsToRegister) {\n\t\t\tfor (const registeredManifest of this.manifests) {\n\t\t\t\tconst registeredManifestDocumentType = registeredManifest.documentType;\n\t\t\t\tconst manifestToRegisterDocumentType = manifestToRegister.documentType;\n\t\t\t\tif (!registeredManifestDocumentType || !manifestToRegisterDocumentType) continue;\n\t\t\t\tif (registeredManifestDocumentType === manifestToRegisterDocumentType) throw new DuplicateManifestError(manifestToRegisterDocumentType);\n\t\t\t}\n\t\t\tthis.manifests.push(manifestToRegister);\n\t\t}\n\t}\n\tgetUpgradeManifest(documentType) {\n\t\tfor (let i = 0; i < this.manifests.length; i++) if (this.manifests[i].documentType === documentType) return this.manifests[i];\n\t\tthrow new ManifestNotFoundError(documentType);\n\t}\n\tcomputeUpgradePath(documentType, fromVersion, toVersion) {\n\t\tif (fromVersion === toVersion) return [];\n\t\tif (toVersion < fromVersion) throw new DowngradeNotSupportedError(documentType, fromVersion, toVersion);\n\t\tconst manifest = this.getUpgradeManifest(documentType);\n\t\tconst path = [];\n\t\tfor (let v = fromVersion + 1; v <= toVersion; v++) {\n\t\t\tconst key = `v${v}`;\n\t\t\tif (!(key in manifest.upgrades)) throw new MissingUpgradeTransitionError(documentType, v - 1, v);\n\t\t\tconst transition = manifest.upgrades[key];\n\t\t\tpath.push(transition);\n\t\t}\n\t\treturn path;\n\t}\n\tgetUpgradeReducer(documentType, fromVersion, toVersion) {\n\t\tif (toVersion !== fromVersion + 1) throw new InvalidUpgradeStepError(documentType, fromVersion, toVersion);\n\t\tconst manifest = this.getUpgradeManifest(documentType);\n\t\tconst key = `v${toVersion}`;\n\t\tif (!(key in manifest.upgrades)) throw new MissingUpgradeTransitionError(documentType, fromVersion, toVersion);\n\t\treturn manifest.upgrades[key].upgradeReducer;\n\t}\n};\n//#endregion\n//#region src/executor/simple-job-executor-manager.ts\n/**\n* Manages multiple job executors and coordinates job distribution.\n* Listens for job available events and dispatches jobs to executors.\n*/\nvar SimpleJobExecutorManager = class {\n\texecutors = [];\n\tisRunning = false;\n\tactiveJobs = 0;\n\ttotalJobsProcessed = 0;\n\tunsubscribe;\n\tdeferredJobs = /* @__PURE__ */ new Map();\n\tjobTimeoutMs;\n\tconstructor(executorFactory, eventBus, queue, jobTracker, logger, resolver, jobTimeoutMs = 3e4) {\n\t\tthis.executorFactory = executorFactory;\n\t\tthis.eventBus = eventBus;\n\t\tthis.queue = queue;\n\t\tthis.jobTracker = jobTracker;\n\t\tthis.logger = logger;\n\t\tthis.resolver = resolver;\n\t\tthis.jobTimeoutMs = jobTimeoutMs;\n\t}\n\tasync start(numExecutors) {\n\t\tif (this.isRunning) throw new Error(\"JobExecutorManager is already running\");\n\t\tif (numExecutors < 1) throw new Error(\"Number of executors must be at least 1\");\n\t\tthis.executors = [];\n\t\tfor (let i = 0; i < numExecutors; i++) this.executors.push(this.executorFactory());\n\t\tthis.unsubscribe = this.eventBus.subscribe(QueueEventTypes.JOB_AVAILABLE, async () => {\n\t\t\tif (this.activeJobs < this.executors.length) await this.processNextJob();\n\t\t});\n\t\tthis.isRunning = true;\n\t\tawait this.processExistingJobs();\n\t}\n\tasync stop(graceful = true) {\n\t\tif (!this.isRunning) return;\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.unsubscribe = void 0;\n\t\t}\n\t\tif (graceful) while (this.activeJobs > 0) await new Promise((resolve) => setTimeout(resolve, 100));\n\t\tfor (const [, jobs] of this.deferredJobs) for (const job of jobs) {\n\t\t\tconst errorInfo = this.toErrorInfo(new DocumentNotFoundError(job.documentId));\n\t\t\tthis.jobTracker.markFailed(job.id, errorInfo, job);\n\t\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\t\tjobId: job.id,\n\t\t\t\terror: new DocumentNotFoundError(job.documentId),\n\t\t\t\tjob\n\t\t\t}).catch(() => {});\n\t\t}\n\t\tthis.deferredJobs.clear();\n\t\tthis.executors = [];\n\t\tthis.isRunning = false;\n\t}\n\tgetExecutors() {\n\t\treturn [...this.executors];\n\t}\n\tgetStatus() {\n\t\treturn {\n\t\t\tisRunning: this.isRunning,\n\t\t\tnumExecutors: this.executors.length,\n\t\t\tactiveJobs: this.activeJobs,\n\t\t\ttotalJobsProcessed: this.totalJobsProcessed\n\t\t};\n\t}\n\tasync processNextJob() {\n\t\tlet handle;\n\t\ttry {\n\t\t\thandle = await this.queue.dequeueNext();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error dequeueing next job: @Error\", error);\n\t\t\treturn;\n\t\t}\n\t\tif (!handle) return;\n\t\thandle.start();\n\t\tthis.activeJobs++;\n\t\tthis.jobTracker.markRunning(handle.job.id);\n\t\tconst runningEvent = {\n\t\t\tjobId: handle.job.id,\n\t\t\tjobMeta: handle.job.meta\n\t\t};\n\t\tthis.eventBus.emit(ReactorEventTypes.JOB_RUNNING, runningEvent).catch(() => {});\n\t\tconst executorIndex = this.totalJobsProcessed % this.executors.length;\n\t\tconst executor = this.executors[executorIndex];\n\t\tconst signal = AbortSignal.timeout(this.jobTimeoutMs);\n\t\tconst toError = (reason) => reason instanceof Error ? reason : new Error(String(reason));\n\t\tconst abortPromise = new Promise((_, reject) => {\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(toError(signal.reason));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsignal.addEventListener(\"abort\", () => reject(toError(signal.reason)), { once: true });\n\t\t});\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await Promise.race([executor.executeJob(handle.job, signal), abortPromise]);\n\t\t} catch (error) {\n\t\t\tconst errorInfo = this.toErrorInfo(error instanceof Error ? error : String(error));\n\t\t\thandle.fail(errorInfo);\n\t\t\tthis.activeJobs--;\n\t\t\tthis.jobTracker.markFailed(handle.job.id, errorInfo, handle.job);\n\t\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\t\tjobId: handle.job.id,\n\t\t\t\terror: new Error(errorInfo.message),\n\t\t\t\tjob: handle.job\n\t\t\t}).catch(() => {});\n\t\t\tawait this.checkForMoreJobs();\n\t\t\treturn;\n\t\t}\n\t\tif (result.success) {\n\t\t\thandle.complete();\n\t\t\tthis.totalJobsProcessed++;\n\t\t\tif (this.hasCreateDocumentAction(handle.job)) await this.flushDeferredJobs(handle.job.documentId);\n\t\t} else {\n\t\t\tif (result.error && ModuleNotFoundError.isError(result.error)) {\n\t\t\t\tlet modelLoaded = false;\n\t\t\t\ttry {\n\t\t\t\t\tawait this.resolver.ensureModelLoaded(result.error.documentType);\n\t\t\t\t\tmodelLoaded = true;\n\t\t\t\t} catch {}\n\t\t\t\tif (modelLoaded) {\n\t\t\t\t\tconst errorInfo = this.toErrorInfo(result.error);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.queue.retryJob(handle.job.id, errorInfo);\n\t\t\t\t\t\tthis.activeJobs--;\n\t\t\t\t\t\tawait this.checkForMoreJobs();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} catch {}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result.error && DocumentNotFoundError.isError(result.error)) {\n\t\t\t\tconst job = handle.job;\n\t\t\t\thandle.defer();\n\t\t\t\tthis.activeJobs--;\n\t\t\t\tconst docId = job.documentId;\n\t\t\t\tconst existing = this.deferredJobs.get(docId) ?? [];\n\t\t\t\texisting.push(job);\n\t\t\t\tthis.deferredJobs.set(docId, existing);\n\t\t\t\tawait this.checkForMoreJobs();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (result.error && DocumentDeletedError.isError(result.error)) {\n\t\t\t\tconst errorInfo = this.toErrorInfo(result.error);\n\t\t\t\tthis.jobTracker.markFailed(handle.job.id, errorInfo, handle.job);\n\t\t\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\t\t\tjobId: handle.job.id,\n\t\t\t\t\terror: result.error,\n\t\t\t\t\tjob: handle.job\n\t\t\t\t}).catch(() => {});\n\t\t\t\thandle.fail(errorInfo);\n\t\t\t\tthis.activeJobs--;\n\t\t\t\tawait this.checkForMoreJobs();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst retryCount = handle.job.retryCount || 0;\n\t\t\tif (retryCount < (handle.job.maxRetries || 0)) {\n\t\t\t\tconst currentErrorInfo = result.error ? this.toErrorInfo(result.error) : this.toErrorInfo(\"Unknown error\");\n\t\t\t\ttry {\n\t\t\t\t\tawait this.queue.retryJob(handle.job.id, currentErrorInfo);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst retryErrorInfo = this.toErrorInfo(error instanceof Error ? error : \"Failed to retry job\");\n\t\t\t\t\tthis.jobTracker.markFailed(handle.job.id, retryErrorInfo, handle.job);\n\t\t\t\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\t\t\t\tjobId: handle.job.id,\n\t\t\t\t\t\terror: result.error ?? new Error(retryErrorInfo.message),\n\t\t\t\t\t\tjob: handle.job\n\t\t\t\t\t}).catch(() => {});\n\t\t\t\t\thandle.fail(retryErrorInfo);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst currentErrorInfo = result.error ? this.toErrorInfo(result.error) : this.toErrorInfo(\"Unknown error\");\n\t\t\t\tconst fullErrorInfo = this.formatErrorHistory(handle.job.errorHistory, currentErrorInfo, retryCount + 1);\n\t\t\t\tthis.jobTracker.markFailed(handle.job.id, fullErrorInfo, handle.job);\n\t\t\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\t\t\tjobId: handle.job.id,\n\t\t\t\t\terror: result.error ?? new Error(fullErrorInfo.message),\n\t\t\t\t\tjob: handle.job\n\t\t\t\t}).catch(() => {});\n\t\t\t\thandle.fail(fullErrorInfo);\n\t\t\t}\n\t\t}\n\t\tthis.activeJobs--;\n\t\tawait this.checkForMoreJobs();\n\t}\n\tasync checkForMoreJobs() {\n\t\tif (!this.isRunning) return;\n\t\tlet hasMore;\n\t\ttry {\n\t\t\thasMore = await this.queue.hasJobs();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error checking for more jobs: @Error\", error);\n\t\t\treturn;\n\t\t}\n\t\tif (hasMore) await this.processNextJob();\n\t}\n\tasync processExistingJobs() {\n\t\tlet hasJobs;\n\t\ttry {\n\t\t\thasJobs = await this.queue.hasJobs();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error checking for existing jobs: @Error\", error);\n\t\t\treturn;\n\t\t}\n\t\tif (hasJobs) {\n\t\t\tconst promises = [];\n\t\t\tfor (let i = 0; i < Math.min(this.executors.length, 5); i++) promises.push(this.processNextJob());\n\t\t\ttry {\n\t\t\t\tawait Promise.all(promises);\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error(\"Error processing existing jobs: @Error\", error);\n\t\t\t}\n\t\t}\n\t}\n\ttoErrorInfo(error) {\n\t\tif (error instanceof Error) return {\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack || (/* @__PURE__ */ new Error()).stack || \"\"\n\t\t};\n\t\treturn {\n\t\t\tmessage: error,\n\t\t\tstack: (/* @__PURE__ */ new Error()).stack || \"\"\n\t\t};\n\t}\n\thasCreateDocumentAction(job) {\n\t\tfor (const action of job.actions) if (action.type === \"CREATE_DOCUMENT\") return true;\n\t\tfor (const operation of job.operations) if (operation.action.type === \"CREATE_DOCUMENT\") return true;\n\t\treturn false;\n\t}\n\tasync flushDeferredJobs(documentId) {\n\t\tconst jobs = this.deferredJobs.get(documentId);\n\t\tif (!jobs || jobs.length === 0) return;\n\t\tthis.deferredJobs.delete(documentId);\n\t\tfor (const job of jobs) try {\n\t\t\tawait this.queue.enqueue(job);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error re-enqueuing deferred job: @Error\", error);\n\t\t}\n\t}\n\tformatErrorHistory(errorHistory, currentError, totalAttempts) {\n\t\tconst allErrors = [...errorHistory, currentError];\n\t\tif (allErrors.length === 1) return currentError;\n\t\tconst messageLines = [`Job failed after ${totalAttempts} attempts:`];\n\t\tconst stackLines = [];\n\t\tallErrors.forEach((error, index) => {\n\t\t\tmessageLines.push(`[Attempt ${index + 1}] ${error.message}`);\n\t\t\tstackLines.push(`[Attempt ${index + 1}] Stack trace:\\n${error.stack}`);\n\t\t});\n\t\treturn {\n\t\t\tmessage: messageLines.join(\"\\n\"),\n\t\t\tstack: stackLines.join(\"\\n\\n\")\n\t\t};\n\t}\n};\n//#endregion\n//#region src/utils/reshuffle.ts\nconst STRICT_ORDER_ACTION_TYPES = new Set([\n\t\"CREATE_DOCUMENT\",\n\t\"DELETE_DOCUMENT\",\n\t\"UPGRADE_DOCUMENT\",\n\t\"ADD_RELATIONSHIP\",\n\t\"REMOVE_RELATIONSHIP\"\n]);\n/**\n* Reshuffles operations by timestamp, then applies deterministic tie-breaking.\n* Used for merging concurrent operations from different branches.\n*\n* For strict document-structure actions (e.g., CREATE_DOCUMENT/UPGRADE_DOCUMENT),\n* logical index (index - skip) is prioritized to preserve causal replay order.\n*\n* For other actions, action ID is prioritized to ensure a canonical cross-reactor order\n* for concurrent operations that may have diverged local indices due to prior reshuffles.\n* Logical index and operation ID are then used as deterministic tie-breakers.\n*\n* Example:\n* [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, 2:0, B3:0, B4:2, B5:0]\n* GC => [0:0, 1:0, 2:0, A3:0, A4:0, A5:0] + [0:0, 1:0, B4:2, B5:0]\n* Split => [0:0, 1:0] + [2:0, A3:0, A4:0, A5:0] + [B4:2, B5:0]\n* Reshuffle(6:4) => [6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\n* merge => [0:0, 1:0, 6:4, 7:0, 8:0, 9:0, 10:0, 11:0]\n*/\nfunction reshuffleByTimestamp(startIndex, opsA, opsB) {\n\treturn [...opsA, ...opsB].sort((a, b) => {\n\t\tconst timestampDiff = new Date(a.timestampUtcMs).getTime() - new Date(b.timestampUtcMs).getTime();\n\t\tif (timestampDiff !== 0) return timestampDiff;\n\t\tconst shouldPrioritizeLogicalIndex = STRICT_ORDER_ACTION_TYPES.has(a.action?.type ?? \"\") || STRICT_ORDER_ACTION_TYPES.has(b.action?.type ?? \"\");\n\t\tconst logicalIndexDiff = a.index - a.skip - (b.index - b.skip);\n\t\tif (shouldPrioritizeLogicalIndex) {\n\t\t\tif (logicalIndexDiff !== 0) return logicalIndexDiff;\n\t\t}\n\t\tconst actionIdDiff = (a.action?.id ?? \"\").localeCompare(b.action?.id ?? \"\");\n\t\tif (actionIdDiff !== 0) return actionIdDiff;\n\t\tif (!shouldPrioritizeLogicalIndex && logicalIndexDiff !== 0) return logicalIndexDiff;\n\t\treturn a.id.localeCompare(b.id);\n\t}).map((op, i) => ({\n\t\t...op,\n\t\tindex: startIndex.index + i,\n\t\tskip: i === 0 ? startIndex.skip : 0\n\t}));\n}\n//#endregion\n//#region src/cache/operation-index-types.ts\nfunction driveCollectionId(branch, driveId) {\n\treturn `drive.${branch}.${driveId}`;\n}\n//#endregion\n//#region src/executor/document-action-handler.ts\nvar DocumentActionHandler = class {\n\tconstructor(registry, logger) {\n\t\tthis.registry = registry;\n\t\tthis.logger = logger;\n\t}\n\tasync execute(job, action, startTime, indexTxn, stores, skip = 0, sourceRemote = \"\", signal) {\n\t\tswitch (action.type) {\n\t\t\tcase \"CREATE_DOCUMENT\": return this.executeCreate(job, action, startTime, indexTxn, stores, skip, sourceRemote, signal);\n\t\t\tcase \"DELETE_DOCUMENT\": return this.executeDelete(job, action, startTime, indexTxn, stores, sourceRemote, signal);\n\t\t\tcase \"UPGRADE_DOCUMENT\": return this.executeUpgrade(job, action, startTime, indexTxn, stores, skip, sourceRemote, signal);\n\t\t\tcase \"ADD_RELATIONSHIP\": return this.executeAddRelationship(job, action, startTime, indexTxn, stores, sourceRemote, signal);\n\t\t\tcase \"REMOVE_RELATIONSHIP\": return this.executeRemoveRelationship(job, action, startTime, indexTxn, stores, sourceRemote, signal);\n\t\t\tdefault: return buildErrorResult(job, /* @__PURE__ */ new Error(`Unknown document action type: ${action.type}`), startTime);\n\t\t}\n\t}\n\tasync executeCreate(job, action, startTime, indexTxn, stores, skip = 0, sourceRemote = \"\", signal) {\n\t\tif (job.scope !== \"document\") return {\n\t\t\tjob,\n\t\t\tsuccess: false,\n\t\t\terror: /* @__PURE__ */ new Error(`CREATE_DOCUMENT must be in \"document\" scope, got \"${job.scope}\"`),\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\tconst document = createDocumentFromAction(action);\n\t\tconst operation = createOperation(action, 0, skip, {\n\t\t\tdocumentId: document.header.id,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch\n\t\t});\n\t\tconst resultingStateObj = {\n\t\t\theader: document.header,\n\t\t\t...document.state\n\t\t};\n\t\tconst resultingState = JSON.stringify(resultingStateObj);\n\t\tconst writeError = await this.writeOperationToStore(document.header.id, document.header.documentType, job.scope, job.branch, operation, job, startTime, stores, signal);\n\t\tif (writeError !== null) return writeError;\n\t\tupdateDocumentRevision(document, job.scope, operation.index);\n\t\tstores.writeCache.putState(document.header.id, job.scope, job.branch, operation.index, document);\n\t\tindexTxn.write([{\n\t\t\t...operation,\n\t\t\tdocumentId: document.header.id,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope: job.scope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\tif (document.header.documentType === \"powerhouse/document-drive\") {\n\t\t\tconst collectionId = driveCollectionId(job.branch, document.header.id);\n\t\t\tindexTxn.createCollection(collectionId);\n\t\t\tindexTxn.addToCollection(collectionId, document.header.id);\n\t\t}\n\t\tstores.documentMetaCache.putDocumentMeta(document.header.id, job.branch, {\n\t\t\tstate: document.state.document,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tdocumentScopeRevision: 1\n\t\t});\n\t\treturn buildSuccessResult(job, operation, document.header.id, document.header.documentType, resultingState, startTime);\n\t}\n\tasync executeDelete(job, action, startTime, indexTxn, stores, sourceRemote = \"\", signal) {\n\t\tconst input = action.input;\n\t\tif (!input.documentId) return buildErrorResult(job, /* @__PURE__ */ new Error(\"DELETE_DOCUMENT action requires a documentId in input\"), startTime);\n\t\tconst documentId = input.documentId;\n\t\tlet document;\n\t\ttry {\n\t\t\tdocument = await stores.writeCache.getState(documentId, job.scope, job.branch, void 0, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, /* @__PURE__ */ new Error(`Failed to fetch document before deletion: ${error instanceof Error ? error.message : String(error)}`), startTime);\n\t\t}\n\t\tconst documentState = document.state.document;\n\t\tif (documentState.isDeleted) return buildErrorResult(job, new DocumentDeletedError(documentId, documentState.deletedAtUtcIso), startTime);\n\t\tconst operation = createOperation(action, getNextIndexForScope(document, job.scope), 0, {\n\t\t\tdocumentId,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch\n\t\t});\n\t\tapplyDeleteDocumentAction(document, action);\n\t\tconst resultingStateObj = {\n\t\t\theader: document.header,\n\t\t\tdocument: document.state.document\n\t\t};\n\t\tconst resultingState = JSON.stringify(resultingStateObj);\n\t\tconst writeError = await this.writeOperationToStore(documentId, document.header.documentType, job.scope, job.branch, operation, job, startTime, stores, signal);\n\t\tif (writeError !== null) return writeError;\n\t\tupdateDocumentRevision(document, job.scope, operation.index);\n\t\tstores.writeCache.putState(documentId, job.scope, job.branch, operation.index, document);\n\t\tindexTxn.write([{\n\t\t\t...operation,\n\t\t\tdocumentId,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope: job.scope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\tstores.documentMetaCache.putDocumentMeta(documentId, job.branch, {\n\t\t\tstate: document.state.document,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tdocumentScopeRevision: operation.index + 1\n\t\t});\n\t\treturn buildSuccessResult(job, operation, documentId, document.header.documentType, resultingState, startTime);\n\t}\n\tasync executeUpgrade(job, action, startTime, indexTxn, stores, skip = 0, sourceRemote = \"\", signal) {\n\t\tconst input = action.input;\n\t\tif (!input.documentId) return buildErrorResult(job, /* @__PURE__ */ new Error(\"UPGRADE_DOCUMENT action requires a documentId in input\"), startTime);\n\t\tconst documentId = input.documentId;\n\t\tconst fromVersion = input.fromVersion;\n\t\tconst toVersion = input.toVersion;\n\t\tlet document;\n\t\ttry {\n\t\t\tdocument = await stores.writeCache.getState(documentId, job.scope, job.branch, void 0, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, /* @__PURE__ */ new Error(`Failed to fetch document for upgrade: ${error instanceof Error ? error.message : String(error)}`), startTime);\n\t\t}\n\t\tconst documentState = document.state.document;\n\t\tif (documentState.isDeleted) return buildErrorResult(job, new DocumentDeletedError(documentId, documentState.deletedAtUtcIso), startTime);\n\t\tconst nextIndex = getNextIndexForScope(document, job.scope);\n\t\tlet upgradePath;\n\t\tif (fromVersion > 0 && fromVersion < toVersion) try {\n\t\t\tupgradePath = this.registry.computeUpgradePath(document.header.documentType, fromVersion, toVersion);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);\n\t\t}\n\t\tif (fromVersion === toVersion && fromVersion > 0) return {\n\t\t\tjob,\n\t\t\tsuccess: true,\n\t\t\toperations: [],\n\t\t\toperationsWithContext: [],\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\ttry {\n\t\t\tdocument = applyUpgradeDocumentAction(document, action, upgradePath);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);\n\t\t}\n\t\tconst operation = createOperation(action, nextIndex, skip, {\n\t\t\tdocumentId,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch\n\t\t});\n\t\tconst resultingStateObj = {\n\t\t\theader: document.header,\n\t\t\t...document.state\n\t\t};\n\t\tconst resultingState = JSON.stringify(resultingStateObj);\n\t\tconst writeError = await this.writeOperationToStore(documentId, document.header.documentType, job.scope, job.branch, operation, job, startTime, stores, signal);\n\t\tif (writeError !== null) return writeError;\n\t\tupdateDocumentRevision(document, job.scope, operation.index);\n\t\tstores.writeCache.putState(documentId, job.scope, job.branch, operation.index, document);\n\t\tindexTxn.write([{\n\t\t\t...operation,\n\t\t\tdocumentId,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope: job.scope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\tstores.documentMetaCache.putDocumentMeta(documentId, job.branch, {\n\t\t\tstate: document.state.document,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tdocumentScopeRevision: operation.index + 1\n\t\t});\n\t\treturn buildSuccessResult(job, operation, documentId, document.header.documentType, resultingState, startTime);\n\t}\n\tasync executeAddRelationship(job, action, startTime, indexTxn, stores, sourceRemote = \"\", signal) {\n\t\tif (job.scope !== \"document\") return buildErrorResult(job, /* @__PURE__ */ new Error(`ADD_RELATIONSHIP must be in \"document\" scope, got \"${job.scope}\"`), startTime);\n\t\tconst input = action.input;\n\t\tif (!input.sourceId || !input.targetId || !input.relationshipType) return buildErrorResult(job, /* @__PURE__ */ new Error(\"ADD_RELATIONSHIP action requires sourceId, targetId, and relationshipType in input\"), startTime);\n\t\tif (input.sourceId === input.targetId) return buildErrorResult(job, /* @__PURE__ */ new Error(\"ADD_RELATIONSHIP: sourceId and targetId cannot be the same (self-relationships not allowed)\"), startTime);\n\t\tlet sourceDoc;\n\t\ttry {\n\t\t\tsourceDoc = await stores.writeCache.getState(input.sourceId, \"document\", job.branch, void 0, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, /* @__PURE__ */ new Error(`ADD_RELATIONSHIP: source document ${input.sourceId} not found: ${error instanceof Error ? error.message : String(error)}`), startTime);\n\t\t}\n\t\tconst operation = createOperation(action, getNextIndexForScope(sourceDoc, job.scope), 0, {\n\t\t\tdocumentId: input.sourceId,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch\n\t\t});\n\t\tconst writeError = await this.writeOperationToStore(input.sourceId, sourceDoc.header.documentType, job.scope, job.branch, operation, job, startTime, stores, signal);\n\t\tif (writeError !== null) return writeError;\n\t\tsourceDoc.header.lastModifiedAtUtcIso = operation.timestampUtcMs || (/* @__PURE__ */ new Date()).toISOString();\n\t\tupdateDocumentRevision(sourceDoc, job.scope, operation.index);\n\t\tsourceDoc.operations = {\n\t\t\t...sourceDoc.operations,\n\t\t\t[job.scope]: [...sourceDoc.operations[job.scope] ?? [], operation]\n\t\t};\n\t\tconst scopeState = sourceDoc.state[job.scope];\n\t\tconst resultingStateObj = {\n\t\t\theader: structuredClone(sourceDoc.header),\n\t\t\t[job.scope]: scopeState === void 0 ? {} : structuredClone(scopeState)\n\t\t};\n\t\tconst resultingState = JSON.stringify(resultingStateObj);\n\t\tstores.writeCache.putState(input.sourceId, job.scope, job.branch, operation.index, sourceDoc);\n\t\tindexTxn.write([{\n\t\t\t...operation,\n\t\t\tdocumentId: input.sourceId,\n\t\t\tdocumentType: sourceDoc.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope: job.scope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\tif (sourceDoc.header.documentType === \"powerhouse/document-drive\") {\n\t\t\tconst collectionId = driveCollectionId(job.branch, input.sourceId);\n\t\t\tindexTxn.addToCollection(collectionId, input.targetId);\n\t\t\tstores.collectionMembershipCache.invalidate(input.targetId);\n\t\t}\n\t\tstores.documentMetaCache.putDocumentMeta(input.sourceId, job.branch, {\n\t\t\tstate: sourceDoc.state.document,\n\t\t\tdocumentType: sourceDoc.header.documentType,\n\t\t\tdocumentScopeRevision: operation.index + 1\n\t\t});\n\t\treturn buildSuccessResult(job, operation, input.sourceId, sourceDoc.header.documentType, resultingState, startTime);\n\t}\n\tasync executeRemoveRelationship(job, action, startTime, indexTxn, stores, sourceRemote = \"\", signal) {\n\t\tif (job.scope !== \"document\") return buildErrorResult(job, /* @__PURE__ */ new Error(`REMOVE_RELATIONSHIP must be in \"document\" scope, got \"${job.scope}\"`), startTime);\n\t\tconst input = action.input;\n\t\tif (!input.sourceId || !input.targetId || !input.relationshipType) return buildErrorResult(job, /* @__PURE__ */ new Error(\"REMOVE_RELATIONSHIP action requires sourceId, targetId, and relationshipType in input\"), startTime);\n\t\tlet sourceDoc;\n\t\ttry {\n\t\t\tsourceDoc = await stores.writeCache.getState(input.sourceId, \"document\", job.branch, void 0, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, /* @__PURE__ */ new Error(`REMOVE_RELATIONSHIP: source document ${input.sourceId} not found: ${error instanceof Error ? error.message : String(error)}`), startTime);\n\t\t}\n\t\tconst operation = createOperation(action, getNextIndexForScope(sourceDoc, job.scope), 0, {\n\t\t\tdocumentId: input.sourceId,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch\n\t\t});\n\t\tconst writeError = await this.writeOperationToStore(input.sourceId, sourceDoc.header.documentType, job.scope, job.branch, operation, job, startTime, stores, signal);\n\t\tif (writeError !== null) return writeError;\n\t\tsourceDoc.header.lastModifiedAtUtcIso = operation.timestampUtcMs || (/* @__PURE__ */ new Date()).toISOString();\n\t\tupdateDocumentRevision(sourceDoc, job.scope, operation.index);\n\t\tsourceDoc.operations = {\n\t\t\t...sourceDoc.operations,\n\t\t\t[job.scope]: [...sourceDoc.operations[job.scope] ?? [], operation]\n\t\t};\n\t\tconst scopeState = sourceDoc.state[job.scope];\n\t\tconst resultingStateObj = {\n\t\t\theader: structuredClone(sourceDoc.header),\n\t\t\t[job.scope]: scopeState === void 0 ? {} : structuredClone(scopeState)\n\t\t};\n\t\tconst resultingState = JSON.stringify(resultingStateObj);\n\t\tstores.writeCache.putState(input.sourceId, job.scope, job.branch, operation.index, sourceDoc);\n\t\tindexTxn.write([{\n\t\t\t...operation,\n\t\t\tdocumentId: input.sourceId,\n\t\t\tdocumentType: sourceDoc.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope: job.scope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\tif (sourceDoc.header.documentType === \"powerhouse/document-drive\") {\n\t\t\tconst collectionId = driveCollectionId(job.branch, input.sourceId);\n\t\t\tindexTxn.removeFromCollection(collectionId, input.targetId);\n\t\t\tstores.collectionMembershipCache.invalidate(input.targetId);\n\t\t}\n\t\tstores.documentMetaCache.putDocumentMeta(input.sourceId, job.branch, {\n\t\t\tstate: sourceDoc.state.document,\n\t\t\tdocumentType: sourceDoc.header.documentType,\n\t\t\tdocumentScopeRevision: operation.index + 1\n\t\t});\n\t\treturn buildSuccessResult(job, operation, input.sourceId, sourceDoc.header.documentType, resultingState, startTime);\n\t}\n\tasync writeOperationToStore(documentId, documentType, scope, branch, operation, job, startTime, stores, signal) {\n\t\ttry {\n\t\t\tawait stores.operationStore.apply(documentId, documentType, scope, branch, operation.index, (txn) => {\n\t\t\t\ttxn.addOperations(operation);\n\t\t\t}, signal);\n\t\t\treturn null;\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error writing @Operation to IOperationStore: @Error\", operation, error);\n\t\t\tstores.writeCache.invalidate(documentId, scope, branch);\n\t\t\treturn {\n\t\t\t\tjob,\n\t\t\t\tsuccess: false,\n\t\t\t\terror: /* @__PURE__ */ new Error(`Failed to write operation to IOperationStore: ${error instanceof Error ? error.message : String(error)}`),\n\t\t\t\tduration: Date.now() - startTime\n\t\t\t};\n\t\t}\n\t}\n};\n//#endregion\n//#region src/executor/signature-verifier.ts\nvar SignatureVerifier = class {\n\tconstructor(verifier) {\n\t\tthis.verifier = verifier;\n\t}\n\tasync verifyActions(documentId, branch, actions) {\n\t\tif (!this.verifier) return;\n\t\tfor (const action of actions) {\n\t\t\tconst signer = action.context?.signer;\n\t\t\tif (!signer) continue;\n\t\t\tif (signer.signatures.length === 0) throw new InvalidSignatureError(documentId, `Action ${action.id} has signer but no signatures`);\n\t\t\tconst publicKey = signer.app.key;\n\t\t\tlet isValid = false;\n\t\t\ttry {\n\t\t\t\tconst tempOperation = {\n\t\t\t\t\tid: deriveOperationId(documentId, action.scope, branch, action.id),\n\t\t\t\t\tindex: 0,\n\t\t\t\t\ttimestampUtcMs: action.timestampUtcMs || (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t\t\thash: \"\",\n\t\t\t\t\tskip: 0,\n\t\t\t\t\taction\n\t\t\t\t};\n\t\t\t\tisValid = await this.verifier(tempOperation, publicKey);\n\t\t\t} catch (error) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new InvalidSignatureError(documentId, `Action ${action.id} verification failed: ${errorMessage}`);\n\t\t\t}\n\t\t\tif (!isValid) throw new InvalidSignatureError(documentId, `Action ${action.id} signature verification returned false`);\n\t\t}\n\t}\n\tasync verifyOperations(documentId, operations) {\n\t\tif (!this.verifier) return;\n\t\tfor (let i = 0; i < operations.length; i++) {\n\t\t\tconst operation = operations[i];\n\t\t\tconst signer = operation.action.context?.signer;\n\t\t\tif (!signer) continue;\n\t\t\tif (signer.signatures.length === 0) throw new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} has signer but no signatures`);\n\t\t\tconst publicKey = signer.app.key;\n\t\t\tlet isValid = false;\n\t\t\ttry {\n\t\t\t\tisValid = await this.verifier(operation, publicKey);\n\t\t\t} catch (error) {\n\t\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} verification failed: ${errorMessage}`);\n\t\t\t}\n\t\t\tif (!isValid) throw new InvalidSignatureError(documentId, `Operation ${operation.id} at index ${operation.index} signature verification returned false`);\n\t\t}\n\t}\n};\n//#endregion\n//#region src/executor/simple-job-executor.ts\nconst MAX_SKIP_THRESHOLD = 1e3;\nconst ISO_TIMESTAMP_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/;\nfunction isValidISOTimestamp(value) {\n\tif (!ISO_TIMESTAMP_REGEX.test(value)) return false;\n\treturn !isNaN(new Date(value).getTime());\n}\nconst documentScopeActions = [\n\t\"CREATE_DOCUMENT\",\n\t\"DELETE_DOCUMENT\",\n\t\"UPGRADE_DOCUMENT\",\n\t\"ADD_RELATIONSHIP\",\n\t\"REMOVE_RELATIONSHIP\"\n];\n/**\n* Simple job executor that processes a job by applying actions through document model reducers.\n*/\nvar SimpleJobExecutor = class {\n\tconfig;\n\tsignatureVerifierModule;\n\tdocumentActionHandler;\n\texecutionScope;\n\tconstructor(logger, registry, operationStore, eventBus, writeCache, operationIndex, documentMetaCache, collectionMembershipCache, config, signatureVerifier, executionScope) {\n\t\tthis.logger = logger;\n\t\tthis.registry = registry;\n\t\tthis.operationStore = operationStore;\n\t\tthis.eventBus = eventBus;\n\t\tthis.writeCache = writeCache;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.documentMetaCache = documentMetaCache;\n\t\tthis.collectionMembershipCache = collectionMembershipCache;\n\t\tthis.config = {\n\t\t\tmaxSkipThreshold: config.maxSkipThreshold ?? MAX_SKIP_THRESHOLD,\n\t\t\tmaxConcurrency: config.maxConcurrency ?? 1,\n\t\t\tjobTimeoutMs: config.jobTimeoutMs ?? 3e4,\n\t\t\tretryBaseDelayMs: config.retryBaseDelayMs ?? 100,\n\t\t\tretryMaxDelayMs: config.retryMaxDelayMs ?? 5e3\n\t\t};\n\t\tthis.signatureVerifierModule = new SignatureVerifier(signatureVerifier);\n\t\tthis.documentActionHandler = new DocumentActionHandler(registry, logger);\n\t\tthis.executionScope = executionScope ?? new DefaultExecutionScope(operationStore, operationIndex, writeCache, documentMetaCache, collectionMembershipCache);\n\t}\n\t/**\n\t* Execute a single job by applying all its actions through the appropriate reducers.\n\t* Actions are processed sequentially in order.\n\t*/\n\tasync executeJob(job, signal) {\n\t\tconst startTime = Date.now();\n\t\tconst touchedCacheEntries = [];\n\t\tlet pendingEvent;\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await this.executionScope.run(async (stores) => {\n\t\t\t\tconst indexTxn = stores.operationIndex.start();\n\t\t\t\tif (job.kind === \"load\") {\n\t\t\t\t\tconst loadResult = await this.executeLoadJob(job, startTime, indexTxn, stores, signal);\n\t\t\t\t\tif (loadResult.success && loadResult.operationsWithContext) {\n\t\t\t\t\t\tfor (const owc of loadResult.operationsWithContext) touchedCacheEntries.push({\n\t\t\t\t\t\t\tdocumentId: owc.context.documentId,\n\t\t\t\t\t\t\tscope: owc.context.scope,\n\t\t\t\t\t\t\tbranch: owc.context.branch\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst ordinals = await stores.operationIndex.commit(indexTxn, signal);\n\t\t\t\t\t\tfor (let i = 0; i < loadResult.operationsWithContext.length; i++) loadResult.operationsWithContext[i].context.ordinal = ordinals[i];\n\t\t\t\t\t\tconst collectionMemberships = loadResult.operationsWithContext.length > 0 ? await this.getCollectionMembershipsForOperations(loadResult.operationsWithContext, stores) : {};\n\t\t\t\t\t\tpendingEvent = {\n\t\t\t\t\t\t\tjobId: job.id,\n\t\t\t\t\t\t\toperations: loadResult.operationsWithContext,\n\t\t\t\t\t\t\tjobMeta: job.meta,\n\t\t\t\t\t\t\tcollectionMemberships\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\treturn loadResult;\n\t\t\t\t}\n\t\t\t\tconst actionResult = await this.processActions(job, job.actions, startTime, indexTxn, stores, void 0, void 0, \"\", signal);\n\t\t\t\tif (!actionResult.success) return {\n\t\t\t\t\tjob,\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: actionResult.error,\n\t\t\t\t\tduration: Date.now() - startTime\n\t\t\t\t};\n\t\t\t\tif (actionResult.operationsWithContext.length > 0) for (const owc of actionResult.operationsWithContext) touchedCacheEntries.push({\n\t\t\t\t\tdocumentId: owc.context.documentId,\n\t\t\t\t\tscope: owc.context.scope,\n\t\t\t\t\tbranch: owc.context.branch\n\t\t\t\t});\n\t\t\t\tconst ordinals = await stores.operationIndex.commit(indexTxn, signal);\n\t\t\t\tif (actionResult.operationsWithContext.length > 0) {\n\t\t\t\t\tfor (let i = 0; i < actionResult.operationsWithContext.length; i++) actionResult.operationsWithContext[i].context.ordinal = ordinals[i];\n\t\t\t\t\tconst collectionMemberships = await this.getCollectionMembershipsForOperations(actionResult.operationsWithContext, stores);\n\t\t\t\t\tpendingEvent = {\n\t\t\t\t\t\tjobId: job.id,\n\t\t\t\t\t\toperations: actionResult.operationsWithContext,\n\t\t\t\t\t\tjobMeta: job.meta,\n\t\t\t\t\t\tcollectionMemberships\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tjob,\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\toperations: actionResult.generatedOperations,\n\t\t\t\t\toperationsWithContext: actionResult.operationsWithContext,\n\t\t\t\t\tduration: Date.now() - startTime\n\t\t\t\t};\n\t\t\t}, signal);\n\t\t} catch (error) {\n\t\t\tfor (const entry of touchedCacheEntries) {\n\t\t\t\tthis.writeCache.invalidate(entry.documentId, entry.scope, entry.branch);\n\t\t\t\tthis.documentMetaCache.invalidate(entry.documentId, entry.branch);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tif (pendingEvent) this.eventBus.emit(ReactorEventTypes.JOB_WRITE_READY, pendingEvent).catch((error) => {\n\t\t\tthis.logger.error(\"Failed to emit JOB_WRITE_READY event: @Event : @Error\", pendingEvent, error);\n\t\t});\n\t\treturn result;\n\t}\n\tasync getCollectionMembershipsForOperations(operations, stores) {\n\t\tconst documentIds = [...new Set(operations.map((op) => op.context.documentId))];\n\t\treturn stores.collectionMembershipCache.getCollectionsForDocuments(documentIds);\n\t}\n\tasync processActions(job, actions, startTime, indexTxn, stores, skipValues, sourceOperations, sourceRemote = \"\", signal) {\n\t\tconst generatedOperations = [];\n\t\tconst operationsWithContext = [];\n\t\ttry {\n\t\t\tawait this.signatureVerifierModule.verifyActions(job.documentId, job.branch, actions);\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tsuccess: false,\n\t\t\t\tgeneratedOperations,\n\t\t\t\toperationsWithContext,\n\t\t\t\terror: error instanceof Error ? error : new Error(String(error))\n\t\t\t};\n\t\t}\n\t\tfor (const action of actions) if (action.timestampUtcMs && !isValidISOTimestamp(action.timestampUtcMs)) return {\n\t\t\tsuccess: false,\n\t\t\tgeneratedOperations,\n\t\t\toperationsWithContext,\n\t\t\terror: /* @__PURE__ */ new Error(`Invalid timestamp \"${action.timestampUtcMs}\" on action ${action.type} (id: ${action.id})`)\n\t\t};\n\t\tfor (let actionIndex = 0; actionIndex < actions.length; actionIndex++) {\n\t\t\tconst action = actions[actionIndex];\n\t\t\tconst skip = skipValues?.[actionIndex] ?? 0;\n\t\t\tconst sourceOperation = sourceOperations?.[actionIndex];\n\t\t\tconst result = documentScopeActions.includes(action.type) ? await this.documentActionHandler.execute(job, action, startTime, indexTxn, stores, skip, sourceRemote, signal) : await this.executeRegularAction(job, action, startTime, indexTxn, stores, skip, sourceOperation, sourceRemote, signal);\n\t\t\tconst error = this.accumulateResultOrReturnError(result, generatedOperations, operationsWithContext);\n\t\t\tif (error !== null) return {\n\t\t\t\tsuccess: false,\n\t\t\t\tgeneratedOperations,\n\t\t\t\toperationsWithContext,\n\t\t\t\terror: error.error\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tgeneratedOperations,\n\t\t\toperationsWithContext\n\t\t};\n\t}\n\tasync executeRegularAction(job, action, startTime, indexTxn, stores, skip = 0, sourceOperation, sourceRemote = \"\", signal) {\n\t\tlet docMeta;\n\t\ttry {\n\t\t\tdocMeta = await stores.documentMetaCache.getDocumentMeta(job.documentId, job.branch, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);\n\t\t}\n\t\tif (docMeta.state.isDeleted) return buildErrorResult(job, new DocumentDeletedError(job.documentId, docMeta.state.deletedAtUtcIso), startTime);\n\t\tif (isUndoRedo(action) || action.type === \"PRUNE\" || action.type === \"NOOP\" && skip > 0) stores.writeCache.invalidate(job.documentId, job.scope, job.branch);\n\t\tlet document;\n\t\ttry {\n\t\t\tdocument = await stores.writeCache.getState(job.documentId, job.scope, job.branch, void 0, signal);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);\n\t\t}\n\t\tlet module;\n\t\ttry {\n\t\t\tconst moduleVersion = docMeta.state.version === 0 ? void 0 : docMeta.state.version;\n\t\t\tmodule = this.registry.getModule(document.header.documentType, moduleVersion);\n\t\t} catch (error) {\n\t\t\treturn buildErrorResult(job, error instanceof Error ? error : new Error(String(error)), startTime);\n\t\t}\n\t\tlet updatedDocument;\n\t\ttry {\n\t\t\tconst protocolVersion = document.header.protocolVersions?.[\"base-reducer\"] ?? 1;\n\t\t\tconst reducerOptions = sourceOperation ? {\n\t\t\t\tskip,\n\t\t\t\tbranch: job.branch,\n\t\t\t\treplayOptions: { operation: sourceOperation },\n\t\t\t\tprotocolVersion\n\t\t\t} : {\n\t\t\t\tskip,\n\t\t\t\tbranch: job.branch,\n\t\t\t\tprotocolVersion\n\t\t\t};\n\t\t\tupdatedDocument = module.reducer(document, action, void 0, reducerOptions);\n\t\t} catch (error) {\n\t\t\tconst contextMessage = `Failed to apply action to document:\\n Action type: ${action.type}\\n Document ID: ${job.documentId}\\n Document type: ${document.header.documentType}\\n Scope: ${job.scope}\\n Original error: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\tconst enhancedError = new Error(contextMessage);\n\t\t\tif (error instanceof Error && error.stack) enhancedError.stack = `${contextMessage}\\n\\nOriginal stack trace:\\n${error.stack}`;\n\t\t\treturn buildErrorResult(job, enhancedError, startTime);\n\t\t}\n\t\tconst scope = job.scope;\n\t\tconst operations = updatedDocument.operations[scope];\n\t\tif (operations.length === 0) return buildErrorResult(job, /* @__PURE__ */ new Error(\"No operation generated from action\"), startTime);\n\t\tconst newOperation = operations[operations.length - 1];\n\t\tif (!isUndoRedo(action)) newOperation.skip = skip;\n\t\tconst resultingState = JSON.stringify({\n\t\t\t...updatedDocument.state,\n\t\t\theader: updatedDocument.header\n\t\t});\n\t\ttry {\n\t\t\tawait stores.operationStore.apply(job.documentId, document.header.documentType, scope, job.branch, newOperation.index, (txn) => {\n\t\t\t\ttxn.addOperations(newOperation);\n\t\t\t}, signal);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error writing @Operation to IOperationStore: @Error\", newOperation, error);\n\t\t\tstores.writeCache.invalidate(job.documentId, scope, job.branch);\n\t\t\treturn {\n\t\t\t\tjob,\n\t\t\t\tsuccess: false,\n\t\t\t\terror: /* @__PURE__ */ new Error(`Failed to write operation to IOperationStore: ${error instanceof Error ? error.message : String(error)}`),\n\t\t\t\tduration: Date.now() - startTime\n\t\t\t};\n\t\t}\n\t\tupdatedDocument.header.revision = {\n\t\t\t...updatedDocument.header.revision,\n\t\t\t[scope]: newOperation.index + 1\n\t\t};\n\t\tstores.writeCache.putState(job.documentId, scope, job.branch, newOperation.index, updatedDocument);\n\t\tindexTxn.write([{\n\t\t\t...newOperation,\n\t\t\tdocumentId: job.documentId,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tbranch: job.branch,\n\t\t\tscope,\n\t\t\tsourceRemote\n\t\t}]);\n\t\treturn {\n\t\t\tjob,\n\t\t\tsuccess: true,\n\t\t\toperations: [newOperation],\n\t\t\toperationsWithContext: [{\n\t\t\t\toperation: newOperation,\n\t\t\t\tcontext: {\n\t\t\t\t\tdocumentId: job.documentId,\n\t\t\t\t\tscope,\n\t\t\t\t\tbranch: job.branch,\n\t\t\t\t\tdocumentType: document.header.documentType,\n\t\t\t\t\tresultingState,\n\t\t\t\t\tordinal: 0\n\t\t\t\t}\n\t\t\t}],\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t}\n\tasync executeLoadJob(job, startTime, indexTxn, stores, signal) {\n\t\tif (job.operations.length === 0) return buildErrorResult(job, /* @__PURE__ */ new Error(\"Load job must include at least one operation\"), startTime);\n\t\tlet docMeta;\n\t\ttry {\n\t\t\tdocMeta = await stores.documentMetaCache.getDocumentMeta(job.documentId, job.branch, signal);\n\t\t} catch {}\n\t\tif (docMeta?.state.isDeleted) return buildErrorResult(job, new DocumentDeletedError(job.documentId, docMeta.state.deletedAtUtcIso), startTime);\n\t\tconst scope = job.scope;\n\t\tlet latestRevision = 0;\n\t\ttry {\n\t\t\tlatestRevision = (await stores.operationStore.getRevisions(job.documentId, job.branch, signal)).revision[scope] ?? 0;\n\t\t} catch {\n\t\t\tlatestRevision = 0;\n\t\t}\n\t\tfor (const operation of job.operations) if (operation.timestampUtcMs && !isValidISOTimestamp(operation.timestampUtcMs)) return {\n\t\t\tjob,\n\t\t\tsuccess: false,\n\t\t\terror: /* @__PURE__ */ new Error(`Invalid timestamp \"${operation.timestampUtcMs}\" on operation (index: ${operation.index})`),\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\tlet minIncomingIndex = Number.POSITIVE_INFINITY;\n\t\tlet minIncomingTimestamp = job.operations[0]?.timestampUtcMs || \"\";\n\t\tfor (const operation of job.operations) {\n\t\t\tminIncomingIndex = Math.min(minIncomingIndex, operation.index);\n\t\t\tconst ts = operation.timestampUtcMs || \"\";\n\t\t\tif (ts < minIncomingTimestamp) minIncomingTimestamp = ts;\n\t\t}\n\t\tlet conflictingOps = [];\n\t\ttry {\n\t\t\tconflictingOps = (await stores.operationStore.getConflicting(job.documentId, scope, job.branch, minIncomingTimestamp, void 0, signal)).results;\n\t\t} catch {\n\t\t\tconflictingOps = [];\n\t\t}\n\t\tlet allOpsFromMinConflictingIndex = conflictingOps;\n\t\tif (conflictingOps.length > 0) {\n\t\t\tconst minConflictingIndex = Math.min(...conflictingOps.map((op) => op.index));\n\t\t\ttry {\n\t\t\t\tallOpsFromMinConflictingIndex = (await stores.operationStore.getSince(job.documentId, scope, job.branch, minConflictingIndex - 1, void 0, void 0, signal)).results;\n\t\t\t} catch {\n\t\t\t\tallOpsFromMinConflictingIndex = conflictingOps;\n\t\t\t}\n\t\t}\n\t\tconst nonSupersededOps = conflictingOps.filter((op) => {\n\t\t\tfor (const laterOp of allOpsFromMinConflictingIndex) if (laterOp.index > op.index && laterOp.skip > 0) {\n\t\t\t\tif (laterOp.index - laterOp.skip <= op.index) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\tconst existingOpsToReshuffle = nonSupersededOps;\n\t\tconst skipCount = existingOpsToReshuffle.length;\n\t\tif (skipCount > this.config.maxSkipThreshold) return {\n\t\t\tjob,\n\t\t\tsuccess: false,\n\t\t\terror: /* @__PURE__ */ new Error(`Excessive reshuffle detected: skip count of ${skipCount} exceeds threshold of ${this.config.maxSkipThreshold}. This indicates a significant divergence between local and incoming operations.`),\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\tconst existingActionIds = new Set(nonSupersededOps.map((op) => op.action.id));\n\t\tconst seenIncomingActionIds = /* @__PURE__ */ new Set();\n\t\tconst incomingOpsToApply = job.operations.filter((op) => {\n\t\t\tif (existingActionIds.has(op.action.id)) return false;\n\t\t\tif (seenIncomingActionIds.has(op.action.id)) return false;\n\t\t\tseenIncomingActionIds.add(op.action.id);\n\t\t\treturn true;\n\t\t});\n\t\tif (incomingOpsToApply.length === 0) return {\n\t\t\tjob,\n\t\t\tsuccess: true,\n\t\t\toperations: [],\n\t\t\toperationsWithContext: [],\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\tconst reshuffledOperations = reshuffleByTimestamp({\n\t\t\tindex: latestRevision,\n\t\t\tskip: skipCount\n\t\t}, existingOpsToReshuffle, incomingOpsToApply.map((operation) => ({\n\t\t\t...operation,\n\t\t\tid: operation.id\n\t\t})));\n\t\tfor (const operation of reshuffledOperations) if (operation.action.type === \"NOOP\") operation.skip = 1;\n\t\tconst actions = reshuffledOperations.map((operation) => operation.action);\n\t\tconst skipValues = reshuffledOperations.map((operation) => operation.skip);\n\t\tconst effectiveSourceRemote = skipCount > 0 ? \"\" : job.meta.sourceRemote || \"\";\n\t\tconst result = await this.processActions(job, actions, startTime, indexTxn, stores, skipValues, reshuffledOperations, effectiveSourceRemote, signal);\n\t\tif (!result.success) return {\n\t\t\tjob,\n\t\t\tsuccess: false,\n\t\t\terror: result.error,\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t\tstores.writeCache.invalidate(job.documentId, scope, job.branch);\n\t\tif (scope === \"document\") stores.documentMetaCache.invalidate(job.documentId, job.branch);\n\t\treturn {\n\t\t\tjob,\n\t\t\tsuccess: true,\n\t\t\toperations: result.generatedOperations,\n\t\t\toperationsWithContext: result.operationsWithContext,\n\t\t\tduration: Date.now() - startTime\n\t\t};\n\t}\n\taccumulateResultOrReturnError(result, generatedOperations, operationsWithContext) {\n\t\tif (!result.success) return result;\n\t\tif (result.operations && result.operations.length > 0) generatedOperations.push(...result.operations);\n\t\tif (result.operationsWithContext) operationsWithContext.push(...result.operationsWithContext);\n\t\treturn null;\n\t}\n};\n//#endregion\n//#region src/job-tracker/in-memory-job-tracker.ts\n/**\n* In-memory implementation of IJobTracker.\n* Maintains job status in a Map for synchronous access.\n* Subscribes to operation events to update job states.\n*/\nvar InMemoryJobTracker = class {\n\tjobs = /* @__PURE__ */ new Map();\n\tunsubscribers = [];\n\tconstructor(eventBus) {\n\t\tthis.eventBus = eventBus;\n\t\tthis.subscribeToEvents();\n\t}\n\tsubscribeToEvents() {\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_WRITE_READY, (_type, event) => {\n\t\t\tthis.handleWriteReady(event);\n\t\t}));\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_READ_READY, (_type, event) => {\n\t\t\tthis.handleReadReady(event);\n\t\t}));\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(ReactorEventTypes.JOB_FAILED, (_type, event) => {\n\t\t\tthis.handleJobFailed(event);\n\t\t}));\n\t}\n\thandleWriteReady(event) {\n\t\tconst jobId = event.jobId;\n\t\tconst job = this.jobs.get(jobId);\n\t\tif (job && job.status === JobStatus.RUNNING) {\n\t\t\tconst consistencyToken = createConsistencyToken(event.operations);\n\t\t\tthis.jobs.set(jobId, {\n\t\t\t\t...job,\n\t\t\t\tstatus: JobStatus.WRITE_READY,\n\t\t\t\tconsistencyToken\n\t\t\t});\n\t\t}\n\t}\n\thandleReadReady(event) {\n\t\tconst jobId = event.jobId;\n\t\tconst job = this.jobs.get(jobId);\n\t\tif (job && job.status === JobStatus.WRITE_READY) this.jobs.set(jobId, {\n\t\t\t...job,\n\t\t\tstatus: JobStatus.READ_READY\n\t\t});\n\t}\n\thandleJobFailed(event) {\n\t\tthis.markFailed(event.jobId, {\n\t\t\tmessage: event.error.message,\n\t\t\tstack: event.error.stack || \"\"\n\t\t}, event.job);\n\t}\n\tshutdown() {\n\t\tfor (const unsubscribe of this.unsubscribers) unsubscribe();\n\t\tthis.unsubscribers = [];\n\t}\n\tregisterJob(jobInfo) {\n\t\tthis.jobs.set(jobInfo.id, { ...jobInfo });\n\t}\n\tmarkRunning(jobId) {\n\t\tconst job = this.jobs.get(jobId);\n\t\tif (!job) {\n\t\t\tthis.jobs.set(jobId, {\n\t\t\t\tid: jobId,\n\t\t\t\tstatus: JobStatus.RUNNING,\n\t\t\t\tcreatedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t\tconsistencyToken: createEmptyConsistencyToken(),\n\t\t\t\tmeta: {\n\t\t\t\t\tbatchId: jobId,\n\t\t\t\t\tbatchJobIds: [jobId]\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.jobs.set(jobId, {\n\t\t\t...job,\n\t\t\tstatus: JobStatus.RUNNING\n\t\t});\n\t}\n\tmarkFailed(jobId, error, job) {\n\t\tconst existing = this.jobs.get(jobId);\n\t\tif (!existing) {\n\t\t\tthis.jobs.set(jobId, {\n\t\t\t\tid: jobId,\n\t\t\t\tstatus: JobStatus.FAILED,\n\t\t\t\tcreatedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t\tcompletedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\t\terror,\n\t\t\t\tjob,\n\t\t\t\tconsistencyToken: createEmptyConsistencyToken(),\n\t\t\t\tmeta: {\n\t\t\t\t\tbatchId: jobId,\n\t\t\t\t\tbatchJobIds: [jobId]\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.jobs.set(jobId, {\n\t\t\t...existing,\n\t\t\tstatus: JobStatus.FAILED,\n\t\t\tcompletedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\terror,\n\t\t\tjob,\n\t\t\tconsistencyToken: createEmptyConsistencyToken()\n\t\t});\n\t}\n\tgetJobStatus(jobId) {\n\t\tconst job = this.jobs.get(jobId);\n\t\treturn job ? { ...job } : null;\n\t}\n};\n//#endregion\n//#region src/read-models/base-read-model.ts\n/**\n* Base class for read models that provides catch-up/rewind functionality.\n* Handles initialization, state tracking via ViewState table, and consistency tracking.\n* Subclasses override commitOperations() with their specific domain logic.\n*/\nvar BaseReadModel = class {\n\tlastOrdinal = 0;\n\tname;\n\tconstructor(db, operationIndex, writeCache, consistencyTracker, config) {\n\t\tthis.db = db;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.writeCache = writeCache;\n\t\tthis.consistencyTracker = consistencyTracker;\n\t\tthis.config = config;\n\t\tthis.name = config.readModelId;\n\t}\n\t/**\n\t* Initializes the read model by loading state and catching up on missed operations.\n\t*/\n\tasync init() {\n\t\tconst viewState = await this.loadState();\n\t\tif (viewState !== void 0) {\n\t\t\tthis.lastOrdinal = viewState;\n\t\t\tconst missedOperations = await this.operationIndex.getSinceOrdinal(this.lastOrdinal);\n\t\t\tif (missedOperations.results.length > 0) {\n\t\t\t\tconst ops = this.config.rebuildStateOnInit ? await this.rebuildStateForOperations(missedOperations.results) : missedOperations.results;\n\t\t\t\tawait this.indexOperations(ops);\n\t\t\t}\n\t\t} else {\n\t\t\tawait this.initializeState();\n\t\t\tconst allOperations = await this.operationIndex.getSinceOrdinal(0);\n\t\t\tif (allOperations.results.length > 0) {\n\t\t\t\tconst ops = this.config.rebuildStateOnInit ? await this.rebuildStateForOperations(allOperations.results) : allOperations.results;\n\t\t\t\tawait this.indexOperations(ops);\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Template method: runs domain-specific commitOperations, then persists\n\t* state and updates consistency tracking.\n\t*/\n\tasync indexOperations(items) {\n\t\tif (items.length === 0) return;\n\t\tawait this.commitOperations(items);\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tawait this.saveState(trx, items);\n\t\t});\n\t\tthis.updateConsistencyTracker(items);\n\t}\n\t/**\n\t* Waits for the read model to reach the specified consistency level.\n\t*/\n\tasync waitForConsistency(token, timeoutMs, signal) {\n\t\tif (token.coordinates.length === 0) return;\n\t\tawait this.consistencyTracker.waitFor(token.coordinates, timeoutMs, signal);\n\t}\n\tasync commitOperations(items) {}\n\t/**\n\t* Rebuilds document state for each operation using the write cache.\n\t*/\n\tasync rebuildStateForOperations(operations) {\n\t\tconst result = [];\n\t\tfor (const op of operations) {\n\t\t\tconst { documentId, scope, branch } = op.context;\n\t\t\tconst targetRevision = op.operation.index;\n\t\t\tconst document = await this.writeCache.getState(documentId, scope, branch, targetRevision);\n\t\t\tresult.push({\n\t\t\t\toperation: op.operation,\n\t\t\t\tcontext: {\n\t\t\t\t\t...op.context,\n\t\t\t\t\tresultingState: JSON.stringify(document)\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\t/**\n\t* Loads the last processed ordinal from the ViewState table.\n\t* Returns undefined if no state exists for this read model.\n\t*/\n\tasync loadState() {\n\t\treturn (await this.db.selectFrom(\"ViewState\").select(\"lastOrdinal\").where(\"readModelId\", \"=\", this.config.readModelId).executeTakeFirst())?.lastOrdinal;\n\t}\n\t/**\n\t* Initializes the ViewState row for this read model.\n\t*/\n\tasync initializeState() {\n\t\tawait this.db.insertInto(\"ViewState\").values({\n\t\t\treadModelId: this.config.readModelId,\n\t\t\tlastOrdinal: 0\n\t\t}).execute();\n\t}\n\t/**\n\t* Saves the last processed ordinal to the ViewState table.\n\t*/\n\tasync saveState(trx, items) {\n\t\tconst maxOrdinal = Math.max(...items.map((item) => item.context.ordinal));\n\t\tthis.lastOrdinal = maxOrdinal;\n\t\tawait trx.updateTable(\"ViewState\").set({\n\t\t\tlastOrdinal: maxOrdinal,\n\t\t\tlastOperationTimestamp: /* @__PURE__ */ new Date()\n\t\t}).where(\"readModelId\", \"=\", this.config.readModelId).execute();\n\t}\n\t/**\n\t* Updates the consistency tracker with the processed operations.\n\t*/\n\tupdateConsistencyTracker(items) {\n\t\tconst coordinates = [];\n\t\tfor (let i = 0; i < items.length; i++) {\n\t\t\tconst item = items[i];\n\t\t\tcoordinates.push({\n\t\t\t\tdocumentId: item.context.documentId,\n\t\t\t\tscope: item.context.scope,\n\t\t\t\tbranch: item.context.branch,\n\t\t\t\toperationIndex: item.operation.index\n\t\t\t});\n\t\t}\n\t\tthis.consistencyTracker.update(coordinates);\n\t}\n};\n//#endregion\n//#region src/processors/utils.ts\nconst DRIVE_DOCUMENT_TYPE = \"powerhouse/document-drive\";\nfunction isDriveCreation(op) {\n\treturn op.operation.action.type === \"CREATE_DOCUMENT\" && op.context.documentType === \"powerhouse/document-drive\";\n}\nfunction isDriveDeletion(op) {\n\treturn op.operation.action.type === \"DELETE_DOCUMENT\";\n}\nfunction extractDriveHeader(op) {\n\tif (!op.context.resultingState) return void 0;\n\treturn JSON.parse(op.context.resultingState).header;\n}\nfunction extractDeletedDocumentId(op) {\n\treturn op.operation.action.input.documentId ?? op.context.documentId;\n}\nfunction createMinimalDriveHeader(driveId) {\n\treturn {\n\t\tid: driveId,\n\t\tdocumentType: DRIVE_DOCUMENT_TYPE,\n\t\tsig: {\n\t\t\tpublicKey: {},\n\t\t\tnonce: \"\"\n\t\t},\n\t\tslug: \"\",\n\t\tname: \"\",\n\t\tbranch: \"main\",\n\t\trevision: {},\n\t\tcreatedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString(),\n\t\tlastModifiedAtUtcIso: (/* @__PURE__ */ new Date()).toISOString()\n\t};\n}\nfunction matchesFilter(op, filter) {\n\tif (filter.documentType && filter.documentType.length > 0) {\n\t\tif (!filter.documentType.includes(op.context.documentType)) return false;\n\t}\n\tif (filter.scope && filter.scope.length > 0) {\n\t\tif (!filter.scope.includes(op.context.scope)) return false;\n\t}\n\tif (filter.branch && filter.branch.length > 0) {\n\t\tif (!filter.branch.includes(op.context.branch)) return false;\n\t}\n\tif (filter.documentId && filter.documentId.length > 0) {\n\t\tif (!filter.documentId.includes(\"*\") && !filter.documentId.includes(op.context.documentId)) return false;\n\t}\n\treturn true;\n}\n//#endregion\n//#region src/processors/processor-manager.ts\n/**\n* Manages processor lifecycle based on operations.\n* Extends BaseReadModel to receive operations from ReadModelCoordinator.\n*\n* Responsibilities:\n* 1. Detect drive creation from CREATE_DOCUMENT operations\n* 2. Create processors for each drive using registered factories\n* 3. Route operations to matching processors based on filters\n* 4. Clean up processors when drives are deleted or factories are unregistered\n* 5. Track per-processor cursors for failure recovery and backfill\n*/\nvar ProcessorManager = class extends BaseReadModel {\n\tfactoryRegistry = /* @__PURE__ */ new Map();\n\tprocessorsByDrive = /* @__PURE__ */ new Map();\n\tfactoryToProcessors = /* @__PURE__ */ new Map();\n\tknownDriveIds = /* @__PURE__ */ new Set();\n\tcursorCache = /* @__PURE__ */ new Map();\n\tlogger;\n\tconstructor(db, operationIndex, writeCache, consistencyTracker, logger) {\n\t\tsuper(db, operationIndex, writeCache, consistencyTracker, {\n\t\t\treadModelId: \"processor-manager\",\n\t\t\trebuildStateOnInit: true\n\t\t});\n\t\tthis.logger = logger;\n\t}\n\tasync init() {\n\t\tawait super.init();\n\t\tawait this.loadAllCursors();\n\t\tawait this.discoverExistingDrives();\n\t}\n\tasync commitOperations(items) {\n\t\tawait this.detectAndRegisterNewDrives(items);\n\t\tawait this.detectAndCleanupDeletedDrives(items);\n\t\tawait this.routeOperationsToProcessors(items);\n\t}\n\tasync registerFactory(identifier, factory) {\n\t\tif (this.factoryRegistry.has(identifier)) await this.unregisterFactory(identifier);\n\t\tthis.factoryRegistry.set(identifier, factory);\n\t\tthis.factoryToProcessors.set(identifier, /* @__PURE__ */ new Map());\n\t\tfor (const driveId of this.knownDriveIds) {\n\t\t\tconst driveHeader = createMinimalDriveHeader(driveId);\n\t\t\tawait this.createProcessorsForDrive(driveId, identifier, factory, driveHeader);\n\t\t}\n\t}\n\tasync unregisterFactory(identifier) {\n\t\tconst factoryProcessors = this.factoryToProcessors.get(identifier);\n\t\tif (!factoryProcessors) return;\n\t\tfor (const [driveId, tracked] of factoryProcessors) {\n\t\t\tfor (const t of tracked) await this.safeDisconnect(t.record.processor);\n\t\t\tconst driveProcessors = this.processorsByDrive.get(driveId);\n\t\t\tif (driveProcessors) {\n\t\t\t\tconst remaining = driveProcessors.filter((p) => !tracked.includes(p));\n\t\t\t\tif (remaining.length > 0) this.processorsByDrive.set(driveId, remaining);\n\t\t\t\telse this.processorsByDrive.delete(driveId);\n\t\t\t}\n\t\t}\n\t\tawait this.deleteProcessorCursors({ factoryId: identifier });\n\t\tthis.factoryToProcessors.delete(identifier);\n\t\tthis.factoryRegistry.delete(identifier);\n\t}\n\tget(processorId) {\n\t\tfor (const tracked of this.allTrackedProcessors()) if (tracked.processorId === processorId) return tracked;\n\t}\n\tgetAll() {\n\t\treturn Array.from(this.allTrackedProcessors());\n\t}\n\t*allTrackedProcessors() {\n\t\tfor (const tracked of this.processorsByDrive.values()) yield* tracked;\n\t}\n\tasync detectAndRegisterNewDrives(operations) {\n\t\tfor (const op of operations) {\n\t\t\tif (!isDriveCreation(op)) continue;\n\t\t\tconst driveId = op.context.documentId;\n\t\t\tif (this.knownDriveIds.has(driveId)) continue;\n\t\t\tthis.knownDriveIds.add(driveId);\n\t\t\tconst driveHeader = extractDriveHeader(op);\n\t\t\tif (!driveHeader) continue;\n\t\t\tfor (const [identifier, factory] of this.factoryRegistry) await this.createProcessorsForDrive(driveId, identifier, factory, driveHeader);\n\t\t}\n\t}\n\tasync detectAndCleanupDeletedDrives(operations) {\n\t\tfor (const op of operations) {\n\t\t\tif (!isDriveDeletion(op)) continue;\n\t\t\tconst driveId = extractDeletedDocumentId(op);\n\t\t\tif (!driveId || !this.knownDriveIds.has(driveId)) continue;\n\t\t\tif (!this.isDeletedDocumentADrive(driveId)) continue;\n\t\t\tawait this.cleanupDriveProcessors(driveId);\n\t\t\tthis.knownDriveIds.delete(driveId);\n\t\t}\n\t}\n\tasync discoverExistingDrives() {\n\t\tconst drives = await this.db.selectFrom(\"DocumentSnapshot\").select(\"documentId\").where(\"documentType\", \"=\", DRIVE_DOCUMENT_TYPE).where(\"isDeleted\", \"=\", false).execute();\n\t\tfor (const drive of drives) this.knownDriveIds.add(drive.documentId);\n\t}\n\tisDeletedDocumentADrive(documentId) {\n\t\treturn this.knownDriveIds.has(documentId);\n\t}\n\tasync createProcessorsForDrive(driveId, identifier, factory, driveHeader) {\n\t\tlet records = [];\n\t\ttry {\n\t\t\trecords = await factory(driveHeader);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Factory '@FactoryId' failed for drive '@DriveId': @Error\", identifier, driveId, error);\n\t\t\treturn;\n\t\t}\n\t\tif (records.length === 0) return;\n\t\tconst trackedList = [];\n\t\tfor (let i = 0; i < records.length; i++) {\n\t\t\tconst record = records[i];\n\t\t\tconst processorId = `${identifier}:${driveId}:${i}`;\n\t\t\tconst cached = this.cursorCache.get(processorId);\n\t\t\tlet lastOrdinal;\n\t\t\tlet status;\n\t\t\tlet lastError;\n\t\t\tlet lastErrorTimestamp;\n\t\t\tif (cached) {\n\t\t\t\tlastOrdinal = cached.lastOrdinal;\n\t\t\t\tstatus = cached.status;\n\t\t\t\tlastError = cached.lastError ?? void 0;\n\t\t\t\tlastErrorTimestamp = cached.lastErrorTimestamp ?? void 0;\n\t\t\t} else {\n\t\t\t\tlastOrdinal = (record.startFrom ?? \"beginning\") === \"current\" ? this.lastOrdinal : 0;\n\t\t\t\tstatus = \"active\";\n\t\t\t\tlastError = void 0;\n\t\t\t\tlastErrorTimestamp = void 0;\n\t\t\t}\n\t\t\tconst tracked = {\n\t\t\t\tprocessorId,\n\t\t\t\tfactoryId: identifier,\n\t\t\t\tdriveId,\n\t\t\t\tprocessorIndex: i,\n\t\t\t\trecord,\n\t\t\t\tlastOrdinal,\n\t\t\t\tstatus,\n\t\t\t\tlastError,\n\t\t\t\tlastErrorTimestamp,\n\t\t\t\tretry: () => this.retryProcessor(tracked)\n\t\t\t};\n\t\t\ttrackedList.push(tracked);\n\t\t\tawait this.saveProcessorCursor(tracked);\n\t\t}\n\t\tawait this.db.deleteFrom(\"ProcessorCursor\").where(\"factoryId\", \"=\", identifier).where(\"driveId\", \"=\", driveId).where(\"processorIndex\", \">=\", records.length).execute();\n\t\tfor (const [id, row] of this.cursorCache) if (row.factoryId === identifier && row.driveId === driveId && row.processorIndex >= records.length) this.cursorCache.delete(id);\n\t\tconst factoryProcessors = this.factoryToProcessors.get(identifier);\n\t\tif (factoryProcessors) factoryProcessors.set(driveId, trackedList);\n\t\tconst existingDriveProcessors = this.processorsByDrive.get(driveId) ?? [];\n\t\tthis.processorsByDrive.set(driveId, [...existingDriveProcessors, ...trackedList]);\n\t\tfor (const tracked of trackedList) if (tracked.status === \"active\" && tracked.lastOrdinal < this.lastOrdinal) await this.backfillProcessor(tracked);\n\t}\n\tasync backfillProcessor(tracked) {\n\t\tlet page = await this.operationIndex.getSinceOrdinal(tracked.lastOrdinal);\n\t\twhile (page.results.length > 0) {\n\t\t\tconst matching = page.results.filter((op) => matchesFilter(op, tracked.record.filter));\n\t\t\tif (matching.length > 0) try {\n\t\t\t\tawait tracked.record.processor.onOperations(matching);\n\t\t\t} catch (error) {\n\t\t\t\ttracked.status = \"errored\";\n\t\t\t\ttracked.lastError = error instanceof Error ? error.message : String(error);\n\t\t\t\ttracked.lastErrorTimestamp = /* @__PURE__ */ new Date();\n\t\t\t\tawait this.safeSaveProcessorCursor(tracked);\n\t\t\t\tthis.logger.error(\"Processor '@ProcessorId' failed during backfill at ordinal @Ordinal: @Error\", tracked.processorId, tracked.lastOrdinal, error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttracked.lastOrdinal = Math.max(...page.results.map((op) => op.context.ordinal));\n\t\t\tawait this.safeSaveProcessorCursor(tracked);\n\t\t\tif (!page.next) break;\n\t\t\tpage = await page.next();\n\t\t}\n\t}\n\tasync retryProcessor(tracked) {\n\t\tif (tracked.status !== \"errored\") return;\n\t\ttracked.status = \"active\";\n\t\ttracked.lastError = void 0;\n\t\ttracked.lastErrorTimestamp = void 0;\n\t\tawait this.saveProcessorCursor(tracked);\n\t\tawait this.backfillProcessor(tracked);\n\t}\n\tasync cleanupDriveProcessors(driveId) {\n\t\tconst processors = this.processorsByDrive.get(driveId);\n\t\tif (!processors) return;\n\t\tfor (const tracked of processors) await this.safeDisconnect(tracked.record.processor);\n\t\tthis.processorsByDrive.delete(driveId);\n\t\tfor (const factoryProcessors of this.factoryToProcessors.values()) factoryProcessors.delete(driveId);\n\t\tawait this.deleteProcessorCursors({ driveId });\n\t}\n\tasync safeDisconnect(processor) {\n\t\ttry {\n\t\t\tawait processor.onDisconnect();\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Error disconnecting processor: @Error\", error);\n\t\t}\n\t}\n\tasync routeOperationsToProcessors(operations) {\n\t\tconst maxOrdinal = Math.max(...operations.map((op) => op.context.ordinal));\n\t\tconst allTracked = Array.from(this.allTrackedProcessors());\n\t\tawait Promise.all(allTracked.map(async (tracked) => {\n\t\t\tif (tracked.status !== \"active\") return;\n\t\t\tconst matching = operations.filter((op) => op.context.ordinal > tracked.lastOrdinal).filter((op) => matchesFilter(op, tracked.record.filter));\n\t\t\tif (matching.length > 0) try {\n\t\t\t\tawait tracked.record.processor.onOperations(matching);\n\t\t\t} catch (error) {\n\t\t\t\ttracked.status = \"errored\";\n\t\t\t\ttracked.lastError = error instanceof Error ? error.message : String(error);\n\t\t\t\ttracked.lastErrorTimestamp = /* @__PURE__ */ new Date();\n\t\t\t\tawait this.safeSaveProcessorCursor(tracked);\n\t\t\t\tthis.logger.error(\"Processor '@ProcessorId' failed at ordinal @Ordinal: @Error\", tracked.processorId, tracked.lastOrdinal, error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttracked.lastOrdinal = maxOrdinal;\n\t\t\tawait this.safeSaveProcessorCursor(tracked);\n\t\t}));\n\t}\n\tasync loadAllCursors() {\n\t\tconst rows = await this.db.selectFrom(\"ProcessorCursor\").selectAll().execute();\n\t\tfor (const row of rows) this.cursorCache.set(row.processorId, row);\n\t}\n\tasync safeSaveProcessorCursor(tracked) {\n\t\ttry {\n\t\t\tawait this.saveProcessorCursor(tracked);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Failed to persist cursor for '@ProcessorId': @Error\", tracked.processorId, error);\n\t\t}\n\t}\n\tasync saveProcessorCursor(tracked) {\n\t\tawait this.db.insertInto(\"ProcessorCursor\").values({\n\t\t\tprocessorId: tracked.processorId,\n\t\t\tfactoryId: tracked.factoryId,\n\t\t\tdriveId: tracked.driveId,\n\t\t\tprocessorIndex: tracked.processorIndex,\n\t\t\tlastOrdinal: tracked.lastOrdinal,\n\t\t\tstatus: tracked.status,\n\t\t\tlastError: tracked.lastError ?? null,\n\t\t\tlastErrorTimestamp: tracked.lastErrorTimestamp ?? null,\n\t\t\tupdatedAt: /* @__PURE__ */ new Date()\n\t\t}).onConflict((oc) => oc.column(\"processorId\").doUpdateSet({\n\t\t\tlastOrdinal: tracked.lastOrdinal,\n\t\t\tstatus: tracked.status,\n\t\t\tlastError: tracked.lastError ?? null,\n\t\t\tlastErrorTimestamp: tracked.lastErrorTimestamp ?? null,\n\t\t\tupdatedAt: /* @__PURE__ */ new Date()\n\t\t})).execute();\n\t\tthis.cursorCache.set(tracked.processorId, {\n\t\t\tprocessorId: tracked.processorId,\n\t\t\tfactoryId: tracked.factoryId,\n\t\t\tdriveId: tracked.driveId,\n\t\t\tprocessorIndex: tracked.processorIndex,\n\t\t\tlastOrdinal: tracked.lastOrdinal,\n\t\t\tstatus: tracked.status,\n\t\t\tlastError: tracked.lastError ?? null,\n\t\t\tlastErrorTimestamp: tracked.lastErrorTimestamp ?? null,\n\t\t\tcreatedAt: /* @__PURE__ */ new Date(),\n\t\t\tupdatedAt: /* @__PURE__ */ new Date()\n\t\t});\n\t}\n\tasync deleteProcessorCursors(filter) {\n\t\tif (\"factoryId\" in filter) {\n\t\t\tawait this.db.deleteFrom(\"ProcessorCursor\").where(\"factoryId\", \"=\", filter.factoryId).execute();\n\t\t\tfor (const [id, row] of this.cursorCache) if (row.factoryId === filter.factoryId) this.cursorCache.delete(id);\n\t\t} else {\n\t\t\tawait this.db.deleteFrom(\"ProcessorCursor\").where(\"driveId\", \"=\", filter.driveId).execute();\n\t\t\tfor (const [id, row] of this.cursorCache) if (row.driveId === filter.driveId) this.cursorCache.delete(id);\n\t\t}\n\t}\n};\n//#endregion\n//#region src/queue/job-execution-handle.ts\n/**\n* Implementation of the IJobExecutionHandle interface\n*/\nvar JobExecutionHandle = class {\n\t_state;\n\t_job;\n\tonStart;\n\tonComplete;\n\tonFail;\n\tonDefer;\n\tgetStateName(state) {\n\t\tswitch (state) {\n\t\t\tcase JobQueueState.PREPROCESSING: return \"PREPROCESSING\";\n\t\t\tcase JobQueueState.PENDING: return \"PENDING\";\n\t\t\tcase JobQueueState.READY: return \"READY\";\n\t\t\tcase JobQueueState.RUNNING: return \"RUNNING\";\n\t\t\tcase JobQueueState.RESOLVED: return \"RESOLVED\";\n\t\t\tdefault: return `UNKNOWN`;\n\t\t}\n\t}\n\tconstructor(job, initialState, callbacks) {\n\t\tthis._job = job;\n\t\tthis._state = initialState;\n\t\tthis.onStart = callbacks?.onStart;\n\t\tthis.onComplete = callbacks?.onComplete;\n\t\tthis.onFail = callbacks?.onFail;\n\t\tthis.onDefer = callbacks?.onDefer;\n\t}\n\tget job() {\n\t\treturn this._job;\n\t}\n\tget state() {\n\t\treturn this._state;\n\t}\n\tstart() {\n\t\tif (this._state !== JobQueueState.READY) throw new Error(`Cannot start job in state ${this.getStateName(this._state)}`);\n\t\tthis._state = JobQueueState.RUNNING;\n\t\tthis.onStart?.();\n\t}\n\tcomplete() {\n\t\tif (this._state !== JobQueueState.RUNNING) throw new Error(`Cannot complete job in state ${this.getStateName(this._state)}`);\n\t\tthis._state = JobQueueState.RESOLVED;\n\t\tthis.onComplete?.();\n\t}\n\tfail(error) {\n\t\tif (this._state !== JobQueueState.RUNNING) throw new Error(`Cannot fail job in state ${this.getStateName(this._state)}`);\n\t\tthis._state = JobQueueState.RESOLVED;\n\t\tthis.onFail?.(error);\n\t}\n\tdefer() {\n\t\tif (this._state !== JobQueueState.RUNNING) throw new Error(`Cannot defer job in state ${this.getStateName(this._state)}`);\n\t\tthis._state = JobQueueState.RESOLVED;\n\t\tthis.onDefer?.();\n\t}\n};\n//#endregion\n//#region src/queue/queue.ts\n/**\n* In-memory implementation of the IQueue interface.\n* Organizes jobs by documentId, scope, and branch to ensure proper ordering.\n* Ensures serial execution per document by tracking executing jobs.\n* Implements dependency management through queue hints.\n*/\nvar InMemoryQueue = class {\n\tqueues = /* @__PURE__ */ new Map();\n\tjobIdToQueueKey = /* @__PURE__ */ new Map();\n\tdocIdToJobId = /* @__PURE__ */ new Map();\n\tjobIdToDocId = /* @__PURE__ */ new Map();\n\tcompletedJobs = /* @__PURE__ */ new Set();\n\tjobIndex = /* @__PURE__ */ new Map();\n\tisBlocked = false;\n\tonDrainedCallback;\n\tisPausedFlag = false;\n\tconstructor(eventBus, resolver) {\n\t\tthis.eventBus = eventBus;\n\t\tthis.resolver = resolver;\n\t}\n\ttoErrorInfo(error) {\n\t\tif (error instanceof Error) return {\n\t\t\tmessage: error.message,\n\t\t\tstack: error.stack || (/* @__PURE__ */ new Error()).stack || \"\"\n\t\t};\n\t\treturn {\n\t\t\tmessage: error,\n\t\t\tstack: (/* @__PURE__ */ new Error()).stack || \"\"\n\t\t};\n\t}\n\t/**\n\t* Creates a unique key for a document/scope/branch combination\n\t*/\n\tcreateQueueKey(documentId, scope, branch) {\n\t\treturn `${documentId}:${scope}:${branch}`;\n\t}\n\t/**\n\t* Gets or creates a queue for the given key\n\t*/\n\tgetQueue(queueKey) {\n\t\tlet queue = this.queues.get(queueKey);\n\t\tif (!queue) {\n\t\t\tqueue = [];\n\t\t\tthis.queues.set(queueKey, queue);\n\t\t}\n\t\treturn queue;\n\t}\n\t/**\n\t* Check if a document has any jobs currently executing\n\t*/\n\tisDocumentExecuting(documentId) {\n\t\tconst executingSet = this.docIdToJobId.get(documentId);\n\t\treturn executingSet ? executingSet.size > 0 : false;\n\t}\n\t/**\n\t* Mark a job as executing for its document\n\t*/\n\tmarkJobExecuting(job) {\n\t\tlet executingSet = this.docIdToJobId.get(job.documentId);\n\t\tif (!executingSet) {\n\t\t\texecutingSet = /* @__PURE__ */ new Set();\n\t\t\tthis.docIdToJobId.set(job.documentId, executingSet);\n\t\t}\n\t\texecutingSet.add(job.id);\n\t\tthis.jobIdToDocId.set(job.id, job.documentId);\n\t}\n\t/**\n\t* Mark a job as no longer executing for its document\n\t*/\n\tmarkJobComplete(jobId, documentId) {\n\t\tconst executingSet = this.docIdToJobId.get(documentId);\n\t\tif (executingSet) {\n\t\t\texecutingSet.delete(jobId);\n\t\t\tif (executingSet.size === 0) this.docIdToJobId.delete(documentId);\n\t\t}\n\t\tthis.jobIdToDocId.delete(jobId);\n\t}\n\t/**\n\t* Check if all dependencies for a job have been completed\n\t*/\n\tareDependenciesMet(job) {\n\t\tif (job.queueHint.length === 0) return true;\n\t\treturn job.queueHint.every((depId) => this.completedJobs.has(depId));\n\t}\n\t/**\n\t* Get the next job that has all its dependencies met\n\t*/\n\tgetNextJobWithMetDependencies(queue) {\n\t\tfor (const job of queue) if (this.areDependenciesMet(job)) return job;\n\t\treturn null;\n\t}\n\tgetCreateDocumentType(job) {\n\t\tfor (const action of job.actions) if (action.type === \"CREATE_DOCUMENT\") return action.input.model;\n\t\tfor (const operation of job.operations) if (operation.action.type === \"CREATE_DOCUMENT\") return operation.action.input.model;\n\t}\n\tasync enqueue(job) {\n\t\tif (this.isBlocked) throw new Error(\"Queue is blocked\");\n\t\tconst queueKey = this.createQueueKey(job.documentId, job.scope, job.branch);\n\t\tthis.getQueue(queueKey).push(job);\n\t\tthis.jobIdToQueueKey.set(job.id, queueKey);\n\t\tthis.jobIndex.set(job.id, job);\n\t\tconst documentType = this.getCreateDocumentType(job);\n\t\tif (documentType) try {\n\t\t\tawait this.resolver.ensureModelLoaded(documentType);\n\t\t} catch {\n\t\t\tawait this.failJob(job.id, {\n\t\t\t\tmessage: `Failed to load document model for type: ${documentType}`,\n\t\t\t\tstack: (/* @__PURE__ */ new Error()).stack || \"\"\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tconst eventData = {\n\t\t\tdocumentId: job.documentId,\n\t\t\tscope: job.scope,\n\t\t\tbranch: job.branch,\n\t\t\tjobId: job.id\n\t\t};\n\t\tawait this.eventBus.emit(QueueEventTypes.JOB_AVAILABLE, eventData);\n\t}\n\tdequeue(documentId, scope, branch, signal) {\n\t\tconst queueKey = this.createQueueKey(documentId, scope, branch);\n\t\tconst queue = this.queues.get(queueKey);\n\t\tif (signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\tif (!queue || queue.length === 0) return Promise.resolve(null);\n\t\tconst job = this.getNextJobWithMetDependencies(queue);\n\t\tif (!job) return Promise.resolve(null);\n\t\tconst jobIndex = queue.indexOf(job);\n\t\tqueue.splice(jobIndex, 1);\n\t\tthis.jobIdToQueueKey.delete(job.id);\n\t\tthis.markJobExecuting(job);\n\t\tif (queue.length === 0) this.queues.delete(queueKey);\n\t\tconst handle = new JobExecutionHandle(job, JobQueueState.READY, {\n\t\t\tonStart: () => {},\n\t\t\tonComplete: () => {\n\t\t\t\tthis.completeJob(job.id);\n\t\t\t},\n\t\t\tonFail: (error) => {\n\t\t\t\tthis.failJob(job.id, error);\n\t\t\t},\n\t\t\tonDefer: () => {\n\t\t\t\tthis.deferJob(job.id);\n\t\t\t}\n\t\t});\n\t\treturn Promise.resolve(handle);\n\t}\n\tdequeueNext(signal) {\n\t\tif (signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\tif (this.isPausedFlag) return Promise.resolve(null);\n\t\tfor (const [queueKey, queue] of this.queues.entries()) if (queue.length > 0) {\n\t\t\tconst job = this.getNextJobWithMetDependencies(queue);\n\t\t\tif (!job) continue;\n\t\t\tif (!this.isDocumentExecuting(job.documentId)) {\n\t\t\t\tconst jobIdx = queue.indexOf(job);\n\t\t\t\tqueue.splice(jobIdx, 1);\n\t\t\t\tthis.jobIdToQueueKey.delete(job.id);\n\t\t\t\tthis.markJobExecuting(job);\n\t\t\t\tif (queue.length === 0) this.queues.delete(queueKey);\n\t\t\t\tconst handle = new JobExecutionHandle(job, JobQueueState.READY, {\n\t\t\t\t\tonStart: () => {},\n\t\t\t\t\tonComplete: () => {\n\t\t\t\t\t\tthis.completeJob(job.id);\n\t\t\t\t\t},\n\t\t\t\t\tonFail: (error) => {\n\t\t\t\t\t\tthis.failJob(job.id, error);\n\t\t\t\t\t},\n\t\t\t\t\tonDefer: () => {\n\t\t\t\t\t\tthis.deferJob(job.id);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn Promise.resolve(handle);\n\t\t\t}\n\t\t}\n\t\treturn Promise.resolve(null);\n\t}\n\tsize(documentId, scope, branch) {\n\t\tconst queueKey = this.createQueueKey(documentId, scope, branch);\n\t\tconst queue = this.queues.get(queueKey);\n\t\treturn Promise.resolve(queue ? queue.length : 0);\n\t}\n\ttotalSize() {\n\t\tlet total = 0;\n\t\tfor (const queue of this.queues.values()) total += queue.length;\n\t\treturn Promise.resolve(total);\n\t}\n\tremove(jobId) {\n\t\tconst queueKey = this.jobIdToQueueKey.get(jobId);\n\t\tif (!queueKey) return Promise.resolve(false);\n\t\tconst queue = this.queues.get(queueKey);\n\t\tif (!queue) {\n\t\t\tthis.jobIdToQueueKey.delete(jobId);\n\t\t\tthis.jobIndex.delete(jobId);\n\t\t\treturn Promise.resolve(false);\n\t\t}\n\t\tconst jobIdx = queue.findIndex((job) => job.id === jobId);\n\t\tif (jobIdx === -1) {\n\t\t\tthis.jobIdToQueueKey.delete(jobId);\n\t\t\tthis.jobIndex.delete(jobId);\n\t\t\treturn Promise.resolve(false);\n\t\t}\n\t\tqueue.splice(jobIdx, 1);\n\t\tthis.jobIdToQueueKey.delete(jobId);\n\t\tthis.jobIndex.delete(jobId);\n\t\tif (queue.length === 0) this.queues.delete(queueKey);\n\t\treturn Promise.resolve(true);\n\t}\n\tclear(documentId, scope, branch) {\n\t\tconst queueKey = this.createQueueKey(documentId, scope, branch);\n\t\tconst queue = this.queues.get(queueKey);\n\t\tif (queue) {\n\t\t\tfor (const job of queue) {\n\t\t\t\tthis.jobIdToQueueKey.delete(job.id);\n\t\t\t\tthis.jobIndex.delete(job.id);\n\t\t\t}\n\t\t\tthis.queues.delete(queueKey);\n\t\t}\n\t\treturn Promise.resolve();\n\t}\n\tclearAll() {\n\t\tthis.jobIdToQueueKey.clear();\n\t\tthis.jobIndex.clear();\n\t\tthis.completedJobs.clear();\n\t\tthis.queues.clear();\n\t\treturn Promise.resolve();\n\t}\n\thasJobs() {\n\t\treturn Promise.resolve(this.queues.size > 0 && Array.from(this.queues.values()).some((q) => q.length > 0));\n\t}\n\tasync completeJob(jobId) {\n\t\tconst documentId = this.jobIdToDocId.get(jobId);\n\t\tif (documentId) this.markJobComplete(jobId, documentId);\n\t\tthis.completedJobs.add(jobId);\n\t\tthis.jobIndex.delete(jobId);\n\t\tawait this.remove(jobId);\n\t\tthis.checkDrained();\n\t}\n\tasync failJob(jobId, error) {\n\t\tconst documentId = this.jobIdToDocId.get(jobId);\n\t\tif (documentId) this.markJobComplete(jobId, documentId);\n\t\tconst job = this.jobIndex.get(jobId);\n\t\tif (job) {\n\t\t\tjob.lastError = error;\n\t\t\tif (error) job.errorHistory.push(error);\n\t\t}\n\t\tthis.jobIndex.delete(jobId);\n\t\tthis.completedJobs.add(jobId);\n\t\tawait this.remove(jobId);\n\t\tthis.eventBus.emit(ReactorEventTypes.JOB_FAILED, {\n\t\t\tjobId,\n\t\t\terror: new Error(error?.message ?? \"Job failed\"),\n\t\t\tjob\n\t\t}).catch(() => {});\n\t\tthis.checkDrained();\n\t}\n\tdeferJob(jobId) {\n\t\tconst documentId = this.jobIdToDocId.get(jobId);\n\t\tif (documentId) this.markJobComplete(jobId, documentId);\n\t\tthis.jobIndex.delete(jobId);\n\t}\n\tasync retryJob(jobId, error) {\n\t\tconst job = this.jobIndex.get(jobId);\n\t\tif (!job) return;\n\t\tjob.lastError = error;\n\t\tconst documentId = this.jobIdToDocId.get(jobId);\n\t\tif (documentId) this.markJobComplete(jobId, documentId);\n\t\tthis.jobIndex.delete(jobId);\n\t\tthis.jobIdToQueueKey.delete(jobId);\n\t\tif (error) job.errorHistory.push(error);\n\t\tconst updatedJob = {\n\t\t\t...job,\n\t\t\tretryCount: (job.retryCount || 0) + 1,\n\t\t\tlastError: error\n\t\t};\n\t\tawait this.enqueue(updatedJob);\n\t}\n\t/**\n\t* Check if the queue is drained and call the callback if it is\n\t*/\n\tcheckDrained() {\n\t\tif (this.isDrained && this.onDrainedCallback) {\n\t\t\tconst callback = this.onDrainedCallback;\n\t\t\tthis.onDrainedCallback = void 0;\n\t\t\tcallback();\n\t\t}\n\t}\n\t/**\n\t* Returns true if and only if all jobs have been resolved.\n\t*/\n\tget isDrained() {\n\t\tconst hasPendingJobs = this.queues.size > 0 && Array.from(this.queues.values()).some((q) => q.length > 0);\n\t\tconst hasExecutingJobs = this.docIdToJobId.size > 0 && Array.from(this.docIdToJobId.values()).some((set) => set.size > 0);\n\t\treturn !hasPendingJobs && !hasExecutingJobs;\n\t}\n\t/**\n\t* Blocks the queue from accepting new jobs.\n\t* @param onDrained - Optional callback to call when the queue is drained\n\t*/\n\tblock(onDrained) {\n\t\tthis.isBlocked = true;\n\t\tthis.onDrainedCallback = onDrained;\n\t\tthis.checkDrained();\n\t}\n\t/**\n\t* Unblocks the queue from accepting new jobs.\n\t*/\n\tunblock() {\n\t\tthis.isBlocked = false;\n\t\tthis.onDrainedCallback = void 0;\n\t}\n\t/**\n\t* Pauses job dequeuing. Jobs can still be enqueued but dequeueNext() will return null.\n\t*/\n\tpause() {\n\t\tthis.isPausedFlag = true;\n\t}\n\t/**\n\t* Resumes job dequeuing and emits JOB_AVAILABLE events for pending jobs to wake up executors.\n\t*/\n\tasync resume() {\n\t\tthis.isPausedFlag = false;\n\t\tfor (const [, queue] of this.queues.entries()) if (queue.length > 0) {\n\t\t\tconst job = queue[0];\n\t\t\tawait this.eventBus.emit(QueueEventTypes.JOB_AVAILABLE, {\n\t\t\t\tdocumentId: job.documentId,\n\t\t\t\tscope: job.scope,\n\t\t\t\tbranch: job.branch,\n\t\t\t\tjobId: job.id\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Returns whether job dequeuing is paused.\n\t*/\n\tget paused() {\n\t\treturn this.isPausedFlag;\n\t}\n\t/**\n\t* Returns all pending jobs across all queues.\n\t*/\n\tgetPendingJobs() {\n\t\tconst jobs = [];\n\t\tfor (const queue of this.queues.values()) jobs.push(...queue);\n\t\treturn jobs;\n\t}\n\t/**\n\t* Returns a map of document IDs to sets of executing job IDs.\n\t*/\n\tgetExecutingJobIds() {\n\t\treturn new Map(Array.from(this.docIdToJobId.entries()).map(([k, v]) => [k, new Set(v)]));\n\t}\n\t/**\n\t* Returns a job by ID from the job index.\n\t*/\n\tgetJob(jobId) {\n\t\treturn this.jobIndex.get(jobId);\n\t}\n};\n//#endregion\n//#region src/read-models/coordinator.ts\n/**\n* Coordinates read model synchronization by listening to operation write events\n* and updating all registered read models in parallel.\n*\n* This coordinator is responsible for:\n* - Subscribing to OPERATION_WRITTEN events from the event bus\n* - Distributing operation updates to all registered read models\n* - Managing the lifecycle of read model subscriptions\n*\n* Read models are updated asynchronously and in parallel to avoid blocking\n* the write path. Errors in read model updates are propagated through the\n* event bus but do not affect the write operation success.\n*/\nvar ReadModelCoordinator = class {\n\tunsubscribe;\n\tisRunning = false;\n\treadModels;\n\tconstructor(eventBus, preReady, postReady) {\n\t\tthis.eventBus = eventBus;\n\t\tthis.preReady = preReady;\n\t\tthis.postReady = postReady;\n\t\tthis.readModels = [...preReady, ...postReady];\n\t}\n\t/**\n\t* Start listening for operation events and updating read models.\n\t* Can be called multiple times safely (subsequent calls are no-ops).\n\t*/\n\tstart() {\n\t\tif (this.isRunning) return;\n\t\tthis.unsubscribe = this.eventBus.subscribe(ReactorEventTypes.JOB_WRITE_READY, async (type, event) => {\n\t\t\tawait this.handleWriteReady(event);\n\t\t});\n\t\tthis.isRunning = true;\n\t}\n\t/**\n\t* Stop listening and clean up subscriptions.\n\t* Can be called multiple times safely (subsequent calls are no-ops).\n\t*/\n\tstop() {\n\t\tif (!this.isRunning) return;\n\t\tif (this.unsubscribe) {\n\t\t\tthis.unsubscribe();\n\t\t\tthis.unsubscribe = void 0;\n\t\t}\n\t\tthis.isRunning = false;\n\t}\n\t/**\n\t* Handle write ready events by updating all read models in parallel.\n\t* Errors from individual read models are collected and re-thrown as an aggregate.\n\t*/\n\tasync handleWriteReady(event) {\n\t\tawait Promise.all(this.preReady.map((readModel) => readModel.indexOperations(event.operations)));\n\t\tconst readyEvent = {\n\t\t\tjobId: event.jobId,\n\t\t\toperations: event.operations\n\t\t};\n\t\tawait this.eventBus.emit(ReactorEventTypes.JOB_READ_READY, readyEvent);\n\t\tawait Promise.all(this.postReady.map((readModel) => readModel.indexOperations(event.operations)));\n\t}\n};\n//#endregion\n//#region src/read-models/document-view.ts\nvar KyselyDocumentView = class extends BaseReadModel {\n\t_db;\n\tconstructor(db, operationStore, operationIndex, writeCache, consistencyTracker) {\n\t\tsuper(db, operationIndex, writeCache, consistencyTracker, {\n\t\t\treadModelId: \"document-view\",\n\t\t\trebuildStateOnInit: true\n\t\t});\n\t\tthis.operationStore = operationStore;\n\t\tthis._db = db;\n\t}\n\tasync commitOperations(items) {\n\t\tawait this._db.transaction().execute(async (trx) => {\n\t\t\tfor (const item of items) {\n\t\t\t\tconst { operation, context } = item;\n\t\t\t\tconst { documentId, scope, branch, documentType, resultingState } = context;\n\t\t\t\tconst { index, hash } = operation;\n\t\t\t\tif (!resultingState) throw new Error(`Missing resultingState in context for operation ${operation.id || \"unknown\"}. IDocumentView requires resultingState from upstream - it does not rebuild documents.`);\n\t\t\t\tlet fullState = {};\n\t\t\t\ttry {\n\t\t\t\t\tfullState = JSON.parse(resultingState);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tthrow new Error(`Failed to parse resultingState for operation ${operation.id || \"unknown\"}: ${error instanceof Error ? error.message : String(error)}`);\n\t\t\t\t}\n\t\t\t\tconst operationType = operation.action.type;\n\t\t\t\tif (operationType === \"DELETE_DOCUMENT\") {\n\t\t\t\t\tconst now = /* @__PURE__ */ new Date();\n\t\t\t\t\tawait trx.updateTable(\"DocumentSnapshot\").set({\n\t\t\t\t\t\tisDeleted: true,\n\t\t\t\t\t\tdeletedAt: now,\n\t\t\t\t\t\tlastOperationIndex: index,\n\t\t\t\t\t\tlastOperationHash: hash,\n\t\t\t\t\t\tlastUpdatedAt: now\n\t\t\t\t\t}).where(\"documentId\", \"=\", documentId).where(\"branch\", \"=\", branch).execute();\n\t\t\t\t\tawait trx.deleteFrom(\"SlugMapping\").where(\"documentId\", \"=\", documentId).where(\"branch\", \"=\", branch).execute();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet scopesToIndex;\n\t\t\t\tif (operationType === \"CREATE_DOCUMENT\") scopesToIndex = Object.entries(fullState).filter(([key]) => key === \"header\" || key === \"document\" || key === \"auth\");\n\t\t\t\telse if (operationType === \"UPGRADE_DOCUMENT\") {\n\t\t\t\t\tconst scopeStatesToIndex = [];\n\t\t\t\t\tfor (const [scopeName, scopeState] of Object.entries(fullState)) {\n\t\t\t\t\t\tif (scopeName === \"header\") {\n\t\t\t\t\t\t\tscopeStatesToIndex.push([scopeName, scopeState]);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scopeName === scope) {\n\t\t\t\t\t\t\tscopeStatesToIndex.push([scopeName, scopeState]);\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!await trx.selectFrom(\"DocumentSnapshot\").select(\"scope\").where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scopeName).where(\"branch\", \"=\", branch).executeTakeFirst()) scopeStatesToIndex.push([scopeName, scopeState]);\n\t\t\t\t\t}\n\t\t\t\t\tscopesToIndex = scopeStatesToIndex;\n\t\t\t\t} else {\n\t\t\t\t\tscopesToIndex = [];\n\t\t\t\t\tif (fullState.header !== void 0) scopesToIndex.push([\"header\", fullState.header]);\n\t\t\t\t\tif (fullState[scope] !== void 0) scopesToIndex.push([scope, fullState[scope]]);\n\t\t\t\t\telse scopesToIndex.push([scope, {}]);\n\t\t\t\t}\n\t\t\t\tfor (const [scopeName, scopeState] of scopesToIndex) {\n\t\t\t\t\tconst existingSnapshot = await trx.selectFrom(\"DocumentSnapshot\").selectAll().where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scopeName).where(\"branch\", \"=\", branch).executeTakeFirst();\n\t\t\t\t\tconst newState = typeof scopeState === \"object\" && scopeState !== null ? scopeState : {};\n\t\t\t\t\tlet slug = existingSnapshot?.slug ?? null;\n\t\t\t\t\tlet name = existingSnapshot?.name ?? null;\n\t\t\t\t\tif (scopeName === \"header\") {\n\t\t\t\t\t\tconst headerSlug = newState.slug;\n\t\t\t\t\t\tconst headerName = newState.name;\n\t\t\t\t\t\tif (typeof headerSlug === \"string\") slug = headerSlug;\n\t\t\t\t\t\tif (typeof headerName === \"string\") name = headerName;\n\t\t\t\t\t\tif (slug && slug !== documentId) await trx.insertInto(\"SlugMapping\").values({\n\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\tdocumentId,\n\t\t\t\t\t\t\tscope: scopeName,\n\t\t\t\t\t\t\tbranch\n\t\t\t\t\t\t}).onConflict((oc) => oc.column(\"slug\").doUpdateSet({\n\t\t\t\t\t\t\tdocumentId,\n\t\t\t\t\t\t\tscope: scopeName,\n\t\t\t\t\t\t\tbranch\n\t\t\t\t\t\t})).execute();\n\t\t\t\t\t}\n\t\t\t\t\tif (existingSnapshot) await trx.updateTable(\"DocumentSnapshot\").set({\n\t\t\t\t\t\tlastOperationIndex: index,\n\t\t\t\t\t\tlastOperationHash: hash,\n\t\t\t\t\t\tlastUpdatedAt: /* @__PURE__ */ new Date(),\n\t\t\t\t\t\tsnapshotVersion: existingSnapshot.snapshotVersion + 1,\n\t\t\t\t\t\tcontent: newState,\n\t\t\t\t\t\tslug,\n\t\t\t\t\t\tname\n\t\t\t\t\t}).where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scopeName).where(\"branch\", \"=\", branch).execute();\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst snapshot = {\n\t\t\t\t\t\t\tid: v4(),\n\t\t\t\t\t\t\tdocumentId,\n\t\t\t\t\t\t\tslug,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tscope: scopeName,\n\t\t\t\t\t\t\tbranch,\n\t\t\t\t\t\t\tcontent: newState,\n\t\t\t\t\t\t\tdocumentType,\n\t\t\t\t\t\t\tlastOperationIndex: index,\n\t\t\t\t\t\t\tlastOperationHash: hash,\n\t\t\t\t\t\t\tidentifiers: null,\n\t\t\t\t\t\t\tmetadata: null,\n\t\t\t\t\t\t\tdeletedAt: null\n\t\t\t\t\t\t};\n\t\t\t\t\t\tawait trx.insertInto(\"DocumentSnapshot\").values(snapshot).execute();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tasync exists(documentIds, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tif (documentIds.length === 0) return [];\n\t\tconst snapshots = await this._db.selectFrom(\"DocumentSnapshot\").select([\"documentId\"]).where(\"documentId\", \"in\", documentIds).where(\"isDeleted\", \"=\", false).distinct().execute();\n\t\tconst existingIds = new Set(snapshots.map((s) => s.documentId));\n\t\treturn documentIds.map((id) => existingIds.has(id));\n\t}\n\tasync get(documentId, view, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst branch = view?.branch || \"main\";\n\t\tlet scopesToQuery;\n\t\tif (view?.scopes && view.scopes.length > 0) scopesToQuery = [...new Set([\n\t\t\t\"header\",\n\t\t\t\"document\",\n\t\t\t...view.scopes\n\t\t])];\n\t\telse scopesToQuery = [];\n\t\tlet query = this._db.selectFrom(\"DocumentSnapshot\").selectAll().where(\"documentId\", \"=\", documentId).where(\"branch\", \"=\", branch).where(\"isDeleted\", \"=\", false);\n\t\tif (scopesToQuery.length > 0) query = query.where(\"scope\", \"in\", scopesToQuery);\n\t\tconst snapshots = await query.execute();\n\t\tif (snapshots.length === 0) throw new Error(`Document not found: ${documentId}`);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst headerSnapshot = snapshots.find((s) => s.scope === \"header\");\n\t\tif (!headerSnapshot) throw new Error(`Document header not found: ${documentId}`);\n\t\tconst header = headerSnapshot.content;\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\theader.revision = revisions.revision;\n\t\theader.lastModifiedAtUtcIso = revisions.latestTimestamp;\n\t\tconst state = {};\n\t\tfor (const snapshot of snapshots) {\n\t\t\tif (snapshot.scope === \"header\") continue;\n\t\t\tstate[snapshot.scope] = snapshot.content;\n\t\t}\n\t\treturn {\n\t\t\theader,\n\t\t\tstate,\n\t\t\toperations: {},\n\t\t\tinitialState: state,\n\t\t\tclipboard: []\n\t\t};\n\t}\n\tasync getMany(documentIds, view, consistencyToken, signal) {\n\t\tif (documentIds.length === 0) return [];\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst branch = view?.branch || \"main\";\n\t\tlet scopesToQuery;\n\t\tif (view?.scopes && view.scopes.length > 0) scopesToQuery = [...new Set([\n\t\t\t\"header\",\n\t\t\t\"document\",\n\t\t\t...view.scopes\n\t\t])];\n\t\telse scopesToQuery = [];\n\t\tlet query = this._db.selectFrom(\"DocumentSnapshot\").selectAll().where(\"documentId\", \"in\", documentIds).where(\"branch\", \"=\", branch).where(\"isDeleted\", \"=\", false);\n\t\tif (scopesToQuery.length > 0) query = query.where(\"scope\", \"in\", scopesToQuery);\n\t\tconst allSnapshots = await query.execute();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst snapshotsByDocId = /* @__PURE__ */ new Map();\n\t\tfor (const snapshot of allSnapshots) {\n\t\t\tconst existing = snapshotsByDocId.get(snapshot.documentId) || [];\n\t\t\texisting.push(snapshot);\n\t\t\tsnapshotsByDocId.set(snapshot.documentId, existing);\n\t\t}\n\t\tconst foundDocumentIds = [...snapshotsByDocId.keys()];\n\t\tconst revisionResults = await Promise.all(foundDocumentIds.map((docId) => this.operationStore.getRevisions(docId, branch, signal)));\n\t\tconst revisionsByDocId = /* @__PURE__ */ new Map();\n\t\tfor (let i = 0; i < foundDocumentIds.length; i++) revisionsByDocId.set(foundDocumentIds[i], revisionResults[i]);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst documents = [];\n\t\tfor (const documentId of documentIds) {\n\t\t\tconst snapshots = snapshotsByDocId.get(documentId);\n\t\t\tif (!snapshots || snapshots.length === 0) continue;\n\t\t\tconst headerSnapshot = snapshots.find((s) => s.scope === \"header\");\n\t\t\tif (!headerSnapshot) continue;\n\t\t\tconst header = headerSnapshot.content;\n\t\t\tconst revisions = revisionsByDocId.get(documentId);\n\t\t\tif (revisions) {\n\t\t\t\theader.revision = revisions.revision;\n\t\t\t\theader.lastModifiedAtUtcIso = revisions.latestTimestamp;\n\t\t\t}\n\t\t\tconst state = {};\n\t\t\tfor (const snapshot of snapshots) {\n\t\t\t\tif (snapshot.scope === \"header\") continue;\n\t\t\t\tstate[snapshot.scope] = snapshot.content;\n\t\t\t}\n\t\t\tconst document = {\n\t\t\t\theader,\n\t\t\t\tstate,\n\t\t\t\toperations: {},\n\t\t\t\tinitialState: state,\n\t\t\t\tclipboard: []\n\t\t\t};\n\t\t\tdocuments.push(document);\n\t\t}\n\t\treturn documents;\n\t}\n\tasync getByIdOrSlug(identifier, view, consistencyToken, signal) {\n\t\tconst documentId = await this.resolveIdOrSlug(identifier, view, consistencyToken, signal);\n\t\treturn this.get(documentId, view, void 0, signal);\n\t}\n\tasync findByType(type, view, paging, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst branch = view?.branch || \"main\";\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tconst documents = [];\n\t\tconst processedDocumentIds = /* @__PURE__ */ new Set();\n\t\tconst allDocumentIds = [];\n\t\tconst snapshots = await this._db.selectFrom(\"DocumentSnapshot\").selectAll().where(\"documentType\", \"=\", type).where(\"branch\", \"=\", branch).where(\"isDeleted\", \"=\", false).orderBy(\"lastUpdatedAt\", \"desc\").execute();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tfor (const snapshot of snapshots) {\n\t\t\tif (processedDocumentIds.has(snapshot.documentId)) continue;\n\t\t\tprocessedDocumentIds.add(snapshot.documentId);\n\t\t\tallDocumentIds.push(snapshot.documentId);\n\t\t}\n\t\tconst docsToFetch = allDocumentIds.slice(startIndex, startIndex + limit);\n\t\tfor (const documentId of docsToFetch) {\n\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\ttry {\n\t\t\t\tconst document = await this.get(documentId, view, void 0, signal);\n\t\t\t\tdocuments.push(document);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tconst hasMore = allDocumentIds.length > startIndex + limit;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults: documents,\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\ttotalCount: allDocumentIds.length,\n\t\t\tnext: hasMore ? () => this.findByType(type, view, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, consistencyToken, signal) : void 0\n\t\t};\n\t}\n\tasync resolveSlug(slug, view, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst branch = view?.branch || \"main\";\n\t\tconst mapping = await this._db.selectFrom(\"SlugMapping\").select(\"documentId\").where(\"slug\", \"=\", slug).where(\"branch\", \"=\", branch).executeTakeFirst();\n\t\tif (!mapping) return;\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tif (view?.scopes && view.scopes.length > 0) {\n\t\t\tif (!await this._db.selectFrom(\"DocumentSnapshot\").select(\"scope\").where(\"documentId\", \"=\", mapping.documentId).where(\"branch\", \"=\", branch).where(\"scope\", \"in\", view.scopes).where(\"isDeleted\", \"=\", false).executeTakeFirst()) return;\n\t\t}\n\t\treturn mapping.documentId;\n\t}\n\tasync resolveSlugs(slugs, view, consistencyToken, signal) {\n\t\treturn (await Promise.all(slugs.map((slug) => this.resolveSlug(slug, view, consistencyToken, signal)))).filter((id) => id !== void 0);\n\t}\n\tasync resolveIdOrSlug(identifier, view, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst branch = view?.branch || \"main\";\n\t\tconst idCheckPromise = this._db.selectFrom(\"DocumentSnapshot\").select(\"documentId\").where(\"documentId\", \"=\", identifier).where(\"branch\", \"=\", branch).where(\"isDeleted\", \"=\", false).executeTakeFirst();\n\t\tconst slugCheckPromise = this._db.selectFrom(\"SlugMapping\").select(\"documentId\").where(\"slug\", \"=\", identifier).where(\"branch\", \"=\", branch).executeTakeFirst();\n\t\tconst [idMatch, slugMatch] = await Promise.all([idCheckPromise, slugCheckPromise]);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst idMatchDocId = idMatch?.documentId;\n\t\tconst slugMatchDocId = slugMatch?.documentId;\n\t\tif (idMatchDocId && slugMatchDocId && idMatchDocId !== slugMatchDocId) throw new Error(`Ambiguous identifier \"${identifier}\": matches both document ID \"${idMatchDocId}\" and slug for document ID \"${slugMatchDocId}\". Please use get() for ID or resolveSlug() + get() for slug to be explicit.`);\n\t\tconst resolvedDocumentId = idMatchDocId || slugMatchDocId;\n\t\tif (!resolvedDocumentId) throw new Error(`Document not found: ${identifier}`);\n\t\treturn resolvedDocumentId;\n\t}\n};\n//#endregion\n//#region src/registry/document-model-resolver.ts\n/**\n* Encapsulates the logic for resolving document model modules on demand.\n* Shared between the queue (CREATE_DOCUMENT gate) and the executor manager\n* (post-failure recovery) so that both paths use the same deduplication\n* and failure-caching state.\n*/\nvar DocumentModelResolver = class {\n\tloadingModels = /* @__PURE__ */ new Map();\n\tfailedModelTypes = /* @__PURE__ */ new Set();\n\tconstructor(registry, loader) {\n\t\tthis.registry = registry;\n\t\tthis.loader = loader;\n\t}\n\tasync ensureModelLoaded(documentType) {\n\t\ttry {\n\t\t\tthis.registry.getModule(documentType);\n\t\t\treturn;\n\t\t} catch (error) {\n\t\t\tif (!ModuleNotFoundError.isError(error)) throw error;\n\t\t}\n\t\tif (this.failedModelTypes.has(documentType)) throw new Error(`Document model type previously failed to load: ${documentType}`);\n\t\tconst existing = this.loadingModels.get(documentType);\n\t\tif (existing) return existing;\n\t\tconst loadPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tconst module = await this.loader.load(documentType);\n\t\t\t\ttry {\n\t\t\t\t\tthis.registry.registerModules(module);\n\t\t\t\t} catch (registerError) {\n\t\t\t\t\tif (!DuplicateModuleError.isError(registerError)) throw registerError;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthis.failedModelTypes.add(documentType);\n\t\t\t\tthrow error;\n\t\t\t} finally {\n\t\t\t\tthis.loadingModels.delete(documentType);\n\t\t\t}\n\t\t})();\n\t\tthis.loadingModels.set(documentType, loadPromise);\n\t\treturn loadPromise;\n\t}\n};\n/**\n* No-op resolver used when no document model loader is configured.\n* Checks the registry for the model and returns if found; throws if not.\n* Since there is no loader, missing models cannot be recovered.\n*/\nvar NullDocumentModelResolver = class {\n\tconstructor(registry) {\n\t\tthis.registry = registry;\n\t}\n\tensureModelLoaded(documentType) {\n\t\tif (this.registry) try {\n\t\t\tthis.registry.getModule(documentType);\n\t\t\treturn Promise.resolve();\n\t\t} catch {}\n\t\treturn Promise.reject(new ModuleNotFoundError(documentType));\n\t}\n};\n//#endregion\n//#region src/shared/consistency-tracker.ts\n/**\n* Creates a consistency key from documentId, scope, and branch.\n*/\nfunction makeConsistencyKey(documentId, scope, branch) {\n\treturn `${documentId}:${scope}:${branch}`;\n}\n/**\n* Tracks operation indexes for documents and provides read-after-write consistency guarantees.\n* Maintains an in-memory map of the latest operation index for each (documentId, scope, branch) tuple.\n*/\nvar ConsistencyTracker = class {\n\tstate = /* @__PURE__ */ new Map();\n\twaiters = [];\n\tupdate(coordinates) {\n\t\tconst deduplicated = this.deduplicateCoordinates(coordinates);\n\t\tfor (let i = 0; i < deduplicated.length; i++) {\n\t\t\tconst coord = deduplicated[i];\n\t\t\tconst key = makeConsistencyKey(coord.documentId, coord.scope, coord.branch);\n\t\t\tconst current = this.state.get(key);\n\t\t\tif (current === void 0 || coord.operationIndex > current) this.state.set(key, coord.operationIndex);\n\t\t}\n\t\tthis.checkWaiters();\n\t}\n\tgetLatest(key) {\n\t\treturn this.state.get(key);\n\t}\n\twaitFor(coordinates, timeoutMs, signal) {\n\t\tif (signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\tif (this.areCoordinatesSatisfied(coordinates)) return Promise.resolve();\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst waiter = {\n\t\t\t\tcoordinates,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t\tsignal\n\t\t\t};\n\t\t\tif (timeoutMs !== void 0) waiter.timeoutId = setTimeout(() => {\n\t\t\t\tthis.removeWaiter(waiter);\n\t\t\t\treject(/* @__PURE__ */ new Error(`Consistency wait timed out after ${timeoutMs}ms`));\n\t\t\t}, timeoutMs);\n\t\t\tif (signal) {\n\t\t\t\tconst abortHandler = () => {\n\t\t\t\t\tthis.removeWaiter(waiter);\n\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\t\t\t};\n\t\t\t\tsignal.addEventListener(\"abort\", abortHandler, { once: true });\n\t\t\t}\n\t\t\tthis.waiters.push(waiter);\n\t\t});\n\t}\n\tserialize() {\n\t\treturn Array.from(this.state.entries());\n\t}\n\thydrate(entries) {\n\t\tthis.state.clear();\n\t\tfor (const [key, index] of entries) this.state.set(key, index);\n\t}\n\tdeduplicateCoordinates(coordinates) {\n\t\tconst map = /* @__PURE__ */ new Map();\n\t\tfor (let i = 0; i < coordinates.length; i++) {\n\t\t\tconst coord = coordinates[i];\n\t\t\tconst key = makeConsistencyKey(coord.documentId, coord.scope, coord.branch);\n\t\t\tconst existing = map.get(key);\n\t\t\tif (!existing || coord.operationIndex > existing.operationIndex) map.set(key, coord);\n\t\t}\n\t\treturn Array.from(map.values());\n\t}\n\tareCoordinatesSatisfied(coordinates) {\n\t\tfor (let i = 0; i < coordinates.length; i++) {\n\t\t\tconst coord = coordinates[i];\n\t\t\tconst key = makeConsistencyKey(coord.documentId, coord.scope, coord.branch);\n\t\t\tconst latest = this.state.get(key);\n\t\t\tif (latest === void 0 || latest < coord.operationIndex) return false;\n\t\t}\n\t\treturn true;\n\t}\n\tcheckWaiters() {\n\t\tconst satisfiedWaiters = [];\n\t\tconst unsatisfiedWaiters = [];\n\t\tfor (const waiter of this.waiters) {\n\t\t\tif (waiter.signal?.aborted) continue;\n\t\t\tif (this.areCoordinatesSatisfied(waiter.coordinates)) satisfiedWaiters.push(waiter);\n\t\t\telse unsatisfiedWaiters.push(waiter);\n\t\t}\n\t\tthis.waiters = unsatisfiedWaiters;\n\t\tfor (const waiter of satisfiedWaiters) {\n\t\t\tif (waiter.timeoutId !== void 0) clearTimeout(waiter.timeoutId);\n\t\t\twaiter.resolve();\n\t\t}\n\t}\n\tremoveWaiter(waiter) {\n\t\tconst index = this.waiters.indexOf(waiter);\n\t\tif (index !== -1) this.waiters.splice(index, 1);\n\t\tif (waiter.timeoutId !== void 0) clearTimeout(waiter.timeoutId);\n\t}\n};\n//#endregion\n//#region src/shared/collect-all-pages.ts\n/**\n* Collects all results from a paged result set by following the next() function\n* until all pages have been fetched.\n*/\nasync function collectAllPages(firstPage, signal) {\n\tconst allResults = [...firstPage.results];\n\tlet currentPage = firstPage;\n\twhile (currentPage.next) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tcurrentPage = await currentPage.next();\n\t\tallResults.push(...currentPage.results);\n\t}\n\treturn allResults;\n}\n//#endregion\n//#region src/storage/kysely/document-indexer.ts\nvar KyselyDocumentIndexer = class extends BaseReadModel {\n\t_db;\n\tconstructor(db, operationIndex, writeCache, consistencyTracker) {\n\t\tsuper(db, operationIndex, writeCache, consistencyTracker, {\n\t\t\treadModelId: \"document-indexer\",\n\t\t\trebuildStateOnInit: false\n\t\t});\n\t\tthis._db = db;\n\t}\n\tasync commitOperations(items) {\n\t\tawait this._db.transaction().execute(async (trx) => {\n\t\t\tfor (const item of items) {\n\t\t\t\tconst { operation } = item;\n\t\t\t\tconst actionType = operation.action.type;\n\t\t\t\tif (actionType === \"ADD_RELATIONSHIP\") await this.handleAddRelationship(trx, operation);\n\t\t\t\telse if (actionType === \"REMOVE_RELATIONSHIP\") await this.handleRemoveRelationship(trx, operation);\n\t\t\t}\n\t\t});\n\t}\n\tasync getOutgoing(documentId, types, paging, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tlet query = this._db.selectFrom(\"DocumentRelationship\").selectAll().where(\"sourceId\", \"=\", documentId);\n\t\tif (types && types.length > 0) query = query.where(\"relationshipType\", \"in\", types);\n\t\tconst rows = await query.orderBy(\"createdAt\", \"asc\").orderBy(\"id\", \"asc\").offset(startIndex).limit(limit + 1).execute();\n\t\tconst hasMore = rows.length > limit;\n\t\tconst results = hasMore ? rows.slice(0, limit) : rows;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults: results.map((row) => ({\n\t\t\t\tsourceId: row.sourceId,\n\t\t\t\ttargetId: row.targetId,\n\t\t\t\trelationshipType: row.relationshipType,\n\t\t\t\tmetadata: row.metadata ? row.metadata : void 0,\n\t\t\t\tcreatedAt: row.createdAt,\n\t\t\t\tupdatedAt: row.updatedAt\n\t\t\t})),\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getOutgoing(documentId, types, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, consistencyToken, signal) : void 0\n\t\t};\n\t}\n\tasync getIncoming(documentId, types, paging, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tlet query = this._db.selectFrom(\"DocumentRelationship\").selectAll().where(\"targetId\", \"=\", documentId);\n\t\tif (types && types.length > 0) query = query.where(\"relationshipType\", \"in\", types);\n\t\tconst rows = await query.orderBy(\"createdAt\", \"asc\").orderBy(\"id\", \"asc\").offset(startIndex).limit(limit + 1).execute();\n\t\tconst hasMore = rows.length > limit;\n\t\tconst results = hasMore ? rows.slice(0, limit) : rows;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults: results.map((row) => ({\n\t\t\t\tsourceId: row.sourceId,\n\t\t\t\ttargetId: row.targetId,\n\t\t\t\trelationshipType: row.relationshipType,\n\t\t\t\tmetadata: row.metadata ? row.metadata : void 0,\n\t\t\t\tcreatedAt: row.createdAt,\n\t\t\t\tupdatedAt: row.updatedAt\n\t\t\t})),\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getIncoming(documentId, types, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, consistencyToken, signal) : void 0\n\t\t};\n\t}\n\tasync hasRelationship(sourceId, targetId, types, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this._db.selectFrom(\"DocumentRelationship\").select(\"id\").where(\"sourceId\", \"=\", sourceId).where(\"targetId\", \"=\", targetId);\n\t\tif (types && types.length > 0) query = query.where(\"relationshipType\", \"in\", types);\n\t\treturn await query.executeTakeFirst() !== void 0;\n\t}\n\tasync getUndirectedRelationships(a, b, types, paging, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tlet query = this._db.selectFrom(\"DocumentRelationship\").selectAll().where((eb) => eb.or([eb.and([eb(\"sourceId\", \"=\", a), eb(\"targetId\", \"=\", b)]), eb.and([eb(\"sourceId\", \"=\", b), eb(\"targetId\", \"=\", a)])]));\n\t\tif (types && types.length > 0) query = query.where(\"relationshipType\", \"in\", types);\n\t\tconst rows = await query.orderBy(\"createdAt\", \"asc\").orderBy(\"id\", \"asc\").offset(startIndex).limit(limit + 1).execute();\n\t\tconst hasMore = rows.length > limit;\n\t\tconst results = hasMore ? rows.slice(0, limit) : rows;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults: results.map((row) => ({\n\t\t\t\tsourceId: row.sourceId,\n\t\t\t\ttargetId: row.targetId,\n\t\t\t\trelationshipType: row.relationshipType,\n\t\t\t\tmetadata: row.metadata ? row.metadata : void 0,\n\t\t\t\tcreatedAt: row.createdAt,\n\t\t\t\tupdatedAt: row.updatedAt\n\t\t\t})),\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getUndirectedRelationships(a, b, types, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, consistencyToken, signal) : void 0\n\t\t};\n\t}\n\tasync getDirectedRelationships(sourceId, targetId, types, paging, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tlet query = this._db.selectFrom(\"DocumentRelationship\").selectAll().where(\"sourceId\", \"=\", sourceId).where(\"targetId\", \"=\", targetId);\n\t\tif (types && types.length > 0) query = query.where(\"relationshipType\", \"in\", types);\n\t\tconst rows = await query.orderBy(\"createdAt\", \"asc\").orderBy(\"id\", \"asc\").offset(startIndex).limit(limit + 1).execute();\n\t\tconst hasMore = rows.length > limit;\n\t\tconst results = hasMore ? rows.slice(0, limit) : rows;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults: results.map((row) => ({\n\t\t\t\tsourceId: row.sourceId,\n\t\t\t\ttargetId: row.targetId,\n\t\t\t\trelationshipType: row.relationshipType,\n\t\t\t\tmetadata: row.metadata ? row.metadata : void 0,\n\t\t\t\tcreatedAt: row.createdAt,\n\t\t\t\tupdatedAt: row.updatedAt\n\t\t\t})),\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: 100\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getDirectedRelationships(sourceId, targetId, types, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, consistencyToken, signal) : void 0\n\t\t};\n\t}\n\tasync findPath(sourceId, targetId, types, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tif (sourceId === targetId) return [sourceId];\n\t\tconst visited = /* @__PURE__ */ new Set();\n\t\tconst queue = [{\n\t\t\tid: sourceId,\n\t\t\tpath: [sourceId]\n\t\t}];\n\t\twhile (queue.length > 0) {\n\t\t\tconst current = queue.shift();\n\t\t\tif (current.id === targetId) return current.path;\n\t\t\tif (visited.has(current.id)) continue;\n\t\t\tvisited.add(current.id);\n\t\t\tconst outgoingRelationships = await collectAllPages(await this.getOutgoing(current.id, types, void 0, consistencyToken, signal), signal);\n\t\t\tfor (const rel of outgoingRelationships) if (!visited.has(rel.targetId)) queue.push({\n\t\t\t\tid: rel.targetId,\n\t\t\t\tpath: [...current.path, rel.targetId]\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\tasync findAncestors(documentId, types, consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst nodes = new Set([documentId]);\n\t\tconst edges = [];\n\t\tconst queue = [documentId];\n\t\tconst visited = /* @__PURE__ */ new Set();\n\t\twhile (queue.length > 0) {\n\t\t\tconst currentId = queue.shift();\n\t\t\tif (visited.has(currentId)) continue;\n\t\t\tvisited.add(currentId);\n\t\t\tconst incomingRelationships = await collectAllPages(await this.getIncoming(currentId, types, void 0, consistencyToken, signal), signal);\n\t\t\tfor (const rel of incomingRelationships) {\n\t\t\t\tnodes.add(rel.sourceId);\n\t\t\t\tedges.push({\n\t\t\t\t\tfrom: rel.sourceId,\n\t\t\t\t\tto: rel.targetId,\n\t\t\t\t\ttype: rel.relationshipType\n\t\t\t\t});\n\t\t\t\tif (!visited.has(rel.sourceId)) queue.push(rel.sourceId);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tnodes: Array.from(nodes),\n\t\t\tedges\n\t\t};\n\t}\n\tasync getRelationshipTypes(consistencyToken, signal) {\n\t\tif (consistencyToken) await this.waitForConsistency(consistencyToken, void 0, signal);\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn (await this._db.selectFrom(\"DocumentRelationship\").select(\"relationshipType\").distinct().execute()).map((row) => row.relationshipType);\n\t}\n\tasync handleAddRelationship(trx, operation) {\n\t\tconst input = operation.action.input;\n\t\tif (!await trx.selectFrom(\"Document\").select(\"id\").where(\"id\", \"=\", input.sourceId).executeTakeFirst()) await trx.insertInto(\"Document\").values({ id: input.sourceId }).execute();\n\t\tif (!await trx.selectFrom(\"Document\").select(\"id\").where(\"id\", \"=\", input.targetId).executeTakeFirst()) await trx.insertInto(\"Document\").values({ id: input.targetId }).execute();\n\t\tif (!await trx.selectFrom(\"DocumentRelationship\").select(\"id\").where(\"sourceId\", \"=\", input.sourceId).where(\"targetId\", \"=\", input.targetId).where(\"relationshipType\", \"=\", input.relationshipType).executeTakeFirst()) {\n\t\t\tconst relationship = {\n\t\t\t\tid: v4(),\n\t\t\t\tsourceId: input.sourceId,\n\t\t\t\ttargetId: input.targetId,\n\t\t\t\trelationshipType: input.relationshipType,\n\t\t\t\tmetadata: input.metadata || null\n\t\t\t};\n\t\t\tawait trx.insertInto(\"DocumentRelationship\").values(relationship).execute();\n\t\t}\n\t}\n\tasync handleRemoveRelationship(trx, operation) {\n\t\tconst input = operation.action.input;\n\t\tawait trx.deleteFrom(\"DocumentRelationship\").where(\"sourceId\", \"=\", input.sourceId).where(\"targetId\", \"=\", input.targetId).where(\"relationshipType\", \"=\", input.relationshipType).execute();\n\t}\n};\n//#endregion\n//#region src/storage/kysely/keyframe-store.ts\nvar KyselyKeyframeStore = class KyselyKeyframeStore {\n\ttrx;\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tget queryExecutor() {\n\t\treturn this.trx ?? this.db;\n\t}\n\twithTransaction(trx) {\n\t\tconst instance = new KyselyKeyframeStore(this.db);\n\t\tinstance.trx = trx;\n\t\treturn instance;\n\t}\n\tasync putKeyframe(documentId, scope, branch, revision, document, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.queryExecutor.insertInto(\"Keyframe\").values({\n\t\t\tdocumentId,\n\t\t\tdocumentType: document.header.documentType,\n\t\t\tscope,\n\t\t\tbranch,\n\t\t\trevision,\n\t\t\tdocument\n\t\t}).onConflict((oc) => oc.columns([\n\t\t\t\"documentId\",\n\t\t\t\"scope\",\n\t\t\t\"branch\",\n\t\t\t\"revision\"\n\t\t]).doUpdateSet({ document })).execute();\n\t}\n\tasync findNearestKeyframe(documentId, scope, branch, targetRevision, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst row = await this.queryExecutor.selectFrom(\"Keyframe\").selectAll().where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scope).where(\"branch\", \"=\", branch).where(\"revision\", \"<=\", targetRevision).orderBy(\"revision\", \"desc\").limit(1).executeTakeFirst();\n\t\tif (!row) return;\n\t\treturn {\n\t\t\trevision: row.revision,\n\t\t\tdocument: row.document\n\t\t};\n\t}\n\tasync listKeyframes(documentId, scope, branch, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"Keyframe\").selectAll().where(\"documentId\", \"=\", documentId).orderBy(\"revision\", \"asc\");\n\t\tif (scope !== void 0) query = query.where(\"scope\", \"=\", scope);\n\t\tif (branch !== void 0) query = query.where(\"branch\", \"=\", branch);\n\t\treturn (await query.execute()).map((row) => ({\n\t\t\tscope: row.scope,\n\t\t\tbranch: row.branch,\n\t\t\trevision: row.revision,\n\t\t\tdocument: row.document\n\t\t}));\n\t}\n\tasync deleteKeyframes(documentId, scope, branch, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.deleteFrom(\"Keyframe\").where(\"documentId\", \"=\", documentId);\n\t\tif (scope !== void 0 && branch !== void 0) query = query.where(\"scope\", \"=\", scope).where(\"branch\", \"=\", branch);\n\t\telse if (scope !== void 0) query = query.where(\"scope\", \"=\", scope);\n\t\tconst result = await query.executeTakeFirst();\n\t\treturn Number(result.numDeletedRows || 0n);\n\t}\n};\n//#endregion\n//#region src/storage/interfaces.ts\n/**\n* Thrown when an operation with the same identity already exists in the store.\n*/\nvar DuplicateOperationError = class extends Error {\n\tconstructor(description) {\n\t\tsuper(`Duplicate operation: ${description}`);\n\t\tthis.name = \"DuplicateOperationError\";\n\t}\n};\n/**\n* Thrown when a concurrent write conflict is detected during an atomic apply.\n*/\nvar OptimisticLockError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"OptimisticLockError\";\n\t}\n};\n/**\n* Thrown when the caller-provided revision does not match the current\n* stored revision, indicating a stale read.\n*/\nvar RevisionMismatchError = class extends Error {\n\tconstructor(expected, actual) {\n\t\tsuper(`Revision mismatch: expected ${expected}, got ${actual}`);\n\t\tthis.name = \"RevisionMismatchError\";\n\t}\n};\n//#endregion\n//#region src/storage/txn.ts\nvar AtomicTransaction = class {\n\toperations = [];\n\tconstructor(documentId, documentType, scope, branch, baseRevision) {\n\t\tthis.documentId = documentId;\n\t\tthis.documentType = documentType;\n\t\tthis.scope = scope;\n\t\tthis.branch = branch;\n\t\tthis.baseRevision = baseRevision;\n\t}\n\taddOperations(...operations) {\n\t\tfor (const op of operations) this.operations.push({\n\t\t\tjobId: v4(),\n\t\t\topId: op.id,\n\t\t\tprevOpId: \"\",\n\t\t\tdocumentId: this.documentId,\n\t\t\tdocumentType: this.documentType,\n\t\t\tscope: this.scope,\n\t\t\tbranch: this.branch,\n\t\t\ttimestampUtcMs: new Date(op.timestampUtcMs),\n\t\t\tindex: op.index,\n\t\t\taction: JSON.stringify(op.action),\n\t\t\tskip: op.skip,\n\t\t\terror: op.error || null,\n\t\t\thash: op.hash\n\t\t});\n\t}\n\tgetOperations() {\n\t\treturn this.operations;\n\t}\n};\n//#endregion\n//#region src/storage/kysely/store.ts\nvar KyselyOperationStore = class KyselyOperationStore {\n\ttrx;\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tget queryExecutor() {\n\t\treturn this.trx ?? this.db;\n\t}\n\twithTransaction(trx) {\n\t\tconst instance = new KyselyOperationStore(this.db);\n\t\tinstance.trx = trx;\n\t\treturn instance;\n\t}\n\tasync apply(documentId, documentType, scope, branch, revision, fn, signal) {\n\t\tif (this.trx) await this.executeApply(this.trx, documentId, documentType, scope, branch, revision, fn, signal);\n\t\telse await this.db.transaction().execute(async (trx) => {\n\t\t\tawait this.executeApply(trx, documentId, documentType, scope, branch, revision, fn, signal);\n\t\t});\n\t}\n\tasync executeApply(trx, documentId, documentType, scope, branch, revision, fn, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst latestOp = await trx.selectFrom(\"Operation\").selectAll().where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scope).where(\"branch\", \"=\", branch).orderBy(\"index\", \"desc\").limit(1).executeTakeFirst();\n\t\tconst currentRevision = latestOp ? latestOp.index : -1;\n\t\tif (currentRevision !== revision - 1) throw new RevisionMismatchError(currentRevision + 1, revision);\n\t\tconst atomicTxn = new AtomicTransaction(documentId, documentType, scope, branch, revision);\n\t\tawait fn(atomicTxn);\n\t\tconst operations = atomicTxn.getOperations();\n\t\tif (operations.length > 0) {\n\t\t\tlet prevOpId = latestOp?.opId || \"\";\n\t\t\tfor (const op of operations) {\n\t\t\t\top.prevOpId = prevOpId;\n\t\t\t\tprevOpId = op.opId;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait trx.insertInto(\"Operation\").values(operations).execute();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\tif (error.message.includes(\"unique constraint\")) {\n\t\t\t\t\t\tconst op = operations[0];\n\t\t\t\t\t\tthrow new DuplicateOperationError(`${op.opId} at index ${op.index} with skip ${op.skip}`);\n\t\t\t\t\t}\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tasync getSince(documentId, scope, branch, revision, filter, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"Operation\").selectAll().where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scope).where(\"branch\", \"=\", branch).where(\"index\", \">\", revision).orderBy(\"index\", \"asc\");\n\t\tif (filter) {\n\t\t\tif (filter.actionTypes && filter.actionTypes.length > 0) {\n\t\t\t\tconst actionTypesArray = filter.actionTypes.map((t) => `'${t.replace(/'/g, \"''\")}'`).join(\",\");\n\t\t\t\tquery = query.where(sql`action->>'type' = ANY(ARRAY[${sql.raw(actionTypesArray)}]::text[])`);\n\t\t\t}\n\t\t\tif (filter.timestampFrom) query = query.where(\"timestampUtcMs\", \">=\", new Date(filter.timestampFrom));\n\t\t\tif (filter.timestampTo) query = query.where(\"timestampUtcMs\", \"<=\", new Date(filter.timestampTo));\n\t\t\tif (filter.sinceRevision !== void 0) query = query.where(\"index\", \">=\", filter.sinceRevision);\n\t\t}\n\t\tif (paging) {\n\t\t\tconst cursorValue = Number.parseInt(paging.cursor, 10);\n\t\t\tif (cursorValue > 0) query = query.where(\"index\", \">\", cursorValue);\n\t\t\tif (paging.limit) query = query.limit(paging.limit + 1);\n\t\t}\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].index.toString() : void 0;\n\t\tconst cursor = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperation(row)),\n\t\t\toptions: {\n\t\t\t\tcursor,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getSince(documentId, scope, branch, revision, filter, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\tasync getSinceId(id, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"Operation\").selectAll().where(\"id\", \">\", id).orderBy(\"id\", \"asc\");\n\t\tif (paging) {\n\t\t\tconst cursorValue = Number.parseInt(paging.cursor, 10);\n\t\t\tif (cursorValue > 0) query = query.where(\"id\", \">\", cursorValue);\n\t\t\tif (paging.limit) query = query.limit(paging.limit + 1);\n\t\t}\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].id.toString() : void 0;\n\t\tconst cursor = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperationWithContext(row)),\n\t\t\toptions: {\n\t\t\t\tcursor,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getSinceId(id, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\tasync getConflicting(documentId, scope, branch, minTimestamp, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tlet query = this.queryExecutor.selectFrom(\"Operation\").selectAll().where(\"documentId\", \"=\", documentId).where(\"scope\", \"=\", scope).where(\"branch\", \"=\", branch).where(\"timestampUtcMs\", \">=\", new Date(minTimestamp)).orderBy(\"index\", \"asc\");\n\t\tif (paging) {\n\t\t\tconst cursorValue = Number.parseInt(paging.cursor, 10);\n\t\t\tif (cursorValue > 0) query = query.where(\"index\", \">\", cursorValue);\n\t\t\tif (paging.limit) query = query.limit(paging.limit + 1);\n\t\t}\n\t\tconst rows = await query.execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > paging.limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, paging.limit);\n\t\t}\n\t\tconst nextCursor = hasMore && items.length > 0 ? items[items.length - 1].index.toString() : void 0;\n\t\tconst cursor = paging?.cursor || \"0\";\n\t\tconst limit = paging?.limit || 100;\n\t\treturn {\n\t\t\tresults: items.map((row) => this.rowToOperation(row)),\n\t\t\toptions: {\n\t\t\t\tcursor,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getConflicting(documentId, scope, branch, minTimestamp, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t};\n\t}\n\tasync getRevisions(documentId, branch, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst scopeRevisions = await this.queryExecutor.selectFrom(\"Operation as o1\").select([\n\t\t\t\"o1.scope\",\n\t\t\t\"o1.index\",\n\t\t\t\"o1.timestampUtcMs\"\n\t\t]).where(\"o1.documentId\", \"=\", documentId).where(\"o1.branch\", \"=\", branch).where((eb) => eb(\"o1.index\", \"=\", eb.selectFrom(\"Operation as o2\").select((eb2) => eb2.fn.max(\"o2.index\").as(\"maxIndex\")).where(\"o2.documentId\", \"=\", eb.ref(\"o1.documentId\")).where(\"o2.branch\", \"=\", eb.ref(\"o1.branch\")).where(\"o2.scope\", \"=\", eb.ref(\"o1.scope\")))).execute();\n\t\tconst revision = {};\n\t\tlet latestTimestamp = (/* @__PURE__ */ new Date(0)).toISOString();\n\t\tfor (const row of scopeRevisions) {\n\t\t\trevision[row.scope] = row.index + 1;\n\t\t\tconst timestamp = row.timestampUtcMs.toISOString();\n\t\t\tif (timestamp > latestTimestamp) latestTimestamp = timestamp;\n\t\t}\n\t\treturn {\n\t\t\trevision,\n\t\t\tlatestTimestamp\n\t\t};\n\t}\n\trowToOperation(row) {\n\t\treturn {\n\t\t\tindex: row.index,\n\t\t\ttimestampUtcMs: row.timestampUtcMs.toISOString(),\n\t\t\thash: row.hash,\n\t\t\tskip: row.skip,\n\t\t\terror: row.error || void 0,\n\t\t\tid: row.opId,\n\t\t\taction: row.action\n\t\t};\n\t}\n\trowToOperationWithContext(row) {\n\t\treturn {\n\t\t\toperation: this.rowToOperation(row),\n\t\t\tcontext: {\n\t\t\t\tdocumentId: row.documentId,\n\t\t\t\tdocumentType: row.documentType,\n\t\t\t\tscope: row.scope,\n\t\t\t\tbranch: row.branch,\n\t\t\t\tordinal: row.id\n\t\t\t}\n\t\t};\n\t}\n};\n//#endregion\n//#region src/storage/migrations/001_create_operation_table.ts\nvar _001_create_operation_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$13 });\nasync function up$13(db) {\n\tawait db.schema.createTable(\"Operation\").addColumn(\"id\", \"serial\", (col) => col.primaryKey()).addColumn(\"jobId\", \"text\", (col) => col.notNull()).addColumn(\"opId\", \"text\", (col) => col.notNull()).addColumn(\"prevOpId\", \"text\", (col) => col.notNull()).addColumn(\"writeTimestampUtcMs\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"documentType\", \"text\", (col) => col.notNull()).addColumn(\"scope\", \"text\", (col) => col.notNull()).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"timestampUtcMs\", \"timestamptz\", (col) => col.notNull()).addColumn(\"index\", \"integer\", (col) => col.notNull()).addColumn(\"action\", \"jsonb\", (col) => col.notNull()).addColumn(\"skip\", \"integer\", (col) => col.notNull()).addColumn(\"error\", \"text\").addColumn(\"hash\", \"text\", (col) => col.notNull()).addUniqueConstraint(\"unique_revision\", [\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\",\n\t\t\"index\"\n\t]).addUniqueConstraint(\"unique_operation_instance\", [\n\t\t\"opId\",\n\t\t\"index\",\n\t\t\"skip\"\n\t]).execute();\n\tawait db.schema.createIndex(\"streamOperations\").on(\"Operation\").columns([\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\",\n\t\t\"id\"\n\t]).execute();\n\tawait db.schema.createIndex(\"branchlessStreamOperations\").on(\"Operation\").columns([\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"id\"\n\t]).execute();\n}\n//#endregion\n//#region src/storage/migrations/002_create_keyframe_table.ts\nvar _002_create_keyframe_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$12 });\nasync function up$12(db) {\n\tawait db.schema.createTable(\"Keyframe\").addColumn(\"id\", \"serial\", (col) => col.primaryKey()).addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"documentType\", \"text\", (col) => col.notNull()).addColumn(\"scope\", \"text\", (col) => col.notNull()).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"revision\", \"integer\", (col) => col.notNull()).addColumn(\"document\", \"jsonb\", (col) => col.notNull()).addColumn(\"createdAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addUniqueConstraint(\"unique_keyframe\", [\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\",\n\t\t\"revision\"\n\t]).execute();\n\tawait db.schema.createIndex(\"keyframe_lookup\").on(\"Keyframe\").columns([\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\",\n\t\t\"revision\"\n\t]).execute();\n}\n//#endregion\n//#region src/storage/migrations/003_create_document_table.ts\nvar _003_create_document_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$11 });\nasync function up$11(db) {\n\tawait db.schema.createTable(\"Document\").addColumn(\"id\", \"text\", (col) => col.primaryKey()).addColumn(\"createdAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"updatedAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n}\n//#endregion\n//#region src/storage/migrations/004_create_document_relationship_table.ts\nvar _004_create_document_relationship_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$10 });\nasync function up$10(db) {\n\tawait db.schema.createTable(\"DocumentRelationship\").addColumn(\"id\", \"text\", (col) => col.primaryKey()).addColumn(\"sourceId\", \"text\", (col) => col.notNull().references(\"Document.id\").onDelete(\"cascade\")).addColumn(\"targetId\", \"text\", (col) => col.notNull().references(\"Document.id\").onDelete(\"cascade\")).addColumn(\"relationshipType\", \"text\", (col) => col.notNull()).addColumn(\"metadata\", \"jsonb\").addColumn(\"createdAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"updatedAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addUniqueConstraint(\"unique_source_target_type\", [\n\t\t\"sourceId\",\n\t\t\"targetId\",\n\t\t\"relationshipType\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_relationship_source\").on(\"DocumentRelationship\").column(\"sourceId\").execute();\n\tawait db.schema.createIndex(\"idx_relationship_target\").on(\"DocumentRelationship\").column(\"targetId\").execute();\n\tawait db.schema.createIndex(\"idx_relationship_type\").on(\"DocumentRelationship\").column(\"relationshipType\").execute();\n}\n//#endregion\n//#region src/storage/migrations/005_create_indexer_state_table.ts\nvar _005_create_indexer_state_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$9 });\nasync function up$9(db) {\n\tawait db.schema.createTable(\"IndexerState\").addColumn(\"id\", \"integer\", (col) => col.primaryKey().generatedAlwaysAsIdentity()).addColumn(\"lastOperationId\", \"integer\", (col) => col.notNull()).addColumn(\"lastOperationTimestamp\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n}\n//#endregion\n//#region src/storage/migrations/006_create_document_snapshot_table.ts\nvar _006_create_document_snapshot_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$8 });\nasync function up$8(db) {\n\tawait db.schema.createTable(\"DocumentSnapshot\").addColumn(\"id\", \"text\", (col) => col.primaryKey()).addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"slug\", \"text\").addColumn(\"name\", \"text\").addColumn(\"scope\", \"text\", (col) => col.notNull()).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"content\", \"jsonb\", (col) => col.notNull()).addColumn(\"documentType\", \"text\", (col) => col.notNull()).addColumn(\"lastOperationIndex\", \"integer\", (col) => col.notNull()).addColumn(\"lastOperationHash\", \"text\", (col) => col.notNull()).addColumn(\"lastUpdatedAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"snapshotVersion\", \"integer\", (col) => col.notNull().defaultTo(1)).addColumn(\"identifiers\", \"jsonb\").addColumn(\"metadata\", \"jsonb\").addColumn(\"isDeleted\", \"boolean\", (col) => col.notNull().defaultTo(false)).addColumn(\"deletedAt\", \"timestamptz\").addUniqueConstraint(\"unique_doc_scope_branch\", [\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_slug_scope_branch\").on(\"DocumentSnapshot\").columns([\n\t\t\"slug\",\n\t\t\"scope\",\n\t\t\"branch\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_doctype_scope_branch\").on(\"DocumentSnapshot\").columns([\n\t\t\"documentType\",\n\t\t\"scope\",\n\t\t\"branch\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_last_updated\").on(\"DocumentSnapshot\").column(\"lastUpdatedAt\").execute();\n\tawait db.schema.createIndex(\"idx_is_deleted\").on(\"DocumentSnapshot\").column(\"isDeleted\").execute();\n}\n//#endregion\n//#region src/storage/migrations/007_create_slug_mapping_table.ts\nvar _007_create_slug_mapping_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$7 });\nasync function up$7(db) {\n\tawait db.schema.createTable(\"SlugMapping\").addColumn(\"slug\", \"text\", (col) => col.primaryKey()).addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"scope\", \"text\", (col) => col.notNull()).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"createdAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"updatedAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addUniqueConstraint(\"unique_docid_scope_branch\", [\n\t\t\"documentId\",\n\t\t\"scope\",\n\t\t\"branch\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_slug_documentid\").on(\"SlugMapping\").column(\"documentId\").execute();\n}\n//#endregion\n//#region src/storage/migrations/008_create_view_state_table.ts\nvar _008_create_view_state_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$6 });\nasync function up$6(db) {\n\tawait db.schema.createTable(\"ViewState\").addColumn(\"readModelId\", \"text\", (col) => col.primaryKey()).addColumn(\"lastOrdinal\", \"integer\", (col) => col.notNull().defaultTo(0)).addColumn(\"lastOperationTimestamp\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n}\n//#endregion\n//#region src/storage/migrations/009_create_operation_index_tables.ts\nvar _009_create_operation_index_tables_exports = /* @__PURE__ */ __exportAll({ up: () => up$5 });\nasync function up$5(db) {\n\tawait db.schema.createTable(\"document_collections\").addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"collectionId\", \"text\", (col) => col.notNull()).addColumn(\"joinedOrdinal\", \"bigint\", (col) => col.notNull().defaultTo(0)).addColumn(\"leftOrdinal\", \"bigint\").addPrimaryKeyConstraint(\"document_collections_pkey\", [\"documentId\", \"collectionId\"]).execute();\n\tawait db.schema.createIndex(\"idx_document_collections_collectionId\").on(\"document_collections\").column(\"collectionId\").execute();\n\tawait db.schema.createIndex(\"idx_doc_collections_collection_range\").on(\"document_collections\").columns([\"collectionId\", \"joinedOrdinal\"]).execute();\n\tawait db.schema.createTable(\"operation_index_operations\").addColumn(\"ordinal\", \"serial\", (col) => col.primaryKey()).addColumn(\"opId\", \"text\", (col) => col.notNull()).addColumn(\"documentId\", \"text\", (col) => col.notNull()).addColumn(\"documentType\", \"text\", (col) => col.notNull()).addColumn(\"scope\", \"text\", (col) => col.notNull()).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"timestampUtcMs\", \"text\", (col) => col.notNull()).addColumn(\"writeTimestampUtcMs\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"index\", \"integer\", (col) => col.notNull()).addColumn(\"skip\", \"integer\", (col) => col.notNull()).addColumn(\"hash\", \"text\", (col) => col.notNull()).addColumn(\"action\", \"jsonb\", (col) => col.notNull()).execute();\n\tawait db.schema.createIndex(\"idx_operation_index_operations_document\").on(\"operation_index_operations\").columns([\n\t\t\"documentId\",\n\t\t\"branch\",\n\t\t\"scope\"\n\t]).execute();\n\tawait db.schema.createIndex(\"idx_operation_index_operations_ordinal\").on(\"operation_index_operations\").column(\"ordinal\").execute();\n}\n//#endregion\n//#region src/storage/migrations/010_create_sync_tables.ts\nvar _010_create_sync_tables_exports = /* @__PURE__ */ __exportAll({ up: () => up$4 });\nasync function up$4(db) {\n\tawait db.schema.createTable(\"sync_remotes\").addColumn(\"name\", \"text\", (col) => col.primaryKey()).addColumn(\"collection_id\", \"text\", (col) => col.notNull()).addColumn(\"channel_type\", \"text\", (col) => col.notNull()).addColumn(\"channel_id\", \"text\", (col) => col.notNull().defaultTo(\"\")).addColumn(\"remote_name\", \"text\", (col) => col.notNull().defaultTo(\"\")).addColumn(\"channel_parameters\", \"jsonb\", (col) => col.notNull().defaultTo(sql`'{}'::jsonb`)).addColumn(\"filter_document_ids\", \"jsonb\").addColumn(\"filter_scopes\", \"jsonb\").addColumn(\"filter_branch\", \"text\", (col) => col.notNull().defaultTo(\"main\")).addColumn(\"push_state\", \"text\", (col) => col.notNull().defaultTo(\"idle\")).addColumn(\"push_last_success_utc_ms\", \"text\").addColumn(\"push_last_failure_utc_ms\", \"text\").addColumn(\"push_failure_count\", \"integer\", (col) => col.notNull().defaultTo(0)).addColumn(\"pull_state\", \"text\", (col) => col.notNull().defaultTo(\"idle\")).addColumn(\"pull_last_success_utc_ms\", \"text\").addColumn(\"pull_last_failure_utc_ms\", \"text\").addColumn(\"pull_failure_count\", \"integer\", (col) => col.notNull().defaultTo(0)).addColumn(\"created_at\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"updated_at\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n\tawait db.schema.createIndex(\"idx_sync_remotes_collection\").on(\"sync_remotes\").column(\"collection_id\").execute();\n\tawait db.schema.createTable(\"sync_cursors\").addColumn(\"remote_name\", \"text\", (col) => col.primaryKey().references(\"sync_remotes.name\").onDelete(\"cascade\")).addColumn(\"cursor_ordinal\", \"bigint\", (col) => col.notNull().defaultTo(0)).addColumn(\"last_synced_at_utc_ms\", \"text\").addColumn(\"updated_at\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n\tawait db.schema.createIndex(\"idx_sync_cursors_ordinal\").on(\"sync_cursors\").column(\"cursor_ordinal\").execute();\n}\n//#endregion\n//#region src/storage/migrations/011_add_cursor_type_column.ts\nvar _011_add_cursor_type_column_exports = /* @__PURE__ */ __exportAll({ up: () => up$3 });\nasync function up$3(db) {\n\tawait db.deleteFrom(\"sync_cursors\").where(\"remote_name\", \"like\", \"outbox::%\").execute();\n\tawait db.deleteFrom(\"sync_remotes\").where(\"name\", \"like\", \"outbox::%\").execute();\n\tawait db.schema.dropTable(\"sync_cursors\").execute();\n\tawait db.schema.createTable(\"sync_cursors\").addColumn(\"remote_name\", \"text\", (col) => col.notNull()).addColumn(\"cursor_type\", \"text\", (col) => col.notNull().defaultTo(\"inbox\")).addColumn(\"cursor_ordinal\", \"bigint\", (col) => col.notNull().defaultTo(0)).addColumn(\"last_synced_at_utc_ms\", \"text\").addColumn(\"updated_at\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addPrimaryKeyConstraint(\"sync_cursors_pk\", [\"remote_name\", \"cursor_type\"]).execute();\n\tawait db.schema.createIndex(\"idx_sync_cursors_ordinal\").on(\"sync_cursors\").column(\"cursor_ordinal\").execute();\n}\n//#endregion\n//#region src/storage/migrations/012_add_source_remote_column.ts\nvar _012_add_source_remote_column_exports = /* @__PURE__ */ __exportAll({ up: () => up$2 });\nasync function up$2(db) {\n\tawait db.schema.alterTable(\"operation_index_operations\").addColumn(\"sourceRemote\", \"text\", (col) => col.notNull().defaultTo(\"\")).execute();\n}\n//#endregion\n//#region src/storage/migrations/013_create_sync_dead_letters_table.ts\nvar _013_create_sync_dead_letters_table_exports = /* @__PURE__ */ __exportAll({ up: () => up$1 });\nasync function up$1(db) {\n\tawait db.schema.createTable(\"sync_dead_letters\").addColumn(\"ordinal\", \"serial\", (col) => col.primaryKey()).addColumn(\"id\", \"text\", (col) => col.unique().notNull()).addColumn(\"job_id\", \"text\", (col) => col.notNull()).addColumn(\"job_dependencies\", \"jsonb\", (col) => col.notNull().defaultTo(sql`'[]'::jsonb`)).addColumn(\"remote_name\", \"text\", (col) => col.notNull().references(\"sync_remotes.name\").onDelete(\"cascade\")).addColumn(\"document_id\", \"text\", (col) => col.notNull()).addColumn(\"scopes\", \"jsonb\", (col) => col.notNull().defaultTo(sql`'[]'::jsonb`)).addColumn(\"branch\", \"text\", (col) => col.notNull()).addColumn(\"operations\", \"jsonb\", (col) => col.notNull().defaultTo(sql`'[]'::jsonb`)).addColumn(\"error_source\", \"text\", (col) => col.notNull()).addColumn(\"error_message\", \"text\", (col) => col.notNull()).addColumn(\"created_at\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n\tawait db.schema.createIndex(\"idx_sync_dead_letters_remote\").on(\"sync_dead_letters\").column(\"remote_name\").execute();\n}\n//#endregion\n//#region src/storage/migrations/014_create_processor_cursor_table.ts\nvar _014_create_processor_cursor_table_exports = /* @__PURE__ */ __exportAll({ up: () => up });\nasync function up(db) {\n\tawait db.schema.createTable(\"ProcessorCursor\").addColumn(\"processorId\", \"text\", (col) => col.primaryKey()).addColumn(\"factoryId\", \"text\", (col) => col.notNull()).addColumn(\"driveId\", \"text\", (col) => col.notNull()).addColumn(\"processorIndex\", \"integer\", (col) => col.notNull()).addColumn(\"lastOrdinal\", \"integer\", (col) => col.notNull().defaultTo(sql`0`)).addColumn(\"status\", \"text\", (col) => col.notNull().defaultTo(sql`'active'`)).addColumn(\"lastError\", \"text\").addColumn(\"lastErrorTimestamp\", \"timestamptz\").addColumn(\"createdAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).addColumn(\"updatedAt\", \"timestamptz\", (col) => col.notNull().defaultTo(sql`NOW()`)).execute();\n}\n//#endregion\n//#region src/storage/migrations/migrator.ts\nconst REACTOR_SCHEMA = \"reactor\";\nconst migrations = {\n\t\"001_create_operation_table\": _001_create_operation_table_exports,\n\t\"002_create_keyframe_table\": _002_create_keyframe_table_exports,\n\t\"003_create_document_table\": _003_create_document_table_exports,\n\t\"004_create_document_relationship_table\": _004_create_document_relationship_table_exports,\n\t\"005_create_indexer_state_table\": _005_create_indexer_state_table_exports,\n\t\"006_create_document_snapshot_table\": _006_create_document_snapshot_table_exports,\n\t\"007_create_slug_mapping_table\": _007_create_slug_mapping_table_exports,\n\t\"008_create_view_state_table\": _008_create_view_state_table_exports,\n\t\"009_create_operation_index_tables\": _009_create_operation_index_tables_exports,\n\t\"010_create_sync_tables\": _010_create_sync_tables_exports,\n\t\"011_add_cursor_type_column\": _011_add_cursor_type_column_exports,\n\t\"012_add_source_remote_column\": _012_add_source_remote_column_exports,\n\t\"013_create_sync_dead_letters_table\": _013_create_sync_dead_letters_table_exports,\n\t\"014_create_processor_cursor_table\": _014_create_processor_cursor_table_exports\n};\nvar ProgrammaticMigrationProvider = class {\n\tgetMigrations() {\n\t\treturn Promise.resolve(migrations);\n\t}\n};\nasync function runMigrations(db, schema = REACTOR_SCHEMA) {\n\ttry {\n\t\tawait sql`CREATE SCHEMA IF NOT EXISTS ${sql.id(schema)}`.execute(db);\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\tmigrationsExecuted: [],\n\t\t\terror: error instanceof Error ? error : /* @__PURE__ */ new Error(\"Failed to create schema\")\n\t\t};\n\t}\n\tconst migrator = new Migrator({\n\t\tdb: db.withSchema(schema),\n\t\tprovider: new ProgrammaticMigrationProvider(),\n\t\tmigrationTableSchema: schema\n\t});\n\tlet error;\n\tlet results;\n\ttry {\n\t\tconst result = await migrator.migrateToLatest();\n\t\terror = result.error;\n\t\tresults = result.results;\n\t} catch (e) {\n\t\terror = e;\n\t\tresults = [];\n\t}\n\tconst migrationsExecuted = results?.map((result) => result.migrationName) ?? [];\n\tif (error) return {\n\t\tsuccess: false,\n\t\tmigrationsExecuted,\n\t\terror: error instanceof Error ? error : /* @__PURE__ */ new Error(\"Unknown migration error\")\n\t};\n\treturn {\n\t\tsuccess: true,\n\t\tmigrationsExecuted\n\t};\n}\nasync function getMigrationStatus(db, schema = REACTOR_SCHEMA) {\n\treturn await new Migrator({\n\t\tdb: db.withSchema(schema),\n\t\tprovider: new ProgrammaticMigrationProvider(),\n\t\tmigrationTableSchema: schema\n\t}).getMigrations();\n}\n//#endregion\n//#region src/subs/default-error-handler.ts\n/**\n* Default error handler that re-throws subscription errors.\n* This ensures that errors are not silently swallowed.\n*/\nvar DefaultSubscriptionErrorHandler = class {\n\thandleError(error, context) {\n\t\tconst errorMessage = `Subscription error in ${context.eventType} (${context.subscriptionId})`;\n\t\tif (error instanceof Error) {\n\t\t\tconst enhancedError = /* @__PURE__ */ new Error(`${errorMessage}: ${error.message}`);\n\t\t\tenhancedError.cause = error;\n\t\t\tenhancedError.stack = error.stack;\n\t\t\tthrow enhancedError;\n\t\t} else throw new Error(`${errorMessage}: ${String(error)}`);\n\t}\n};\n//#endregion\n//#region src/subs/react-subscription-manager.ts\nvar ReactorSubscriptionManager = class {\n\tcreatedSubscriptions = /* @__PURE__ */ new Map();\n\tdeletedSubscriptions = /* @__PURE__ */ new Map();\n\tupdatedSubscriptions = /* @__PURE__ */ new Map();\n\trelationshipSubscriptions = /* @__PURE__ */ new Map();\n\tsubscriptionCounter = 0;\n\terrorHandler;\n\tconstructor(errorHandler) {\n\t\tthis.errorHandler = errorHandler;\n\t}\n\tonDocumentCreated(callback, search) {\n\t\tconst id = `created-${++this.subscriptionCounter}`;\n\t\tthis.createdSubscriptions.set(id, {\n\t\t\tid,\n\t\t\tcallback,\n\t\t\tsearch\n\t\t});\n\t\treturn () => {\n\t\t\tthis.createdSubscriptions.delete(id);\n\t\t};\n\t}\n\tonDocumentDeleted(callback, search) {\n\t\tconst id = `deleted-${++this.subscriptionCounter}`;\n\t\tthis.deletedSubscriptions.set(id, {\n\t\t\tid,\n\t\t\tcallback,\n\t\t\tsearch\n\t\t});\n\t\treturn () => {\n\t\t\tthis.deletedSubscriptions.delete(id);\n\t\t};\n\t}\n\tonDocumentStateUpdated(callback, search, view) {\n\t\tconst id = `updated-${++this.subscriptionCounter}`;\n\t\tthis.updatedSubscriptions.set(id, {\n\t\t\tid,\n\t\t\tcallback,\n\t\t\tsearch,\n\t\t\tview\n\t\t});\n\t\treturn () => {\n\t\t\tthis.updatedSubscriptions.delete(id);\n\t\t};\n\t}\n\tonRelationshipChanged(callback, search) {\n\t\tconst id = `relationship-${++this.subscriptionCounter}`;\n\t\tthis.relationshipSubscriptions.set(id, {\n\t\t\tid,\n\t\t\tcallback,\n\t\t\tsearch\n\t\t});\n\t\treturn () => {\n\t\t\tthis.relationshipSubscriptions.delete(id);\n\t\t};\n\t}\n\t/**\n\t* Notify subscribers about created documents\n\t*/\n\tnotifyDocumentsCreated(documentIds, documentTypes, parentIds) {\n\t\tconst result = {\n\t\t\tresults: documentIds,\n\t\t\toptions: {\n\t\t\t\tcursor: \"\",\n\t\t\t\tlimit: documentIds.length\n\t\t\t}\n\t\t};\n\t\tfor (const subscription of this.createdSubscriptions.values()) {\n\t\t\tconst filteredIds = this.filterDocumentIds(documentIds, subscription.search, documentTypes, parentIds);\n\t\t\tif (filteredIds.length > 0) try {\n\t\t\t\tsubscription.callback({\n\t\t\t\t\t...result,\n\t\t\t\t\tresults: filteredIds\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.errorHandler.handleError(error, {\n\t\t\t\t\teventType: \"created\",\n\t\t\t\t\tsubscriptionId: subscription.id,\n\t\t\t\t\teventData: filteredIds\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Notify subscribers about deleted documents\n\t*/\n\tnotifyDocumentsDeleted(documentIds, documentTypes, parentIds) {\n\t\tfor (const subscription of this.deletedSubscriptions.values()) {\n\t\t\tconst filteredIds = this.filterDocumentIds(documentIds, subscription.search, documentTypes, parentIds);\n\t\t\tif (filteredIds.length > 0) try {\n\t\t\t\tsubscription.callback(filteredIds);\n\t\t\t} catch (error) {\n\t\t\t\tthis.errorHandler.handleError(error, {\n\t\t\t\t\teventType: \"deleted\",\n\t\t\t\t\tsubscriptionId: subscription.id,\n\t\t\t\t\teventData: filteredIds\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Notify subscribers about updated documents\n\t*/\n\tnotifyDocumentsUpdated(documents) {\n\t\tconst result = {\n\t\t\tresults: documents,\n\t\t\toptions: {\n\t\t\t\tcursor: \"\",\n\t\t\t\tlimit: documents.length\n\t\t\t}\n\t\t};\n\t\tfor (const subscription of this.updatedSubscriptions.values()) {\n\t\t\tconst filteredDocs = this.filterDocuments(documents, subscription.search);\n\t\t\tif (filteredDocs.length > 0) try {\n\t\t\t\tsubscription.callback({\n\t\t\t\t\t...result,\n\t\t\t\t\tresults: filteredDocs\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthis.errorHandler.handleError(error, {\n\t\t\t\t\teventType: \"updated\",\n\t\t\t\t\tsubscriptionId: subscription.id,\n\t\t\t\t\teventData: filteredDocs\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t* Notify subscribers about relationship changes\n\t*/\n\tnotifyRelationshipChanged(parentId, childId, changeType, childType) {\n\t\tfor (const subscription of this.relationshipSubscriptions.values()) if (this.matchesRelationshipFilter(parentId, childId, childType, subscription.search)) try {\n\t\t\tsubscription.callback(parentId, childId, changeType);\n\t\t} catch (error) {\n\t\t\tthis.errorHandler.handleError(error, {\n\t\t\t\teventType: \"relationshipChanged\",\n\t\t\t\tsubscriptionId: subscription.id,\n\t\t\t\teventData: {\n\t\t\t\t\tparentId,\n\t\t\t\t\tchildId,\n\t\t\t\t\tchangeType\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\t/**\n\t* Clear all subscriptions\n\t*/\n\tclearAll() {\n\t\tthis.createdSubscriptions.clear();\n\t\tthis.deletedSubscriptions.clear();\n\t\tthis.updatedSubscriptions.clear();\n\t\tthis.relationshipSubscriptions.clear();\n\t}\n\tfilterDocumentIds(documentIds, search, documentTypes, parentIds) {\n\t\tif (!search) return documentIds;\n\t\treturn documentIds.filter((id) => {\n\t\t\tif (search.ids && !search.ids.includes(id)) return false;\n\t\t\tif (search.type && documentTypes) {\n\t\t\t\tif (documentTypes.get(id) !== search.type) return false;\n\t\t\t}\n\t\t\tif (search.parentId && parentIds) {\n\t\t\t\tif (parentIds.get(id) !== search.parentId) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t}\n\tfilterDocuments(documents, search) {\n\t\tif (!search) return documents;\n\t\treturn documents.filter((doc) => {\n\t\t\tif (search.ids && !search.ids.includes(doc.header.id)) return false;\n\t\t\tif (search.type && doc.header.documentType !== search.type) return false;\n\t\t\tif (search.slugs && !search.slugs.includes(doc.header.slug)) return false;\n\t\t\treturn true;\n\t\t});\n\t}\n\tmatchesRelationshipFilter(parentId, childId, childType, search) {\n\t\tif (!search) return true;\n\t\tif (search.parentId && parentId !== search.parentId) return false;\n\t\tif (search.ids && !search.ids.includes(childId)) return false;\n\t\tif (search.type && childType && childType !== search.type) return false;\n\t\treturn true;\n\t}\n};\n//#endregion\n//#region src/subs/subscription-notification-read-model.ts\n/**\n* A read model that notifies the subscription manager when operations are processed.\n* This bridges the gap between operation processing and subscription callbacks.\n*\n* Must be processed AFTER other read models have completed and AFTER READ_READY\n* is emitted, so that reactor.get() returns fresh data when callbacks fire.\n*/\nvar SubscriptionNotificationReadModel = class {\n\tname = \"subscription-notification\";\n\tconstructor(subscriptionManager, documentView) {\n\t\tthis.subscriptionManager = subscriptionManager;\n\t\tthis.documentView = documentView;\n\t}\n\tasync indexOperations(operations) {\n\t\tif (operations.length === 0) return;\n\t\tconst created = [];\n\t\tconst deleted = [];\n\t\tconst updatedIds = /* @__PURE__ */ new Set();\n\t\tconst documentTypes = /* @__PURE__ */ new Map();\n\t\tconst parentIds = /* @__PURE__ */ new Map();\n\t\tfor (const item of operations) {\n\t\t\tconst { operation, context } = item;\n\t\t\tconst actionType = operation.action.type;\n\t\t\tdocumentTypes.set(context.documentId, context.documentType);\n\t\t\tif (actionType === \"CREATE_DOCUMENT\") created.push(context.documentId);\n\t\t\telse if (actionType === \"DELETE_DOCUMENT\") {\n\t\t\t\tconst deletedId = operation.action.input.documentId ?? context.documentId;\n\t\t\t\tdeleted.push(deletedId);\n\t\t\t} else if (actionType === \"ADD_RELATIONSHIP\") {\n\t\t\t\tconst input = operation.action.input;\n\t\t\t\tthis.subscriptionManager.notifyRelationshipChanged(input.sourceId, input.targetId, RelationshipChangeType.Added, input.childType);\n\t\t\t} else if (actionType === \"REMOVE_RELATIONSHIP\") {\n\t\t\t\tconst input = operation.action.input;\n\t\t\t\tthis.subscriptionManager.notifyRelationshipChanged(input.sourceId, input.targetId, RelationshipChangeType.Removed, input.childType);\n\t\t\t} else if (!created.includes(context.documentId)) updatedIds.add(context.documentId);\n\t\t}\n\t\tif (created.length > 0) this.subscriptionManager.notifyDocumentsCreated(created, documentTypes, parentIds);\n\t\tif (deleted.length > 0) this.subscriptionManager.notifyDocumentsDeleted(deleted, documentTypes, parentIds);\n\t\tif (updatedIds.size > 0 && this.documentView) {\n\t\t\tconst documents = await Promise.all(Array.from(updatedIds).map((id) => this.documentView.get(id)));\n\t\t\tthis.subscriptionManager.notifyDocumentsUpdated(documents);\n\t\t}\n\t}\n};\n//#endregion\n//#region src/sync/types.ts\nlet ChannelScheme = /* @__PURE__ */ function(ChannelScheme) {\n\tChannelScheme[\"CONNECT\"] = \"connect\";\n\tChannelScheme[\"SWITCHBOARD\"] = \"switchboard\";\n\treturn ChannelScheme;\n}({});\nlet SyncOperationStatus = /* @__PURE__ */ function(SyncOperationStatus) {\n\tSyncOperationStatus[SyncOperationStatus[\"Unknown\"] = -1] = \"Unknown\";\n\tSyncOperationStatus[SyncOperationStatus[\"TransportPending\"] = 0] = \"TransportPending\";\n\tSyncOperationStatus[SyncOperationStatus[\"ExecutionPending\"] = 1] = \"ExecutionPending\";\n\tSyncOperationStatus[SyncOperationStatus[\"Applied\"] = 2] = \"Applied\";\n\tSyncOperationStatus[SyncOperationStatus[\"Error\"] = 3] = \"Error\";\n\treturn SyncOperationStatus;\n}({});\nlet ChannelErrorSource = /* @__PURE__ */ function(ChannelErrorSource) {\n\tChannelErrorSource[\"None\"] = \"none\";\n\tChannelErrorSource[\"Channel\"] = \"channel\";\n\tChannelErrorSource[\"Inbox\"] = \"inbox\";\n\tChannelErrorSource[\"Outbox\"] = \"outbox\";\n\treturn ChannelErrorSource;\n}({});\n/**\n* Event types for sync lifecycle events.\n* These events track the sync progress of a job's operations to remotes.\n* Uses a separate namespace (20000 range) from ReactorEventTypes (10000 range).\n*/\nconst SyncEventTypes = {\n\tSYNC_PENDING: 20001,\n\tSYNC_SUCCEEDED: 20002,\n\tSYNC_FAILED: 20003,\n\tDEAD_LETTER_ADDED: 20004,\n\tCONNECTION_STATE_CHANGED: 20005\n};\n//#endregion\n//#region src/sync/mailbox.ts\nvar MailboxAggregateError = class extends Error {\n\terrors;\n\tconstructor(errors) {\n\t\tconst messages = errors.map((e) => e.message).join(\"; \");\n\t\tsuper(`Mailbox callback failed with ${errors.length} error(s): ${messages}`);\n\t\tthis.name = \"MailboxAggregateError\";\n\t\tthis.errors = errors;\n\t}\n};\nvar Mailbox = class {\n\titemsMap = /* @__PURE__ */ new Map();\n\taddedCallbacks = [];\n\tremovedCallbacks = [];\n\tpaused = false;\n\taddedBuffer = [];\n\tremovedBuffer = [];\n\t_ack = 0;\n\t_latestOrdinal = 0;\n\tinit(ackOrdinal) {\n\t\tthis._ack = this._latestOrdinal = ackOrdinal;\n\t}\n\tadvanceOrdinal(ordinal) {\n\t\tthis._latestOrdinal = Math.max(this._latestOrdinal, ordinal);\n\t}\n\tget items() {\n\t\treturn Array.from(this.itemsMap.values());\n\t}\n\tget ackOrdinal() {\n\t\treturn this._ack;\n\t}\n\tget latestOrdinal() {\n\t\treturn this._latestOrdinal;\n\t}\n\tget(id) {\n\t\treturn this.itemsMap.get(id);\n\t}\n\tadd(...items) {\n\t\tfor (const item of items) {\n\t\t\tthis.itemsMap.set(item.id, item);\n\t\t\tfor (const op of item.operations) this._latestOrdinal = Math.max(this._latestOrdinal, op.context.ordinal);\n\t\t\titem.on((syncOp, _, next) => {\n\t\t\t\tif (next === SyncOperationStatus.Applied) for (const op of syncOp.operations) this._ack = Math.max(this._ack, op.context.ordinal);\n\t\t\t});\n\t\t}\n\t\tif (this.paused) {\n\t\t\tthis.addedBuffer.push(...items);\n\t\t\treturn;\n\t\t}\n\t\tconst callbacks = [...this.addedCallbacks];\n\t\tconst errors = [];\n\t\tfor (const callback of callbacks) try {\n\t\t\tcallback(items);\n\t\t} catch (error) {\n\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (errors.length > 0) throw new MailboxAggregateError(errors);\n\t}\n\tremove(...items) {\n\t\tfor (const item of items) this.itemsMap.delete(item.id);\n\t\tif (this.paused) {\n\t\t\tthis.removedBuffer.push(...items);\n\t\t\treturn;\n\t\t}\n\t\tconst callbacks = [...this.removedCallbacks];\n\t\tconst errors = [];\n\t\tfor (const callback of callbacks) try {\n\t\t\tcallback(items);\n\t\t} catch (error) {\n\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (errors.length > 0) throw new MailboxAggregateError(errors);\n\t}\n\tonAdded(callback) {\n\t\tthis.addedCallbacks.push(callback);\n\t}\n\tonRemoved(callback) {\n\t\tthis.removedCallbacks.push(callback);\n\t}\n\tpause() {\n\t\tthis.paused = true;\n\t}\n\tresume() {\n\t\tthis.paused = false;\n\t\tthis.flush();\n\t}\n\tflush() {\n\t\tif (this.addedBuffer.length > 0) {\n\t\t\tconst items = this.addedBuffer.splice(0);\n\t\t\tconst callbacks = [...this.addedCallbacks];\n\t\t\tconst errors = [];\n\t\t\tfor (const callback of callbacks) try {\n\t\t\t\tcallback(items);\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t\tif (errors.length > 0) throw new MailboxAggregateError(errors);\n\t\t}\n\t\tif (this.removedBuffer.length > 0) {\n\t\t\tconst items = this.removedBuffer.splice(0);\n\t\t\tconst callbacks = [...this.removedCallbacks];\n\t\t\tconst errors = [];\n\t\t\tfor (const callback of callbacks) try {\n\t\t\t\tcallback(items);\n\t\t\t} catch (error) {\n\t\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t\tif (errors.length > 0) throw new MailboxAggregateError(errors);\n\t\t}\n\t}\n\tisPaused() {\n\t\treturn this.paused;\n\t}\n};\n//#endregion\n//#region src/sync/buffered-mailbox.ts\nvar BufferedMailbox = class {\n\titemsMap = /* @__PURE__ */ new Map();\n\taddedCallbacks = [];\n\tremovedCallbacks = [];\n\taddedBuffer = [];\n\tremovedBuffer = [];\n\taddedTimer = null;\n\tremovedTimer = null;\n\tmilliseconds;\n\tmaxQueued;\n\tpaused = false;\n\t_ack = 0;\n\t_latestOrdinal = 0;\n\tconstructor(milliseconds, maxQueued) {\n\t\tthis.milliseconds = milliseconds;\n\t\tthis.maxQueued = maxQueued;\n\t}\n\tinit(ackOrdinal) {\n\t\tthis._ack = this._latestOrdinal = ackOrdinal;\n\t}\n\tadvanceOrdinal(ordinal) {\n\t\tthis._latestOrdinal = Math.max(this._latestOrdinal, ordinal);\n\t}\n\tget items() {\n\t\treturn Array.from(this.itemsMap.values());\n\t}\n\tget ackOrdinal() {\n\t\treturn this._ack;\n\t}\n\tget latestOrdinal() {\n\t\treturn this._latestOrdinal;\n\t}\n\tget(id) {\n\t\treturn this.itemsMap.get(id);\n\t}\n\tadd(...items) {\n\t\tfor (const item of items) {\n\t\t\tthis.itemsMap.set(item.id, item);\n\t\t\tfor (const op of item.operations) this._latestOrdinal = Math.max(this._latestOrdinal, op.context.ordinal);\n\t\t\titem.on((syncOp, _, next) => {\n\t\t\t\tif (next === SyncOperationStatus.Applied) for (const op of syncOp.operations) this._ack = Math.max(this._ack, op.context.ordinal);\n\t\t\t});\n\t\t}\n\t\tthis.addedBuffer.push(...items);\n\t\tif (this.paused) return;\n\t\tif (this.addedBuffer.length >= this.maxQueued) this.flushAdded();\n\t\telse this.scheduleAddedFlush();\n\t}\n\tremove(...items) {\n\t\tfor (const item of items) this.itemsMap.delete(item.id);\n\t\tthis.removedBuffer.push(...items);\n\t\tif (this.paused) return;\n\t\tif (this.removedBuffer.length >= this.maxQueued) this.flushRemoved();\n\t\telse this.scheduleRemovedFlush();\n\t}\n\tonAdded(callback) {\n\t\tthis.addedCallbacks.push(callback);\n\t}\n\tonRemoved(callback) {\n\t\tthis.removedCallbacks.push(callback);\n\t}\n\tpause() {\n\t\tthis.paused = true;\n\t\tif (this.addedTimer !== null) {\n\t\t\tclearTimeout(this.addedTimer);\n\t\t\tthis.addedTimer = null;\n\t\t}\n\t\tif (this.removedTimer !== null) {\n\t\t\tclearTimeout(this.removedTimer);\n\t\t\tthis.removedTimer = null;\n\t\t}\n\t}\n\tresume() {\n\t\tthis.paused = false;\n\t\tif (this.addedBuffer.length > 0) this.scheduleAddedFlush();\n\t\tif (this.removedBuffer.length > 0) this.scheduleRemovedFlush();\n\t}\n\tisPaused() {\n\t\treturn this.paused;\n\t}\n\tflush() {\n\t\tthis.flushAdded();\n\t\tthis.flushRemoved();\n\t}\n\tscheduleAddedFlush() {\n\t\tif (this.addedTimer !== null) clearTimeout(this.addedTimer);\n\t\tthis.addedTimer = setTimeout(() => {\n\t\t\tthis.flushAdded();\n\t\t}, this.milliseconds);\n\t}\n\tscheduleRemovedFlush() {\n\t\tif (this.removedTimer !== null) clearTimeout(this.removedTimer);\n\t\tthis.removedTimer = setTimeout(() => {\n\t\t\tthis.flushRemoved();\n\t\t}, this.milliseconds);\n\t}\n\tflushAdded() {\n\t\tif (this.addedTimer !== null) {\n\t\t\tclearTimeout(this.addedTimer);\n\t\t\tthis.addedTimer = null;\n\t\t}\n\t\tconst items = this.addedBuffer;\n\t\tthis.addedBuffer = [];\n\t\tif (items.length > 0) this.invokeCallbacks(this.addedCallbacks, items);\n\t}\n\tflushRemoved() {\n\t\tif (this.removedTimer !== null) {\n\t\t\tclearTimeout(this.removedTimer);\n\t\t\tthis.removedTimer = null;\n\t\t}\n\t\tconst items = this.removedBuffer;\n\t\tthis.removedBuffer = [];\n\t\tif (items.length > 0) this.invokeCallbacks(this.removedCallbacks, items);\n\t}\n\tinvokeCallbacks(callbacks, items) {\n\t\tconst callbacksCopy = [...callbacks];\n\t\tconst errors = [];\n\t\tfor (const callback of callbacksCopy) try {\n\t\t\tcallback(items);\n\t\t} catch (error) {\n\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (errors.length > 0) throw new MailboxAggregateError(errors);\n\t}\n};\n//#endregion\n//#region src/sync/errors.ts\nvar GraphQLRequestError = class extends Error {\n\tstatusCode;\n\tcategory;\n\tconstructor(message, category, statusCode) {\n\t\tsuper(message);\n\t\tthis.name = \"GraphQLRequestError\";\n\t\tthis.category = category;\n\t\tthis.statusCode = statusCode;\n\t}\n};\nvar PollingChannelError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"PollingChannelError\";\n\t}\n};\nvar ChannelError = class extends Error {\n\tsource;\n\terror;\n\tconstructor(source, error) {\n\t\tsuper(`ChannelError[${source}]: ${error.message}`);\n\t\tthis.name = \"ChannelError\";\n\t\tthis.source = source;\n\t\tthis.error = error;\n\t}\n};\n//#endregion\n//#region src/sync/sync-operation.ts\nvar SyncOperationAggregateError = class extends Error {\n\terrors;\n\tconstructor(errors) {\n\t\tconst messages = errors.map((e) => e.message).join(\"; \");\n\t\tsuper(`SyncOperation callback failed with ${errors.length} error(s): ${messages}`);\n\t\tthis.name = \"SyncOperationAggregateError\";\n\t\tthis.errors = errors;\n\t}\n};\nvar SyncOperation = class {\n\tid;\n\tjobId;\n\tjobDependencies;\n\tremoteName;\n\tdocumentId;\n\tscopes;\n\tbranch;\n\toperations;\n\tstatus;\n\terror;\n\tcallbacks = [];\n\tconstructor(id, jobId, jobDependencies, remoteName, documentId, scopes, branch, operations) {\n\t\tthis.id = id;\n\t\tthis.jobId = jobId;\n\t\tthis.jobDependencies = jobDependencies;\n\t\tthis.remoteName = remoteName;\n\t\tthis.documentId = documentId;\n\t\tthis.scopes = scopes;\n\t\tthis.branch = branch;\n\t\tthis.operations = operations;\n\t\tthis.status = SyncOperationStatus.Unknown;\n\t}\n\ton(callback) {\n\t\tthis.callbacks.push(callback);\n\t}\n\tstarted() {\n\t\tthis.transition(SyncOperationStatus.TransportPending);\n\t}\n\ttransported() {\n\t\tthis.transition(SyncOperationStatus.ExecutionPending);\n\t}\n\texecuted() {\n\t\tthis.transition(SyncOperationStatus.Applied);\n\t}\n\tfailed(error) {\n\t\tthis.error = error;\n\t\tthis.transition(SyncOperationStatus.Error);\n\t}\n\ttransition(next) {\n\t\tconst prev = this.status;\n\t\tif (next <= prev) return;\n\t\tthis.status = next;\n\t\tconst errors = [];\n\t\tfor (const callback of this.callbacks) try {\n\t\t\tcallback(this, prev, next);\n\t\t} catch (error) {\n\t\t\terrors.push(error instanceof Error ? error : new Error(String(error)));\n\t\t}\n\t\tif (errors.length > 0) throw new SyncOperationAggregateError(errors);\n\t}\n};\n//#endregion\n//#region src/sync/utils.ts\n/**\n* Trims a mailbox using the jobIds from a batch.\n*/\nfunction trimMailboxFromBatch(mailbox, batch) {\n\tconst toRemove = [];\n\tfor (const syncOp of batch.entries) for (const item of mailbox.items) if (syncOp.event.jobId === item.jobId) {\n\t\ttoRemove.push(item);\n\t\tbreak;\n\t}\n\tif (toRemove.length > 0) {\n\t\tfor (const syncOp of toRemove) syncOp.executed();\n\t\tmailbox.remove(...toRemove);\n\t}\n}\n/**\n* Trims a mailbox using the ack ordinal.\n*/\nfunction trimMailboxFromAckOrdinal(mailbox, ackOrdinal) {\n\tconst toRemove = [];\n\tfor (const syncOp of mailbox.items) {\n\t\tlet maxOrdinal = 0;\n\t\tfor (const op of syncOp.operations) maxOrdinal = Math.max(maxOrdinal, op.context.ordinal);\n\t\tif (maxOrdinal <= ackOrdinal) toRemove.push(syncOp);\n\t}\n\tif (toRemove.length > 0) {\n\t\tfor (const syncOp of toRemove) syncOp.executed();\n\t\tmailbox.remove(...toRemove);\n\t}\n}\n/**\n* Filters operations based on a remote's filter criteria.\n*\n* @param operations - The operations to filter\n* @param filter - The filter criteria to apply\n* @returns The filtered operations that match the criteria\n*/\nfunction filterOperations(operations, filter) {\n\treturn operations.filter((op) => {\n\t\tif (filter.branch && op.context.branch !== filter.branch) return false;\n\t\tif (filter.documentId.length > 0 && !filter.documentId.includes(op.context.documentId)) return false;\n\t\tif (filter.scope.length > 0 && !filter.scope.includes(op.context.scope)) return false;\n\t\treturn true;\n\t});\n}\n/**\n* Creates an idle channel health status.\n*\n* @returns A new idle channel health object\n*/\nfunction createIdleHealth() {\n\treturn {\n\t\tstate: \"idle\",\n\t\tfailureCount: 0\n\t};\n}\n/**\n* Batches consecutive operations by documentId and scope, preserving ordering.\n*\n* For operations [a1_doc, a1_global, a2_doc, b1_global], this returns:\n* - Batch 1: [a1_doc] for doc-a, document scope\n* - Batch 2: [a1_global] for doc-a, global scope\n* - Batch 3: [a2_doc] for doc-a, document scope\n* - Batch 4: [b1_global] for doc-b, global scope\n*\n* This ensures operations are grouped for efficient processing while maintaining\n* causality across documents and scopes.\n*/\n/**\n* Sorts envelopes by the timestamp of their first operation.\n* Envelopes without operations are placed at the end.\n*/\nfunction sortEnvelopesByFirstOperationTimestamp(envelopes) {\n\treturn envelopes.slice().sort((a, b) => {\n\t\tconst aTimestamp = a.operations?.[0]?.operation.timestampUtcMs;\n\t\tconst bTimestamp = b.operations?.[0]?.operation.timestampUtcMs;\n\t\tif (!aTimestamp && !bTimestamp) return 0;\n\t\tif (!aTimestamp) return 1;\n\t\tif (!bTimestamp) return -1;\n\t\treturn new Date(aTimestamp).getTime() - new Date(bTimestamp).getTime();\n\t});\n}\nfunction batchOperationsByDocument(operations) {\n\tconst batches = [];\n\tlet currentDocId = null;\n\tlet currentScope = null;\n\tlet currentBatch = [];\n\tconst flushBatch = () => {\n\t\tif (currentBatch.length === 0 || currentDocId === null || currentScope === null) return;\n\t\tbatches.push({\n\t\t\tdocumentId: currentDocId,\n\t\t\tbranch: currentBatch[0].context.branch,\n\t\t\tscope: currentScope,\n\t\t\toperations: currentBatch\n\t\t});\n\t\tcurrentBatch = [];\n\t};\n\tfor (const op of operations) {\n\t\tconst docId = op.context.documentId;\n\t\tconst scope = op.context.scope;\n\t\tif (docId !== currentDocId || scope !== currentScope) {\n\t\t\tflushBatch();\n\t\t\tcurrentDocId = docId;\n\t\t\tcurrentScope = scope;\n\t\t}\n\t\tcurrentBatch.push(op);\n\t}\n\tflushBatch();\n\treturn batches;\n}\nfunction toOperationWithContext(entry) {\n\treturn {\n\t\toperation: {\n\t\t\tid: entry.id,\n\t\t\tindex: entry.index,\n\t\t\tskip: entry.skip,\n\t\t\thash: entry.hash,\n\t\t\ttimestampUtcMs: entry.timestampUtcMs,\n\t\t\taction: entry.action\n\t\t},\n\t\tcontext: {\n\t\t\tdocumentId: entry.documentId,\n\t\t\tdocumentType: entry.documentType,\n\t\t\tscope: entry.scope,\n\t\t\tbranch: entry.branch,\n\t\t\tordinal: entry.ordinal ?? 0\n\t\t}\n\t};\n}\n/**\n* Merges SyncOperations that share the same (documentId, scope, branch) into\n* a single SyncOperation per group. Within each group, operations are sorted\n* by context.ordinal. The merged SyncOperation keeps the first group member's\n* jobId; all other jobIds are remapped so external dependencies still resolve.\n*/\nfunction consolidateSyncOperations(syncOps) {\n\tif (syncOps.length <= 1) return syncOps;\n\tconst groups = /* @__PURE__ */ new Map();\n\tconst jobIdRemap = /* @__PURE__ */ new Map();\n\tconst insertionOrder = [];\n\tfor (const syncOp of syncOps) {\n\t\tconst key = `${syncOp.documentId}|${syncOp.scopes.slice().sort().join(\",\")}|${syncOp.branch}`;\n\t\tconst existing = groups.get(key);\n\t\tif (existing) {\n\t\t\texisting.ops.push(syncOp);\n\t\t\tif (syncOp.jobId && syncOp.jobId !== existing.canonicalJobId) jobIdRemap.set(syncOp.jobId, existing.canonicalJobId);\n\t\t} else {\n\t\t\tgroups.set(key, {\n\t\t\t\tops: [syncOp],\n\t\t\t\tcanonicalJobId: syncOp.jobId\n\t\t\t});\n\t\t\tinsertionOrder.push(key);\n\t\t}\n\t}\n\tconst result = [];\n\tfor (const key of insertionOrder) {\n\t\tconst group = groups.get(key);\n\t\tconst allOperations = group.ops.flatMap((op) => op.operations).sort((a, b) => a.context.ordinal - b.context.ordinal);\n\t\tconst allDeps = /* @__PURE__ */ new Set();\n\t\tfor (const op of group.ops) for (const dep of op.jobDependencies) allDeps.add(dep);\n\t\tallDeps.delete(group.canonicalJobId);\n\t\tfor (const op of group.ops) allDeps.delete(op.jobId);\n\t\tconst remappedDeps = [];\n\t\tfor (const dep of allDeps) {\n\t\t\tconst mapped = jobIdRemap.get(dep) ?? dep;\n\t\t\tif (!remappedDeps.includes(mapped) && mapped !== group.canonicalJobId) remappedDeps.push(mapped);\n\t\t}\n\t\tconst first = group.ops[0];\n\t\tconst merged = new SyncOperation(first.id, first.jobId, remappedDeps, first.remoteName, first.documentId, first.scopes, first.branch, allOperations);\n\t\tif (first.status > SyncOperationStatus.TransportPending) if (first.status >= SyncOperationStatus.Error) merged.executed();\n\t\telse if (first.status >= SyncOperationStatus.Applied) merged.transported();\n\t\telse merged.started();\n\t\tresult.push(merged);\n\t}\n\treturn result;\n}\nfunction mergeCollectionMemberships(events) {\n\tconst mergedMemberships = {};\n\tfor (const event of events) {\n\t\tif (event.collectionMemberships) for (const [docId, collections] of Object.entries(event.collectionMemberships)) {\n\t\t\tif (!(docId in mergedMemberships)) mergedMemberships[docId] = [];\n\t\t\tfor (const c of collections) if (!mergedMemberships[docId].includes(c)) mergedMemberships[docId].push(c);\n\t\t}\n\t\tfor (const op of event.operations) {\n\t\t\tconst action = op.operation.action;\n\t\t\tif (action.type !== \"ADD_RELATIONSHIP\") continue;\n\t\t\tconst input = action.input;\n\t\t\tif (!input?.sourceId || !input.targetId) continue;\n\t\t\tconst collectionId = driveCollectionId(op.context.branch, input.sourceId);\n\t\t\tif (!(input.targetId in mergedMemberships)) mergedMemberships[input.targetId] = [];\n\t\t\tif (!mergedMemberships[input.targetId].includes(collectionId)) mergedMemberships[input.targetId].push(collectionId);\n\t\t}\n\t}\n\treturn mergedMemberships;\n}\n//#endregion\n//#region src/sync/channels/interval-poll-timer.ts\nconst DEFAULT_CONFIG = {\n\tintervalMs: 2e3,\n\tmaxQueueDepth: 100,\n\tbackpressureCheckIntervalMs: 500,\n\tretryBaseDelayMs: 1e3,\n\tretryMaxDelayMs: 3e5\n};\nfunction calculateBackoffDelay(consecutiveFailures, retryBaseDelayMs, retryMaxDelayMs, random) {\n\tconst backoff = Math.min(retryMaxDelayMs, retryBaseDelayMs * Math.pow(2, consecutiveFailures - 1));\n\treturn backoff / 2 + random * (backoff / 2);\n}\n/**\n* Default poll timer using setTimeout.\n* Waits for delegate completion before scheduling next tick.\n* Checks queue depth and defers polling when backpressure is detected.\n*/\nvar IntervalPollTimer = class {\n\tdelegate;\n\ttimer;\n\trunning;\n\tpaused;\n\tconsecutiveFailures;\n\tqueue;\n\tconfig;\n\tconstructor(queue, config = {}) {\n\t\tthis.queue = queue;\n\t\tthis.config = {\n\t\t\t...DEFAULT_CONFIG,\n\t\t\t...config\n\t\t};\n\t\tthis.running = false;\n\t\tthis.paused = false;\n\t\tthis.consecutiveFailures = 0;\n\t}\n\tsetDelegate(delegate) {\n\t\tthis.delegate = delegate;\n\t}\n\tstart() {\n\t\tthis.running = true;\n\t\tthis.consecutiveFailures = 0;\n\t\tthis.tick();\n\t}\n\tstop() {\n\t\tthis.running = false;\n\t\tif (this.timer) {\n\t\t\tclearTimeout(this.timer);\n\t\t\tthis.timer = void 0;\n\t\t}\n\t}\n\ttick() {\n\t\tif (!this.delegate || !this.running) return;\n\t\tconst delegate = this.delegate;\n\t\tthis.queue.totalSize().then((size) => {\n\t\t\tif (!this.running) return;\n\t\t\tif (size > this.config.maxQueueDepth) this.scheduleBackpressureRecheck();\n\t\t\telse delegate().then(() => {\n\t\t\t\tthis.consecutiveFailures = 0;\n\t\t\t\tthis.scheduleNext();\n\t\t\t}).catch(() => {\n\t\t\t\tthis.consecutiveFailures++;\n\t\t\t\tthis.scheduleRetry();\n\t\t\t});\n\t\t}).catch(() => {\n\t\t\tthis.scheduleNext();\n\t\t});\n\t}\n\tscheduleNext() {\n\t\tif (!this.running || this.paused) return;\n\t\tthis.timer = setTimeout(() => this.tick(), this.config.intervalMs);\n\t}\n\tscheduleRetry() {\n\t\tif (!this.running || this.paused) return;\n\t\tconst delay = calculateBackoffDelay(this.consecutiveFailures, this.config.retryBaseDelayMs, this.config.retryMaxDelayMs, Math.random());\n\t\tthis.timer = setTimeout(() => this.tick(), delay);\n\t}\n\tscheduleBackpressureRecheck() {\n\t\tif (!this.running || this.paused) return;\n\t\tthis.timer = setTimeout(() => this.tick(), this.config.backpressureCheckIntervalMs);\n\t}\n\tpause() {\n\t\tthis.paused = true;\n\t\tif (this.timer) {\n\t\t\tclearTimeout(this.timer);\n\t\t\tthis.timer = void 0;\n\t\t}\n\t}\n\tresume() {\n\t\tthis.paused = false;\n\t\tif (this.running) this.scheduleNext();\n\t}\n\ttriggerNow() {\n\t\tif (this.running && this.delegate) this.tick();\n\t}\n\tisPaused() {\n\t\treturn this.paused;\n\t}\n\tisRunning() {\n\t\treturn this.running;\n\t}\n\tgetIntervalMs() {\n\t\treturn this.config.intervalMs;\n\t}\n\tsetIntervalMs(ms) {\n\t\tthis.config.intervalMs = ms;\n\t}\n};\n//#endregion\n//#region src/sync/channels/utils.ts\nlet syncOpCounter = 0;\n/**\n* Serializes an action for GraphQL transport, converting signature tuples to strings.\n*/\nfunction serializeAction(action) {\n\tconst signer = action.context?.signer;\n\tif (!signer?.signatures) return action;\n\treturn {\n\t\t...action,\n\t\tcontext: {\n\t\t\t...action.context,\n\t\t\tsigner: {\n\t\t\t\t...signer,\n\t\t\t\tsignatures: signer.signatures.map((sig) => Array.isArray(sig) ? sig.join(\", \") : sig)\n\t\t\t}\n\t\t}\n\t};\n}\n/**\n* Serializes a SyncEnvelope for GraphQL transport.\n*\n* Signatures are serialized as comma-separated strings since GraphQL schema\n* defines them as [String!]!. The resultingState context field is stripped\n* since it is not defined in OperationContextInput.\n*/\nfunction serializeEnvelope(envelope) {\n\treturn {\n\t\ttype: envelope.type.toUpperCase(),\n\t\tchannelMeta: envelope.channelMeta,\n\t\toperations: envelope.operations?.map((opWithContext) => ({\n\t\t\toperation: {\n\t\t\t\tindex: opWithContext.operation.index,\n\t\t\t\ttimestampUtcMs: opWithContext.operation.timestampUtcMs,\n\t\t\t\thash: opWithContext.operation.hash,\n\t\t\t\tskip: opWithContext.operation.skip,\n\t\t\t\terror: opWithContext.operation.error,\n\t\t\t\tid: opWithContext.operation.id,\n\t\t\t\taction: serializeAction(opWithContext.operation.action)\n\t\t\t},\n\t\t\tcontext: {\n\t\t\t\tdocumentId: opWithContext.context.documentId,\n\t\t\t\tdocumentType: opWithContext.context.documentType,\n\t\t\t\tscope: opWithContext.context.scope,\n\t\t\t\tbranch: opWithContext.context.branch,\n\t\t\t\tordinal: opWithContext.context.ordinal\n\t\t\t}\n\t\t})),\n\t\tcursor: envelope.cursor,\n\t\tkey: envelope.key,\n\t\tdependsOn: envelope.dependsOn\n\t};\n}\n/**\n* Deserializes a signature from a comma-separated string back to a tuple.\n*\n* GraphQL serializes Signature tuples as comma-separated strings for transport.\n* This function converts them back to the expected [string, string, string, string, string] format.\n*/\nfunction deserializeSignature(sig) {\n\tif (Array.isArray(sig)) return sig;\n\treturn sig.split(\", \");\n}\n/**\n* Deserializes signatures in an operation's signer context from strings back to tuples.\n*\n* When operations are transported via GraphQL, signatures are serialized as comma-separated\n* strings. This function restores them to the Signature tuple format required for verification.\n*/\nfunction deserializeOperationSignatures(opWithContext) {\n\tconst signer = opWithContext.operation.action.context?.signer;\n\tif (!signer?.signatures || signer.signatures.length === 0) return opWithContext;\n\tconst deserializedSignatures = signer.signatures.map(deserializeSignature);\n\tconst deserializedOperation = {\n\t\t...opWithContext.operation,\n\t\taction: {\n\t\t\t...opWithContext.operation.action,\n\t\t\tcontext: {\n\t\t\t\t...opWithContext.operation.action.context,\n\t\t\t\tsigner: {\n\t\t\t\t\t...signer,\n\t\t\t\t\tsignatures: deserializedSignatures\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\treturn {\n\t\t...opWithContext,\n\t\toperation: deserializedOperation\n\t};\n}\n/**\n* Converts a SyncEnvelope containing operations into multiple SyncOperations.\n*\n* This function batches operations by documentId, preserving cross-document ordering.\n* For operations [a1, a2, a3, b1, b2, a4], it returns:\n* - SyncOperation 1: [a1, a2, a3] for doc-a\n* - SyncOperation 2: [b1, b2] for doc-b\n* - SyncOperation 3: [a4] for doc-a\n*\n* This ensures operations are grouped for efficient processing while maintaining\n* causality across documents.\n*/\nfunction envelopesToSyncOperations(envelope, remoteName) {\n\tif (!envelope.operations || envelope.operations.length === 0) return [];\n\treturn batchOperationsByDocument(envelope.operations.map(deserializeOperationSignatures)).map((batch) => {\n\t\treturn new SyncOperation(`syncop-${envelope.channelMeta.id}-${Date.now()}-${syncOpCounter++}`, envelope.key ?? \"\", (envelope.dependsOn ?? []).filter(Boolean), remoteName, batch.documentId, [batch.scope], batch.branch, batch.operations);\n\t});\n}\nconst getLatestAppliedOrdinal = (syncOps) => {\n\tlet maxOrdinal = 0;\n\tfor (const syncOp of syncOps) if (syncOp.status === SyncOperationStatus.Applied) for (const op of syncOp.operations) maxOrdinal = Math.max(maxOrdinal, op.context.ordinal);\n\treturn maxOrdinal;\n};\n//#endregion\n//#region src/sync/channels/gql-req-channel.ts\n/**\n* GraphQL-based synchronization channel for network communication between reactors.\n*/\nvar GqlRequestChannel = class {\n\tinbox;\n\toutbox;\n\tdeadLetter;\n\tconfig;\n\tbufferedOutbox;\n\tchannelId;\n\tremoteName;\n\tcursorStorage;\n\toperationIndex;\n\tpollTimer;\n\tabortController = new AbortController();\n\tisShutdown;\n\tfailureCount;\n\tlastSuccessUtcMs;\n\tlastFailureUtcMs;\n\tlastPersistedInboxOrdinal = 0;\n\tlastPersistedOutboxOrdinal = 0;\n\tpushFailureCount = 0;\n\tpushRetryTimer = null;\n\tpushBlocked = false;\n\tisPushing = false;\n\tpendingDrain = false;\n\tconnectionState = \"connecting\";\n\tconnectionStateCallbacks = /* @__PURE__ */ new Set();\n\tconstructor(logger, channelId, remoteName, cursorStorage, config, operationIndex, pollTimer) {\n\t\tthis.logger = logger;\n\t\tthis.channelId = channelId;\n\t\tthis.remoteName = remoteName;\n\t\tthis.cursorStorage = cursorStorage;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.pollTimer = pollTimer;\n\t\tthis.config = {\n\t\t\turl: config.url,\n\t\t\tjwtHandler: config.jwtHandler,\n\t\t\tfetchFn: config.fetchFn,\n\t\t\tcollectionId: config.collectionId,\n\t\t\tfilter: config.filter,\n\t\t\tretryBaseDelayMs: config.retryBaseDelayMs,\n\t\t\tretryMaxDelayMs: config.retryMaxDelayMs\n\t\t};\n\t\tthis.isShutdown = false;\n\t\tthis.failureCount = 0;\n\t\tthis.inbox = new Mailbox();\n\t\tthis.bufferedOutbox = new BufferedMailbox(500, 25);\n\t\tthis.outbox = this.bufferedOutbox;\n\t\tthis.deadLetter = new Mailbox();\n\t\tthis.deadLetter.onAdded((syncOps) => {\n\t\t\tfor (const syncOp of syncOps) this.logger.warn(\"Dead letter added for document @DocumentId on channel @ChannelId\", syncOp.documentId, this.channelId);\n\t\t});\n\t\tthis.outbox.onAdded((syncOps) => {\n\t\t\tif (this.isShutdown) return;\n\t\t\tif (this.isPushing) {\n\t\t\t\tthis.pendingDrain = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.pushBlocked) return;\n\t\t\tthis.attemptPush(syncOps);\n\t\t});\n\t\tthis.outbox.onRemoved((syncOps) => {\n\t\t\tconst maxOrdinal = getLatestAppliedOrdinal(syncOps);\n\t\t\tif (maxOrdinal > this.lastPersistedOutboxOrdinal) {\n\t\t\t\tthis.lastPersistedOutboxOrdinal = maxOrdinal;\n\t\t\t\tthis.cursorStorage.upsert({\n\t\t\t\t\tremoteName: this.remoteName,\n\t\t\t\t\tcursorType: \"outbox\",\n\t\t\t\t\tcursorOrdinal: maxOrdinal,\n\t\t\t\t\tlastSyncedAtUtcMs: Date.now()\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tthis.logger.error(\"Failed to update outbox cursor for @ChannelId! This means that future application runs may resend duplicate operations. This is recoverable (with deduplication protection), but not-optimal: @Error\", this.channelId, error);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.inbox.onRemoved((syncOps) => {\n\t\t\tconst maxOrdinal = getLatestAppliedOrdinal(syncOps);\n\t\t\tif (maxOrdinal > this.lastPersistedInboxOrdinal) {\n\t\t\t\tthis.lastPersistedInboxOrdinal = maxOrdinal;\n\t\t\t\tthis.cursorStorage.upsert({\n\t\t\t\t\tremoteName: this.remoteName,\n\t\t\t\t\tcursorType: \"inbox\",\n\t\t\t\t\tcursorOrdinal: maxOrdinal,\n\t\t\t\t\tlastSyncedAtUtcMs: Date.now()\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tthis.logger.error(\"Failed to update inbox cursor for @ChannelId! This is unlikely to cause a problem, but not-optimal: @Error\", this.channelId, error);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Shuts down the channel and prevents further operations.\n\t*/\n\tshutdown() {\n\t\tthis.abortController.abort();\n\t\tthis.bufferedOutbox.flush();\n\t\tthis.isShutdown = true;\n\t\tthis.pollTimer.stop();\n\t\tif (this.pushRetryTimer) {\n\t\t\tclearTimeout(this.pushRetryTimer);\n\t\t\tthis.pushRetryTimer = null;\n\t\t}\n\t\tthis.transitionConnectionState(\"disconnected\");\n\t\treturn Promise.resolve();\n\t}\n\tgetConnectionState() {\n\t\treturn {\n\t\t\tstate: this.connectionState,\n\t\t\tfailureCount: this.failureCount,\n\t\t\tlastSuccessUtcMs: this.lastSuccessUtcMs ?? 0,\n\t\t\tlastFailureUtcMs: this.lastFailureUtcMs ?? 0,\n\t\t\tpushBlocked: this.pushBlocked,\n\t\t\tpushFailureCount: this.pushFailureCount\n\t\t};\n\t}\n\tonConnectionStateChange(callback) {\n\t\tthis.connectionStateCallbacks.add(callback);\n\t\treturn () => {\n\t\t\tthis.connectionStateCallbacks.delete(callback);\n\t\t};\n\t}\n\t/**\n\t* Initializes the channel by registering it on the remote server and starting polling.\n\t*/\n\tasync init() {\n\t\tconst { ackOrdinal } = await this.touchRemoteChannel();\n\t\tconst cursors = await this.cursorStorage.list(this.remoteName);\n\t\tconst inboxOrdinal = cursors.find((c) => c.cursorType === \"inbox\")?.cursorOrdinal ?? 0;\n\t\tconst outboxOrdinal = cursors.find((c) => c.cursorType === \"outbox\")?.cursorOrdinal ?? 0;\n\t\tthis.inbox.init(inboxOrdinal);\n\t\tthis.outbox.init(outboxOrdinal);\n\t\tthis.lastPersistedInboxOrdinal = inboxOrdinal;\n\t\tthis.lastPersistedOutboxOrdinal = outboxOrdinal;\n\t\tif (ackOrdinal > 0) trimMailboxFromAckOrdinal(this.outbox, ackOrdinal);\n\t\tthis.pollTimer.setDelegate(() => this.poll());\n\t\tthis.pollTimer.start();\n\t\tthis.transitionConnectionState(\"connected\");\n\t}\n\ttransitionConnectionState(next) {\n\t\tif (this.connectionState === next) return;\n\t\tthis.connectionState = next;\n\t\tconst snapshot = this.getConnectionState();\n\t\tfor (const callback of this.connectionStateCallbacks) try {\n\t\t\tcallback(snapshot);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Connection state change callback error: @Error\", error);\n\t\t}\n\t}\n\t/**\n\t* Polls the remote for new sync envelopes.\n\t*/\n\tasync poll() {\n\t\tif (this.isShutdown) return;\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await this.pollSyncEnvelopes(this.inbox.ackOrdinal, this.inbox.latestOrdinal);\n\t\t} catch (error) {\n\t\t\tif (!this.handlePollError(error)) throw error;\n\t\t\treturn;\n\t\t}\n\t\tconst { envelopes, ackOrdinal, deadLetters } = response;\n\t\tif (ackOrdinal > 0) trimMailboxFromAckOrdinal(this.outbox, ackOrdinal);\n\t\tconst sortedEnvelopes = sortEnvelopesByFirstOperationTimestamp(envelopes);\n\t\tconst allSyncOps = [];\n\t\tfor (const envelope of sortedEnvelopes) if (envelope.type.toLowerCase() === \"operations\" && envelope.operations) {\n\t\t\tconst syncOps = envelopesToSyncOperations(envelope, this.remoteName);\n\t\t\tfor (const syncOp of syncOps) syncOp.transported();\n\t\t\tallSyncOps.push(...syncOps);\n\t\t}\n\t\tconst consolidated = allSyncOps.length > 1 ? consolidateSyncOperations(allSyncOps) : allSyncOps;\n\t\tif (consolidated.length > 0) this.inbox.add(...consolidated);\n\t\tif (deadLetters.length > 0) this.handleRemoteDeadLetters(deadLetters);\n\t\tthis.lastSuccessUtcMs = Date.now();\n\t\tthis.failureCount = 0;\n\t\tthis.transitionConnectionState(\"connected\");\n\t}\n\t/**\n\t* Handles dead letters reported by the remote server.\n\t* Creates local dead letter SyncOperations so the channel quiesces.\n\t*/\n\thandleRemoteDeadLetters(deadLetters) {\n\t\tfor (const dl of deadLetters) this.logger.error(\"Remote dead letter on @ChannelId: document @DocumentId failed with: @Error\", this.channelId, dl.documentId, dl.error);\n\t\tconst syncOps = [];\n\t\tfor (const dl of deadLetters) {\n\t\t\tconst syncOp = new SyncOperation(crypto.randomUUID(), dl.jobId, [], this.remoteName, dl.documentId, dl.scopes, dl.branch, []);\n\t\t\tsyncOp.failed(new ChannelError(ChannelErrorSource.Outbox, new Error(dl.error)));\n\t\t\tsyncOps.push(syncOp);\n\t\t}\n\t\tthis.deadLetter.add(...syncOps);\n\t}\n\t/**\n\t* Handles polling errors with error classification.\n\t* Returns true if the error was handled (caller should not rethrow).\n\t*/\n\thandlePollError(error) {\n\t\tif (this.isShutdown) return true;\n\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\tif (err.message.includes(\"Channel not found\")) {\n\t\t\tthis.transitionConnectionState(\"reconnecting\");\n\t\t\tthis.recoverFromChannelNotFound();\n\t\t\treturn true;\n\t\t}\n\t\tconst classification = this.classifyError(err);\n\t\tthis.failureCount++;\n\t\tthis.lastFailureUtcMs = Date.now();\n\t\tconst channelError = new ChannelError(ChannelErrorSource.Inbox, err);\n\t\tthis.logger.error(\"GqlChannel poll error (@FailureCount, @Classification): @Error\", this.failureCount, classification, channelError);\n\t\tif (classification === \"unrecoverable\") {\n\t\t\tthis.pollTimer.stop();\n\t\t\tthis.transitionConnectionState(\"error\");\n\t\t\treturn true;\n\t\t}\n\t\tthis.transitionConnectionState(\"error\");\n\t\treturn false;\n\t}\n\t/**\n\t* Recovers from a \"Channel not found\" error by re-registering and restarting polling.\n\t* Self-retries with backoff instead of restarting the poll timer on failure.\n\t*/\n\trecoverFromChannelNotFound() {\n\t\tthis.logger.info(\"GqlChannel @ChannelId not found on remote, re-registering...\", this.channelId);\n\t\tthis.pollTimer.stop();\n\t\tconst attemptRecovery = (attempt) => {\n\t\t\tif (this.isShutdown) return;\n\t\t\tthis.touchRemoteChannel().then(({ ackOrdinal }) => {\n\t\t\t\tthis.logger.info(\"GqlChannel @ChannelId re-registered successfully\", this.channelId);\n\t\t\t\tthis.failureCount = 0;\n\t\t\t\tif (ackOrdinal > 0) trimMailboxFromAckOrdinal(this.outbox, ackOrdinal);\n\t\t\t\tthis.pollTimer.start();\n\t\t\t\tthis.transitionConnectionState(\"connected\");\n\t\t\t}).catch((recoveryError) => {\n\t\t\t\tconst err = recoveryError instanceof Error ? recoveryError : new Error(String(recoveryError));\n\t\t\t\tconst classification = this.classifyError(err);\n\t\t\t\tthis.logger.error(\"GqlChannel @ChannelId recovery attempt @Attempt failed (@Classification): @Error\", this.channelId, attempt, classification, recoveryError);\n\t\t\t\tthis.failureCount++;\n\t\t\t\tthis.lastFailureUtcMs = Date.now();\n\t\t\t\tif (classification === \"unrecoverable\") {\n\t\t\t\t\tthis.transitionConnectionState(\"error\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.transitionConnectionState(\"reconnecting\");\n\t\t\t\tconst delay = calculateBackoffDelay(attempt, this.config.retryBaseDelayMs, this.config.retryMaxDelayMs, Math.random());\n\t\t\t\tsetTimeout(() => attemptRecovery(attempt + 1), delay);\n\t\t\t});\n\t\t};\n\t\tattemptRecovery(1);\n\t}\n\t/**\n\t* Queries the remote GraphQL endpoint for sync envelopes.\n\t*/\n\tasync pollSyncEnvelopes(ackOrdinal, latestOrdinal) {\n\t\tconst query = `\n query PollSyncEnvelopes($channelId: String!, $outboxAck: Int!, $outboxLatest: Int!) {\n pollSyncEnvelopes(channelId: $channelId, outboxAck: $outboxAck, outboxLatest: $outboxLatest) {\n envelopes {\n type\n channelMeta {\n id\n }\n operations {\n operation {\n index\n timestampUtcMs\n hash\n skip\n error\n id\n action {\n id\n type\n timestampUtcMs\n input\n scope\n attachments {\n data\n mimeType\n hash\n extension\n fileName\n }\n context {\n signer {\n user {\n address\n networkId\n chainId\n }\n app {\n name\n key\n }\n signatures\n }\n }\n }\n }\n context {\n documentId\n documentType\n scope\n branch\n ordinal\n }\n }\n cursor {\n remoteName\n cursorOrdinal\n lastSyncedAtUtcMs\n }\n key\n dependsOn\n }\n ackOrdinal\n deadLetters {\n documentId\n error\n jobId\n branch\n scopes\n operationCount\n }\n }\n }\n `;\n\t\tconst variables = {\n\t\t\tchannelId: this.channelId,\n\t\t\toutboxAck: ackOrdinal,\n\t\t\toutboxLatest: latestOrdinal\n\t\t};\n\t\tconst response = await this.executeGraphQL(query, variables);\n\t\treturn {\n\t\t\tenvelopes: response.pollSyncEnvelopes.envelopes,\n\t\t\tackOrdinal: response.pollSyncEnvelopes.ackOrdinal,\n\t\t\tdeadLetters: response.pollSyncEnvelopes.deadLetters ?? []\n\t\t};\n\t}\n\t/**\n\t* Registers or updates this channel on the remote server via GraphQL mutation.\n\t* Returns the remote's ack ordinal so the client can trim its outbox.\n\t*/\n\tasync touchRemoteChannel() {\n\t\tlet sinceTimestampUtcMs = \"0\";\n\t\ttry {\n\t\t\tconst result = await this.operationIndex.getLatestTimestampForCollection(this.config.collectionId);\n\t\t\tif (result) sinceTimestampUtcMs = result;\n\t\t} catch {}\n\t\tconst mutation = `\n mutation TouchChannel($input: TouchChannelInput!) {\n touchChannel(input: $input) {\n success\n ackOrdinal\n }\n }\n `;\n\t\tconst variables = { input: {\n\t\t\tid: this.channelId,\n\t\t\tname: this.channelId,\n\t\t\tcollectionId: this.config.collectionId,\n\t\t\tfilter: {\n\t\t\t\tdocumentId: this.config.filter.documentId,\n\t\t\t\tscope: this.config.filter.scope,\n\t\t\t\tbranch: this.config.filter.branch\n\t\t\t},\n\t\t\tsinceTimestampUtcMs\n\t\t} };\n\t\tconst data = await this.executeGraphQL(mutation, variables);\n\t\tif (!data.touchChannel.success) throw new GraphQLRequestError(\"touchChannel returned success=false\", \"graphql\");\n\t\treturn { ackOrdinal: data.touchChannel.ackOrdinal };\n\t}\n\t/**\n\t* Fire-and-forget push with retry on recoverable errors.\n\t* On success, clears push blocked state. On recoverable error, blocks\n\t* further pushes and schedules a retry. On unrecoverable error, moves\n\t* ops to deadLetter.\n\t*/\n\tattemptPush(syncOps) {\n\t\tthis.isPushing = true;\n\t\tthis.pushSyncOperations(syncOps).then(() => {\n\t\t\tthis.isPushing = false;\n\t\t\tthis.pushBlocked = false;\n\t\t\tthis.pushFailureCount = 0;\n\t\t\tif (this.connectionState === \"reconnecting\" || this.connectionState === \"error\") this.transitionConnectionState(\"connected\");\n\t\t\tthis.drainOutbox();\n\t\t}).catch((error) => {\n\t\t\tthis.isPushing = false;\n\t\t\tthis.pendingDrain = false;\n\t\t\tif (this.isShutdown) return;\n\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\tif (this.classifyError(err) === \"recoverable\") {\n\t\t\t\tthis.pushFailureCount++;\n\t\t\t\tthis.pushBlocked = true;\n\t\t\t\tthis.logger.error(\"GqlChannel push failed (attempt @FailureCount), will retry: @Error\", this.pushFailureCount, err);\n\t\t\t\tthis.transitionConnectionState(\"reconnecting\");\n\t\t\t\tthis.schedulePushRetry();\n\t\t\t} else {\n\t\t\t\tconst channelError = new ChannelError(ChannelErrorSource.Outbox, err);\n\t\t\t\tfor (const syncOp of syncOps) syncOp.failed(channelError);\n\t\t\t\tthis.deadLetter.add(...syncOps);\n\t\t\t\tthis.outbox.remove(...syncOps);\n\t\t\t\tthis.transitionConnectionState(\"error\");\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Schedules a retry of all current outbox items using exponential backoff.\n\t*/\n\tschedulePushRetry() {\n\t\tif (this.pushRetryTimer) return;\n\t\tconst delay = calculateBackoffDelay(this.pushFailureCount, this.config.retryBaseDelayMs, this.config.retryMaxDelayMs, Math.random());\n\t\tthis.pushRetryTimer = setTimeout(() => {\n\t\t\tthis.pushRetryTimer = null;\n\t\t\tif (this.isShutdown) return;\n\t\t\tconst allItems = this.outbox.items;\n\t\t\tif (allItems.length === 0) {\n\t\t\t\tthis.pushBlocked = false;\n\t\t\t\tthis.pushFailureCount = 0;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.attemptPush([...allItems]);\n\t\t}, delay);\n\t}\n\t/**\n\t* Drains pending outbox items that arrived while a push was in-flight.\n\t* Server-side action.id dedup handles any overlap with the previous push.\n\t*/\n\tdrainOutbox() {\n\t\tif (!this.pendingDrain) return;\n\t\tthis.pendingDrain = false;\n\t\tif (this.isShutdown) return;\n\t\tconst items = this.outbox.items;\n\t\tif (items.length === 0) return;\n\t\tthis.attemptPush([...items]);\n\t}\n\t/**\n\t* Classifies an error as recoverable or unrecoverable based on its type.\n\t* Recoverable errors are transient and worth retrying (network, 5xx, parse).\n\t* Unrecoverable errors will not self-heal (auth, client errors, GraphQL rejections).\n\t*/\n\tclassifyError(error) {\n\t\tif (!(error instanceof GraphQLRequestError)) return \"recoverable\";\n\t\tswitch (error.category) {\n\t\t\tcase \"network\": return \"recoverable\";\n\t\t\tcase \"http\":\n\t\t\t\tif (error.statusCode !== void 0 && error.statusCode >= 500) return \"recoverable\";\n\t\t\t\treturn \"unrecoverable\";\n\t\t\tcase \"parse\": return \"recoverable\";\n\t\t\tcase \"graphql\": return \"unrecoverable\";\n\t\t\tcase \"missing-data\": return \"unrecoverable\";\n\t\t}\n\t}\n\t/**\n\t* Pushes multiple sync operations to the remote via a single GraphQL mutation.\n\t* Creates one SyncEnvelope per SyncOperation with key/dependsOn for batch ordering.\n\t*/\n\tasync pushSyncOperations(syncOps) {\n\t\tfor (const syncOp of syncOps) syncOp.started();\n\t\tconst jobIdToKeys = /* @__PURE__ */ new Map();\n\t\tconst envelopes = [];\n\t\tfor (let i = 0; i < syncOps.length; i++) {\n\t\t\tconst syncOp = syncOps[i];\n\t\t\tconst key = String(i);\n\t\t\tif (syncOp.jobId) {\n\t\t\t\tif (!jobIdToKeys.has(syncOp.jobId)) jobIdToKeys.set(syncOp.jobId, []);\n\t\t\t\tjobIdToKeys.get(syncOp.jobId).push(key);\n\t\t\t}\n\t\t\tconst dependsOn = [];\n\t\t\tfor (const dep of syncOp.jobDependencies) {\n\t\t\t\tconst depKeys = jobIdToKeys.get(dep);\n\t\t\t\tif (depKeys) dependsOn.push(...depKeys);\n\t\t\t}\n\t\t\tthis.logger.debug(\"[PUSH]: @Operations\", syncOp.operations.map((op) => `(${op.context.documentId}, ${op.context.branch}, ${op.context.scope}, ${op.operation.index})`));\n\t\t\tenvelopes.push({\n\t\t\t\ttype: \"operations\",\n\t\t\t\tchannelMeta: { id: this.channelId },\n\t\t\t\toperations: syncOp.operations,\n\t\t\t\tkey,\n\t\t\t\tdependsOn\n\t\t\t});\n\t\t}\n\t\tconst mutation = `\n mutation PushSyncEnvelopes($envelopes: [SyncEnvelopeInput!]!) {\n pushSyncEnvelopes(envelopes: $envelopes)\n }\n `;\n\t\tconst variables = { envelopes: envelopes.map((e) => serializeEnvelope(e)) };\n\t\tawait this.executeGraphQL(mutation, variables);\n\t}\n\t/**\n\t* Gets the authorization header value using jwtHandler.\n\t*/\n\tasync getAuthorizationHeader() {\n\t\tif (!this.config.jwtHandler) return;\n\t\ttry {\n\t\t\tconst token = await this.config.jwtHandler(this.config.url);\n\t\t\tif (token) return `Bearer ${token}`;\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"JWT handler failed: @Error\", error);\n\t\t}\n\t}\n\t/**\n\t* Executes a GraphQL query or mutation against the remote endpoint.\n\t*/\n\tasync executeGraphQL(query, variables) {\n\t\tconst headers = { \"Content-Type\": \"application/json\" };\n\t\tconst authHeader = await this.getAuthorizationHeader();\n\t\tif (authHeader) headers[\"Authorization\"] = authHeader;\n\t\tconst operationName = query.match(/(?:query|mutation)\\s+(\\w+)/)?.[1] ?? \"unknown\";\n\t\tthis.logger.verbose(\"GQL request @channelId @operation @url vars=@variables\", this.channelId, operationName, this.config.url, JSON.stringify(variables));\n\t\tconst fetchFn = this.config.fetchFn ?? fetch;\n\t\tlet response;\n\t\ttry {\n\t\t\tresponse = await fetchFn(this.config.url, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders,\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tquery,\n\t\t\t\t\tvariables\n\t\t\t\t}),\n\t\t\t\tsignal: this.abortController.signal\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthrow new GraphQLRequestError(`GraphQL request failed: ${error instanceof Error ? error.message : String(error)}`, \"network\");\n\t\t}\n\t\tif (!response.ok) throw new GraphQLRequestError(`GraphQL request failed: ${response.status} ${response.statusText}`, \"http\", response.status);\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await response.json();\n\t\t} catch (error) {\n\t\t\tthrow new GraphQLRequestError(`Failed to parse GraphQL response: ${error instanceof Error ? error.message : String(error)}`, \"parse\");\n\t\t}\n\t\tthis.logger.verbose(\"GQL response @channelId @operation status=@status data=@data errors=@errors\", this.channelId, operationName, response.status, JSON.stringify(result.data), result.errors ? JSON.stringify(result.errors) : \"none\");\n\t\tif (result.errors) throw new GraphQLRequestError(`GraphQL errors: ${JSON.stringify(result.errors, null, 2)}`, \"graphql\");\n\t\tif (!result.data) throw new GraphQLRequestError(\"GraphQL response missing data field\", \"missing-data\");\n\t\treturn result.data;\n\t}\n\tget poller() {\n\t\treturn this.pollTimer;\n\t}\n};\n//#endregion\n//#region src/sync/channels/gql-request-channel-factory.ts\n/**\n* Factory for creating GqlRequestChannel instances.\n*\n* Extracts GraphQL-specific configuration from ChannelConfig.parameters and\n* instantiates GqlRequestChannel instances for network-based synchronization.\n*\n* The optional jwtHandler enables dynamic JWT token generation per-request,\n* which is useful for short-lived tokens with audience-specific claims.\n*/\nvar GqlRequestChannelFactory = class {\n\tlogger;\n\tjwtHandler;\n\tqueue;\n\tconstructor(logger, jwtHandler, queue) {\n\t\tthis.logger = logger;\n\t\tthis.jwtHandler = jwtHandler;\n\t\tthis.queue = queue;\n\t}\n\t/**\n\t* Creates a new GqlRequestChannel instance with the given configuration.\n\t* See GqlChannelConfig for the expected parameters.\n\t*\n\t* @param config - Channel configuration including type and parameters\n\t* @param cursorStorage - Storage for persisting synchronization cursors\n\t* @param operationIndex - Operation index for querying timestamps\n\t* @returns A new GqlRequestChannel instance\n\t*/\n\tinstance(remoteId, remoteName, config, cursorStorage, collectionId, filter, operationIndex) {\n\t\tconst url = config.parameters.url;\n\t\tif (typeof url !== \"string\" || !url) throw new Error(\"GqlRequestChannelFactory requires \\\"url\\\" parameter in config.parameters\");\n\t\tconst gqlConfig = {\n\t\t\turl,\n\t\t\tcollectionId,\n\t\t\tfilter,\n\t\t\tjwtHandler: this.jwtHandler,\n\t\t\tretryBaseDelayMs: 1e3,\n\t\t\tretryMaxDelayMs: 3e5\n\t\t};\n\t\tlet pollIntervalMs = 2e3;\n\t\tif (config.parameters.pollIntervalMs !== void 0) {\n\t\t\tif (typeof config.parameters.pollIntervalMs !== \"number\") throw new Error(\"\\\"pollIntervalMs\\\" parameter must be a number\");\n\t\t\tpollIntervalMs = config.parameters.pollIntervalMs;\n\t\t}\n\t\tlet retryBaseDelayMs;\n\t\tif (config.parameters.retryBaseDelayMs !== void 0) {\n\t\t\tif (typeof config.parameters.retryBaseDelayMs !== \"number\") throw new Error(\"\\\"retryBaseDelayMs\\\" parameter must be a number\");\n\t\t\tretryBaseDelayMs = config.parameters.retryBaseDelayMs;\n\t\t}\n\t\tlet retryMaxDelayMs;\n\t\tif (config.parameters.retryMaxDelayMs !== void 0) {\n\t\t\tif (typeof config.parameters.retryMaxDelayMs !== \"number\") throw new Error(\"\\\"retryMaxDelayMs\\\" parameter must be a number\");\n\t\t\tretryMaxDelayMs = config.parameters.retryMaxDelayMs;\n\t\t}\n\t\tif (config.parameters.fetchFn !== void 0) {\n\t\t\tif (typeof config.parameters.fetchFn !== \"function\") throw new Error(\"\\\"fetchFn\\\" parameter must be a function\");\n\t\t\tgqlConfig.fetchFn = config.parameters.fetchFn;\n\t\t}\n\t\tif (retryBaseDelayMs !== void 0) gqlConfig.retryBaseDelayMs = retryBaseDelayMs;\n\t\tif (retryMaxDelayMs !== void 0) gqlConfig.retryMaxDelayMs = retryMaxDelayMs;\n\t\tlet maxQueueDepth;\n\t\tif (config.parameters.maxQueueDepth !== void 0) {\n\t\t\tif (typeof config.parameters.maxQueueDepth !== \"number\") throw new Error(\"\\\"maxQueueDepth\\\" parameter must be a number\");\n\t\t\tmaxQueueDepth = config.parameters.maxQueueDepth;\n\t\t}\n\t\tlet backpressureCheckIntervalMs;\n\t\tif (config.parameters.backpressureCheckIntervalMs !== void 0) {\n\t\t\tif (typeof config.parameters.backpressureCheckIntervalMs !== \"number\") throw new Error(\"\\\"backpressureCheckIntervalMs\\\" parameter must be a number\");\n\t\t\tbackpressureCheckIntervalMs = config.parameters.backpressureCheckIntervalMs;\n\t\t}\n\t\tconst pollTimer = new IntervalPollTimer(this.queue, {\n\t\t\tintervalMs: pollIntervalMs,\n\t\t\t...retryBaseDelayMs !== void 0 && { retryBaseDelayMs },\n\t\t\t...retryMaxDelayMs !== void 0 && { retryMaxDelayMs },\n\t\t\t...maxQueueDepth !== void 0 && { maxQueueDepth },\n\t\t\t...backpressureCheckIntervalMs !== void 0 && { backpressureCheckIntervalMs }\n\t\t});\n\t\treturn new GqlRequestChannel(this.logger, remoteId, remoteName, cursorStorage, gqlConfig, operationIndex, pollTimer);\n\t}\n};\n//#endregion\n//#region src/sync/channels/gql-res-channel.ts\n/**\n* This class is used server-side to accumulate inbox + outbox operations.\n*\n* In general, the resolvers are responsible for updating mailboxes.\n*/\nvar GqlResponseChannel = class {\n\tinbox;\n\toutbox;\n\tdeadLetter;\n\tchannelId;\n\tremoteName;\n\tcursorStorage;\n\tisShutdown;\n\tlastPersistedInboxOrdinal = 0;\n\tlastPersistedOutboxOrdinal = 0;\n\tconnectionState = \"connecting\";\n\tconnectionStateCallbacks = /* @__PURE__ */ new Set();\n\tconstructor(logger, channelId, remoteName, cursorStorage) {\n\t\tthis.logger = logger;\n\t\tthis.channelId = channelId;\n\t\tthis.remoteName = remoteName;\n\t\tthis.cursorStorage = cursorStorage;\n\t\tthis.isShutdown = false;\n\t\tthis.inbox = new Mailbox();\n\t\tthis.outbox = new Mailbox();\n\t\tthis.deadLetter = new Mailbox();\n\t\tthis.outbox.onRemoved((syncOps) => {\n\t\t\tconst maxOrdinal = getLatestAppliedOrdinal(syncOps);\n\t\t\tif (maxOrdinal > this.lastPersistedOutboxOrdinal) {\n\t\t\t\tthis.lastPersistedOutboxOrdinal = maxOrdinal;\n\t\t\t\tthis.cursorStorage.upsert({\n\t\t\t\t\tremoteName: this.remoteName,\n\t\t\t\t\tcursorType: \"outbox\",\n\t\t\t\t\tcursorOrdinal: maxOrdinal,\n\t\t\t\t\tlastSyncedAtUtcMs: Date.now()\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tthis.logger.error(\"Failed to update outbox cursor for @ChannelId! This means that future application runs may resend duplicate operations. This is recoverable (with deduplication protection), but not-optimal: @Error\", this.channelId, error);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tthis.inbox.onRemoved((syncOps) => {\n\t\t\tconst maxOrdinal = getLatestAppliedOrdinal(syncOps);\n\t\t\tif (maxOrdinal > this.lastPersistedInboxOrdinal) {\n\t\t\t\tthis.lastPersistedInboxOrdinal = maxOrdinal;\n\t\t\t\tthis.cursorStorage.upsert({\n\t\t\t\t\tremoteName: this.remoteName,\n\t\t\t\t\tcursorType: \"inbox\",\n\t\t\t\t\tcursorOrdinal: maxOrdinal,\n\t\t\t\t\tlastSyncedAtUtcMs: Date.now()\n\t\t\t\t}).catch((error) => {\n\t\t\t\t\tthis.logger.error(\"Failed to update inbox cursor for @ChannelId! This is unlikely to cause a problem, but not-optimal: @Error\", this.channelId, error);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tshutdown() {\n\t\tthis.isShutdown = true;\n\t\tthis.transitionConnectionState(\"disconnected\");\n\t\treturn Promise.resolve();\n\t}\n\tgetConnectionState() {\n\t\treturn {\n\t\t\tstate: this.connectionState,\n\t\t\tfailureCount: 0,\n\t\t\tlastSuccessUtcMs: 0,\n\t\t\tlastFailureUtcMs: 0,\n\t\t\tpushBlocked: false,\n\t\t\tpushFailureCount: 0\n\t\t};\n\t}\n\tonConnectionStateChange(callback) {\n\t\tthis.connectionStateCallbacks.add(callback);\n\t\treturn () => {\n\t\t\tthis.connectionStateCallbacks.delete(callback);\n\t\t};\n\t}\n\ttransitionConnectionState(next) {\n\t\tif (this.connectionState === next) return;\n\t\tthis.connectionState = next;\n\t\tconst snapshot = this.getConnectionState();\n\t\tfor (const callback of this.connectionStateCallbacks) try {\n\t\t\tcallback(snapshot);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Connection state change callback error: @Error\", error);\n\t\t}\n\t}\n\tasync init() {\n\t\tconst cursors = await this.cursorStorage.list(this.remoteName);\n\t\tconst inboxOrdinal = cursors.find((c) => c.cursorType === \"inbox\")?.cursorOrdinal ?? 0;\n\t\tconst outboxOrdinal = cursors.find((c) => c.cursorType === \"outbox\")?.cursorOrdinal ?? 0;\n\t\tthis.inbox.init(inboxOrdinal);\n\t\tthis.outbox.init(outboxOrdinal);\n\t\tthis.lastPersistedInboxOrdinal = inboxOrdinal;\n\t\tthis.lastPersistedOutboxOrdinal = outboxOrdinal;\n\t\tthis.transitionConnectionState(\"connected\");\n\t}\n};\n//#endregion\n//#region src/sync/channels/gql-response-channel-factory.ts\n/**\n* Factory for creating GqlResponseChannel instances.\n*/\nvar GqlResponseChannelFactory = class {\n\tlogger;\n\tconstructor(logger) {\n\t\tthis.logger = logger;\n\t}\n\tinstance(remoteId, remoteName, config, cursorStorage) {\n\t\treturn new GqlResponseChannel(this.logger, remoteId, remoteName, cursorStorage);\n\t}\n};\n//#endregion\n//#region src/storage/kysely/sync-cursor-storage.ts\nfunction rowToRemoteCursor(row) {\n\treturn {\n\t\tremoteName: row.remote_name,\n\t\tcursorType: row.cursor_type,\n\t\tcursorOrdinal: Number(row.cursor_ordinal),\n\t\tlastSyncedAtUtcMs: row.last_synced_at_utc_ms ? new Date(row.last_synced_at_utc_ms).getTime() : void 0\n\t};\n}\nfunction remoteCursorToRow(cursor) {\n\treturn {\n\t\tremote_name: cursor.remoteName,\n\t\tcursor_type: cursor.cursorType,\n\t\tcursor_ordinal: BigInt(cursor.cursorOrdinal),\n\t\tlast_synced_at_utc_ms: cursor.lastSyncedAtUtcMs ? new Date(cursor.lastSyncedAtUtcMs).toISOString() : null\n\t};\n}\nvar KyselySyncCursorStorage = class {\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tasync list(remoteName, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst rows = await this.db.selectFrom(\"sync_cursors\").selectAll().where(\"remote_name\", \"=\", remoteName).execute();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn rows.map(rowToRemoteCursor);\n\t}\n\tasync get(remoteName, cursorType, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst row = await this.db.selectFrom(\"sync_cursors\").selectAll().where(\"remote_name\", \"=\", remoteName).where(\"cursor_type\", \"=\", cursorType).executeTakeFirst();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tif (!row) return {\n\t\t\tremoteName,\n\t\t\tcursorType,\n\t\t\tcursorOrdinal: 0\n\t\t};\n\t\treturn rowToRemoteCursor(row);\n\t}\n\tasync upsert(cursor, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tconst insertable = remoteCursorToRow(cursor);\n\t\t\tawait trx.insertInto(\"sync_cursors\").values(insertable).onConflict((oc) => oc.columns([\"remote_name\", \"cursor_type\"]).doUpdateSet({\n\t\t\t\t...insertable,\n\t\t\t\tupdated_at: sql`NOW()`\n\t\t\t})).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n\tasync remove(remoteName, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tawait trx.deleteFrom(\"sync_cursors\").where(\"remote_name\", \"=\", remoteName).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n};\n//#endregion\n//#region src/storage/kysely/sync-dead-letter-storage.ts\nfunction rowToDeadLetterRecord(row) {\n\treturn {\n\t\tid: row.id,\n\t\tjobId: row.job_id,\n\t\tjobDependencies: row.job_dependencies,\n\t\tremoteName: row.remote_name,\n\t\tdocumentId: row.document_id,\n\t\tscopes: row.scopes,\n\t\tbranch: row.branch,\n\t\toperations: row.operations,\n\t\terrorSource: row.error_source,\n\t\terrorMessage: row.error_message\n\t};\n}\nfunction deadLetterRecordToRow(record) {\n\treturn {\n\t\tid: record.id,\n\t\tjob_id: record.jobId,\n\t\tjob_dependencies: JSON.stringify(record.jobDependencies),\n\t\tremote_name: record.remoteName,\n\t\tdocument_id: record.documentId,\n\t\tscopes: JSON.stringify(record.scopes),\n\t\tbranch: record.branch,\n\t\toperations: JSON.stringify(record.operations),\n\t\terror_source: record.errorSource,\n\t\terror_message: record.errorMessage\n\t};\n}\n/**\n* PGlite/Kysely-backed implementation of {@link ISyncDeadLetterStorage}.\n*/\nvar KyselySyncDeadLetterStorage = class {\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tasync list(remoteName, paging, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) : 0;\n\t\tconst limit = paging?.limit || 100;\n\t\tconst rows = await this.db.selectFrom(\"sync_dead_letters\").selectAll().where(\"remote_name\", \"=\", remoteName).orderBy(\"ordinal\", \"desc\").offset(startIndex).limit(limit + 1).execute();\n\t\tlet hasMore = false;\n\t\tlet items = rows;\n\t\tif (paging?.limit && rows.length > limit) {\n\t\t\thasMore = true;\n\t\t\titems = rows.slice(0, limit);\n\t\t}\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\tconst cursor = paging?.cursor || \"0\";\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn {\n\t\t\tresults: items.map(rowToDeadLetterRecord),\n\t\t\toptions: {\n\t\t\t\tcursor,\n\t\t\t\tlimit\n\t\t\t},\n\t\t\tnextCursor\n\t\t};\n\t}\n\tasync add(deadLetter, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tconst insertable = deadLetterRecordToRow(deadLetter);\n\t\t\tawait trx.insertInto(\"sync_dead_letters\").values(insertable).onConflict((oc) => oc.column(\"id\").doNothing()).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n\tasync remove(id, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tawait trx.deleteFrom(\"sync_dead_letters\").where(\"id\", \"=\", id).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n\tasync removeByRemote(remoteName, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tawait trx.deleteFrom(\"sync_dead_letters\").where(\"remote_name\", \"=\", remoteName).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n\tasync listQuarantinedDocumentIds(signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst rows = await this.db.selectFrom(\"sync_dead_letters\").select(\"document_id\").distinct().execute();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn rows.map((row) => row.document_id);\n\t}\n};\n//#endregion\n//#region src/storage/kysely/sync-remote-storage.ts\nfunction rowToRemoteRecord(row) {\n\treturn {\n\t\tid: row.channel_id,\n\t\tname: row.name,\n\t\tcollectionId: row.collection_id,\n\t\tchannelConfig: {\n\t\t\ttype: row.channel_type,\n\t\t\tparameters: row.channel_parameters ?? {}\n\t\t},\n\t\tfilter: {\n\t\t\tdocumentId: row.filter_document_ids ?? [],\n\t\t\tscope: row.filter_scopes ?? [],\n\t\t\tbranch: row.filter_branch\n\t\t},\n\t\toptions: { sinceTimestampUtcMs: \"0\" },\n\t\tstatus: {\n\t\t\tpush: {\n\t\t\t\tstate: row.push_state,\n\t\t\t\tlastSuccessUtcMs: row.push_last_success_utc_ms ? new Date(row.push_last_success_utc_ms).getTime() : void 0,\n\t\t\t\tlastFailureUtcMs: row.push_last_failure_utc_ms ? new Date(row.push_last_failure_utc_ms).getTime() : void 0,\n\t\t\t\tfailureCount: row.push_failure_count\n\t\t\t},\n\t\t\tpull: {\n\t\t\t\tstate: row.pull_state,\n\t\t\t\tlastSuccessUtcMs: row.pull_last_success_utc_ms ? new Date(row.pull_last_success_utc_ms).getTime() : void 0,\n\t\t\t\tlastFailureUtcMs: row.pull_last_failure_utc_ms ? new Date(row.pull_last_failure_utc_ms).getTime() : void 0,\n\t\t\t\tfailureCount: row.pull_failure_count\n\t\t\t}\n\t\t}\n\t};\n}\nfunction remoteRecordToRow(remote) {\n\treturn {\n\t\tname: remote.name,\n\t\tcollection_id: remote.collectionId,\n\t\tchannel_type: remote.channelConfig.type,\n\t\tchannel_id: remote.id,\n\t\tremote_name: remote.name,\n\t\tchannel_parameters: remote.channelConfig.parameters,\n\t\tfilter_document_ids: remote.filter.documentId.length > 0 ? remote.filter.documentId : null,\n\t\tfilter_scopes: remote.filter.scope.length > 0 ? remote.filter.scope : null,\n\t\tfilter_branch: remote.filter.branch,\n\t\tpush_state: remote.status.push.state,\n\t\tpush_last_success_utc_ms: remote.status.push.lastSuccessUtcMs ? new Date(remote.status.push.lastSuccessUtcMs).toISOString() : null,\n\t\tpush_last_failure_utc_ms: remote.status.push.lastFailureUtcMs ? new Date(remote.status.push.lastFailureUtcMs).toISOString() : null,\n\t\tpush_failure_count: remote.status.push.failureCount,\n\t\tpull_state: remote.status.pull.state,\n\t\tpull_last_success_utc_ms: remote.status.pull.lastSuccessUtcMs ? new Date(remote.status.pull.lastSuccessUtcMs).toISOString() : null,\n\t\tpull_last_failure_utc_ms: remote.status.pull.lastFailureUtcMs ? new Date(remote.status.pull.lastFailureUtcMs).toISOString() : null,\n\t\tpull_failure_count: remote.status.pull.failureCount\n\t};\n}\nvar KyselySyncRemoteStorage = class {\n\tconstructor(db) {\n\t\tthis.db = db;\n\t}\n\tasync list(signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst rows = await this.db.selectFrom(\"sync_remotes\").selectAll().execute();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\treturn rows.map(rowToRemoteRecord);\n\t}\n\tasync get(name, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tconst row = await this.db.selectFrom(\"sync_remotes\").selectAll().where(\"name\", \"=\", name).executeTakeFirst();\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tif (!row) throw new Error(`Remote not found: ${name}`);\n\t\treturn rowToRemoteRecord(row);\n\t}\n\tasync upsert(remote, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tconst insertable = remoteRecordToRow(remote);\n\t\t\tawait trx.insertInto(\"sync_remotes\").values(insertable).onConflict((oc) => oc.column(\"name\").doUpdateSet({\n\t\t\t\t...insertable,\n\t\t\t\tupdated_at: sql`NOW()`\n\t\t\t})).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n\tasync remove(name, signal) {\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\tawait this.db.transaction().execute(async (trx) => {\n\t\t\tawait trx.deleteFrom(\"sync_remotes\").where(\"name\", \"=\", name).execute();\n\t\t});\n\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t}\n};\n//#endregion\n//#region src/sync/batch-aggregator.ts\nvar BatchAggregator = class {\n\tlogger;\n\tonBatchReady;\n\tqueue = [];\n\tprocessing = false;\n\tpendingBatches = /* @__PURE__ */ new Map();\n\tconstructor(logger, onBatchReady) {\n\t\tthis.logger = logger;\n\t\tthis.onBatchReady = onBatchReady;\n\t}\n\tasync enqueueWriteReady(event) {\n\t\tthis.queue.push(event);\n\t\tawait this.processQueue();\n\t}\n\tasync handleJobFailed(event) {\n\t\tconst batchId = event.job?.meta.batchId;\n\t\tif (!batchId) return;\n\t\tconst pending = this.pendingBatches.get(batchId);\n\t\tif (!pending) return;\n\t\tthis.pendingBatches.delete(batchId);\n\t\tif (pending.events.length > 0) await this.onBatchReady(this.prepareBatch(pending.events));\n\t}\n\tclear() {\n\t\tthis.queue = [];\n\t\tthis.pendingBatches.clear();\n\t}\n\tasync processQueue() {\n\t\tif (this.processing) return;\n\t\tthis.processing = true;\n\t\ttry {\n\t\t\twhile (this.queue.length > 0) {\n\t\t\t\tconst event = this.queue.shift();\n\t\t\t\ttry {\n\t\t\t\t\tawait this.handleWriteReady(event);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\t\tthis.logger.error(\"Failed to process write-ready event (@jobId, @error)\", event.jobId, err.message);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tthis.processing = false;\n\t\t}\n\t}\n\tasync handleWriteReady(event) {\n\t\tconst { batchId, batchJobIds } = event.jobMeta;\n\t\tif (batchJobIds.length <= 1) {\n\t\t\tawait this.onBatchReady(this.prepareBatch([event]));\n\t\t\treturn;\n\t\t}\n\t\tlet pending = this.pendingBatches.get(batchId);\n\t\tif (!pending) {\n\t\t\tpending = {\n\t\t\t\texpectedJobIds: new Set(batchJobIds),\n\t\t\t\tarrivedJobIds: /* @__PURE__ */ new Set(),\n\t\t\t\tevents: []\n\t\t\t};\n\t\t\tthis.pendingBatches.set(batchId, pending);\n\t\t}\n\t\tpending.arrivedJobIds.add(event.jobId);\n\t\tpending.events.push(event);\n\t\tif (pending.arrivedJobIds.size >= pending.expectedJobIds.size) {\n\t\t\tthis.pendingBatches.delete(batchId);\n\t\t\tawait this.onBatchReady(this.prepareBatch(pending.events));\n\t\t}\n\t}\n\tprepareBatch(events) {\n\t\tconst collectionMemberships = mergeCollectionMemberships(events);\n\t\tconst isBatch = events.length > 1;\n\t\tconst priorJobIds = [];\n\t\tconst entries = [];\n\t\tfor (const event of events) {\n\t\t\tentries.push({\n\t\t\t\tevent,\n\t\t\t\tjobDependencies: isBatch ? [...priorJobIds] : []\n\t\t\t});\n\t\t\tif (isBatch && event.jobId) priorJobIds.push(event.jobId);\n\t\t}\n\t\treturn {\n\t\t\tcollectionMemberships,\n\t\t\tentries\n\t\t};\n\t}\n};\n//#endregion\n//#region src/sync/sync-awaiter.ts\n/**\n* Provides a promise-based interface for waiting on sync completion.\n* Subscribes to sync events at construction and tracks completed sync results\n* to provide a fast path for jobs that have already synced.\n*/\nvar SyncAwaiter = class {\n\tcompletedResults = /* @__PURE__ */ new Map();\n\tpendingWaiters = /* @__PURE__ */ new Map();\n\tunsubscribers = [];\n\tisShutdown = false;\n\tconstructor(eventBus) {\n\t\tthis.eventBus = eventBus;\n\t\tthis.subscribeToEvents();\n\t}\n\t/**\n\t* Waits for sync operations for a job to complete.\n\t* Resolves when SYNC_SUCCEEDED is emitted.\n\t* Rejects when SYNC_FAILED is emitted.\n\t*\n\t* @param jobId - The job id to wait for\n\t* @param signal - Optional abort signal\n\t* @returns The sync result\n\t*/\n\twaitForSync(jobId, signal) {\n\t\tif (signal?.aborted) return Promise.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\tif (this.isShutdown) return Promise.reject(/* @__PURE__ */ new Error(\"SyncAwaiter is shutdown\"));\n\t\tconst completedResult = this.completedResults.get(jobId);\n\t\tif (completedResult) return Promise.resolve(completedResult);\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst waiter = {\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t\tsignal\n\t\t\t};\n\t\t\tconst existingWaiters = this.pendingWaiters.get(jobId) || [];\n\t\t\texistingWaiters.push(waiter);\n\t\t\tthis.pendingWaiters.set(jobId, existingWaiters);\n\t\t\tif (signal) {\n\t\t\t\tconst abortHandler = () => {\n\t\t\t\t\tconst waiters = this.pendingWaiters.get(jobId);\n\t\t\t\t\tif (waiters) {\n\t\t\t\t\t\tconst index = waiters.indexOf(waiter);\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\twaiters.splice(index, 1);\n\t\t\t\t\t\t\tif (waiters.length === 0) this.pendingWaiters.delete(jobId);\n\t\t\t\t\t\t\twaiter.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tsignal.addEventListener(\"abort\", abortHandler, { once: true });\n\t\t\t}\n\t\t});\n\t}\n\t/**\n\t* Shuts down the sync awaiter. This will synchronously reject all pending waiters.\n\t*/\n\tshutdown() {\n\t\tthis.isShutdown = true;\n\t\tfor (const unsubscribe of this.unsubscribers) unsubscribe();\n\t\tthis.unsubscribers.length = 0;\n\t\tfor (const [, waiters] of this.pendingWaiters) for (const waiter of waiters) waiter.reject(/* @__PURE__ */ new Error(\"SyncAwaiter shutdown\"));\n\t\tthis.pendingWaiters.clear();\n\t}\n\tsubscribeToEvents() {\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(SyncEventTypes.SYNC_SUCCEEDED, (_type, event) => {\n\t\t\tthis.handleSyncSucceeded(event);\n\t\t}));\n\t\tthis.unsubscribers.push(this.eventBus.subscribe(SyncEventTypes.SYNC_FAILED, (_type, event) => {\n\t\t\tthis.handleSyncFailed(event);\n\t\t}));\n\t}\n\thandleSyncSucceeded(event) {\n\t\tconst result = {\n\t\t\tjobId: event.jobId,\n\t\t\tstatus: \"succeeded\",\n\t\t\tsyncOperationCount: event.syncOperationCount,\n\t\t\tsuccessCount: event.syncOperationCount,\n\t\t\tfailureCount: 0,\n\t\t\terrors: []\n\t\t};\n\t\tthis.completedResults.set(event.jobId, result);\n\t\tthis.resolveWaiters(event.jobId, result);\n\t}\n\thandleSyncFailed(event) {\n\t\tconst result = {\n\t\t\tjobId: event.jobId,\n\t\t\tstatus: \"failed\",\n\t\t\tsyncOperationCount: event.successCount + event.failureCount,\n\t\t\tsuccessCount: event.successCount,\n\t\t\tfailureCount: event.failureCount,\n\t\t\terrors: event.errors\n\t\t};\n\t\tthis.completedResults.set(event.jobId, result);\n\t\tthis.resolveWaiters(event.jobId, result);\n\t}\n\tresolveWaiters(jobId, result) {\n\t\tconst waiters = this.pendingWaiters.get(jobId);\n\t\tif (!waiters || waiters.length === 0) return;\n\t\tthis.pendingWaiters.delete(jobId);\n\t\tfor (const waiter of waiters) if (waiter.signal?.aborted) waiter.reject(/* @__PURE__ */ new Error(\"Operation aborted\"));\n\t\telse waiter.resolve(result);\n\t}\n};\n//#endregion\n//#region src/sync/sync-status-tracker.ts\nlet SyncStatus = /* @__PURE__ */ function(SyncStatus) {\n\tSyncStatus[\"Synced\"] = \"SYNCED\";\n\tSyncStatus[\"Outgoing\"] = \"OUTGOING\";\n\tSyncStatus[\"Incoming\"] = \"INCOMING\";\n\tSyncStatus[\"OutgoingAndIncoming\"] = \"OUTGOING_AND_INCOMING\";\n\tSyncStatus[\"Error\"] = \"ERROR\";\n\treturn SyncStatus;\n}({});\nvar SyncStatusTracker = class {\n\tremotes = /* @__PURE__ */ new Map();\n\tseen = /* @__PURE__ */ new Set();\n\tcallbacks = /* @__PURE__ */ new Set();\n\tgetStatus(documentId) {\n\t\tif (!this.seen.has(documentId)) return;\n\t\tlet totalInbox = 0;\n\t\tlet totalOutbox = 0;\n\t\tlet totalErrors = 0;\n\t\tfor (const documents of this.remotes.values()) {\n\t\t\tconst counts = documents.get(documentId);\n\t\t\tif (counts) {\n\t\t\t\ttotalInbox += counts.inboxCount;\n\t\t\t\ttotalOutbox += counts.outboxCount;\n\t\t\t\ttotalErrors += counts.errorCount;\n\t\t\t}\n\t\t}\n\t\treturn deriveStatus(totalInbox, totalOutbox, totalErrors);\n\t}\n\tonChange(callback) {\n\t\tthis.callbacks.add(callback);\n\t\treturn () => {\n\t\t\tthis.callbacks.delete(callback);\n\t\t};\n\t}\n\ttrackRemote(remoteName, channel) {\n\t\tthis.remotes.set(remoteName, /* @__PURE__ */ new Map());\n\t\tchannel.inbox.onAdded((syncOps) => this.handleAdded(remoteName, \"inbox\", syncOps));\n\t\tchannel.inbox.onRemoved((syncOps) => this.handleRemoved(remoteName, \"inbox\", syncOps));\n\t\tchannel.outbox.onAdded((syncOps) => this.handleAdded(remoteName, \"outbox\", syncOps));\n\t\tchannel.outbox.onRemoved((syncOps) => this.handleRemoved(remoteName, \"outbox\", syncOps));\n\t\tchannel.deadLetter.onAdded((syncOps) => this.handleAdded(remoteName, \"deadLetter\", syncOps));\n\t}\n\tuntrackRemote(remoteName) {\n\t\tconst documents = this.remotes.get(remoteName);\n\t\tif (!documents) return;\n\t\tconst affectedDocumentIds = [...documents.keys()];\n\t\tthis.remotes.delete(remoteName);\n\t\tfor (const documentId of affectedDocumentIds) this.notifyChange(documentId);\n\t}\n\tclear() {\n\t\tthis.remotes.clear();\n\t\tthis.seen.clear();\n\t\tthis.callbacks.clear();\n\t}\n\thandleAdded(remoteName, mailboxType, syncOps) {\n\t\tconst changedDocuments = /* @__PURE__ */ new Set();\n\t\tfor (const syncOp of syncOps) {\n\t\t\tif (mailboxType === \"inbox\" && !syncOp.remoteName) continue;\n\t\t\tconst counts = this.getOrCreateCounts(remoteName, syncOp.documentId);\n\t\t\tthis.seen.add(syncOp.documentId);\n\t\t\tif (mailboxType === \"inbox\") counts.inboxCount++;\n\t\t\telse if (mailboxType === \"outbox\") counts.outboxCount++;\n\t\t\telse counts.errorCount++;\n\t\t\tchangedDocuments.add(syncOp.documentId);\n\t\t}\n\t\tfor (const documentId of changedDocuments) this.notifyChange(documentId);\n\t}\n\thandleRemoved(remoteName, mailboxType, syncOps) {\n\t\tconst changedDocuments = /* @__PURE__ */ new Set();\n\t\tfor (const syncOp of syncOps) {\n\t\t\tconst counts = this.getOrCreateCounts(remoteName, syncOp.documentId);\n\t\t\tif (mailboxType === \"inbox\") counts.inboxCount = Math.max(0, counts.inboxCount - 1);\n\t\t\telse if (mailboxType === \"outbox\") counts.outboxCount = Math.max(0, counts.outboxCount - 1);\n\t\t\tchangedDocuments.add(syncOp.documentId);\n\t\t}\n\t\tfor (const documentId of changedDocuments) this.notifyChange(documentId);\n\t}\n\tgetOrCreateCounts(remoteName, documentId) {\n\t\tlet documents = this.remotes.get(remoteName);\n\t\tif (!documents) {\n\t\t\tdocuments = /* @__PURE__ */ new Map();\n\t\t\tthis.remotes.set(remoteName, documents);\n\t\t}\n\t\tlet counts = documents.get(documentId);\n\t\tif (!counts) {\n\t\t\tcounts = {\n\t\t\t\tinboxCount: 0,\n\t\t\t\toutboxCount: 0,\n\t\t\t\terrorCount: 0\n\t\t\t};\n\t\t\tdocuments.set(documentId, counts);\n\t\t}\n\t\treturn counts;\n\t}\n\tnotifyChange(documentId) {\n\t\tconst status = this.getStatus(documentId);\n\t\tif (status === void 0) return;\n\t\tfor (const callback of [...this.callbacks]) callback(documentId, status);\n\t}\n};\nfunction deriveStatus(inboxCount, outboxCount, errorCount) {\n\tif (errorCount > 0) return SyncStatus.Error;\n\tif (inboxCount > 0 && outboxCount > 0) return SyncStatus.OutgoingAndIncoming;\n\tif (inboxCount > 0) return SyncStatus.Incoming;\n\tif (outboxCount > 0) return SyncStatus.Outgoing;\n\treturn SyncStatus.Synced;\n}\n//#endregion\n//#region src/sync/sync-manager.ts\nvar SyncManager = class {\n\tlogger;\n\tremoteStorage;\n\tcursorStorage;\n\tdeadLetterStorage;\n\tchannelFactory;\n\toperationIndex;\n\treactor;\n\teventBus;\n\tremotes;\n\tawaiter;\n\tsyncAwaiter;\n\tabortController = new AbortController();\n\tisShutdown;\n\teventUnsubscribe;\n\tfailedEventUnsubscribe;\n\tbatchAggregator;\n\tsyncStatusTracker;\n\tmaxDeadLettersPerRemote;\n\tconnectionStateUnsubscribes = /* @__PURE__ */ new Map();\n\tquarantinedDocumentIds = /* @__PURE__ */ new Set();\n\tconstructor(logger, remoteStorage, cursorStorage, deadLetterStorage, channelFactory, operationIndex, reactor, eventBus, maxDeadLettersPerRemote = 100) {\n\t\tthis.logger = logger;\n\t\tthis.remoteStorage = remoteStorage;\n\t\tthis.cursorStorage = cursorStorage;\n\t\tthis.deadLetterStorage = deadLetterStorage;\n\t\tthis.channelFactory = channelFactory;\n\t\tthis.operationIndex = operationIndex;\n\t\tthis.reactor = reactor;\n\t\tthis.eventBus = eventBus;\n\t\tthis.maxDeadLettersPerRemote = maxDeadLettersPerRemote;\n\t\tthis.remotes = /* @__PURE__ */ new Map();\n\t\tthis.awaiter = new JobAwaiter(eventBus, (jobId, signal) => reactor.getJobStatus(jobId, signal));\n\t\tthis.syncAwaiter = new SyncAwaiter(eventBus);\n\t\tthis.isShutdown = false;\n\t\tthis.batchAggregator = new BatchAggregator(logger, (batch) => this.processCompleteBatch(batch));\n\t\tthis.syncStatusTracker = new SyncStatusTracker();\n\t}\n\tasync startup() {\n\t\tif (this.isShutdown) throw new Error(\"SyncManager is already shutdown and cannot be started\");\n\t\ttry {\n\t\t\tconst quarantinedIds = await this.deadLetterStorage.listQuarantinedDocumentIds();\n\t\t\tfor (const id of quarantinedIds) this.quarantinedDocumentIds.add(id);\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Failed to load quarantined document IDs (@error)\", error instanceof Error ? error.message : String(error));\n\t\t}\n\t\tconst remoteRecords = await this.remoteStorage.list();\n\t\tfor (const record of remoteRecords) {\n\t\t\tconst channel = this.channelFactory.instance(record.id, record.name, record.channelConfig, this.cursorStorage, record.collectionId, record.filter, this.operationIndex);\n\t\t\tconst remote = {\n\t\t\t\tid: record.id,\n\t\t\t\tname: record.name,\n\t\t\t\tcollectionId: record.collectionId,\n\t\t\t\tfilter: record.filter,\n\t\t\t\toptions: record.options,\n\t\t\t\tchannel\n\t\t\t};\n\t\t\tthis.remotes.set(record.name, remote);\n\t\t\tawait this.loadDeadLetters(remote);\n\t\t\tthis.wireChannelCallbacks(remote);\n\t\t\ttry {\n\t\t\t\tawait channel.init();\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error(\"Error initializing channel for remote (@name, @error)\", record.name, error instanceof Error ? error.message : String(error));\n\t\t\t\tthis.remotes.delete(record.name);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst outboxAckOrdinal = remote.channel.outbox.ackOrdinal;\n\t\t\tif (outboxAckOrdinal > 0) await this.updateOutbox(remote, outboxAckOrdinal);\n\t\t}\n\t\tthis.eventUnsubscribe = this.eventBus.subscribe(ReactorEventTypes.JOB_WRITE_READY, async (_type, event) => this.batchAggregator.enqueueWriteReady(event));\n\t\tthis.failedEventUnsubscribe = this.eventBus.subscribe(ReactorEventTypes.JOB_FAILED, async (_type, event) => this.batchAggregator.handleJobFailed(event));\n\t}\n\tshutdown() {\n\t\tthis.isShutdown = true;\n\t\tthis.abortController.abort();\n\t\tthis.batchAggregator.clear();\n\t\tif (this.eventUnsubscribe) {\n\t\t\tthis.eventUnsubscribe();\n\t\t\tthis.eventUnsubscribe = void 0;\n\t\t}\n\t\tif (this.failedEventUnsubscribe) {\n\t\t\tthis.failedEventUnsubscribe();\n\t\t\tthis.failedEventUnsubscribe = void 0;\n\t\t}\n\t\tthis.awaiter.shutdown();\n\t\tthis.syncAwaiter.shutdown();\n\t\tthis.syncStatusTracker.clear();\n\t\tfor (const unsub of this.connectionStateUnsubscribes.values()) unsub();\n\t\tthis.connectionStateUnsubscribes.clear();\n\t\tconst promises = [];\n\t\tfor (const remote of this.remotes.values()) promises.push(remote.channel.shutdown());\n\t\tthis.remotes.clear();\n\t\treturn {\n\t\t\tisShutdown: true,\n\t\t\tcompleted: Promise.all(promises).then(() => void 0)\n\t\t};\n\t}\n\tgetByName(name) {\n\t\tconst remote = this.remotes.get(name);\n\t\tif (!remote) throw new Error(`Remote with name '${name}' does not exist`);\n\t\treturn remote;\n\t}\n\tgetById(id) {\n\t\tfor (const remote of this.remotes.values()) if (remote.id === id) return remote;\n\t\tthrow new Error(`Remote with id '${id}' does not exist`);\n\t}\n\tasync add(name, collectionId, channelConfig, filter = {\n\t\tdocumentId: [],\n\t\tscope: [],\n\t\tbranch: \"\"\n\t}, options = { sinceTimestampUtcMs: \"0\" }, id) {\n\t\tif (this.isShutdown) throw new Error(\"SyncManager is shutdown and cannot add remotes\");\n\t\tif (this.remotes.has(name)) throw new Error(`Remote with name '${name}' already exists`);\n\t\tthis.logger.debug(\"Adding remote (@name, @collectionId, @channelConfig, @filter, @options, @id)\", name, collectionId, channelConfig, filter, options, id);\n\t\tconst remoteId = id ?? crypto.randomUUID();\n\t\tconst remoteRecord = {\n\t\t\tid: remoteId,\n\t\t\tname,\n\t\t\tcollectionId,\n\t\t\tchannelConfig,\n\t\t\tfilter,\n\t\t\toptions,\n\t\t\tstatus: {\n\t\t\t\tpush: createIdleHealth(),\n\t\t\t\tpull: createIdleHealth()\n\t\t\t}\n\t\t};\n\t\tawait this.remoteStorage.upsert(remoteRecord);\n\t\tconst channel = this.channelFactory.instance(remoteId, name, channelConfig, this.cursorStorage, collectionId, filter, this.operationIndex);\n\t\tconst remote = {\n\t\t\tid: remoteId,\n\t\t\tname,\n\t\t\tcollectionId,\n\t\t\tfilter,\n\t\t\toptions,\n\t\t\tchannel\n\t\t};\n\t\tthis.remotes.set(name, remote);\n\t\tawait this.loadDeadLetters(remote);\n\t\tthis.wireChannelCallbacks(remote);\n\t\ttry {\n\t\t\tawait channel.init();\n\t\t} catch (error) {\n\t\t\tthis.remotes.delete(name);\n\t\t\tawait this.remoteStorage.remove(name);\n\t\t\tthrow error;\n\t\t}\n\t\tawait this.updateOutbox(remote, 0);\n\t\treturn remote;\n\t}\n\tasync remove(name) {\n\t\tconst remote = this.remotes.get(name);\n\t\tif (!remote) throw new Error(`Remote with name '${name}' does not exist`);\n\t\tawait remote.channel.shutdown();\n\t\tawait this.remoteStorage.remove(name);\n\t\tawait this.cursorStorage.remove(name);\n\t\tthis.syncStatusTracker.untrackRemote(name);\n\t\tconst unsub = this.connectionStateUnsubscribes.get(name);\n\t\tif (unsub) {\n\t\t\tunsub();\n\t\t\tthis.connectionStateUnsubscribes.delete(name);\n\t\t}\n\t\tthis.remotes.delete(name);\n\t}\n\tlist() {\n\t\treturn Array.from(this.remotes.values());\n\t}\n\twaitForSync(jobId, signal) {\n\t\treturn this.syncAwaiter.waitForSync(jobId, signal);\n\t}\n\tgetSyncStatus(documentId) {\n\t\treturn this.syncStatusTracker.getStatus(documentId);\n\t}\n\tonSyncStatusChange(callback) {\n\t\treturn this.syncStatusTracker.onChange(callback);\n\t}\n\twireChannelCallbacks(remote) {\n\t\tremote.channel.inbox.onAdded((syncOps) => this.handleInboxAdded(remote, syncOps));\n\t\tthis.syncStatusTracker.trackRemote(remote.name, remote.channel);\n\t\tconst unsubscribe = remote.channel.onConnectionStateChange((snapshot) => {\n\t\t\tthis.eventBus.emit(SyncEventTypes.CONNECTION_STATE_CHANGED, {\n\t\t\t\tremoteName: remote.name,\n\t\t\t\tremoteId: remote.id,\n\t\t\t\tprevious: snapshot.state,\n\t\t\t\tcurrent: snapshot.state,\n\t\t\t\tsnapshot\n\t\t\t}).catch(() => {});\n\t\t});\n\t\tthis.connectionStateUnsubscribes.set(remote.name, unsubscribe);\n\t\tremote.channel.deadLetter.onAdded((syncOps) => {\n\t\t\tfor (const syncOp of syncOps) {\n\t\t\t\tthis.logger.error(\"Dead letter (@remote, @documentId, @jobId, @error, @dependencies)\", remote.name, syncOp.documentId, syncOp.jobId, syncOp.error?.message ?? \"unknown\", syncOp.jobDependencies);\n\t\t\t\tthis.quarantinedDocumentIds.add(syncOp.documentId);\n\t\t\t\tconst record = {\n\t\t\t\t\tid: syncOp.id,\n\t\t\t\t\tjobId: syncOp.jobId,\n\t\t\t\t\tjobDependencies: syncOp.jobDependencies,\n\t\t\t\t\tremoteName: syncOp.remoteName,\n\t\t\t\t\tdocumentId: syncOp.documentId,\n\t\t\t\t\tscopes: syncOp.scopes,\n\t\t\t\t\tbranch: syncOp.branch,\n\t\t\t\t\toperations: syncOp.operations,\n\t\t\t\t\terrorSource: syncOp.error?.source ?? ChannelErrorSource.None,\n\t\t\t\t\terrorMessage: syncOp.error?.error.message ?? \"unknown\"\n\t\t\t\t};\n\t\t\t\tthis.deadLetterStorage.add(record).catch((err) => {\n\t\t\t\t\tthis.logger.error(\"Failed to persist dead letter (@id, @error)\", record.id, err instanceof Error ? err.message : String(err));\n\t\t\t\t});\n\t\t\t\tthis.eventBus.emit(SyncEventTypes.DEAD_LETTER_ADDED, {\n\t\t\t\t\tid: record.id,\n\t\t\t\t\tjobId: record.jobId,\n\t\t\t\t\tremoteName: record.remoteName,\n\t\t\t\t\tdocumentId: record.documentId,\n\t\t\t\t\terrorSource: record.errorSource\n\t\t\t\t}).catch(() => {});\n\t\t\t}\n\t\t\tconst items = remote.channel.deadLetter.items;\n\t\t\tif (items.length > this.maxDeadLettersPerRemote) {\n\t\t\t\tconst excessCount = items.length - this.maxDeadLettersPerRemote;\n\t\t\t\tconst toEvict = items.slice(0, excessCount);\n\t\t\t\tremote.channel.deadLetter.remove(...toEvict);\n\t\t\t}\n\t\t});\n\t}\n\tasync loadDeadLetters(remote) {\n\t\tlet records;\n\t\ttry {\n\t\t\trecords = (await this.deadLetterStorage.list(remote.name, {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: this.maxDeadLettersPerRemote\n\t\t\t})).results;\n\t\t} catch (error) {\n\t\t\tthis.logger.error(\"Failed to load dead letters for remote (@name, @error)\", remote.name, error instanceof Error ? error.message : String(error));\n\t\t\treturn;\n\t\t}\n\t\tif (records.length === 0) return;\n\t\trecords.reverse();\n\t\tconst syncOps = [];\n\t\tfor (const record of records) {\n\t\t\tconst syncOp = new SyncOperation(record.id, record.jobId, record.jobDependencies, record.remoteName, record.documentId, record.scopes, record.branch, record.operations);\n\t\t\tsyncOp.failed(new ChannelError(record.errorSource, new Error(record.errorMessage)));\n\t\t\tsyncOps.push(syncOp);\n\t\t}\n\t\tremote.channel.deadLetter.add(...syncOps);\n\t\tthis.logger.debug(\"Loaded @count persisted dead letters for remote @name\", records.length, remote.name);\n\t}\n\tgetRemotesForCollection(collectionId) {\n\t\treturn Array.from(this.remotes.values()).filter((remote) => remote.collectionId === collectionId);\n\t}\n\tasync processCompleteBatch(batch) {\n\t\tif (this.isShutdown) return;\n\t\tconst collectionIds = [...new Set(Object.values(batch.collectionMemberships).flatMap((collections) => collections))];\n\t\tconst affectedRemotes = [];\n\t\tfor (const collectionId of collectionIds) {\n\t\t\tconst remotes = this.getRemotesForCollection(collectionId);\n\t\t\tfor (const remote of remotes) if (!affectedRemotes.includes(remote)) affectedRemotes.push(remote);\n\t\t}\n\t\tfor (const remote of affectedRemotes) trimMailboxFromBatch(remote.channel.inbox, batch);\n\t\tfor (const remote of affectedRemotes) await this.updateOutbox(remote, remote.channel.outbox.latestOrdinal);\n\t}\n\thandleInboxAdded(remote, syncOps) {\n\t\tif (this.isShutdown) return;\n\t\tconst eligible = syncOps.filter((op) => !this.quarantinedDocumentIds.has(op.documentId));\n\t\tif (eligible.length === 0) return;\n\t\tconst keyed = [];\n\t\tconst nonKeyed = [];\n\t\tfor (const syncOp of eligible) if (syncOp.jobId) keyed.push(syncOp);\n\t\telse nonKeyed.push(syncOp);\n\t\tfor (const syncOp of nonKeyed) this.applyInboxJob(remote, syncOp);\n\t\tif (keyed.length > 0) this.applyInboxBatch(keyed.map((syncOp) => ({\n\t\t\tremote,\n\t\t\tsyncOp\n\t\t})));\n\t}\n\tasync applyInboxJob(remote, syncOp) {\n\t\tconst operations = syncOp.operations.map((op) => op.operation);\n\t\tlet jobInfo;\n\t\ttry {\n\t\t\tjobInfo = await this.reactor.load(syncOp.documentId, syncOp.branch, operations, this.abortController.signal, { sourceRemote: remote.name });\n\t\t} catch (error) {\n\t\t\tif (this.isShutdown) return;\n\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\tthis.logger.error(\"Failed to load operations from inbox (@remote, @documentId, @error)\", remote.name, syncOp.documentId, err.message);\n\t\t\tconst channelError = new ChannelError(ChannelErrorSource.Inbox, err);\n\t\t\tsyncOp.failed(channelError);\n\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t\treturn;\n\t\t}\n\t\tlet completedJobInfo;\n\t\ttry {\n\t\t\tcompletedJobInfo = await this.awaiter.waitForJob(jobInfo.id, this.abortController.signal);\n\t\t} catch (error) {\n\t\t\tif (this.isShutdown) return;\n\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\tthis.logger.error(\"Failed to wait for job completion (@remote, @documentId, @jobId, @error)\", remote.name, syncOp.documentId, jobInfo.id, err.message);\n\t\t\tconst channelError = new ChannelError(ChannelErrorSource.Inbox, err);\n\t\t\tsyncOp.failed(channelError);\n\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t\treturn;\n\t\t}\n\t\tif (this.isShutdown) return;\n\t\tif (completedJobInfo.status === JobStatus.FAILED) {\n\t\t\tconst errorMessage = completedJobInfo.error?.message || \"Unknown error\";\n\t\t\tthis.logger.error(\"Failed to apply operations from inbox (@remote, @documentId, @jobId, @error)\", remote.name, syncOp.documentId, completedJobInfo.id, errorMessage);\n\t\t\tconst error = new ChannelError(ChannelErrorSource.Inbox, /* @__PURE__ */ new Error(`Failed to apply operations: ${errorMessage}`));\n\t\t\tsyncOp.failed(error);\n\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t} else syncOp.executed();\n\t\tremote.channel.inbox.remove(syncOp);\n\t}\n\tasync applyInboxBatch(items) {\n\t\tconst sourceRemote = items[0].remote.name;\n\t\tconst request = { jobs: items.map(({ syncOp }) => ({\n\t\t\tkey: syncOp.jobId,\n\t\t\tdocumentId: syncOp.documentId,\n\t\t\tscope: syncOp.scopes[0],\n\t\t\tbranch: syncOp.branch,\n\t\t\toperations: syncOp.operations.map((op) => op.operation),\n\t\t\tdependsOn: syncOp.jobDependencies.filter(Boolean)\n\t\t})) };\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = await this.reactor.loadBatch(request, this.abortController.signal, { sourceRemote });\n\t\t} catch (error) {\n\t\t\tif (this.isShutdown) return;\n\t\t\tfor (const { remote, syncOp } of items) {\n\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tsyncOp.failed(new ChannelError(ChannelErrorSource.Inbox, err));\n\t\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tif (this.isShutdown) return;\n\t\tfor (const { remote, syncOp } of items) {\n\t\t\tif (!(syncOp.jobId in result.jobs)) {\n\t\t\t\tthis.logger.error(\"Job key missing from batch load result (@remote, @documentId, @jobId)\", remote.name, syncOp.documentId, syncOp.jobId);\n\t\t\t\tconst error = new ChannelError(ChannelErrorSource.Inbox, /* @__PURE__ */ new Error(`Job key '${syncOp.jobId}' missing from batch load result`));\n\t\t\t\tsyncOp.failed(error);\n\t\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst jobInfo = result.jobs[syncOp.jobId];\n\t\t\tlet completedJobInfo;\n\t\t\ttry {\n\t\t\t\tcompletedJobInfo = await this.awaiter.waitForJob(jobInfo.id, this.abortController.signal);\n\t\t\t} catch (error) {\n\t\t\t\tif (this.isShutdown) continue;\n\t\t\t\tconst err = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tsyncOp.failed(new ChannelError(ChannelErrorSource.Inbox, err));\n\t\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (this.isShutdown) return;\n\t\t\tif (completedJobInfo.status === JobStatus.FAILED) {\n\t\t\t\tconst errorMessage = completedJobInfo.error?.message || \"Unknown error\";\n\t\t\t\tconst channelError = new ChannelError(ChannelErrorSource.Inbox, /* @__PURE__ */ new Error(`Failed to apply operations: ${errorMessage}`));\n\t\t\t\tsyncOp.failed(channelError);\n\t\t\t\tremote.channel.deadLetter.add(syncOp);\n\t\t\t} else syncOp.executed();\n\t\t\tremote.channel.inbox.remove(syncOp);\n\t\t}\n\t}\n\tasync updateOutbox(remote, ackOrdinal) {\n\t\tlet maxOrdinal = ackOrdinal;\n\t\tconst lastJobByDoc = /* @__PURE__ */ new Map();\n\t\tconst sinceTimestamp = remote.options.sinceTimestampUtcMs;\n\t\tlet page = await this.operationIndex.find(remote.collectionId, ackOrdinal, { excludeSourceRemote: remote.name }, void 0, this.abortController.signal);\n\t\tlet hasMore;\n\t\tdo {\n\t\t\tfor (const entry of page.results) maxOrdinal = Math.max(maxOrdinal, entry.ordinal ?? 0);\n\t\t\tlet operations = page.results.map((entry) => toOperationWithContext(entry));\n\t\t\tif (sinceTimestamp && sinceTimestamp !== \"0\") operations = operations.filter((op) => op.operation.timestampUtcMs >= sinceTimestamp);\n\t\t\toperations = filterOperations(operations, remote.filter);\n\t\t\toperations = operations.filter((op) => !this.quarantinedDocumentIds.has(op.context.documentId));\n\t\t\tif (operations.length > 0) {\n\t\t\t\toperations.sort((a, b) => {\n\t\t\t\t\tif (a.context.documentId !== b.context.documentId) return a.context.documentId < b.context.documentId ? -1 : 1;\n\t\t\t\t\tif (a.context.scope !== b.context.scope) return a.context.scope < b.context.scope ? -1 : 1;\n\t\t\t\t\treturn a.context.ordinal - b.context.ordinal;\n\t\t\t\t});\n\t\t\t\tconst batches = batchOperationsByDocument(operations);\n\t\t\t\tconst syncOps = [];\n\t\t\t\tfor (const batch of batches) {\n\t\t\t\t\tconst jobId = crypto.randomUUID();\n\t\t\t\t\tconst prevJobId = lastJobByDoc.get(batch.documentId);\n\t\t\t\t\tconst syncOp = new SyncOperation(crypto.randomUUID(), jobId, prevJobId ? [prevJobId] : [], remote.name, batch.documentId, [batch.scope], batch.branch, batch.operations);\n\t\t\t\t\tsyncOps.push(syncOp);\n\t\t\t\t\tlastJobByDoc.set(batch.documentId, jobId);\n\t\t\t\t}\n\t\t\t\tremote.channel.outbox.add(...syncOps);\n\t\t\t}\n\t\t\thasMore = !!page.next;\n\t\t\tif (hasMore) page = await page.next();\n\t\t} while (hasMore);\n\t\tremote.channel.outbox.advanceOrdinal(maxOrdinal);\n\t}\n};\n//#endregion\n//#region src/sync/sync-builder.ts\nvar SyncBuilder = class {\n\tchannelFactory;\n\tremoteStorage;\n\tcursorStorage;\n\tdeadLetterStorage;\n\tmaxDeadLettersPerRemote = 100;\n\twithChannelFactory(factory) {\n\t\tthis.channelFactory = factory;\n\t\treturn this;\n\t}\n\twithRemoteStorage(storage) {\n\t\tthis.remoteStorage = storage;\n\t\treturn this;\n\t}\n\twithCursorStorage(storage) {\n\t\tthis.cursorStorage = storage;\n\t\treturn this;\n\t}\n\twithDeadLetterStorage(storage) {\n\t\tthis.deadLetterStorage = storage;\n\t\treturn this;\n\t}\n\twithMaxDeadLettersPerRemote(limit) {\n\t\tthis.maxDeadLettersPerRemote = limit;\n\t\treturn this;\n\t}\n\tbuild(reactor, logger, operationIndex, eventBus, db) {\n\t\treturn this.buildModule(reactor, logger, operationIndex, eventBus, db).syncManager;\n\t}\n\tbuildModule(reactor, logger, operationIndex, eventBus, db) {\n\t\tif (!this.channelFactory) throw new Error(\"Channel factory is required\");\n\t\tconst remoteStorage = this.remoteStorage ?? new KyselySyncRemoteStorage(db);\n\t\tconst cursorStorage = this.cursorStorage ?? new KyselySyncCursorStorage(db);\n\t\tconst deadLetterStorage = this.deadLetterStorage ?? new KyselySyncDeadLetterStorage(db);\n\t\tconst syncManager = new SyncManager(logger, remoteStorage, cursorStorage, deadLetterStorage, this.channelFactory, operationIndex, reactor, eventBus, this.maxDeadLettersPerRemote);\n\t\treturn {\n\t\t\tremoteStorage,\n\t\t\tcursorStorage,\n\t\t\tdeadLetterStorage,\n\t\t\tchannelFactory: this.channelFactory,\n\t\t\tsyncManager\n\t\t};\n\t}\n};\n//#endregion\n//#region src/shared/factories.ts\n/**\n* Factory method to create a ShutdownStatus that can be updated\n*\n* @param initialState - Initial shutdown state (default: false)\n* @returns A tuple of [ShutdownStatus, setShutdown function, setCompleted function]\n*/\nfunction createMutableShutdownStatus(initialState = false) {\n\tlet shutdownState = initialState;\n\tlet completedPromise = Promise.resolve();\n\tconst status = {\n\t\tget isShutdown() {\n\t\t\treturn shutdownState;\n\t\t},\n\t\tget completed() {\n\t\t\treturn completedPromise;\n\t\t}\n\t};\n\tconst setShutdown = (value) => {\n\t\tshutdownState = value;\n\t};\n\tconst setCompleted = (promise) => {\n\t\tcompletedPromise = promise;\n\t};\n\treturn [\n\t\tstatus,\n\t\tsetShutdown,\n\t\tsetCompleted\n\t];\n}\n//#endregion\n//#region src/shared/utils.ts\nfunction matchesScope(view = {}, scope) {\n\tif (view.scopes) return view.scopes.includes(scope);\n\treturn true;\n}\n//#endregion\n//#region src/core/types.ts\nvar AbortError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message || \"Aborted\");\n\t\tthis.name = \"AbortError\";\n\t}\n};\n//#endregion\n//#region src/core/reactor.ts\n/**\n* This class implements the IReactor interface and serves as the main entry point\n* for the new Reactor architecture.\n*/\nvar Reactor = class {\n\tlogger;\n\tdocumentModelRegistry;\n\tshutdownStatus;\n\tsetShutdown;\n\tsetCompleted;\n\tqueue;\n\tjobTracker;\n\treadModelCoordinator;\n\tfeatures;\n\tdocumentView;\n\tdocumentIndexer;\n\toperationStore;\n\teventBus;\n\texecutorManager;\n\tconstructor(logger, documentModelRegistry, queue, jobTracker, readModelCoordinator, features, documentView, documentIndexer, operationStore, eventBus, executorManager) {\n\t\tthis.logger = logger;\n\t\tthis.documentModelRegistry = documentModelRegistry;\n\t\tthis.queue = queue;\n\t\tthis.jobTracker = jobTracker;\n\t\tthis.readModelCoordinator = readModelCoordinator;\n\t\tthis.features = features;\n\t\tthis.documentView = documentView;\n\t\tthis.documentIndexer = documentIndexer;\n\t\tthis.operationStore = operationStore;\n\t\tthis.eventBus = eventBus;\n\t\tthis.executorManager = executorManager;\n\t\tconst [status, setShutdown, setCompleted] = createMutableShutdownStatus(false);\n\t\tthis.shutdownStatus = status;\n\t\tthis.setShutdown = setShutdown;\n\t\tthis.setCompleted = setCompleted;\n\t\tthis.eventBus.subscribe(ReactorEventTypes.JOB_FAILED, (_type, event) => {\n\t\t\tthis.logger.error(\"Job @JobId failed with @Message: @Job\", event.jobId, event.error.message, event.job);\n\t\t});\n\t\tthis.readModelCoordinator.start();\n\t}\n\tkill() {\n\t\tthis.logger.verbose(\"kill()\");\n\t\tif (this.shutdownStatus.isShutdown) return this.shutdownStatus;\n\t\tthis.setShutdown(true);\n\t\tconst shutdownAsync = async () => {\n\t\t\tawait this.executorManager.stop(true);\n\t\t\tthis.readModelCoordinator.stop();\n\t\t\tthis.jobTracker.shutdown();\n\t\t};\n\t\tthis.setCompleted(shutdownAsync());\n\t\treturn this.shutdownStatus;\n\t}\n\tgetDocumentModels(namespace, paging, signal) {\n\t\tthis.logger.verbose(\"getDocumentModels(@namespace, @paging)\", namespace, paging);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tconst filteredModels = this.documentModelRegistry.getAllModules().filter((module) => !namespace || module.documentModel.global.id.startsWith(namespace));\n\t\tconst startIndex = paging ? parseInt(paging.cursor) || 0 : 0;\n\t\tconst limit = paging?.limit || filteredModels.length;\n\t\tconst pagedModels = filteredModels.slice(startIndex, startIndex + limit);\n\t\tconst hasMore = startIndex + limit < filteredModels.length;\n\t\tconst nextCursor = hasMore ? String(startIndex + limit) : void 0;\n\t\treturn Promise.resolve({\n\t\t\tresults: pagedModels,\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: filteredModels.length\n\t\t\t},\n\t\t\tnextCursor,\n\t\t\tnext: hasMore ? () => this.getDocumentModels(namespace, {\n\t\t\t\tcursor: nextCursor,\n\t\t\t\tlimit\n\t\t\t}, signal) : void 0\n\t\t});\n\t}\n\tasync get(id, view, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"get(@id, @view)\", id, view);\n\t\treturn await this.documentView.get(id, view, consistencyToken, signal);\n\t}\n\tasync getBySlug(slug, view, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"getBySlug(@slug, @view)\", slug, view);\n\t\tconst documentId = await this.documentView.resolveSlug(slug, view, consistencyToken, signal);\n\t\tif (!documentId) throw new Error(`Document not found with slug: ${slug}`);\n\t\treturn await this.get(documentId, view, consistencyToken, signal);\n\t}\n\tasync getByIdOrSlug(identifier, view, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"getByIdOrSlug(@identifier, @view)\", identifier, view);\n\t\treturn await this.documentView.getByIdOrSlug(identifier, view, consistencyToken, signal);\n\t}\n\tasync getChildren(documentId, consistencyToken, signal) {\n\t\tconst relationships = await this.documentIndexer.getOutgoing(documentId, [\"child\"], void 0, consistencyToken, signal);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\treturn relationships.results.map((rel) => rel.targetId);\n\t}\n\tasync getParents(childId, consistencyToken, signal) {\n\t\tconst relationships = await this.documentIndexer.getIncoming(childId, [\"parent\"], void 0, consistencyToken, signal);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\treturn relationships.results.map((rel) => rel.sourceId);\n\t}\n\tasync getOperations(documentId, view, filter, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"getOperations(@documentId, @view, @filter, @paging)\", documentId, view, filter, paging);\n\t\tconst branch = view?.branch || \"main\";\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tconst allScopes = Object.keys(revisions.revision);\n\t\tconst result = {};\n\t\tfor (const scope of allScopes) {\n\t\t\tif (!matchesScope(view, scope)) continue;\n\t\t\tif (signal?.aborted) throw new AbortError();\n\t\t\tconst scopeResult = await this.operationStore.getSince(documentId, scope, branch, -1, filter, paging, signal);\n\t\t\tresult[scope] = {\n\t\t\t\tresults: scopeResult.results,\n\t\t\t\toptions: scopeResult.options,\n\t\t\t\tnextCursor: scopeResult.nextCursor,\n\t\t\t\tnext: scopeResult.next ? async () => {\n\t\t\t\t\treturn (await this.getOperations(documentId, view, filter, {\n\t\t\t\t\t\tcursor: scopeResult.nextCursor,\n\t\t\t\t\t\tlimit: scopeResult.options.limit\n\t\t\t\t\t}, consistencyToken, signal))[scope];\n\t\t\t\t} : void 0\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t}\n\tasync find(search, view, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"find(@search, @view, @paging)\", search, view, paging);\n\t\tlet results;\n\t\tif (search.ids) {\n\t\t\tif (search.slugs && search.slugs.length > 0) throw new Error(\"Cannot use both ids and slugs in the same search\");\n\t\t\tresults = await this.findByIds(search.ids, view, paging, consistencyToken, signal);\n\t\t\tif (search.type) results = filterByType(results, search.type);\n\t\t} else if (search.slugs) {\n\t\t\tresults = await this.findBySlugs(search.slugs, view, paging, consistencyToken, signal);\n\t\t\tif (search.type) results = filterByType(results, search.type);\n\t\t} else if (search.parentId) {\n\t\t\tresults = await this.findByParentId(search.parentId, view, paging, consistencyToken, signal);\n\t\t\tif (search.type) results = filterByType(results, search.type);\n\t\t} else if (search.type) results = await this.findByType(search.type, view, paging, consistencyToken, signal);\n\t\telse throw new Error(\"No search criteria provided\");\n\t\tif (signal?.aborted) throw new AbortError();\n\t\treturn results;\n\t}\n\tasync create(document, signer, signal, meta) {\n\t\tthis.logger.verbose(\"create(@id, @type, @slug)\", document.header.id, document.header.documentType, document.header.slug);\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tlet actions = [createDocumentAction({\n\t\t\tmodel: document.header.documentType,\n\t\t\tversion: 0,\n\t\t\tdocumentId: document.header.id,\n\t\t\tsigning: {\n\t\t\t\tsignature: document.header.id,\n\t\t\t\tpublicKey: document.header.sig.publicKey,\n\t\t\t\tnonce: document.header.sig.nonce,\n\t\t\t\tcreatedAtUtcIso: document.header.createdAtUtcIso,\n\t\t\t\tdocumentType: document.header.documentType\n\t\t\t},\n\t\t\tslug: document.header.slug,\n\t\t\tname: document.header.name,\n\t\t\tbranch: document.header.branch,\n\t\t\tmeta: document.header.meta,\n\t\t\tprotocolVersions: document.header.protocolVersions ?? { \"base-reducer\": 2 }\n\t\t}), upgradeDocumentAction({\n\t\t\tdocumentId: document.header.id,\n\t\t\tmodel: document.header.documentType,\n\t\t\tfromVersion: 0,\n\t\t\ttoVersion: document.state.document.version,\n\t\t\tinitialState: document.state\n\t\t})];\n\t\tif (signer) actions = await signActions(actions, signer, signal);\n\t\tconst jobId = v4();\n\t\tconst jobMeta = buildSingleJobMeta(jobId, meta);\n\t\tconst job = {\n\t\t\tid: jobId,\n\t\t\tkind: \"mutation\",\n\t\t\tdocumentId: document.header.id,\n\t\t\tscope: \"document\",\n\t\t\tbranch: \"main\",\n\t\t\tactions,\n\t\t\toperations: [],\n\t\t\tcreatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\tqueueHint: [],\n\t\t\tmaxRetries: 3,\n\t\t\terrorHistory: [],\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tconst jobInfo = {\n\t\t\tid: jobId,\n\t\t\tstatus: JobStatus.PENDING,\n\t\t\tcreatedAtUtcIso,\n\t\t\tconsistencyToken: {\n\t\t\t\tversion: 1,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tcoordinates: []\n\t\t\t},\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tthis.jobTracker.registerJob(jobInfo);\n\t\tthis.emitJobPending(jobInfo.id, jobMeta);\n\t\tawait this.queue.enqueue(job);\n\t\treturn jobInfo;\n\t}\n\tasync deleteDocument(id, signer, signal, meta) {\n\t\tthis.logger.verbose(\"deleteDocument(@id)\", id);\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tlet action = deleteDocumentAction(id);\n\t\tif (signer) action = await signAction(action, signer, signal);\n\t\tconst jobId = v4();\n\t\tconst jobMeta = buildSingleJobMeta(jobId, meta);\n\t\tconst job = {\n\t\t\tid: jobId,\n\t\t\tkind: \"mutation\",\n\t\t\tdocumentId: id,\n\t\t\tscope: \"document\",\n\t\t\tbranch: \"main\",\n\t\t\tactions: [action],\n\t\t\toperations: [],\n\t\t\tcreatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\tqueueHint: [],\n\t\t\tmaxRetries: 3,\n\t\t\terrorHistory: [],\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tconst jobInfo = {\n\t\t\tid: jobId,\n\t\t\tstatus: JobStatus.PENDING,\n\t\t\tcreatedAtUtcIso,\n\t\t\tconsistencyToken: {\n\t\t\t\tversion: 1,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tcoordinates: []\n\t\t\t},\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tthis.jobTracker.registerJob(jobInfo);\n\t\tthis.emitJobPending(jobInfo.id, jobMeta);\n\t\tawait this.queue.enqueue(job);\n\t\treturn jobInfo;\n\t}\n\tasync execute(docId, branch, actions, signal, meta) {\n\t\tthis.logger.verbose(\"execute(@docId, @branch, @actions)\", docId, branch, actions);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tconst scope = getSharedActionScope(actions);\n\t\tconst jobId = v4();\n\t\tconst jobMeta = buildSingleJobMeta(jobId, meta);\n\t\tconst job = {\n\t\t\tid: jobId,\n\t\t\tkind: \"mutation\",\n\t\t\tdocumentId: docId,\n\t\t\tscope,\n\t\t\tbranch,\n\t\t\tactions,\n\t\t\toperations: [],\n\t\t\tcreatedAt: (/* @__PURE__ */ new Date()).toISOString(),\n\t\t\tqueueHint: [],\n\t\t\tmaxRetries: 3,\n\t\t\terrorHistory: [],\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tconst jobInfo = {\n\t\t\tid: jobId,\n\t\t\tstatus: JobStatus.PENDING,\n\t\t\tcreatedAtUtcIso,\n\t\t\tconsistencyToken: {\n\t\t\t\tversion: 1,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tcoordinates: []\n\t\t\t},\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tthis.jobTracker.registerJob(jobInfo);\n\t\tthis.emitJobPending(jobInfo.id, jobMeta);\n\t\tawait this.queue.enqueue(job);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\treturn jobInfo;\n\t}\n\tasync load(docId, branch, operations, signal, meta) {\n\t\tthis.logger.verbose(\"load(@docId, @branch, @count, @operations)\", docId, branch, operations.length, operations);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tif (operations.length === 0) throw new Error(\"load requires at least one operation\");\n\t\tconst scope = getSharedOperationScope(operations);\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tconst jobId = v4();\n\t\tconst jobMeta = buildSingleJobMeta(jobId, meta);\n\t\tconst job = {\n\t\t\tid: jobId,\n\t\t\tkind: \"load\",\n\t\t\tdocumentId: docId,\n\t\t\tscope,\n\t\t\tbranch,\n\t\t\tactions: [],\n\t\t\toperations,\n\t\t\tcreatedAt: createdAtUtcIso,\n\t\t\tqueueHint: [],\n\t\t\tmaxRetries: 3,\n\t\t\terrorHistory: [],\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tconst jobInfo = {\n\t\t\tid: jobId,\n\t\t\tstatus: JobStatus.PENDING,\n\t\t\tcreatedAtUtcIso,\n\t\t\tconsistencyToken: {\n\t\t\t\tversion: 1,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tcoordinates: []\n\t\t\t},\n\t\t\tmeta: jobMeta\n\t\t};\n\t\tthis.jobTracker.registerJob(jobInfo);\n\t\tthis.emitJobPending(jobInfo.id, jobMeta);\n\t\tawait this.queue.enqueue(job);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\treturn jobInfo;\n\t}\n\tasync executeBatch(request, signal, meta) {\n\t\tthis.logger.verbose(\"executeBatch(@count jobs)\", request.jobs.length);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tvalidateBatchRequest(request.jobs);\n\t\tfor (const jobPlan of request.jobs) validateActionScopes(jobPlan);\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tconst planKeyToJobId = /* @__PURE__ */ new Map();\n\t\tfor (const jobPlan of request.jobs) planKeyToJobId.set(jobPlan.key, v4());\n\t\tconst batchId = v4();\n\t\tconst batchJobIds = [...planKeyToJobId.values()];\n\t\tconst batchMeta = {\n\t\t\t...meta,\n\t\t\tbatchId,\n\t\t\tbatchJobIds\n\t\t};\n\t\tconst jobInfos = /* @__PURE__ */ new Map();\n\t\tfor (const jobPlan of request.jobs) {\n\t\t\tconst jobInfo = {\n\t\t\t\tid: planKeyToJobId.get(jobPlan.key),\n\t\t\t\tstatus: JobStatus.PENDING,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tconsistencyToken: {\n\t\t\t\t\tversion: 1,\n\t\t\t\t\tcreatedAtUtcIso,\n\t\t\t\t\tcoordinates: []\n\t\t\t\t},\n\t\t\t\tmeta: batchMeta\n\t\t\t};\n\t\t\tthis.jobTracker.registerJob(jobInfo);\n\t\t\tthis.emitJobPending(jobInfo.id, batchMeta);\n\t\t\tjobInfos.set(jobPlan.key, jobInfo);\n\t\t}\n\t\tconst sortedKeys = topologicalSort(request.jobs);\n\t\tconst enqueuedKeys = [];\n\t\ttry {\n\t\t\tfor (const key of sortedKeys) {\n\t\t\t\tif (signal?.aborted) throw new AbortError();\n\t\t\t\tconst jobPlan = request.jobs.find((j) => j.key === key);\n\t\t\t\tconst jobId = planKeyToJobId.get(key);\n\t\t\t\tconst queueHint = jobPlan.dependsOn.map((depKey) => planKeyToJobId.get(depKey));\n\t\t\t\tconst job = {\n\t\t\t\t\tid: jobId,\n\t\t\t\t\tkind: \"mutation\",\n\t\t\t\t\tdocumentId: jobPlan.documentId,\n\t\t\t\t\tscope: jobPlan.scope,\n\t\t\t\t\tbranch: jobPlan.branch,\n\t\t\t\t\tactions: jobPlan.actions,\n\t\t\t\t\toperations: [],\n\t\t\t\t\tcreatedAt: createdAtUtcIso,\n\t\t\t\t\tqueueHint,\n\t\t\t\t\tmaxRetries: 3,\n\t\t\t\t\terrorHistory: [],\n\t\t\t\t\tmeta: batchMeta\n\t\t\t\t};\n\t\t\t\tawait this.queue.enqueue(job);\n\t\t\t\tenqueuedKeys.push(key);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfor (const key of enqueuedKeys) {\n\t\t\t\tconst jobId = planKeyToJobId.get(key);\n\t\t\t\ttry {\n\t\t\t\t\tawait this.queue.remove(jobId);\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t\tfor (const jobInfo of jobInfos.values()) this.jobTracker.markFailed(jobInfo.id, toErrorInfo(\"Batch enqueue failed\"));\n\t\t\tthrow error;\n\t\t}\n\t\treturn { jobs: Object.fromEntries(jobInfos) };\n\t}\n\tasync loadBatch(request, signal, meta) {\n\t\tthis.logger.verbose(\"loadBatch(@count jobs)\", request.jobs.length);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tvalidateBatchLoadRequest(request.jobs);\n\t\tfor (const jobPlan of request.jobs) validateOperationScopes(jobPlan);\n\t\tconst createdAtUtcIso = (/* @__PURE__ */ new Date()).toISOString();\n\t\tconst planKeyToJobId = /* @__PURE__ */ new Map();\n\t\tfor (const jobPlan of request.jobs) planKeyToJobId.set(jobPlan.key, v4());\n\t\tconst batchId = v4();\n\t\tconst batchJobIds = [...planKeyToJobId.values()];\n\t\tconst batchMeta = {\n\t\t\t...meta,\n\t\t\tbatchId,\n\t\t\tbatchJobIds\n\t\t};\n\t\tconst jobInfos = /* @__PURE__ */ new Map();\n\t\tfor (const jobPlan of request.jobs) {\n\t\t\tconst jobInfo = {\n\t\t\t\tid: planKeyToJobId.get(jobPlan.key),\n\t\t\t\tstatus: JobStatus.PENDING,\n\t\t\t\tcreatedAtUtcIso,\n\t\t\t\tconsistencyToken: {\n\t\t\t\t\tversion: 1,\n\t\t\t\t\tcreatedAtUtcIso,\n\t\t\t\t\tcoordinates: []\n\t\t\t\t},\n\t\t\t\tmeta: batchMeta\n\t\t\t};\n\t\t\tthis.jobTracker.registerJob(jobInfo);\n\t\t\tthis.emitJobPending(jobInfo.id, batchMeta);\n\t\t\tjobInfos.set(jobPlan.key, jobInfo);\n\t\t}\n\t\tconst sortedKeys = topologicalSort(request.jobs);\n\t\tconst enqueuedKeys = [];\n\t\ttry {\n\t\t\tfor (const key of sortedKeys) {\n\t\t\t\tif (signal?.aborted) throw new AbortError();\n\t\t\t\tconst jobPlan = request.jobs.find((j) => j.key === key);\n\t\t\t\tconst jobId = planKeyToJobId.get(key);\n\t\t\t\tconst queueHint = jobPlan.dependsOn.map((depKey) => planKeyToJobId.get(depKey));\n\t\t\t\tconst job = {\n\t\t\t\t\tid: jobId,\n\t\t\t\t\tkind: \"load\",\n\t\t\t\t\tdocumentId: jobPlan.documentId,\n\t\t\t\t\tscope: jobPlan.scope,\n\t\t\t\t\tbranch: jobPlan.branch,\n\t\t\t\t\tactions: [],\n\t\t\t\t\toperations: jobPlan.operations,\n\t\t\t\t\tcreatedAt: createdAtUtcIso,\n\t\t\t\t\tqueueHint,\n\t\t\t\t\tmaxRetries: 3,\n\t\t\t\t\terrorHistory: [],\n\t\t\t\t\tmeta: batchMeta\n\t\t\t\t};\n\t\t\t\tawait this.queue.enqueue(job);\n\t\t\t\tenqueuedKeys.push(key);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tfor (const key of enqueuedKeys) {\n\t\t\t\tconst jobId = planKeyToJobId.get(key);\n\t\t\t\ttry {\n\t\t\t\t\tawait this.queue.remove(jobId);\n\t\t\t\t} catch {}\n\t\t\t}\n\t\t\tfor (const jobInfo of jobInfos.values()) this.jobTracker.markFailed(jobInfo.id, toErrorInfo(\"Batch enqueue failed\"));\n\t\t\tthrow error;\n\t\t}\n\t\treturn { jobs: Object.fromEntries(jobInfos) };\n\t}\n\tasync addChildren(parentId, documentIds, branch = \"main\", signer, signal) {\n\t\tthis.logger.verbose(\"addChildren(@parentId, @count children, @branch)\", parentId, documentIds.length, branch);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tlet actions = documentIds.map((childId) => addRelationshipAction(parentId, childId, \"child\"));\n\t\tif (signer) actions = await signActions(actions, signer, signal);\n\t\treturn await this.execute(parentId, branch, actions, signal);\n\t}\n\tasync removeChildren(parentId, documentIds, branch = \"main\", signer, signal) {\n\t\tthis.logger.verbose(\"removeChildren(@parentId, @count children, @branch)\", parentId, documentIds.length, branch);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tlet actions = documentIds.map((childId) => removeRelationshipAction(parentId, childId, \"child\"));\n\t\tif (signer) actions = await signActions(actions, signer, signal);\n\t\treturn await this.execute(parentId, branch, actions, signal);\n\t}\n\tgetJobStatus(jobId, signal) {\n\t\tthis.logger.verbose(\"getJobStatus(@jobId)\", jobId);\n\t\tif (signal?.aborted) throw new AbortError();\n\t\tconst jobInfo = this.jobTracker.getJobStatus(jobId);\n\t\tif (!jobInfo) {\n\t\t\tconst now = (/* @__PURE__ */ new Date()).toISOString();\n\t\t\treturn Promise.resolve({\n\t\t\t\tid: jobId,\n\t\t\t\tstatus: JobStatus.FAILED,\n\t\t\t\tcreatedAtUtcIso: now,\n\t\t\t\tcompletedAtUtcIso: now,\n\t\t\t\terror: toErrorInfo(\"Job not found\"),\n\t\t\t\tconsistencyToken: {\n\t\t\t\t\tversion: 1,\n\t\t\t\t\tcreatedAtUtcIso: now,\n\t\t\t\t\tcoordinates: []\n\t\t\t\t},\n\t\t\t\tmeta: {\n\t\t\t\t\tbatchId: jobId,\n\t\t\t\t\tbatchJobIds: [jobId]\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn Promise.resolve(jobInfo);\n\t}\n\tasync findByIds(ids, view, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"findByIds(@count ids)\", ids.length);\n\t\tconst startIndex = paging?.cursor ? parseInt(paging.cursor) || 0 : 0;\n\t\tconst limit = paging?.limit || ids.length;\n\t\tconst pagedIds = ids.slice(startIndex, startIndex + limit);\n\t\tconst results = await this.documentView.getMany(pagedIds, view, consistencyToken, signal);\n\t\tconst nextCursor = startIndex + limit < ids.length ? String(startIndex + limit) : void 0;\n\t\treturn {\n\t\t\tresults,\n\t\t\toptions: paging || {\n\t\t\t\tcursor: \"0\",\n\t\t\t\tlimit: ids.length\n\t\t\t},\n\t\t\tnextCursor\n\t\t};\n\t}\n\tasync findBySlugs(slugs, view, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"findBySlugs(@count slugs)\", slugs.length);\n\t\tconst ids = await this.documentView.resolveSlugs(slugs, view, consistencyToken, signal);\n\t\treturn await this.findByIds(ids, view, paging, consistencyToken, signal);\n\t}\n\tasync findByParentId(parentId, view, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"findByParentId(@parentId)\", parentId);\n\t\tconst ids = (await this.documentIndexer.getOutgoing(parentId, [\"child\"], paging, consistencyToken, signal)).results.map((rel) => rel.targetId);\n\t\treturn await this.findByIds(ids, view, paging, void 0, signal);\n\t}\n\tasync findByType(type, view, paging, consistencyToken, signal) {\n\t\tthis.logger.verbose(\"findByType(@type)\", type);\n\t\treturn await this.documentView.findByType(type, view, paging, consistencyToken, signal);\n\t}\n\temitJobPending(jobId, meta) {\n\t\tconst event = {\n\t\t\tjobId,\n\t\t\tjobMeta: meta\n\t\t};\n\t\tthis.eventBus.emit(ReactorEventTypes.JOB_PENDING, event).catch(() => {});\n\t}\n};\n//#endregion\n//#region src/core/reactor-builder.ts\nvar ReactorBuilder = class {\n\tlogger;\n\tdocumentModels = [];\n\tupgradeManifests = [];\n\tfeatures = { legacyStorageEnabled: false };\n\treadModels = [];\n\texecutorManager;\n\texecutorConfig = {};\n\twriteCacheConfig;\n\tmigrationStrategy = \"auto\";\n\tsyncBuilder;\n\teventBus;\n\treadModelCoordinator;\n\tsignatureVerifier;\n\tkyselyInstance;\n\tsignalHandlersEnabled = false;\n\tqueueInstance;\n\tchannelScheme;\n\tjwtHandler;\n\tdocumentModelLoader;\n\twithLogger(logger) {\n\t\tthis.logger = logger;\n\t\treturn this;\n\t}\n\twithDocumentModels(models) {\n\t\tthis.documentModels = models;\n\t\treturn this;\n\t}\n\twithUpgradeManifests(manifests) {\n\t\tthis.upgradeManifests = manifests;\n\t\treturn this;\n\t}\n\twithFeatures(features) {\n\t\tthis.features = {\n\t\t\t...this.features,\n\t\t\t...features\n\t\t};\n\t\treturn this;\n\t}\n\twithReadModel(readModel) {\n\t\tthis.readModels.push(readModel);\n\t\treturn this;\n\t}\n\twithReadModelCoordinator(readModelCoordinator) {\n\t\tthis.readModelCoordinator = readModelCoordinator;\n\t\treturn this;\n\t}\n\twithExecutor(executor) {\n\t\tthis.executorManager = executor;\n\t\treturn this;\n\t}\n\twithExecutorConfig(config) {\n\t\tthis.executorConfig = {\n\t\t\t...this.executorConfig,\n\t\t\t...config\n\t\t};\n\t\treturn this;\n\t}\n\twithWriteCacheConfig(config) {\n\t\tthis.writeCacheConfig = config;\n\t\treturn this;\n\t}\n\twithMigrationStrategy(strategy) {\n\t\tthis.migrationStrategy = strategy;\n\t\treturn this;\n\t}\n\twithSync(syncBuilder) {\n\t\tthis.syncBuilder = syncBuilder;\n\t\treturn this;\n\t}\n\twithEventBus(eventBus) {\n\t\tthis.eventBus = eventBus;\n\t\treturn this;\n\t}\n\twithSignatureVerifier(verifier) {\n\t\tthis.signatureVerifier = verifier;\n\t\treturn this;\n\t}\n\twithKysely(kysely) {\n\t\tthis.kyselyInstance = kysely;\n\t\treturn this;\n\t}\n\twithQueue(queue) {\n\t\tthis.queueInstance = queue;\n\t\treturn this;\n\t}\n\twithChannelScheme(scheme) {\n\t\tthis.channelScheme = scheme;\n\t\treturn this;\n\t}\n\twithJwtHandler(handler) {\n\t\tthis.jwtHandler = handler;\n\t\treturn this;\n\t}\n\twithDocumentModelLoader(loader) {\n\t\tthis.documentModelLoader = loader;\n\t\treturn this;\n\t}\n\twithSignalHandlers() {\n\t\tthis.signalHandlersEnabled = true;\n\t\treturn this;\n\t}\n\tasync build() {\n\t\treturn (await this.buildModule()).reactor;\n\t}\n\tasync buildModule() {\n\t\tif (!this.logger) this.logger = new ConsoleLogger([\"reactor\"]);\n\t\tconst documentModelRegistry = new DocumentModelRegistry();\n\t\tif (this.upgradeManifests.length > 0) documentModelRegistry.registerUpgradeManifests(...this.upgradeManifests);\n\t\tif (this.documentModels.length > 0) documentModelRegistry.registerModules(...this.documentModels);\n\t\tconst baseDatabase = this.kyselyInstance ?? new Kysely({ dialect: new PGliteDialect(new PGlite()) });\n\t\tif (this.migrationStrategy === \"auto\") {\n\t\t\tconst result = await runMigrations(baseDatabase, REACTOR_SCHEMA);\n\t\t\tif (!result.success && result.error) throw new Error(`Database migration failed: ${result.error.message}`);\n\t\t}\n\t\tconst database = baseDatabase.withSchema(REACTOR_SCHEMA);\n\t\tconst operationStore = new KyselyOperationStore(database);\n\t\tconst keyframeStore = new KyselyKeyframeStore(database);\n\t\tconst eventBus = this.eventBus || new EventBus();\n\t\tconst resolver = this.documentModelLoader ? new DocumentModelResolver(documentModelRegistry, this.documentModelLoader) : new NullDocumentModelResolver(documentModelRegistry);\n\t\tconst queue = this.queueInstance ?? new InMemoryQueue(eventBus, resolver);\n\t\tconst jobTracker = new InMemoryJobTracker(eventBus);\n\t\tconst writeCache = new KyselyWriteCache(keyframeStore, operationStore, documentModelRegistry, {\n\t\t\tmaxDocuments: this.writeCacheConfig?.maxDocuments ?? 100,\n\t\t\tringBufferSize: this.writeCacheConfig?.ringBufferSize ?? 10,\n\t\t\tkeyframeInterval: this.writeCacheConfig?.keyframeInterval ?? 10\n\t\t});\n\t\tawait writeCache.startup();\n\t\tconst operationIndex = new KyselyOperationIndex(database);\n\t\tconst documentMetaCache = new DocumentMetaCache(operationStore, { maxDocuments: 1e3 });\n\t\tawait documentMetaCache.startup();\n\t\tconst collectionMembershipCache = new CollectionMembershipCache(operationIndex);\n\t\tconst executionScope = new KyselyExecutionScope(database, operationStore, operationIndex, keyframeStore, writeCache, documentMetaCache, collectionMembershipCache);\n\t\tlet executorManager = this.executorManager;\n\t\tif (!executorManager) executorManager = new SimpleJobExecutorManager(() => new SimpleJobExecutor(this.logger, documentModelRegistry, operationStore, eventBus, writeCache, operationIndex, documentMetaCache, collectionMembershipCache, this.executorConfig, this.signatureVerifier, executionScope), eventBus, queue, jobTracker, this.logger, resolver, this.executorConfig.jobTimeoutMs);\n\t\tawait executorManager.start(this.executorConfig.maxConcurrency ?? 1);\n\t\tconst readModelInstances = Array.from(new Set([...this.readModels]));\n\t\tconst documentViewConsistencyTracker = new ConsistencyTracker();\n\t\tconst documentView = new KyselyDocumentView(database, operationStore, operationIndex, writeCache, documentViewConsistencyTracker);\n\t\ttry {\n\t\t\tawait documentView.init();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error initializing document view\", error);\n\t\t}\n\t\treadModelInstances.push(documentView);\n\t\tconst documentIndexerConsistencyTracker = new ConsistencyTracker();\n\t\tconst documentIndexer = new KyselyDocumentIndexer(database, operationIndex, writeCache, documentIndexerConsistencyTracker);\n\t\ttry {\n\t\t\tawait documentIndexer.init();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error initializing document indexer\", error);\n\t\t}\n\t\treadModelInstances.push(documentIndexer);\n\t\tconst subscriptionManager = new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());\n\t\tconst subscriptionNotificationReadModel = new SubscriptionNotificationReadModel(subscriptionManager, documentView);\n\t\tconst processorManagerConsistencyTracker = new ConsistencyTracker();\n\t\tconst processorManager = new ProcessorManager(database, operationIndex, writeCache, processorManagerConsistencyTracker, this.logger);\n\t\ttry {\n\t\t\tawait processorManager.init();\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Error initializing processor manager\", error);\n\t\t}\n\t\tconst readModelCoordinator = this.readModelCoordinator ? this.readModelCoordinator : new ReadModelCoordinator(eventBus, readModelInstances, [subscriptionNotificationReadModel, processorManager]);\n\t\tconst reactor = new Reactor(this.logger, documentModelRegistry, queue, jobTracker, readModelCoordinator, this.features, documentView, documentIndexer, operationStore, eventBus, executorManager);\n\t\tlet syncModule = void 0;\n\t\tif (this.channelScheme) {\n\t\t\tconst factory = this.channelScheme === ChannelScheme.CONNECT ? new GqlRequestChannelFactory(this.logger, this.jwtHandler, queue) : new GqlResponseChannelFactory(this.logger);\n\t\t\tsyncModule = new SyncBuilder().withChannelFactory(factory).buildModule(reactor, this.logger, operationIndex, eventBus, database);\n\t\t\tawait syncModule.syncManager.startup();\n\t\t} else if (this.syncBuilder) {\n\t\t\tsyncModule = this.syncBuilder.buildModule(reactor, this.logger, operationIndex, eventBus, database);\n\t\t\tawait syncModule.syncManager.startup();\n\t\t}\n\t\tconst module = {\n\t\t\teventBus,\n\t\t\tdocumentModelRegistry,\n\t\t\tqueue,\n\t\t\tjobTracker,\n\t\t\texecutorManager,\n\t\t\tdatabase,\n\t\t\toperationStore,\n\t\t\tkeyframeStore,\n\t\t\twriteCache,\n\t\t\toperationIndex,\n\t\t\tdocumentView,\n\t\t\tdocumentViewConsistencyTracker,\n\t\t\tdocumentIndexer,\n\t\t\tdocumentIndexerConsistencyTracker,\n\t\t\treadModelCoordinator,\n\t\t\tsubscriptionManager,\n\t\t\tprocessorManager,\n\t\t\tprocessorManagerConsistencyTracker,\n\t\t\tsyncModule,\n\t\t\treactor\n\t\t};\n\t\tif (this.signalHandlersEnabled) this.attachSignalHandlers(module);\n\t\treturn module;\n\t}\n\tattachSignalHandlers(module) {\n\t\tif (typeof globalThis === \"undefined\" || !(\"process\" in globalThis) || typeof globalThis.process.on !== \"function\") return;\n\t\tconst nodeProcess = globalThis.process;\n\t\tlet shutdownInProgress = false;\n\t\tconst handler = async (signal) => {\n\t\t\tif (shutdownInProgress) {\n\t\t\t\tthis.logger.warn(`Received ${signal} again, forcing exit`);\n\t\t\t\tnodeProcess.exit(1);\n\t\t\t}\n\t\t\tshutdownInProgress = true;\n\t\t\tthis.logger.info(`Received ${signal}, starting graceful shutdown...`);\n\t\t\tconst status = module.reactor.kill();\n\t\t\ttry {\n\t\t\t\tawait status.completed;\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error(\"Shutdown failed waiting for reactor:\", error);\n\t\t\t\tnodeProcess.exit(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tawait module.database.destroy();\n\t\t\t} catch (error) {\n\t\t\t\tthis.logger.error(\"Shutdown failed destroying database:\", error);\n\t\t\t\tnodeProcess.exit(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.logger.info(\"Shutdown complete\");\n\t\t\tnodeProcess.exit(0);\n\t\t};\n\t\tnodeProcess.on(\"SIGINT\", () => void handler(\"SIGINT\"));\n\t\tnodeProcess.on(\"SIGTERM\", () => void handler(\"SIGTERM\"));\n\t}\n};\n//#endregion\n//#region src/signer/passthrough-signer.ts\n/**\n* A no-op signer that returns empty values for all methods.\n* Used when signing is not required.\n*/\nvar PassthroughSigner = class {\n\tpublicKey = {};\n\tsign() {\n\t\treturn Promise.resolve(new Uint8Array(0));\n\t}\n\tverify() {\n\t\treturn Promise.resolve();\n\t}\n\tsignAction() {\n\t\treturn Promise.resolve([\n\t\t\t\"\",\n\t\t\t\"\",\n\t\t\t\"\",\n\t\t\t\"\",\n\t\t\t\"\"\n\t\t]);\n\t}\n};\n//#endregion\n//#region src/core/reactor-client-builder.ts\n/**\n* Builder class for constructing ReactorClient instances with proper configuration\n*/\nvar ReactorClientBuilder = class {\n\tlogger;\n\treactorBuilder;\n\treactor;\n\teventBus;\n\tdocumentIndexer;\n\tdocumentView;\n\tsigner;\n\tsignatureVerifier;\n\tsubscriptionManager;\n\tjobAwaiter;\n\tdocumentModelLoader;\n\t/**\n\t* Sets the logger for the ReactorClient.\n\t* @param logger - The logger to use.\n\t* @returns The ReactorClientBuilder instance.\n\t*/\n\twithLogger(logger) {\n\t\tthis.logger = logger;\n\t\treturn this;\n\t}\n\t/**\n\t* Either this or withReactor must be set.\n\t*/\n\twithReactorBuilder(reactorBuilder) {\n\t\tif (this.reactor) throw new Error(\"Reactor is already set\");\n\t\tthis.reactorBuilder = reactorBuilder;\n\t\treturn this;\n\t}\n\t/**\n\t* Either this or withReactorBuilder must be set.\n\t*/\n\twithReactor(reactor, eventBus, documentIndexer, documentView) {\n\t\tif (this.reactorBuilder) throw new Error(\"ReactorBuilder is already set\");\n\t\tthis.reactor = reactor;\n\t\tthis.eventBus = eventBus;\n\t\tthis.documentIndexer = documentIndexer;\n\t\tthis.documentView = documentView;\n\t\treturn this;\n\t}\n\t/**\n\t* Sets the signer configuration for signing and verifying actions.\n\t*\n\t* @param config - Either an ISigner for signing only, or a SignerConfig for both signing and verification\n\t*/\n\twithSigner(config) {\n\t\tif (\"signer\" in config) {\n\t\t\tthis.signer = config.signer;\n\t\t\tthis.signatureVerifier = config.verifier;\n\t\t} else this.signer = config;\n\t\treturn this;\n\t}\n\twithSubscriptionManager(subscriptionManager) {\n\t\tthis.subscriptionManager = subscriptionManager;\n\t\treturn this;\n\t}\n\twithJobAwaiter(jobAwaiter) {\n\t\tthis.jobAwaiter = jobAwaiter;\n\t\treturn this;\n\t}\n\twithDocumentModelLoader(loader) {\n\t\tthis.documentModelLoader = loader;\n\t\treturn this;\n\t}\n\tasync build() {\n\t\treturn (await this.buildModule()).client;\n\t}\n\tasync buildModule() {\n\t\tif (!this.logger) this.logger = new ConsoleLogger([\"reactor-client\"]);\n\t\tlet reactor;\n\t\tlet eventBus;\n\t\tlet documentIndexer;\n\t\tlet documentView;\n\t\tlet reactorModule;\n\t\tif (this.reactorBuilder) {\n\t\t\tif (this.signatureVerifier) this.reactorBuilder.withSignatureVerifier(this.signatureVerifier);\n\t\t\tif (this.documentModelLoader) this.reactorBuilder.withDocumentModelLoader(this.documentModelLoader);\n\t\t\treactorModule = await this.reactorBuilder.buildModule();\n\t\t\treactor = reactorModule.reactor;\n\t\t\teventBus = reactorModule.eventBus;\n\t\t\tdocumentIndexer = reactorModule.documentIndexer;\n\t\t\tdocumentView = reactorModule.documentView;\n\t\t} else if (this.reactor && this.eventBus && this.documentIndexer && this.documentView) {\n\t\t\treactor = this.reactor;\n\t\t\teventBus = this.eventBus;\n\t\t\tdocumentIndexer = this.documentIndexer;\n\t\t\tdocumentView = this.documentView;\n\t\t\treactorModule = void 0;\n\t\t} else throw new Error(\"Either ReactorBuilder or (Reactor + EventBus + DocumentIndexer + DocumentView) is required\");\n\t\tconst signer = this.signer ?? new PassthroughSigner();\n\t\tconst subscriptionManager = this.subscriptionManager ?? reactorModule?.subscriptionManager ?? new ReactorSubscriptionManager(new DefaultSubscriptionErrorHandler());\n\t\tconst jobAwaiter = this.jobAwaiter ?? new JobAwaiter(eventBus, (jobId, signal) => reactor.getJobStatus(jobId, signal));\n\t\treturn {\n\t\t\tclient: new ReactorClient(this.logger, reactor, signer, subscriptionManager, jobAwaiter, documentIndexer, documentView),\n\t\t\treactor,\n\t\t\teventBus,\n\t\t\tdocumentIndexer,\n\t\t\tdocumentView,\n\t\t\tsigner,\n\t\t\tsubscriptionManager,\n\t\t\tjobAwaiter,\n\t\t\treactorModule\n\t\t};\n\t}\n};\n//#endregion\n//#region src/shared/drive-url.ts\n/**\n* Parse a drive URL to extract drive ID and construct GraphQL endpoint.\n* e.g., \"http://localhost:4001/d/abc123\" -> { driveId: \"abc123\", graphqlEndpoint: \"http://localhost:4001/graphql/r\" }\n*/\nfunction parseDriveUrl(url) {\n\tconst parsedUrl = new URL(url);\n\treturn {\n\t\turl,\n\t\tdriveId: url.split(\"/\").pop() ?? \"\",\n\t\tgraphqlEndpoint: `${parsedUrl.protocol}//${parsedUrl.host}/graphql/r`\n\t};\n}\n/**\n* Extract drive ID from a drive URL.\n*/\nfunction driveIdFromUrl(url) {\n\treturn url.split(\"/\").pop() ?? \"\";\n}\n//#endregion\n//#region src/executor/types.ts\n/**\n* Event types for the job executor\n*/\nconst JobExecutorEventTypes = {\n\tJOB_STARTED: 2e4,\n\tJOB_COMPLETED: 20001,\n\tJOB_FAILED: 20002,\n\tEXECUTOR_STARTED: 20003,\n\tEXECUTOR_STOPPED: 20004\n};\n//#endregion\n//#region src/admin/document-integrity-service.ts\nconst nullKeyframeStore = {\n\tputKeyframe: () => Promise.resolve(),\n\tfindNearestKeyframe: () => Promise.resolve(void 0),\n\tlistKeyframes: () => Promise.resolve([]),\n\tdeleteKeyframes: () => Promise.resolve(0)\n};\nvar DocumentIntegrityService = class {\n\tkeyframeStore;\n\toperationStore;\n\twriteCache;\n\tdocumentView;\n\tdocumentModelRegistry;\n\tconstructor(keyframeStore, operationStore, writeCache, documentView, documentModelRegistry) {\n\t\tthis.keyframeStore = keyframeStore;\n\t\tthis.operationStore = operationStore;\n\t\tthis.writeCache = writeCache;\n\t\tthis.documentView = documentView;\n\t\tthis.documentModelRegistry = documentModelRegistry;\n\t}\n\tasync validateDocument(documentId, branch = \"main\", signal) {\n\t\tconst keyframeIssues = [];\n\t\tconst snapshotIssues = [];\n\t\tconst replayCache = new KyselyWriteCache(nullKeyframeStore, this.operationStore, this.documentModelRegistry, {\n\t\t\tmaxDocuments: 1,\n\t\t\tringBufferSize: 1,\n\t\t\tkeyframeInterval: Number.MAX_SAFE_INTEGER\n\t\t});\n\t\tconst keyframes = await this.keyframeStore.listKeyframes(documentId, void 0, branch, signal);\n\t\tfor (const keyframe of keyframes) {\n\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\treplayCache.invalidate(documentId, keyframe.scope, branch);\n\t\t\tconst replayedDoc = await replayCache.getState(documentId, keyframe.scope, branch, keyframe.revision, signal);\n\t\t\tconst kfHash = hashDocumentStateForScope(keyframe.document, keyframe.scope);\n\t\t\tconst replayHash = hashDocumentStateForScope(replayedDoc, keyframe.scope);\n\t\t\tif (kfHash !== replayHash) keyframeIssues.push({\n\t\t\t\tscope: keyframe.scope,\n\t\t\t\tbranch,\n\t\t\t\trevision: keyframe.revision,\n\t\t\t\tkeyframeHash: kfHash,\n\t\t\t\treplayedHash: replayHash\n\t\t\t});\n\t\t}\n\t\tlet currentDoc;\n\t\ttry {\n\t\t\tcurrentDoc = await this.documentView.get(documentId);\n\t\t} catch {\n\t\t\treturn {\n\t\t\t\tdocumentId,\n\t\t\t\tisConsistent: keyframeIssues.length === 0,\n\t\t\t\tkeyframeIssues,\n\t\t\t\tsnapshotIssues\n\t\t\t};\n\t\t}\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\tconst allScopes = Object.keys(revisions.revision);\n\t\tfor (const scope of allScopes) {\n\t\t\tif (scope === \"document\") continue;\n\t\t\treplayCache.invalidate(documentId, scope, branch);\n\t\t\tlet replayedDoc;\n\t\t\ttry {\n\t\t\t\treplayedDoc = await replayCache.getState(documentId, scope, branch, void 0, signal);\n\t\t\t} catch {\n\t\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst snapshotHash = hashDocumentStateForScope(currentDoc, scope);\n\t\t\tconst replayHash = hashDocumentStateForScope(replayedDoc, scope);\n\t\t\tif (snapshotHash !== replayHash) snapshotIssues.push({\n\t\t\t\tscope,\n\t\t\t\tbranch,\n\t\t\t\tsnapshotHash,\n\t\t\t\treplayedHash: replayHash\n\t\t\t});\n\t\t}\n\t\treturn {\n\t\t\tdocumentId,\n\t\t\tisConsistent: keyframeIssues.length === 0 && snapshotIssues.length === 0,\n\t\t\tkeyframeIssues,\n\t\t\tsnapshotIssues\n\t\t};\n\t}\n\tasync rebuildKeyframes(documentId, branch = \"main\", signal) {\n\t\treturn {\n\t\t\tdocumentId,\n\t\t\tkeyframesDeleted: await this.keyframeStore.deleteKeyframes(documentId, void 0, branch, signal),\n\t\t\tscopesInvalidated: 0\n\t\t};\n\t}\n\tasync rebuildSnapshots(documentId, branch = \"main\", signal) {\n\t\tconst scopes = await this.discoverScopes(documentId, branch, signal);\n\t\tfor (const scope of scopes) {\n\t\t\tif (signal?.aborted) throw new Error(\"Operation aborted\");\n\t\t\tthis.writeCache.invalidate(documentId, scope, branch);\n\t\t}\n\t\treturn {\n\t\t\tdocumentId,\n\t\t\tkeyframesDeleted: 0,\n\t\t\tscopesInvalidated: scopes.length\n\t\t};\n\t}\n\tasync discoverScopes(documentId, branch, signal) {\n\t\tconst revisions = await this.operationStore.getRevisions(documentId, branch, signal);\n\t\treturn Object.keys(revisions.revision);\n\t}\n};\n//#endregion\nexport { BaseReadModel, ChannelError, ChannelErrorSource, ChannelScheme, ConsistencyTracker, DefaultSubscriptionErrorHandler, DocumentChangeType, DocumentIntegrityService, DocumentModelRegistry, DuplicateModuleError, DuplicateOperationError, EventBus, EventBusAggregateError, GqlRequestChannel, GqlRequestChannelFactory, GqlResponseChannel, GqlResponseChannelFactory, SimpleJobExecutor as InMemoryJobExecutor, SimpleJobExecutor, InMemoryJobTracker, InMemoryQueue, IntervalPollTimer, InvalidModuleError, JobAwaiter, JobExecutorEventTypes, JobStatus, KyselyDocumentIndexer, KyselyDocumentView, KyselyKeyframeStore, KyselyOperationStore, KyselySyncCursorStorage, KyselySyncRemoteStorage, KyselyWriteCache, Mailbox, ModuleNotFoundError, NullDocumentModelResolver, OptimisticLockError, PollingChannelError, ProcessorManager, PropagationMode, QueueEventTypes, REACTOR_SCHEMA, Reactor, ReactorBuilder, ReactorClient, ReactorClientBuilder, ReactorEventTypes, ReactorSubscriptionManager, ReadModelCoordinator, RelationalDbProcessor, RelationshipChangeType, RevisionMismatchError, SimpleJobExecutorManager, SyncBuilder, SyncEventTypes, SyncOperation, SyncOperationAggregateError, SyncOperationStatus, SyncStatus, SyncStatusTracker, addRelationshipAction, batchOperationsByDocument, consolidateSyncOperations, createDocumentAction, createMutableShutdownStatus, createRelationalDb, deleteDocumentAction, documentActions, driveCollectionId, driveIdFromUrl, envelopesToSyncOperations, getMigrationStatus, makeConsistencyKey, parseDriveUrl, removeRelationshipAction, runMigrations, sortEnvelopesByFirstOperationTimestamp, trimMailboxFromAckOrdinal, upgradeDocumentAction };\n\n//# sourceMappingURL=index.js.map","import type { Operation } from \"@powerhousedao/shared/document-model\";\nimport type { AtomicTxn } from \"@powerhousedao/reactor\";\nimport type { StoredOperation } from \"./types.js\";\n\nexport class HypercoreAtomicTransaction implements AtomicTxn {\n private operations: StoredOperation[] = [];\n\n constructor(\n private documentId: string,\n private documentType: string,\n private scope: string,\n private branch: string,\n ) {}\n\n addOperations(...operations: Operation[]): void {\n for (const op of operations) {\n this.operations.push({\n ...op,\n documentId: this.documentId,\n documentType: this.documentType,\n scope: this.scope,\n branch: this.branch,\n });\n }\n }\n\n getOperations(): StoredOperation[] {\n return this.operations;\n }\n}\n","import type { StoredOperation } from \"./types.js\";\n\nconst PAD_WIDTH = 10;\n\nexport const RANGE_UPPER_BOUND = \"9\".repeat(PAD_WIDTH) + \"~\";\n\nexport function pad(n: number): string {\n return n.toString().padStart(PAD_WIDTH, \"0\");\n}\n\nexport function operationKey(\n documentId: string,\n scope: string,\n branch: string,\n index: number,\n): string {\n return `op/${documentId}/${scope}/${branch}/${pad(index)}`;\n}\n\nexport function operationPrefix(\n documentId: string,\n scope: string,\n branch: string,\n): string {\n return `op/${documentId}/${scope}/${branch}/`;\n}\n\nexport function ordinalKey(ordinal: number): string {\n return `ord/${pad(ordinal)}`;\n}\n\nexport function ordinalPrefix(): string {\n return \"ord/\";\n}\n\nexport function duplicateKey(\n opId: string,\n index: number,\n skip: number,\n): string {\n return `dup/${opId}/${pad(index)}/${pad(skip)}`;\n}\n\nexport function headKey(\n documentId: string,\n scope: string,\n branch: string,\n): string {\n return `_meta/head/${documentId}/${scope}/${branch}`;\n}\n\nexport function headPrefix(documentId: string): string {\n return `_meta/head/${documentId}/`;\n}\n\nexport const ORDINAL_COUNTER_KEY = \"_meta/ordinal\";\n\nexport type ParsedOperationKey = {\n documentId: string;\n scope: string;\n branch: string;\n index: number;\n};\n\nexport function parseOperationKey(key: string): ParsedOperationKey {\n const parts = key.split(\"/\");\n return {\n documentId: parts[1],\n scope: parts[2],\n branch: parts[3],\n index: parseInt(parts[4], 10),\n };\n}\n\nexport type OrdinalEntry = {\n documentId: string;\n documentType: string;\n scope: string;\n branch: string;\n index: number;\n operation: StoredOperation;\n};\n\nexport type HeadEntryValue = {\n index: number;\n latestTimestampUtcMs: string;\n};\n","import type {\n Operation,\n OperationWithContext,\n} from \"@powerhousedao/shared/document-model\";\nimport type {\n AtomicTxn,\n DocumentRevisions,\n IOperationStore,\n OperationFilter,\n PagedResults,\n PagingOptions,\n} from \"@powerhousedao/reactor\";\nimport {\n DuplicateOperationError,\n RevisionMismatchError,\n} from \"@powerhousedao/reactor\";\nimport type Hyperbee from \"hyperbee\";\nimport { HypercoreAtomicTransaction } from \"./hypercore-atomic-transaction.js\";\nimport {\n ORDINAL_COUNTER_KEY,\n RANGE_UPPER_BOUND,\n duplicateKey,\n headKey,\n headPrefix,\n operationKey,\n operationPrefix,\n ordinalKey,\n ordinalPrefix,\n pad,\n} from \"./key-encoding.js\";\nimport type { HeadEntryValue, OrdinalEntry } from \"./key-encoding.js\";\nimport type { StoredOperation } from \"./types.js\";\n\nexport class HypercoreOperationStore implements IOperationStore {\n private applyLock: Promise<void> = Promise.resolve();\n\n constructor(private bee: Hyperbee) {}\n\n async apply(\n documentId: string,\n documentType: string,\n scope: string,\n branch: string,\n revision: number,\n fn: (txn: AtomicTxn) => void | Promise<void>,\n signal?: AbortSignal,\n ): Promise<void> {\n const prevLock = this.applyLock;\n let releaseLock: () => void;\n this.applyLock = new Promise<void>((resolve) => {\n releaseLock = resolve;\n });\n\n await prevLock;\n\n try {\n await this.executeApply(\n documentId,\n documentType,\n scope,\n branch,\n revision,\n fn,\n signal,\n );\n } finally {\n releaseLock!();\n }\n }\n\n private async executeApply(\n documentId: string,\n documentType: string,\n scope: string,\n branch: string,\n revision: number,\n fn: (txn: AtomicTxn) => void | Promise<void>,\n signal?: AbortSignal,\n ): Promise<void> {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n\n const hKey = headKey(documentId, scope, branch);\n const headEntry = await this.bee.get(hKey);\n const currentRevision = headEntry\n ? (headEntry.value as HeadEntryValue).index\n : -1;\n\n if (currentRevision !== revision - 1) {\n throw new RevisionMismatchError(currentRevision + 1, revision);\n }\n\n const atomicTxn = new HypercoreAtomicTransaction(\n documentId,\n documentType,\n scope,\n branch,\n );\n await fn(atomicTxn);\n\n const operations = atomicTxn.getOperations();\n if (operations.length === 0) {\n return;\n }\n\n for (const op of operations) {\n const dupKey = duplicateKey(op.id, op.index, op.skip);\n const existing = await this.bee.get(dupKey);\n if (existing) {\n throw new DuplicateOperationError(\n `${op.id} at index ${op.index} with skip ${op.skip}`,\n );\n }\n }\n\n const ordinalEntry = await this.bee.get(ORDINAL_COUNTER_KEY);\n let nextOrdinal: number = ordinalEntry ? (ordinalEntry.value as number) : 0;\n\n const batch = this.bee.batch();\n\n for (const op of operations) {\n const opKey = operationKey(documentId, scope, branch, op.index);\n const serialized = this.serializeOperation(op);\n await batch.put(opKey, serialized);\n\n const ordEntry: OrdinalEntry = {\n documentId,\n documentType,\n scope,\n branch,\n index: op.index,\n operation: serialized,\n };\n await batch.put(ordinalKey(nextOrdinal), ordEntry);\n\n await batch.put(duplicateKey(op.id, op.index, op.skip), \"\");\n\n nextOrdinal++;\n }\n\n const lastOp = operations[operations.length - 1];\n const headValue: HeadEntryValue = {\n index: lastOp.index,\n latestTimestampUtcMs: lastOp.timestampUtcMs,\n };\n await batch.put(hKey, headValue);\n await batch.put(ORDINAL_COUNTER_KEY, nextOrdinal);\n\n await batch.flush();\n }\n\n async getSince(\n documentId: string,\n scope: string,\n branch: string,\n revision: number,\n filter?: OperationFilter,\n paging?: PagingOptions,\n signal?: AbortSignal,\n ): Promise<PagedResults<Operation>> {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n\n const prefix = operationPrefix(documentId, scope, branch);\n const startIndex = revision + 1;\n const cursorIndex =\n paging?.cursor && parseInt(paging.cursor, 10) > 0\n ? parseInt(paging.cursor, 10) + 1\n : startIndex;\n const effectiveStart = Math.max(startIndex, cursorIndex);\n\n const gt = prefix + pad(effectiveStart - 1);\n const lt = prefix + RANGE_UPPER_BOUND;\n const limit = paging?.limit ? paging.limit + 1 : undefined;\n\n const items: Operation[] = [];\n const stream = this.bee.createReadStream({ gt, lt, limit });\n\n for await (const entry of stream) {\n const stored = entry.value as StoredOperation;\n\n if (filter) {\n if (\n filter.actionTypes &&\n filter.actionTypes.length > 0 &&\n !filter.actionTypes.includes((stored.action as { type: string }).type)\n ) {\n continue;\n }\n if (\n filter.timestampFrom &&\n stored.timestampUtcMs < filter.timestampFrom\n ) {\n continue;\n }\n if (filter.timestampTo && stored.timestampUtcMs > filter.timestampTo) {\n continue;\n }\n if (\n filter.sinceRevision !== undefined &&\n stored.index < filter.sinceRevision\n ) {\n continue;\n }\n }\n\n items.push(this.toOperation(stored));\n }\n\n let hasMore = false;\n let resultItems = items;\n\n if (paging?.limit && items.length > paging.limit) {\n hasMore = true;\n resultItems = items.slice(0, paging.limit);\n }\n\n const nextCursor =\n hasMore && resultItems.length > 0\n ? resultItems[resultItems.length - 1].index.toString()\n : undefined;\n\n const cursor = paging?.cursor || \"0\";\n const resultLimit = paging?.limit || 100;\n\n return {\n results: resultItems,\n options: { cursor, limit: resultLimit },\n nextCursor,\n next: hasMore\n ? () =>\n this.getSince(\n documentId,\n scope,\n branch,\n revision,\n filter,\n { cursor: nextCursor!, limit: resultLimit },\n signal,\n )\n : undefined,\n };\n }\n\n async getSinceId(\n id: number,\n paging?: PagingOptions,\n signal?: AbortSignal,\n ): Promise<PagedResults<OperationWithContext>> {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n\n const cursorValue =\n paging?.cursor && parseInt(paging.cursor, 10) > 0\n ? parseInt(paging.cursor, 10)\n : id;\n const effectiveId = Math.max(id, cursorValue);\n\n const gt = ordinalPrefix() + pad(effectiveId);\n const lt = ordinalPrefix() + RANGE_UPPER_BOUND;\n const limit = paging?.limit ? paging.limit + 1 : undefined;\n\n const items: OperationWithContext[] = [];\n const stream = this.bee.createReadStream({ gt, lt, limit });\n\n for await (const entry of stream) {\n const ordEntry = entry.value as OrdinalEntry;\n const ordinal = parseInt(entry.key.split(\"/\")[1], 10);\n\n items.push({\n operation: this.toOperation(ordEntry.operation),\n context: {\n documentId: ordEntry.documentId,\n documentType: ordEntry.documentType,\n scope: ordEntry.scope,\n branch: ordEntry.branch,\n ordinal,\n },\n });\n }\n\n let hasMore = false;\n let resultItems = items;\n\n if (paging?.limit && items.length > paging.limit) {\n hasMore = true;\n resultItems = items.slice(0, paging.limit);\n }\n\n const nextCursor =\n hasMore && resultItems.length > 0\n ? resultItems[resultItems.length - 1].context.ordinal.toString()\n : undefined;\n\n const cursor = paging?.cursor || \"0\";\n const resultLimit = paging?.limit || 100;\n\n return {\n results: resultItems,\n options: { cursor, limit: resultLimit },\n nextCursor,\n next: hasMore\n ? () =>\n this.getSinceId(\n id,\n { cursor: nextCursor!, limit: resultLimit },\n signal,\n )\n : undefined,\n };\n }\n\n async getConflicting(\n documentId: string,\n scope: string,\n branch: string,\n minTimestamp: string,\n paging?: PagingOptions,\n signal?: AbortSignal,\n ): Promise<PagedResults<Operation>> {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n\n const prefix = operationPrefix(documentId, scope, branch);\n const cursorIndex =\n paging?.cursor && parseInt(paging.cursor, 10) > 0\n ? parseInt(paging.cursor, 10)\n : -1;\n\n const gt = cursorIndex >= 0 ? prefix + pad(cursorIndex) : prefix;\n const lt = prefix + RANGE_UPPER_BOUND;\n\n const stream = this.bee.createReadStream({\n gt: cursorIndex >= 0 ? gt : undefined,\n gte: cursorIndex >= 0 ? undefined : gt,\n lt,\n });\n\n const items: Operation[] = [];\n\n for await (const entry of stream) {\n const stored = entry.value as StoredOperation;\n if (stored.timestampUtcMs >= minTimestamp) {\n items.push(this.toOperation(stored));\n }\n }\n\n let hasMore = false;\n let resultItems = items;\n\n if (paging?.limit && items.length > paging.limit) {\n hasMore = true;\n resultItems = items.slice(0, paging.limit);\n }\n\n const nextCursor =\n hasMore && resultItems.length > 0\n ? resultItems[resultItems.length - 1].index.toString()\n : undefined;\n\n const cursor = paging?.cursor || \"0\";\n const resultLimit = paging?.limit || 100;\n\n return {\n results: resultItems,\n options: { cursor, limit: resultLimit },\n nextCursor,\n next: hasMore\n ? () =>\n this.getConflicting(\n documentId,\n scope,\n branch,\n minTimestamp,\n { cursor: nextCursor!, limit: resultLimit },\n signal,\n )\n : undefined,\n };\n }\n\n async getRevisions(\n documentId: string,\n branch: string,\n signal?: AbortSignal,\n ): Promise<DocumentRevisions> {\n if (signal?.aborted) {\n throw new Error(\"Operation aborted\");\n }\n\n const prefix = headPrefix(documentId);\n const stream = this.bee.createReadStream({\n gte: prefix,\n lt: prefix + \"~\",\n });\n\n const revision: Record<string, number> = {};\n let latestTimestamp = new Date(0).toISOString();\n\n for await (const entry of stream) {\n const parts = entry.key.split(\"/\");\n const entryScope = parts[3];\n const entryBranch = parts[4];\n\n if (entryBranch !== branch) {\n continue;\n }\n\n const headValue = entry.value as HeadEntryValue;\n revision[entryScope] = headValue.index + 1;\n\n if (headValue.latestTimestampUtcMs > latestTimestamp) {\n latestTimestamp = headValue.latestTimestampUtcMs;\n }\n }\n\n return { revision, latestTimestamp };\n }\n\n private serializeOperation(op: StoredOperation): StoredOperation {\n return {\n id: op.id,\n index: op.index,\n skip: op.skip,\n timestampUtcMs: op.timestampUtcMs,\n hash: op.hash,\n error: op.error,\n action: op.action,\n documentId: op.documentId,\n documentType: op.documentType,\n scope: op.scope,\n branch: op.branch,\n };\n }\n\n private toOperation(stored: StoredOperation): Operation {\n return {\n id: stored.id,\n index: stored.index,\n skip: stored.skip,\n timestampUtcMs: stored.timestampUtcMs,\n hash: stored.hash,\n error: stored.error || undefined,\n action: stored.action,\n };\n }\n}\n","import Corestore from \"corestore\";\nimport Hyperbee from \"hyperbee\";\n\nexport class StorageManager {\n private store: Corestore;\n private bee: Hyperbee | undefined;\n\n constructor(storagePath: string) {\n this.store = new Corestore(storagePath);\n }\n\n async open(): Promise<void> {\n await this.store.ready();\n const core = this.store.get({ name: \"operations\" });\n this.bee = new Hyperbee(core, {\n keyEncoding: \"utf-8\",\n valueEncoding: \"json\",\n });\n await this.bee.ready();\n }\n\n async close(): Promise<void> {\n if (this.bee) {\n await this.bee.close();\n }\n await this.store.close();\n }\n\n getBee(): Hyperbee {\n if (!this.bee) {\n throw new Error(\"StorageManager not opened. Call open() first.\");\n }\n return this.bee;\n }\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208],"mappings":"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"}