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,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MongoDB update operators.
|
|
3
|
+
*
|
|
4
|
+
* Like the filter operators these live in a registry, so the set can grow without editing a switch.
|
|
5
|
+
* Each operator mutates a *clone*, so a failed update never leaves a half-applied document behind.
|
|
6
|
+
*/
|
|
7
|
+
export type UpdateSpec = Record<string, unknown>;
|
|
8
|
+
export interface UpdateOperatorContext {
|
|
9
|
+
doc: Record<string, unknown>;
|
|
10
|
+
path: string;
|
|
11
|
+
operand: unknown;
|
|
12
|
+
}
|
|
13
|
+
export type UpdateOperatorFn = (ctx: UpdateOperatorContext) => void;
|
|
14
|
+
export declare function registerUpdateOperator(name: string, fn: UpdateOperatorFn): void;
|
|
15
|
+
export declare function listUpdateOperators(): string[];
|
|
16
|
+
export interface ApplyUpdateOptions {
|
|
17
|
+
/** True when this update is creating the document via upsert. */
|
|
18
|
+
isInsert?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Apply an update document, returning a new document. The input is never mutated, so a throwing
|
|
22
|
+
* operator leaves the caller's copy intact.
|
|
23
|
+
*
|
|
24
|
+
* A replacement document (no `$` keys) is also accepted, matching Mongoose.
|
|
25
|
+
*/
|
|
26
|
+
export declare function applyUpdate(original: Record<string, unknown>, update: UpdateSpec, opts?: ApplyUpdateOptions): Record<string, unknown>;
|
|
27
|
+
/** Paths an update touches — used to decide which validators to run and what changed. */
|
|
28
|
+
export declare function updatedPaths(update: UpdateSpec): string[];
|
|
29
|
+
export declare function isReplacement(update: UpdateSpec): boolean;
|
|
30
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/query/update.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAIpE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,GAAG,IAAI,CAE/E;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AA4ID,MAAM,WAAW,kBAAkB;IACjC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,EAAE,UAAU,EAClB,IAAI,GAAE,kBAAuB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwCzB;AAED,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CASzD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerUpdateOperator = registerUpdateOperator;
|
|
4
|
+
exports.listUpdateOperators = listUpdateOperators;
|
|
5
|
+
exports.applyUpdate = applyUpdate;
|
|
6
|
+
exports.updatedPaths = updatedPaths;
|
|
7
|
+
exports.isReplacement = isReplacement;
|
|
8
|
+
const errors_ts_1 = require("../core/errors.js");
|
|
9
|
+
const path_ts_1 = require("./path.js");
|
|
10
|
+
const filter_ts_1 = require("./filter.js");
|
|
11
|
+
const updateOperators = new Map();
|
|
12
|
+
function registerUpdateOperator(name, fn) {
|
|
13
|
+
updateOperators.set(name, fn);
|
|
14
|
+
}
|
|
15
|
+
function listUpdateOperators() {
|
|
16
|
+
return [...updateOperators.keys()].sort();
|
|
17
|
+
}
|
|
18
|
+
registerUpdateOperator("$set", ({ doc, path, operand }) => (0, path_ts_1.setPath)(doc, path, operand));
|
|
19
|
+
registerUpdateOperator("$unset", ({ doc, path }) => (0, path_ts_1.unsetPath)(doc, path));
|
|
20
|
+
registerUpdateOperator("$inc", ({ doc, path, operand }) => {
|
|
21
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
22
|
+
if (current !== undefined && typeof current !== "number") {
|
|
23
|
+
throw new errors_ts_1.AnchorError(`Cannot apply $inc to a value of non-numeric type at path "${path}".`);
|
|
24
|
+
}
|
|
25
|
+
(0, path_ts_1.setPath)(doc, path, (typeof current === "number" ? current : 0) + Number(operand));
|
|
26
|
+
});
|
|
27
|
+
registerUpdateOperator("$mul", ({ doc, path, operand }) => {
|
|
28
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
29
|
+
if (current !== undefined && typeof current !== "number") {
|
|
30
|
+
throw new errors_ts_1.AnchorError(`Cannot apply $mul to a value of non-numeric type at path "${path}".`);
|
|
31
|
+
}
|
|
32
|
+
(0, path_ts_1.setPath)(doc, path, (typeof current === "number" ? current : 0) * Number(operand));
|
|
33
|
+
});
|
|
34
|
+
registerUpdateOperator("$min", ({ doc, path, operand }) => {
|
|
35
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
36
|
+
if (current === undefined || (0, path_ts_1.compareValues)(operand, current) < 0)
|
|
37
|
+
(0, path_ts_1.setPath)(doc, path, operand);
|
|
38
|
+
});
|
|
39
|
+
registerUpdateOperator("$max", ({ doc, path, operand }) => {
|
|
40
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
41
|
+
if (current === undefined || (0, path_ts_1.compareValues)(operand, current) > 0)
|
|
42
|
+
(0, path_ts_1.setPath)(doc, path, operand);
|
|
43
|
+
});
|
|
44
|
+
registerUpdateOperator("$rename", ({ doc, path, operand }) => {
|
|
45
|
+
const value = (0, path_ts_1.getPath)(doc, path);
|
|
46
|
+
if (value === undefined)
|
|
47
|
+
return;
|
|
48
|
+
(0, path_ts_1.unsetPath)(doc, path);
|
|
49
|
+
(0, path_ts_1.setPath)(doc, String(operand), value);
|
|
50
|
+
});
|
|
51
|
+
registerUpdateOperator("$currentDate", ({ doc, path, operand }) => {
|
|
52
|
+
const asTimestamp = typeof operand === "object" && operand !== null && operand.$type === "timestamp";
|
|
53
|
+
(0, path_ts_1.setPath)(doc, path, asTimestamp ? Date.now() : new Date().toISOString());
|
|
54
|
+
});
|
|
55
|
+
registerUpdateOperator("$push", ({ doc, path, operand }) => {
|
|
56
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
57
|
+
const array = Array.isArray(current) ? [...current] : [];
|
|
58
|
+
if (operand !== null && typeof operand === "object" && "$each" in operand) {
|
|
59
|
+
const spec = operand;
|
|
60
|
+
const items = spec.$each;
|
|
61
|
+
if (typeof spec.$position === "number")
|
|
62
|
+
array.splice(spec.$position, 0, ...items);
|
|
63
|
+
else
|
|
64
|
+
array.push(...items);
|
|
65
|
+
if (spec.$sort !== undefined) {
|
|
66
|
+
const sort = spec.$sort;
|
|
67
|
+
if (typeof sort === "number") {
|
|
68
|
+
array.sort((a, b) => (sort === 1 ? (0, path_ts_1.compareValues)(a, b) : (0, path_ts_1.compareValues)(b, a)));
|
|
69
|
+
}
|
|
70
|
+
else if (sort && typeof sort === "object") {
|
|
71
|
+
const entries = Object.entries(sort);
|
|
72
|
+
array.sort((a, b) => {
|
|
73
|
+
for (const [key, dir] of entries) {
|
|
74
|
+
const c = (0, path_ts_1.compareValues)((0, path_ts_1.getPath)(a, key), (0, path_ts_1.getPath)(b, key));
|
|
75
|
+
if (c !== 0)
|
|
76
|
+
return dir === 1 ? c : -c;
|
|
77
|
+
}
|
|
78
|
+
return 0;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (typeof spec.$slice === "number") {
|
|
83
|
+
(0, path_ts_1.setPath)(doc, path, spec.$slice >= 0 ? array.slice(0, spec.$slice) : array.slice(spec.$slice));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
(0, path_ts_1.setPath)(doc, path, array);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
array.push(operand);
|
|
90
|
+
(0, path_ts_1.setPath)(doc, path, array);
|
|
91
|
+
});
|
|
92
|
+
registerUpdateOperator("$addToSet", ({ doc, path, operand }) => {
|
|
93
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
94
|
+
const array = Array.isArray(current) ? [...current] : [];
|
|
95
|
+
const items = operand !== null && typeof operand === "object" && "$each" in operand
|
|
96
|
+
? operand.$each
|
|
97
|
+
: [operand];
|
|
98
|
+
for (const item of items) {
|
|
99
|
+
if (!array.some((el) => (0, path_ts_1.valuesEqual)(el, item)))
|
|
100
|
+
array.push(item);
|
|
101
|
+
}
|
|
102
|
+
(0, path_ts_1.setPath)(doc, path, array);
|
|
103
|
+
});
|
|
104
|
+
registerUpdateOperator("$pull", ({ doc, path, operand }) => {
|
|
105
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
106
|
+
if (!Array.isArray(current))
|
|
107
|
+
return;
|
|
108
|
+
const isCondition = operand !== null &&
|
|
109
|
+
typeof operand === "object" &&
|
|
110
|
+
!Array.isArray(operand) &&
|
|
111
|
+
!(operand instanceof Date);
|
|
112
|
+
const kept = current.filter((el) => {
|
|
113
|
+
if (!isCondition)
|
|
114
|
+
return !(0, path_ts_1.valuesEqual)(el, operand);
|
|
115
|
+
const condition = operand;
|
|
116
|
+
const operatorForm = Object.keys(condition).every((k) => k.startsWith("$"));
|
|
117
|
+
if (operatorForm) {
|
|
118
|
+
// `{ $pull: { scores: { $gt: 5 } } }` — the condition applies to each element directly.
|
|
119
|
+
return !(0, filter_ts_1.matchesFilter)({ __v: el }, { __v: condition });
|
|
120
|
+
}
|
|
121
|
+
return !(0, filter_ts_1.matchesFilter)(el, condition);
|
|
122
|
+
});
|
|
123
|
+
(0, path_ts_1.setPath)(doc, path, kept);
|
|
124
|
+
});
|
|
125
|
+
registerUpdateOperator("$pullAll", ({ doc, path, operand }) => {
|
|
126
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
127
|
+
if (!Array.isArray(current))
|
|
128
|
+
return;
|
|
129
|
+
const remove = operand;
|
|
130
|
+
(0, path_ts_1.setPath)(doc, path, current.filter((el) => !remove.some((r) => (0, path_ts_1.valuesEqual)(el, r))));
|
|
131
|
+
});
|
|
132
|
+
registerUpdateOperator("$pop", ({ doc, path, operand }) => {
|
|
133
|
+
const current = (0, path_ts_1.getPath)(doc, path);
|
|
134
|
+
if (!Array.isArray(current) || current.length === 0)
|
|
135
|
+
return;
|
|
136
|
+
const copy = [...current];
|
|
137
|
+
if (Number(operand) === -1)
|
|
138
|
+
copy.shift();
|
|
139
|
+
else
|
|
140
|
+
copy.pop();
|
|
141
|
+
(0, path_ts_1.setPath)(doc, path, copy);
|
|
142
|
+
});
|
|
143
|
+
/** `$setOnInsert` only applies on upsert-insert; applyUpdate is told which case it is. */
|
|
144
|
+
registerUpdateOperator("$setOnInsert", () => {
|
|
145
|
+
/* handled in applyUpdate */
|
|
146
|
+
});
|
|
147
|
+
/**
|
|
148
|
+
* Apply an update document, returning a new document. The input is never mutated, so a throwing
|
|
149
|
+
* operator leaves the caller's copy intact.
|
|
150
|
+
*
|
|
151
|
+
* A replacement document (no `$` keys) is also accepted, matching Mongoose.
|
|
152
|
+
*/
|
|
153
|
+
function applyUpdate(original, update, opts = {}) {
|
|
154
|
+
const keys = Object.keys(update);
|
|
155
|
+
const hasOperators = keys.some((k) => k.startsWith("$"));
|
|
156
|
+
if (!hasOperators) {
|
|
157
|
+
// Whole-document replacement, but `_id` is immutable and always survives.
|
|
158
|
+
const replacement = (0, path_ts_1.deepClone)(update);
|
|
159
|
+
if (original._id !== undefined)
|
|
160
|
+
replacement._id = original._id;
|
|
161
|
+
return replacement;
|
|
162
|
+
}
|
|
163
|
+
const doc = (0, path_ts_1.deepClone)(original);
|
|
164
|
+
for (const [op, payload] of Object.entries(update)) {
|
|
165
|
+
if (!op.startsWith("$")) {
|
|
166
|
+
throw new errors_ts_1.AnchorError(`Update documents may not mix operators with plain fields — found "${op}" alongside operators.`);
|
|
167
|
+
}
|
|
168
|
+
if (op === "$setOnInsert") {
|
|
169
|
+
if (!opts.isInsert)
|
|
170
|
+
continue;
|
|
171
|
+
for (const [path, operand] of Object.entries(payload)) {
|
|
172
|
+
if ((0, path_ts_1.getPath)(doc, path) === undefined)
|
|
173
|
+
(0, path_ts_1.setPath)(doc, path, operand);
|
|
174
|
+
}
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const fn = updateOperators.get(op);
|
|
178
|
+
if (!fn) {
|
|
179
|
+
throw new errors_ts_1.AnchorError(`Unknown update operator "${op}". Supported: ${listUpdateOperators().join(", ")}. ` +
|
|
180
|
+
`Register your own with registerUpdateOperator().`);
|
|
181
|
+
}
|
|
182
|
+
for (const [path, operand] of Object.entries(payload)) {
|
|
183
|
+
fn({ doc, path, operand });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return doc;
|
|
187
|
+
}
|
|
188
|
+
/** Paths an update touches — used to decide which validators to run and what changed. */
|
|
189
|
+
function updatedPaths(update) {
|
|
190
|
+
const keys = Object.keys(update);
|
|
191
|
+
if (!keys.some((k) => k.startsWith("$")))
|
|
192
|
+
return keys;
|
|
193
|
+
const out = new Set();
|
|
194
|
+
for (const [op, payload] of Object.entries(update)) {
|
|
195
|
+
if (!op.startsWith("$") || payload === null || typeof payload !== "object")
|
|
196
|
+
continue;
|
|
197
|
+
for (const path of Object.keys(payload))
|
|
198
|
+
out.add(path);
|
|
199
|
+
}
|
|
200
|
+
return [...out];
|
|
201
|
+
}
|
|
202
|
+
function isReplacement(update) {
|
|
203
|
+
return !Object.keys(update).some((k) => k.startsWith("$"));
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/query/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AnchorDB } from "../core/anchor-db.js";
|
|
2
|
+
import type { Query } from "../query/builder/query.js";
|
|
3
|
+
/**
|
|
4
|
+
* The single live-query primitive.
|
|
5
|
+
*
|
|
6
|
+
* RxJS observables in `anchordb-angular`, hooks in `anchordb-react`, and the inspector's push events
|
|
7
|
+
* are all built on this one function. One mechanism means one set of semantics: if a change is
|
|
8
|
+
* visible to a React hook it is visible to an Angular observable, and neither can drift.
|
|
9
|
+
*
|
|
10
|
+
* Re-running the query on change is deliberate rather than patching the cached result in place.
|
|
11
|
+
* Incremental maintenance would have to reimplement the filter, sort, skip, limit and populate
|
|
12
|
+
* logic a second time — and any disagreement between the two implementations shows up as a UI that
|
|
13
|
+
* quietly displays the wrong rows.
|
|
14
|
+
*/
|
|
15
|
+
export interface LiveQueryOptions {
|
|
16
|
+
/** Collapse bursts of writes into one re-run. */
|
|
17
|
+
debounceMs?: number;
|
|
18
|
+
/** Emit the current value immediately on subscribe. */
|
|
19
|
+
emitInitial?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface LiveSubscription {
|
|
22
|
+
unsubscribe(): void;
|
|
23
|
+
}
|
|
24
|
+
export type LiveObserver<T> = {
|
|
25
|
+
next: (value: T) => void;
|
|
26
|
+
error?: (err: unknown) => void;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Re-run `execute` whenever `collection` changes.
|
|
30
|
+
*
|
|
31
|
+
* `collection` may be null to watch every collection, which is what a stats or dashboard view wants.
|
|
32
|
+
*/
|
|
33
|
+
export declare function observeQuery<T>(db: AnchorDB, collection: string | null, execute: () => PromiseLike<T>, observer: LiveObserver<T>, options?: LiveQueryOptions): LiveSubscription;
|
|
34
|
+
/** Live-observe a built query. The chain is re-executed, so sort/skip/limit stay correct. */
|
|
35
|
+
export declare function observe<TResult, TDoc>(db: AnchorDB, collection: string, query: Query<TResult, TDoc>, observer: LiveObserver<TResult>, options?: LiveQueryOptions): LiveSubscription;
|
|
36
|
+
/** Live sync status, for dashboards. Also fires in local-only mode, where it stays "disabled". */
|
|
37
|
+
export declare function observeSyncStatus(db: AnchorDB, observer: LiveObserver<{
|
|
38
|
+
status: string;
|
|
39
|
+
pending: number;
|
|
40
|
+
}>): LiveSubscription;
|
|
41
|
+
//# sourceMappingURL=live-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-query.d.ts","sourceRoot":"","sources":["../../../src/reactive/live-query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,OAAO,EAAE,MAAM,WAAW,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,CA4ClB;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,OAAO,EAAE,IAAI,EACnC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAC3B,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,EAC/B,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,CAElB;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,YAAY,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1D,gBAAgB,CAyBlB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observeQuery = observeQuery;
|
|
4
|
+
exports.observe = observe;
|
|
5
|
+
exports.observeSyncStatus = observeSyncStatus;
|
|
6
|
+
/**
|
|
7
|
+
* Re-run `execute` whenever `collection` changes.
|
|
8
|
+
*
|
|
9
|
+
* `collection` may be null to watch every collection, which is what a stats or dashboard view wants.
|
|
10
|
+
*/
|
|
11
|
+
function observeQuery(db, collection, execute, observer, options = {}) {
|
|
12
|
+
const debounceMs = options.debounceMs ?? 0;
|
|
13
|
+
let timer = null;
|
|
14
|
+
let closed = false;
|
|
15
|
+
/** Guards against overlapping runs delivering results out of order. */
|
|
16
|
+
let generation = 0;
|
|
17
|
+
const run = async () => {
|
|
18
|
+
const mine = ++generation;
|
|
19
|
+
try {
|
|
20
|
+
const value = await execute();
|
|
21
|
+
// A slower earlier run must never overwrite a newer result.
|
|
22
|
+
if (!closed && mine === generation)
|
|
23
|
+
observer.next(value);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
if (!closed)
|
|
27
|
+
observer.error?.(err);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const schedule = () => {
|
|
31
|
+
if (closed)
|
|
32
|
+
return;
|
|
33
|
+
if (debounceMs <= 0) {
|
|
34
|
+
void run();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (timer)
|
|
38
|
+
clearTimeout(timer);
|
|
39
|
+
timer = setTimeout(() => {
|
|
40
|
+
timer = null;
|
|
41
|
+
void run();
|
|
42
|
+
}, debounceMs);
|
|
43
|
+
};
|
|
44
|
+
const offChange = db.on("change", (event) => {
|
|
45
|
+
if (collection === null || event.collection === collection)
|
|
46
|
+
schedule();
|
|
47
|
+
});
|
|
48
|
+
if (options.emitInitial !== false)
|
|
49
|
+
void run();
|
|
50
|
+
return {
|
|
51
|
+
unsubscribe() {
|
|
52
|
+
closed = true;
|
|
53
|
+
if (timer)
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
offChange();
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/** Live-observe a built query. The chain is re-executed, so sort/skip/limit stay correct. */
|
|
60
|
+
function observe(db, collection, query, observer, options = {}) {
|
|
61
|
+
return observeQuery(db, collection, () => query.exec(), observer, options);
|
|
62
|
+
}
|
|
63
|
+
/** Live sync status, for dashboards. Also fires in local-only mode, where it stays "disabled". */
|
|
64
|
+
function observeSyncStatus(db, observer) {
|
|
65
|
+
let closed = false;
|
|
66
|
+
const emit = async () => {
|
|
67
|
+
if (closed)
|
|
68
|
+
return;
|
|
69
|
+
observer.next({ status: db.sync.status(), pending: await db.sync.pending() });
|
|
70
|
+
};
|
|
71
|
+
const offs = [
|
|
72
|
+
db.on("sync:start", () => void emit()),
|
|
73
|
+
db.on("sync:complete", () => void emit()),
|
|
74
|
+
db.on("sync:error", () => void emit()),
|
|
75
|
+
db.on("queue:changed", () => void emit()),
|
|
76
|
+
db.on("online", () => void emit()),
|
|
77
|
+
db.on("offline", () => void emit()),
|
|
78
|
+
];
|
|
79
|
+
void emit();
|
|
80
|
+
return {
|
|
81
|
+
unsubscribe() {
|
|
82
|
+
closed = true;
|
|
83
|
+
for (const off of offs)
|
|
84
|
+
off();
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=live-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-query.js","sourceRoot":"","sources":["../../../src/reactive/live-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Schema } from "./schema.js";
|
|
2
|
+
import type { SchemaPath } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Value casting, matching Mongoose's coercion rules.
|
|
5
|
+
*
|
|
6
|
+
* Casting is where a lot of quiet incompatibility hides: if AnchorDB stored `"28"` where Mongoose
|
|
7
|
+
* would store `28`, the same document would compare and sort differently on device than on the
|
|
8
|
+
* server. So the rules below mirror Mongoose's, including which inputs it *refuses* to coerce.
|
|
9
|
+
*/
|
|
10
|
+
export declare function castValue(value: unknown, def: SchemaPath, path: string): unknown;
|
|
11
|
+
export interface CastDocumentResult {
|
|
12
|
+
doc: Record<string, unknown>;
|
|
13
|
+
/** Paths present in the input but absent from the schema. */
|
|
14
|
+
unknownPaths: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Cast a whole document against a schema, applying defaults and strict-mode handling.
|
|
18
|
+
*
|
|
19
|
+
* `applyDefaults` is off for update payloads: a `$set` must not resurrect defaults for fields the
|
|
20
|
+
* caller never mentioned.
|
|
21
|
+
*/
|
|
22
|
+
export declare function castDocument(input: Record<string, unknown>, schema: Schema, opts?: {
|
|
23
|
+
applyDefaults?: boolean;
|
|
24
|
+
prefix?: string;
|
|
25
|
+
}): CastDocumentResult;
|
|
26
|
+
/**
|
|
27
|
+
* Cast a query filter's values through the schema.
|
|
28
|
+
*
|
|
29
|
+
* This is what makes `User.findById("507f1f77bcf86cd799439011")` work: the string is cast to an
|
|
30
|
+
* ObjectId so it compares equal to the document's `_id`. Mongoose does exactly this, and without it
|
|
31
|
+
* every id lookup written the natural way would silently return null — the filter would hold a
|
|
32
|
+
* string while the document holds an ObjectId, and the two never compare equal.
|
|
33
|
+
*
|
|
34
|
+
* Only declared paths are cast. Unknown paths pass through untouched, so a filter on a field the
|
|
35
|
+
* schema does not describe still behaves like a plain value comparison.
|
|
36
|
+
*/
|
|
37
|
+
export declare function castFilter(filter: Record<string, unknown>, schema: Schema): Record<string, unknown>;
|
|
38
|
+
//# sourceMappingURL=cast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cast.d.ts","sourceRoot":"","sources":["../../../src/schema/cast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;GAMG;AAEH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA2BhF;AA+GD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,6DAA6D;IAC7D,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,kBAAkB,CA4BpB;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwDnG"}
|