anchordb 0.2.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/CHANGELOG.md +61 -0
- package/LICENSE +21 -0
- package/README.md +160 -0
- package/dist/cjs/conflict/strategies.d.ts +110 -0
- package/dist/cjs/conflict/strategies.d.ts.map +1 -0
- package/dist/cjs/conflict/strategies.js +298 -0
- package/dist/cjs/conflict/strategies.js.map +1 -0
- package/dist/cjs/conflict/types.d.ts +38 -0
- package/dist/cjs/conflict/types.d.ts.map +1 -0
- package/dist/cjs/conflict/types.js +3 -0
- package/dist/cjs/conflict/types.js.map +1 -0
- package/dist/cjs/core/anchor-db.d.ts +154 -0
- package/dist/cjs/core/anchor-db.d.ts.map +1 -0
- package/dist/cjs/core/anchor-db.js +273 -0
- package/dist/cjs/core/anchor-db.js.map +1 -0
- package/dist/cjs/core/errors.d.ts +125 -0
- package/dist/cjs/core/errors.d.ts.map +1 -0
- package/dist/cjs/core/errors.js +174 -0
- package/dist/cjs/core/errors.js.map +1 -0
- package/dist/cjs/core/hex.d.ts +4 -0
- package/dist/cjs/core/hex.d.ts.map +1 -0
- package/dist/cjs/core/hex.js +41 -0
- package/dist/cjs/core/hex.js.map +1 -0
- package/dist/cjs/core/hlc.d.ts +96 -0
- package/dist/cjs/core/hlc.d.ts.map +1 -0
- package/dist/cjs/core/hlc.js +161 -0
- package/dist/cjs/core/hlc.js.map +1 -0
- package/dist/cjs/core/object-id.d.ts +38 -0
- package/dist/cjs/core/object-id.d.ts.map +1 -0
- package/dist/cjs/core/object-id.js +167 -0
- package/dist/cjs/core/object-id.js.map +1 -0
- package/dist/cjs/core/random.d.ts +6 -0
- package/dist/cjs/core/random.d.ts.map +1 -0
- package/dist/cjs/core/random.js +39 -0
- package/dist/cjs/core/random.js.map +1 -0
- package/dist/cjs/core/runtime.d.ts +96 -0
- package/dist/cjs/core/runtime.d.ts.map +1 -0
- package/dist/cjs/core/runtime.js +3 -0
- package/dist/cjs/core/runtime.js.map +1 -0
- package/dist/cjs/core/uuid.d.ts +16 -0
- package/dist/cjs/core/uuid.d.ts.map +1 -0
- package/dist/cjs/core/uuid.js +37 -0
- package/dist/cjs/core/uuid.js.map +1 -0
- package/dist/cjs/decorators/index.d.ts +48 -0
- package/dist/cjs/decorators/index.d.ts.map +1 -0
- package/dist/cjs/decorators/index.js +295 -0
- package/dist/cjs/decorators/index.js.map +1 -0
- package/dist/cjs/events/emitter.d.ts +16 -0
- package/dist/cjs/events/emitter.d.ts.map +1 -0
- package/dist/cjs/events/emitter.js +56 -0
- package/dist/cjs/events/emitter.js.map +1 -0
- package/dist/cjs/index/keys.d.ts +79 -0
- package/dist/cjs/index/keys.d.ts.map +1 -0
- package/dist/cjs/index/keys.js +208 -0
- package/dist/cjs/index/keys.js.map +1 -0
- package/dist/cjs/index.d.ts +81 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +193 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/inspector/agent.d.ts +75 -0
- package/dist/cjs/inspector/agent.d.ts.map +1 -0
- package/dist/cjs/inspector/agent.js +520 -0
- package/dist/cjs/inspector/agent.js.map +1 -0
- package/dist/cjs/inspector/auth.d.ts +49 -0
- package/dist/cjs/inspector/auth.d.ts.map +1 -0
- package/dist/cjs/inspector/auth.js +234 -0
- package/dist/cjs/inspector/auth.js.map +1 -0
- package/dist/cjs/inspector/bridge.d.ts +141 -0
- package/dist/cjs/inspector/bridge.d.ts.map +1 -0
- package/dist/cjs/inspector/bridge.js +190 -0
- package/dist/cjs/inspector/bridge.js.map +1 -0
- package/dist/cjs/inspector/client.d.ts +111 -0
- package/dist/cjs/inspector/client.d.ts.map +1 -0
- package/dist/cjs/inspector/client.js +218 -0
- package/dist/cjs/inspector/client.js.map +1 -0
- package/dist/cjs/inspector/protocol.d.ts +160 -0
- package/dist/cjs/inspector/protocol.d.ts.map +1 -0
- package/dist/cjs/inspector/protocol.js +53 -0
- package/dist/cjs/inspector/protocol.js.map +1 -0
- package/dist/cjs/inspector/transports/in-process.d.ts +7 -0
- package/dist/cjs/inspector/transports/in-process.d.ts.map +1 -0
- package/dist/cjs/inspector/transports/in-process.js +58 -0
- package/dist/cjs/inspector/transports/in-process.js.map +1 -0
- package/dist/cjs/inspector/transports/websocket.d.ts +39 -0
- package/dist/cjs/inspector/transports/websocket.d.ts.map +1 -0
- package/dist/cjs/inspector/transports/websocket.js +60 -0
- package/dist/cjs/inspector/transports/websocket.js.map +1 -0
- package/dist/cjs/interop/csv.d.ts +53 -0
- package/dist/cjs/interop/csv.d.ts.map +1 -0
- package/dist/cjs/interop/csv.js +230 -0
- package/dist/cjs/interop/csv.js.map +1 -0
- package/dist/cjs/interop/ejson.d.ts +41 -0
- package/dist/cjs/interop/ejson.d.ts.map +1 -0
- package/dist/cjs/interop/ejson.js +182 -0
- package/dist/cjs/interop/ejson.js.map +1 -0
- package/dist/cjs/interop/export-import.d.ts +98 -0
- package/dist/cjs/interop/export-import.d.ts.map +1 -0
- package/dist/cjs/interop/export-import.js +222 -0
- package/dist/cjs/interop/export-import.js.map +1 -0
- package/dist/cjs/model/document.d.ts +66 -0
- package/dist/cjs/model/document.d.ts.map +1 -0
- package/dist/cjs/model/document.js +302 -0
- package/dist/cjs/model/document.js.map +1 -0
- package/dist/cjs/model/model.d.ts +178 -0
- package/dist/cjs/model/model.d.ts.map +1 -0
- package/dist/cjs/model/model.js +823 -0
- package/dist/cjs/model/model.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/query/aggregation/expressions.d.ts +34 -0
- package/dist/cjs/query/aggregation/expressions.d.ts.map +1 -0
- package/dist/cjs/query/aggregation/expressions.js +552 -0
- package/dist/cjs/query/aggregation/expressions.js.map +1 -0
- package/dist/cjs/query/aggregation/pipeline.d.ts +79 -0
- package/dist/cjs/query/aggregation/pipeline.d.ts.map +1 -0
- package/dist/cjs/query/aggregation/pipeline.js +597 -0
- package/dist/cjs/query/aggregation/pipeline.js.map +1 -0
- package/dist/cjs/query/aggregation/source.d.ts +35 -0
- package/dist/cjs/query/aggregation/source.d.ts.map +1 -0
- package/dist/cjs/query/aggregation/source.js +81 -0
- package/dist/cjs/query/aggregation/source.js.map +1 -0
- package/dist/cjs/query/builder/query.d.ts +113 -0
- package/dist/cjs/query/builder/query.d.ts.map +1 -0
- package/dist/cjs/query/builder/query.js +215 -0
- package/dist/cjs/query/builder/query.js.map +1 -0
- package/dist/cjs/query/filter.d.ts +50 -0
- package/dist/cjs/query/filter.d.ts.map +1 -0
- package/dist/cjs/query/filter.js +275 -0
- package/dist/cjs/query/filter.js.map +1 -0
- package/dist/cjs/query/path.d.ts +41 -0
- package/dist/cjs/query/path.d.ts.map +1 -0
- package/dist/cjs/query/path.js +294 -0
- package/dist/cjs/query/path.js.map +1 -0
- package/dist/cjs/query/update.d.ts +30 -0
- package/dist/cjs/query/update.d.ts.map +1 -0
- package/dist/cjs/query/update.js +205 -0
- package/dist/cjs/query/update.js.map +1 -0
- package/dist/cjs/reactive/live-query.d.ts +41 -0
- package/dist/cjs/reactive/live-query.d.ts.map +1 -0
- package/dist/cjs/reactive/live-query.js +88 -0
- package/dist/cjs/reactive/live-query.js.map +1 -0
- package/dist/cjs/schema/cast.d.ts +38 -0
- package/dist/cjs/schema/cast.d.ts.map +1 -0
- package/dist/cjs/schema/cast.js +280 -0
- package/dist/cjs/schema/cast.js.map +1 -0
- package/dist/cjs/schema/index.d.ts +5 -0
- package/dist/cjs/schema/index.d.ts.map +1 -0
- package/dist/cjs/schema/index.js +27 -0
- package/dist/cjs/schema/index.js.map +1 -0
- package/dist/cjs/schema/schema.d.ts +58 -0
- package/dist/cjs/schema/schema.d.ts.map +1 -0
- package/dist/cjs/schema/schema.js +363 -0
- package/dist/cjs/schema/schema.js.map +1 -0
- package/dist/cjs/schema/types.d.ts +144 -0
- package/dist/cjs/schema/types.d.ts.map +1 -0
- package/dist/cjs/schema/types.js +20 -0
- package/dist/cjs/schema/types.js.map +1 -0
- package/dist/cjs/schema/validate.d.ts +15 -0
- package/dist/cjs/schema/validate.d.ts.map +1 -0
- package/dist/cjs/schema/validate.js +101 -0
- package/dist/cjs/schema/validate.js.map +1 -0
- package/dist/cjs/storage/adapters/capacitor-sqlite.d.ts +67 -0
- package/dist/cjs/storage/adapters/capacitor-sqlite.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/capacitor-sqlite.js +69 -0
- package/dist/cjs/storage/adapters/capacitor-sqlite.js.map +1 -0
- package/dist/cjs/storage/adapters/expo-sqlite.d.ts +55 -0
- package/dist/cjs/storage/adapters/expo-sqlite.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/expo-sqlite.js +53 -0
- package/dist/cjs/storage/adapters/expo-sqlite.js.map +1 -0
- package/dist/cjs/storage/adapters/indexeddb.d.ts +55 -0
- package/dist/cjs/storage/adapters/indexeddb.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/indexeddb.js +393 -0
- package/dist/cjs/storage/adapters/indexeddb.js.map +1 -0
- package/dist/cjs/storage/adapters/memory.d.ts +44 -0
- package/dist/cjs/storage/adapters/memory.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/memory.js +286 -0
- package/dist/cjs/storage/adapters/memory.js.map +1 -0
- package/dist/cjs/storage/adapters/node-sqlite.d.ts +59 -0
- package/dist/cjs/storage/adapters/node-sqlite.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/node-sqlite.js +457 -0
- package/dist/cjs/storage/adapters/node-sqlite.js.map +1 -0
- package/dist/cjs/storage/adapters/sql-base.d.ts +84 -0
- package/dist/cjs/storage/adapters/sql-base.d.ts.map +1 -0
- package/dist/cjs/storage/adapters/sql-base.js +393 -0
- package/dist/cjs/storage/adapters/sql-base.js.map +1 -0
- package/dist/cjs/storage/types.d.ts +131 -0
- package/dist/cjs/storage/types.d.ts.map +1 -0
- package/dist/cjs/storage/types.js +3 -0
- package/dist/cjs/storage/types.js.map +1 -0
- package/dist/cjs/sync/adapters/rest.d.ts +31 -0
- package/dist/cjs/sync/adapters/rest.d.ts.map +1 -0
- package/dist/cjs/sync/adapters/rest.js +75 -0
- package/dist/cjs/sync/adapters/rest.js.map +1 -0
- package/dist/cjs/sync/attach.d.ts +30 -0
- package/dist/cjs/sync/attach.d.ts.map +1 -0
- package/dist/cjs/sync/attach.js +104 -0
- package/dist/cjs/sync/attach.js.map +1 -0
- package/dist/cjs/sync/engine.d.ts +96 -0
- package/dist/cjs/sync/engine.d.ts.map +1 -0
- package/dist/cjs/sync/engine.js +491 -0
- package/dist/cjs/sync/engine.js.map +1 -0
- package/dist/cjs/sync/protocol.d.ts +128 -0
- package/dist/cjs/sync/protocol.d.ts.map +1 -0
- package/dist/cjs/sync/protocol.js +38 -0
- package/dist/cjs/sync/protocol.js.map +1 -0
- package/dist/cjs/sync/queue.d.ts +77 -0
- package/dist/cjs/sync/queue.d.ts.map +1 -0
- package/dist/cjs/sync/queue.js +245 -0
- package/dist/cjs/sync/queue.js.map +1 -0
- package/dist/cjs/sync/server/memory-server.d.ts +65 -0
- package/dist/cjs/sync/server/memory-server.d.ts.map +1 -0
- package/dist/cjs/sync/server/memory-server.js +193 -0
- package/dist/cjs/sync/server/memory-server.js.map +1 -0
- package/dist/cjs/timestamps/index.d.ts +47 -0
- package/dist/cjs/timestamps/index.d.ts.map +1 -0
- package/dist/cjs/timestamps/index.js +88 -0
- package/dist/cjs/timestamps/index.js.map +1 -0
- package/dist/cjs/timestamps/timezone.d.ts +65 -0
- package/dist/cjs/timestamps/timezone.d.ts.map +1 -0
- package/dist/cjs/timestamps/timezone.js +208 -0
- package/dist/cjs/timestamps/timezone.js.map +1 -0
- package/dist/esm/conflict/strategies.d.ts +110 -0
- package/dist/esm/conflict/strategies.d.ts.map +1 -0
- package/dist/esm/conflict/strategies.js +289 -0
- package/dist/esm/conflict/strategies.js.map +1 -0
- package/dist/esm/conflict/types.d.ts +38 -0
- package/dist/esm/conflict/types.d.ts.map +1 -0
- package/dist/esm/conflict/types.js +2 -0
- package/dist/esm/conflict/types.js.map +1 -0
- package/dist/esm/core/anchor-db.d.ts +154 -0
- package/dist/esm/core/anchor-db.d.ts.map +1 -0
- package/dist/esm/core/anchor-db.js +269 -0
- package/dist/esm/core/anchor-db.js.map +1 -0
- package/dist/esm/core/errors.d.ts +125 -0
- package/dist/esm/core/errors.d.ts.map +1 -0
- package/dist/esm/core/errors.js +161 -0
- package/dist/esm/core/errors.js.map +1 -0
- package/dist/esm/core/hex.d.ts +4 -0
- package/dist/esm/core/hex.d.ts.map +1 -0
- package/dist/esm/core/hex.js +37 -0
- package/dist/esm/core/hex.js.map +1 -0
- package/dist/esm/core/hlc.d.ts +96 -0
- package/dist/esm/core/hlc.d.ts.map +1 -0
- package/dist/esm/core/hlc.js +153 -0
- package/dist/esm/core/hlc.js.map +1 -0
- package/dist/esm/core/object-id.d.ts +38 -0
- package/dist/esm/core/object-id.d.ts.map +1 -0
- package/dist/esm/core/object-id.js +163 -0
- package/dist/esm/core/object-id.js.map +1 -0
- package/dist/esm/core/random.d.ts +6 -0
- package/dist/esm/core/random.d.ts.map +1 -0
- package/dist/esm/core/random.js +34 -0
- package/dist/esm/core/random.js.map +1 -0
- package/dist/esm/core/runtime.d.ts +96 -0
- package/dist/esm/core/runtime.d.ts.map +1 -0
- package/dist/esm/core/runtime.js +2 -0
- package/dist/esm/core/runtime.js.map +1 -0
- package/dist/esm/core/uuid.d.ts +16 -0
- package/dist/esm/core/uuid.d.ts.map +1 -0
- package/dist/esm/core/uuid.js +33 -0
- package/dist/esm/core/uuid.js.map +1 -0
- package/dist/esm/decorators/index.d.ts +48 -0
- package/dist/esm/decorators/index.d.ts.map +1 -0
- package/dist/esm/decorators/index.js +286 -0
- package/dist/esm/decorators/index.js.map +1 -0
- package/dist/esm/events/emitter.d.ts +16 -0
- package/dist/esm/events/emitter.d.ts.map +1 -0
- package/dist/esm/events/emitter.js +52 -0
- package/dist/esm/events/emitter.js.map +1 -0
- package/dist/esm/index/keys.d.ts +79 -0
- package/dist/esm/index/keys.d.ts.map +1 -0
- package/dist/esm/index/keys.js +198 -0
- package/dist/esm/index/keys.js.map +1 -0
- package/dist/esm/index.d.ts +81 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +59 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/inspector/agent.d.ts +75 -0
- package/dist/esm/inspector/agent.d.ts.map +1 -0
- package/dist/esm/inspector/agent.js +482 -0
- package/dist/esm/inspector/agent.js.map +1 -0
- package/dist/esm/inspector/auth.d.ts +49 -0
- package/dist/esm/inspector/auth.d.ts.map +1 -0
- package/dist/esm/inspector/auth.js +228 -0
- package/dist/esm/inspector/auth.js.map +1 -0
- package/dist/esm/inspector/bridge.d.ts +141 -0
- package/dist/esm/inspector/bridge.d.ts.map +1 -0
- package/dist/esm/inspector/bridge.js +182 -0
- package/dist/esm/inspector/bridge.js.map +1 -0
- package/dist/esm/inspector/client.d.ts +111 -0
- package/dist/esm/inspector/client.d.ts.map +1 -0
- package/dist/esm/inspector/client.js +213 -0
- package/dist/esm/inspector/client.js.map +1 -0
- package/dist/esm/inspector/protocol.d.ts +160 -0
- package/dist/esm/inspector/protocol.d.ts.map +1 -0
- package/dist/esm/inspector/protocol.js +43 -0
- package/dist/esm/inspector/protocol.js.map +1 -0
- package/dist/esm/inspector/transports/in-process.d.ts +7 -0
- package/dist/esm/inspector/transports/in-process.d.ts.map +1 -0
- package/dist/esm/inspector/transports/in-process.js +55 -0
- package/dist/esm/inspector/transports/in-process.js.map +1 -0
- package/dist/esm/inspector/transports/websocket.d.ts +39 -0
- package/dist/esm/inspector/transports/websocket.d.ts.map +1 -0
- package/dist/esm/inspector/transports/websocket.js +56 -0
- package/dist/esm/inspector/transports/websocket.js.map +1 -0
- package/dist/esm/interop/csv.d.ts +53 -0
- package/dist/esm/interop/csv.d.ts.map +1 -0
- package/dist/esm/interop/csv.js +222 -0
- package/dist/esm/interop/csv.js.map +1 -0
- package/dist/esm/interop/ejson.d.ts +41 -0
- package/dist/esm/interop/ejson.d.ts.map +1 -0
- package/dist/esm/interop/ejson.js +176 -0
- package/dist/esm/interop/ejson.js.map +1 -0
- package/dist/esm/interop/export-import.d.ts +98 -0
- package/dist/esm/interop/export-import.d.ts.map +1 -0
- package/dist/esm/interop/export-import.js +210 -0
- package/dist/esm/interop/export-import.js.map +1 -0
- package/dist/esm/model/document.d.ts +66 -0
- package/dist/esm/model/document.d.ts.map +1 -0
- package/dist/esm/model/document.js +297 -0
- package/dist/esm/model/document.js.map +1 -0
- package/dist/esm/model/model.d.ts +178 -0
- package/dist/esm/model/model.d.ts.map +1 -0
- package/dist/esm/model/model.js +815 -0
- package/dist/esm/model/model.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/query/aggregation/expressions.d.ts +34 -0
- package/dist/esm/query/aggregation/expressions.d.ts.map +1 -0
- package/dist/esm/query/aggregation/expressions.js +545 -0
- package/dist/esm/query/aggregation/expressions.js.map +1 -0
- package/dist/esm/query/aggregation/pipeline.d.ts +79 -0
- package/dist/esm/query/aggregation/pipeline.d.ts.map +1 -0
- package/dist/esm/query/aggregation/pipeline.js +591 -0
- package/dist/esm/query/aggregation/pipeline.js.map +1 -0
- package/dist/esm/query/aggregation/source.d.ts +35 -0
- package/dist/esm/query/aggregation/source.d.ts.map +1 -0
- package/dist/esm/query/aggregation/source.js +77 -0
- package/dist/esm/query/aggregation/source.js.map +1 -0
- package/dist/esm/query/builder/query.d.ts +113 -0
- package/dist/esm/query/builder/query.d.ts.map +1 -0
- package/dist/esm/query/builder/query.js +209 -0
- package/dist/esm/query/builder/query.js.map +1 -0
- package/dist/esm/query/filter.d.ts +50 -0
- package/dist/esm/query/filter.d.ts.map +1 -0
- package/dist/esm/query/filter.js +267 -0
- package/dist/esm/query/filter.js.map +1 -0
- package/dist/esm/query/path.d.ts +41 -0
- package/dist/esm/query/path.d.ts.map +1 -0
- package/dist/esm/query/path.js +282 -0
- package/dist/esm/query/path.js.map +1 -0
- package/dist/esm/query/update.d.ts +30 -0
- package/dist/esm/query/update.d.ts.map +1 -0
- package/dist/esm/query/update.js +198 -0
- package/dist/esm/query/update.js.map +1 -0
- package/dist/esm/reactive/live-query.d.ts +41 -0
- package/dist/esm/reactive/live-query.d.ts.map +1 -0
- package/dist/esm/reactive/live-query.js +83 -0
- package/dist/esm/reactive/live-query.js.map +1 -0
- package/dist/esm/schema/cast.d.ts +38 -0
- package/dist/esm/schema/cast.d.ts.map +1 -0
- package/dist/esm/schema/cast.js +275 -0
- package/dist/esm/schema/cast.js.map +1 -0
- package/dist/esm/schema/index.d.ts +5 -0
- package/dist/esm/schema/index.d.ts.map +1 -0
- package/dist/esm/schema/index.js +5 -0
- package/dist/esm/schema/index.js.map +1 -0
- package/dist/esm/schema/schema.d.ts +58 -0
- package/dist/esm/schema/schema.d.ts.map +1 -0
- package/dist/esm/schema/schema.js +358 -0
- package/dist/esm/schema/schema.js.map +1 -0
- package/dist/esm/schema/types.d.ts +144 -0
- package/dist/esm/schema/types.d.ts.map +1 -0
- package/dist/esm/schema/types.js +17 -0
- package/dist/esm/schema/types.js.map +1 -0
- package/dist/esm/schema/validate.d.ts +15 -0
- package/dist/esm/schema/validate.d.ts.map +1 -0
- package/dist/esm/schema/validate.js +98 -0
- package/dist/esm/schema/validate.js.map +1 -0
- package/dist/esm/storage/adapters/capacitor-sqlite.d.ts +67 -0
- package/dist/esm/storage/adapters/capacitor-sqlite.d.ts.map +1 -0
- package/dist/esm/storage/adapters/capacitor-sqlite.js +65 -0
- package/dist/esm/storage/adapters/capacitor-sqlite.js.map +1 -0
- package/dist/esm/storage/adapters/expo-sqlite.d.ts +55 -0
- package/dist/esm/storage/adapters/expo-sqlite.d.ts.map +1 -0
- package/dist/esm/storage/adapters/expo-sqlite.js +49 -0
- package/dist/esm/storage/adapters/expo-sqlite.js.map +1 -0
- package/dist/esm/storage/adapters/indexeddb.d.ts +55 -0
- package/dist/esm/storage/adapters/indexeddb.d.ts.map +1 -0
- package/dist/esm/storage/adapters/indexeddb.js +389 -0
- package/dist/esm/storage/adapters/indexeddb.js.map +1 -0
- package/dist/esm/storage/adapters/memory.d.ts +44 -0
- package/dist/esm/storage/adapters/memory.d.ts.map +1 -0
- package/dist/esm/storage/adapters/memory.js +282 -0
- package/dist/esm/storage/adapters/memory.js.map +1 -0
- package/dist/esm/storage/adapters/node-sqlite.d.ts +59 -0
- package/dist/esm/storage/adapters/node-sqlite.d.ts.map +1 -0
- package/dist/esm/storage/adapters/node-sqlite.js +450 -0
- package/dist/esm/storage/adapters/node-sqlite.js.map +1 -0
- package/dist/esm/storage/adapters/sql-base.d.ts +84 -0
- package/dist/esm/storage/adapters/sql-base.d.ts.map +1 -0
- package/dist/esm/storage/adapters/sql-base.js +383 -0
- package/dist/esm/storage/adapters/sql-base.js.map +1 -0
- package/dist/esm/storage/types.d.ts +131 -0
- package/dist/esm/storage/types.d.ts.map +1 -0
- package/dist/esm/storage/types.js +2 -0
- package/dist/esm/storage/types.js.map +1 -0
- package/dist/esm/sync/adapters/rest.d.ts +31 -0
- package/dist/esm/sync/adapters/rest.d.ts.map +1 -0
- package/dist/esm/sync/adapters/rest.js +71 -0
- package/dist/esm/sync/adapters/rest.js.map +1 -0
- package/dist/esm/sync/attach.d.ts +30 -0
- package/dist/esm/sync/attach.d.ts.map +1 -0
- package/dist/esm/sync/attach.js +98 -0
- package/dist/esm/sync/attach.js.map +1 -0
- package/dist/esm/sync/engine.d.ts +96 -0
- package/dist/esm/sync/engine.d.ts.map +1 -0
- package/dist/esm/sync/engine.js +487 -0
- package/dist/esm/sync/engine.js.map +1 -0
- package/dist/esm/sync/protocol.d.ts +128 -0
- package/dist/esm/sync/protocol.d.ts.map +1 -0
- package/dist/esm/sync/protocol.js +33 -0
- package/dist/esm/sync/protocol.js.map +1 -0
- package/dist/esm/sync/queue.d.ts +77 -0
- package/dist/esm/sync/queue.d.ts.map +1 -0
- package/dist/esm/sync/queue.js +241 -0
- package/dist/esm/sync/queue.js.map +1 -0
- package/dist/esm/sync/server/memory-server.d.ts +65 -0
- package/dist/esm/sync/server/memory-server.d.ts.map +1 -0
- package/dist/esm/sync/server/memory-server.js +189 -0
- package/dist/esm/sync/server/memory-server.js.map +1 -0
- package/dist/esm/timestamps/index.d.ts +47 -0
- package/dist/esm/timestamps/index.d.ts.map +1 -0
- package/dist/esm/timestamps/index.js +70 -0
- package/dist/esm/timestamps/index.js.map +1 -0
- package/dist/esm/timestamps/timezone.d.ts +65 -0
- package/dist/esm/timestamps/timezone.d.ts.map +1 -0
- package/dist/esm/timestamps/timezone.js +196 -0
- package/dist/esm/timestamps/timezone.js.map +1 -0
- package/package.json +163 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerQueryOperator = registerQueryOperator;
|
|
4
|
+
exports.listQueryOperators = listQueryOperators;
|
|
5
|
+
exports.matchesFilter = matchesFilter;
|
|
6
|
+
exports.extractConstraints = extractConstraints;
|
|
7
|
+
exports.filterPaths = filterPaths;
|
|
8
|
+
exports.isFullyExtractable = isFullyExtractable;
|
|
9
|
+
const path_ts_1 = require("./path.js");
|
|
10
|
+
const object_id_ts_1 = require("../core/object-id.js");
|
|
11
|
+
const operators = new Map();
|
|
12
|
+
/** Extension point: `registerQueryOperator("$near", fn)`. */
|
|
13
|
+
function registerQueryOperator(name, fn) {
|
|
14
|
+
operators.set(name, fn);
|
|
15
|
+
}
|
|
16
|
+
function listQueryOperators() {
|
|
17
|
+
return [...operators.keys()].sort();
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Mongo matches a scalar operand against an array field when *any element* matches, and also
|
|
21
|
+
* compares the array as a whole. `{ tags: "red" }` matches `{ tags: ["red","blue"] }`.
|
|
22
|
+
*/
|
|
23
|
+
function anyElement(value, operand, predicate) {
|
|
24
|
+
if (Array.isArray(value) && !Array.isArray(operand)) {
|
|
25
|
+
return value.some((el) => predicate(el, operand)) || predicate(value, operand);
|
|
26
|
+
}
|
|
27
|
+
return predicate(value, operand);
|
|
28
|
+
}
|
|
29
|
+
registerQueryOperator("$eq", ({ value, operand }) => anyElement(value, operand, path_ts_1.valuesEqual));
|
|
30
|
+
registerQueryOperator("$ne", ({ value, operand }) => !anyElement(value, operand, path_ts_1.valuesEqual));
|
|
31
|
+
registerQueryOperator("$gt", ({ value, operand }) => anyElement(value, operand, (a, b) => sameTypeFamily(a, b) && (0, path_ts_1.compareValues)(a, b) > 0));
|
|
32
|
+
registerQueryOperator("$gte", ({ value, operand }) => anyElement(value, operand, (a, b) => sameTypeFamily(a, b) && (0, path_ts_1.compareValues)(a, b) >= 0));
|
|
33
|
+
registerQueryOperator("$lt", ({ value, operand }) => anyElement(value, operand, (a, b) => sameTypeFamily(a, b) && (0, path_ts_1.compareValues)(a, b) < 0));
|
|
34
|
+
registerQueryOperator("$lte", ({ value, operand }) => anyElement(value, operand, (a, b) => sameTypeFamily(a, b) && (0, path_ts_1.compareValues)(a, b) <= 0));
|
|
35
|
+
registerQueryOperator("$in", ({ value, operand }) => {
|
|
36
|
+
const list = operand;
|
|
37
|
+
return list.some((o) => (o instanceof RegExp ? testRegex(value, o) : anyElement(value, o, path_ts_1.valuesEqual)));
|
|
38
|
+
});
|
|
39
|
+
registerQueryOperator("$nin", ({ value, operand }) => {
|
|
40
|
+
const list = operand;
|
|
41
|
+
return !list.some((o) => (o instanceof RegExp ? testRegex(value, o) : anyElement(value, o, path_ts_1.valuesEqual)));
|
|
42
|
+
});
|
|
43
|
+
registerQueryOperator("$exists", ({ present, operand }) => present === Boolean(operand));
|
|
44
|
+
registerQueryOperator("$regex", ({ value, operand, doc }) => {
|
|
45
|
+
const options = doc?.$options;
|
|
46
|
+
const regex = operand instanceof RegExp
|
|
47
|
+
? operand
|
|
48
|
+
: new RegExp(String(operand), typeof options === "string" ? options : undefined);
|
|
49
|
+
return testRegex(value, regex);
|
|
50
|
+
});
|
|
51
|
+
registerQueryOperator("$all", ({ value, operand }) => {
|
|
52
|
+
if (!Array.isArray(value))
|
|
53
|
+
return false;
|
|
54
|
+
return operand.every((needle) => value.some((el) => (0, path_ts_1.valuesEqual)(el, needle)));
|
|
55
|
+
});
|
|
56
|
+
registerQueryOperator("$size", ({ value, operand }) => Array.isArray(value) && value.length === Number(operand));
|
|
57
|
+
registerQueryOperator("$elemMatch", ({ value, operand }) => {
|
|
58
|
+
if (!Array.isArray(value))
|
|
59
|
+
return false;
|
|
60
|
+
const condition = operand;
|
|
61
|
+
const isOperatorForm = Object.keys(condition).every((k) => k.startsWith("$"));
|
|
62
|
+
return value.some((el) => isOperatorForm
|
|
63
|
+
? evaluateFieldCondition(el, condition, "", true)
|
|
64
|
+
: matchesFilter(el, condition));
|
|
65
|
+
});
|
|
66
|
+
registerQueryOperator("$not", ({ value, operand, doc, path, present }) => {
|
|
67
|
+
if (operand instanceof RegExp)
|
|
68
|
+
return !testRegex(value, operand);
|
|
69
|
+
return !evaluateFieldCondition(value, operand, path, present, doc);
|
|
70
|
+
});
|
|
71
|
+
registerQueryOperator("$type", ({ value, operand }) => {
|
|
72
|
+
const names = {
|
|
73
|
+
string: (v) => typeof v === "string",
|
|
74
|
+
number: (v) => typeof v === "number",
|
|
75
|
+
bool: (v) => typeof v === "boolean",
|
|
76
|
+
date: (v) => v instanceof Date,
|
|
77
|
+
array: (v) => Array.isArray(v),
|
|
78
|
+
object: (v) => v !== null && typeof v === "object" && !Array.isArray(v) && !(v instanceof Date),
|
|
79
|
+
null: (v) => v === null,
|
|
80
|
+
objectId: (v) => typeof v === "object" && v !== null && v._bsontype === "ObjectId",
|
|
81
|
+
};
|
|
82
|
+
const check = names[String(operand)];
|
|
83
|
+
return check ? check(value) : false;
|
|
84
|
+
});
|
|
85
|
+
registerQueryOperator("$mod", ({ value, operand }) => {
|
|
86
|
+
const [divisor, remainder] = operand;
|
|
87
|
+
return typeof value === "number" && value % divisor === remainder;
|
|
88
|
+
});
|
|
89
|
+
function testRegex(value, regex) {
|
|
90
|
+
if (Array.isArray(value))
|
|
91
|
+
return value.some((el) => typeof el === "string" && regex.test(el));
|
|
92
|
+
return typeof value === "string" && regex.test(value);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Range comparisons only apply within a BSON type family, matching MongoDB: `{ age: { $gt: 5 } }`
|
|
96
|
+
* must not match `age: "hello"` just because String sorts above Number.
|
|
97
|
+
*/
|
|
98
|
+
function sameTypeFamily(a, b) {
|
|
99
|
+
if (a === null || a === undefined)
|
|
100
|
+
return false;
|
|
101
|
+
const ta = typeof a;
|
|
102
|
+
const tb = typeof b;
|
|
103
|
+
if (a instanceof Date && b instanceof Date)
|
|
104
|
+
return true;
|
|
105
|
+
if (ta === "number" && tb === "number")
|
|
106
|
+
return true;
|
|
107
|
+
if (ta === "string" && tb === "string")
|
|
108
|
+
return true;
|
|
109
|
+
if (ta === "boolean" && tb === "boolean")
|
|
110
|
+
return true;
|
|
111
|
+
if (typeof a === "object" && typeof b === "object")
|
|
112
|
+
return true;
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
const LOGICAL = new Set(["$and", "$or", "$nor", "$not", "$expr", "$where"]);
|
|
116
|
+
/** Evaluate one field's condition — either a literal to equal, or an operator object. */
|
|
117
|
+
function evaluateFieldCondition(value, condition, path, present, doc) {
|
|
118
|
+
if (condition instanceof RegExp)
|
|
119
|
+
return testRegex(value, condition);
|
|
120
|
+
// An ObjectId is an object, but it is a VALUE. Without this it would be walked as an operator
|
|
121
|
+
// object, no operators would be found, and the condition would silently match everything.
|
|
122
|
+
const isOperatorObject = condition !== null &&
|
|
123
|
+
typeof condition === "object" &&
|
|
124
|
+
!Array.isArray(condition) &&
|
|
125
|
+
!(condition instanceof Date) &&
|
|
126
|
+
!(condition instanceof object_id_ts_1.ObjectId) &&
|
|
127
|
+
Object.keys(condition).some((k) => k.startsWith("$"));
|
|
128
|
+
if (!isOperatorObject)
|
|
129
|
+
return anyElement(value, condition, path_ts_1.valuesEqual);
|
|
130
|
+
for (const [op, operand] of Object.entries(condition)) {
|
|
131
|
+
if (op === "$options")
|
|
132
|
+
continue; // consumed by $regex
|
|
133
|
+
const fn = operators.get(op);
|
|
134
|
+
if (!fn) {
|
|
135
|
+
throw new Error(`Unknown query operator "${op}". Supported: ${listQueryOperators().join(", ")}. ` +
|
|
136
|
+
`Register your own with registerQueryOperator().`);
|
|
137
|
+
}
|
|
138
|
+
if (!fn({ value, operand, doc: condition, path, present }))
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
/** Does a document satisfy a filter? */
|
|
144
|
+
function matchesFilter(doc, filter) {
|
|
145
|
+
for (const [key, condition] of Object.entries(filter)) {
|
|
146
|
+
if (key === "$and") {
|
|
147
|
+
if (!condition.every((f) => matchesFilter(doc, f)))
|
|
148
|
+
return false;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
if (key === "$or") {
|
|
152
|
+
if (!condition.some((f) => matchesFilter(doc, f)))
|
|
153
|
+
return false;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (key === "$nor") {
|
|
157
|
+
if (condition.some((f) => matchesFilter(doc, f)))
|
|
158
|
+
return false;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (key === "$expr" || key === "$where") {
|
|
162
|
+
throw new Error(`Query operator "${key}" is not supported in AnchorDB v1. See MONGOOSE_PARITY.md.`);
|
|
163
|
+
}
|
|
164
|
+
if (key.startsWith("$")) {
|
|
165
|
+
throw new Error(`Unknown top-level query operator "${key}".`);
|
|
166
|
+
}
|
|
167
|
+
const value = (0, path_ts_1.getPath)(doc, key);
|
|
168
|
+
const present = (0, path_ts_1.hasPath)(doc, key);
|
|
169
|
+
if (!evaluateFieldCondition(value, condition, key, present, doc))
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Extract the constraints a storage adapter might push into an index.
|
|
176
|
+
*
|
|
177
|
+
* Only the unambiguous, non-array-sensitive leaves are extracted. Anything inside `$or`/`$nor`, or
|
|
178
|
+
* needing array semantics, is left out — the adapter reports it did not apply them and the JS
|
|
179
|
+
* matcher runs anyway, so a missed pushdown costs speed, never correctness.
|
|
180
|
+
*/
|
|
181
|
+
function extractConstraints(filter) {
|
|
182
|
+
const out = [];
|
|
183
|
+
const simple = {
|
|
184
|
+
$eq: "eq",
|
|
185
|
+
$gt: "gt",
|
|
186
|
+
$gte: "gte",
|
|
187
|
+
$lt: "lt",
|
|
188
|
+
$lte: "lte",
|
|
189
|
+
$in: "in",
|
|
190
|
+
$ne: "ne",
|
|
191
|
+
$nin: "nin",
|
|
192
|
+
};
|
|
193
|
+
for (const [key, condition] of Object.entries(filter)) {
|
|
194
|
+
if (key === "$and") {
|
|
195
|
+
for (const sub of condition)
|
|
196
|
+
out.push(...extractConstraints(sub));
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (LOGICAL.has(key) || key.startsWith("$"))
|
|
200
|
+
continue;
|
|
201
|
+
if (condition === null ||
|
|
202
|
+
typeof condition !== "object" ||
|
|
203
|
+
condition instanceof Date ||
|
|
204
|
+
condition instanceof object_id_ts_1.ObjectId) {
|
|
205
|
+
// Storage holds ids as hex text, so an ObjectId operand is serialised for the constraint.
|
|
206
|
+
out.push({ path: key, op: "eq", value: toStorageValue(condition) });
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
if (Array.isArray(condition))
|
|
210
|
+
continue;
|
|
211
|
+
if (condition instanceof RegExp)
|
|
212
|
+
continue;
|
|
213
|
+
for (const [op, operand] of Object.entries(condition)) {
|
|
214
|
+
const mapped = simple[op];
|
|
215
|
+
if (mapped) {
|
|
216
|
+
out.push({
|
|
217
|
+
path: key,
|
|
218
|
+
op: mapped,
|
|
219
|
+
value: Array.isArray(operand) ? operand.map(toStorageValue) : toStorageValue(operand),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
else if (op === "$exists")
|
|
223
|
+
out.push({ path: key, op: "exists", value: operand });
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return out;
|
|
227
|
+
}
|
|
228
|
+
/** Paths a filter constrains — used for index selection. */
|
|
229
|
+
function filterPaths(filter) {
|
|
230
|
+
return [...new Set(extractConstraints(filter).map((c) => c.path))];
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Can `extractConstraints` represent this filter *completely*?
|
|
234
|
+
*
|
|
235
|
+
* This matters for correctness, not speed. `extractConstraints` silently drops anything it cannot
|
|
236
|
+
* express (a `$regex`, an `$or`, an `$elemMatch`), so an adapter that reports "I applied all the
|
|
237
|
+
* constraints you gave me" has told the truth about the constraints — but not about the filter.
|
|
238
|
+
* Acting on that would skip the dropped conditions entirely and return rows that do not match.
|
|
239
|
+
*
|
|
240
|
+
* So: the JS matcher always runs, and this predicate decides only whether it is safe to let the
|
|
241
|
+
* storage engine apply `skip`/`limit`. Pushing pagination down while conditions remain unapplied
|
|
242
|
+
* would page over the wrong row set.
|
|
243
|
+
*/
|
|
244
|
+
function isFullyExtractable(filter) {
|
|
245
|
+
const extractableOps = new Set(["$eq", "$gt", "$gte", "$lt", "$lte", "$in", "$ne", "$nin", "$exists"]);
|
|
246
|
+
for (const [key, condition] of Object.entries(filter)) {
|
|
247
|
+
if (key === "$and") {
|
|
248
|
+
if (!condition.every(isFullyExtractable))
|
|
249
|
+
return false;
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
if (key.startsWith("$"))
|
|
253
|
+
return false; // $or, $nor, $expr, ...
|
|
254
|
+
if (condition instanceof RegExp)
|
|
255
|
+
return false;
|
|
256
|
+
if (condition === null ||
|
|
257
|
+
typeof condition !== "object" ||
|
|
258
|
+
condition instanceof Date ||
|
|
259
|
+
condition instanceof object_id_ts_1.ObjectId) {
|
|
260
|
+
continue; // equality
|
|
261
|
+
}
|
|
262
|
+
if (Array.isArray(condition))
|
|
263
|
+
continue; // equality against an array literal
|
|
264
|
+
for (const op of Object.keys(condition)) {
|
|
265
|
+
if (!extractableOps.has(op))
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return true;
|
|
270
|
+
}
|
|
271
|
+
/** Storage keeps ObjectIds as hex text; constraints must speak that form. */
|
|
272
|
+
function toStorageValue(value) {
|
|
273
|
+
return value instanceof object_id_ts_1.ObjectId ? value.toHexString() : value;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/query/filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Dot-path access with MongoDB's array-traversal semantics. */
|
|
2
|
+
export declare function getPath(doc: unknown, path: string): unknown;
|
|
3
|
+
/** True when the path exists, even if its value is null or undefined. */
|
|
4
|
+
export declare function hasPath(doc: unknown, path: string): boolean;
|
|
5
|
+
export declare function setPath(doc: Record<string, unknown>, path: string, value: unknown): void;
|
|
6
|
+
export declare function unsetPath(doc: Record<string, unknown>, path: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* BSON canonical type ordering, which is what MongoDB sorts by when a path holds mixed types.
|
|
9
|
+
* Getting this wrong makes sort() silently disagree with the backend on real-world data.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* A const object rather than a TypeScript `enum`.
|
|
13
|
+
*
|
|
14
|
+
* `enum` emits runtime code, so it is not erasable — it breaks Node's --experimental-strip-types
|
|
15
|
+
* and any toolchain running with erasableSyntaxOnly, which would stop consumers from importing this
|
|
16
|
+
* package directly as TypeScript. The const-object form is identical to use and fully erasable.
|
|
17
|
+
*/
|
|
18
|
+
export declare const BsonTypeOrder: {
|
|
19
|
+
readonly MinKey: 1;
|
|
20
|
+
readonly Null: 2;
|
|
21
|
+
readonly Number: 3;
|
|
22
|
+
readonly String: 4;
|
|
23
|
+
readonly Object: 5;
|
|
24
|
+
readonly Array: 6;
|
|
25
|
+
readonly Binary: 7;
|
|
26
|
+
readonly ObjectId: 8;
|
|
27
|
+
readonly Boolean: 9;
|
|
28
|
+
readonly Date: 10;
|
|
29
|
+
readonly Regex: 11;
|
|
30
|
+
readonly MaxKey: 12;
|
|
31
|
+
};
|
|
32
|
+
export type BsonTypeOrder = (typeof BsonTypeOrder)[keyof typeof BsonTypeOrder];
|
|
33
|
+
export declare function bsonTypeOrder(value: unknown): BsonTypeOrder;
|
|
34
|
+
/** Total ordering over arbitrary values, matching MongoDB's comparison rules. */
|
|
35
|
+
export declare function compareValues(a: unknown, b: unknown): number;
|
|
36
|
+
/** Deep structural equality using the same value semantics as comparison. */
|
|
37
|
+
export declare function valuesEqual(a: unknown, b: unknown): boolean;
|
|
38
|
+
export declare function deepClone<T>(value: T): T;
|
|
39
|
+
/** All leaf paths in a document — the basis of the field-level 3-way merge. */
|
|
40
|
+
export declare function flattenPaths(doc: unknown, prefix?: string, out?: Map<string, unknown>): Map<string, unknown>;
|
|
41
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../../src/query/path.ts"],"names":[],"mappings":"AAEA,gEAAgE;AAEhE,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAkC3D;AAED,yEAAyE;AACzE,wBAAgB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAmB3D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CA4BxF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAgB1E;AAED;;;GAGG;AACH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;CAahB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE/E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAgB3D;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA8D5D;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAE3D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAUxC;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,MAAM,SAAK,EACX,GAAG,uBAA6B,GAC/B,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBtB"}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BsonTypeOrder = void 0;
|
|
4
|
+
exports.getPath = getPath;
|
|
5
|
+
exports.hasPath = hasPath;
|
|
6
|
+
exports.setPath = setPath;
|
|
7
|
+
exports.unsetPath = unsetPath;
|
|
8
|
+
exports.bsonTypeOrder = bsonTypeOrder;
|
|
9
|
+
exports.compareValues = compareValues;
|
|
10
|
+
exports.valuesEqual = valuesEqual;
|
|
11
|
+
exports.deepClone = deepClone;
|
|
12
|
+
exports.flattenPaths = flattenPaths;
|
|
13
|
+
const object_id_ts_1 = require("../core/object-id.js");
|
|
14
|
+
/** Dot-path access with MongoDB's array-traversal semantics. */
|
|
15
|
+
function getPath(doc, path) {
|
|
16
|
+
if (doc == null)
|
|
17
|
+
return undefined;
|
|
18
|
+
if (path === "")
|
|
19
|
+
return doc;
|
|
20
|
+
const parts = path.split(".");
|
|
21
|
+
let current = doc;
|
|
22
|
+
for (let i = 0; i < parts.length; i++) {
|
|
23
|
+
const part = parts[i];
|
|
24
|
+
if (current == null)
|
|
25
|
+
return undefined;
|
|
26
|
+
if (Array.isArray(current)) {
|
|
27
|
+
// A numeric segment indexes the array; anything else maps over its elements, which is how
|
|
28
|
+
// Mongo lets `items.price` match inside an array of objects.
|
|
29
|
+
const asIndex = Number(part);
|
|
30
|
+
if (Number.isInteger(asIndex) && String(asIndex) === part) {
|
|
31
|
+
current = current[asIndex];
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const rest = parts.slice(i).join(".");
|
|
35
|
+
const mapped = [];
|
|
36
|
+
for (const el of current) {
|
|
37
|
+
const v = getPath(el, rest);
|
|
38
|
+
if (v !== undefined) {
|
|
39
|
+
if (Array.isArray(v))
|
|
40
|
+
mapped.push(...v);
|
|
41
|
+
else
|
|
42
|
+
mapped.push(v);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return mapped.length > 0 ? mapped : undefined;
|
|
46
|
+
}
|
|
47
|
+
if (typeof current !== "object")
|
|
48
|
+
return undefined;
|
|
49
|
+
current = current[part];
|
|
50
|
+
}
|
|
51
|
+
return current;
|
|
52
|
+
}
|
|
53
|
+
/** True when the path exists, even if its value is null or undefined. */
|
|
54
|
+
function hasPath(doc, path) {
|
|
55
|
+
const parts = path.split(".");
|
|
56
|
+
let current = doc;
|
|
57
|
+
for (let i = 0; i < parts.length; i++) {
|
|
58
|
+
const part = parts[i];
|
|
59
|
+
if (current == null || typeof current !== "object")
|
|
60
|
+
return false;
|
|
61
|
+
if (Array.isArray(current)) {
|
|
62
|
+
const asIndex = Number(part);
|
|
63
|
+
if (Number.isInteger(asIndex) && String(asIndex) === part) {
|
|
64
|
+
if (asIndex >= current.length)
|
|
65
|
+
return false;
|
|
66
|
+
current = current[asIndex];
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
return current.some((el) => hasPath(el, parts.slice(i).join(".")));
|
|
70
|
+
}
|
|
71
|
+
if (!Object.prototype.hasOwnProperty.call(current, part))
|
|
72
|
+
return false;
|
|
73
|
+
current = current[part];
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function setPath(doc, path, value) {
|
|
78
|
+
const parts = path.split(".");
|
|
79
|
+
let current = doc;
|
|
80
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
81
|
+
const part = parts[i];
|
|
82
|
+
const next = parts[i + 1];
|
|
83
|
+
const nextIsIndex = Number.isInteger(Number(next)) && String(Number(next)) === next;
|
|
84
|
+
if (Array.isArray(current)) {
|
|
85
|
+
const idx = Number(part);
|
|
86
|
+
const existing = current[idx];
|
|
87
|
+
if (existing == null || typeof existing !== "object") {
|
|
88
|
+
current[idx] = nextIsIndex ? [] : {};
|
|
89
|
+
}
|
|
90
|
+
current = current[idx];
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
const existing = current[part];
|
|
94
|
+
if (existing == null || typeof existing !== "object") {
|
|
95
|
+
current[part] = nextIsIndex ? [] : {};
|
|
96
|
+
}
|
|
97
|
+
current = current[part];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const last = parts[parts.length - 1];
|
|
101
|
+
if (Array.isArray(current))
|
|
102
|
+
current[Number(last)] = value;
|
|
103
|
+
else
|
|
104
|
+
current[last] = value;
|
|
105
|
+
}
|
|
106
|
+
function unsetPath(doc, path) {
|
|
107
|
+
const parts = path.split(".");
|
|
108
|
+
let current = doc;
|
|
109
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
110
|
+
if (current == null || typeof current !== "object")
|
|
111
|
+
return;
|
|
112
|
+
current = current[parts[i]];
|
|
113
|
+
}
|
|
114
|
+
if (current == null || typeof current !== "object")
|
|
115
|
+
return;
|
|
116
|
+
const last = parts[parts.length - 1];
|
|
117
|
+
if (Array.isArray(current)) {
|
|
118
|
+
// $unset on an array element leaves a null hole rather than reindexing, matching Mongo.
|
|
119
|
+
const idx = Number(last);
|
|
120
|
+
if (Number.isInteger(idx))
|
|
121
|
+
current[idx] = null;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
delete current[last];
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* BSON canonical type ordering, which is what MongoDB sorts by when a path holds mixed types.
|
|
129
|
+
* Getting this wrong makes sort() silently disagree with the backend on real-world data.
|
|
130
|
+
*/
|
|
131
|
+
/**
|
|
132
|
+
* A const object rather than a TypeScript `enum`.
|
|
133
|
+
*
|
|
134
|
+
* `enum` emits runtime code, so it is not erasable — it breaks Node's --experimental-strip-types
|
|
135
|
+
* and any toolchain running with erasableSyntaxOnly, which would stop consumers from importing this
|
|
136
|
+
* package directly as TypeScript. The const-object form is identical to use and fully erasable.
|
|
137
|
+
*/
|
|
138
|
+
exports.BsonTypeOrder = {
|
|
139
|
+
MinKey: 1,
|
|
140
|
+
Null: 2,
|
|
141
|
+
Number: 3,
|
|
142
|
+
String: 4,
|
|
143
|
+
Object: 5,
|
|
144
|
+
Array: 6,
|
|
145
|
+
Binary: 7,
|
|
146
|
+
ObjectId: 8,
|
|
147
|
+
Boolean: 9,
|
|
148
|
+
Date: 10,
|
|
149
|
+
Regex: 11,
|
|
150
|
+
MaxKey: 12,
|
|
151
|
+
};
|
|
152
|
+
function bsonTypeOrder(value) {
|
|
153
|
+
if (value === null || value === undefined)
|
|
154
|
+
return exports.BsonTypeOrder.Null;
|
|
155
|
+
if (typeof value === "number" || typeof value === "bigint")
|
|
156
|
+
return exports.BsonTypeOrder.Number;
|
|
157
|
+
if (typeof value === "string")
|
|
158
|
+
return exports.BsonTypeOrder.String;
|
|
159
|
+
if (typeof value === "boolean")
|
|
160
|
+
return exports.BsonTypeOrder.Boolean;
|
|
161
|
+
if (value instanceof Date)
|
|
162
|
+
return exports.BsonTypeOrder.Date;
|
|
163
|
+
if (value instanceof RegExp)
|
|
164
|
+
return exports.BsonTypeOrder.Regex;
|
|
165
|
+
if (value instanceof object_id_ts_1.ObjectId)
|
|
166
|
+
return exports.BsonTypeOrder.ObjectId;
|
|
167
|
+
if (value instanceof Uint8Array)
|
|
168
|
+
return exports.BsonTypeOrder.Binary;
|
|
169
|
+
if (Array.isArray(value))
|
|
170
|
+
return exports.BsonTypeOrder.Array;
|
|
171
|
+
if (typeof value === "object") {
|
|
172
|
+
const branded = value._bsontype;
|
|
173
|
+
if (branded === "ObjectId")
|
|
174
|
+
return exports.BsonTypeOrder.ObjectId;
|
|
175
|
+
return exports.BsonTypeOrder.Object;
|
|
176
|
+
}
|
|
177
|
+
return exports.BsonTypeOrder.Object;
|
|
178
|
+
}
|
|
179
|
+
/** Total ordering over arbitrary values, matching MongoDB's comparison rules. */
|
|
180
|
+
function compareValues(a, b) {
|
|
181
|
+
const ta = bsonTypeOrder(a);
|
|
182
|
+
const tb = bsonTypeOrder(b);
|
|
183
|
+
if (ta !== tb)
|
|
184
|
+
return ta < tb ? -1 : 1;
|
|
185
|
+
switch (ta) {
|
|
186
|
+
case exports.BsonTypeOrder.Null:
|
|
187
|
+
return 0;
|
|
188
|
+
case exports.BsonTypeOrder.Number: {
|
|
189
|
+
const na = Number(a);
|
|
190
|
+
const nb = Number(b);
|
|
191
|
+
if (Number.isNaN(na) && Number.isNaN(nb))
|
|
192
|
+
return 0;
|
|
193
|
+
if (Number.isNaN(na))
|
|
194
|
+
return -1;
|
|
195
|
+
if (Number.isNaN(nb))
|
|
196
|
+
return 1;
|
|
197
|
+
return na < nb ? -1 : na > nb ? 1 : 0;
|
|
198
|
+
}
|
|
199
|
+
case exports.BsonTypeOrder.String: {
|
|
200
|
+
const sa = a;
|
|
201
|
+
const sb = b;
|
|
202
|
+
return sa < sb ? -1 : sa > sb ? 1 : 0;
|
|
203
|
+
}
|
|
204
|
+
case exports.BsonTypeOrder.Boolean: {
|
|
205
|
+
const ba = a;
|
|
206
|
+
const bb = b;
|
|
207
|
+
return ba === bb ? 0 : ba ? 1 : -1;
|
|
208
|
+
}
|
|
209
|
+
case exports.BsonTypeOrder.Date:
|
|
210
|
+
return a.getTime() - b.getTime();
|
|
211
|
+
case exports.BsonTypeOrder.ObjectId: {
|
|
212
|
+
const sa = String(a);
|
|
213
|
+
const sb = String(b);
|
|
214
|
+
return sa < sb ? -1 : sa > sb ? 1 : 0;
|
|
215
|
+
}
|
|
216
|
+
case exports.BsonTypeOrder.Array: {
|
|
217
|
+
const aa = a;
|
|
218
|
+
const ab = b;
|
|
219
|
+
const len = Math.min(aa.length, ab.length);
|
|
220
|
+
for (let i = 0; i < len; i++) {
|
|
221
|
+
const c = compareValues(aa[i], ab[i]);
|
|
222
|
+
if (c !== 0)
|
|
223
|
+
return c;
|
|
224
|
+
}
|
|
225
|
+
return aa.length - ab.length;
|
|
226
|
+
}
|
|
227
|
+
case exports.BsonTypeOrder.Object: {
|
|
228
|
+
const ea = Object.entries(a);
|
|
229
|
+
const eb = Object.entries(b);
|
|
230
|
+
const len = Math.min(ea.length, eb.length);
|
|
231
|
+
for (let i = 0; i < len; i++) {
|
|
232
|
+
const [ka, va] = ea[i];
|
|
233
|
+
const [kb, vb] = eb[i];
|
|
234
|
+
if (ka !== kb)
|
|
235
|
+
return ka < kb ? -1 : 1;
|
|
236
|
+
const c = compareValues(va, vb);
|
|
237
|
+
if (c !== 0)
|
|
238
|
+
return c;
|
|
239
|
+
}
|
|
240
|
+
return ea.length - eb.length;
|
|
241
|
+
}
|
|
242
|
+
default: {
|
|
243
|
+
const sa = String(a);
|
|
244
|
+
const sb = String(b);
|
|
245
|
+
return sa < sb ? -1 : sa > sb ? 1 : 0;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/** Deep structural equality using the same value semantics as comparison. */
|
|
250
|
+
function valuesEqual(a, b) {
|
|
251
|
+
return bsonTypeOrder(a) === bsonTypeOrder(b) && compareValues(a, b) === 0;
|
|
252
|
+
}
|
|
253
|
+
function deepClone(value) {
|
|
254
|
+
if (value === null || typeof value !== "object")
|
|
255
|
+
return value;
|
|
256
|
+
if (value instanceof Date)
|
|
257
|
+
return new Date(value.getTime());
|
|
258
|
+
if (value instanceof object_id_ts_1.ObjectId)
|
|
259
|
+
return new object_id_ts_1.ObjectId(value);
|
|
260
|
+
if (value instanceof RegExp)
|
|
261
|
+
return new RegExp(value.source, value.flags);
|
|
262
|
+
if (value instanceof Uint8Array)
|
|
263
|
+
return value.slice();
|
|
264
|
+
if (Array.isArray(value))
|
|
265
|
+
return value.map((v) => deepClone(v));
|
|
266
|
+
const out = {};
|
|
267
|
+
for (const [k, v] of Object.entries(value))
|
|
268
|
+
out[k] = deepClone(v);
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
/** All leaf paths in a document — the basis of the field-level 3-way merge. */
|
|
272
|
+
function flattenPaths(doc, prefix = "", out = new Map()) {
|
|
273
|
+
const isLeaf = doc === null ||
|
|
274
|
+
typeof doc !== "object" ||
|
|
275
|
+
doc instanceof Date ||
|
|
276
|
+
doc instanceof object_id_ts_1.ObjectId ||
|
|
277
|
+
doc instanceof Uint8Array ||
|
|
278
|
+
Array.isArray(doc);
|
|
279
|
+
if (isLeaf) {
|
|
280
|
+
if (prefix)
|
|
281
|
+
out.set(prefix, doc);
|
|
282
|
+
return out;
|
|
283
|
+
}
|
|
284
|
+
const entries = Object.entries(doc);
|
|
285
|
+
if (entries.length === 0 && prefix) {
|
|
286
|
+
out.set(prefix, doc);
|
|
287
|
+
return out;
|
|
288
|
+
}
|
|
289
|
+
for (const [k, v] of entries) {
|
|
290
|
+
flattenPaths(v, prefix ? `${prefix}.${k}` : k, out);
|
|
291
|
+
}
|
|
292
|
+
return out;
|
|
293
|
+
}
|
|
294
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/query/path.ts"],"names":[],"mappings":"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"}
|