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,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateDocument = validateDocument;
|
|
4
|
+
const errors_ts_1 = require("../core/errors.js");
|
|
5
|
+
const path_ts_1 = require("../query/path.js");
|
|
6
|
+
async function validateDocument(doc, schema, opts = {}) {
|
|
7
|
+
const error = new errors_ts_1.ValidationError(opts.modelName);
|
|
8
|
+
const only = opts.pathsToValidate ? new Set(opts.pathsToValidate) : null;
|
|
9
|
+
for (const [path, def] of schema.paths) {
|
|
10
|
+
if (only && !only.has(path))
|
|
11
|
+
continue;
|
|
12
|
+
if (path === "_id")
|
|
13
|
+
continue;
|
|
14
|
+
const value = (0, path_ts_1.getPath)(doc, path);
|
|
15
|
+
if (isRequiredViolation(doc, path, def, value)) {
|
|
16
|
+
error.addError(path, new errors_ts_1.ValidatorError({
|
|
17
|
+
path,
|
|
18
|
+
value,
|
|
19
|
+
kind: "required",
|
|
20
|
+
message: interpolate(def.requiredMessage ?? `Path \`{PATH}\` is required.`, path, value),
|
|
21
|
+
}));
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Absent optional values skip every other validator, matching Mongoose.
|
|
25
|
+
if (value === undefined || value === null)
|
|
26
|
+
continue;
|
|
27
|
+
if (def.enumValues) {
|
|
28
|
+
const values = def.enumValues;
|
|
29
|
+
const candidates = Array.isArray(value) && def.instance === "Array" ? value : [value];
|
|
30
|
+
const bad = candidates.find((c) => !values.includes(c));
|
|
31
|
+
if (bad !== undefined) {
|
|
32
|
+
error.addError(path, new errors_ts_1.ValidatorError({
|
|
33
|
+
path,
|
|
34
|
+
value: bad,
|
|
35
|
+
kind: "enum",
|
|
36
|
+
message: interpolate(def.enumMessage ?? "`{VALUE}` is not a valid enum value for path `{PATH}`.", path, bad),
|
|
37
|
+
}));
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (const spec of def.validators) {
|
|
42
|
+
let ok;
|
|
43
|
+
try {
|
|
44
|
+
ok = await spec.validator(value, doc);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// A throwing custom validator is a failure, not a crash — matching Mongoose, and keeping a
|
|
48
|
+
// user's buggy validator from taking down an entire batch insert.
|
|
49
|
+
error.addError(path, new errors_ts_1.ValidatorError({
|
|
50
|
+
path,
|
|
51
|
+
value,
|
|
52
|
+
kind: "user defined",
|
|
53
|
+
message: err instanceof Error ? err.message : String(err),
|
|
54
|
+
}));
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (!ok) {
|
|
58
|
+
const message = typeof spec.message === "function"
|
|
59
|
+
? spec.message({ value, path })
|
|
60
|
+
: interpolate(spec.message ?? `Validator failed for path \`{PATH}\` with value \`{VALUE}\``, path, value);
|
|
61
|
+
error.addError(path, new errors_ts_1.ValidatorError({ path, value, kind: "user defined", message }));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!error.isEmpty)
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
function isRequiredViolation(doc, path, def, value) {
|
|
69
|
+
const required = def.requiredFn ? def.requiredFn.call(doc) : def.required;
|
|
70
|
+
if (!required)
|
|
71
|
+
return false;
|
|
72
|
+
if (value === undefined || value === null)
|
|
73
|
+
return true;
|
|
74
|
+
// Mongoose treats "" and [] as missing for required purposes.
|
|
75
|
+
if (typeof value === "string" && value.length === 0)
|
|
76
|
+
return true;
|
|
77
|
+
if (Array.isArray(value) && value.length === 0)
|
|
78
|
+
return true;
|
|
79
|
+
return !(0, path_ts_1.hasPath)(doc, path) && value === undefined;
|
|
80
|
+
}
|
|
81
|
+
function interpolate(template, path, value) {
|
|
82
|
+
return template.replace(/\{PATH\}/g, path).replace(/\{VALUE\}/g, formatValue(value));
|
|
83
|
+
}
|
|
84
|
+
function formatValue(value) {
|
|
85
|
+
if (value === null)
|
|
86
|
+
return "null";
|
|
87
|
+
if (value === undefined)
|
|
88
|
+
return "undefined";
|
|
89
|
+
if (value instanceof Date)
|
|
90
|
+
return value.toISOString();
|
|
91
|
+
if (typeof value === "object") {
|
|
92
|
+
try {
|
|
93
|
+
return JSON.stringify(value);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return String(value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return String(value);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/schema/validate.ts"],"names":[],"mappings":";;AAmBA,4CAiFC;AApGD,iDAAoE;AACpE,8CAAoD;AAkB7C,KAAK,UAAU,gBAAgB,CACpC,GAA4B,EAC5B,MAAc,EACd,OAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,IAAI,2BAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEzE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtC,IAAI,IAAI,KAAK,KAAK;YAAE,SAAS;QAE7B,MAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEjC,IAAI,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,QAAQ,CACZ,IAAI,EACJ,IAAI,0BAAc,CAAC;gBACjB,IAAI;gBACJ,KAAK;gBACL,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,eAAe,IAAI,8BAA8B,EAAE,IAAI,EAAE,KAAK,CAAC;aACzF,CAAC,CACH,CAAC;YACF,SAAS;QACX,CAAC;QAED,wEAAwE;QACxE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAEpD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC;YAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtF,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,KAAK,CAAC,QAAQ,CACZ,IAAI,EACJ,IAAI,0BAAc,CAAC;oBACjB,IAAI;oBACJ,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,WAAW,CAClB,GAAG,CAAC,WAAW,IAAI,wDAAwD,EAC3E,IAAI,EACJ,GAAG,CACJ;iBACF,CAAC,CACH,CAAC;gBACF,SAAS;YACX,CAAC;QACH,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,EAAW,CAAC;YAChB,IAAI,CAAC;gBACH,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,2FAA2F;gBAC3F,kEAAkE;gBAClE,KAAK,CAAC,QAAQ,CACZ,IAAI,EACJ,IAAI,0BAAc,CAAC;oBACjB,IAAI;oBACJ,KAAK;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC1D,CAAC,CACH,CAAC;gBACF,SAAS;YACX,CAAC;YACD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,OAAO,GACX,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU;oBAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBAC/B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,IAAI,6DAA6D,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9G,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,0BAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,MAAM,KAAK,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAA4B,EAC5B,IAAY,EACZ,GAAe,EACf,KAAc;IAEd,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC1E,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,8DAA8D;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,OAAO,CAAC,IAAA,iBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK,SAAS,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,IAAY,EAAE,KAAc;IACjE,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC;IAC5C,IAAI,KAAK,YAAY,IAAI;QAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SqlAdapterBase, type SqlDriver } from "./sql-base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Capacitor SQLite adapter (Ionic on iOS / Android).
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite";
|
|
7
|
+
* import { CapacitorSqliteAdapter } from "anchordb/storage/capacitor-sqlite";
|
|
8
|
+
*
|
|
9
|
+
* const adapter = new CapacitorSqliteAdapter({
|
|
10
|
+
* connection: new SQLiteConnection(CapacitorSQLite),
|
|
11
|
+
* database: "my-app",
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* The plugin is injected for the same reason as Expo's. For `ionic serve` in a browser use the
|
|
16
|
+
* IndexedDB adapter instead: the Capacitor plugin's web build needs jeep-sqlite plus a WASM asset,
|
|
17
|
+
* which is disproportionate setup for a development convenience.
|
|
18
|
+
*
|
|
19
|
+
* **Not executed by this repository's test run**: it needs a device or emulator. Written against
|
|
20
|
+
* the documented plugin API and typechecked; all storage logic is inherited from `SqlAdapterBase`,
|
|
21
|
+
* which the conformance suite covers through node:sqlite.
|
|
22
|
+
*/
|
|
23
|
+
export interface CapacitorSQLiteConnection {
|
|
24
|
+
createConnection(database: string, encrypted: boolean, mode: string, version: number, readonly: boolean): Promise<CapacitorDBConnection>;
|
|
25
|
+
closeConnection(database: string, readonly: boolean): Promise<void>;
|
|
26
|
+
isConnection?(database: string, readonly: boolean): Promise<{
|
|
27
|
+
result: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
retrieveConnection?(database: string, readonly: boolean): Promise<CapacitorDBConnection>;
|
|
30
|
+
}
|
|
31
|
+
export interface CapacitorDBConnection {
|
|
32
|
+
open(): Promise<void>;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
execute(statements: string): Promise<{
|
|
35
|
+
changes?: {
|
|
36
|
+
changes: number;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
run(statement: string, values?: unknown[], transaction?: boolean): Promise<{
|
|
40
|
+
changes?: {
|
|
41
|
+
changes: number;
|
|
42
|
+
};
|
|
43
|
+
}>;
|
|
44
|
+
query(statement: string, values?: unknown[]): Promise<{
|
|
45
|
+
values?: unknown[];
|
|
46
|
+
}>;
|
|
47
|
+
beginTransaction?(): Promise<unknown>;
|
|
48
|
+
commitTransaction?(): Promise<unknown>;
|
|
49
|
+
rollbackTransaction?(): Promise<unknown>;
|
|
50
|
+
}
|
|
51
|
+
export interface CapacitorSqliteAdapterOptions {
|
|
52
|
+
connection: CapacitorSQLiteConnection;
|
|
53
|
+
database?: string;
|
|
54
|
+
dbName?: string;
|
|
55
|
+
encrypted?: boolean;
|
|
56
|
+
version?: number;
|
|
57
|
+
}
|
|
58
|
+
export declare class CapacitorSqliteAdapter extends SqlAdapterBase {
|
|
59
|
+
readonly name = "capacitor-sqlite";
|
|
60
|
+
private readonly connection;
|
|
61
|
+
private readonly database;
|
|
62
|
+
private readonly encrypted;
|
|
63
|
+
private readonly version;
|
|
64
|
+
constructor(options: CapacitorSqliteAdapterOptions);
|
|
65
|
+
protected createDriver(): Promise<SqlDriver>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=capacitor-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/capacitor-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAClC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,YAAY,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,kBAAkB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IACxE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC9G,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9E,gBAAgB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,iBAAiB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,mBAAmB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,yBAAyB,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IACxD,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA4B;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,6BAA6B;cAelC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAsDnD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CapacitorSqliteAdapter = void 0;
|
|
4
|
+
const errors_ts_1 = require("../../core/errors.js");
|
|
5
|
+
const sql_base_ts_1 = require("./sql-base.js");
|
|
6
|
+
class CapacitorSqliteAdapter extends sql_base_ts_1.SqlAdapterBase {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super(options.dbName ?? options.database ?? "anchor");
|
|
9
|
+
this.name = "capacitor-sqlite";
|
|
10
|
+
if (!options.connection?.createConnection) {
|
|
11
|
+
throw new errors_ts_1.AnchorConfigError("CapacitorSqliteAdapter needs an SQLiteConnection: " +
|
|
12
|
+
'import { CapacitorSQLite, SQLiteConnection } from "@capacitor-community/sqlite" ' +
|
|
13
|
+
"and pass `new SQLiteConnection(CapacitorSQLite)` as `connection`.");
|
|
14
|
+
}
|
|
15
|
+
this.connection = options.connection;
|
|
16
|
+
this.database = options.database ?? options.dbName ?? "anchor";
|
|
17
|
+
this.encrypted = options.encrypted ?? false;
|
|
18
|
+
this.version = options.version ?? 1;
|
|
19
|
+
}
|
|
20
|
+
async createDriver() {
|
|
21
|
+
// Reuse an existing connection when the plugin already holds one. Creating a second for the
|
|
22
|
+
// same database throws, and hot reload makes that a routine occurrence in development.
|
|
23
|
+
const existing = await this.connection.isConnection?.(this.database, false);
|
|
24
|
+
const db = existing?.result && this.connection.retrieveConnection
|
|
25
|
+
? await this.connection.retrieveConnection(this.database, false)
|
|
26
|
+
: await this.connection.createConnection(this.database, this.encrypted, this.encrypted ? "secret" : "no-encryption", this.version, false);
|
|
27
|
+
await db.open();
|
|
28
|
+
let depth = 0;
|
|
29
|
+
return {
|
|
30
|
+
name: "capacitor-sqlite",
|
|
31
|
+
run: async (sql, params = []) => {
|
|
32
|
+
// `transaction: false` on purpose — transactions are managed explicitly below. Letting the
|
|
33
|
+
// plugin wrap each statement individually would break the all-or-nothing write guarantee.
|
|
34
|
+
await db.run(sql, params, false);
|
|
35
|
+
},
|
|
36
|
+
all: async (sql, params = []) => {
|
|
37
|
+
const result = await db.query(sql, params);
|
|
38
|
+
return (result.values ?? []);
|
|
39
|
+
},
|
|
40
|
+
exec: async (sql) => {
|
|
41
|
+
await db.execute(sql);
|
|
42
|
+
},
|
|
43
|
+
transaction: async (fn) => {
|
|
44
|
+
if (depth > 0)
|
|
45
|
+
return fn(); // already inside one
|
|
46
|
+
depth++;
|
|
47
|
+
await db.beginTransaction?.();
|
|
48
|
+
try {
|
|
49
|
+
const result = await fn();
|
|
50
|
+
await db.commitTransaction?.();
|
|
51
|
+
return result;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
await db.rollbackTransaction?.().catch(() => undefined);
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
finally {
|
|
58
|
+
depth--;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
close: async () => {
|
|
62
|
+
await db.close();
|
|
63
|
+
await this.connection.closeConnection(this.database, false);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.CapacitorSqliteAdapter = CapacitorSqliteAdapter;
|
|
69
|
+
//# sourceMappingURL=capacitor-sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor-sqlite.js","sourceRoot":"","sources":["../../../../src/storage/adapters/capacitor-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { SqlAdapterBase, type SqlDriver } from "./sql-base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Expo SQLite adapter (React Native / iOS / Android).
|
|
4
|
+
*
|
|
5
|
+
* ```ts
|
|
6
|
+
* import * as SQLite from "expo-sqlite";
|
|
7
|
+
* import { ExpoSqliteAdapter } from "anchordb/storage/expo-sqlite";
|
|
8
|
+
*
|
|
9
|
+
* const db = new AnchorDB({
|
|
10
|
+
* name: "my-app",
|
|
11
|
+
* adapter: new ExpoSqliteAdapter({ sqlite: SQLite, database: "my-app.db" }),
|
|
12
|
+
* });
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* `expo-sqlite` is **injected rather than imported**: importing it would force every consumer of
|
|
16
|
+
* `anchordb` to install an Expo native module, including Node and browser users who will never
|
|
17
|
+
* touch it. The Capacitor adapter follows the same rule.
|
|
18
|
+
*
|
|
19
|
+
* Targets the modern async API (`openDatabaseAsync`, SDK 51+). The legacy callback API is
|
|
20
|
+
* deliberately not supported — it is deprecated upstream, and shimming it would obscure the
|
|
21
|
+
* transaction semantics the atomic-write guarantee depends on.
|
|
22
|
+
*
|
|
23
|
+
* **Not executed by this repository's test run**: it needs a device or simulator. It is written
|
|
24
|
+
* against the documented API and typechecked, and every line of its query, index and
|
|
25
|
+
* unique-enforcement logic is inherited from `SqlAdapterBase`, which the storage conformance suite
|
|
26
|
+
* exercises through the node:sqlite adapter.
|
|
27
|
+
*/
|
|
28
|
+
export interface ExpoSQLiteModule {
|
|
29
|
+
openDatabaseAsync(name: string, options?: Record<string, unknown>): Promise<ExpoDatabase>;
|
|
30
|
+
}
|
|
31
|
+
export interface ExpoDatabase {
|
|
32
|
+
execAsync(source: string): Promise<void>;
|
|
33
|
+
runAsync(source: string, params?: unknown[]): Promise<{
|
|
34
|
+
changes: number;
|
|
35
|
+
lastInsertRowId: number;
|
|
36
|
+
}>;
|
|
37
|
+
getAllAsync<T>(source: string, params?: unknown[]): Promise<T[]>;
|
|
38
|
+
withExclusiveTransactionAsync(task: (tx: ExpoDatabase) => Promise<void>): Promise<void>;
|
|
39
|
+
closeAsync(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export interface ExpoSqliteAdapterOptions {
|
|
42
|
+
/** The imported `expo-sqlite` module. */
|
|
43
|
+
sqlite: ExpoSQLiteModule;
|
|
44
|
+
/** File name, e.g. "my-app.db". */
|
|
45
|
+
database?: string;
|
|
46
|
+
dbName?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare class ExpoSqliteAdapter extends SqlAdapterBase {
|
|
49
|
+
readonly name = "expo-sqlite";
|
|
50
|
+
private readonly sqlite;
|
|
51
|
+
private readonly database;
|
|
52
|
+
constructor(options: ExpoSqliteAdapterOptions);
|
|
53
|
+
protected createDriver(): Promise<SqlDriver>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=expo-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo-sqlite.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/expo-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpG,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACjE,6BAA6B,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,MAAM,EAAE,gBAAgB,CAAC;IACzB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAkB,SAAQ,cAAc;IACnD,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,OAAO,EAAE,wBAAwB;cAa7B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAiCnD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExpoSqliteAdapter = void 0;
|
|
4
|
+
const errors_ts_1 = require("../../core/errors.js");
|
|
5
|
+
const sql_base_ts_1 = require("./sql-base.js");
|
|
6
|
+
class ExpoSqliteAdapter extends sql_base_ts_1.SqlAdapterBase {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super(options.dbName ?? "anchor");
|
|
9
|
+
this.name = "expo-sqlite";
|
|
10
|
+
if (!options.sqlite?.openDatabaseAsync) {
|
|
11
|
+
throw new errors_ts_1.AnchorConfigError("ExpoSqliteAdapter needs the expo-sqlite module: " +
|
|
12
|
+
'import * as SQLite from "expo-sqlite" and pass it as `sqlite`. ' +
|
|
13
|
+
"SDK 51+ is required (the async API).");
|
|
14
|
+
}
|
|
15
|
+
this.sqlite = options.sqlite;
|
|
16
|
+
this.database = options.database ?? `${options.dbName ?? "anchor"}.db`;
|
|
17
|
+
}
|
|
18
|
+
async createDriver() {
|
|
19
|
+
const db = await this.sqlite.openDatabaseAsync(this.database);
|
|
20
|
+
// WAL stops reads blocking on a write, which on a mid-range Android device is the difference
|
|
21
|
+
// between a smooth list and a visible stutter while syncing.
|
|
22
|
+
await db.execAsync("PRAGMA journal_mode = WAL;");
|
|
23
|
+
let inTransaction = false;
|
|
24
|
+
return {
|
|
25
|
+
name: "expo-sqlite",
|
|
26
|
+
run: async (sql, params = []) => {
|
|
27
|
+
await db.runAsync(sql, params);
|
|
28
|
+
},
|
|
29
|
+
all: async (sql, params = []) => db.getAllAsync(sql, params),
|
|
30
|
+
exec: async (sql) => db.execAsync(sql),
|
|
31
|
+
transaction: async (fn) => {
|
|
32
|
+
// A nested transaction is treated as a no-op rather than an error: createIndex() opens one
|
|
33
|
+
// and may legitimately be called from code that already has one open.
|
|
34
|
+
if (inTransaction)
|
|
35
|
+
return fn();
|
|
36
|
+
let result;
|
|
37
|
+
inTransaction = true;
|
|
38
|
+
try {
|
|
39
|
+
await db.withExclusiveTransactionAsync(async () => {
|
|
40
|
+
result = await fn();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
inTransaction = false;
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
},
|
|
48
|
+
close: async () => db.closeAsync(),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ExpoSqliteAdapter = ExpoSqliteAdapter;
|
|
53
|
+
//# sourceMappingURL=expo-sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo-sqlite.js","sourceRoot":"","sources":["../../../../src/storage/adapters/expo-sqlite.ts"],"names":[],"mappings":";;;AAAA,oDAAyD;AACzD,+CAA+D;AAiD/D,MAAa,iBAAkB,SAAQ,4BAAc;IAKnD,YAAY,OAAiC;QAC3C,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC;QAL3B,SAAI,GAAG,aAAa,CAAC;QAM5B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC;YACvC,MAAM,IAAI,6BAAiB,CACzB,kDAAkD;gBAChD,iEAAiE;gBACjE,sCAAsC,CACzC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,KAAK,CAAC;IACzE,CAAC;IAES,KAAK,CAAC,YAAY;QAC1B,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,6FAA6F;QAC7F,6DAA6D;QAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAEjD,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE;gBAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACjC,CAAC;YACD,GAAG,EAAE,KAAK,EAAK,GAAW,EAAE,SAAoB,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAI,GAAG,EAAE,MAAM,CAAC;YACrF,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;YACtC,WAAW,EAAE,KAAK,EAAK,EAAoB,EAAc,EAAE;gBACzD,2FAA2F;gBAC3F,sEAAsE;gBACtE,IAAI,aAAa;oBAAE,OAAO,EAAE,EAAE,CAAC;gBAC/B,IAAI,MAAU,CAAC;gBACf,aAAa,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,6BAA6B,CAAC,KAAK,IAAI,EAAE;wBAChD,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACL,CAAC;wBAAS,CAAC;oBACT,aAAa,GAAG,KAAK,CAAC;gBACxB,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE;SACnC,CAAC;IACJ,CAAC;CACF;AAnDD,8CAmDC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { AdapterStats, DatabaseAdapter, IndexSpec, StoragePlan, StorageResult, StoredRow, WriteOp } from "../types.js";
|
|
2
|
+
export interface IndexedDbAdapterOptions {
|
|
3
|
+
dbName?: string;
|
|
4
|
+
/** Injectable for tests and non-browser runtimes (e.g. fake-indexeddb). */
|
|
5
|
+
indexedDB?: IDBFactory;
|
|
6
|
+
/**
|
|
7
|
+
* The matching `IDBKeyRange`.
|
|
8
|
+
*
|
|
9
|
+
* Injected alongside the factory rather than read from the global: a polyfilled factory comes
|
|
10
|
+
* with its OWN key-range class, and mixing a polyfill's factory with the global's ranges throws
|
|
11
|
+
* at runtime. Defaults to the global when running in a real browser.
|
|
12
|
+
*/
|
|
13
|
+
keyRange?: typeof IDBKeyRange;
|
|
14
|
+
version?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class IndexedDbAdapter implements DatabaseAdapter {
|
|
17
|
+
readonly name = "indexeddb";
|
|
18
|
+
private readonly dbName;
|
|
19
|
+
private readonly factory;
|
|
20
|
+
private readonly keyRange;
|
|
21
|
+
private readonly version;
|
|
22
|
+
private db;
|
|
23
|
+
private indexCache;
|
|
24
|
+
constructor(options?: IndexedDbAdapterOptions);
|
|
25
|
+
open(): Promise<void>;
|
|
26
|
+
close(): Promise<void>;
|
|
27
|
+
destroy(): Promise<void>;
|
|
28
|
+
private tx;
|
|
29
|
+
private loadIndexes;
|
|
30
|
+
ensureCollection(collection: string): Promise<void>;
|
|
31
|
+
listCollections(): Promise<string[]>;
|
|
32
|
+
get(collection: string, id: string, includeDeleted?: boolean): Promise<StoredRow | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Reads every document in the collection and filters in JS.
|
|
35
|
+
*
|
|
36
|
+
* IndexedDB cursors cannot express Mongo's comparison semantics, so pushing constraints down
|
|
37
|
+
* would risk returning different rows than the JS matcher — and the honest `applied` flags below
|
|
38
|
+
* are what stop the layer above from skipping its own filtering.
|
|
39
|
+
*/
|
|
40
|
+
find(plan: StoragePlan): Promise<StorageResult>;
|
|
41
|
+
private collectionRecords;
|
|
42
|
+
count(plan: StoragePlan): Promise<number | null>;
|
|
43
|
+
/** One transaction for the whole batch, so a duplicate anywhere rolls all of it back. */
|
|
44
|
+
write(ops: WriteOp[]): Promise<void>;
|
|
45
|
+
createIndex(collection: string, spec: IndexSpec): Promise<void>;
|
|
46
|
+
dropIndex(collection: string, name: string): Promise<void>;
|
|
47
|
+
listIndexes(collection: string): Promise<IndexSpec[]>;
|
|
48
|
+
getState(key: string): Promise<string | null>;
|
|
49
|
+
setState(key: string, value: string): Promise<void>;
|
|
50
|
+
stats(): Promise<AdapterStats>;
|
|
51
|
+
scan(collection: string, opts?: {
|
|
52
|
+
includeDeleted?: boolean;
|
|
53
|
+
}): AsyncIterable<StoredRow>;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=indexeddb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indexeddb.d.ts","sourceRoot":"","sources":["../../../../src/storage/adapters/indexeddb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,SAAS,EACT,OAAO,EACR,MAAM,aAAa,CAAC;AA0CrB,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,EAAE,CAAe;IACzB,OAAO,CAAC,UAAU,CAA6C;gBAEnD,OAAO,GAAE,uBAA4B;IAqB3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,OAAO,CAAC,EAAE;YAsCI,WAAW;IAiBnB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IASpC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS5F;;;;;;OAMG;IACG,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;YA6BvC,iBAAiB;IAQzB,KAAK,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAOtD,yFAAyF;IACnF,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqEpC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAsD/D,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAMrD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO7C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAe7B,IAAI,CACT,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACtC,aAAa,CAAC,SAAS,CAAC;CAM5B"}
|