sensemaking 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -13
- package/dist/cjs/cli/map.js +147 -6
- package/dist/cjs/cli/map.js.map +1 -1
- package/dist/cjs/cli/named.js +20 -12
- package/dist/cjs/cli/named.js.map +1 -1
- package/dist/cjs/cli/path.js +190 -29
- package/dist/cjs/cli/path.js.map +1 -1
- package/dist/cjs/cli/peek.js +148 -7
- package/dist/cjs/cli/peek.js.map +1 -1
- package/dist/cjs/cli/related.js +5 -5
- package/dist/cjs/cli/related.js.map +1 -1
- package/dist/cjs/cli/search.js +5 -5
- package/dist/cjs/cli/search.js.map +1 -1
- package/dist/cjs/cli/shared.d.cts +3 -3
- package/dist/cjs/cli/shared.d.ts +3 -3
- package/dist/cjs/cli/shared.js +156 -58
- package/dist/cjs/cli/shared.js.map +1 -1
- package/dist/cjs/cli/sql.js +151 -10
- package/dist/cjs/cli/sql.js.map +1 -1
- package/dist/cjs/cli/status.js +187 -62
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/commands/map.d.cts +2 -2
- package/dist/cjs/commands/map.d.ts +2 -2
- package/dist/cjs/commands/map.js +373 -67
- package/dist/cjs/commands/map.js.map +1 -1
- package/dist/cjs/commands/peek.d.cts +2 -2
- package/dist/cjs/commands/peek.d.ts +2 -2
- package/dist/cjs/commands/peek.js +321 -79
- package/dist/cjs/commands/peek.js.map +1 -1
- package/dist/cjs/commands/related.d.cts +2 -2
- package/dist/cjs/commands/related.d.ts +2 -2
- package/dist/cjs/commands/related.js +55 -10
- package/dist/cjs/commands/related.js.map +1 -1
- package/dist/cjs/commands/scope.d.cts +7 -7
- package/dist/cjs/commands/scope.d.ts +7 -7
- package/dist/cjs/commands/scope.js +382 -45
- package/dist/cjs/commands/scope.js.map +1 -1
- package/dist/cjs/commands/search.d.cts +2 -2
- package/dist/cjs/commands/search.d.ts +2 -2
- package/dist/cjs/commands/search.js +292 -99
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/commands/signals.d.cts +4 -10
- package/dist/cjs/commands/signals.d.ts +4 -10
- package/dist/cjs/commands/signals.js +91 -45
- package/dist/cjs/commands/signals.js.map +1 -1
- package/dist/cjs/commands/status.d.cts +2 -2
- package/dist/cjs/commands/status.d.ts +2 -2
- package/dist/cjs/commands/status.js +247 -10
- package/dist/cjs/commands/status.js.map +1 -1
- package/dist/cjs/config/access.d.cts +1 -0
- package/dist/cjs/config/access.d.ts +1 -0
- package/dist/cjs/config/access.js +7 -0
- package/dist/cjs/config/access.js.map +1 -1
- package/dist/cjs/config/index.d.cts +1 -1
- package/dist/cjs/config/index.d.ts +1 -1
- package/dist/cjs/config/index.js +3 -0
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/types.d.cts +1 -0
- package/dist/cjs/config/types.d.ts +1 -0
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js +10 -1
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/embed/distribution.d.cts +4 -0
- package/dist/cjs/embed/distribution.d.ts +4 -0
- package/dist/cjs/embed/distribution.js +186 -0
- package/dist/cjs/embed/distribution.js.map +1 -0
- package/dist/cjs/embed/langfit.d.cts +2 -5
- package/dist/cjs/embed/langfit.d.ts +2 -5
- package/dist/cjs/embed/langfit.js +73 -63
- package/dist/cjs/embed/langfit.js.map +1 -1
- package/dist/cjs/embed/query.d.cts +6 -13
- package/dist/cjs/embed/query.d.ts +6 -13
- package/dist/cjs/embed/query.js +56 -168
- package/dist/cjs/embed/query.js.map +1 -1
- package/dist/cjs/embed/static.js +13 -3
- package/dist/cjs/embed/static.js.map +1 -1
- package/dist/cjs/embed/types.d.cts +1 -0
- package/dist/cjs/embed/types.d.ts +1 -0
- package/dist/cjs/embed/types.js +11 -2
- package/dist/cjs/embed/types.js.map +1 -1
- package/dist/cjs/errors.d.cts +1 -1
- package/dist/cjs/errors.d.ts +1 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/features/embed.js +218 -11
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/features/index.d.cts +1 -1
- package/dist/cjs/features/index.d.ts +1 -1
- package/dist/cjs/features/index.js +6 -0
- package/dist/cjs/features/index.js.map +1 -1
- package/dist/cjs/features/links.d.cts +7 -2
- package/dist/cjs/features/links.d.ts +7 -2
- package/dist/cjs/features/links.js +710 -198
- package/dist/cjs/features/links.js.map +1 -1
- package/dist/cjs/features/rank.js +231 -31
- package/dist/cjs/features/rank.js.map +1 -1
- package/dist/cjs/features/sections.js +218 -8
- package/dist/cjs/features/sections.js.map +1 -1
- package/dist/cjs/features/tags.js +236 -40
- package/dist/cjs/features/tags.js.map +1 -1
- package/dist/cjs/features/types.d.cts +9 -5
- package/dist/cjs/features/types.d.ts +9 -5
- package/dist/cjs/graph/traverse.d.cts +2 -2
- package/dist/cjs/graph/traverse.d.ts +2 -2
- package/dist/cjs/graph/traverse.js +321 -42
- package/dist/cjs/graph/traverse.js.map +1 -1
- package/dist/cjs/index.d.cts +3 -2
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/guarded-tick.d.cts +1 -0
- package/dist/cjs/lib/guarded-tick.d.ts +1 -0
- package/dist/cjs/lib/guarded-tick.js +19 -0
- package/dist/cjs/lib/guarded-tick.js.map +1 -0
- package/dist/cjs/output/column-hint.d.cts +1 -2
- package/dist/cjs/output/column-hint.d.ts +1 -2
- package/dist/cjs/output/column-hint.js +1 -4
- package/dist/cjs/output/column-hint.js.map +1 -1
- package/dist/cjs/output/output.d.cts +2 -1
- package/dist/cjs/output/output.d.ts +2 -1
- package/dist/cjs/output/output.js +515 -97
- package/dist/cjs/output/output.js.map +1 -1
- package/dist/cjs/scan/frontmatter.js.map +1 -1
- package/dist/cjs/scan/index.js.map +1 -1
- package/dist/cjs/scan/reparse.d.cts +10 -0
- package/dist/cjs/scan/reparse.d.ts +10 -0
- package/dist/cjs/scan/reparse.js +104 -0
- package/dist/cjs/scan/reparse.js.map +1 -0
- package/dist/cjs/store/duckdb/batch.d.cts +16 -0
- package/dist/cjs/store/duckdb/batch.d.ts +16 -0
- package/dist/cjs/store/duckdb/batch.js +208 -0
- package/dist/cjs/store/duckdb/batch.js.map +1 -0
- package/dist/cjs/store/duckdb/connection.d.cts +5 -0
- package/dist/cjs/store/duckdb/connection.d.ts +5 -0
- package/dist/cjs/store/duckdb/connection.js +772 -0
- package/dist/cjs/store/duckdb/connection.js.map +1 -0
- package/dist/cjs/store/duckdb/lexical.d.cts +10 -0
- package/dist/cjs/store/duckdb/lexical.d.ts +10 -0
- package/dist/cjs/store/duckdb/lexical.js +502 -0
- package/dist/cjs/store/duckdb/lexical.js.map +1 -0
- package/dist/cjs/store/duckdb/native.d.cts +3 -0
- package/dist/cjs/store/duckdb/native.d.ts +3 -0
- package/dist/cjs/store/duckdb/native.js +360 -0
- package/dist/cjs/store/duckdb/native.js.map +1 -0
- package/dist/cjs/store/duckdb/open.d.cts +12 -0
- package/dist/cjs/store/duckdb/open.d.ts +12 -0
- package/dist/cjs/store/duckdb/open.js +501 -0
- package/dist/cjs/store/duckdb/open.js.map +1 -0
- package/dist/cjs/store/duckdb/reconcile.d.cts +6 -0
- package/dist/cjs/store/duckdb/reconcile.d.ts +6 -0
- package/dist/cjs/store/duckdb/reconcile.js +753 -0
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -0
- package/dist/cjs/store/duckdb/sql-functions.d.cts +2 -0
- package/dist/cjs/store/duckdb/sql-functions.d.ts +2 -0
- package/dist/cjs/store/duckdb/sql-functions.js +203 -0
- package/dist/cjs/store/duckdb/sql-functions.js.map +1 -0
- package/dist/cjs/store/duckdb/store.d.cts +5 -0
- package/dist/cjs/store/duckdb/store.d.ts +5 -0
- package/dist/cjs/store/duckdb/store.js +504 -0
- package/dist/cjs/store/duckdb/store.js.map +1 -0
- package/dist/cjs/store/duckdb/vectors.d.cts +9 -0
- package/dist/cjs/store/duckdb/vectors.d.ts +9 -0
- package/dist/cjs/store/duckdb/vectors.js +502 -0
- package/dist/cjs/store/duckdb/vectors.js.map +1 -0
- package/dist/cjs/store/index.d.cts +7 -0
- package/dist/cjs/store/index.d.ts +7 -0
- package/dist/cjs/store/index.js +201 -0
- package/dist/cjs/store/index.js.map +1 -0
- package/dist/cjs/store/meta.d.cts +3 -0
- package/dist/cjs/store/meta.d.ts +3 -0
- package/dist/cjs/store/meta.js +215 -0
- package/dist/cjs/store/meta.js.map +1 -0
- package/dist/cjs/store/shared.d.cts +5 -0
- package/dist/cjs/store/shared.d.ts +5 -0
- package/dist/cjs/store/shared.js +252 -0
- package/dist/cjs/store/shared.js.map +1 -0
- package/dist/cjs/store/sql-functions.d.cts +2 -0
- package/dist/cjs/store/sql-functions.d.ts +2 -0
- package/dist/cjs/store/sql-functions.js +48 -0
- package/dist/cjs/store/sql-functions.js.map +1 -0
- package/dist/cjs/store/sqlite/connection.d.cts +3 -0
- package/dist/cjs/store/sqlite/connection.d.ts +3 -0
- package/dist/cjs/store/sqlite/connection.js +516 -0
- package/dist/cjs/store/sqlite/connection.js.map +1 -0
- package/dist/cjs/store/sqlite/lexical.d.cts +2 -0
- package/dist/cjs/store/sqlite/lexical.d.ts +2 -0
- package/dist/cjs/store/sqlite/lexical.js +177 -0
- package/dist/cjs/store/sqlite/lexical.js.map +1 -0
- package/dist/cjs/{db → store/sqlite}/open.d.cts +5 -5
- package/dist/cjs/{db → store/sqlite}/open.d.ts +5 -5
- package/dist/cjs/store/sqlite/open.js +604 -0
- package/dist/cjs/store/sqlite/open.js.map +1 -0
- package/dist/cjs/store/sqlite/reconcile.d.cts +10 -0
- package/dist/cjs/store/sqlite/reconcile.d.ts +10 -0
- package/dist/cjs/store/sqlite/reconcile.js +1020 -0
- package/dist/cjs/store/sqlite/reconcile.js.map +1 -0
- package/dist/cjs/store/sqlite/sql-functions.js +34 -0
- package/dist/cjs/store/sqlite/sql-functions.js.map +1 -0
- package/dist/cjs/store/sqlite/store.d.cts +5 -0
- package/dist/cjs/store/sqlite/store.d.ts +5 -0
- package/dist/cjs/store/sqlite/store.js +588 -0
- package/dist/cjs/store/sqlite/store.js.map +1 -0
- package/dist/cjs/store/sqlite/vectors.d.cts +13 -0
- package/dist/cjs/store/sqlite/vectors.d.ts +13 -0
- package/dist/cjs/store/sqlite/vectors.js +470 -0
- package/dist/cjs/store/sqlite/vectors.js.map +1 -0
- package/dist/cjs/store/transaction.d.cts +5 -0
- package/dist/cjs/store/transaction.d.ts +5 -0
- package/dist/cjs/store/transaction.js +297 -0
- package/dist/cjs/store/transaction.js.map +1 -0
- package/dist/cjs/store/types.d.cts +91 -0
- package/dist/cjs/store/types.d.ts +91 -0
- package/dist/cjs/store/types.js +15 -0
- package/dist/cjs/store/types.js.map +1 -0
- package/dist/cjs/watch.d.cts +3 -0
- package/dist/cjs/watch.d.ts +3 -0
- package/dist/cjs/watch.js +215 -73
- package/dist/cjs/watch.js.map +1 -1
- package/dist/esm/cli/map.js +5 -5
- package/dist/esm/cli/map.js.map +1 -1
- package/dist/esm/cli/named.js +3 -3
- package/dist/esm/cli/named.js.map +1 -1
- package/dist/esm/cli/path.js +6 -5
- package/dist/esm/cli/path.js.map +1 -1
- package/dist/esm/cli/peek.js +5 -5
- package/dist/esm/cli/peek.js.map +1 -1
- package/dist/esm/cli/related.js +3 -3
- package/dist/esm/cli/related.js.map +1 -1
- package/dist/esm/cli/search.js +2 -2
- package/dist/esm/cli/search.js.map +1 -1
- package/dist/esm/cli/shared.d.ts +3 -3
- package/dist/esm/cli/shared.js +17 -17
- package/dist/esm/cli/shared.js.map +1 -1
- package/dist/esm/cli/sql.js +2 -2
- package/dist/esm/cli/sql.js.map +1 -1
- package/dist/esm/cli/status.js +25 -24
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/commands/map.d.ts +2 -2
- package/dist/esm/commands/map.js +51 -41
- package/dist/esm/commands/map.js.map +1 -1
- package/dist/esm/commands/peek.d.ts +2 -2
- package/dist/esm/commands/peek.js +58 -50
- package/dist/esm/commands/peek.js.map +1 -1
- package/dist/esm/commands/related.d.ts +2 -2
- package/dist/esm/commands/related.js +9 -9
- package/dist/esm/commands/related.js.map +1 -1
- package/dist/esm/commands/scope.d.ts +7 -7
- package/dist/esm/commands/scope.js +28 -17
- package/dist/esm/commands/scope.js.map +1 -1
- package/dist/esm/commands/search.d.ts +2 -2
- package/dist/esm/commands/search.js +42 -35
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/commands/signals.d.ts +4 -10
- package/dist/esm/commands/signals.js +17 -13
- package/dist/esm/commands/signals.js.map +1 -1
- package/dist/esm/commands/status.d.ts +2 -2
- package/dist/esm/commands/status.js +13 -7
- package/dist/esm/commands/status.js.map +1 -1
- package/dist/esm/config/access.d.ts +1 -0
- package/dist/esm/config/access.js +5 -0
- package/dist/esm/config/access.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/types.d.ts +1 -0
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js +10 -1
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/embed/distribution.d.ts +4 -0
- package/dist/esm/embed/distribution.js +11 -0
- package/dist/esm/embed/distribution.js.map +1 -0
- package/dist/esm/embed/langfit.d.ts +2 -5
- package/dist/esm/embed/langfit.js +13 -13
- package/dist/esm/embed/langfit.js.map +1 -1
- package/dist/esm/embed/query.d.ts +6 -13
- package/dist/esm/embed/query.js +23 -84
- package/dist/esm/embed/query.js.map +1 -1
- package/dist/esm/embed/static.js +6 -1
- package/dist/esm/embed/static.js.map +1 -1
- package/dist/esm/embed/types.d.ts +1 -0
- package/dist/esm/embed/types.js +5 -3
- package/dist/esm/embed/types.js.map +1 -1
- package/dist/esm/errors.d.ts +1 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/features/embed.js +22 -10
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/features/index.d.ts +1 -1
- package/dist/esm/features/index.js +1 -1
- package/dist/esm/features/index.js.map +1 -1
- package/dist/esm/features/links.d.ts +7 -2
- package/dist/esm/features/links.js +124 -97
- package/dist/esm/features/links.js.map +1 -1
- package/dist/esm/features/rank.js +15 -8
- package/dist/esm/features/rank.js.map +1 -1
- package/dist/esm/features/sections.js +20 -7
- package/dist/esm/features/sections.js.map +1 -1
- package/dist/esm/features/tags.js +19 -18
- package/dist/esm/features/tags.js.map +1 -1
- package/dist/esm/features/types.d.ts +9 -5
- package/dist/esm/features/types.js +1 -1
- package/dist/esm/features/types.js.map +1 -1
- package/dist/esm/graph/traverse.d.ts +2 -2
- package/dist/esm/graph/traverse.js +26 -23
- package/dist/esm/graph/traverse.js.map +1 -1
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/guarded-tick.d.ts +1 -0
- package/dist/esm/lib/guarded-tick.js +8 -0
- package/dist/esm/lib/guarded-tick.js.map +1 -0
- package/dist/esm/output/column-hint.d.ts +1 -2
- package/dist/esm/output/column-hint.js +3 -2
- package/dist/esm/output/column-hint.js.map +1 -1
- package/dist/esm/output/output.d.ts +2 -1
- package/dist/esm/output/output.js +27 -23
- package/dist/esm/output/output.js.map +1 -1
- package/dist/esm/scan/frontmatter.js +1 -1
- package/dist/esm/scan/frontmatter.js.map +1 -1
- package/dist/esm/scan/index.js +1 -1
- package/dist/esm/scan/index.js.map +1 -1
- package/dist/esm/scan/reparse.d.ts +10 -0
- package/dist/esm/scan/reparse.js +30 -0
- package/dist/esm/scan/reparse.js.map +1 -0
- package/dist/esm/store/duckdb/batch.d.ts +16 -0
- package/dist/esm/store/duckdb/batch.js +96 -0
- package/dist/esm/store/duckdb/batch.js.map +1 -0
- package/dist/esm/store/duckdb/connection.d.ts +5 -0
- package/dist/esm/store/duckdb/connection.js +97 -0
- package/dist/esm/store/duckdb/connection.js.map +1 -0
- package/dist/esm/store/duckdb/lexical.d.ts +10 -0
- package/dist/esm/store/duckdb/lexical.js +163 -0
- package/dist/esm/store/duckdb/lexical.js.map +1 -0
- package/dist/esm/store/duckdb/native.d.ts +3 -0
- package/dist/esm/store/duckdb/native.js +96 -0
- package/dist/esm/store/duckdb/native.js.map +1 -0
- package/dist/esm/store/duckdb/open.d.ts +12 -0
- package/dist/esm/store/duckdb/open.js +127 -0
- package/dist/esm/store/duckdb/open.js.map +1 -0
- package/dist/esm/store/duckdb/reconcile.d.ts +6 -0
- package/dist/esm/store/duckdb/reconcile.js +141 -0
- package/dist/esm/store/duckdb/reconcile.js.map +1 -0
- package/dist/esm/store/duckdb/sql-functions.d.ts +2 -0
- package/dist/esm/store/duckdb/sql-functions.js +56 -0
- package/dist/esm/store/duckdb/sql-functions.js.map +1 -0
- package/dist/esm/store/duckdb/store.d.ts +5 -0
- package/dist/esm/store/duckdb/store.js +104 -0
- package/dist/esm/store/duckdb/store.js.map +1 -0
- package/dist/esm/store/duckdb/vectors.d.ts +9 -0
- package/dist/esm/store/duckdb/vectors.js +171 -0
- package/dist/esm/store/duckdb/vectors.js.map +1 -0
- package/dist/esm/store/index.d.ts +7 -0
- package/dist/esm/store/index.js +35 -0
- package/dist/esm/store/index.js.map +1 -0
- package/dist/esm/store/meta.d.ts +3 -0
- package/dist/esm/store/meta.js +17 -0
- package/dist/esm/store/meta.js.map +1 -0
- package/dist/esm/store/shared.d.ts +5 -0
- package/dist/esm/store/shared.js +24 -0
- package/dist/esm/store/shared.js.map +1 -0
- package/dist/esm/store/sql-functions.d.ts +2 -0
- package/dist/esm/store/sql-functions.js +29 -0
- package/dist/esm/store/sql-functions.js.map +1 -0
- package/dist/esm/store/sqlite/connection.d.ts +3 -0
- package/dist/esm/store/sqlite/connection.js +50 -0
- package/dist/esm/store/sqlite/connection.js.map +1 -0
- package/dist/esm/store/sqlite/lexical.d.ts +2 -0
- package/dist/esm/store/sqlite/lexical.js +21 -0
- package/dist/esm/store/sqlite/lexical.js.map +1 -0
- package/dist/esm/{db → store/sqlite}/open.d.ts +5 -5
- package/dist/esm/store/sqlite/open.js +193 -0
- package/dist/esm/store/sqlite/open.js.map +1 -0
- package/dist/esm/store/sqlite/reconcile.d.ts +10 -0
- package/dist/esm/{db → store/sqlite}/reconcile.js +101 -99
- package/dist/esm/store/sqlite/reconcile.js.map +1 -0
- package/dist/esm/store/sqlite/sql-functions.js +23 -0
- package/dist/esm/store/sqlite/sql-functions.js.map +1 -0
- package/dist/esm/store/sqlite/store.d.ts +5 -0
- package/dist/esm/store/sqlite/store.js +82 -0
- package/dist/esm/store/sqlite/store.js.map +1 -0
- package/dist/esm/store/sqlite/vectors.d.ts +13 -0
- package/dist/esm/store/sqlite/vectors.js +90 -0
- package/dist/esm/store/sqlite/vectors.js.map +1 -0
- package/dist/esm/store/transaction.d.ts +5 -0
- package/dist/esm/store/transaction.js +57 -0
- package/dist/esm/store/transaction.js.map +1 -0
- package/dist/esm/store/types.d.ts +91 -0
- package/dist/esm/store/types.js +11 -0
- package/dist/esm/store/types.js.map +1 -0
- package/dist/esm/watch.d.ts +3 -0
- package/dist/esm/watch.js +39 -22
- package/dist/esm/watch.js.map +1 -1
- package/package.json +3 -1
- package/schema.json +5 -0
- package/skills/sense/EXAMPLES.md +3 -3
- package/skills/sense/SKILL.md +16 -14
- package/skills/sense-bases/EXAMPLES.md +2 -2
- package/skills/sense-bases/SKILL.md +6 -6
- package/skills/sense-setup/EXAMPLES.md +1 -1
- package/skills/sense-setup/SKILL.md +5 -4
- package/dist/cjs/db/index.d.cts +0 -4
- package/dist/cjs/db/index.d.ts +0 -4
- package/dist/cjs/db/index.js +0 -42
- package/dist/cjs/db/index.js.map +0 -1
- package/dist/cjs/db/open.js +0 -230
- package/dist/cjs/db/open.js.map +0 -1
- package/dist/cjs/db/reconcile.d.cts +0 -10
- package/dist/cjs/db/reconcile.d.ts +0 -10
- package/dist/cjs/db/reconcile.js +0 -579
- package/dist/cjs/db/reconcile.js.map +0 -1
- package/dist/cjs/db/shared.d.cts +0 -5
- package/dist/cjs/db/shared.d.ts +0 -5
- package/dist/cjs/db/shared.js +0 -45
- package/dist/cjs/db/shared.js.map +0 -1
- package/dist/cjs/db/sql-functions.js +0 -64
- package/dist/cjs/db/sql-functions.js.map +0 -1
- package/dist/esm/db/index.d.ts +0 -4
- package/dist/esm/db/index.js +0 -5
- package/dist/esm/db/index.js.map +0 -1
- package/dist/esm/db/open.js +0 -165
- package/dist/esm/db/open.js.map +0 -1
- package/dist/esm/db/reconcile.d.ts +0 -10
- package/dist/esm/db/reconcile.js.map +0 -1
- package/dist/esm/db/shared.d.ts +0 -5
- package/dist/esm/db/shared.js +0 -20
- package/dist/esm/db/shared.js.map +0 -1
- package/dist/esm/db/sql-functions.js +0 -47
- package/dist/esm/db/sql-functions.js.map +0 -1
- /package/dist/cjs/{db → store/sqlite}/sql-functions.d.cts +0 -0
- /package/dist/cjs/{db → store/sqlite}/sql-functions.d.ts +0 -0
- /package/dist/esm/{db → store/sqlite}/sql-functions.d.ts +0 -0
|
@@ -9,11 +9,17 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
get LINK_EDGES_SQL () {
|
|
13
|
+
return LINK_EDGES_SQL;
|
|
14
|
+
},
|
|
12
15
|
get linkEdges () {
|
|
13
16
|
return linkEdges;
|
|
14
17
|
},
|
|
15
18
|
get links () {
|
|
16
19
|
return links;
|
|
20
|
+
},
|
|
21
|
+
get toEdges () {
|
|
22
|
+
return toEdges;
|
|
17
23
|
}
|
|
18
24
|
});
|
|
19
25
|
var _posix = /*#__PURE__*/ _interop_require_default(require("node:path/posix"));
|
|
@@ -23,9 +29,49 @@ function _array_like_to_array(arr, len) {
|
|
|
23
29
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
24
30
|
return arr2;
|
|
25
31
|
}
|
|
32
|
+
function _array_with_holes(arr) {
|
|
33
|
+
if (Array.isArray(arr)) return arr;
|
|
34
|
+
}
|
|
26
35
|
function _array_without_holes(arr) {
|
|
27
36
|
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
28
37
|
}
|
|
38
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
39
|
+
try {
|
|
40
|
+
var info = gen[key](arg);
|
|
41
|
+
var value = info.value;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
reject(error);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (info.done) resolve(value);
|
|
47
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
48
|
+
}
|
|
49
|
+
function _async_to_generator(fn) {
|
|
50
|
+
return function() {
|
|
51
|
+
var self = this, args = arguments;
|
|
52
|
+
return new Promise(function(resolve, reject) {
|
|
53
|
+
var gen = fn.apply(self, args);
|
|
54
|
+
function _next(value) {
|
|
55
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
56
|
+
}
|
|
57
|
+
function _throw(err) {
|
|
58
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
59
|
+
}
|
|
60
|
+
_next(undefined);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function _define_property(obj, key, value) {
|
|
65
|
+
if (key in obj) {
|
|
66
|
+
Object.defineProperty(obj, key, {
|
|
67
|
+
value: value,
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true,
|
|
70
|
+
writable: true
|
|
71
|
+
});
|
|
72
|
+
} else obj[key] = value;
|
|
73
|
+
return obj;
|
|
74
|
+
}
|
|
29
75
|
function _interop_require_default(obj) {
|
|
30
76
|
return obj && obj.__esModule ? obj : {
|
|
31
77
|
default: obj
|
|
@@ -36,12 +82,179 @@ function _iterable_to_array(iter) {
|
|
|
36
82
|
return Array.from(iter);
|
|
37
83
|
}
|
|
38
84
|
}
|
|
85
|
+
function _iterable_to_array_limit(arr, i) {
|
|
86
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
87
|
+
if (_i == null) return;
|
|
88
|
+
var _arr = [];
|
|
89
|
+
var _n = true;
|
|
90
|
+
var _d = false;
|
|
91
|
+
var _s, _e;
|
|
92
|
+
try {
|
|
93
|
+
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
94
|
+
_arr.push(_s.value);
|
|
95
|
+
if (i && _arr.length === i) break;
|
|
96
|
+
}
|
|
97
|
+
} catch (err) {
|
|
98
|
+
_d = true;
|
|
99
|
+
_e = err;
|
|
100
|
+
} finally{
|
|
101
|
+
try {
|
|
102
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
103
|
+
} finally{
|
|
104
|
+
if (_d) throw _e;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return _arr;
|
|
108
|
+
}
|
|
109
|
+
function _non_iterable_rest() {
|
|
110
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
111
|
+
}
|
|
39
112
|
function _non_iterable_spread() {
|
|
40
113
|
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
41
114
|
}
|
|
115
|
+
function _object_spread(target) {
|
|
116
|
+
for(var i = 1; i < arguments.length; i++){
|
|
117
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
118
|
+
var ownKeys = Object.keys(source);
|
|
119
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
120
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
121
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
ownKeys.forEach(function(key) {
|
|
125
|
+
_define_property(target, key, source[key]);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return target;
|
|
129
|
+
}
|
|
130
|
+
function ownKeys(object, enumerableOnly) {
|
|
131
|
+
var keys = Object.keys(object);
|
|
132
|
+
if (Object.getOwnPropertySymbols) {
|
|
133
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
134
|
+
if (enumerableOnly) {
|
|
135
|
+
symbols = symbols.filter(function(sym) {
|
|
136
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
keys.push.apply(keys, symbols);
|
|
140
|
+
}
|
|
141
|
+
return keys;
|
|
142
|
+
}
|
|
143
|
+
function _object_spread_props(target, source) {
|
|
144
|
+
source = source != null ? source : {};
|
|
145
|
+
if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
146
|
+
else {
|
|
147
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
148
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return target;
|
|
152
|
+
}
|
|
153
|
+
function _sliced_to_array(arr, i) {
|
|
154
|
+
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
155
|
+
}
|
|
42
156
|
function _to_consumable_array(arr) {
|
|
43
157
|
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
44
158
|
}
|
|
159
|
+
function _ts_generator(thisArg, body) {
|
|
160
|
+
var f, y, t, _ = {
|
|
161
|
+
label: 0,
|
|
162
|
+
sent: function() {
|
|
163
|
+
if (t[0] & 1) throw t[1];
|
|
164
|
+
return t[1];
|
|
165
|
+
},
|
|
166
|
+
trys: [],
|
|
167
|
+
ops: []
|
|
168
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
169
|
+
return d(g, "next", {
|
|
170
|
+
value: verb(0)
|
|
171
|
+
}), d(g, "throw", {
|
|
172
|
+
value: verb(1)
|
|
173
|
+
}), d(g, "return", {
|
|
174
|
+
value: verb(2)
|
|
175
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
176
|
+
value: function() {
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
}), g;
|
|
180
|
+
function verb(n) {
|
|
181
|
+
return function(v) {
|
|
182
|
+
return step([
|
|
183
|
+
n,
|
|
184
|
+
v
|
|
185
|
+
]);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function step(op) {
|
|
189
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
190
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
191
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
192
|
+
if (y = 0, t) op = [
|
|
193
|
+
op[0] & 2,
|
|
194
|
+
t.value
|
|
195
|
+
];
|
|
196
|
+
switch(op[0]){
|
|
197
|
+
case 0:
|
|
198
|
+
case 1:
|
|
199
|
+
t = op;
|
|
200
|
+
break;
|
|
201
|
+
case 4:
|
|
202
|
+
_.label++;
|
|
203
|
+
return {
|
|
204
|
+
value: op[1],
|
|
205
|
+
done: false
|
|
206
|
+
};
|
|
207
|
+
case 5:
|
|
208
|
+
_.label++;
|
|
209
|
+
y = op[1];
|
|
210
|
+
op = [
|
|
211
|
+
0
|
|
212
|
+
];
|
|
213
|
+
continue;
|
|
214
|
+
case 7:
|
|
215
|
+
op = _.ops.pop();
|
|
216
|
+
_.trys.pop();
|
|
217
|
+
continue;
|
|
218
|
+
default:
|
|
219
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
220
|
+
_ = 0;
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
224
|
+
_.label = op[1];
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
228
|
+
_.label = t[1];
|
|
229
|
+
t = op;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
if (t && _.label < t[2]) {
|
|
233
|
+
_.label = t[2];
|
|
234
|
+
_.ops.push(op);
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
if (t[2]) _.ops.pop();
|
|
238
|
+
_.trys.pop();
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
op = body.call(thisArg, _);
|
|
242
|
+
} catch (e) {
|
|
243
|
+
op = [
|
|
244
|
+
6,
|
|
245
|
+
e
|
|
246
|
+
];
|
|
247
|
+
y = 0;
|
|
248
|
+
} finally{
|
|
249
|
+
f = t = 0;
|
|
250
|
+
}
|
|
251
|
+
if (op[0] & 5) throw op[1];
|
|
252
|
+
return {
|
|
253
|
+
value: op[0] ? op[1] : void 0,
|
|
254
|
+
done: true
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
45
258
|
function _unsupported_iterable_to_array(o, minLen) {
|
|
46
259
|
if (!o) return;
|
|
47
260
|
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
@@ -247,21 +460,19 @@ function buildByBase(files) {
|
|
|
247
460
|
}
|
|
248
461
|
return byBase;
|
|
249
462
|
}
|
|
250
|
-
//
|
|
251
|
-
//
|
|
252
|
-
//
|
|
253
|
-
function resolveRows(
|
|
254
|
-
var
|
|
255
|
-
var changed = false;
|
|
463
|
+
// resolveTarget applied to `rows`, returning just the rows whose dst actually changed -- the
|
|
464
|
+
// caller writes those in one runBatch call, keyed on (src, target) so a link/embed sibling
|
|
465
|
+
// pair sharing one resolution rewrites both.
|
|
466
|
+
function resolveRows(rows, pathSet, byBase) {
|
|
467
|
+
var changed = [];
|
|
256
468
|
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
257
469
|
try {
|
|
258
470
|
for(var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
259
471
|
var row = _step.value;
|
|
260
472
|
var dst = resolveTarget(row.src, row.target, pathSet, byBase);
|
|
261
|
-
if (dst !== row.dst) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
473
|
+
if (dst !== row.dst) changed.push(_object_spread_props(_object_spread({}, row), {
|
|
474
|
+
dst: dst
|
|
475
|
+
}));
|
|
265
476
|
}
|
|
266
477
|
} catch (err) {
|
|
267
478
|
_didIteratorError = true;
|
|
@@ -279,220 +490,521 @@ function resolveRows(db, rows, pathSet, byBase) {
|
|
|
279
490
|
}
|
|
280
491
|
return changed;
|
|
281
492
|
}
|
|
493
|
+
function writeResolved(db, rows) {
|
|
494
|
+
return _async_to_generator(function() {
|
|
495
|
+
return _ts_generator(this, function(_state) {
|
|
496
|
+
switch(_state.label){
|
|
497
|
+
case 0:
|
|
498
|
+
if (rows.length === 0) return [
|
|
499
|
+
2
|
|
500
|
+
];
|
|
501
|
+
return [
|
|
502
|
+
4,
|
|
503
|
+
db.runBatch('UPDATE links SET dst = ? WHERE src = ? AND target = ?', rows.map(function(r) {
|
|
504
|
+
return [
|
|
505
|
+
r.dst,
|
|
506
|
+
r.src,
|
|
507
|
+
r.target
|
|
508
|
+
];
|
|
509
|
+
}))
|
|
510
|
+
];
|
|
511
|
+
case 1:
|
|
512
|
+
_state.sent();
|
|
513
|
+
return [
|
|
514
|
+
2
|
|
515
|
+
];
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
})();
|
|
519
|
+
}
|
|
282
520
|
// A new or deleted file can change any note's resolution, so re-resolve the whole table.
|
|
283
521
|
// Fallback for cold builds and large deltas -- see afterReconcile's threshold.
|
|
284
522
|
function resolveAll(db, files) {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
523
|
+
return _async_to_generator(function() {
|
|
524
|
+
var pathSet, byBase, stmt, rows, changed;
|
|
525
|
+
return _ts_generator(this, function(_state) {
|
|
526
|
+
switch(_state.label){
|
|
527
|
+
case 0:
|
|
528
|
+
pathSet = new Set(files.map(function(f) {
|
|
529
|
+
return f.relPath;
|
|
530
|
+
}));
|
|
531
|
+
byBase = buildByBase(files);
|
|
532
|
+
return [
|
|
533
|
+
4,
|
|
534
|
+
db.prepare('SELECT src, target, dst, embed FROM links')
|
|
535
|
+
];
|
|
536
|
+
case 1:
|
|
537
|
+
stmt = _state.sent();
|
|
538
|
+
return [
|
|
539
|
+
4,
|
|
540
|
+
stmt.all()
|
|
541
|
+
];
|
|
542
|
+
case 2:
|
|
543
|
+
rows = _state.sent();
|
|
544
|
+
changed = resolveRows(rows, pathSet, byBase);
|
|
545
|
+
return [
|
|
546
|
+
4,
|
|
547
|
+
writeResolved(db, changed)
|
|
548
|
+
];
|
|
549
|
+
case 3:
|
|
550
|
+
_state.sent();
|
|
551
|
+
return [
|
|
552
|
+
2,
|
|
553
|
+
changed.length > 0
|
|
554
|
+
];
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
})();
|
|
558
|
+
}
|
|
559
|
+
// Chunked so a large-but-under-threshold delta never exceeds SQLite's bound-variable limit
|
|
560
|
+
// (SQLITE_MAX_VARIABLE_NUMBER, 32766); harmless headroom on DuckDB, which has no such cap.
|
|
561
|
+
function selectIn(db, column, keys) {
|
|
562
|
+
return _async_to_generator(function() {
|
|
563
|
+
var rows, i, _stmt, _rows, chunk, stmt, _, _1, _tmp;
|
|
564
|
+
return _ts_generator(this, function(_state) {
|
|
565
|
+
switch(_state.label){
|
|
566
|
+
case 0:
|
|
567
|
+
rows = [];
|
|
568
|
+
i = 0;
|
|
569
|
+
_state.label = 1;
|
|
570
|
+
case 1:
|
|
571
|
+
if (!(i < keys.length)) return [
|
|
572
|
+
3,
|
|
573
|
+
5
|
|
574
|
+
];
|
|
575
|
+
chunk = keys.slice(i, i + 500);
|
|
576
|
+
return [
|
|
577
|
+
4,
|
|
578
|
+
db.prepare("SELECT src, target, dst, embed FROM links WHERE ".concat(column, " IN (").concat(chunk.map(function() {
|
|
579
|
+
return '?';
|
|
580
|
+
}).join(', '), ")"))
|
|
581
|
+
];
|
|
582
|
+
case 2:
|
|
583
|
+
stmt = _state.sent();
|
|
584
|
+
_1 = (_ = (_rows = rows).push).apply;
|
|
585
|
+
_tmp = [
|
|
586
|
+
_rows
|
|
587
|
+
];
|
|
588
|
+
return [
|
|
589
|
+
4,
|
|
590
|
+
(_stmt = stmt).all.apply(_stmt, _to_consumable_array(chunk))
|
|
591
|
+
];
|
|
592
|
+
case 3:
|
|
593
|
+
_1.apply(_, _tmp.concat([
|
|
594
|
+
_to_consumable_array.apply(void 0, [
|
|
595
|
+
_state.sent()
|
|
596
|
+
])
|
|
597
|
+
]));
|
|
598
|
+
_state.label = 4;
|
|
599
|
+
case 4:
|
|
600
|
+
i += 500;
|
|
601
|
+
return [
|
|
602
|
+
3,
|
|
603
|
+
1
|
|
604
|
+
];
|
|
605
|
+
case 5:
|
|
606
|
+
return [
|
|
607
|
+
2,
|
|
608
|
+
rows
|
|
609
|
+
];
|
|
610
|
+
}
|
|
611
|
+
});
|
|
612
|
+
})();
|
|
291
613
|
}
|
|
292
614
|
// Re-resolve only what this reconcile could have touched: re-stored sources, links whose
|
|
293
615
|
// target basename matches an added/vanished file, and links whose dst just vanished. All
|
|
294
616
|
// three are indexed lookups, so this never reads the whole table.
|
|
295
617
|
function resolveIncremental(db, delta) {
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
618
|
+
return _async_to_generator(function() {
|
|
619
|
+
var pathSet, byBase, changedBasenames, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, p, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, p1, candidates, collect, changed;
|
|
620
|
+
return _ts_generator(this, function(_state) {
|
|
621
|
+
switch(_state.label){
|
|
622
|
+
case 0:
|
|
623
|
+
pathSet = new Set(delta.files.map(function(f) {
|
|
624
|
+
return f.relPath;
|
|
625
|
+
}));
|
|
626
|
+
byBase = buildByBase(delta.files);
|
|
627
|
+
changedBasenames = new Set();
|
|
628
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
629
|
+
try {
|
|
630
|
+
for(_iterator = delta.added[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
631
|
+
p = _step.value;
|
|
632
|
+
changedBasenames.add(baseKey(p));
|
|
633
|
+
}
|
|
634
|
+
} catch (err) {
|
|
635
|
+
_didIteratorError = true;
|
|
636
|
+
_iteratorError = err;
|
|
637
|
+
} finally{
|
|
638
|
+
try {
|
|
639
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
640
|
+
_iterator.return();
|
|
641
|
+
}
|
|
642
|
+
} finally{
|
|
643
|
+
if (_didIteratorError) {
|
|
644
|
+
throw _iteratorError;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
649
|
+
try {
|
|
650
|
+
for(_iterator1 = delta.vanished[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
651
|
+
p1 = _step1.value;
|
|
652
|
+
changedBasenames.add(baseKey(p1));
|
|
653
|
+
}
|
|
654
|
+
} catch (err) {
|
|
655
|
+
_didIteratorError1 = true;
|
|
656
|
+
_iteratorError1 = err;
|
|
657
|
+
} finally{
|
|
658
|
+
try {
|
|
659
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
660
|
+
_iterator1.return();
|
|
661
|
+
}
|
|
662
|
+
} finally{
|
|
663
|
+
if (_didIteratorError1) {
|
|
664
|
+
throw _iteratorError1;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
// \0 can't appear in a path or target, so the key never collides; a space can.
|
|
669
|
+
candidates = new Map();
|
|
670
|
+
collect = function collect(rows) {
|
|
671
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
672
|
+
try {
|
|
673
|
+
for(var _iterator = rows[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
674
|
+
var row = _step.value;
|
|
675
|
+
candidates.set("".concat(row.src, "\0").concat(row.target, "\0").concat(row.embed), row);
|
|
676
|
+
}
|
|
677
|
+
} catch (err) {
|
|
678
|
+
_didIteratorError = true;
|
|
679
|
+
_iteratorError = err;
|
|
680
|
+
} finally{
|
|
681
|
+
try {
|
|
682
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
683
|
+
_iterator.return();
|
|
684
|
+
}
|
|
685
|
+
} finally{
|
|
686
|
+
if (_didIteratorError) {
|
|
687
|
+
throw _iteratorError;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
};
|
|
692
|
+
return [
|
|
693
|
+
4,
|
|
694
|
+
selectIn(db, 'src', delta.reparsed)
|
|
695
|
+
];
|
|
696
|
+
case 1:
|
|
697
|
+
collect.apply(void 0, [
|
|
698
|
+
_state.sent()
|
|
699
|
+
]);
|
|
700
|
+
return [
|
|
701
|
+
4,
|
|
702
|
+
selectIn(db, 'target_base', _to_consumable_array(changedBasenames))
|
|
703
|
+
];
|
|
704
|
+
case 2:
|
|
705
|
+
collect.apply(void 0, [
|
|
706
|
+
_state.sent()
|
|
707
|
+
]);
|
|
708
|
+
return [
|
|
709
|
+
4,
|
|
710
|
+
selectIn(db, 'dst', delta.vanished)
|
|
711
|
+
];
|
|
712
|
+
case 3:
|
|
713
|
+
collect.apply(void 0, [
|
|
714
|
+
_state.sent()
|
|
715
|
+
]);
|
|
716
|
+
changed = resolveRows(_to_consumable_array(candidates.values()), pathSet, byBase);
|
|
717
|
+
return [
|
|
718
|
+
4,
|
|
719
|
+
writeResolved(db, changed)
|
|
720
|
+
];
|
|
721
|
+
case 4:
|
|
722
|
+
_state.sent();
|
|
723
|
+
return [
|
|
724
|
+
2,
|
|
725
|
+
changed.length > 0
|
|
726
|
+
];
|
|
362
727
|
}
|
|
363
|
-
}
|
|
364
|
-
};
|
|
365
|
-
// Chunked so a large-but-under-threshold delta never exceeds SQLite's bound-variable
|
|
366
|
-
// limit (SQLITE_MAX_VARIABLE_NUMBER, 32766).
|
|
367
|
-
var collectIn = function collectIn(column, keys) {
|
|
368
|
-
for(var i = 0; i < keys.length; i += 500){
|
|
369
|
-
var _db_prepare;
|
|
370
|
-
var chunk = keys.slice(i, i + 500);
|
|
371
|
-
var placeholders = chunk.map(function() {
|
|
372
|
-
return '?';
|
|
373
|
-
}).join(', ');
|
|
374
|
-
collect((_db_prepare = db.prepare("SELECT src, target, dst, embed FROM links WHERE ".concat(column, " IN (").concat(placeholders, ")"))).all.apply(_db_prepare, _to_consumable_array(chunk)));
|
|
375
|
-
}
|
|
376
|
-
};
|
|
377
|
-
collectIn('src', delta.reparsed);
|
|
378
|
-
collectIn('target_base', _to_consumable_array(changedBasenames));
|
|
379
|
-
collectIn('dst', delta.vanished);
|
|
380
|
-
return resolveRows(db, _to_consumable_array(candidates.values()), pathSet, byBase);
|
|
728
|
+
});
|
|
729
|
+
})();
|
|
381
730
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
// embed whose exact (src, target) also exists as a link: that second row is new with the
|
|
386
|
-
// embed grain and would double an edge that used to be one row. The NOT EXISTS probes the
|
|
387
|
-
// primary key and fires only for embed rows; both branches still scan the table.
|
|
388
|
-
// Self-edges (same-note anchors) are excluded here so PageRank mass is not self-recycled --
|
|
389
|
-
// Obsidian's own graph view hides self-loops too. The rows themselves stay in the table for
|
|
390
|
-
// backlinks/peek.
|
|
391
|
-
var sql = "SELECT src, dst FROM links WHERE dst IS NOT NULL AND embed = 0 AND src != dst\n UNION ALL\n SELECT src, dst FROM links l WHERE dst IS NOT NULL AND embed = 1 AND src != dst\n AND NOT EXISTS (SELECT 1 FROM links l0 WHERE l0.src = l.src AND l0.target = l.target AND l0.embed = 0)";
|
|
392
|
-
return db.prepare(sql).all().map(function(r) {
|
|
731
|
+
var LINK_EDGES_SQL = "SELECT src, dst FROM links WHERE dst IS NOT NULL AND embed = 0 AND src != dst\n UNION ALL\n SELECT src, dst FROM links l WHERE dst IS NOT NULL AND embed = 1 AND src != dst\n AND NOT EXISTS (SELECT 1 FROM links l0 WHERE l0.src = l.src AND l0.target = l.target AND l0.embed = 0)";
|
|
732
|
+
function toEdges(rows) {
|
|
733
|
+
return rows.map(function(r) {
|
|
393
734
|
return [
|
|
394
735
|
r.src,
|
|
395
736
|
r.dst
|
|
396
737
|
];
|
|
397
738
|
});
|
|
398
739
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
var
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
740
|
+
function linkEdges(db) {
|
|
741
|
+
return _async_to_generator(function() {
|
|
742
|
+
var stmt;
|
|
743
|
+
return _ts_generator(this, function(_state) {
|
|
744
|
+
switch(_state.label){
|
|
745
|
+
case 0:
|
|
746
|
+
return [
|
|
747
|
+
4,
|
|
748
|
+
db.prepare(LINK_EDGES_SQL)
|
|
749
|
+
];
|
|
750
|
+
case 1:
|
|
751
|
+
stmt = _state.sent();
|
|
752
|
+
return [
|
|
753
|
+
4,
|
|
754
|
+
stmt.all()
|
|
755
|
+
];
|
|
756
|
+
case 2:
|
|
757
|
+
return [
|
|
758
|
+
2,
|
|
759
|
+
toEdges.apply(void 0, [
|
|
760
|
+
_state.sent()
|
|
761
|
+
])
|
|
762
|
+
];
|
|
763
|
+
}
|
|
764
|
+
});
|
|
765
|
+
})();
|
|
419
766
|
}
|
|
767
|
+
// remove()/store() have already deleted rows by the time afterReconcile runs, so this records
|
|
768
|
+
// whether any reconcile pass deleted at least one link row -- whether a file vanished, or a
|
|
769
|
+
// reparse's stale rows shrank. dstChanged alone misses the reparsed-to-zero-links case (no
|
|
770
|
+
// surviving rows to re-resolve). Keyed on the delta object, so the state dies with the reconcile.
|
|
771
|
+
var removedWithLinks = new WeakMap();
|
|
420
772
|
var links = {
|
|
421
773
|
name: 'links',
|
|
422
774
|
schema: function schema(db) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
775
|
+
return _async_to_generator(function() {
|
|
776
|
+
return _ts_generator(this, function(_state) {
|
|
777
|
+
switch(_state.label){
|
|
778
|
+
case 0:
|
|
779
|
+
return [
|
|
780
|
+
4,
|
|
781
|
+
db.exec('CREATE TABLE IF NOT EXISTS links (src TEXT, target TEXT, target_base TEXT, dst TEXT, embed INTEGER, PRIMARY KEY (src, target, embed))')
|
|
782
|
+
];
|
|
783
|
+
case 1:
|
|
784
|
+
_state.sent();
|
|
785
|
+
return [
|
|
786
|
+
4,
|
|
787
|
+
db.exec('CREATE INDEX IF NOT EXISTS links_dst ON links(dst)')
|
|
788
|
+
];
|
|
789
|
+
case 2:
|
|
790
|
+
_state.sent();
|
|
791
|
+
return [
|
|
792
|
+
4,
|
|
793
|
+
db.exec('CREATE INDEX IF NOT EXISTS links_target_base ON links(target_base)')
|
|
794
|
+
];
|
|
795
|
+
case 3:
|
|
796
|
+
_state.sent();
|
|
797
|
+
return [
|
|
798
|
+
2
|
|
799
|
+
];
|
|
800
|
+
}
|
|
801
|
+
});
|
|
802
|
+
})();
|
|
426
803
|
},
|
|
427
804
|
extract: extract,
|
|
428
|
-
// Reparsed docs are diffed in store() below instead of wiped here: deleting and
|
|
429
|
-
//
|
|
430
|
-
//
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
var _step_value = _step.value, target = _step_value.target, embed = _step_value.embed;
|
|
466
|
-
insert.run(path, target, target.startsWith('#') ? null : baseKey(cleanTarget(target)), embed ? 1 : 0);
|
|
467
|
-
}
|
|
468
|
-
} catch (err) {
|
|
469
|
-
_didIteratorError = true;
|
|
470
|
-
_iteratorError = err;
|
|
471
|
-
} finally{
|
|
472
|
-
try {
|
|
473
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
474
|
-
_iterator.return();
|
|
805
|
+
remove: // Reparsed docs are diffed in store() below instead of wiped here: deleting and re-inserting
|
|
806
|
+
// resets dst to NULL, which made every touch-only reparse read as an edge change and
|
|
807
|
+
// recompute PageRank -- measured as most of the remaining update cost. Only genuinely
|
|
808
|
+
// vanished files clear here.
|
|
809
|
+
function remove(db, paths, delta) {
|
|
810
|
+
return _async_to_generator(function() {
|
|
811
|
+
var vanishedSet, vanished, existingRows;
|
|
812
|
+
return _ts_generator(this, function(_state) {
|
|
813
|
+
switch(_state.label){
|
|
814
|
+
case 0:
|
|
815
|
+
vanishedSet = new Set(delta.vanished);
|
|
816
|
+
vanished = paths.filter(function(p) {
|
|
817
|
+
return vanishedSet.has(p);
|
|
818
|
+
});
|
|
819
|
+
if (vanished.length === 0) return [
|
|
820
|
+
2
|
|
821
|
+
];
|
|
822
|
+
return [
|
|
823
|
+
4,
|
|
824
|
+
selectIn(db, 'src', vanished)
|
|
825
|
+
];
|
|
826
|
+
case 1:
|
|
827
|
+
existingRows = _state.sent();
|
|
828
|
+
return [
|
|
829
|
+
4,
|
|
830
|
+
db.runBatch('DELETE FROM links WHERE src = ?', vanished.map(function(p) {
|
|
831
|
+
return [
|
|
832
|
+
p
|
|
833
|
+
];
|
|
834
|
+
}))
|
|
835
|
+
];
|
|
836
|
+
case 2:
|
|
837
|
+
_state.sent();
|
|
838
|
+
if (existingRows.length > 0) removedWithLinks.set(delta, true);
|
|
839
|
+
return [
|
|
840
|
+
2
|
|
841
|
+
];
|
|
475
842
|
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
|
|
843
|
+
});
|
|
844
|
+
})();
|
|
845
|
+
},
|
|
846
|
+
store: function store(db, docs, delta) {
|
|
847
|
+
return _async_to_generator(function() {
|
|
848
|
+
var byPath, addedSet, reparsedExisting, existingRows, staleRows, upsertRows, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _step_value, path, targets, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator1, _step1, _step_value1, target, embed;
|
|
849
|
+
return _ts_generator(this, function(_state) {
|
|
850
|
+
switch(_state.label){
|
|
851
|
+
case 0:
|
|
852
|
+
byPath = new Map(docs.map(function(d) {
|
|
853
|
+
return [
|
|
854
|
+
d.path,
|
|
855
|
+
d.extracted
|
|
856
|
+
];
|
|
857
|
+
}));
|
|
858
|
+
addedSet = new Set(delta.added);
|
|
859
|
+
reparsedExisting = docs.map(function(d) {
|
|
860
|
+
return d.path;
|
|
861
|
+
}).filter(function(p) {
|
|
862
|
+
return !addedSet.has(p);
|
|
863
|
+
});
|
|
864
|
+
return [
|
|
865
|
+
4,
|
|
866
|
+
selectIn(db, 'src', reparsedExisting)
|
|
867
|
+
];
|
|
868
|
+
case 1:
|
|
869
|
+
existingRows = _state.sent();
|
|
870
|
+
staleRows = existingRows.filter(function(row) {
|
|
871
|
+
var _byPath_get;
|
|
872
|
+
var targets = (_byPath_get = byPath.get(row.src)) !== null && _byPath_get !== void 0 ? _byPath_get : [];
|
|
873
|
+
return !targets.some(function(t) {
|
|
874
|
+
return t.target === row.target && (t.embed ? 1 : 0) === row.embed;
|
|
875
|
+
});
|
|
876
|
+
});
|
|
877
|
+
if (!(staleRows.length > 0)) return [
|
|
878
|
+
3,
|
|
879
|
+
3
|
|
880
|
+
];
|
|
881
|
+
return [
|
|
882
|
+
4,
|
|
883
|
+
db.runBatch('DELETE FROM links WHERE src = ? AND target = ? AND embed = ?', staleRows.map(function(r) {
|
|
884
|
+
return [
|
|
885
|
+
r.src,
|
|
886
|
+
r.target,
|
|
887
|
+
r.embed
|
|
888
|
+
];
|
|
889
|
+
}))
|
|
890
|
+
];
|
|
891
|
+
case 2:
|
|
892
|
+
_state.sent();
|
|
893
|
+
removedWithLinks.set(delta, true);
|
|
894
|
+
_state.label = 3;
|
|
895
|
+
case 3:
|
|
896
|
+
// Upsert preserves dst on surviving rows, so an unchanged link resolves to the same value
|
|
897
|
+
// and reports no change; only genuinely new rows start at NULL. A same-note anchor's dst is
|
|
898
|
+
// always its own src, never another file's basename, so it gets no target_base -- SQL's
|
|
899
|
+
// `IN` never matches NULL, keeping it out of resolveIncremental's target_base lookup.
|
|
900
|
+
upsertRows = [];
|
|
901
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
902
|
+
try {
|
|
903
|
+
for(_iterator = byPath[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
904
|
+
_step_value = _sliced_to_array(_step.value, 2), path = _step_value[0], targets = _step_value[1];
|
|
905
|
+
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
906
|
+
try {
|
|
907
|
+
for(_iterator1 = targets[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
908
|
+
_step_value1 = _step1.value, target = _step_value1.target, embed = _step_value1.embed;
|
|
909
|
+
upsertRows.push([
|
|
910
|
+
path,
|
|
911
|
+
target,
|
|
912
|
+
target.startsWith('#') ? null : baseKey(cleanTarget(target)),
|
|
913
|
+
embed ? 1 : 0
|
|
914
|
+
]);
|
|
915
|
+
}
|
|
916
|
+
} catch (err) {
|
|
917
|
+
_didIteratorError1 = true;
|
|
918
|
+
_iteratorError1 = err;
|
|
919
|
+
} finally{
|
|
920
|
+
try {
|
|
921
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
922
|
+
_iterator1.return();
|
|
923
|
+
}
|
|
924
|
+
} finally{
|
|
925
|
+
if (_didIteratorError1) {
|
|
926
|
+
throw _iteratorError1;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
} catch (err) {
|
|
932
|
+
_didIteratorError = true;
|
|
933
|
+
_iteratorError = err;
|
|
934
|
+
} finally{
|
|
935
|
+
try {
|
|
936
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
937
|
+
_iterator.return();
|
|
938
|
+
}
|
|
939
|
+
} finally{
|
|
940
|
+
if (_didIteratorError) {
|
|
941
|
+
throw _iteratorError;
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
}
|
|
945
|
+
if (!(upsertRows.length > 0)) return [
|
|
946
|
+
3,
|
|
947
|
+
5
|
|
948
|
+
];
|
|
949
|
+
return [
|
|
950
|
+
4,
|
|
951
|
+
db.runBatch('INSERT INTO links (src, target, target_base, dst, embed) VALUES (?, ?, ?, NULL, ?) ON CONFLICT(src, target, embed) DO UPDATE SET target_base = excluded.target_base', upsertRows)
|
|
952
|
+
];
|
|
953
|
+
case 4:
|
|
954
|
+
_state.sent();
|
|
955
|
+
_state.label = 5;
|
|
956
|
+
case 5:
|
|
957
|
+
return [
|
|
958
|
+
2
|
|
959
|
+
];
|
|
479
960
|
}
|
|
480
|
-
}
|
|
481
|
-
}
|
|
961
|
+
});
|
|
962
|
+
})();
|
|
482
963
|
},
|
|
483
964
|
afterReconcile: function afterReconcile(db, delta) {
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
965
|
+
return _async_to_generator(function() {
|
|
966
|
+
var _removedWithLinks_get, removeHadLinks, churn, large, dstChanged, _tmp;
|
|
967
|
+
return _ts_generator(this, function(_state) {
|
|
968
|
+
switch(_state.label){
|
|
969
|
+
case 0:
|
|
970
|
+
// Any deleted rows mean the edge set shrank -- whether the file vanished or was reparsed
|
|
971
|
+
// down to fewer/no links.
|
|
972
|
+
removeHadLinks = (_removedWithLinks_get = removedWithLinks.get(delta)) !== null && _removedWithLinks_get !== void 0 ? _removedWithLinks_get : false;
|
|
973
|
+
churn = delta.reparsed.length + delta.vanished.length;
|
|
974
|
+
// Past this share of the tree, a full pass is the only one guaranteed to match
|
|
975
|
+
// resolveTarget's ambiguity rules. A cold build clears the threshold on its own.
|
|
976
|
+
large = delta.files.length === 0 || churn > 0.2 * delta.files.length;
|
|
977
|
+
if (!large) return [
|
|
978
|
+
3,
|
|
979
|
+
2
|
|
980
|
+
];
|
|
981
|
+
return [
|
|
982
|
+
4,
|
|
983
|
+
resolveAll(db, delta.files)
|
|
984
|
+
];
|
|
985
|
+
case 1:
|
|
986
|
+
_tmp = _state.sent();
|
|
987
|
+
return [
|
|
988
|
+
3,
|
|
989
|
+
4
|
|
990
|
+
];
|
|
991
|
+
case 2:
|
|
992
|
+
return [
|
|
993
|
+
4,
|
|
994
|
+
resolveIncremental(db, delta)
|
|
995
|
+
];
|
|
996
|
+
case 3:
|
|
997
|
+
_tmp = _state.sent();
|
|
998
|
+
_state.label = 4;
|
|
999
|
+
case 4:
|
|
1000
|
+
dstChanged = _tmp;
|
|
1001
|
+
delta.linksChanged = dstChanged || removeHadLinks;
|
|
1002
|
+
return [
|
|
1003
|
+
2
|
|
1004
|
+
];
|
|
1005
|
+
}
|
|
1006
|
+
});
|
|
1007
|
+
})();
|
|
496
1008
|
}
|
|
497
1009
|
};
|
|
498
1010
|
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
|