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,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ObjectId = void 0;
|
|
4
|
+
const hex_ts_1 = require("./hex.js");
|
|
5
|
+
const random_ts_1 = require("./random.js");
|
|
6
|
+
/**
|
|
7
|
+
* A real MongoDB ObjectId — not a lookalike.
|
|
8
|
+
*
|
|
9
|
+
* Layout is exactly the BSON spec, which is what makes documents portable to a real database
|
|
10
|
+
* without translation:
|
|
11
|
+
*
|
|
12
|
+
* bytes 0-3 4-byte big-endian seconds since the Unix epoch
|
|
13
|
+
* bytes 4-8 5-byte value random per process
|
|
14
|
+
* bytes 9-11 3-byte big-endian counter, randomly seeded
|
|
15
|
+
*
|
|
16
|
+
* Two consequences we rely on elsewhere:
|
|
17
|
+
*
|
|
18
|
+
* - Because the timestamp leads and is big-endian, the lowercase hex form sorts in the same order
|
|
19
|
+
* as the raw bytes. So `_id` can be the SQLite TEXT primary key and still give creation-ordered
|
|
20
|
+
* scans and cheap cursor pagination, with no separate sort column.
|
|
21
|
+
* - The per-process random block is what keeps two devices generating ids offline from colliding,
|
|
22
|
+
* which is why `random.ts` refuses to run without a real CSPRNG.
|
|
23
|
+
*/
|
|
24
|
+
const PROCESS_RANDOM = (0, random_ts_1.randomBytes)(5);
|
|
25
|
+
const COUNTER_MAX = 0xffffff;
|
|
26
|
+
let counter = (0, random_ts_1.randomInt)(COUNTER_MAX + 1);
|
|
27
|
+
function nextCounter() {
|
|
28
|
+
counter = (counter + 1) % (COUNTER_MAX + 1); // wraps at 2^24, as the spec requires
|
|
29
|
+
return counter;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A note on numbers: bson (and therefore Mongoose) rejects `new ObjectId(1234)` outright with
|
|
33
|
+
* "Argument passed in does not match the accepted types". AnchorDB rejects it too, rather than
|
|
34
|
+
* offering a friendlier overload, because a convenience that exists only here is exactly the kind
|
|
35
|
+
* of drift that stops code porting cleanly. Build from a time with `createFromTime()`.
|
|
36
|
+
*/
|
|
37
|
+
class ObjectId {
|
|
38
|
+
constructor(value) {
|
|
39
|
+
/** Marks the value for BSON/Mongoose consumers that brand-check instead of instanceof. */
|
|
40
|
+
this._bsontype = "ObjectId";
|
|
41
|
+
this.cachedHex = null;
|
|
42
|
+
if (value === undefined || value === null) {
|
|
43
|
+
this.bytes = ObjectId.generate();
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (value instanceof ObjectId) {
|
|
47
|
+
this.bytes = value.bytes.slice();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (typeof value === "string") {
|
|
51
|
+
const parsed = (0, hex_ts_1.hexToBytes)(value, 12);
|
|
52
|
+
if (!parsed) {
|
|
53
|
+
throw new TypeError(`Argument passed in must be a string of 12 bytes or a string of 24 hex characters, got "${value}"`);
|
|
54
|
+
}
|
|
55
|
+
this.bytes = parsed;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (value instanceof Uint8Array) {
|
|
59
|
+
if (value.length !== 12) {
|
|
60
|
+
throw new TypeError(`Argument passed in must be 12 bytes, got ${value.length}`);
|
|
61
|
+
}
|
|
62
|
+
this.bytes = value.slice();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (typeof value.toHexString === "function") {
|
|
66
|
+
// Accepts a foreign ObjectId (e.g. from the official `bson` package) without importing it.
|
|
67
|
+
const parsed = (0, hex_ts_1.hexToBytes)(value.toHexString(), 12);
|
|
68
|
+
if (parsed) {
|
|
69
|
+
this.bytes = parsed;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
throw new TypeError("Argument passed in does not match the accepted types");
|
|
74
|
+
}
|
|
75
|
+
/** Raw 12 bytes. Copied, so callers cannot mutate an id in place. */
|
|
76
|
+
get id() {
|
|
77
|
+
return this.bytes.slice();
|
|
78
|
+
}
|
|
79
|
+
toHexString() {
|
|
80
|
+
this.cachedHex ??= (0, hex_ts_1.bytesToHex)(this.bytes);
|
|
81
|
+
return this.cachedHex;
|
|
82
|
+
}
|
|
83
|
+
toString() {
|
|
84
|
+
return this.toHexString();
|
|
85
|
+
}
|
|
86
|
+
/** Serialises to the plain hex string, matching Mongoose — not to `{ $oid }`. */
|
|
87
|
+
toJSON() {
|
|
88
|
+
return this.toHexString();
|
|
89
|
+
}
|
|
90
|
+
/** Second-precision creation time. Useful, but never the canonical `createdAt`. */
|
|
91
|
+
getTimestamp() {
|
|
92
|
+
const seconds = (this.bytes[0] << 24) | (this.bytes[1] << 16) | (this.bytes[2] << 8) | this.bytes[3];
|
|
93
|
+
return new Date((seconds >>> 0) * 1000);
|
|
94
|
+
}
|
|
95
|
+
equals(other) {
|
|
96
|
+
if (other === null || other === undefined)
|
|
97
|
+
return false;
|
|
98
|
+
if (other instanceof ObjectId)
|
|
99
|
+
return this.toHexString() === other.toHexString();
|
|
100
|
+
if (typeof other === "string")
|
|
101
|
+
return this.toHexString() === other.toLowerCase();
|
|
102
|
+
if (other instanceof Uint8Array) {
|
|
103
|
+
if (other.length !== 12)
|
|
104
|
+
return false;
|
|
105
|
+
return this.toHexString() === (0, hex_ts_1.bytesToHex)(other);
|
|
106
|
+
}
|
|
107
|
+
if (typeof other.toHexString === "function")
|
|
108
|
+
return this.toHexString() === other.toHexString().toLowerCase();
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
112
|
+
return `new ObjectId("${this.toHexString()}")`;
|
|
113
|
+
}
|
|
114
|
+
inspect() {
|
|
115
|
+
return `new ObjectId("${this.toHexString()}")`;
|
|
116
|
+
}
|
|
117
|
+
/** Raw 12-byte generator. `time` is seconds since the epoch; defaults to now. */
|
|
118
|
+
static generate(time) {
|
|
119
|
+
const seconds = Math.floor(time ?? Date.now() / 1000);
|
|
120
|
+
const out = new Uint8Array(12);
|
|
121
|
+
out[0] = (seconds >> 24) & 0xff;
|
|
122
|
+
out[1] = (seconds >> 16) & 0xff;
|
|
123
|
+
out[2] = (seconds >> 8) & 0xff;
|
|
124
|
+
out[3] = seconds & 0xff;
|
|
125
|
+
out.set(PROCESS_RANDOM, 4);
|
|
126
|
+
const c = nextCounter();
|
|
127
|
+
out[9] = (c >> 16) & 0xff;
|
|
128
|
+
out[10] = (c >> 8) & 0xff;
|
|
129
|
+
out[11] = c & 0xff;
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
static createFromHexString(hex) {
|
|
133
|
+
return new ObjectId(hex);
|
|
134
|
+
}
|
|
135
|
+
static createFromTime(seconds) {
|
|
136
|
+
const bytes = new Uint8Array(12);
|
|
137
|
+
bytes[0] = (seconds >> 24) & 0xff;
|
|
138
|
+
bytes[1] = (seconds >> 16) & 0xff;
|
|
139
|
+
bytes[2] = (seconds >> 8) & 0xff;
|
|
140
|
+
bytes[3] = seconds & 0xff;
|
|
141
|
+
return new ObjectId(bytes);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Mirrors the driver's `isValid`: accepts a 24-char hex string, 12 raw bytes, an ObjectId, or
|
|
145
|
+
* anything exposing `toHexString()`. Notably it does *not* accept arbitrary 12-char strings.
|
|
146
|
+
*/
|
|
147
|
+
static isValid(value) {
|
|
148
|
+
if (value === null || value === undefined)
|
|
149
|
+
return false;
|
|
150
|
+
if (value instanceof ObjectId)
|
|
151
|
+
return true;
|
|
152
|
+
if (typeof value === "string")
|
|
153
|
+
return (0, hex_ts_1.hexToBytes)(value, 12) !== null;
|
|
154
|
+
if (value instanceof Uint8Array)
|
|
155
|
+
return value.length === 12;
|
|
156
|
+
if (typeof value.toHexString === "function") {
|
|
157
|
+
return (0, hex_ts_1.hexToBytes)(value.toHexString(), 12) !== null;
|
|
158
|
+
}
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
/** Test seam so counter-rollover behaviour can be exercised deterministically. */
|
|
162
|
+
static __setCounter(value) {
|
|
163
|
+
counter = value % (COUNTER_MAX + 1);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.ObjectId = ObjectId;
|
|
167
|
+
//# sourceMappingURL=object-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object-id.js","sourceRoot":"","sources":["../../../src/core/object-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Test seam, and the escape hatch for exotic runtimes. Pass `null` to restore platform crypto. */
|
|
2
|
+
export declare function setRandomBytesSource(fn: ((size: number) => Uint8Array) | null): void;
|
|
3
|
+
export declare function randomBytes(size: number): Uint8Array;
|
|
4
|
+
/** Uniform integer in [0, maxExclusive). Used to seed the ObjectId counter. */
|
|
5
|
+
export declare function randomInt(maxExclusive: number): number;
|
|
6
|
+
//# sourceMappingURL=random.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":"AAYA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAepD;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAItD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setRandomBytesSource = setRandomBytesSource;
|
|
4
|
+
exports.randomBytes = randomBytes;
|
|
5
|
+
exports.randomInt = randomInt;
|
|
6
|
+
const errors_ts_1 = require("./errors.js");
|
|
7
|
+
/**
|
|
8
|
+
* Cryptographically secure random bytes.
|
|
9
|
+
*
|
|
10
|
+
* ObjectId collision resistance depends on this being a real CSPRNG, so there is deliberately no
|
|
11
|
+
* `Math.random()` fallback: on a platform without one we throw a message that names the fix. A
|
|
12
|
+
* silent downgrade would raise collision risk across devices in exactly the offline, multi-device
|
|
13
|
+
* scenario AnchorDB exists to serve, and would do so invisibly.
|
|
14
|
+
*/
|
|
15
|
+
let override = null;
|
|
16
|
+
/** Test seam, and the escape hatch for exotic runtimes. Pass `null` to restore platform crypto. */
|
|
17
|
+
function setRandomBytesSource(fn) {
|
|
18
|
+
override = fn;
|
|
19
|
+
}
|
|
20
|
+
function randomBytes(size) {
|
|
21
|
+
if (override)
|
|
22
|
+
return override(size);
|
|
23
|
+
const out = new Uint8Array(size);
|
|
24
|
+
const c = globalThis.crypto;
|
|
25
|
+
if (c && typeof c.getRandomValues === "function") {
|
|
26
|
+
c.getRandomValues(out);
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
throw new errors_ts_1.AnchorConfigError("No cryptographically secure random source is available (globalThis.crypto.getRandomValues is missing). " +
|
|
30
|
+
"On React Native, install and import `react-native-get-random-values` at the top of your entry file. " +
|
|
31
|
+
"AnchorDB refuses to fall back to Math.random() because ObjectId uniqueness depends on real entropy.");
|
|
32
|
+
}
|
|
33
|
+
/** Uniform integer in [0, maxExclusive). Used to seed the ObjectId counter. */
|
|
34
|
+
function randomInt(maxExclusive) {
|
|
35
|
+
const bytes = randomBytes(4);
|
|
36
|
+
const value = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0;
|
|
37
|
+
return value % maxExclusive;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=random.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../src/core/random.ts"],"names":[],"mappings":";;AAaA,oDAEC;AAED,kCAeC;AAGD,8BAIC;AAvCD,2CAAgD;AAEhD;;;;;;;GAOG;AACH,IAAI,QAAQ,GAA0C,IAAI,CAAC;AAE3D,mGAAmG;AACnG,SAAgB,oBAAoB,CAAC,EAAyC;IAC5E,QAAQ,GAAG,EAAE,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CAAC,IAAY;IACtC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAuB,UAAU,CAAC,MAAM,CAAC;IAChD,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QACjD,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,IAAI,6BAAiB,CACzB,yGAAyG;QACvG,sGAAsG;QACtG,qGAAqG,CACxG,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAgB,SAAS,CAAC,YAAoB;IAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;IAC3F,OAAO,KAAK,GAAG,YAAY,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { HybridLogicalClock } from "./hlc.js";
|
|
2
|
+
import type { TimeService } from "../timestamps/index.js";
|
|
3
|
+
import type { TypedEmitter } from "../events/emitter.js";
|
|
4
|
+
import type { DatabaseAdapter, WriteOp } from "../storage/types.js";
|
|
5
|
+
import type { Model } from "../model/model.js";
|
|
6
|
+
/** Events the SDK emits. Local events fire in both modes; sync events only in synced mode. */
|
|
7
|
+
export interface AnchorEvents extends Record<string, unknown> {
|
|
8
|
+
change: {
|
|
9
|
+
collection: string;
|
|
10
|
+
modelName: string;
|
|
11
|
+
operation: "insert" | "update" | "replace" | "delete";
|
|
12
|
+
documentId: string;
|
|
13
|
+
document: Record<string, unknown> | null;
|
|
14
|
+
};
|
|
15
|
+
"queue:changed": {
|
|
16
|
+
pending: number;
|
|
17
|
+
failed: number;
|
|
18
|
+
};
|
|
19
|
+
online: {
|
|
20
|
+
at: string;
|
|
21
|
+
};
|
|
22
|
+
offline: {
|
|
23
|
+
at: string;
|
|
24
|
+
};
|
|
25
|
+
"sync:start": {
|
|
26
|
+
pending: number;
|
|
27
|
+
};
|
|
28
|
+
"sync:progress": {
|
|
29
|
+
pushed: number;
|
|
30
|
+
pulled: number;
|
|
31
|
+
};
|
|
32
|
+
"sync:complete": {
|
|
33
|
+
pushed: number;
|
|
34
|
+
pulled: number;
|
|
35
|
+
conflicts: number;
|
|
36
|
+
durationMs: number;
|
|
37
|
+
};
|
|
38
|
+
"sync:error": {
|
|
39
|
+
error: Error;
|
|
40
|
+
phase: "push" | "pull";
|
|
41
|
+
};
|
|
42
|
+
conflict: {
|
|
43
|
+
collection: string;
|
|
44
|
+
documentId: string;
|
|
45
|
+
strategy: string;
|
|
46
|
+
winner: "local" | "remote" | "merged";
|
|
47
|
+
local: Record<string, unknown>;
|
|
48
|
+
remote: Record<string, unknown>;
|
|
49
|
+
base?: Record<string, unknown>;
|
|
50
|
+
resolved: Record<string, unknown>;
|
|
51
|
+
};
|
|
52
|
+
"conflict:unresolvable": {
|
|
53
|
+
collection: string;
|
|
54
|
+
documentId: string;
|
|
55
|
+
attempts: number;
|
|
56
|
+
};
|
|
57
|
+
"duplicate-key": {
|
|
58
|
+
collection: string;
|
|
59
|
+
documentId: string;
|
|
60
|
+
index: string;
|
|
61
|
+
keyValue: Record<string, unknown>;
|
|
62
|
+
};
|
|
63
|
+
"auth:expired": {
|
|
64
|
+
at: string;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The shared services a Model needs, passed as one object so Model never reaches back into AnchorDB.
|
|
69
|
+
*
|
|
70
|
+
* `syncEnabled` is the single flag that distinguishes the two modes. It is read at write time rather
|
|
71
|
+
* than branching into a different code path, which is what keeps local-only and synced behaviour
|
|
72
|
+
* identical everywhere except where they genuinely must differ (queueing and tombstones).
|
|
73
|
+
*/
|
|
74
|
+
export interface AnchorRuntime {
|
|
75
|
+
readonly adapter: DatabaseAdapter;
|
|
76
|
+
readonly time: TimeService;
|
|
77
|
+
readonly clock: HybridLogicalClock;
|
|
78
|
+
readonly events: TypedEmitter<AnchorEvents>;
|
|
79
|
+
readonly syncEnabled: boolean;
|
|
80
|
+
readonly clientId: string;
|
|
81
|
+
readonly onMissingRef: "null" | "keep-id" | "throw";
|
|
82
|
+
getModel(name: string): Model;
|
|
83
|
+
/** Resolve a storage collection name to its model, if one is registered. Used by $lookup. */
|
|
84
|
+
getModelByCollection?(collection: string): Model | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Resolves once the adapter is open.
|
|
87
|
+
*
|
|
88
|
+
* AnchorDB opens lazily so construction never does I/O, which means every Model operation must
|
|
89
|
+
* await this first. MemoryAdapter tolerates being used unopened; a SQLite adapter does not, so
|
|
90
|
+
* without this the file-backed path fails while the in-memory tests pass.
|
|
91
|
+
*/
|
|
92
|
+
ready(): Promise<void>;
|
|
93
|
+
/** No-op in local-only mode; the sync engine installs the real implementation. */
|
|
94
|
+
recordMutations(collection: string, ops: WriteOp[]): Promise<void>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/core/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/runtime.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UUIDv7 — time-ordered, used for mutation ids.
|
|
3
|
+
*
|
|
4
|
+
* Time-ordering matters here: the mutation queue is replayed in creation order, and a sortable id
|
|
5
|
+
* means the queue's natural primary-key order is already the correct apply order.
|
|
6
|
+
*
|
|
7
|
+
* 48 bits big-endian milliseconds
|
|
8
|
+
* 4 bits version (7)
|
|
9
|
+
* 12 bits random
|
|
10
|
+
* 2 bits variant (0b10)
|
|
11
|
+
* 62 bits random
|
|
12
|
+
*/
|
|
13
|
+
export declare function uuidv7(): string;
|
|
14
|
+
/** Short, human-readable client identity, e.g. `cli_a3f9c2d1`. */
|
|
15
|
+
export declare function generateClientId(): string;
|
|
16
|
+
//# sourceMappingURL=uuid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../src/core/uuid.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAgB/B;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uuidv7 = uuidv7;
|
|
4
|
+
exports.generateClientId = generateClientId;
|
|
5
|
+
const hex_ts_1 = require("./hex.js");
|
|
6
|
+
const random_ts_1 = require("./random.js");
|
|
7
|
+
/**
|
|
8
|
+
* UUIDv7 — time-ordered, used for mutation ids.
|
|
9
|
+
*
|
|
10
|
+
* Time-ordering matters here: the mutation queue is replayed in creation order, and a sortable id
|
|
11
|
+
* means the queue's natural primary-key order is already the correct apply order.
|
|
12
|
+
*
|
|
13
|
+
* 48 bits big-endian milliseconds
|
|
14
|
+
* 4 bits version (7)
|
|
15
|
+
* 12 bits random
|
|
16
|
+
* 2 bits variant (0b10)
|
|
17
|
+
* 62 bits random
|
|
18
|
+
*/
|
|
19
|
+
function uuidv7() {
|
|
20
|
+
const now = Date.now();
|
|
21
|
+
const bytes = (0, random_ts_1.randomBytes)(16);
|
|
22
|
+
bytes[0] = (now / 2 ** 40) & 0xff;
|
|
23
|
+
bytes[1] = (now / 2 ** 32) & 0xff;
|
|
24
|
+
bytes[2] = (now / 2 ** 24) & 0xff;
|
|
25
|
+
bytes[3] = (now / 2 ** 16) & 0xff;
|
|
26
|
+
bytes[4] = (now / 2 ** 8) & 0xff;
|
|
27
|
+
bytes[5] = now & 0xff;
|
|
28
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x70; // version 7
|
|
29
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80; // variant 10
|
|
30
|
+
const hex = (0, hex_ts_1.bytesToHex)(bytes);
|
|
31
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
32
|
+
}
|
|
33
|
+
/** Short, human-readable client identity, e.g. `cli_a3f9c2d1`. */
|
|
34
|
+
function generateClientId() {
|
|
35
|
+
return `cli_${(0, hex_ts_1.bytesToHex)((0, random_ts_1.randomBytes)(8))}`;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../../src/core/uuid.ts"],"names":[],"mappings":";;AAeA,wBAgBC;AAGD,4CAEC;AApCD,qCAAsC;AACtC,2CAA0C;AAE1C;;;;;;;;;;;GAWG;AACH,SAAgB,MAAM;IACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAA,uBAAW,EAAC,EAAE,CAAC,CAAC;IAE9B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAEtB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAClD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,aAAa;IAEnD,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7G,CAAC;AAED,kEAAkE;AAClE,SAAgB,gBAAgB;IAC9B,OAAO,OAAO,IAAA,mBAAU,EAAC,IAAA,uBAAW,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Schema } from "../schema/schema.js";
|
|
2
|
+
import { SchemaTypes, type SchemaOptions, type SchemaTypeOptions, type VirtualDefinition } from "../schema/types.js";
|
|
3
|
+
/** `@Schema({ timestamps: true })` on the class. */
|
|
4
|
+
export declare function Schema_(options?: SchemaOptions): ClassDecorator;
|
|
5
|
+
export { Schema_ as Schema };
|
|
6
|
+
export type PropArg = SchemaTypeOptions | unknown[] | (new (...args: never[]) => unknown) | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* `@Prop()`, accepting every form `@nestjs/mongoose` accepts:
|
|
9
|
+
*
|
|
10
|
+
* @Prop() infer from design:type
|
|
11
|
+
* @Prop(String) explicit type
|
|
12
|
+
* @Prop({ type: String, ... }) explicit type plus options
|
|
13
|
+
* @Prop([String]) array of type
|
|
14
|
+
* @Prop(raw({ ... })) inline nested definition
|
|
15
|
+
*/
|
|
16
|
+
export declare function Prop(arg?: PropArg): PropertyDecorator;
|
|
17
|
+
/** `@Virtual()` — a computed path, matching @nestjs/mongoose v10. */
|
|
18
|
+
export declare function Virtual(options?: VirtualDefinition["options"]): PropertyDecorator;
|
|
19
|
+
/** Class-level index declaration, mirroring `schema.index()`. */
|
|
20
|
+
export declare function Index(fields: Record<string, 1 | -1>, options?: Record<string, unknown>): ClassDecorator;
|
|
21
|
+
/** Inline nested definition, matching @nestjs/mongoose's `raw()`. */
|
|
22
|
+
export declare function raw(definition: Record<string, unknown>): SchemaTypeOptions;
|
|
23
|
+
export interface MongooseDefinition {
|
|
24
|
+
definition: Record<string, unknown>;
|
|
25
|
+
options: SchemaOptions;
|
|
26
|
+
indexes: Array<{
|
|
27
|
+
fields: Record<string, 1 | -1>;
|
|
28
|
+
options: Record<string, unknown>;
|
|
29
|
+
}>;
|
|
30
|
+
}
|
|
31
|
+
export declare class SchemaFactory {
|
|
32
|
+
/** Build an AnchorDB `Schema` from a decorated class. */
|
|
33
|
+
static createForClass<T>(target: new (...args: never[]) => T): Schema<T>;
|
|
34
|
+
/** The raw definition, shared by `createForClass` and the Mongoose emitter. */
|
|
35
|
+
static toDefinition(target: new (...args: never[]) => unknown): MongooseDefinition;
|
|
36
|
+
/**
|
|
37
|
+
* Emit the twin Mongoose schema for the backend.
|
|
38
|
+
*
|
|
39
|
+
* Called without arguments it returns the plain definition/options objects, so it works without
|
|
40
|
+
* mongoose installed. Pass the mongoose module to get a real `mongoose.Schema` back.
|
|
41
|
+
*/
|
|
42
|
+
static toMongooseSchema(target: new (...args: never[]) => unknown, mongooseModule?: {
|
|
43
|
+
Schema: new (def: unknown, opts?: unknown) => unknown;
|
|
44
|
+
}): unknown;
|
|
45
|
+
}
|
|
46
|
+
export { SchemaTypes };
|
|
47
|
+
export type { SchemaOptions, SchemaTypeOptions };
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA+DrH,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,OAAO,GAAE,aAAkB,GAAG,cAAc,CASnE;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAC;AAE7B,MAAM,MAAM,OAAO,GAAG,iBAAiB,GAAG,OAAO,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;AAEtG;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAarD;AAED,qEAAqE;AACrE,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,iBAAiB,CAsBjF;AAED,iEAAiE;AACjE,wBAAgB,KAAK,CACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAC9B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,cAAc,CAahB;AAED,qEAAqE;AACrE,wBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAE1E;AAiED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;CACtF;AAED,qBAAa,aAAa;IACxB,yDAAyD;IACzD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IA0BxE,+EAA+E;IAC/E,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAAG,kBAAkB;IAsBlF;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CACrB,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,EACzC,cAAc,CAAC,EAAE;QAAE,MAAM,EAAE,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;KAAE,GACzE,OAAO;CAYX;AAgCD,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAC"}
|