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,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnchorDocument = void 0;
|
|
4
|
+
exports.createModelConstructor = createModelConstructor;
|
|
5
|
+
const errors_ts_1 = require("../core/errors.js");
|
|
6
|
+
const path_ts_1 = require("../query/path.js");
|
|
7
|
+
const cast_ts_1 = require("../schema/cast.js");
|
|
8
|
+
const validate_ts_1 = require("../schema/validate.js");
|
|
9
|
+
/**
|
|
10
|
+
* Mongoose's `Document`.
|
|
11
|
+
*
|
|
12
|
+
* ## Shape
|
|
13
|
+
*
|
|
14
|
+
* Data lives as ordinary **own enumerable properties**, and every method sits on the prototype
|
|
15
|
+
* behind a symbol or a non-enumerable descriptor. That is deliberate: `Object.keys(doc)`,
|
|
16
|
+
* `JSON.stringify(doc)` and deep-equality checks all see the document's data and nothing else, so a
|
|
17
|
+
* Document is a drop-in for the plain object it replaces.
|
|
18
|
+
*
|
|
19
|
+
* ## Change tracking — one documented divergence
|
|
20
|
+
*
|
|
21
|
+
* Mongoose tracks *assignment*: `doc.name = doc.name` marks `name` modified even though nothing
|
|
22
|
+
* changed. AnchorDB compares against a snapshot taken when the document was loaded, so it reports
|
|
23
|
+
* what actually differs.
|
|
24
|
+
*
|
|
25
|
+
* The practical effect is that `save()` writes only genuine changes, and re-assigning an identical
|
|
26
|
+
* value is a no-op rather than a write. Where you need Mongoose's behaviour — most often for a
|
|
27
|
+
* `Mixed` field mutated in place — `markModified(path)` forces it, exactly as in Mongoose.
|
|
28
|
+
* Recorded in MONGOOSE_PARITY.md rather than left to be discovered.
|
|
29
|
+
*/
|
|
30
|
+
const MODEL = Symbol("anchor.doc.model");
|
|
31
|
+
const SNAPSHOT = Symbol("anchor.doc.snapshot");
|
|
32
|
+
const IS_NEW = Symbol("anchor.doc.isNew");
|
|
33
|
+
const FORCED = Symbol("anchor.doc.forced");
|
|
34
|
+
class AnchorDocument {
|
|
35
|
+
constructor(model, data = {}, isNew = true) {
|
|
36
|
+
define(this, MODEL, model);
|
|
37
|
+
define(this, IS_NEW, isNew);
|
|
38
|
+
define(this, FORCED, new Set());
|
|
39
|
+
/**
|
|
40
|
+
* New documents are cast from raw user input, so `new User({ age: "28" })` holds a number
|
|
41
|
+
* exactly as Mongoose does.
|
|
42
|
+
*
|
|
43
|
+
* Hydrated documents are copied verbatim. They have already been through `hydrateDoc`, and
|
|
44
|
+
* re-casting would do real damage: `strict: true` would strip `createdAt`/`updatedAt`/`__v`
|
|
45
|
+
* (added by the model, not declared as schema paths), and a populated ref would be collapsed
|
|
46
|
+
* back into an ObjectId because casting an object to an ObjectId path takes its `_id`.
|
|
47
|
+
*/
|
|
48
|
+
const source = isNew ? (0, cast_ts_1.castDocument)(data, model.schema, { applyDefaults: true }).doc : data;
|
|
49
|
+
for (const [key, value] of Object.entries(source)) {
|
|
50
|
+
if (value !== undefined)
|
|
51
|
+
this[key] = value;
|
|
52
|
+
}
|
|
53
|
+
define(this, SNAPSHOT, isNew ? {} : (0, path_ts_1.deepClone)(this.toObject({ virtuals: false })));
|
|
54
|
+
}
|
|
55
|
+
/** The model this document belongs to. */
|
|
56
|
+
get $model() {
|
|
57
|
+
return this[MODEL];
|
|
58
|
+
}
|
|
59
|
+
get schema() {
|
|
60
|
+
return this.$model.schema;
|
|
61
|
+
}
|
|
62
|
+
/** True until the document has been persisted. */
|
|
63
|
+
get isNew() {
|
|
64
|
+
return this[IS_NEW];
|
|
65
|
+
}
|
|
66
|
+
/** Mongoose's `doc.id` — the string form of `_id`. */
|
|
67
|
+
get id() {
|
|
68
|
+
const value = this._id;
|
|
69
|
+
return value === undefined || value === null ? undefined : String(value);
|
|
70
|
+
}
|
|
71
|
+
/** Paths whose value differs from the loaded snapshot, plus any forced by `markModified`. */
|
|
72
|
+
modifiedPaths() {
|
|
73
|
+
if (this.isNew) {
|
|
74
|
+
return [...(0, path_ts_1.flattenPaths)(this.toObject({ virtuals: false })).keys()];
|
|
75
|
+
}
|
|
76
|
+
const snapshot = this[SNAPSHOT];
|
|
77
|
+
const current = this.toObject({ virtuals: false });
|
|
78
|
+
const changed = new Set(this[FORCED]);
|
|
79
|
+
const before = (0, path_ts_1.flattenPaths)(snapshot);
|
|
80
|
+
const after = (0, path_ts_1.flattenPaths)(current);
|
|
81
|
+
for (const [path, value] of after) {
|
|
82
|
+
if (!before.has(path) || (0, path_ts_1.compareValues)(before.get(path), value) !== 0)
|
|
83
|
+
changed.add(path);
|
|
84
|
+
}
|
|
85
|
+
for (const path of before.keys()) {
|
|
86
|
+
if (!after.has(path))
|
|
87
|
+
changed.add(path);
|
|
88
|
+
}
|
|
89
|
+
return [...changed];
|
|
90
|
+
}
|
|
91
|
+
isModified(path) {
|
|
92
|
+
const modified = this.modifiedPaths();
|
|
93
|
+
if (!path)
|
|
94
|
+
return modified.length > 0;
|
|
95
|
+
// A parent counts as modified when any child changed, matching Mongoose.
|
|
96
|
+
return modified.some((p) => p === path || p.startsWith(`${path}.`) || path.startsWith(`${p}.`));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Force a path to be treated as changed.
|
|
100
|
+
*
|
|
101
|
+
* Needed for `Mixed` values mutated in place in ways a diff cannot attribute, and provided for
|
|
102
|
+
* exact Mongoose compatibility.
|
|
103
|
+
*/
|
|
104
|
+
markModified(path) {
|
|
105
|
+
this[FORCED].add(path);
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
/** Plain object, with virtuals and transforms applied per the schema's `toObject` options. */
|
|
109
|
+
toObject(options = {}) {
|
|
110
|
+
const schemaOptions = (this.schema.options.toObject ?? {});
|
|
111
|
+
const merged = { virtuals: false, versionKey: true, ...schemaOptions, ...options };
|
|
112
|
+
const out = {};
|
|
113
|
+
for (const [key, value] of Object.entries(this)) {
|
|
114
|
+
if (value !== undefined)
|
|
115
|
+
out[key] = (0, path_ts_1.deepClone)(value);
|
|
116
|
+
}
|
|
117
|
+
if (merged.versionKey === false && this.schema.versionKey)
|
|
118
|
+
delete out[this.schema.versionKey];
|
|
119
|
+
if (merged.omitId)
|
|
120
|
+
delete out._id;
|
|
121
|
+
if (merged.virtuals) {
|
|
122
|
+
for (const [name, virtual] of this.schema.virtuals) {
|
|
123
|
+
if (virtual.getter)
|
|
124
|
+
out[name] = virtual.getter.call(out, out);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (merged.transform) {
|
|
128
|
+
const replaced = merged.transform(this, out);
|
|
129
|
+
if (replaced)
|
|
130
|
+
return replaced;
|
|
131
|
+
}
|
|
132
|
+
return out;
|
|
133
|
+
}
|
|
134
|
+
/** What `JSON.stringify(doc)` uses. Defaults to including virtuals, as Mongoose's toJSON does. */
|
|
135
|
+
toJSON(options = {}) {
|
|
136
|
+
const schemaOptions = (this.schema.options.toJSON ?? {});
|
|
137
|
+
return this.toObject({ ...schemaOptions, ...options });
|
|
138
|
+
}
|
|
139
|
+
async validate() {
|
|
140
|
+
await (0, validate_ts_1.validateDocument)(this.toObject({ virtuals: false }), this.schema, {
|
|
141
|
+
modelName: this.$model.modelName,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Insert when new, otherwise write only the paths that actually changed.
|
|
146
|
+
*
|
|
147
|
+
* Sending a `$set` of the modified paths rather than the whole document matters for sync: a
|
|
148
|
+
* whole-document write would look like an edit to every field and would conflict with any
|
|
149
|
+
* concurrent change, even to an untouched field.
|
|
150
|
+
*/
|
|
151
|
+
async save() {
|
|
152
|
+
const model = this.$model;
|
|
153
|
+
if (this.isNew) {
|
|
154
|
+
const created = (await model.insertOne(this.toObject({ virtuals: false })));
|
|
155
|
+
for (const [key, value] of Object.entries(created)) {
|
|
156
|
+
this[key] = value;
|
|
157
|
+
}
|
|
158
|
+
define(this, IS_NEW, false);
|
|
159
|
+
define(this, SNAPSHOT, (0, path_ts_1.deepClone)(this.toObject({ virtuals: false })));
|
|
160
|
+
this[FORCED].clear();
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
const id = this._id;
|
|
164
|
+
if (id === undefined) {
|
|
165
|
+
throw new errors_ts_1.ValidationError(model.modelName);
|
|
166
|
+
}
|
|
167
|
+
const modified = this.modifiedPaths().filter((p) => p !== "_id" && p !== "createdAt");
|
|
168
|
+
if (modified.length === 0)
|
|
169
|
+
return this;
|
|
170
|
+
const current = this.toObject({ virtuals: false });
|
|
171
|
+
const $set = {};
|
|
172
|
+
const $unset = {};
|
|
173
|
+
for (const path of topLevel(modified)) {
|
|
174
|
+
const value = (0, path_ts_1.getPath)(current, path);
|
|
175
|
+
if (value === undefined)
|
|
176
|
+
$unset[path] = "";
|
|
177
|
+
else
|
|
178
|
+
$set[path] = value;
|
|
179
|
+
}
|
|
180
|
+
const update = {};
|
|
181
|
+
if (Object.keys($set).length > 0)
|
|
182
|
+
update.$set = $set;
|
|
183
|
+
if (Object.keys($unset).length > 0)
|
|
184
|
+
update.$unset = $unset;
|
|
185
|
+
await model.updateOne({ _id: id }, update);
|
|
186
|
+
const fresh = (await model.findById(id).lean().exec());
|
|
187
|
+
if (fresh) {
|
|
188
|
+
for (const [key, value] of Object.entries(fresh))
|
|
189
|
+
this[key] = value;
|
|
190
|
+
}
|
|
191
|
+
define(this, SNAPSHOT, (0, path_ts_1.deepClone)(this.toObject({ virtuals: false })));
|
|
192
|
+
this[FORCED].clear();
|
|
193
|
+
return this;
|
|
194
|
+
}
|
|
195
|
+
async deleteOne() {
|
|
196
|
+
const id = this._id;
|
|
197
|
+
return this.$model.deleteOne({ _id: id });
|
|
198
|
+
}
|
|
199
|
+
/** Populate a ref on this single document. */
|
|
200
|
+
async populate(path) {
|
|
201
|
+
const id = this._id;
|
|
202
|
+
const populated = (await this.$model
|
|
203
|
+
.findById(id)
|
|
204
|
+
.populate(path)
|
|
205
|
+
.lean()
|
|
206
|
+
.exec());
|
|
207
|
+
if (populated) {
|
|
208
|
+
const key = typeof path === "string" ? path : path.path;
|
|
209
|
+
(0, path_ts_1.setPath)(this, key, (0, path_ts_1.getPath)(populated, key));
|
|
210
|
+
}
|
|
211
|
+
return this;
|
|
212
|
+
}
|
|
213
|
+
/** Discard local changes and reload from storage. */
|
|
214
|
+
async reload() {
|
|
215
|
+
const id = this._id;
|
|
216
|
+
const fresh = (await this.$model.findById(id).lean().exec());
|
|
217
|
+
if (!fresh)
|
|
218
|
+
return this;
|
|
219
|
+
for (const key of Object.keys(this))
|
|
220
|
+
delete this[key];
|
|
221
|
+
for (const [key, value] of Object.entries(fresh))
|
|
222
|
+
this[key] = value;
|
|
223
|
+
define(this, SNAPSHOT, (0, path_ts_1.deepClone)(this.toObject({ virtuals: false })));
|
|
224
|
+
this[FORCED].clear();
|
|
225
|
+
return this;
|
|
226
|
+
}
|
|
227
|
+
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
228
|
+
return this.toObject({ virtuals: false });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.AnchorDocument = AnchorDocument;
|
|
232
|
+
/** Collapse `a.b.c` to `a` so `$set` writes whole subtrees rather than dotted leaves. */
|
|
233
|
+
function topLevel(paths) {
|
|
234
|
+
const roots = new Set();
|
|
235
|
+
for (const path of paths)
|
|
236
|
+
roots.add(path.split(".")[0]);
|
|
237
|
+
return [...roots];
|
|
238
|
+
}
|
|
239
|
+
/** Non-enumerable so internals never appear in Object.keys, JSON or deep-equality checks. */
|
|
240
|
+
function define(target, key, value) {
|
|
241
|
+
Object.defineProperty(target, key, { value, enumerable: false, configurable: true, writable: true });
|
|
242
|
+
}
|
|
243
|
+
function createModelConstructor(model) {
|
|
244
|
+
/**
|
|
245
|
+
* A prototype PER MODEL, not the shared AnchorDocument.prototype.
|
|
246
|
+
*
|
|
247
|
+
* Schema methods are attached below; putting them on the shared prototype would leak every
|
|
248
|
+
* model's methods onto every other model's documents, and a later model would silently
|
|
249
|
+
* overwrite an earlier one's method of the same name.
|
|
250
|
+
*/
|
|
251
|
+
class ModelDocument extends AnchorDocument {
|
|
252
|
+
}
|
|
253
|
+
const Ctor = function (data = {}) {
|
|
254
|
+
return new ModelDocument(model, data, true);
|
|
255
|
+
};
|
|
256
|
+
Object.setPrototypeOf(Ctor, Object.getPrototypeOf(model));
|
|
257
|
+
Ctor.prototype = ModelDocument.prototype;
|
|
258
|
+
// Every method and property of the model becomes a static, bound to the real instance.
|
|
259
|
+
const seen = new Set();
|
|
260
|
+
for (let proto = model; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {
|
|
261
|
+
for (const key of Object.getOwnPropertyNames(proto)) {
|
|
262
|
+
if (key === "constructor" || seen.has(key))
|
|
263
|
+
continue;
|
|
264
|
+
seen.add(key);
|
|
265
|
+
const descriptor = Object.getOwnPropertyDescriptor(proto, key);
|
|
266
|
+
if (!descriptor)
|
|
267
|
+
continue;
|
|
268
|
+
if (typeof descriptor.value === "function") {
|
|
269
|
+
Object.defineProperty(Ctor, key, {
|
|
270
|
+
value: descriptor.value.bind(model),
|
|
271
|
+
enumerable: false,
|
|
272
|
+
configurable: true,
|
|
273
|
+
writable: true,
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// Getters and plain fields are forwarded live, so `User.schema` tracks the model.
|
|
278
|
+
Object.defineProperty(Ctor, key, {
|
|
279
|
+
get: () => model[key],
|
|
280
|
+
enumerable: false,
|
|
281
|
+
configurable: true,
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
Object.defineProperty(Ctor, "hydrate", {
|
|
287
|
+
value: (data) => new ModelDocument(model, data, false),
|
|
288
|
+
enumerable: false,
|
|
289
|
+
configurable: true,
|
|
290
|
+
});
|
|
291
|
+
// Instance methods declared on the schema, exactly as Mongoose attaches them.
|
|
292
|
+
for (const [name, fn] of Object.entries(model.schema.methods)) {
|
|
293
|
+
Object.defineProperty(ModelDocument.prototype, name, {
|
|
294
|
+
value: fn,
|
|
295
|
+
enumerable: false,
|
|
296
|
+
configurable: true,
|
|
297
|
+
writable: true,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
return Ctor;
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=document.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../../src/model/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { ValidationError } from "../core/errors.js";
|
|
2
|
+
import { castValue } from "../schema/cast.js";
|
|
3
|
+
import type { Schema } from "../schema/schema.js";
|
|
4
|
+
import { type Filter } from "../query/filter.js";
|
|
5
|
+
import { type UpdateSpec } from "../query/update.js";
|
|
6
|
+
import { Query, type QueryExecutor, type QueryState } from "../query/builder/query.js";
|
|
7
|
+
import type { IndexSpec, StoredRow } from "../storage/types.js";
|
|
8
|
+
import type { AnchorRuntime } from "../core/runtime.js";
|
|
9
|
+
import { type AggregateExplain, type AggregateOptions, type PipelineStage } from "../query/aggregation/pipeline.js";
|
|
10
|
+
export interface ModelOptions {
|
|
11
|
+
collection?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Mongoose's `Model`.
|
|
15
|
+
*
|
|
16
|
+
* Every mutation funnels through `persist()`, which is the single place that stamps timestamps,
|
|
17
|
+
* assigns HLC values and (in synced mode) records a mutation. Having one path is what makes
|
|
18
|
+
* "Lens edits behave exactly like app edits" true by construction rather than by discipline.
|
|
19
|
+
*/
|
|
20
|
+
export declare class Model<T extends Record<string, unknown> = Record<string, unknown>> implements QueryExecutor<T> {
|
|
21
|
+
readonly modelName: string;
|
|
22
|
+
readonly collectionName: string;
|
|
23
|
+
readonly schema: Schema;
|
|
24
|
+
private readonly runtime;
|
|
25
|
+
private indexesReady;
|
|
26
|
+
/** Set by createModelConstructor so query results can be hydrated into Documents. */
|
|
27
|
+
private documentFactory;
|
|
28
|
+
constructor(name: string, schema: Schema, runtime: AnchorRuntime, options?: ModelOptions);
|
|
29
|
+
/** Wired by the model constructor; keeps Model free of an import cycle with Document. */
|
|
30
|
+
_setDocumentFactory(factory: (doc: Record<string, unknown>) => Record<string, unknown>): void;
|
|
31
|
+
private get adapter();
|
|
32
|
+
/**
|
|
33
|
+
* Creates schema-declared indexes on first use, mirroring Mongoose's `autoIndex`.
|
|
34
|
+
* Memoised, so concurrent first queries do not race to build the same index.
|
|
35
|
+
*/
|
|
36
|
+
ensureIndexes(): Promise<void>;
|
|
37
|
+
createIndex(key: Record<string, 1 | -1>, options?: Omit<IndexSpec, "name" | "key"> & {
|
|
38
|
+
name?: string;
|
|
39
|
+
}): Promise<string>;
|
|
40
|
+
createIndexes(specs: Array<{
|
|
41
|
+
key: Record<string, 1 | -1>;
|
|
42
|
+
options?: Omit<IndexSpec, "name" | "key"> & {
|
|
43
|
+
name?: string;
|
|
44
|
+
};
|
|
45
|
+
}>): Promise<string[]>;
|
|
46
|
+
listIndexes(): Promise<IndexSpec[]>;
|
|
47
|
+
dropIndex(name: string): Promise<void>;
|
|
48
|
+
dropIndexes(): Promise<void>;
|
|
49
|
+
find(filter?: Filter): Query<T[], T>;
|
|
50
|
+
findOne(filter?: Filter): Query<T | null, T>;
|
|
51
|
+
findById(id: unknown): Query<T | null, T>;
|
|
52
|
+
countDocuments(filter?: Filter): Query<number, T>;
|
|
53
|
+
estimatedDocumentCount(): Promise<number>;
|
|
54
|
+
exists(filter: Filter): Promise<{
|
|
55
|
+
_id: unknown;
|
|
56
|
+
} | null>;
|
|
57
|
+
distinct(field: string, filter?: Filter): Query<unknown[], T>;
|
|
58
|
+
/**
|
|
59
|
+
* MongoDB aggregation pipeline.
|
|
60
|
+
*
|
|
61
|
+
* The pipeline array is plain MongoDB syntax, so the identical value can be handed to
|
|
62
|
+
* `Model.aggregate()` on a Mongoose backend. Pass `{ mongoCompatible: true }` to have any
|
|
63
|
+
* non-portable construct rejected at development time rather than discovered in production.
|
|
64
|
+
*/
|
|
65
|
+
aggregate<R = Record<string, unknown>>(pipeline: PipelineStage[], options?: AggregateOptions): Promise<R[]>;
|
|
66
|
+
/** Same pipeline, but reports what was pushed into storage and what ran in JS. */
|
|
67
|
+
explainAggregate(pipeline: PipelineStage[], options?: AggregateOptions): Promise<AggregateExplain>;
|
|
68
|
+
private aggregationSource;
|
|
69
|
+
/**
|
|
70
|
+
* Bulk write, mirroring Mongoose. Operations are applied in order and reported per type.
|
|
71
|
+
*/
|
|
72
|
+
bulkWrite(operations: BulkWriteOperation<T>[]): Promise<{
|
|
73
|
+
insertedCount: number;
|
|
74
|
+
matchedCount: number;
|
|
75
|
+
modifiedCount: number;
|
|
76
|
+
deletedCount: number;
|
|
77
|
+
upsertedCount: number;
|
|
78
|
+
}>;
|
|
79
|
+
create(input: Partial<T> | Array<Partial<T>>): Promise<T | T[]>;
|
|
80
|
+
insertOne(input: Partial<T>): Promise<T>;
|
|
81
|
+
/**
|
|
82
|
+
* `ordered: true` (the default) stops at the first error; `ordered: false` attempts every
|
|
83
|
+
* document and reports all failures in a BulkWriteError — matching MongoDB, including the
|
|
84
|
+
* accurate `insertedCount`.
|
|
85
|
+
*/
|
|
86
|
+
insertMany(inputs: Array<Partial<T>>, options?: {
|
|
87
|
+
ordered?: boolean;
|
|
88
|
+
}): Promise<T[]>;
|
|
89
|
+
updateOne(filter: Filter, update: UpdateSpec, options?: UpdateOptions): Promise<UpdateResult>;
|
|
90
|
+
updateMany(filter: Filter, update: UpdateSpec, options?: UpdateOptions): Promise<UpdateResult>;
|
|
91
|
+
replaceOne(filter: Filter, replacement: Partial<T>, options?: UpdateOptions): Promise<UpdateResult>;
|
|
92
|
+
findOneAndUpdate(filter: Filter, update: UpdateSpec, options?: UpdateOptions): Promise<T | null>;
|
|
93
|
+
findByIdAndUpdate(id: unknown, update: UpdateSpec, options?: UpdateOptions): Promise<T | null>;
|
|
94
|
+
findOneAndDelete(filter: Filter): Promise<T | null>;
|
|
95
|
+
findByIdAndDelete(id: unknown): Promise<T | null>;
|
|
96
|
+
deleteOne(filter: Filter): Promise<DeleteResult>;
|
|
97
|
+
deleteMany(filter: Filter): Promise<DeleteResult>;
|
|
98
|
+
private prepareInsert;
|
|
99
|
+
private runUpdate;
|
|
100
|
+
private runDelete;
|
|
101
|
+
/** The single write path: storage, then mutation queue, then events. */
|
|
102
|
+
private persist;
|
|
103
|
+
private loadMatching;
|
|
104
|
+
private runPreHooks;
|
|
105
|
+
private runPostHooks;
|
|
106
|
+
/**
|
|
107
|
+
* Return a Document, matching what queries return.
|
|
108
|
+
*
|
|
109
|
+
* Mongoose's create()/insertMany() hand back Documents, so `(await User.create(...)).save()`
|
|
110
|
+
* works. Returning a plain object here while find() returned a Document would be an inconsistency
|
|
111
|
+
* a user would hit immediately and could not explain.
|
|
112
|
+
*/
|
|
113
|
+
private hydrate;
|
|
114
|
+
/** Entry point for every `Query`. This is where the whole chain becomes one storage plan. */
|
|
115
|
+
run(state: QueryState): Promise<unknown>;
|
|
116
|
+
/**
|
|
117
|
+
* Batched population: every referenced id across the whole page is collected and fetched with one
|
|
118
|
+
* query per target collection. The naive alternative is one query per document per path, which
|
|
119
|
+
* turns a 50-row page into 50 round trips.
|
|
120
|
+
*/
|
|
121
|
+
private applyPopulate;
|
|
122
|
+
}
|
|
123
|
+
/** Mongoose-shaped bulk operations. */
|
|
124
|
+
export type BulkWriteOperation<T> = {
|
|
125
|
+
insertOne: {
|
|
126
|
+
document: Partial<T>;
|
|
127
|
+
};
|
|
128
|
+
} | {
|
|
129
|
+
updateOne: {
|
|
130
|
+
filter: Filter;
|
|
131
|
+
update: UpdateSpec;
|
|
132
|
+
upsert?: boolean;
|
|
133
|
+
};
|
|
134
|
+
} | {
|
|
135
|
+
updateMany: {
|
|
136
|
+
filter: Filter;
|
|
137
|
+
update: UpdateSpec;
|
|
138
|
+
upsert?: boolean;
|
|
139
|
+
};
|
|
140
|
+
} | {
|
|
141
|
+
replaceOne: {
|
|
142
|
+
filter: Filter;
|
|
143
|
+
replacement: Partial<T>;
|
|
144
|
+
};
|
|
145
|
+
} | {
|
|
146
|
+
deleteOne: {
|
|
147
|
+
filter: Filter;
|
|
148
|
+
};
|
|
149
|
+
} | {
|
|
150
|
+
deleteMany: {
|
|
151
|
+
filter: Filter;
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
export interface UpdateOptions {
|
|
155
|
+
upsert?: boolean;
|
|
156
|
+
runValidators?: boolean;
|
|
157
|
+
/** Mongoose's `new: true` — return the post-update document. */
|
|
158
|
+
new?: boolean;
|
|
159
|
+
}
|
|
160
|
+
export interface UpdateResult {
|
|
161
|
+
acknowledged: boolean;
|
|
162
|
+
matchedCount: number;
|
|
163
|
+
modifiedCount: number;
|
|
164
|
+
upsertedCount: number;
|
|
165
|
+
upsertedId: unknown;
|
|
166
|
+
}
|
|
167
|
+
export interface DeleteResult {
|
|
168
|
+
acknowledged: boolean;
|
|
169
|
+
deletedCount: number;
|
|
170
|
+
}
|
|
171
|
+
/** Storage holds JSON; typed values (ObjectId, Date) are rebuilt on read. */
|
|
172
|
+
export declare function hydrateDoc(row: StoredRow, schema: Schema): Record<string, unknown>;
|
|
173
|
+
/** Inverse of hydrate: typed values become their JSON forms for storage and the wire. */
|
|
174
|
+
export declare function serialise(doc: Record<string, unknown>): Record<string, unknown>;
|
|
175
|
+
/** Mongoose's collection naming: lowercase and pluralise the model name. */
|
|
176
|
+
export declare function pluralize(name: string): string;
|
|
177
|
+
export { castValue, ValidationError };
|
|
178
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/model/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA4B,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAyD,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACxG,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/F,OAAO,EACL,KAAK,EAIL,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAmB,SAAS,EAAE,SAAS,EAAW,MAAM,qBAAqB,CAAC;AAE1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAe,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGjI,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACzG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,YAAY,CAA8B;IAClD,qFAAqF;IACrF,OAAO,CAAC,eAAe,CAA4E;gBAEvF,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,GAAE,YAAiB;IAY5F,yFAAyF;IACzF,mBAAmB,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI7F,OAAO,KAAK,OAAO,GAElB;IAID;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B,WAAW,CACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAC3B,OAAO,GAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAO,GAChE,OAAO,CAAC,MAAM,CAAC;IASZ,aAAa,CACjB,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,GAC3G,OAAO,CAAC,MAAM,EAAE,CAAC;IAMd,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAOnC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,IAAI,CAAC,MAAM,GAAE,MAAW,GAAG,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAIxC,OAAO,CAAC,MAAM,GAAE,MAAW,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAIhD,QAAQ,CAAC,EAAE,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IAIzC,cAAc,CAAC,MAAM,GAAE,MAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAI/C,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMzC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAK9D,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAKjE;;;;;;OAMG;IACG,SAAS,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,CAAC,EAAE,CAAC;IAWf,kFAAkF;IAC5E,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM5G,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACG,SAAS,CACb,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAClC,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAiDzH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAK/D,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS9C;;;;OAIG;IACG,UAAU,CACd,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACzB,OAAO,GAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAO,GAClC,OAAO,CAAC,CAAC,EAAE,CAAC;IAuCT,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIjG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAIvG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAcpG,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIlG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAOnD,iBAAiB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIhD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAMzC,aAAa;YAgCb,SAAS;YAmGT,SAAS;IAuCvB,wEAAwE;YAC1D,OAAO;YAoBP,YAAY;YAiBZ,WAAW;YAMX,YAAY;IAM1B;;;;;;OAMG;IACH,OAAO,CAAC,OAAO;IAOf,6FAA6F;IACvF,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAoG9C;;;;OAIG;YACW,aAAa;CA+C5B;AAwBD,uCAAuC;AACvC,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAC5B;IAAE,SAAS,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;CAAE,GACvC;IAAE,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GACvE;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,GACxE;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;CAAE,GAC3D;IAAE,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACjC;IAAE,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAEvC,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAqBD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AA8DD,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBlF;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAO/E;AAqBD,4EAA4E;AAC5E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC"}
|