@nostrwatch/route66 0.0.1
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/LICENSE +21 -0
- package/README.md +346 -0
- package/adapters/cache/NostrSqliteAdapter/README.md +1 -0
- package/adapters/cache/NostrSqliteAdapter/build.js +64 -0
- package/adapters/cache/NostrSqliteAdapter/dist/browser/index.js +11789 -0
- package/adapters/cache/NostrSqliteAdapter/dist/browser/index.js.map +7 -0
- package/adapters/cache/NostrSqliteAdapter/dist/browser/workers/nostrsqlite.worker.js +9512 -0
- package/adapters/cache/NostrSqliteAdapter/dist/browser/workers/nostrsqlite.worker.js.map +7 -0
- package/adapters/cache/NostrSqliteAdapter/node_modules/.bin/esbuild +14 -0
- package/adapters/cache/NostrSqliteAdapter/node_modules/.bin/tsc +17 -0
- package/adapters/cache/NostrSqliteAdapter/node_modules/.bin/tsserver +17 -0
- package/adapters/cache/NostrSqliteAdapter/node_modules/.bin/vite +17 -0
- package/adapters/cache/NostrSqliteAdapter/package.json +49 -0
- package/adapters/cache/NostrSqliteAdapter/package.tgz +0 -0
- package/adapters/cache/NostrSqliteAdapter/src/NostrSqLiteMethods.ts +5 -0
- package/adapters/cache/NostrSqliteAdapter/src/NostrSqliteAdapter.ts +246 -0
- package/adapters/cache/NostrSqliteAdapter/src/NostrSqliteWorker.ts +113 -0
- package/adapters/cache/NostrSqliteAdapter/src/index.ts +1 -0
- package/adapters/cache/NostrSqliteAdapter/src/utils.ts +8 -0
- package/adapters/cache/NostrSqliteAdapter/src/workers/nostrsqlite.worker.ts +12 -0
- package/adapters/cache/NostrSqliteAdapter/tsconfig.json +26 -0
- package/adapters/websocket/NostrToolsAdapter/build.js +123 -0
- package/adapters/websocket/NostrToolsAdapter/dist/browser/index.js +1788 -0
- package/adapters/websocket/NostrToolsAdapter/dist/browser/index.js.map +7 -0
- package/adapters/websocket/NostrToolsAdapter/dist/node/index.js +1811 -0
- package/adapters/websocket/NostrToolsAdapter/dist/node/index.js.map +7 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/esbuild +14 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/eslint +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/jest +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/prettier +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/rollup +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/rollup-plugin-visualizer +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/tsc +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.bin/tsserver +17 -0
- package/adapters/websocket/NostrToolsAdapter/node_modules/.cache/esbuild-plugin-inline-worker/nostrtools.worker.js +141 -0
- package/adapters/websocket/NostrToolsAdapter/package.json +79 -0
- package/adapters/websocket/NostrToolsAdapter/src/NostrToolsAdapter.ts +17 -0
- package/adapters/websocket/NostrToolsAdapter/src/NostrToolsWorker.ts +405 -0
- package/adapters/websocket/NostrToolsAdapter/src/index.ts +3 -0
- package/adapters/websocket/NostrToolsAdapter/src/shims/empty.js +1 -0
- package/adapters/websocket/NostrToolsAdapter/src/shims/node-module-shim.js +3 -0
- package/adapters/websocket/NostrToolsAdapter/src/workers/nostrtools.worker.ts +12 -0
- package/adapters/websocket/NostrToolsAdapter/tsconfig.json +28 -0
- package/build.js +72 -0
- package/dist/browser/_virtual/_commonjsHelpers.amd.js +2 -0
- package/dist/browser/_virtual/_commonjsHelpers.amd.js.map +1 -0
- package/dist/browser/_virtual/_commonjsHelpers.esm.js +2 -0
- package/dist/browser/_virtual/_commonjsHelpers.esm.js.map +1 -0
- package/dist/browser/_virtual/_tslib.amd.js +2 -0
- package/dist/browser/_virtual/_tslib.amd.js.map +1 -0
- package/dist/browser/_virtual/_tslib.esm.js +2 -0
- package/dist/browser/_virtual/_tslib.esm.js.map +1 -0
- package/dist/browser/_virtual/bake-collection.amd.js +2 -0
- package/dist/browser/_virtual/bake-collection.amd.js.map +1 -0
- package/dist/browser/_virtual/bake-collection.esm.js +2 -0
- package/dist/browser/_virtual/bake-collection.esm.js.map +1 -0
- package/dist/browser/_virtual/bolt11.amd.js +2 -0
- package/dist/browser/_virtual/bolt11.amd.js.map +1 -0
- package/dist/browser/_virtual/bolt11.esm.js +2 -0
- package/dist/browser/_virtual/bolt11.esm.js.map +1 -0
- package/dist/browser/_virtual/ee.amd.js +2 -0
- package/dist/browser/_virtual/ee.amd.js.map +1 -0
- package/dist/browser/_virtual/ee.esm.js +2 -0
- package/dist/browser/_virtual/ee.esm.js.map +1 -0
- package/dist/browser/_virtual/index.amd.js +2 -0
- package/dist/browser/_virtual/index.amd.js.map +1 -0
- package/dist/browser/_virtual/index.amd2.js +2 -0
- package/dist/browser/_virtual/index.amd2.js.map +1 -0
- package/dist/browser/_virtual/index.amd3.js +2 -0
- package/dist/browser/_virtual/index.amd3.js.map +1 -0
- package/dist/browser/_virtual/index.amd4.js +2 -0
- package/dist/browser/_virtual/index.amd4.js.map +1 -0
- package/dist/browser/_virtual/index.amd5.js +2 -0
- package/dist/browser/_virtual/index.amd5.js.map +1 -0
- package/dist/browser/_virtual/index.amd6.js +2 -0
- package/dist/browser/_virtual/index.amd6.js.map +1 -0
- package/dist/browser/_virtual/index.esm.js +2 -0
- package/dist/browser/_virtual/index.esm.js.map +1 -0
- package/dist/browser/_virtual/index.esm2.js +2 -0
- package/dist/browser/_virtual/index.esm2.js.map +1 -0
- package/dist/browser/_virtual/index.esm3.js +2 -0
- package/dist/browser/_virtual/index.esm3.js.map +1 -0
- package/dist/browser/_virtual/index.esm4.js +2 -0
- package/dist/browser/_virtual/index.esm4.js.map +1 -0
- package/dist/browser/_virtual/index.esm5.js +2 -0
- package/dist/browser/_virtual/index.esm5.js.map +1 -0
- package/dist/browser/_virtual/index.esm6.js +2 -0
- package/dist/browser/_virtual/index.esm6.js.map +1 -0
- package/dist/browser/_virtual/task-collection.amd.js +2 -0
- package/dist/browser/_virtual/task-collection.amd.js.map +1 -0
- package/dist/browser/_virtual/task-collection.esm.js +2 -0
- package/dist/browser/_virtual/task-collection.esm.js.map +1 -0
- package/dist/browser/_virtual/types.amd.js +2 -0
- package/dist/browser/_virtual/types.amd.js.map +1 -0
- package/dist/browser/_virtual/types.esm.js +2 -0
- package/dist/browser/_virtual/types.esm.js.map +1 -0
- package/dist/browser/_virtual/utils.amd.js +2 -0
- package/dist/browser/_virtual/utils.amd.js.map +1 -0
- package/dist/browser/_virtual/utils.amd2.js +2 -0
- package/dist/browser/_virtual/utils.amd2.js.map +1 -0
- package/dist/browser/_virtual/utils.esm.js +2 -0
- package/dist/browser/_virtual/utils.esm.js.map +1 -0
- package/dist/browser/_virtual/utils.esm2.js +2 -0
- package/dist/browser/_virtual/utils.esm2.js.map +1 -0
- package/dist/browser/core/Adapter.amd.js +2 -0
- package/dist/browser/core/Adapter.amd.js.map +1 -0
- package/dist/browser/core/Adapter.esm.js +2 -0
- package/dist/browser/core/Adapter.esm.js.map +1 -0
- package/dist/browser/core/AdapterCacheWorker.amd.js +2 -0
- package/dist/browser/core/AdapterCacheWorker.amd.js.map +1 -0
- package/dist/browser/core/AdapterCacheWorker.esm.js +2 -0
- package/dist/browser/core/AdapterCacheWorker.esm.js.map +1 -0
- package/dist/browser/core/AdapterWebsocketWorker.amd.js +2 -0
- package/dist/browser/core/AdapterWebsocketWorker.amd.js.map +1 -0
- package/dist/browser/core/AdapterWebsocketWorker.esm.js +2 -0
- package/dist/browser/core/AdapterWebsocketWorker.esm.js.map +1 -0
- package/dist/browser/core/AdapterWorker.amd.js +2 -0
- package/dist/browser/core/AdapterWorker.amd.js.map +1 -0
- package/dist/browser/core/AdapterWorker.esm.js +2 -0
- package/dist/browser/core/AdapterWorker.esm.js.map +1 -0
- package/dist/browser/core/Base.amd.js +2 -0
- package/dist/browser/core/Base.amd.js.map +1 -0
- package/dist/browser/core/Base.esm.js +2 -0
- package/dist/browser/core/Base.esm.js.map +1 -0
- package/dist/browser/core/Batcher.amd.js +2 -0
- package/dist/browser/core/Batcher.amd.js.map +1 -0
- package/dist/browser/core/Batcher.esm.js +2 -0
- package/dist/browser/core/Batcher.esm.js.map +1 -0
- package/dist/browser/core/CacheAdapter.amd.js +2 -0
- package/dist/browser/core/CacheAdapter.amd.js.map +1 -0
- package/dist/browser/core/CacheAdapter.esm.js +2 -0
- package/dist/browser/core/CacheAdapter.esm.js.map +1 -0
- package/dist/browser/core/LocalStorageWrapper.amd.js +2 -0
- package/dist/browser/core/LocalStorageWrapper.amd.js.map +1 -0
- package/dist/browser/core/LocalStorageWrapper.esm.js +2 -0
- package/dist/browser/core/LocalStorageWrapper.esm.js.map +1 -0
- package/dist/browser/core/Queue.amd.js +2 -0
- package/dist/browser/core/Queue.amd.js.map +1 -0
- package/dist/browser/core/Queue.esm.js +2 -0
- package/dist/browser/core/Queue.esm.js.map +1 -0
- package/dist/browser/core/WebsocketAdapter.amd.js +2 -0
- package/dist/browser/core/WebsocketAdapter.amd.js.map +1 -0
- package/dist/browser/core/WebsocketAdapter.esm.js +2 -0
- package/dist/browser/core/WebsocketAdapter.esm.js.map +1 -0
- package/dist/browser/core/Workers.amd.js +2 -0
- package/dist/browser/core/Workers.amd.js.map +1 -0
- package/dist/browser/core/Workers.esm.js +2 -0
- package/dist/browser/core/Workers.esm.js.map +1 -0
- package/dist/browser/core/index.amd.js +71 -0
- package/dist/browser/core/index.amd.js.map +1 -0
- package/dist/browser/core/index.esm.js +2 -0
- package/dist/browser/core/index.esm.js.map +1 -0
- package/dist/browser/factory/cache.shared.worker.amd.js +2 -0
- package/dist/browser/factory/cache.shared.worker.amd.js.map +1 -0
- package/dist/browser/factory/cache.shared.worker.esm.js +2 -0
- package/dist/browser/factory/cache.shared.worker.esm.js.map +1 -0
- package/dist/browser/factory/cache.worker.amd.js +2 -0
- package/dist/browser/factory/cache.worker.amd.js.map +1 -0
- package/dist/browser/factory/cache.worker.esm.js +2 -0
- package/dist/browser/factory/cache.worker.esm.js.map +1 -0
- package/dist/browser/factory/index.amd.js +71 -0
- package/dist/browser/factory/index.amd.js.map +1 -0
- package/dist/browser/factory/index.esm.js +2 -0
- package/dist/browser/factory/index.esm.js.map +1 -0
- package/dist/browser/index.amd.js +71 -0
- package/dist/browser/index.amd.js.map +1 -0
- package/dist/browser/index.esm.js +2 -0
- package/dist/browser/index.esm.js.map +1 -0
- package/dist/browser/interfaces/index.amd.js +71 -0
- package/dist/browser/interfaces/index.amd.js.map +1 -0
- package/dist/browser/interfaces/index.esm.js +2 -0
- package/dist/browser/interfaces/index.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/_virtual/_tslib.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/_virtual/_tslib.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/_virtual/_tslib.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/_virtual/_tslib.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/config.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/config.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/config.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/config.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/controlflow.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/controlflow.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/controlflow.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/controlflow.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.amd.js +4 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.esm.js +4 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.amd.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.esm.js +3 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.esm.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.amd.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.amd.js.map +1 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.esm.js +2 -0
- package/dist/browser/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.esm.js.map +1 -0
- package/dist/browser/managers/MonitorManager.amd.js +2 -0
- package/dist/browser/managers/MonitorManager.amd.js.map +1 -0
- package/dist/browser/managers/MonitorManager.esm.js +2 -0
- package/dist/browser/managers/MonitorManager.esm.js.map +1 -0
- package/dist/browser/managers/StateManager.amd.js +2 -0
- package/dist/browser/managers/StateManager.amd.js.map +1 -0
- package/dist/browser/managers/StateManager.esm.js +2 -0
- package/dist/browser/managers/StateManager.esm.js.map +1 -0
- package/dist/browser/managers/SyncStateManager.amd.js +2 -0
- package/dist/browser/managers/SyncStateManager.amd.js.map +1 -0
- package/dist/browser/managers/SyncStateManager.esm.js +2 -0
- package/dist/browser/managers/SyncStateManager.esm.js.map +1 -0
- package/dist/browser/models/DeltaEvent.amd.js +2 -0
- package/dist/browser/models/DeltaEvent.amd.js.map +1 -0
- package/dist/browser/models/DeltaEvent.esm.js +2 -0
- package/dist/browser/models/DeltaEvent.esm.js.map +1 -0
- package/dist/browser/models/Event.amd.js +2 -0
- package/dist/browser/models/Event.amd.js.map +1 -0
- package/dist/browser/models/Event.esm.js +2 -0
- package/dist/browser/models/Event.esm.js.map +1 -0
- package/dist/browser/models/Geocoded.amd.js +2 -0
- package/dist/browser/models/Geocoded.amd.js.map +1 -0
- package/dist/browser/models/Geocoded.esm.js +2 -0
- package/dist/browser/models/Geocoded.esm.js.map +1 -0
- package/dist/browser/models/Monitor.amd.js +2 -0
- package/dist/browser/models/Monitor.amd.js.map +1 -0
- package/dist/browser/models/Monitor.esm.js +2 -0
- package/dist/browser/models/Monitor.esm.js.map +1 -0
- package/dist/browser/models/MonitorRegistration.amd.js +2 -0
- package/dist/browser/models/MonitorRegistration.amd.js.map +1 -0
- package/dist/browser/models/MonitorRegistration.esm.js +2 -0
- package/dist/browser/models/MonitorRegistration.esm.js.map +1 -0
- package/dist/browser/models/Nip11.amd.js +2 -0
- package/dist/browser/models/Nip11.amd.js.map +1 -0
- package/dist/browser/models/Nip11.esm.js +2 -0
- package/dist/browser/models/Nip11.esm.js.map +1 -0
- package/dist/browser/models/Nip66CheckEvent.amd.js +2 -0
- package/dist/browser/models/Nip66CheckEvent.amd.js.map +1 -0
- package/dist/browser/models/Nip66CheckEvent.esm.js +2 -0
- package/dist/browser/models/Nip66CheckEvent.esm.js.map +1 -0
- package/dist/browser/models/PubkeyProfile.amd.js +2 -0
- package/dist/browser/models/PubkeyProfile.amd.js.map +1 -0
- package/dist/browser/models/PubkeyProfile.esm.js +2 -0
- package/dist/browser/models/PubkeyProfile.esm.js.map +1 -0
- package/dist/browser/models/PubkeyRelays.amd.js +2 -0
- package/dist/browser/models/PubkeyRelays.amd.js.map +1 -0
- package/dist/browser/models/PubkeyRelays.esm.js +2 -0
- package/dist/browser/models/PubkeyRelays.esm.js.map +1 -0
- package/dist/browser/models/RelayCheckAggregate.amd.js +2 -0
- package/dist/browser/models/RelayCheckAggregate.amd.js.map +1 -0
- package/dist/browser/models/RelayCheckAggregate.esm.js +2 -0
- package/dist/browser/models/RelayCheckAggregate.esm.js.map +1 -0
- package/dist/browser/models/_.amd.js +2 -0
- package/dist/browser/models/_.amd.js.map +1 -0
- package/dist/browser/models/_.esm.js +2 -0
- package/dist/browser/models/_.esm.js.map +1 -0
- package/dist/browser/models/index.amd.js +71 -0
- package/dist/browser/models/index.amd.js.map +1 -0
- package/dist/browser/models/index.esm.js +2 -0
- package/dist/browser/models/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.esm.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.amd.js +3 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.js +3 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.amd.js +4 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.esm.js +4 -0
- package/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.esm.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.amd.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.amd.js.map +1 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.esm.js +2 -0
- package/dist/browser/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.esm.js.map +1 -0
- package/dist/browser/services/AuditorService.amd.js +2 -0
- package/dist/browser/services/AuditorService.amd.js.map +1 -0
- package/dist/browser/services/AuditorService.esm.js +2 -0
- package/dist/browser/services/AuditorService.esm.js.map +1 -0
- package/dist/browser/services/ChronicleService.amd.js +2 -0
- package/dist/browser/services/ChronicleService.amd.js.map +1 -0
- package/dist/browser/services/ChronicleService.esm.js +2 -0
- package/dist/browser/services/ChronicleService.esm.js.map +1 -0
- package/dist/browser/services/MonitorService.amd.js +2 -0
- package/dist/browser/services/MonitorService.amd.js.map +1 -0
- package/dist/browser/services/MonitorService.esm.js +2 -0
- package/dist/browser/services/MonitorService.esm.js.map +1 -0
- package/dist/browser/services/RelayService.amd.js +2 -0
- package/dist/browser/services/RelayService.amd.js.map +1 -0
- package/dist/browser/services/RelayService.esm.js +2 -0
- package/dist/browser/services/RelayService.esm.js.map +1 -0
- package/dist/browser/services/Service.amd.js +2 -0
- package/dist/browser/services/Service.amd.js.map +1 -0
- package/dist/browser/services/Service.esm.js +2 -0
- package/dist/browser/services/Service.esm.js.map +1 -0
- package/dist/browser/services/index.amd.js +71 -0
- package/dist/browser/services/index.amd.js.map +1 -0
- package/dist/browser/services/index.esm.js +2 -0
- package/dist/browser/services/index.esm.js.map +1 -0
- package/dist/browser/transform/TransformCheck.amd.js +2 -0
- package/dist/browser/transform/TransformCheck.amd.js.map +1 -0
- package/dist/browser/transform/TransformCheck.esm.js +2 -0
- package/dist/browser/transform/TransformCheck.esm.js.map +1 -0
- package/dist/browser/transform/TransformEvent.amd.js +2 -0
- package/dist/browser/transform/TransformEvent.amd.js.map +1 -0
- package/dist/browser/transform/TransformEvent.esm.js +2 -0
- package/dist/browser/transform/TransformEvent.esm.js.map +1 -0
- package/dist/browser/transform/TransformMonitors.amd.js +2 -0
- package/dist/browser/transform/TransformMonitors.amd.js.map +1 -0
- package/dist/browser/transform/TransformMonitors.esm.js +2 -0
- package/dist/browser/transform/TransformMonitors.esm.js.map +1 -0
- package/dist/browser/transform/TransformRelays.amd.js +2 -0
- package/dist/browser/transform/TransformRelays.amd.js.map +1 -0
- package/dist/browser/transform/TransformRelays.esm.js +2 -0
- package/dist/browser/transform/TransformRelays.esm.js.map +1 -0
- package/dist/browser/transform/index.amd.js +71 -0
- package/dist/browser/transform/index.amd.js.map +1 -0
- package/dist/browser/transform/index.esm.js +2 -0
- package/dist/browser/transform/index.esm.js.map +1 -0
- package/dist/browser/utils/SyncKeys.amd.js +2 -0
- package/dist/browser/utils/SyncKeys.amd.js.map +1 -0
- package/dist/browser/utils/SyncKeys.esm.js +2 -0
- package/dist/browser/utils/SyncKeys.esm.js.map +1 -0
- package/dist/browser/utils/classes.amd.js +2 -0
- package/dist/browser/utils/classes.amd.js.map +1 -0
- package/dist/browser/utils/classes.esm.js +2 -0
- package/dist/browser/utils/classes.esm.js.map +1 -0
- package/dist/browser/utils/encoding.amd.js +2 -0
- package/dist/browser/utils/encoding.amd.js.map +1 -0
- package/dist/browser/utils/encoding.esm.js +2 -0
- package/dist/browser/utils/encoding.esm.js.map +1 -0
- package/dist/browser/utils/events.amd.js +2 -0
- package/dist/browser/utils/events.amd.js.map +1 -0
- package/dist/browser/utils/events.esm.js +2 -0
- package/dist/browser/utils/events.esm.js.map +1 -0
- package/dist/browser/utils/general.amd.js +2 -0
- package/dist/browser/utils/general.amd.js.map +1 -0
- package/dist/browser/utils/general.esm.js +2 -0
- package/dist/browser/utils/general.esm.js.map +1 -0
- package/dist/browser/utils/geo.amd.js +2 -0
- package/dist/browser/utils/geo.amd.js.map +1 -0
- package/dist/browser/utils/geo.esm.js +2 -0
- package/dist/browser/utils/geo.esm.js.map +1 -0
- package/dist/browser/utils/hash.amd.js +2 -0
- package/dist/browser/utils/hash.amd.js.map +1 -0
- package/dist/browser/utils/hash.esm.js +2 -0
- package/dist/browser/utils/hash.esm.js.map +1 -0
- package/dist/browser/utils/index.amd.js +71 -0
- package/dist/browser/utils/index.amd.js.map +1 -0
- package/dist/browser/utils/index.esm.js +2 -0
- package/dist/browser/utils/index.esm.js.map +1 -0
- package/dist/browser/utils/monitors.amd.js +2 -0
- package/dist/browser/utils/monitors.amd.js.map +1 -0
- package/dist/browser/utils/monitors.esm.js +2 -0
- package/dist/browser/utils/monitors.esm.js.map +1 -0
- package/dist/browser/utils/nostr.amd.js +2 -0
- package/dist/browser/utils/nostr.amd.js.map +1 -0
- package/dist/browser/utils/nostr.esm.js +2 -0
- package/dist/browser/utils/nostr.esm.js.map +1 -0
- package/dist/browser/utils/pfp.amd.js +2 -0
- package/dist/browser/utils/pfp.amd.js.map +1 -0
- package/dist/browser/utils/pfp.esm.js +2 -0
- package/dist/browser/utils/pfp.esm.js.map +1 -0
- package/dist/node/core/Adapter.js +205 -0
- package/dist/node/core/Adapter.js.map +1 -0
- package/dist/node/core/AdapterCacheWorker.js +170 -0
- package/dist/node/core/AdapterCacheWorker.js.map +1 -0
- package/dist/node/core/AdapterWebsocketQueue.js +27 -0
- package/dist/node/core/AdapterWebsocketQueue.js.map +1 -0
- package/dist/node/core/AdapterWebsocketWorker.js +374 -0
- package/dist/node/core/AdapterWebsocketWorker.js.map +1 -0
- package/dist/node/core/AdapterWorker.js +250 -0
- package/dist/node/core/AdapterWorker.js.map +1 -0
- package/dist/node/core/Base.js +359 -0
- package/dist/node/core/Base.js.map +1 -0
- package/dist/node/core/Batcher.js +63 -0
- package/dist/node/core/Batcher.js.map +1 -0
- package/dist/node/core/CacheAdapter.js +113 -0
- package/dist/node/core/CacheAdapter.js.map +1 -0
- package/dist/node/core/Checkpoints.js +52 -0
- package/dist/node/core/Checkpoints.js.map +1 -0
- package/dist/node/core/LocalStorageWrapper.js +109 -0
- package/dist/node/core/LocalStorageWrapper.js.map +1 -0
- package/dist/node/core/Loggerr.js +3 -0
- package/dist/node/core/Loggerr.js.map +1 -0
- package/dist/node/core/Memory.js +19 -0
- package/dist/node/core/Memory.js.map +1 -0
- package/dist/node/core/Queue.js +158 -0
- package/dist/node/core/Queue.js.map +1 -0
- package/dist/node/core/Routine.js +7 -0
- package/dist/node/core/Routine.js.map +1 -0
- package/dist/node/core/Subscriber.js +75 -0
- package/dist/node/core/Subscriber.js.map +1 -0
- package/dist/node/core/WebsocketAdapter.js +488 -0
- package/dist/node/core/WebsocketAdapter.js.map +1 -0
- package/dist/node/core/Workers.js +172 -0
- package/dist/node/core/Workers.js.map +1 -0
- package/dist/node/core/index.js +12 -0
- package/dist/node/core/index.js.map +1 -0
- package/dist/node/factory/cache.shared.worker.js +58 -0
- package/dist/node/factory/cache.shared.worker.js.map +1 -0
- package/dist/node/factory/cache.worker.js +4 -0
- package/dist/node/factory/cache.worker.js.map +1 -0
- package/dist/node/factory/index.js +3 -0
- package/dist/node/factory/index.js.map +1 -0
- package/dist/node/helpers/filters.js +7 -0
- package/dist/node/helpers/filters.js.map +1 -0
- package/dist/node/index.js +10 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/interfaces/IAdapterWorkerCommand.js +2 -0
- package/dist/node/interfaces/IAdapterWorkerCommand.js.map +1 -0
- package/dist/node/interfaces/IAdaptersArgument.js +2 -0
- package/dist/node/interfaces/IAdaptersArgument.js.map +1 -0
- package/dist/node/interfaces/ICacheAdapter.js +37 -0
- package/dist/node/interfaces/ICacheAdapter.js.map +1 -0
- package/dist/node/interfaces/ICacheAdapterSharedWorkerCommand.js +2 -0
- package/dist/node/interfaces/ICacheAdapterSharedWorkerCommand.js.map +1 -0
- package/dist/node/interfaces/INostrEvent.js +2 -0
- package/dist/node/interfaces/INostrEvent.js.map +1 -0
- package/dist/node/interfaces/ISharedWorkerGlobalScope.js +2 -0
- package/dist/node/interfaces/ISharedWorkerGlobalScope.js.map +1 -0
- package/dist/node/interfaces/IWorkerCommand.js +2 -0
- package/dist/node/interfaces/IWorkerCommand.js.map +1 -0
- package/dist/node/interfaces/IWorkerGlobalScope.js +2 -0
- package/dist/node/interfaces/IWorkerGlobalScope.js.map +1 -0
- package/dist/node/interfaces/TISO13166.js +2 -0
- package/dist/node/interfaces/TISO13166.js.map +1 -0
- package/dist/node/interfaces/index.js +2 -0
- package/dist/node/interfaces/index.js.map +1 -0
- package/dist/node/managers/MonitorManager.js +251 -0
- package/dist/node/managers/MonitorManager.js.map +1 -0
- package/dist/node/managers/StageManager.js +86 -0
- package/dist/node/managers/StageManager.js.map +1 -0
- package/dist/node/managers/StateManager.js +173 -0
- package/dist/node/managers/StateManager.js.map +1 -0
- package/dist/node/managers/SyncStateManager.js +56 -0
- package/dist/node/managers/SyncStateManager.js.map +1 -0
- package/dist/node/models/Check.js +2 -0
- package/dist/node/models/Check.js.map +1 -0
- package/dist/node/models/DeltaEvent.js +198 -0
- package/dist/node/models/DeltaEvent.js.map +1 -0
- package/dist/node/models/Event.js +209 -0
- package/dist/node/models/Event.js.map +1 -0
- package/dist/node/models/EventEncoded.js +2 -0
- package/dist/node/models/EventEncoded.js.map +1 -0
- package/dist/node/models/Geocode.js +2 -0
- package/dist/node/models/Geocode.js.map +1 -0
- package/dist/node/models/Geocoded.js +608 -0
- package/dist/node/models/Geocoded.js.map +1 -0
- package/dist/node/models/Geohash.js +2 -0
- package/dist/node/models/Geohash.js.map +1 -0
- package/dist/node/models/Monitor.js +493 -0
- package/dist/node/models/Monitor.js.map +1 -0
- package/dist/node/models/MonitorRegistration.js +54 -0
- package/dist/node/models/MonitorRegistration.js.map +1 -0
- package/dist/node/models/Nip11.js +352 -0
- package/dist/node/models/Nip11.js.map +1 -0
- package/dist/node/models/Nip66CheckEvent.js +532 -0
- package/dist/node/models/Nip66CheckEvent.js.map +1 -0
- package/dist/node/models/PubkeyProfile.js +121 -0
- package/dist/node/models/PubkeyProfile.js.map +1 -0
- package/dist/node/models/PubkeyRelays.js +32 -0
- package/dist/node/models/PubkeyRelays.js.map +1 -0
- package/dist/node/models/Relay.js +2 -0
- package/dist/node/models/Relay.js.map +1 -0
- package/dist/node/models/RelayCheckAggregate.js +220 -0
- package/dist/node/models/RelayCheckAggregate.js.map +1 -0
- package/dist/node/models/Ssl.js +2 -0
- package/dist/node/models/Ssl.js.map +1 -0
- package/dist/node/models/_.js +8 -0
- package/dist/node/models/_.js.map +1 -0
- package/dist/node/models/index.js +11 -0
- package/dist/node/models/index.js.map +1 -0
- package/dist/node/routines/PurgeInactiveMonitors.js +68 -0
- package/dist/node/routines/PurgeInactiveMonitors.js.map +1 -0
- package/dist/node/routines/PurgeOldChecks.js +68 -0
- package/dist/node/routines/PurgeOldChecks.js.map +1 -0
- package/dist/node/services/AuditorService.js +25 -0
- package/dist/node/services/AuditorService.js.map +1 -0
- package/dist/node/services/ChronicleService.js +788 -0
- package/dist/node/services/ChronicleService.js.map +1 -0
- package/dist/node/services/MonitorService.js +1020 -0
- package/dist/node/services/MonitorService.js.map +1 -0
- package/dist/node/services/RelayService.js +391 -0
- package/dist/node/services/RelayService.js.map +1 -0
- package/dist/node/services/Service.js +533 -0
- package/dist/node/services/Service.js.map +1 -0
- package/dist/node/services/index.js +6 -0
- package/dist/node/services/index.js.map +1 -0
- package/dist/node/transform/TransformCheck.js +51 -0
- package/dist/node/transform/TransformCheck.js.map +1 -0
- package/dist/node/transform/TransformEvent.js +33 -0
- package/dist/node/transform/TransformEvent.js.map +1 -0
- package/dist/node/transform/TransformMonitors.js +129 -0
- package/dist/node/transform/TransformMonitors.js.map +1 -0
- package/dist/node/transform/TransformRelays.js +339 -0
- package/dist/node/transform/TransformRelays.js.map +1 -0
- package/dist/node/transform/index.js +4 -0
- package/dist/node/transform/index.js.map +1 -0
- package/dist/node/utils/SyncKeys.js +17 -0
- package/dist/node/utils/SyncKeys.js.map +1 -0
- package/dist/node/utils/classes.js +41 -0
- package/dist/node/utils/classes.js.map +1 -0
- package/dist/node/utils/encoding.js +59 -0
- package/dist/node/utils/encoding.js.map +1 -0
- package/dist/node/utils/events.js +26 -0
- package/dist/node/utils/events.js.map +1 -0
- package/dist/node/utils/general.js +142 -0
- package/dist/node/utils/general.js.map +1 -0
- package/dist/node/utils/geo.js +14 -0
- package/dist/node/utils/geo.js.map +1 -0
- package/dist/node/utils/hash.js +103 -0
- package/dist/node/utils/hash.js.map +1 -0
- package/dist/node/utils/index.js +8 -0
- package/dist/node/utils/index.js.map +1 -0
- package/dist/node/utils/monitors.js +3 -0
- package/dist/node/utils/monitors.js.map +1 -0
- package/dist/node/utils/nostr.js +38 -0
- package/dist/node/utils/nostr.js.map +1 -0
- package/dist/node/utils/pfp.js +231 -0
- package/dist/node/utils/pfp.js.map +1 -0
- package/dist/node/workers/nocap.worker.js +2 -0
- package/dist/node/workers/nocap.worker.js.map +1 -0
- package/dist/server/_virtual/_commonjsHelpers.cjs.js +2 -0
- package/dist/server/_virtual/_commonjsHelpers.cjs.js.map +1 -0
- package/dist/server/_virtual/_commonjsHelpers.esm.js +2 -0
- package/dist/server/_virtual/_commonjsHelpers.esm.js.map +1 -0
- package/dist/server/_virtual/_tslib.cjs.js +2 -0
- package/dist/server/_virtual/_tslib.cjs.js.map +1 -0
- package/dist/server/_virtual/_tslib.esm.js +2 -0
- package/dist/server/_virtual/_tslib.esm.js.map +1 -0
- package/dist/server/_virtual/bake-collection.cjs.js +2 -0
- package/dist/server/_virtual/bake-collection.cjs.js.map +1 -0
- package/dist/server/_virtual/bake-collection.esm.js +2 -0
- package/dist/server/_virtual/bake-collection.esm.js.map +1 -0
- package/dist/server/_virtual/bolt11.cjs.js +2 -0
- package/dist/server/_virtual/bolt11.cjs.js.map +1 -0
- package/dist/server/_virtual/bolt11.esm.js +2 -0
- package/dist/server/_virtual/bolt11.esm.js.map +1 -0
- package/dist/server/_virtual/ee.cjs.js +2 -0
- package/dist/server/_virtual/ee.cjs.js.map +1 -0
- package/dist/server/_virtual/ee.esm.js +2 -0
- package/dist/server/_virtual/ee.esm.js.map +1 -0
- package/dist/server/_virtual/index.cjs.js +2 -0
- package/dist/server/_virtual/index.cjs.js.map +1 -0
- package/dist/server/_virtual/index.cjs2.js +2 -0
- package/dist/server/_virtual/index.cjs2.js.map +1 -0
- package/dist/server/_virtual/index.cjs3.js +2 -0
- package/dist/server/_virtual/index.cjs3.js.map +1 -0
- package/dist/server/_virtual/index.cjs4.js +2 -0
- package/dist/server/_virtual/index.cjs4.js.map +1 -0
- package/dist/server/_virtual/index.cjs5.js +2 -0
- package/dist/server/_virtual/index.cjs5.js.map +1 -0
- package/dist/server/_virtual/index.cjs6.js +2 -0
- package/dist/server/_virtual/index.cjs6.js.map +1 -0
- package/dist/server/_virtual/index.esm.js +2 -0
- package/dist/server/_virtual/index.esm.js.map +1 -0
- package/dist/server/_virtual/index.esm2.js +2 -0
- package/dist/server/_virtual/index.esm2.js.map +1 -0
- package/dist/server/_virtual/index.esm3.js +2 -0
- package/dist/server/_virtual/index.esm3.js.map +1 -0
- package/dist/server/_virtual/index.esm4.js +2 -0
- package/dist/server/_virtual/index.esm4.js.map +1 -0
- package/dist/server/_virtual/index.esm5.js +2 -0
- package/dist/server/_virtual/index.esm5.js.map +1 -0
- package/dist/server/_virtual/index.esm6.js +2 -0
- package/dist/server/_virtual/index.esm6.js.map +1 -0
- package/dist/server/_virtual/task-collection.cjs.js +2 -0
- package/dist/server/_virtual/task-collection.cjs.js.map +1 -0
- package/dist/server/_virtual/task-collection.esm.js +2 -0
- package/dist/server/_virtual/task-collection.esm.js.map +1 -0
- package/dist/server/_virtual/types.cjs.js +2 -0
- package/dist/server/_virtual/types.cjs.js.map +1 -0
- package/dist/server/_virtual/types.esm.js +2 -0
- package/dist/server/_virtual/types.esm.js.map +1 -0
- package/dist/server/_virtual/utils.cjs.js +2 -0
- package/dist/server/_virtual/utils.cjs.js.map +1 -0
- package/dist/server/_virtual/utils.cjs2.js +2 -0
- package/dist/server/_virtual/utils.cjs2.js.map +1 -0
- package/dist/server/_virtual/utils.esm.js +2 -0
- package/dist/server/_virtual/utils.esm.js.map +1 -0
- package/dist/server/_virtual/utils.esm2.js +2 -0
- package/dist/server/_virtual/utils.esm2.js.map +1 -0
- package/dist/server/core/Adapter.cjs.js +2 -0
- package/dist/server/core/Adapter.cjs.js.map +1 -0
- package/dist/server/core/Adapter.esm.js +2 -0
- package/dist/server/core/Adapter.esm.js.map +1 -0
- package/dist/server/core/AdapterCacheWorker.cjs.js +2 -0
- package/dist/server/core/AdapterCacheWorker.cjs.js.map +1 -0
- package/dist/server/core/AdapterCacheWorker.esm.js +2 -0
- package/dist/server/core/AdapterCacheWorker.esm.js.map +1 -0
- package/dist/server/core/AdapterWebsocketWorker.cjs.js +2 -0
- package/dist/server/core/AdapterWebsocketWorker.cjs.js.map +1 -0
- package/dist/server/core/AdapterWebsocketWorker.esm.js +2 -0
- package/dist/server/core/AdapterWebsocketWorker.esm.js.map +1 -0
- package/dist/server/core/AdapterWorker.cjs.js +2 -0
- package/dist/server/core/AdapterWorker.cjs.js.map +1 -0
- package/dist/server/core/AdapterWorker.esm.js +2 -0
- package/dist/server/core/AdapterWorker.esm.js.map +1 -0
- package/dist/server/core/Base.cjs.js +2 -0
- package/dist/server/core/Base.cjs.js.map +1 -0
- package/dist/server/core/Base.esm.js +2 -0
- package/dist/server/core/Base.esm.js.map +1 -0
- package/dist/server/core/Batcher.cjs.js +2 -0
- package/dist/server/core/Batcher.cjs.js.map +1 -0
- package/dist/server/core/Batcher.esm.js +2 -0
- package/dist/server/core/Batcher.esm.js.map +1 -0
- package/dist/server/core/CacheAdapter.cjs.js +2 -0
- package/dist/server/core/CacheAdapter.cjs.js.map +1 -0
- package/dist/server/core/CacheAdapter.esm.js +2 -0
- package/dist/server/core/CacheAdapter.esm.js.map +1 -0
- package/dist/server/core/LocalStorageWrapper.cjs.js +2 -0
- package/dist/server/core/LocalStorageWrapper.cjs.js.map +1 -0
- package/dist/server/core/LocalStorageWrapper.esm.js +2 -0
- package/dist/server/core/LocalStorageWrapper.esm.js.map +1 -0
- package/dist/server/core/Queue.cjs.js +2 -0
- package/dist/server/core/Queue.cjs.js.map +1 -0
- package/dist/server/core/Queue.esm.js +2 -0
- package/dist/server/core/Queue.esm.js.map +1 -0
- package/dist/server/core/WebsocketAdapter.cjs.js +2 -0
- package/dist/server/core/WebsocketAdapter.cjs.js.map +1 -0
- package/dist/server/core/WebsocketAdapter.esm.js +2 -0
- package/dist/server/core/WebsocketAdapter.esm.js.map +1 -0
- package/dist/server/core/Workers.cjs.js +2 -0
- package/dist/server/core/Workers.cjs.js.map +1 -0
- package/dist/server/core/Workers.esm.js +2 -0
- package/dist/server/core/Workers.esm.js.map +1 -0
- package/dist/server/core/index.cjs.js +2 -0
- package/dist/server/core/index.cjs.js.map +1 -0
- package/dist/server/core/index.esm.js +2 -0
- package/dist/server/core/index.esm.js.map +1 -0
- package/dist/server/factory/cache.shared.worker.cjs.js +2 -0
- package/dist/server/factory/cache.shared.worker.cjs.js.map +1 -0
- package/dist/server/factory/cache.shared.worker.esm.js +2 -0
- package/dist/server/factory/cache.shared.worker.esm.js.map +1 -0
- package/dist/server/factory/cache.worker.cjs.js +2 -0
- package/dist/server/factory/cache.worker.cjs.js.map +1 -0
- package/dist/server/factory/cache.worker.esm.js +2 -0
- package/dist/server/factory/cache.worker.esm.js.map +1 -0
- package/dist/server/factory/index.cjs.js +2 -0
- package/dist/server/factory/index.cjs.js.map +1 -0
- package/dist/server/factory/index.esm.js +2 -0
- package/dist/server/factory/index.esm.js.map +1 -0
- package/dist/server/index.cjs.js +2 -0
- package/dist/server/index.cjs.js.map +1 -0
- package/dist/server/index.esm.js +2 -0
- package/dist/server/index.esm.js.map +1 -0
- package/dist/server/interfaces/index.cjs.js +2 -0
- package/dist/server/interfaces/index.cjs.js.map +1 -0
- package/dist/server/interfaces/index.esm.js +2 -0
- package/dist/server/interfaces/index.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/_virtual/_tslib.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/_virtual/_tslib.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/_virtual/_tslib.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/_virtual/_tslib.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/config.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/config.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/config.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/config.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/controlflow.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/controlflow.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/controlflow.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/controlflow.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.cjs.js +4 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.cjs.js +4 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.cjs.js +4 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.esm.js +4 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@noble_hashes@1.5.0/node_modules/@noble/hashes/esm/utils.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.cjs.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.esm.js +3 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/nip19.esm.esm.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.cjs.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.cjs.js.map +1 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.esm.js +2 -0
- package/dist/server/internal/utils/dist/browser/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/pure.esm.esm.js.map +1 -0
- package/dist/server/managers/MonitorManager.cjs.js +2 -0
- package/dist/server/managers/MonitorManager.cjs.js.map +1 -0
- package/dist/server/managers/MonitorManager.esm.js +2 -0
- package/dist/server/managers/MonitorManager.esm.js.map +1 -0
- package/dist/server/managers/StateManager.cjs.js +2 -0
- package/dist/server/managers/StateManager.cjs.js.map +1 -0
- package/dist/server/managers/StateManager.esm.js +2 -0
- package/dist/server/managers/StateManager.esm.js.map +1 -0
- package/dist/server/managers/SyncStateManager.cjs.js +2 -0
- package/dist/server/managers/SyncStateManager.cjs.js.map +1 -0
- package/dist/server/managers/SyncStateManager.esm.js +2 -0
- package/dist/server/managers/SyncStateManager.esm.js.map +1 -0
- package/dist/server/models/DeltaEvent.cjs.js +2 -0
- package/dist/server/models/DeltaEvent.cjs.js.map +1 -0
- package/dist/server/models/DeltaEvent.esm.js +2 -0
- package/dist/server/models/DeltaEvent.esm.js.map +1 -0
- package/dist/server/models/Event.cjs.js +2 -0
- package/dist/server/models/Event.cjs.js.map +1 -0
- package/dist/server/models/Event.esm.js +2 -0
- package/dist/server/models/Event.esm.js.map +1 -0
- package/dist/server/models/Geocoded.cjs.js +2 -0
- package/dist/server/models/Geocoded.cjs.js.map +1 -0
- package/dist/server/models/Geocoded.esm.js +2 -0
- package/dist/server/models/Geocoded.esm.js.map +1 -0
- package/dist/server/models/Monitor.cjs.js +2 -0
- package/dist/server/models/Monitor.cjs.js.map +1 -0
- package/dist/server/models/Monitor.esm.js +2 -0
- package/dist/server/models/Monitor.esm.js.map +1 -0
- package/dist/server/models/MonitorRegistration.cjs.js +2 -0
- package/dist/server/models/MonitorRegistration.cjs.js.map +1 -0
- package/dist/server/models/MonitorRegistration.esm.js +2 -0
- package/dist/server/models/MonitorRegistration.esm.js.map +1 -0
- package/dist/server/models/Nip11.cjs.js +2 -0
- package/dist/server/models/Nip11.cjs.js.map +1 -0
- package/dist/server/models/Nip11.esm.js +2 -0
- package/dist/server/models/Nip11.esm.js.map +1 -0
- package/dist/server/models/Nip66CheckEvent.cjs.js +2 -0
- package/dist/server/models/Nip66CheckEvent.cjs.js.map +1 -0
- package/dist/server/models/Nip66CheckEvent.esm.js +2 -0
- package/dist/server/models/Nip66CheckEvent.esm.js.map +1 -0
- package/dist/server/models/PubkeyProfile.cjs.js +2 -0
- package/dist/server/models/PubkeyProfile.cjs.js.map +1 -0
- package/dist/server/models/PubkeyProfile.esm.js +2 -0
- package/dist/server/models/PubkeyProfile.esm.js.map +1 -0
- package/dist/server/models/PubkeyRelays.cjs.js +2 -0
- package/dist/server/models/PubkeyRelays.cjs.js.map +1 -0
- package/dist/server/models/PubkeyRelays.esm.js +2 -0
- package/dist/server/models/PubkeyRelays.esm.js.map +1 -0
- package/dist/server/models/RelayCheckAggregate.cjs.js +2 -0
- package/dist/server/models/RelayCheckAggregate.cjs.js.map +1 -0
- package/dist/server/models/RelayCheckAggregate.esm.js +2 -0
- package/dist/server/models/RelayCheckAggregate.esm.js.map +1 -0
- package/dist/server/models/_.cjs.js +2 -0
- package/dist/server/models/_.cjs.js.map +1 -0
- package/dist/server/models/_.esm.js +2 -0
- package/dist/server/models/_.esm.js.map +1 -0
- package/dist/server/models/index.cjs.js +2 -0
- package/dist/server/models/index.cjs.js.map +1 -0
- package/dist/server/models/index.esm.js +2 -0
- package/dist/server/models/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_arx.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/_assert.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/aes.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/chacha.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.esm.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_ciphers@0.5.3/node_modules/@noble/ciphers/esm/utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.cjs.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/_shortw_utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.cjs.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/curve.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/modular.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.cjs.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/abstract/weierstrass.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.cjs.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_curves@1.2.0/node_modules/@noble/curves/esm/secp256k1.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_assert.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/_sha2.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/crypto.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hkdf.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/hmac.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/sha256.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.1/node_modules/@noble/hashes/esm/utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_assert.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/_sha2.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/crypto.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/hmac.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/sha256.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@noble_hashes@1.3.2/node_modules/@noble/hashes/esm/utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.cjs.js +3 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.js +3 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/esm/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.cjs.js +4 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.esm.js +4 -0
- package/dist/server/node_modules/.pnpm/@scure_base@1.1.1/node_modules/@scure/base/lib/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/jsurl2@2.2.0/node_modules/jsurl2/dist/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/light-bolt11-decoder@3.2.0/node_modules/light-bolt11-decoder/bolt11.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/nostr-tools@2.11.0_typescript@5.8.3/node_modules/nostr-tools/lib/esm/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/p-timeout@6.1.4/node_modules/p-timeout/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/ee.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/bake-collection.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/index.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/task-collection.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/task-collection/utils.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/types.esm.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.cjs.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.cjs.js.map +1 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.esm.js +2 -0
- package/dist/server/node_modules/.pnpm/tseep@1.3.1/node_modules/tseep/lib/utils.esm.js.map +1 -0
- package/dist/server/services/AuditorService.cjs.js +2 -0
- package/dist/server/services/AuditorService.cjs.js.map +1 -0
- package/dist/server/services/AuditorService.esm.js +2 -0
- package/dist/server/services/AuditorService.esm.js.map +1 -0
- package/dist/server/services/ChronicleService.cjs.js +2 -0
- package/dist/server/services/ChronicleService.cjs.js.map +1 -0
- package/dist/server/services/ChronicleService.esm.js +2 -0
- package/dist/server/services/ChronicleService.esm.js.map +1 -0
- package/dist/server/services/MonitorService.cjs.js +2 -0
- package/dist/server/services/MonitorService.cjs.js.map +1 -0
- package/dist/server/services/MonitorService.esm.js +2 -0
- package/dist/server/services/MonitorService.esm.js.map +1 -0
- package/dist/server/services/RelayService.cjs.js +2 -0
- package/dist/server/services/RelayService.cjs.js.map +1 -0
- package/dist/server/services/RelayService.esm.js +2 -0
- package/dist/server/services/RelayService.esm.js.map +1 -0
- package/dist/server/services/Service.cjs.js +2 -0
- package/dist/server/services/Service.cjs.js.map +1 -0
- package/dist/server/services/Service.esm.js +2 -0
- package/dist/server/services/Service.esm.js.map +1 -0
- package/dist/server/services/index.cjs.js +2 -0
- package/dist/server/services/index.cjs.js.map +1 -0
- package/dist/server/services/index.esm.js +2 -0
- package/dist/server/services/index.esm.js.map +1 -0
- package/dist/server/transform/TransformCheck.cjs.js +2 -0
- package/dist/server/transform/TransformCheck.cjs.js.map +1 -0
- package/dist/server/transform/TransformCheck.esm.js +2 -0
- package/dist/server/transform/TransformCheck.esm.js.map +1 -0
- package/dist/server/transform/TransformEvent.cjs.js +2 -0
- package/dist/server/transform/TransformEvent.cjs.js.map +1 -0
- package/dist/server/transform/TransformEvent.esm.js +2 -0
- package/dist/server/transform/TransformEvent.esm.js.map +1 -0
- package/dist/server/transform/TransformMonitors.cjs.js +2 -0
- package/dist/server/transform/TransformMonitors.cjs.js.map +1 -0
- package/dist/server/transform/TransformMonitors.esm.js +2 -0
- package/dist/server/transform/TransformMonitors.esm.js.map +1 -0
- package/dist/server/transform/TransformRelays.cjs.js +2 -0
- package/dist/server/transform/TransformRelays.cjs.js.map +1 -0
- package/dist/server/transform/TransformRelays.esm.js +2 -0
- package/dist/server/transform/TransformRelays.esm.js.map +1 -0
- package/dist/server/transform/index.cjs.js +2 -0
- package/dist/server/transform/index.cjs.js.map +1 -0
- package/dist/server/transform/index.esm.js +2 -0
- package/dist/server/transform/index.esm.js.map +1 -0
- package/dist/server/utils/SyncKeys.cjs.js +2 -0
- package/dist/server/utils/SyncKeys.cjs.js.map +1 -0
- package/dist/server/utils/SyncKeys.esm.js +2 -0
- package/dist/server/utils/SyncKeys.esm.js.map +1 -0
- package/dist/server/utils/classes.cjs.js +2 -0
- package/dist/server/utils/classes.cjs.js.map +1 -0
- package/dist/server/utils/classes.esm.js +2 -0
- package/dist/server/utils/classes.esm.js.map +1 -0
- package/dist/server/utils/encoding.cjs.js +2 -0
- package/dist/server/utils/encoding.cjs.js.map +1 -0
- package/dist/server/utils/encoding.esm.js +2 -0
- package/dist/server/utils/encoding.esm.js.map +1 -0
- package/dist/server/utils/events.cjs.js +2 -0
- package/dist/server/utils/events.cjs.js.map +1 -0
- package/dist/server/utils/events.esm.js +2 -0
- package/dist/server/utils/events.esm.js.map +1 -0
- package/dist/server/utils/general.cjs.js +2 -0
- package/dist/server/utils/general.cjs.js.map +1 -0
- package/dist/server/utils/general.esm.js +2 -0
- package/dist/server/utils/general.esm.js.map +1 -0
- package/dist/server/utils/geo.cjs.js +2 -0
- package/dist/server/utils/geo.cjs.js.map +1 -0
- package/dist/server/utils/geo.esm.js +2 -0
- package/dist/server/utils/geo.esm.js.map +1 -0
- package/dist/server/utils/hash.cjs.js +2 -0
- package/dist/server/utils/hash.cjs.js.map +1 -0
- package/dist/server/utils/hash.esm.js +2 -0
- package/dist/server/utils/hash.esm.js.map +1 -0
- package/dist/server/utils/index.cjs.js +2 -0
- package/dist/server/utils/index.cjs.js.map +1 -0
- package/dist/server/utils/index.esm.js +2 -0
- package/dist/server/utils/index.esm.js.map +1 -0
- package/dist/server/utils/monitors.cjs.js +2 -0
- package/dist/server/utils/monitors.cjs.js.map +1 -0
- package/dist/server/utils/monitors.esm.js +2 -0
- package/dist/server/utils/monitors.esm.js.map +1 -0
- package/dist/server/utils/nostr.cjs.js +2 -0
- package/dist/server/utils/nostr.cjs.js.map +1 -0
- package/dist/server/utils/nostr.esm.js +2 -0
- package/dist/server/utils/nostr.esm.js.map +1 -0
- package/dist/server/utils/pfp.cjs.js +2 -0
- package/dist/server/utils/pfp.cjs.js.map +1 -0
- package/dist/server/utils/pfp.esm.js +2 -0
- package/dist/server/utils/pfp.esm.js.map +1 -0
- package/dist/types/core/Adapter.d.ts +58 -0
- package/dist/types/core/Adapter.d.ts.map +1 -0
- package/dist/types/core/AdapterCacheWorker.d.ts +28 -0
- package/dist/types/core/AdapterCacheWorker.d.ts.map +1 -0
- package/dist/types/core/AdapterWebsocketQueue.d.ts +7 -0
- package/dist/types/core/AdapterWebsocketQueue.d.ts.map +1 -0
- package/dist/types/core/AdapterWebsocketWorker.d.ts +78 -0
- package/dist/types/core/AdapterWebsocketWorker.d.ts.map +1 -0
- package/dist/types/core/AdapterWorker.d.ts +55 -0
- package/dist/types/core/AdapterWorker.d.ts.map +1 -0
- package/dist/types/core/Base.d.ts +53 -0
- package/dist/types/core/Base.d.ts.map +1 -0
- package/dist/types/core/Batcher.d.ts +19 -0
- package/dist/types/core/Batcher.d.ts.map +1 -0
- package/dist/types/core/CacheAdapter.d.ts +127 -0
- package/dist/types/core/CacheAdapter.d.ts.map +1 -0
- package/dist/types/core/Checkpoints.d.ts +8 -0
- package/dist/types/core/Checkpoints.d.ts.map +1 -0
- package/dist/types/core/LocalStorageWrapper.d.ts +19 -0
- package/dist/types/core/LocalStorageWrapper.d.ts.map +1 -0
- package/dist/types/core/Loggerr.d.ts +3 -0
- package/dist/types/core/Loggerr.d.ts.map +1 -0
- package/dist/types/core/Memory.d.ts +1 -0
- package/dist/types/core/Memory.d.ts.map +1 -0
- package/dist/types/core/Queue.d.ts +42 -0
- package/dist/types/core/Queue.d.ts.map +1 -0
- package/dist/types/core/Routine.d.ts +3 -0
- package/dist/types/core/Routine.d.ts.map +1 -0
- package/dist/types/core/Subscriber.d.ts +10 -0
- package/dist/types/core/Subscriber.d.ts.map +1 -0
- package/dist/types/core/WebsocketAdapter.d.ts +93 -0
- package/dist/types/core/WebsocketAdapter.d.ts.map +1 -0
- package/dist/types/core/Workers.d.ts +24 -0
- package/dist/types/core/Workers.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +12 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/factory/cache.shared.worker.d.ts +3 -0
- package/dist/types/factory/cache.shared.worker.d.ts.map +1 -0
- package/dist/types/factory/cache.worker.d.ts +11 -0
- package/dist/types/factory/cache.worker.d.ts.map +1 -0
- package/dist/types/factory/index.d.ts +3 -0
- package/dist/types/factory/index.d.ts.map +1 -0
- package/dist/types/helpers/filters.d.ts +4 -0
- package/dist/types/helpers/filters.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces/IAdapterWorkerCommand.d.ts +8 -0
- package/dist/types/interfaces/IAdapterWorkerCommand.d.ts.map +1 -0
- package/dist/types/interfaces/IAdaptersArgument.d.ts +7 -0
- package/dist/types/interfaces/IAdaptersArgument.d.ts.map +1 -0
- package/dist/types/interfaces/ICacheAdapter.d.ts +1 -0
- package/dist/types/interfaces/ICacheAdapter.d.ts.map +1 -0
- package/dist/types/interfaces/ICacheAdapterSharedWorkerCommand.d.ts +8 -0
- package/dist/types/interfaces/ICacheAdapterSharedWorkerCommand.d.ts.map +1 -0
- package/dist/types/interfaces/INostrEvent.d.ts +2 -0
- package/dist/types/interfaces/INostrEvent.d.ts.map +1 -0
- package/dist/types/interfaces/ISharedWorkerGlobalScope.d.ts +7 -0
- package/dist/types/interfaces/ISharedWorkerGlobalScope.d.ts.map +1 -0
- package/dist/types/interfaces/IWorkerCommand.d.ts +6 -0
- package/dist/types/interfaces/IWorkerCommand.d.ts.map +1 -0
- package/dist/types/interfaces/IWorkerGlobalScope.d.ts +7 -0
- package/dist/types/interfaces/IWorkerGlobalScope.d.ts.map +1 -0
- package/dist/types/interfaces/TISO13166.d.ts +15 -0
- package/dist/types/interfaces/TISO13166.d.ts.map +1 -0
- package/dist/types/interfaces/index.d.ts +8 -0
- package/dist/types/interfaces/index.d.ts.map +1 -0
- package/dist/types/managers/MonitorManager.d.ts +50 -0
- package/dist/types/managers/MonitorManager.d.ts.map +1 -0
- package/dist/types/managers/StageManager.d.ts +36 -0
- package/dist/types/managers/StageManager.d.ts.map +1 -0
- package/dist/types/managers/StateManager.d.ts +50 -0
- package/dist/types/managers/StateManager.d.ts.map +1 -0
- package/dist/types/managers/SyncStateManager.d.ts +22 -0
- package/dist/types/managers/SyncStateManager.d.ts.map +1 -0
- package/dist/types/models/Check.d.ts +28 -0
- package/dist/types/models/Check.d.ts.map +1 -0
- package/dist/types/models/DeltaEvent.d.ts +79 -0
- package/dist/types/models/DeltaEvent.d.ts.map +1 -0
- package/dist/types/models/Event.d.ts +61 -0
- package/dist/types/models/Event.d.ts.map +1 -0
- package/dist/types/models/EventEncoded.d.ts +8 -0
- package/dist/types/models/EventEncoded.d.ts.map +1 -0
- package/dist/types/models/Geocode.d.ts +7 -0
- package/dist/types/models/Geocode.d.ts.map +1 -0
- package/dist/types/models/Geocoded.d.ts +238 -0
- package/dist/types/models/Geocoded.d.ts.map +1 -0
- package/dist/types/models/Geohash.d.ts +6 -0
- package/dist/types/models/Geohash.d.ts.map +1 -0
- package/dist/types/models/Monitor.d.ts +96 -0
- package/dist/types/models/Monitor.d.ts.map +1 -0
- package/dist/types/models/MonitorRegistration.d.ts +8 -0
- package/dist/types/models/MonitorRegistration.d.ts.map +1 -0
- package/dist/types/models/Nip11.d.ts +155 -0
- package/dist/types/models/Nip11.d.ts.map +1 -0
- package/dist/types/models/Nip66CheckEvent.d.ts +63 -0
- package/dist/types/models/Nip66CheckEvent.d.ts.map +1 -0
- package/dist/types/models/PubkeyProfile.d.ts +19 -0
- package/dist/types/models/PubkeyProfile.d.ts.map +1 -0
- package/dist/types/models/PubkeyRelays.d.ts +5 -0
- package/dist/types/models/PubkeyRelays.d.ts.map +1 -0
- package/dist/types/models/Relay.d.ts +9 -0
- package/dist/types/models/Relay.d.ts.map +1 -0
- package/dist/types/models/RelayCheckAggregate.d.ts +92 -0
- package/dist/types/models/RelayCheckAggregate.d.ts.map +1 -0
- package/dist/types/models/Ssl.d.ts +9 -0
- package/dist/types/models/Ssl.d.ts.map +1 -0
- package/dist/types/models/_.d.ts +2 -0
- package/dist/types/models/_.d.ts.map +1 -0
- package/dist/types/models/index.d.ts +15 -0
- package/dist/types/models/index.d.ts.map +1 -0
- package/dist/types/routines/PurgeInactiveMonitors.d.ts +6 -0
- package/dist/types/routines/PurgeInactiveMonitors.d.ts.map +1 -0
- package/dist/types/routines/PurgeOldChecks.d.ts +6 -0
- package/dist/types/routines/PurgeOldChecks.d.ts.map +1 -0
- package/dist/types/services/AuditorService.d.ts +4 -0
- package/dist/types/services/AuditorService.d.ts.map +1 -0
- package/dist/types/services/ChronicleService.d.ts +177 -0
- package/dist/types/services/ChronicleService.d.ts.map +1 -0
- package/dist/types/services/MonitorService.d.ts +62 -0
- package/dist/types/services/MonitorService.d.ts.map +1 -0
- package/dist/types/services/RelayService.d.ts +39 -0
- package/dist/types/services/RelayService.d.ts.map +1 -0
- package/dist/types/services/Service.d.ts +56 -0
- package/dist/types/services/Service.d.ts.map +1 -0
- package/dist/types/services/index.d.ts +6 -0
- package/dist/types/services/index.d.ts.map +1 -0
- package/dist/types/transform/TransformCheck.d.ts +24 -0
- package/dist/types/transform/TransformCheck.d.ts.map +1 -0
- package/dist/types/transform/TransformEvent.d.ts +4 -0
- package/dist/types/transform/TransformEvent.d.ts.map +1 -0
- package/dist/types/transform/TransformMonitors.d.ts +10 -0
- package/dist/types/transform/TransformMonitors.d.ts.map +1 -0
- package/dist/types/transform/TransformRelays.d.ts +20 -0
- package/dist/types/transform/TransformRelays.d.ts.map +1 -0
- package/dist/types/transform/index.d.ts +4 -0
- package/dist/types/transform/index.d.ts.map +1 -0
- package/dist/types/utils/SyncKeys.d.ts +12 -0
- package/dist/types/utils/SyncKeys.d.ts.map +1 -0
- package/dist/types/utils/classes.d.ts +21 -0
- package/dist/types/utils/classes.d.ts.map +1 -0
- package/dist/types/utils/encoding.d.ts +4 -0
- package/dist/types/utils/encoding.d.ts.map +1 -0
- package/dist/types/utils/events.d.ts +7 -0
- package/dist/types/utils/events.d.ts.map +1 -0
- package/dist/types/utils/general.d.ts +8 -0
- package/dist/types/utils/general.d.ts.map +1 -0
- package/dist/types/utils/geo.d.ts +5 -0
- package/dist/types/utils/geo.d.ts.map +1 -0
- package/dist/types/utils/hash.d.ts +7 -0
- package/dist/types/utils/hash.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +8 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/monitors.d.ts +2 -0
- package/dist/types/utils/monitors.d.ts.map +1 -0
- package/dist/types/utils/nostr.d.ts +9 -0
- package/dist/types/utils/nostr.d.ts.map +1 -0
- package/dist/types/utils/pfp.d.ts +17 -0
- package/dist/types/utils/pfp.d.ts.map +1 -0
- package/dist/types/workers/nocap.worker.d.ts +2 -0
- package/dist/types/workers/nocap.worker.d.ts.map +1 -0
- package/examples/basic.js +14 -0
- package/package.json +133 -0
- package/rollup.config.js +206 -0
- package/src/core/Adapter.ts +182 -0
- package/src/core/AdapterCacheWorker.ts +83 -0
- package/src/core/AdapterWebsocketQueue.ts +20 -0
- package/src/core/AdapterWebsocketWorker.ts +307 -0
- package/src/core/AdapterWorker.ts +200 -0
- package/src/core/Base.ts +212 -0
- package/src/core/Batcher.ts +78 -0
- package/src/core/CacheAdapter.ts +186 -0
- package/src/core/Checkpoints.ts +11 -0
- package/src/core/LocalStorageWrapper.ts +112 -0
- package/src/core/Loggerr.ts +3 -0
- package/src/core/Memory.ts +20 -0
- package/src/core/Queue.ts +109 -0
- package/src/core/Routine.ts +1 -0
- package/src/core/Subscriber.ts +29 -0
- package/src/core/WebsocketAdapter.ts +438 -0
- package/src/core/Workers.ts +115 -0
- package/src/core/index.ts +15 -0
- package/src/factory/cache.shared.worker.ts +14 -0
- package/src/factory/cache.worker.ts +13 -0
- package/src/factory/index.ts +2 -0
- package/src/helpers/filters.ts +9 -0
- package/src/index.ts +13 -0
- package/src/interfaces/IAdapterWorkerCommand.ts +8 -0
- package/src/interfaces/IAdaptersArgument.ts +7 -0
- package/src/interfaces/ICacheAdapter.ts +42 -0
- package/src/interfaces/ICacheAdapterSharedWorkerCommand.ts +8 -0
- package/src/interfaces/INostrEvent.ts +1 -0
- package/src/interfaces/ISharedWorkerGlobalScope.ts +6 -0
- package/src/interfaces/IWorkerCommand.ts +5 -0
- package/src/interfaces/IWorkerGlobalScope.ts +6 -0
- package/src/interfaces/TISO13166.ts +17 -0
- package/src/interfaces/index.ts +7 -0
- package/src/managers/MonitorManager.ts +232 -0
- package/src/managers/StageManager.ts +83 -0
- package/src/managers/StateManager.ts +176 -0
- package/src/managers/SyncStateManager.ts +60 -0
- package/src/models/Check.ts +34 -0
- package/src/models/DeltaEvent.ts +152 -0
- package/src/models/Event.ts +192 -0
- package/src/models/EventEncoded.ts +7 -0
- package/src/models/Geocode.ts +7 -0
- package/src/models/Geocoded.ts +567 -0
- package/src/models/Geohash.ts +6 -0
- package/src/models/Monitor.ts +384 -0
- package/src/models/MonitorRegistration.ts +25 -0
- package/src/models/Nip11.ts +275 -0
- package/src/models/Nip66CheckEvent.ts +316 -0
- package/src/models/PubkeyProfile.ts +67 -0
- package/src/models/PubkeyRelays.ts +9 -0
- package/src/models/Relay.ts +8 -0
- package/src/models/RelayCheckAggregate.ts +222 -0
- package/src/models/Ssl.ts +8 -0
- package/src/models/_.ts +7 -0
- package/src/models/index.ts +14 -0
- package/src/routines/PurgeInactiveMonitors.ts +10 -0
- package/src/routines/PurgeOldChecks.ts +10 -0
- package/src/services/AuditorService.ts +3 -0
- package/src/services/ChronicleService.ts +722 -0
- package/src/services/MonitorService.ts +719 -0
- package/src/services/RelayService.ts +250 -0
- package/src/services/Service.ts +370 -0
- package/src/services/index.ts +5 -0
- package/src/transform/TransformCheck.ts +62 -0
- package/src/transform/TransformEvent.ts +26 -0
- package/src/transform/TransformMonitors.ts +91 -0
- package/src/transform/TransformRelays.ts +327 -0
- package/src/transform/index.ts +3 -0
- package/src/utils/SyncKeys.ts +12 -0
- package/src/utils/classes.ts +48 -0
- package/src/utils/encoding.ts +16 -0
- package/src/utils/events.ts +29 -0
- package/src/utils/general.ts +101 -0
- package/src/utils/geo.ts +19 -0
- package/src/utils/hash.ts +98 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/monitors.ts +4 -0
- package/src/utils/nostr.ts +45 -0
- package/src/utils/pfp.ts +278 -0
- package/src/workers/nocap.worker.ts +1 -0
- package/tsconfig.browser.json +12 -0
- package/tsconfig.json +35 -0
- package/tsconfig.server.json +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChronicleService.cjs.js","sources":["../../../src/services/ChronicleService.ts"],"sourcesContent":["/**\n * ChronicleService\n *\n * Service for accessing relay history and time series data from Kind 1066 delta events.\n * Leverages route66's existing websocket adapter to avoid duplicate connections.\n */\n\nimport { Service } from './Service';\nimport { Route66EventStorage } from '@nostrwatch/relay-chronicle';\nimport type {\n TimeSeriesPoint,\n UptimeState,\n DeltaEvent as IDeltaEvent,\n EventStorage,\n QueryOptions,\n} from '@nostrwatch/relay-chronicle';\nimport {\n generateRttSeries,\n generateUptimeSeries,\n uptimeHistory,\n} from '@nostrwatch/relay-chronicle';\nimport type { IAdaptersArgument } from '@base/interfaces';\nimport type { Filter } from 'nostr-tools';\nimport type { WebsocketRequestBody, SubscribeHandlers } from '@base/core';\nimport { deterministicHash } from '@base/utils';\nimport { DeltaEvent } from '@base/models';\n\n/**\n * Configuration options for ChronicleService\n */\nexport interface ChronicleServiceOptions {\n /** Automatically subscribe to Kind 1066 events for queried relays */\n autoSync?: boolean;\n /** Relays to fetch Kind 1066 events from */\n syncRelays?: string[];\n}\n\n/**\n * Options for time series queries\n */\nexport interface TimeSeriesOptions {\n /** Relay URL to query */\n relay: string;\n /** Start of time range (unix timestamp in seconds) */\n since?: number;\n /** End of time range (unix timestamp in seconds) */\n until?: number;\n /** Type of time series data to extract */\n type?: 'rtt' | 'uptime' | 'changes';\n /** Optional aggregation settings */\n aggregate?: {\n /** Bucket size in seconds */\n bucketSize: number;\n /** Aggregation function */\n fn: 'avg' | 'min' | 'max' | 'sum';\n };\n}\n\n/**\n * Uptime period for timeline visualization\n */\nexport interface UptimePeriod {\n /** Period start timestamp */\n start: number;\n /** Period end timestamp (null if ongoing) */\n end: number | null;\n /** Whether relay was online during this period */\n online: boolean;\n /** RTT in milliseconds (if online) */\n rtt?: number;\n}\n\n/**\n * ChronicleService - Access relay history via Kind 1066 delta events\n *\n * This service integrates relay-chronicle with route66's existing infrastructure:\n * - Uses websocket adapter for fetching events (no duplicate connections)\n * - Uses cache adapter for querying stored events\n * - Provides time series data for charting\n *\n * @example\n * ```typescript\n * const chronicle = new ChronicleService(route66.adapters, {\n * autoSync: true,\n * syncRelays: ['wss://relay.nostr.watch'],\n * });\n *\n * // Sync a relay (fetch and subscribe to Kind 1066)\n * await chronicle.syncRelay('wss://relay.example.com');\n *\n * // Get RTT time series for charting\n * const rttData = await chronicle.getTimeSeriesData({\n * relay: 'wss://relay.example.com',\n * type: 'rtt',\n * since: Date.now() / 1000 - 86400, // Last 24h\n * });\n * ```\n */\nexport class ChronicleService extends Service {\n public storage: Route66EventStorage;\n private memoryByRelay: Map<string, Map<string, IDeltaEvent>> = new Map();\n private memoryBoundsByRelay: Map<string, { min: number; max: number }> = new Map();\n private options: ChronicleServiceOptions;\n private kind1066Subscriptions: Map<string, string> = new Map();\n private syncInFlight: Map<string, Promise<void>> = new Map();\n private desiredSinceByRelay: Map<string, number | undefined> = new Map();\n\n private aggregateTimeSeries(\n points: TimeSeriesPoint[],\n bucketSize: number,\n fn: 'avg' | 'min' | 'max' | 'sum'\n ): TimeSeriesPoint[] {\n if (!Array.isArray(points) || points.length === 0) return [];\n if (!Number.isFinite(bucketSize) || bucketSize <= 0) return points;\n\n const buckets = new Map<number, { values: number[]; eventId?: string }>();\n\n for (const point of points) {\n const timestamp = point?.timestamp;\n if (typeof timestamp !== 'number' || !Number.isFinite(timestamp)) continue;\n\n const bucketTimestamp = Math.floor(timestamp / bucketSize) * bucketSize;\n\n const raw = (point as any)?.value;\n const value =\n typeof raw === 'number'\n ? raw\n : typeof raw === 'boolean'\n ? raw\n ? 1\n : 0\n : null;\n if (value == null || !Number.isFinite(value)) continue;\n\n const bucket = buckets.get(bucketTimestamp) ?? { values: [] as number[] };\n bucket.values.push(value);\n if ((point as any)?.eventId) bucket.eventId = (point as any).eventId;\n buckets.set(bucketTimestamp, bucket);\n }\n\n const aggregated: TimeSeriesPoint[] = [];\n buckets.forEach((bucket, timestamp) => {\n const values = bucket.values;\n if (!values.length) return;\n\n let aggregatedValue = 0;\n switch (fn) {\n case 'avg':\n aggregatedValue = values.reduce((a: number, b: number) => a + b, 0) / values.length;\n break;\n case 'min':\n aggregatedValue = Math.min(...values);\n break;\n case 'max':\n aggregatedValue = Math.max(...values);\n break;\n case 'sum':\n aggregatedValue = values.reduce((a: number, b: number) => a + b, 0);\n break;\n }\n\n aggregated.push({\n timestamp,\n date: new Date(timestamp * 1000).toISOString(),\n value: aggregatedValue,\n ...(bucket.eventId ? { eventId: bucket.eventId } : {}),\n } as any);\n });\n\n return aggregated.sort((a, b) => a.timestamp - b.timestamp);\n }\n\n private normalizeRelayKey(relay: string): string {\n const trimmed = (relay || '').trim();\n if (!trimmed) return '';\n return trimmed.replace(/\\/+$/, '');\n }\n\n private normalizeSince(since?: number): number | undefined {\n if (typeof since !== 'number') return undefined;\n if (!Number.isFinite(since)) return undefined;\n return since;\n }\n\n private relayTagValues(relay: string): string[] {\n const trimmed = (relay || '').trim();\n if (!trimmed) return [];\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n const withTrailingSlash = `${withoutTrailingSlash}/`;\n return Array.from(new Set([trimmed, withoutTrailingSlash, withTrailingSlash]));\n }\n\n /**\n * Values to use for *remote* `#r` filtering.\n *\n * Some relays (notably `wss://relay.nostr.watch`) appear to mishandle multiple values\n * within a single `#r: [...]` array. To remain compatible, we query each candidate\n * as a separate filter/request.\n */\n private relayTagQueryValues(relay: string): string[] {\n const trimmed = (relay || '').trim();\n if (!trimmed) return [];\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n if (!withoutTrailingSlash) return [];\n const withTrailingSlash = `${withoutTrailingSlash}/`;\n return Array.from(new Set([withoutTrailingSlash, withTrailingSlash]));\n }\n\n private updateMemoryBounds(relayKey: string, createdAt: number): void {\n if (!Number.isFinite(createdAt)) return;\n const existing = this.memoryBoundsByRelay.get(relayKey);\n if (!existing) {\n this.memoryBoundsByRelay.set(relayKey, { min: createdAt, max: createdAt });\n return;\n }\n if (createdAt < existing.min) existing.min = createdAt;\n if (createdAt > existing.max) existing.max = createdAt;\n }\n\n constructor(\n adapters: IAdaptersArgument,\n options: ChronicleServiceOptions = {}\n ) {\n super(adapters);\n this.storage = new Route66EventStorage(this.cacheAdapter);\n this.options = {\n autoSync: options.autoSync ?? false,\n syncRelays: options.syncRelays ?? [],\n };\n this.init();\n }\n\n private extractRelayKeyFromEvent(event: unknown): string | null {\n const ev = event as any;\n if (!ev || ev.kind !== 1066) return null;\n const rTag = Array.isArray(ev.tags) ? ev.tags.find((t: any[]) => t?.[0] === 'r')?.[1] : undefined;\n if (typeof rTag !== 'string' || !rTag) return null;\n return this.normalizeRelayKey(rTag);\n }\n\n private rememberEvent(event: unknown, relayKey: string): void {\n const ev = event as any;\n if (!ev || ev.kind !== 1066 || typeof ev.id !== 'string') return;\n if (typeof ev.created_at === 'number') {\n this.updateMemoryBounds(relayKey, ev.created_at);\n }\n\n let relayMap = this.memoryByRelay.get(relayKey);\n if (!relayMap) {\n relayMap = new Map<string, IDeltaEvent>();\n this.memoryByRelay.set(relayKey, relayMap);\n }\n\n // Store the raw event - it should already have the correct DeltaEvent structure\n // Validate it's a proper Kind 1066 event before storing\n if (DeltaEvent.KIND === ev.kind) {\n relayMap.set(ev.id, ev as IDeltaEvent);\n }\n }\n\n private async backfillKind1066ForRelayTag(\n relayKey: string,\n relayTagValue: string,\n options?: { since?: number; until?: number }\n ): Promise<void> {\n const PAGE_LIMIT = 5000;\n const MAX_PAGES = 250; // safety guard for pathological relays/ranges\n\n const targetSince = this.normalizeSince(options?.since);\n let cursorUntil = this.normalizeSince(options?.until) ?? Math.floor(Date.now() / 1000);\n\n let pages = 0;\n let lastOldest: number | undefined;\n\n while (pages < MAX_PAGES) {\n const filter: Filter = {\n kinds: [1066],\n '#r': [relayTagValue],\n until: cursorUntil,\n limit: PAGE_LIMIT,\n };\n if (typeof targetSince === 'number') filter.since = targetSince;\n\n const args: WebsocketRequestBody = {\n filters: [filter],\n relays: this.options.syncRelays,\n hash: deterministicHash([filter]),\n options: {\n cache: false,\n stream: false,\n keepAlive: false,\n returnResults: true,\n },\n };\n\n let events: unknown[] = [];\n try {\n const res = await this.fetchFromWebsocket(args);\n events = Array.isArray(res) ? res : [];\n } catch (err) {\n console.warn(`[Chronicle] Fetch error for ${relayTagValue}:`, err);\n return;\n }\n\n if (!events.length) return;\n\n let oldest: number | undefined;\n for (const event of events) {\n const ev = event as any;\n if (!ev || ev.kind !== 1066) continue;\n if (this.extractRelayKeyFromEvent(ev) !== relayKey) continue;\n if (typeof ev.created_at === 'number') {\n if (oldest === undefined || ev.created_at < oldest) oldest = ev.created_at;\n }\n this.rememberEvent(ev, relayKey);\n }\n\n // If we didn't see any matching events in this page, bail (either relay has no data,\n // or the remote relay isn't returning the expected tag variant).\n if (oldest === undefined) return;\n\n if (typeof targetSince === 'number' && oldest <= targetSince) return;\n\n // If we got fewer than the page limit, we likely exhausted history for this tag/range.\n if (events.length < PAGE_LIMIT) return;\n\n // Safety: avoid infinite loops if server keeps returning the same oldest timestamp.\n if (oldest === lastOldest) return;\n lastOldest = oldest;\n\n // Page backwards in time.\n const nextUntil = oldest - 1;\n if (!Number.isFinite(nextUntil) || nextUntil <= 0) return;\n if (nextUntil >= cursorUntil) return;\n cursorUntil = nextUntil;\n pages += 1;\n }\n }\n\n private async backfillKind1066ForRelay(\n relay: string,\n relayKey: string,\n options?: { since?: number; until?: number }\n ): Promise<void> {\n const targetSince = this.normalizeSince(options?.since);\n const bounds = this.memoryBoundsByRelay.get(relayKey);\n if (\n typeof targetSince === 'number' &&\n bounds &&\n Number.isFinite(bounds.min) &&\n bounds.min <= targetSince\n ) {\n return;\n }\n\n const tagValues = this.relayTagQueryValues(relay);\n for (const tagValue of tagValues) {\n await this.backfillKind1066ForRelayTag(relayKey, tagValue, options);\n }\n }\n\n private getMemoryStorage(): EventStorage {\n const memoryByRelay = this.memoryByRelay;\n const relayTagValues = this.relayTagValues.bind(this);\n const normalizeRelayKey = this.normalizeRelayKey.bind(this);\n\n return {\n async query(options: QueryOptions): Promise<IDeltaEvent[]> {\n const relayKeys = relayTagValues(options.relay);\n const relayMaps = relayKeys\n .map((key) => memoryByRelay.get(normalizeRelayKey(key)))\n .filter((m): m is Map<string, IDeltaEvent> => Boolean(m && m.size));\n\n if (relayMaps.length === 0) return [];\n\n const byId = new Map<string, IDeltaEvent>();\n for (const relayMap of relayMaps) {\n relayMap.forEach((ev, id) => byId.set(id, ev));\n }\n\n let events = Array.from(byId.values());\n\n if (typeof options.since === 'number' && Number.isFinite(options.since)) {\n events = events.filter((e) => e.created_at >= options.since!);\n }\n if (typeof options.until === 'number' && Number.isFinite(options.until)) {\n events = events.filter((e) => e.created_at <= options.until!);\n }\n if (options.statusOnly) {\n events = events.filter((e) =>\n Array.isArray(e.tags) &&\n e.tags.some((t: any[]) => (t?.[0] === 'status' || t?.[0] === 'O') && (t?.[1] === 'init' || t?.[1] === 'up' || t?.[1] === 'down'))\n );\n }\n if (options.periods && options.periods.length > 0) {\n const allowed = new Set(options.periods);\n events = events.filter((e) =>\n Array.isArray(e.tags) &&\n e.tags.some((t: any[]) => t?.[0] === 'T' && allowed.has(String(t?.[1] ?? '')))\n );\n }\n\n events.sort((a, b) => a.created_at - b.created_at);\n\n if (typeof options.limit === 'number' && Number.isFinite(options.limit) && options.limit > 0) {\n // Nostr `limit` semantics typically return most recent events; after sorting ASC,\n // keep the last N.\n events = events.slice(-options.limit);\n }\n\n return events;\n },\n };\n }\n\n async init(): Promise<void> {\n await this.cacheAdapter.ready();\n this._ready = true;\n }\n\n /**\n * Subscribe to Kind 1066 delta events for a relay\n *\n * Uses route66's websocket adapter to fetch and subscribe to events.\n * Events are automatically cached by the cache adapter.\n *\n * @param relay - Relay URL to sync\n * @param options - Sync options\n */\n async syncRelay(\n relay: string,\n options?: {\n /** Fetch events since this timestamp */\n since?: number;\n /** Keep subscription alive */\n keepAlive?: boolean;\n }\n ): Promise<void> {\n await this.ready();\n\n const keepAlive = options?.keepAlive ?? this.options.autoSync ?? false;\n const relayKey = this.normalizeRelayKey(relay);\n\n const requestedSince = this.normalizeSince(options?.since);\n const prevDesiredSince = this.desiredSinceByRelay.get(relayKey);\n const desiredSince =\n requestedSince === undefined\n ? prevDesiredSince\n : prevDesiredSince === undefined\n ? requestedSince\n : Math.min(prevDesiredSince, requestedSince);\n this.desiredSinceByRelay.set(relayKey, desiredSince);\n\n const existing = this.syncInFlight.get(relayKey);\n if (existing) {\n // If another sync is already in-flight, wait for it, then re-evaluate whether we\n // still need to start/extend syncing (e.g. the requested `since` expanded).\n await existing;\n }\n\n const effectiveSince = this.desiredSinceByRelay.get(relayKey);\n const bounds = this.memoryBoundsByRelay.get(relayKey);\n const needsBackfill =\n typeof effectiveSince === 'number'\n ? !bounds || !Number.isFinite(bounds.min) || bounds.min > effectiveSince\n : false;\n const needsLiveSubscription = keepAlive && !this.kind1066Subscriptions.has(relayKey);\n\n const inFlightNow = this.syncInFlight.get(relayKey);\n if (inFlightNow) return inFlightNow;\n if (!needsBackfill && !needsLiveSubscription) return;\n\n const task = (async () => {\n if (keepAlive) {\n // Start a lightweight live subscription for new deltas. Historical ranges are fetched\n // explicitly via backfill to avoid relay `limit` caps truncating initial results.\n if (!this.kind1066Subscriptions.has(relayKey)) {\n const liveSince = Math.floor(Date.now() / 1000) - 60;\n const tagValues = this.relayTagQueryValues(relay);\n\n const filters: Filter[] = tagValues.map((tagValue) => ({\n kinds: [1066],\n '#r': [tagValue],\n since: liveSince,\n }));\n\n const hash = deterministicHash({ kind: 1066, relay: relayKey, tagValues });\n\n const args: WebsocketRequestBody = {\n filters,\n relays: this.options.syncRelays,\n hash,\n options: {\n cache: false,\n stream: true,\n keepAlive: true,\n returnResults: true,\n },\n };\n\n const callbacks: SubscribeHandlers = {\n onevent: (event) => {\n const eventRelayKey = this.extractRelayKeyFromEvent(event);\n if (!eventRelayKey || eventRelayKey !== relayKey) return;\n this.rememberEvent(event, relayKey);\n },\n };\n\n this.subscribe(args, callbacks, true).catch((err) => {\n console.warn(`[Chronicle] Subscribe error for ${relay}:`, err);\n });\n\n this.kind1066Subscriptions.set(relayKey, hash);\n }\n }\n\n // Always backfill the requested history window into memory so charts don't hydrate\n // from partial data.\n if (needsBackfill) {\n await this.backfillKind1066ForRelay(relay, relayKey, { since: effectiveSince });\n }\n })().finally(() => {\n this.syncInFlight.delete(relayKey);\n });\n\n this.syncInFlight.set(relayKey, task);\n return task;\n }\n\n /**\n * Stop syncing Kind 1066 events for a relay\n *\n * @param relay - Relay URL to stop syncing\n */\n async unsyncRelay(relay: string): Promise<void> {\n const relayKey = this.normalizeRelayKey(relay);\n const hash = this.kind1066Subscriptions.get(relayKey);\n this.desiredSinceByRelay.delete(relayKey);\n this.memoryByRelay.delete(relayKey);\n this.memoryBoundsByRelay.delete(relayKey);\n if (hash) {\n this.kind1066Subscriptions.delete(relayKey);\n await this.unsubscribe(hash);\n }\n }\n\n /**\n * Get time series data for charting\n *\n * Extracts time series data from Kind 1066 events.\n * Queries memory first (events captured during sync), then falls back to cache.\n * Optionally syncs the relay first if autoSync is enabled.\n *\n * @param options - Time series query options\n * @returns Array of time series points\n */\n async getTimeSeriesData(\n options: TimeSeriesOptions\n ): Promise<TimeSeriesPoint[]> {\n await this.ready();\n\n // Optionally sync first if autoSync enabled\n if (\n this.options.autoSync &&\n !this.kind1066Subscriptions.has(this.normalizeRelayKey(options.relay))\n ) {\n await this.syncRelay(options.relay, { since: options.since });\n }\n\n // Query memory FIRST (events captured during sync), then fall back to cache\n const memoryStorage = this.getMemoryStorage();\n let storage: EventStorage = memoryStorage;\n let events = await memoryStorage.query({\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n\n // Fall back to cache storage if memory is empty\n if (events.length === 0) {\n storage = this.storage;\n events = await this.storage.query({\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n }\n\n if (events.length === 0) {\n console.warn(`[Chronicle] No events found for ${options.relay}`);\n return [];\n }\n\n let timeSeries: TimeSeriesPoint[] = [];\n\n // Extract appropriate time series based on type\n switch (options.type) {\n case 'rtt':\n timeSeries = await generateRttSeries({\n storage,\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n break;\n\n case 'uptime': {\n const uptimeSeries = await generateUptimeSeries({\n storage,\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n // Convert UptimePoint[] to TimeSeriesPoint[]\n timeSeries = uptimeSeries.map((point) => ({\n timestamp: point.timestamp,\n date: point.date,\n value: point.value === 'online' ? 1 : 0,\n }));\n break;\n }\n\n default:\n console.warn(`[Chronicle] Unknown time series type: ${options.type}`);\n }\n\n // Apply aggregation if specified\n if (options.aggregate) {\n timeSeries = this.aggregateTimeSeries(\n timeSeries,\n options.aggregate.bucketSize,\n options.aggregate.fn\n );\n }\n\n return timeSeries;\n }\n\n /**\n * Get uptime/downtime periods for timeline visualization\n *\n * Queries memory first (events captured during sync), then falls back to cache.\n *\n * @param relay - Relay URL\n * @param options - Query options\n * @returns Array of uptime/downtime periods\n */\n async getUptimeHistory(\n relay: string,\n options?: { since?: number; until?: number }\n ): Promise<UptimePeriod[]> {\n await this.ready();\n\n // Query memory FIRST, then fall back to cache\n const memoryStorage = this.getMemoryStorage();\n let periods = await uptimeHistory(memoryStorage, relay, options);\n\n if (periods.length === 0) {\n periods = await uptimeHistory(this.storage, relay, options);\n }\n\n // Convert to UptimePeriod format\n return periods.map((period) => ({\n start: period.start,\n end: period.end || null,\n online: period.type === 'uptime',\n rtt: undefined, // TODO: Extract RTT from period if available\n }));\n }\n\n /**\n * Get raw Kind 1066 delta events for a relay\n *\n * Queries memory first (events captured during sync), then falls back to cache storage.\n * Optionally syncs the relay first if autoSync is enabled.\n */\n async getDeltaEvents(options: QueryOptions): Promise<IDeltaEvent[]> {\n await this.ready();\n\n if (this.options.autoSync && !this.kind1066Subscriptions.has(this.normalizeRelayKey(options.relay))) {\n await this.syncRelay(options.relay, { since: options.since });\n }\n\n const memoryStorage = this.getMemoryStorage();\n let events = await memoryStorage.query(options);\n\n if (events.length === 0) {\n events = await this.storage.query(options);\n }\n\n return events;\n }\n\n /**\n * Check if a relay is currently being synced\n *\n * @param relay - Relay URL to check\n * @returns True if relay is being synced\n */\n isSyncing(relay: string): boolean {\n return this.kind1066Subscriptions.has(this.normalizeRelayKey(relay));\n }\n\n /**\n * Get list of currently synced relays\n *\n * @returns Array of relay URLs being synced\n */\n getSyncedRelays(): string[] {\n return Array.from(this.kind1066Subscriptions.keys());\n }\n\n /**\n * Stop syncing all relays\n */\n async unsyncAll(): Promise<void> {\n const relays = this.getSyncedRelays();\n for (const relay of relays) {\n await this.unsyncRelay(relay);\n }\n }\n}\n"],"names":["ChronicleService","_super","adapters","options","_this","call","this","memoryByRelay","Map","memoryBoundsByRelay","kind1066Subscriptions","syncInFlight","desiredSinceByRelay","storage","Route66EventStorage","cacheAdapter","autoSync","_a","syncRelays","_b","init","__extends","prototype","aggregateTimeSeries","points","bucketSize","fn","Array","isArray","length","Number","isFinite","buckets","_i","points_1","point","timestamp","bucketTimestamp","Math","floor","raw","value","bucket","get","values","push","eventId","set","aggregated","forEach","aggregatedValue","reduce","a","b","min","max","__assign","date","Date","toISOString","sort","normalizeRelayKey","relay","trimmed","trim","replace","normalizeSince","since","relayTagValues","withoutTrailingSlash","withTrailingSlash","concat","from","Set","relayTagQueryValues","updateMemoryBounds","relayKey","createdAt","existing","extractRelayKeyFromEvent","event","ev","kind","rTag","tags","find","t","undefined","rememberEvent","id","created_at","relayMap","DeltaEvent","KIND","backfillKind1066ForRelayTag","relayTagValue","PAGE_LIMIT","MAX_PAGES","targetSince","cursorUntil","until","now","pages","filter","kinds","limit","args","filters","relays","hash","deterministicHash","cache","stream","keepAlive","returnResults","events","fetchFromWebsocket","res","sent","console","warn","err_1","oldest","events_1","event_1","lastOldest","nextUntil","backfillKind1066ForRelay","bounds","tagValues","tagValues_1","tagValue","getMemoryStorage","bind","query","relayKeys","relayMaps","map","key","m","Boolean","size","byId","relayMaps_1","e","statusOnly","some","periods","allowed_1","has","String","slice","ready","_ready","syncRelay","_c","requestedSince","prevDesiredSince","desiredSince","effectiveSince","needsBackfill","needsLiveSubscription","inFlightNow","task","__awaiter","liveSince_1","callbacks","onevent","eventRelayKey","subscribe","catch","err","finally","delete","unsyncRelay","unsubscribe","getTimeSeriesData","memoryStorage","timeSeries","type","generateRttSeries","generateUptimeSeries","uptimeSeries","aggregate","getUptimeHistory","uptimeHistory","period","start","end","online","rtt","getDeltaEvents","isSyncing","getSyncedRelays","keys","unsyncAll","relays_1","Service"],"mappings":"0gBAkGA,IAAAA,EAAA,SAAAC,GAyHE,SAAAD,iBACEE,EACAC,gBAAA,IAAAA,IAAAA,EAAA,CAAA,GAEA,IAAAC,EAAAH,EAAKI,KAAAC,KAACJ,IAASI,YA3HTF,EAAAG,cAAuD,IAAIC,IAC3DJ,EAAAK,oBAAiE,IAAID,IAErEJ,EAAAM,sBAA6C,IAAIF,IACjDJ,EAAAO,aAA2C,IAAIH,IAC/CJ,EAAAQ,oBAAuD,IAAIJ,IAuHjEJ,EAAKS,QAAU,IAAIC,sBAAoBV,EAAKW,cAC5CX,EAAKD,QAAU,CACba,iBAAUC,EAAAd,EAAQa,yBAClBE,mBAAYC,EAAAhB,EAAQe,0BAAc,IAEpCd,EAAKgB,QACP,CA2eF,OA/mBsCC,EAAAA,UAAArB,iBAAAC,GAS5BD,iBAAAsB,UAAAC,oBAAR,SACEC,EACAC,EACAC,SAEA,IAAKC,MAAMC,QAAQJ,IAA6B,IAAlBA,EAAOK,OAAc,MAAO,GAC1D,IAAKC,OAAOC,SAASN,IAAeA,GAAc,EAAG,OAAOD,EAI5D,IAFA,IAAMQ,EAAU,IAAIxB,IAEAyB,EAAA,EAAAC,EAAAV,EAAAS,WAAAA,IAAQ,CAAvB,IAAME,EAAKD,EAAAD,GACRG,EAAYD,aAAK,EAALA,EAAOC,UACzB,GAAyB,iBAAdA,GAA2BN,OAAOC,SAASK,GAAtD,CAEA,IAAMC,EAAkBC,KAAKC,MAAMH,EAAYX,GAAcA,EAEvDe,EAAOL,aAAK,EAALA,EAAeM,MACtBA,EACW,iBAARD,EACHA,EACe,kBAARA,EACLA,EACE,EACA,EACF,KACR,GAAa,MAATC,GAAkBX,OAAOC,SAASU,GAAtC,CAEA,IAAMC,UAASzB,EAAAe,EAAQW,IAAIN,kBAAoB,CAAEO,OAAQ,IACzDF,EAAOE,OAAOC,KAAKJ,IACdN,aAAK,EAALA,EAAeW,WAASJ,EAAOI,QAAWX,EAAcW,SAC7Dd,EAAQe,IAAIV,EAAiBK,EALiB,CAboB,CAmBpE,CAEA,IAAMM,EAAgC,GA6BtC,OA5BAhB,EAAQiB,SAAQ,SAACP,EAAQN,GACvB,IAAMQ,EAASF,EAAOE,OACtB,GAAKA,EAAOf,OAAZ,CAEA,IAAIqB,EAAkB,EACtB,OAAQxB,GACN,IAAK,MACHwB,EAAkBN,EAAOO,QAAO,SAACC,EAAWC,GAAc,OAAAD,EAAIC,CAAJ,GAAO,GAAKT,EAAOf,OAC7E,MACF,IAAK,MACHqB,EAAkBZ,KAAKgB,UAALhB,KAAYM,GAC9B,MACF,IAAK,MACHM,EAAkBZ,KAAKiB,UAALjB,KAAYM,GAC9B,MACF,IAAK,MACHM,EAAkBN,EAAOO,QAAO,SAACC,EAAWC,GAAc,OAAAD,EAAIC,CAAJ,GAAO,GAIrEL,EAAWH,KAAKW,EAAAA,SAAA,CACdpB,UAASA,EACTqB,KAAM,IAAIC,KAAiB,IAAZtB,GAAkBuB,cACjClB,MAAOS,GACHR,EAAOI,QAAU,CAAEA,QAASJ,EAAOI,SAAY,CAAA,GAtBjC,CAwBtB,IAEOE,EAAWY,MAAK,SAACR,EAAGC,GAAM,OAAAD,EAAEhB,UAAYiB,EAAEjB,SAAhB,GACnC,EAEQpC,iBAAAsB,UAAAuC,kBAAR,SAA0BC,GACxB,IAAMC,GAAWD,GAAS,IAAIE,OAC9B,OAAKD,EACEA,EAAQE,QAAQ,OAAQ,IADV,EAEvB,EAEQjE,iBAAAsB,UAAA4C,eAAR,SAAuBC,GACrB,GAAqB,iBAAVA,GACNrC,OAAOC,SAASoC,GACrB,OAAOA,CACT,EAEQnE,iBAAAsB,UAAA8C,eAAR,SAAuBN,GACrB,IAAMC,GAAWD,GAAS,IAAIE,OAC9B,IAAKD,EAAS,MAAO,GACrB,IAAMM,EAAuBN,EAAQE,QAAQ,OAAQ,IAC/CK,EAAoB,GAAAC,OAAGF,OAC7B,OAAO1C,MAAM6C,KAAK,IAAIC,IAAI,CAACV,EAASM,EAAsBC,IAC5D,EASQtE,iBAAAsB,UAAAoD,oBAAR,SAA4BZ,GAC1B,IAAMC,GAAWD,GAAS,IAAIE,OAC9B,IAAKD,EAAS,MAAO,GACrB,IAAMM,EAAuBN,EAAQE,QAAQ,OAAQ,IACrD,IAAKI,EAAsB,MAAO,GAClC,IAAMC,EAAoB,GAAAC,OAAGF,OAC7B,OAAO1C,MAAM6C,KAAK,IAAIC,IAAI,CAACJ,EAAsBC,IACnD,EAEQtE,iBAAAsB,UAAAqD,mBAAR,SAA2BC,EAAkBC,GAC3C,GAAK/C,OAAOC,SAAS8C,GAArB,CACA,IAAMC,EAAWxE,KAAKG,oBAAoBkC,IAAIiC,GACzCE,GAIDD,EAAYC,EAASxB,MAAKwB,EAASxB,IAAMuB,GACzCA,EAAYC,EAASvB,MAAKuB,EAASvB,IAAMsB,IAJ3CvE,KAAKG,oBAAoBsC,IAAI6B,EAAU,CAAEtB,IAAKuB,EAAWtB,IAAKsB,GAH/B,CAQnC,EAeQ7E,iBAAAsB,UAAAyD,yBAAR,SAAiCC,SACzBC,EAAKD,EACX,IAAKC,GAAkB,OAAZA,EAAGC,KAAe,OAAO,KACpC,IAAMC,EAAOxD,MAAMC,QAAQqD,EAAGG,MAAkD,UAA1CH,EAAGG,KAAKC,MAAK,SAACC,GAAa,MAAW,OAAXA,eAAAA,EAAI,GAAJ,WAAe,IAAArE,OAAA,EAAAA,EAAG,QAAKsE,EACxF,MAAoB,iBAATJ,GAAsBA,EAC1B7E,KAAKuD,kBAAkBsB,GADgB,IAEhD,EAEQnF,iBAAAsB,UAAAkE,cAAR,SAAsBR,EAAgBJ,GACpC,IAAMK,EAAKD,EACX,GAAKC,GAAkB,OAAZA,EAAGC,MAAkC,iBAAVD,EAAGQ,GAAzC,CAC6B,iBAAlBR,EAAGS,YACZpF,KAAKqE,mBAAmBC,EAAUK,EAAGS,YAGvC,IAAIC,EAAWrF,KAAKC,cAAcoC,IAAIiC,GACjCe,IACHA,EAAW,IAAInF,IACfF,KAAKC,cAAcwC,IAAI6B,EAAUe,IAK/BC,aAAWC,OAASZ,EAAGC,MACzBS,EAAS5C,IAAIkC,EAAGQ,GAAIR,EAdoC,CAgB5D,EAEcjF,iBAAAsB,UAAAwE,4BAAd,SACElB,EACAmB,EACA5F,2JAEM6F,EAAa,IACbC,EAAY,IAEZC,EAAc5F,KAAK4D,eAAe/D,aAAO,EAAPA,EAASgE,OAC7CgC,EAAiD,QAAnClF,EAAAX,KAAK4D,eAAe/D,aAAO,EAAPA,EAASiG,cAAM,IAAAnF,EAAAA,EAAIqB,KAAKC,MAAMmB,KAAK2C,MAAQ,KAE7EC,EAAQ,wBAGLA,EAAQL,GAAS,MAAA,CAAA,EAAA,GAChBM,EAAiB,CACrBC,MAAO,CAAC,MACR,KAAM,CAACT,GACPK,MAAOD,EACPM,MAAOT,GAEkB,iBAAhBE,IAA0BK,EAAOpC,MAAQ+B,GAE9CQ,EAA6B,CACjCC,QAAS,CAACJ,GACVK,OAAQtG,KAAKH,QAAQe,WACrB2F,KAAMC,EAAAA,kBAAkB,CAACP,IACzBpG,QAAS,CACP4G,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,eAAe,IAIfC,EAAoB,oBAEV,6BAAA,CAAA,EAAM7G,KAAK8G,mBAAmBV,kBAApCW,EAAMlG,EAAAmG,OACZH,EAASxF,MAAMC,QAAQyF,GAAOA,EAAM,gBAGpC,kBADAE,QAAQC,KAAK,+BAAAjD,OAA+BwB,EAAa,KAAK0B,GAC9D,CAAA,UAGF,IAAKN,EAAOtF,OAAQ,MAAA,CAAA,GAGpB,IADI6F,SACJzF,EAAA,EAAoB0F,EAAAR,EAAAlF,WAAAA,IAAf2F,EAAAD,EAAA1F,IACGgD,EAAK2C,IACY,OAAZ3C,EAAGC,MACV5E,KAAKyE,yBAAyBE,KAAQL,IACb,iBAAlBK,EAAGS,kBACGH,IAAXmC,GAAwBzC,EAAGS,WAAagC,KAAQA,EAASzC,EAAGS,YAElEpF,KAAKkF,cAAcP,EAAIL,IAKzB,YAAeW,IAAXmC,IAEuB,iBAAhBxB,GAA4BwB,GAAUxB,GAG7CiB,EAAOtF,OAASmE,GAGhB0B,IAAWG,GARW,CAAA,IAS1BA,EAAaH,EAGPI,EAAYJ,EAAS,GACtB5F,OAAOC,SAAS+F,IAAcA,GAAa,GAC5CA,GAAa3B,EADkC,CAAA,IAEnDA,EAAc2B,EACdxB,GAAS,iCAEZ,EAEatG,iBAAAsB,UAAAyG,yBAAd,SACEjE,EACAc,EACAzE,mIAIA,GAFM+F,EAAc5F,KAAK4D,eAAe/D,aAAO,EAAPA,EAASgE,OAC3C6D,EAAS1H,KAAKG,oBAAoBkC,IAAIiC,GAEnB,iBAAhBsB,GACP8B,GACAlG,OAAOC,SAASiG,EAAO1E,MACvB0E,EAAO1E,KAAO4C,EAEd,MAAA,CAAA,GAGI+B,EAAY3H,KAAKoE,oBAAoBZ,GACX7B,EAAA,EAATiG,EAAAD,mBAAA,OAAAhG,YAAZkG,EAAQD,EAAAjG,GACjB,CAAA,EAAM3B,KAAKwF,4BAA4BlB,EAAUuD,EAAUhI,KAD7B,CAAA,EAAA,UAC9Bc,EAAAqG,+BADqBrF,iCAGxB,EAEOjC,iBAAAsB,UAAA8G,iBAAR,WACE,IAAM7H,EAAgBD,KAAKC,cACrB6D,EAAiB9D,KAAK8D,eAAeiE,KAAK/H,MAC1CuD,EAAoBvD,KAAKuD,kBAAkBwE,KAAK/H,MAEtD,MAAO,CACCgI,eAAMnI,8GAMV,GALMoI,EAAYnE,EAAejE,EAAQ2D,OAKhB,KAJnB0E,EAAYD,EACfE,KAAI,SAACC,GAAQ,OAAAnI,EAAcoC,IAAIkB,EAAkB6E,GAApC,IACbnC,QAAO,SAACoC,GAAqC,OAAAC,QAAQD,GAAKA,EAAEE,KAAf,KAElChH,OAAc,MAAA,CAAA,EAAO,IAGnC,IADMiH,EAAO,IAAItI,IACjByB,EAAA,EAAuB8G,EAAAP,EAAAvG,WAAAA,IAAJ8G,EAAA9G,GACRgB,SAAQ,SAACgC,EAAIQ,GAAO,OAAAqD,EAAK/F,IAAI0C,EAAIR,EAAb,IAiC/B,OA9BIkC,EAASxF,MAAM6C,KAAKsE,EAAKlG,UAEA,iBAAlBzC,EAAQgE,OAAsBrC,OAAOC,SAAS5B,EAAQgE,SAC/DgD,EAASA,EAAOZ,QAAO,SAACyC,GAAM,OAAAA,EAAEtD,YAAcvF,EAAQgE,KAAxB,KAEH,iBAAlBhE,EAAQiG,OAAsBtE,OAAOC,SAAS5B,EAAQiG,SAC/De,EAASA,EAAOZ,QAAO,SAACyC,GAAM,OAAAA,EAAEtD,YAAcvF,EAAQiG,KAAxB,KAE5BjG,EAAQ8I,aACV9B,EAASA,EAAOZ,QAAO,SAACyC,GACtB,OAAArH,MAAMC,QAAQoH,EAAE5D,OAChB4D,EAAE5D,KAAK8D,MAAK,SAAC5D,GAAa,QAAY,YAAXA,eAAAA,EAAI,KAA8B,OAAXA,aAAC,EAADA,EAAI,KAA2B,UAAXA,aAAC,EAADA,EAAI,KAA4B,QAAXA,aAAC,EAADA,EAAI,KAA0B,UAAXA,aAAC,EAADA,EAAI,IAAxF,GAD1B,KAIAnF,EAAQgJ,SAAWhJ,EAAQgJ,QAAQtH,OAAS,IACxCuH,EAAU,IAAI3E,IAAItE,EAAQgJ,SAChChC,EAASA,EAAOZ,QAAO,SAACyC,GACtB,OAAArH,MAAMC,QAAQoH,EAAE5D,OAChB4D,EAAE5D,KAAK8D,MAAK,SAAC5D,GAAQ,IAAArE,EAAK,MAAW,OAAXqE,aAAC,EAADA,EAAI,KAAc8D,EAAQC,IAAIC,OAAa,QAANrI,EAAAqE,aAAC,EAADA,EAAI,UAAE,IAAArE,EAAAA,EAAI,OADzE,KAKJkG,EAAOvD,MAAK,SAACR,EAAGC,GAAM,OAAAD,EAAEsC,WAAarC,EAAEqC,UAAjB,IAEO,iBAAlBvF,EAAQsG,OAAsB3E,OAAOC,SAAS5B,EAAQsG,QAAUtG,EAAQsG,MAAQ,IAGzFU,EAASA,EAAOoC,OAAOpJ,EAAQsG,QAGjC,CAAA,EAAOU,QACR,EAEL,EAEMnH,iBAAAsB,UAAAF,KAAN,oHACE,KAAA,EAAA,MAAA,CAAA,EAAMd,KAAKS,aAAayI,uBAAxBvI,EAAAqG,OACAhH,KAAKmJ,QAAS,YACf,EAWKzJ,iBAAAsB,UAAAoI,UAAN,SACE5F,EACA3D,mJAOA,KAAA,EAAA,MAAA,CAAA,EAAMG,KAAKkJ,gBAgBP,OAhBJG,EAAArC,OAEML,EAAuD,QAA3C9F,EAAkB,QAAlBF,EAAAd,eAAAA,EAAS8G,iBAAS,IAAAhG,EAAAA,EAAIX,KAAKH,QAAQa,gBAAQ,IAAAG,GAAAA,EACvDyD,EAAWtE,KAAKuD,kBAAkBC,GAElC8F,EAAiBtJ,KAAK4D,eAAe/D,aAAO,EAAPA,EAASgE,OAC9C0F,EAAmBvJ,KAAKM,oBAAoB+B,IAAIiC,GAChDkF,OACevE,IAAnBqE,EACIC,OACqBtE,IAArBsE,EACED,EACAtH,KAAKgB,IAAIuG,EAAkBD,GACnCtJ,KAAKM,oBAAoBmC,IAAI6B,EAAUkF,IAEjChF,EAAWxE,KAAKK,aAAagC,IAAIiC,IAIrC,CAAA,EAAME,GAHJ,CAAA,EAAA,UAGF6E,EAAArC,wBAYF,OATMyC,EAAiBzJ,KAAKM,oBAAoB+B,IAAIiC,GAC9CoD,EAAS1H,KAAKG,oBAAoBkC,IAAIiC,GACtCoF,EACsB,iBAAnBD,KACF/B,IAAWlG,OAAOC,SAASiG,EAAO1E,MAAQ0E,EAAO1E,IAAMyG,GAExDE,EAAwBhD,IAAc3G,KAAKI,sBAAsB2I,IAAIzE,IAErEsF,EAAc5J,KAAKK,aAAagC,IAAIiC,IACzB,CAAA,EAAOsF,GACnBF,GAAkBC,GAEjBE,EAAQC,EAAAA,UAAAhK,OAAA,OAAA,GAAA,gGA8CR,OA7CA6G,IAGG3G,KAAKI,sBAAsB2I,IAAIzE,KAC5ByF,EAAY/H,KAAKC,MAAMmB,KAAK2C,MAAQ,KAAQ,GAC5C4B,EAAY3H,KAAKoE,oBAAoBZ,GAErC6C,EAAoBsB,EAAUQ,KAAI,SAACN,GAAa,MAAA,CACpD3B,MAAO,CAAC,MACR,KAAM,CAAC2B,GACPhE,MAAOkG,EAH6C,IAMhDxD,EAAOC,EAAAA,kBAAkB,CAAE5B,KAAM,KAAMpB,MAAOc,EAAUqD,UAASA,IAEjEvB,EAA6B,CACjCC,QAAOA,EACPC,OAAQtG,KAAKH,QAAQe,WACrB2F,KAAIA,EACJ1G,QAAS,CACP4G,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXC,eAAe,IAIboD,EAA+B,CACnCC,QAAS,SAACvF,GACR,IAAMwF,EAAgBpK,EAAK2E,yBAAyBC,GAC/CwF,GAAiBA,IAAkB5F,GACxCxE,EAAKoF,cAAcR,EAAOJ,EAC5B,GAGFtE,KAAKmK,UAAU/D,EAAM4D,GAAW,GAAMI,OAAM,SAACC,GAC3CpD,QAAQC,KAAK,mCAAAjD,OAAmCT,EAAK,KAAK6G,EAC5D,IAEArK,KAAKI,sBAAsBqC,IAAI6B,EAAUiC,KAMzCmD,EACF,CAAA,EAAM1J,KAAKyH,yBAAyBjE,EAAOc,EAAU,CAAET,MAAO4F,KAD5D,CAAA,EAAA,UACF9I,EAAAqG,yCAECsD,SAAQ,WACXxK,EAAKO,aAAakK,OAAOjG,EAC3B,IAEAtE,KAAKK,aAAaoC,IAAI6B,EAAUuF,GAChC,CAAA,EAAOA,IAxDuC,CAAA,SAyD/C,EAOKnK,iBAAAsB,UAAAwJ,YAAN,SAAkBhH,2HAMZ,OALEc,EAAWtE,KAAKuD,kBAAkBC,GAClC+C,EAAOvG,KAAKI,sBAAsBiC,IAAIiC,GAC5CtE,KAAKM,oBAAoBiK,OAAOjG,GAChCtE,KAAKC,cAAcsK,OAAOjG,GAC1BtE,KAAKG,oBAAoBoK,OAAOjG,GAC5BiC,GACFvG,KAAKI,sBAAsBmK,OAAOjG,GAClC,CAAA,EAAMtE,KAAKyK,YAAYlE,KAFrB,CAAA,EAAA,UAEF5F,EAAAqG,wCAEH,EAYKtH,iBAAAsB,UAAA0J,kBAAN,SACE7K,0HAEA,KAAA,EAAA,MAAA,CAAA,EAAMG,KAAKkJ,gBAIT,OAJFrI,EAAAmG,QAIEhH,KAAKH,QAAQa,UACZV,KAAKI,sBAAsB2I,IAAI/I,KAAKuD,kBAAkB1D,EAAQ2D,QAD/D,CAAA,EAAA,GAGA,CAAA,EAAMxD,KAAKoJ,UAAUvJ,EAAQ2D,MAAO,CAAEK,MAAOhE,EAAQgE,gBAArDhD,EAAAmG,wBAMW,OAFP2D,EAAgB3K,KAAK8H,mBACvBvH,EAAwBoK,EACf,CAAA,EAAMA,EAAc3C,MAAM,CACrCxE,MAAO3D,EAAQ2D,MACfK,MAAOhE,EAAQgE,MACfiC,MAAOjG,EAAQiG,gBAIb,OAAkB,KAPlBe,EAAShG,EAAAmG,QAOFzF,OAAP,CAAA,EAAA,IACFhB,EAAUP,KAAKO,QACN,CAAA,EAAMP,KAAKO,QAAQyH,MAAM,CAChCxE,MAAO3D,EAAQ2D,MACfK,MAAOhE,EAAQgE,MACfiC,MAAOjG,EAAQiG,iBAHjBe,EAAShG,0BAOX,GAAsB,IAAlBgG,EAAOtF,OAET,OADA0F,QAAQC,KAAK,mCAAAjD,OAAmCpE,EAAQ2D,QACxD,CAAA,EAAO,WAGLoH,EAAgC,GAG5B/K,EAAQgL,UACT,MAAA,MAAA,CAAA,EAAA,OASA,SAAA,MAAA,CAAA,EAAA,gBARU,KAAA,EAAA,MAAA,CAAA,EAAMC,oBAAkB,CACnCvK,QAAOA,EACPiD,MAAO3D,EAAQ2D,MACfK,MAAOhE,EAAQgE,MACfiC,MAAOjG,EAAQiG,gBAEjB,OANA8E,EAAa/J,SAMb,CAAA,EAAA,IAGqB,KAAA,EAAA,MAAA,CAAA,EAAMkK,uBAAqB,CAC9CxK,QAAOA,EACPiD,MAAO3D,EAAQ2D,MACfK,MAAOhE,EAAQgE,MACfiC,MAAOjG,EAAQiG,iBAQjB,OAZMkF,EAAenK,EAAAmG,OAOrB4D,EAAaI,EAAa7C,KAAI,SAACtG,GAAU,MAAA,CACvCC,UAAWD,EAAMC,UACjBqB,KAAMtB,EAAMsB,KACZhB,MAAuB,WAAhBN,EAAMM,MAAqB,EAAI,EAHC,IAKzC,CAAA,EAAA,YAIA8E,QAAQC,KAAK,yCAAAjD,OAAyCpE,EAAQgL,0BAYlE,OARIhL,EAAQoL,YACVL,EAAa5K,KAAKiB,oBAChB2J,EACA/K,EAAQoL,UAAU9J,WAClBtB,EAAQoL,UAAU7J,KAItB,CAAA,EAAOwJ,SACR,EAWKlL,iBAAAsB,UAAAkK,iBAAN,SACE1H,EACA3D,oHAEA,KAAA,EAAA,MAAA,CAAA,EAAMG,KAAKkJ,gBAIG,OAJdvI,EAAAqG,OAGM2D,EAAgB3K,KAAK8H,mBACb,CAAA,EAAMqD,EAAAA,cAAcR,EAAenH,EAAO3D,WAEpD,OAAmB,KAFnBgJ,EAAUlI,EAAAqG,QAEFzF,OAAR,CAAA,EAAA,GACQ,CAAA,EAAM4J,gBAAcnL,KAAKO,QAASiD,EAAO3D,WAAnDgJ,EAAUlI,0BAIZ,MAAA,CAAA,EAAOkI,EAAQV,KAAI,SAACiD,GAAW,MAAA,CAC7BC,MAAOD,EAAOC,MACdC,IAAKF,EAAOE,KAAO,KACnBC,OAAwB,WAAhBH,EAAOP,KACfW,SAAKvG,EAJwB,WAMhC,EAQKvF,iBAAAsB,UAAAyK,eAAN,SAAqB5L,kHACnB,KAAA,EAAA,MAAA,CAAA,EAAMG,KAAKkJ,uBAAXvI,EAAAqG,QAEIhH,KAAKH,QAAQa,UAAaV,KAAKI,sBAAsB2I,IAAI/I,KAAKuD,kBAAkB1D,EAAQ2D,QAAxF,CAAA,EAAA,GACF,CAAA,EAAMxD,KAAKoJ,UAAUvJ,EAAQ2D,MAAO,CAAEK,MAAOhE,EAAQgE,gBAArDlD,EAAAqG,wBAIW,MAAA,CAAA,EADShH,KAAK8H,mBACME,MAAMnI,WAEnC,OAAkB,KAFlBgH,EAASlG,EAAAqG,QAEFzF,OAAP,CAAA,EAAA,GACO,CAAA,EAAMvB,KAAKO,QAAQyH,MAAMnI,WAAlCgH,EAASlG,mBAGX,KAAA,EAAA,MAAA,CAAA,EAAOkG,SACR,EAQDnH,iBAAAsB,UAAA0K,UAAA,SAAUlI,GACR,OAAOxD,KAAKI,sBAAsB2I,IAAI/I,KAAKuD,kBAAkBC,GAC/D,EAOA9D,iBAAAsB,UAAA2K,gBAAA,WACE,OAAOtK,MAAM6C,KAAKlE,KAAKI,sBAAsBwL,OAC/C,EAKMlM,iBAAAsB,UAAA6K,UAAN,uIACQvF,EAAStG,KAAK2L,kBACMhK,EAAA,EAANmK,EAAAxF,mBAAA,OAAA3E,YAAT6B,EAAKsI,EAAAnK,GACd,CAAA,EAAM3B,KAAKwK,YAAYhH,KADC,CAAA,EAAA,UACxB7C,EAAAqG,+BADkBrF,iCAGrB,EACHjC,gBAAA,CA/mBA,CAAsCqM"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__extends as e,__assign as t,__awaiter as r,__generator as n}from"../_virtual/_tslib.esm.js";import{Service as i}from"./Service.esm.js";import{Route66EventStorage as s,generateUptimeSeries as a,generateRttSeries as o,uptimeHistory as l}from"@nostrwatch/relay-chronicle";import{deterministicHash as c}from"../utils/hash.esm.js";import"../models/Event.esm.js";import"../models/Nip66CheckEvent.esm.js";import{DeltaEvent as u}from"../models/DeltaEvent.esm.js";import"../models/RelayCheckAggregate.esm.js";import"../models/Geocoded.esm.js";import"../models/Monitor.esm.js";import"../models/Nip11.esm.js";import"../models/PubkeyProfile.esm.js";import"../models/PubkeyRelays.esm.js";var y=function(i){function ChronicleService(e,t){var r,n;void 0===t&&(t={});var a=i.call(this,e)||this;return a.memoryByRelay=new Map,a.memoryBoundsByRelay=new Map,a.kind1066Subscriptions=new Map,a.syncInFlight=new Map,a.desiredSinceByRelay=new Map,a.storage=new s(a.cacheAdapter),a.options={autoSync:null!==(r=t.autoSync)&&void 0!==r&&r,syncRelays:null!==(n=t.syncRelays)&&void 0!==n?n:[]},a.init(),a}return e(ChronicleService,i),ChronicleService.prototype.aggregateTimeSeries=function(e,r,n){var i;if(!Array.isArray(e)||0===e.length)return[];if(!Number.isFinite(r)||r<=0)return e;for(var s=new Map,a=0,o=e;a<o.length;a++){var l=o[a],c=null==l?void 0:l.timestamp;if("number"==typeof c&&Number.isFinite(c)){var u=Math.floor(c/r)*r,y=null==l?void 0:l.value,h="number"==typeof y?y:"boolean"==typeof y?y?1:0:null;if(null!=h&&Number.isFinite(h)){var m=null!==(i=s.get(u))&&void 0!==i?i:{values:[]};m.values.push(h),(null==l?void 0:l.eventId)&&(m.eventId=l.eventId),s.set(u,m)}}}var d=[];return s.forEach((function(e,r){var i=e.values;if(i.length){var s=0;switch(n){case"avg":s=i.reduce((function(e,t){return e+t}),0)/i.length;break;case"min":s=Math.min.apply(Math,i);break;case"max":s=Math.max.apply(Math,i);break;case"sum":s=i.reduce((function(e,t){return e+t}),0)}d.push(t({timestamp:r,date:new Date(1e3*r).toISOString(),value:s},e.eventId?{eventId:e.eventId}:{}))}})),d.sort((function(e,t){return e.timestamp-t.timestamp}))},ChronicleService.prototype.normalizeRelayKey=function(e){var t=(e||"").trim();return t?t.replace(/\/+$/,""):""},ChronicleService.prototype.normalizeSince=function(e){if("number"==typeof e&&Number.isFinite(e))return e},ChronicleService.prototype.relayTagValues=function(e){var t=(e||"").trim();if(!t)return[];var r=t.replace(/\/+$/,""),n="".concat(r,"/");return Array.from(new Set([t,r,n]))},ChronicleService.prototype.relayTagQueryValues=function(e){var t=(e||"").trim();if(!t)return[];var r=t.replace(/\/+$/,"");if(!r)return[];var n="".concat(r,"/");return Array.from(new Set([r,n]))},ChronicleService.prototype.updateMemoryBounds=function(e,t){if(Number.isFinite(t)){var r=this.memoryBoundsByRelay.get(e);r?(t<r.min&&(r.min=t),t>r.max&&(r.max=t)):this.memoryBoundsByRelay.set(e,{min:t,max:t})}},ChronicleService.prototype.extractRelayKeyFromEvent=function(e){var t,r=e;if(!r||1066!==r.kind)return null;var n=Array.isArray(r.tags)?null===(t=r.tags.find((function(e){return"r"===(null==e?void 0:e[0])})))||void 0===t?void 0:t[1]:void 0;return"string"==typeof n&&n?this.normalizeRelayKey(n):null},ChronicleService.prototype.rememberEvent=function(e,t){var r=e;if(r&&1066===r.kind&&"string"==typeof r.id){"number"==typeof r.created_at&&this.updateMemoryBounds(t,r.created_at);var n=this.memoryByRelay.get(t);n||(n=new Map,this.memoryByRelay.set(t,n)),u.KIND===r.kind&&n.set(r.id,r)}},ChronicleService.prototype.backfillKind1066ForRelayTag=function(e,t,i){return r(this,void 0,void 0,(function(){var r,s,a,o,l,u,y,h,m,d,v,f,p,g,b,S,R,k;return n(this,(function(n){switch(n.label){case 0:r=5e3,s=250,a=this.normalizeSince(null==i?void 0:i.since),o=null!==(k=this.normalizeSince(null==i?void 0:i.until))&&void 0!==k?k:Math.floor(Date.now()/1e3),l=0,n.label=1;case 1:if(!(l<s))return[3,6];y={kinds:[1066],"#r":[t],until:o,limit:r},"number"==typeof a&&(y.since=a),h={filters:[y],relays:this.options.syncRelays,hash:c([y]),options:{cache:!1,stream:!1,keepAlive:!1,returnResults:!0}},m=[],n.label=2;case 2:return n.trys.push([2,4,,5]),[4,this.fetchFromWebsocket(h)];case 3:return d=n.sent(),m=Array.isArray(d)?d:[],[3,5];case 4:return v=n.sent(),console.warn("[Chronicle] Fetch error for ".concat(t,":"),v),[2];case 5:if(!m.length)return[2];for(f=void 0,p=0,g=m;p<g.length;p++)b=g[p],(S=b)&&1066===S.kind&&this.extractRelayKeyFromEvent(S)===e&&("number"==typeof S.created_at&&(void 0===f||S.created_at<f)&&(f=S.created_at),this.rememberEvent(S,e));return void 0===f||("number"==typeof a&&f<=a||m.length<r||f===u)?[2]:(u=f,R=f-1,!Number.isFinite(R)||R<=0||R>=o?[2]:(o=R,l+=1,[3,1]));case 6:return[2]}}))}))},ChronicleService.prototype.backfillKind1066ForRelay=function(e,t,i){return r(this,void 0,void 0,(function(){var r,s,a,o,l,c;return n(this,(function(n){switch(n.label){case 0:if(r=this.normalizeSince(null==i?void 0:i.since),s=this.memoryBoundsByRelay.get(t),"number"==typeof r&&s&&Number.isFinite(s.min)&&s.min<=r)return[2];a=this.relayTagQueryValues(e),o=0,l=a,n.label=1;case 1:return o<l.length?(c=l[o],[4,this.backfillKind1066ForRelayTag(t,c,i)]):[3,4];case 2:n.sent(),n.label=3;case 3:return o++,[3,1];case 4:return[2]}}))}))},ChronicleService.prototype.getMemoryStorage=function(){var e=this.memoryByRelay,t=this.relayTagValues.bind(this),i=this.normalizeRelayKey.bind(this);return{query:function(s){return r(this,void 0,void 0,(function(){var r,a,o,l,c,u,y;return n(this,(function(n){if(r=t(s.relay),0===(a=r.map((function(t){return e.get(i(t))})).filter((function(e){return Boolean(e&&e.size)}))).length)return[2,[]];for(o=new Map,l=0,c=a;l<c.length;l++)c[l].forEach((function(e,t){return o.set(t,e)}));return u=Array.from(o.values()),"number"==typeof s.since&&Number.isFinite(s.since)&&(u=u.filter((function(e){return e.created_at>=s.since}))),"number"==typeof s.until&&Number.isFinite(s.until)&&(u=u.filter((function(e){return e.created_at<=s.until}))),s.statusOnly&&(u=u.filter((function(e){return Array.isArray(e.tags)&&e.tags.some((function(e){return!("status"!==(null==e?void 0:e[0])&&"O"!==(null==e?void 0:e[0])||"init"!==(null==e?void 0:e[1])&&"up"!==(null==e?void 0:e[1])&&"down"!==(null==e?void 0:e[1]))}))}))),s.periods&&s.periods.length>0&&(y=new Set(s.periods),u=u.filter((function(e){return Array.isArray(e.tags)&&e.tags.some((function(e){var t;return"T"===(null==e?void 0:e[0])&&y.has(String(null!==(t=null==e?void 0:e[1])&&void 0!==t?t:""))}))}))),u.sort((function(e,t){return e.created_at-t.created_at})),"number"==typeof s.limit&&Number.isFinite(s.limit)&&s.limit>0&&(u=u.slice(-s.limit)),[2,u]}))}))}}},ChronicleService.prototype.init=function(){return r(this,void 0,void 0,(function(){return n(this,(function(e){switch(e.label){case 0:return[4,this.cacheAdapter.ready()];case 1:return e.sent(),this._ready=!0,[2]}}))}))},ChronicleService.prototype.syncRelay=function(e,t){return r(this,void 0,void 0,(function(){var i,s,a,o,l,u,y,h,m,d,v,f,p,g,b=this;return n(this,(function(S){switch(S.label){case 0:return[4,this.ready()];case 1:return S.sent(),i=null!==(g=null!==(p=null==t?void 0:t.keepAlive)&&void 0!==p?p:this.options.autoSync)&&void 0!==g&&g,s=this.normalizeRelayKey(e),a=this.normalizeSince(null==t?void 0:t.since),o=this.desiredSinceByRelay.get(s),l=void 0===a?o:void 0===o?a:Math.min(o,a),this.desiredSinceByRelay.set(s,l),(u=this.syncInFlight.get(s))?[4,u]:[3,3];case 2:S.sent(),S.label=3;case 3:return y=this.desiredSinceByRelay.get(s),h=this.memoryBoundsByRelay.get(s),m="number"==typeof y&&(!h||!Number.isFinite(h.min)||h.min>y),d=i&&!this.kind1066Subscriptions.has(s),(v=this.syncInFlight.get(s))?[2,v]:m||d?(f=r(b,void 0,void 0,(function(){var t,r,a,o,l,u,h=this;return n(this,(function(n){switch(n.label){case 0:return i&&(this.kind1066Subscriptions.has(s)||(t=Math.floor(Date.now()/1e3)-60,r=this.relayTagQueryValues(e),a=r.map((function(e){return{kinds:[1066],"#r":[e],since:t}})),o=c({kind:1066,relay:s,tagValues:r}),l={filters:a,relays:this.options.syncRelays,hash:o,options:{cache:!1,stream:!0,keepAlive:!0,returnResults:!0}},u={onevent:function(e){var t=h.extractRelayKeyFromEvent(e);t&&t===s&&h.rememberEvent(e,s)}},this.subscribe(l,u,!0).catch((function(t){console.warn("[Chronicle] Subscribe error for ".concat(e,":"),t)})),this.kind1066Subscriptions.set(s,o))),m?[4,this.backfillKind1066ForRelay(e,s,{since:y})]:[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}}))})).finally((function(){b.syncInFlight.delete(s)})),this.syncInFlight.set(s,f),[2,f]):[2]}}))}))},ChronicleService.prototype.unsyncRelay=function(e){return r(this,void 0,void 0,(function(){var t,r;return n(this,(function(n){switch(n.label){case 0:return t=this.normalizeRelayKey(e),r=this.kind1066Subscriptions.get(t),this.desiredSinceByRelay.delete(t),this.memoryByRelay.delete(t),this.memoryBoundsByRelay.delete(t),r?(this.kind1066Subscriptions.delete(t),[4,this.unsubscribe(r)]):[3,2];case 1:n.sent(),n.label=2;case 2:return[2]}}))}))},ChronicleService.prototype.getTimeSeriesData=function(e){return r(this,void 0,void 0,(function(){var t,r,i,s,l;return n(this,(function(n){switch(n.label){case 0:return[4,this.ready()];case 1:return n.sent(),!this.options.autoSync||this.kind1066Subscriptions.has(this.normalizeRelayKey(e.relay))?[3,3]:[4,this.syncRelay(e.relay,{since:e.since})];case 2:n.sent(),n.label=3;case 3:return t=this.getMemoryStorage(),r=t,[4,t.query({relay:e.relay,since:e.since,until:e.until})];case 4:return 0!==(i=n.sent()).length?[3,6]:(r=this.storage,[4,this.storage.query({relay:e.relay,since:e.since,until:e.until})]);case 5:i=n.sent(),n.label=6;case 6:if(0===i.length)return console.warn("[Chronicle] No events found for ".concat(e.relay)),[2,[]];switch(s=[],e.type){case"rtt":return[3,7];case"uptime":return[3,9]}return[3,11];case 7:return[4,o({storage:r,relay:e.relay,since:e.since,until:e.until})];case 8:return s=n.sent(),[3,12];case 9:return[4,a({storage:r,relay:e.relay,since:e.since,until:e.until})];case 10:return l=n.sent(),s=l.map((function(e){return{timestamp:e.timestamp,date:e.date,value:"online"===e.value?1:0}})),[3,12];case 11:console.warn("[Chronicle] Unknown time series type: ".concat(e.type)),n.label=12;case 12:return e.aggregate&&(s=this.aggregateTimeSeries(s,e.aggregate.bucketSize,e.aggregate.fn)),[2,s]}}))}))},ChronicleService.prototype.getUptimeHistory=function(e,t){return r(this,void 0,void 0,(function(){var r,i;return n(this,(function(n){switch(n.label){case 0:return[4,this.ready()];case 1:return n.sent(),r=this.getMemoryStorage(),[4,l(r,e,t)];case 2:return 0!==(i=n.sent()).length?[3,4]:[4,l(this.storage,e,t)];case 3:i=n.sent(),n.label=4;case 4:return[2,i.map((function(e){return{start:e.start,end:e.end||null,online:"uptime"===e.type,rtt:void 0}}))]}}))}))},ChronicleService.prototype.getDeltaEvents=function(e){return r(this,void 0,void 0,(function(){var t;return n(this,(function(r){switch(r.label){case 0:return[4,this.ready()];case 1:return r.sent(),!this.options.autoSync||this.kind1066Subscriptions.has(this.normalizeRelayKey(e.relay))?[3,3]:[4,this.syncRelay(e.relay,{since:e.since})];case 2:r.sent(),r.label=3;case 3:return[4,this.getMemoryStorage().query(e)];case 4:return 0!==(t=r.sent()).length?[3,6]:[4,this.storage.query(e)];case 5:t=r.sent(),r.label=6;case 6:return[2,t]}}))}))},ChronicleService.prototype.isSyncing=function(e){return this.kind1066Subscriptions.has(this.normalizeRelayKey(e))},ChronicleService.prototype.getSyncedRelays=function(){return Array.from(this.kind1066Subscriptions.keys())},ChronicleService.prototype.unsyncAll=function(){return r(this,void 0,void 0,(function(){var e,t,r,i;return n(this,(function(n){switch(n.label){case 0:e=this.getSyncedRelays(),t=0,r=e,n.label=1;case 1:return t<r.length?(i=r[t],[4,this.unsyncRelay(i)]):[3,4];case 2:n.sent(),n.label=3;case 3:return t++,[3,1];case 4:return[2]}}))}))},ChronicleService}(i);export{y as ChronicleService};
|
|
2
|
+
//# sourceMappingURL=ChronicleService.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChronicleService.esm.js","sources":["../../../src/services/ChronicleService.ts"],"sourcesContent":["/**\n * ChronicleService\n *\n * Service for accessing relay history and time series data from Kind 1066 delta events.\n * Leverages route66's existing websocket adapter to avoid duplicate connections.\n */\n\nimport { Service } from './Service';\nimport { Route66EventStorage } from '@nostrwatch/relay-chronicle';\nimport type {\n TimeSeriesPoint,\n UptimeState,\n DeltaEvent as IDeltaEvent,\n EventStorage,\n QueryOptions,\n} from '@nostrwatch/relay-chronicle';\nimport {\n generateRttSeries,\n generateUptimeSeries,\n uptimeHistory,\n} from '@nostrwatch/relay-chronicle';\nimport type { IAdaptersArgument } from '@base/interfaces';\nimport type { Filter } from 'nostr-tools';\nimport type { WebsocketRequestBody, SubscribeHandlers } from '@base/core';\nimport { deterministicHash } from '@base/utils';\nimport { DeltaEvent } from '@base/models';\n\n/**\n * Configuration options for ChronicleService\n */\nexport interface ChronicleServiceOptions {\n /** Automatically subscribe to Kind 1066 events for queried relays */\n autoSync?: boolean;\n /** Relays to fetch Kind 1066 events from */\n syncRelays?: string[];\n}\n\n/**\n * Options for time series queries\n */\nexport interface TimeSeriesOptions {\n /** Relay URL to query */\n relay: string;\n /** Start of time range (unix timestamp in seconds) */\n since?: number;\n /** End of time range (unix timestamp in seconds) */\n until?: number;\n /** Type of time series data to extract */\n type?: 'rtt' | 'uptime' | 'changes';\n /** Optional aggregation settings */\n aggregate?: {\n /** Bucket size in seconds */\n bucketSize: number;\n /** Aggregation function */\n fn: 'avg' | 'min' | 'max' | 'sum';\n };\n}\n\n/**\n * Uptime period for timeline visualization\n */\nexport interface UptimePeriod {\n /** Period start timestamp */\n start: number;\n /** Period end timestamp (null if ongoing) */\n end: number | null;\n /** Whether relay was online during this period */\n online: boolean;\n /** RTT in milliseconds (if online) */\n rtt?: number;\n}\n\n/**\n * ChronicleService - Access relay history via Kind 1066 delta events\n *\n * This service integrates relay-chronicle with route66's existing infrastructure:\n * - Uses websocket adapter for fetching events (no duplicate connections)\n * - Uses cache adapter for querying stored events\n * - Provides time series data for charting\n *\n * @example\n * ```typescript\n * const chronicle = new ChronicleService(route66.adapters, {\n * autoSync: true,\n * syncRelays: ['wss://relay.nostr.watch'],\n * });\n *\n * // Sync a relay (fetch and subscribe to Kind 1066)\n * await chronicle.syncRelay('wss://relay.example.com');\n *\n * // Get RTT time series for charting\n * const rttData = await chronicle.getTimeSeriesData({\n * relay: 'wss://relay.example.com',\n * type: 'rtt',\n * since: Date.now() / 1000 - 86400, // Last 24h\n * });\n * ```\n */\nexport class ChronicleService extends Service {\n public storage: Route66EventStorage;\n private memoryByRelay: Map<string, Map<string, IDeltaEvent>> = new Map();\n private memoryBoundsByRelay: Map<string, { min: number; max: number }> = new Map();\n private options: ChronicleServiceOptions;\n private kind1066Subscriptions: Map<string, string> = new Map();\n private syncInFlight: Map<string, Promise<void>> = new Map();\n private desiredSinceByRelay: Map<string, number | undefined> = new Map();\n\n private aggregateTimeSeries(\n points: TimeSeriesPoint[],\n bucketSize: number,\n fn: 'avg' | 'min' | 'max' | 'sum'\n ): TimeSeriesPoint[] {\n if (!Array.isArray(points) || points.length === 0) return [];\n if (!Number.isFinite(bucketSize) || bucketSize <= 0) return points;\n\n const buckets = new Map<number, { values: number[]; eventId?: string }>();\n\n for (const point of points) {\n const timestamp = point?.timestamp;\n if (typeof timestamp !== 'number' || !Number.isFinite(timestamp)) continue;\n\n const bucketTimestamp = Math.floor(timestamp / bucketSize) * bucketSize;\n\n const raw = (point as any)?.value;\n const value =\n typeof raw === 'number'\n ? raw\n : typeof raw === 'boolean'\n ? raw\n ? 1\n : 0\n : null;\n if (value == null || !Number.isFinite(value)) continue;\n\n const bucket = buckets.get(bucketTimestamp) ?? { values: [] as number[] };\n bucket.values.push(value);\n if ((point as any)?.eventId) bucket.eventId = (point as any).eventId;\n buckets.set(bucketTimestamp, bucket);\n }\n\n const aggregated: TimeSeriesPoint[] = [];\n buckets.forEach((bucket, timestamp) => {\n const values = bucket.values;\n if (!values.length) return;\n\n let aggregatedValue = 0;\n switch (fn) {\n case 'avg':\n aggregatedValue = values.reduce((a: number, b: number) => a + b, 0) / values.length;\n break;\n case 'min':\n aggregatedValue = Math.min(...values);\n break;\n case 'max':\n aggregatedValue = Math.max(...values);\n break;\n case 'sum':\n aggregatedValue = values.reduce((a: number, b: number) => a + b, 0);\n break;\n }\n\n aggregated.push({\n timestamp,\n date: new Date(timestamp * 1000).toISOString(),\n value: aggregatedValue,\n ...(bucket.eventId ? { eventId: bucket.eventId } : {}),\n } as any);\n });\n\n return aggregated.sort((a, b) => a.timestamp - b.timestamp);\n }\n\n private normalizeRelayKey(relay: string): string {\n const trimmed = (relay || '').trim();\n if (!trimmed) return '';\n return trimmed.replace(/\\/+$/, '');\n }\n\n private normalizeSince(since?: number): number | undefined {\n if (typeof since !== 'number') return undefined;\n if (!Number.isFinite(since)) return undefined;\n return since;\n }\n\n private relayTagValues(relay: string): string[] {\n const trimmed = (relay || '').trim();\n if (!trimmed) return [];\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n const withTrailingSlash = `${withoutTrailingSlash}/`;\n return Array.from(new Set([trimmed, withoutTrailingSlash, withTrailingSlash]));\n }\n\n /**\n * Values to use for *remote* `#r` filtering.\n *\n * Some relays (notably `wss://relay.nostr.watch`) appear to mishandle multiple values\n * within a single `#r: [...]` array. To remain compatible, we query each candidate\n * as a separate filter/request.\n */\n private relayTagQueryValues(relay: string): string[] {\n const trimmed = (relay || '').trim();\n if (!trimmed) return [];\n const withoutTrailingSlash = trimmed.replace(/\\/+$/, '');\n if (!withoutTrailingSlash) return [];\n const withTrailingSlash = `${withoutTrailingSlash}/`;\n return Array.from(new Set([withoutTrailingSlash, withTrailingSlash]));\n }\n\n private updateMemoryBounds(relayKey: string, createdAt: number): void {\n if (!Number.isFinite(createdAt)) return;\n const existing = this.memoryBoundsByRelay.get(relayKey);\n if (!existing) {\n this.memoryBoundsByRelay.set(relayKey, { min: createdAt, max: createdAt });\n return;\n }\n if (createdAt < existing.min) existing.min = createdAt;\n if (createdAt > existing.max) existing.max = createdAt;\n }\n\n constructor(\n adapters: IAdaptersArgument,\n options: ChronicleServiceOptions = {}\n ) {\n super(adapters);\n this.storage = new Route66EventStorage(this.cacheAdapter);\n this.options = {\n autoSync: options.autoSync ?? false,\n syncRelays: options.syncRelays ?? [],\n };\n this.init();\n }\n\n private extractRelayKeyFromEvent(event: unknown): string | null {\n const ev = event as any;\n if (!ev || ev.kind !== 1066) return null;\n const rTag = Array.isArray(ev.tags) ? ev.tags.find((t: any[]) => t?.[0] === 'r')?.[1] : undefined;\n if (typeof rTag !== 'string' || !rTag) return null;\n return this.normalizeRelayKey(rTag);\n }\n\n private rememberEvent(event: unknown, relayKey: string): void {\n const ev = event as any;\n if (!ev || ev.kind !== 1066 || typeof ev.id !== 'string') return;\n if (typeof ev.created_at === 'number') {\n this.updateMemoryBounds(relayKey, ev.created_at);\n }\n\n let relayMap = this.memoryByRelay.get(relayKey);\n if (!relayMap) {\n relayMap = new Map<string, IDeltaEvent>();\n this.memoryByRelay.set(relayKey, relayMap);\n }\n\n // Store the raw event - it should already have the correct DeltaEvent structure\n // Validate it's a proper Kind 1066 event before storing\n if (DeltaEvent.KIND === ev.kind) {\n relayMap.set(ev.id, ev as IDeltaEvent);\n }\n }\n\n private async backfillKind1066ForRelayTag(\n relayKey: string,\n relayTagValue: string,\n options?: { since?: number; until?: number }\n ): Promise<void> {\n const PAGE_LIMIT = 5000;\n const MAX_PAGES = 250; // safety guard for pathological relays/ranges\n\n const targetSince = this.normalizeSince(options?.since);\n let cursorUntil = this.normalizeSince(options?.until) ?? Math.floor(Date.now() / 1000);\n\n let pages = 0;\n let lastOldest: number | undefined;\n\n while (pages < MAX_PAGES) {\n const filter: Filter = {\n kinds: [1066],\n '#r': [relayTagValue],\n until: cursorUntil,\n limit: PAGE_LIMIT,\n };\n if (typeof targetSince === 'number') filter.since = targetSince;\n\n const args: WebsocketRequestBody = {\n filters: [filter],\n relays: this.options.syncRelays,\n hash: deterministicHash([filter]),\n options: {\n cache: false,\n stream: false,\n keepAlive: false,\n returnResults: true,\n },\n };\n\n let events: unknown[] = [];\n try {\n const res = await this.fetchFromWebsocket(args);\n events = Array.isArray(res) ? res : [];\n } catch (err) {\n console.warn(`[Chronicle] Fetch error for ${relayTagValue}:`, err);\n return;\n }\n\n if (!events.length) return;\n\n let oldest: number | undefined;\n for (const event of events) {\n const ev = event as any;\n if (!ev || ev.kind !== 1066) continue;\n if (this.extractRelayKeyFromEvent(ev) !== relayKey) continue;\n if (typeof ev.created_at === 'number') {\n if (oldest === undefined || ev.created_at < oldest) oldest = ev.created_at;\n }\n this.rememberEvent(ev, relayKey);\n }\n\n // If we didn't see any matching events in this page, bail (either relay has no data,\n // or the remote relay isn't returning the expected tag variant).\n if (oldest === undefined) return;\n\n if (typeof targetSince === 'number' && oldest <= targetSince) return;\n\n // If we got fewer than the page limit, we likely exhausted history for this tag/range.\n if (events.length < PAGE_LIMIT) return;\n\n // Safety: avoid infinite loops if server keeps returning the same oldest timestamp.\n if (oldest === lastOldest) return;\n lastOldest = oldest;\n\n // Page backwards in time.\n const nextUntil = oldest - 1;\n if (!Number.isFinite(nextUntil) || nextUntil <= 0) return;\n if (nextUntil >= cursorUntil) return;\n cursorUntil = nextUntil;\n pages += 1;\n }\n }\n\n private async backfillKind1066ForRelay(\n relay: string,\n relayKey: string,\n options?: { since?: number; until?: number }\n ): Promise<void> {\n const targetSince = this.normalizeSince(options?.since);\n const bounds = this.memoryBoundsByRelay.get(relayKey);\n if (\n typeof targetSince === 'number' &&\n bounds &&\n Number.isFinite(bounds.min) &&\n bounds.min <= targetSince\n ) {\n return;\n }\n\n const tagValues = this.relayTagQueryValues(relay);\n for (const tagValue of tagValues) {\n await this.backfillKind1066ForRelayTag(relayKey, tagValue, options);\n }\n }\n\n private getMemoryStorage(): EventStorage {\n const memoryByRelay = this.memoryByRelay;\n const relayTagValues = this.relayTagValues.bind(this);\n const normalizeRelayKey = this.normalizeRelayKey.bind(this);\n\n return {\n async query(options: QueryOptions): Promise<IDeltaEvent[]> {\n const relayKeys = relayTagValues(options.relay);\n const relayMaps = relayKeys\n .map((key) => memoryByRelay.get(normalizeRelayKey(key)))\n .filter((m): m is Map<string, IDeltaEvent> => Boolean(m && m.size));\n\n if (relayMaps.length === 0) return [];\n\n const byId = new Map<string, IDeltaEvent>();\n for (const relayMap of relayMaps) {\n relayMap.forEach((ev, id) => byId.set(id, ev));\n }\n\n let events = Array.from(byId.values());\n\n if (typeof options.since === 'number' && Number.isFinite(options.since)) {\n events = events.filter((e) => e.created_at >= options.since!);\n }\n if (typeof options.until === 'number' && Number.isFinite(options.until)) {\n events = events.filter((e) => e.created_at <= options.until!);\n }\n if (options.statusOnly) {\n events = events.filter((e) =>\n Array.isArray(e.tags) &&\n e.tags.some((t: any[]) => (t?.[0] === 'status' || t?.[0] === 'O') && (t?.[1] === 'init' || t?.[1] === 'up' || t?.[1] === 'down'))\n );\n }\n if (options.periods && options.periods.length > 0) {\n const allowed = new Set(options.periods);\n events = events.filter((e) =>\n Array.isArray(e.tags) &&\n e.tags.some((t: any[]) => t?.[0] === 'T' && allowed.has(String(t?.[1] ?? '')))\n );\n }\n\n events.sort((a, b) => a.created_at - b.created_at);\n\n if (typeof options.limit === 'number' && Number.isFinite(options.limit) && options.limit > 0) {\n // Nostr `limit` semantics typically return most recent events; after sorting ASC,\n // keep the last N.\n events = events.slice(-options.limit);\n }\n\n return events;\n },\n };\n }\n\n async init(): Promise<void> {\n await this.cacheAdapter.ready();\n this._ready = true;\n }\n\n /**\n * Subscribe to Kind 1066 delta events for a relay\n *\n * Uses route66's websocket adapter to fetch and subscribe to events.\n * Events are automatically cached by the cache adapter.\n *\n * @param relay - Relay URL to sync\n * @param options - Sync options\n */\n async syncRelay(\n relay: string,\n options?: {\n /** Fetch events since this timestamp */\n since?: number;\n /** Keep subscription alive */\n keepAlive?: boolean;\n }\n ): Promise<void> {\n await this.ready();\n\n const keepAlive = options?.keepAlive ?? this.options.autoSync ?? false;\n const relayKey = this.normalizeRelayKey(relay);\n\n const requestedSince = this.normalizeSince(options?.since);\n const prevDesiredSince = this.desiredSinceByRelay.get(relayKey);\n const desiredSince =\n requestedSince === undefined\n ? prevDesiredSince\n : prevDesiredSince === undefined\n ? requestedSince\n : Math.min(prevDesiredSince, requestedSince);\n this.desiredSinceByRelay.set(relayKey, desiredSince);\n\n const existing = this.syncInFlight.get(relayKey);\n if (existing) {\n // If another sync is already in-flight, wait for it, then re-evaluate whether we\n // still need to start/extend syncing (e.g. the requested `since` expanded).\n await existing;\n }\n\n const effectiveSince = this.desiredSinceByRelay.get(relayKey);\n const bounds = this.memoryBoundsByRelay.get(relayKey);\n const needsBackfill =\n typeof effectiveSince === 'number'\n ? !bounds || !Number.isFinite(bounds.min) || bounds.min > effectiveSince\n : false;\n const needsLiveSubscription = keepAlive && !this.kind1066Subscriptions.has(relayKey);\n\n const inFlightNow = this.syncInFlight.get(relayKey);\n if (inFlightNow) return inFlightNow;\n if (!needsBackfill && !needsLiveSubscription) return;\n\n const task = (async () => {\n if (keepAlive) {\n // Start a lightweight live subscription for new deltas. Historical ranges are fetched\n // explicitly via backfill to avoid relay `limit` caps truncating initial results.\n if (!this.kind1066Subscriptions.has(relayKey)) {\n const liveSince = Math.floor(Date.now() / 1000) - 60;\n const tagValues = this.relayTagQueryValues(relay);\n\n const filters: Filter[] = tagValues.map((tagValue) => ({\n kinds: [1066],\n '#r': [tagValue],\n since: liveSince,\n }));\n\n const hash = deterministicHash({ kind: 1066, relay: relayKey, tagValues });\n\n const args: WebsocketRequestBody = {\n filters,\n relays: this.options.syncRelays,\n hash,\n options: {\n cache: false,\n stream: true,\n keepAlive: true,\n returnResults: true,\n },\n };\n\n const callbacks: SubscribeHandlers = {\n onevent: (event) => {\n const eventRelayKey = this.extractRelayKeyFromEvent(event);\n if (!eventRelayKey || eventRelayKey !== relayKey) return;\n this.rememberEvent(event, relayKey);\n },\n };\n\n this.subscribe(args, callbacks, true).catch((err) => {\n console.warn(`[Chronicle] Subscribe error for ${relay}:`, err);\n });\n\n this.kind1066Subscriptions.set(relayKey, hash);\n }\n }\n\n // Always backfill the requested history window into memory so charts don't hydrate\n // from partial data.\n if (needsBackfill) {\n await this.backfillKind1066ForRelay(relay, relayKey, { since: effectiveSince });\n }\n })().finally(() => {\n this.syncInFlight.delete(relayKey);\n });\n\n this.syncInFlight.set(relayKey, task);\n return task;\n }\n\n /**\n * Stop syncing Kind 1066 events for a relay\n *\n * @param relay - Relay URL to stop syncing\n */\n async unsyncRelay(relay: string): Promise<void> {\n const relayKey = this.normalizeRelayKey(relay);\n const hash = this.kind1066Subscriptions.get(relayKey);\n this.desiredSinceByRelay.delete(relayKey);\n this.memoryByRelay.delete(relayKey);\n this.memoryBoundsByRelay.delete(relayKey);\n if (hash) {\n this.kind1066Subscriptions.delete(relayKey);\n await this.unsubscribe(hash);\n }\n }\n\n /**\n * Get time series data for charting\n *\n * Extracts time series data from Kind 1066 events.\n * Queries memory first (events captured during sync), then falls back to cache.\n * Optionally syncs the relay first if autoSync is enabled.\n *\n * @param options - Time series query options\n * @returns Array of time series points\n */\n async getTimeSeriesData(\n options: TimeSeriesOptions\n ): Promise<TimeSeriesPoint[]> {\n await this.ready();\n\n // Optionally sync first if autoSync enabled\n if (\n this.options.autoSync &&\n !this.kind1066Subscriptions.has(this.normalizeRelayKey(options.relay))\n ) {\n await this.syncRelay(options.relay, { since: options.since });\n }\n\n // Query memory FIRST (events captured during sync), then fall back to cache\n const memoryStorage = this.getMemoryStorage();\n let storage: EventStorage = memoryStorage;\n let events = await memoryStorage.query({\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n\n // Fall back to cache storage if memory is empty\n if (events.length === 0) {\n storage = this.storage;\n events = await this.storage.query({\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n }\n\n if (events.length === 0) {\n console.warn(`[Chronicle] No events found for ${options.relay}`);\n return [];\n }\n\n let timeSeries: TimeSeriesPoint[] = [];\n\n // Extract appropriate time series based on type\n switch (options.type) {\n case 'rtt':\n timeSeries = await generateRttSeries({\n storage,\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n break;\n\n case 'uptime': {\n const uptimeSeries = await generateUptimeSeries({\n storage,\n relay: options.relay,\n since: options.since,\n until: options.until,\n });\n // Convert UptimePoint[] to TimeSeriesPoint[]\n timeSeries = uptimeSeries.map((point) => ({\n timestamp: point.timestamp,\n date: point.date,\n value: point.value === 'online' ? 1 : 0,\n }));\n break;\n }\n\n default:\n console.warn(`[Chronicle] Unknown time series type: ${options.type}`);\n }\n\n // Apply aggregation if specified\n if (options.aggregate) {\n timeSeries = this.aggregateTimeSeries(\n timeSeries,\n options.aggregate.bucketSize,\n options.aggregate.fn\n );\n }\n\n return timeSeries;\n }\n\n /**\n * Get uptime/downtime periods for timeline visualization\n *\n * Queries memory first (events captured during sync), then falls back to cache.\n *\n * @param relay - Relay URL\n * @param options - Query options\n * @returns Array of uptime/downtime periods\n */\n async getUptimeHistory(\n relay: string,\n options?: { since?: number; until?: number }\n ): Promise<UptimePeriod[]> {\n await this.ready();\n\n // Query memory FIRST, then fall back to cache\n const memoryStorage = this.getMemoryStorage();\n let periods = await uptimeHistory(memoryStorage, relay, options);\n\n if (periods.length === 0) {\n periods = await uptimeHistory(this.storage, relay, options);\n }\n\n // Convert to UptimePeriod format\n return periods.map((period) => ({\n start: period.start,\n end: period.end || null,\n online: period.type === 'uptime',\n rtt: undefined, // TODO: Extract RTT from period if available\n }));\n }\n\n /**\n * Get raw Kind 1066 delta events for a relay\n *\n * Queries memory first (events captured during sync), then falls back to cache storage.\n * Optionally syncs the relay first if autoSync is enabled.\n */\n async getDeltaEvents(options: QueryOptions): Promise<IDeltaEvent[]> {\n await this.ready();\n\n if (this.options.autoSync && !this.kind1066Subscriptions.has(this.normalizeRelayKey(options.relay))) {\n await this.syncRelay(options.relay, { since: options.since });\n }\n\n const memoryStorage = this.getMemoryStorage();\n let events = await memoryStorage.query(options);\n\n if (events.length === 0) {\n events = await this.storage.query(options);\n }\n\n return events;\n }\n\n /**\n * Check if a relay is currently being synced\n *\n * @param relay - Relay URL to check\n * @returns True if relay is being synced\n */\n isSyncing(relay: string): boolean {\n return this.kind1066Subscriptions.has(this.normalizeRelayKey(relay));\n }\n\n /**\n * Get list of currently synced relays\n *\n * @returns Array of relay URLs being synced\n */\n getSyncedRelays(): string[] {\n return Array.from(this.kind1066Subscriptions.keys());\n }\n\n /**\n * Stop syncing all relays\n */\n async unsyncAll(): Promise<void> {\n const relays = this.getSyncedRelays();\n for (const relay of relays) {\n await this.unsyncRelay(relay);\n }\n }\n}\n"],"names":["ChronicleService","_super","adapters","options","_this","call","this","memoryByRelay","Map","memoryBoundsByRelay","kind1066Subscriptions","syncInFlight","desiredSinceByRelay","storage","Route66EventStorage","cacheAdapter","autoSync","_a","syncRelays","_b","init","__extends","prototype","aggregateTimeSeries","points","bucketSize","fn","Array","isArray","length","Number","isFinite","buckets","_i","points_1","point","timestamp","bucketTimestamp","Math","floor","raw","value","bucket","get","values","push","eventId","set","aggregated","forEach","aggregatedValue","reduce","a","b","min","max","__assign","date","Date","toISOString","sort","normalizeRelayKey","relay","trimmed","trim","replace","normalizeSince","since","relayTagValues","withoutTrailingSlash","withTrailingSlash","concat","from","Set","relayTagQueryValues","updateMemoryBounds","relayKey","createdAt","existing","extractRelayKeyFromEvent","event","ev","kind","rTag","tags","find","t","undefined","rememberEvent","id","created_at","relayMap","DeltaEvent","KIND","backfillKind1066ForRelayTag","relayTagValue","PAGE_LIMIT","MAX_PAGES","targetSince","cursorUntil","until","now","pages","filter","kinds","limit","args","filters","relays","hash","deterministicHash","cache","stream","keepAlive","returnResults","events","fetchFromWebsocket","res","sent","console","warn","err_1","oldest","events_1","event_1","lastOldest","nextUntil","backfillKind1066ForRelay","bounds","tagValues","tagValues_1","tagValue","getMemoryStorage","bind","query","relayKeys","relayMaps","map","key","m","Boolean","size","byId","relayMaps_1","e","statusOnly","some","periods","allowed_1","has","String","slice","ready","_ready","syncRelay","_c","requestedSince","prevDesiredSince","desiredSince","effectiveSince","needsBackfill","needsLiveSubscription","inFlightNow","task","__awaiter","liveSince_1","callbacks","onevent","eventRelayKey","subscribe","catch","err","finally","delete","unsyncRelay","unsubscribe","getTimeSeriesData","memoryStorage","timeSeries","type","generateRttSeries","generateUptimeSeries","uptimeSeries","aggregate","getUptimeHistory","uptimeHistory","period","start","end","online","rtt","getDeltaEvents","isSyncing","getSyncedRelays","keys","unsyncAll","relays_1","Service"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("../_virtual/_tslib.cjs.js"),e=require("../core/WebsocketAdapter.cjs.js"),r=require("../managers/MonitorManager.cjs.js"),n=require("./Service.cjs.js"),o=require("../managers/StateManager.cjs.js"),i=function(n){function MonitorService(t){var e=n.call(this,t)||this;return e.DEFAULT_ENABLED_MONITORS=3,e._manager=r.MonitorManager.getInstance(),e.addRelay("route66","wss://relay.nostr.watch"),e.addRelay("route66","wss://relaypag.es"),e.addRelay("route66","wss://monitorlizard.nostr1.com/"),e.addRelay("userMeta","wss://purplepag.es"),e.addRelay("userMeta","wss://user.kindpag.es"),e.addRelay("userMeta","wss://relay.nostr.band"),e.init(),e}return t.__extends(MonitorService,n),MonitorService.prototype.init=function(){return t.__awaiter(this,void 0,void 0,(function(){var e;return t.__generator(this,(function(t){switch(t.label){case 0:return[4,null===(e=null==this?void 0:this.cacheAdapter)||void 0===e?void 0:e.ready()];case 1:return t.sent(),this._ready=!0,[2]}}))}))},MonitorService.prototype.ready=function(){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){switch(t.label){case 0:return this._ready?[3,2]:[4,new Promise((function(t){return setTimeout(t,100)}))];case 1:return t.sent(),[3,0];case 2:return[2]}}))}))},Object.defineProperty(MonitorService.prototype,"manager",{get:function(){return this._manager},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"monitors",{get:function(){return this.manager.monitorsMap},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"array",{get:function(){return this.manager.array},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"map",{get:function(){return this.manager.monitorsMap},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"sortedMonitors",{get:function(){return this.manager.sortedMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"enabledMonitors",{get:function(){return this.manager.enabledMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"activeEnabledMonitors",{get:function(){return this.manager.enabledActiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledMonitors",{get:function(){return this.manager.disabledMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledActiveMonitors",{get:function(){return this.manager.disabledActiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledInactiveMonitors",{get:function(){return this.manager.disabledInactiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"activeMonitors",{get:function(){return this.manager.activeMonitors},enumerable:!1,configurable:!0}),MonitorService.prototype.loadMonitors=function(t){this.manager.loadMonitors(t)},MonitorService.prototype.fetch=function(e,r){return t.__awaiter(this,void 0,void 0,(function(){var n,o,i,s;return t.__generator(this,(function(t){return n=e.filters,o=e.relays,i=e.options,s={filters:n,relays:o,options:i},[2,this._fetch(s,r)]}))}))},MonitorService.prototype.fetchOperatorRelaysNotOnline=function(e,r,n){return t.__awaiter(this,void 0,void 0,(function(){var o,i,s;return t.__generator(this,(function(a){return o=[],this.activeMonitors.forEach((function(r){o.push(t.__assign(t.__assign({},r.checkFilterNotOnline),{"#p":[e]}))})),i=(null==r?void 0:r.relays)||this.nip66Relays,s={stream:!1,cache:!0,returnResults:!0,keepAlive:!1},[2,this.subscribe({filters:o,relays:i,options:s},n)]}))}))},MonitorService.prototype.fetchOperatorRelaysDead=function(e,r,n){return t.__awaiter(this,void 0,void 0,(function(){var o,i,s;return t.__generator(this,(function(a){return o=[],this.activeMonitors.forEach((function(r){o.push(t.__assign(t.__assign({},r.checkFilterDead),{"#p":[e]}))})),i=(null==r?void 0:r.relays)||this.nip66Relays,s={stream:!1,cache:!0,returnResults:!0,keepAlive:!1},[2,this.fetch({filters:o,relays:i,options:s},n)]}))}))},MonitorService.prototype.sync=function(e,r){return t.__awaiter(this,void 0,void 0,(function(){var n,o,i,s,a,c,u,l=this;return t.__generator(this,(function(t){switch(t.label){case 0:return console.log("sync"),n=0,o=new Map,i=function(t){for(var e=0,r=t;e<r.length;e++){var n=r[e],i=n.pubkey,s=n.kind,a="".concat(i,":").concat(s),c=o.get(a)||0;o.set(a,c+1)}},s=function(t){var e;console.log("onevent",t),i([t]),null===(e=null==r?void 0:r.onevent)||void 0===e||e.call(r,t)},a=function(t){var e;console.log("onevents",t.length),i(t),null===(e=null==r?void 0:r.onevents)||void 0===e||e.call(r,t)},c=function(){var t;console.log("oneose"),l.updateCheckpoint(null==e?void 0:e.filters[n],o),n++,null===(t=null==r?void 0:r.oneose)||void 0===t||t.call(r)},console.log("sync: args",e),[4,this._fetch(e,{onevents:a,oneose:c,onevent:s})];case 1:return u=t.sent(),this.updateCheckpoints((null==e?void 0:e.filters)||[],o),[2,u]}}))}))},MonitorService.prototype.updateCheckpoint=function(t,e){for(var r=t.authors,n=t.kinds,o=t.since,i=t.until,s=0,a=r||[];s<a.length;s++){var c=a[s],u=this.monitors.get(c);if(u)for(var l=0,h=n||[];l<h.length;l++){var v=h[l],f="".concat(c,":").concat(v);(e.get(f)||0)>0&&(o&&u.setLastSync(v,"since",o),i&&u.setLastSync(v,"until",i))}else console.error("Monitor not found for pubkey: ".concat(c))}},MonitorService.prototype.updateCheckpoints=function(t,e){for(var r=0,n=Array.from(t);r<n.length;r++){var o=n[r];this.updateCheckpoint(o,e)}},MonitorService.prototype.modifyCacheFilters=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r=this;return t.__generator(this,(function(t){return[2,e.map((function(t){var e=t.authors,n=t.kinds,o=t.since;t.until;for(var i=0,s=e||[];i<s.length;i++)for(var a=s[i],c=r.monitors.get(a),u=0,l=n||[];u<l.length;u++){var h=l[u],v=null==c?void 0:c.getLastSync(h);(null==v?void 0:v.since)&&o&&v.since<o&&(t.since=v.since)}return t}))]}))}))},MonitorService.prototype.modifyWebsocketFilters=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r=this;return t.__generator(this,(function(t){return[2,e.map((function(t){var e=t.authors,n=t.kinds,o=t.since;t.until;for(var i=0,s=e||[];i<s.length;i++)for(var a=s[i],c=r.monitors.get(a),u=0,l=n||[];u<l.length;u++){var h=l[u],v=null==c?void 0:c.getLastSync(h);(null==v?void 0:v.until)&&o&&v.until>o&&(t.since=v.until)}return t}))]}))}))},MonitorService.prototype.bootstrapMonitors=function(){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){switch(t.label){case 0:return console.log("bootstrapMonitors"),[4,this.fetchMonitorRegistrations()];case 1:return t.sent(),[4,this.fetchMonitorMeta()];case 2:return t.sent(),[4,this.ensureMonitorsActive()];case 3:return t.sent(),this.maybeEnableMonitors(),[2]}}))}))},MonitorService.prototype.bootstrap=function(){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){switch(t.label){case 0:return[4,this.bootstrapMonitors()];case 1:return t.sent(),[4,this.bootstrapMonitorsChecks()];case 2:return t.sent(),[2]}}))}))},MonitorService.prototype.bootstrapMonitorsChecks=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r,n,i,s,a=this;return t.__generator(this,(function(t){switch(t.label){case 0:return console.log("bootstrapMonitorsChecks"),o.StateManager.emit("activity","monitors/bootstrap/checks","begin"),r=0,n=function(t){a.manager.handleEvent(t),r++,o.StateManager.emit("activity","monitors/bootstrap/checks","update",{value:r})},i=function(t){(null==t?void 0:t.length)?(t.forEach(n),o.StateManager.emit("activity","monitors/bootstrap/checks","update",{value:r})):console.warn("bootstrapMonitorsChecks: no events found")},[4,this.syncMonitorsChecks(e,!0,{onevent:n,onevents:i})];case 1:return s=t.sent(),o.StateManager.emit("activity","monitors/bootstrap/checks","finish",s),[2,s]}}))}))},MonitorService.prototype.fetchDisabledMonitorsChecks=function(){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,this.syncMonitorsChecks({cache:!0,returnResults:!0,keepAlive:!1,stream:!1,batch:20},!1)]}))}))},MonitorService.prototype.countMonitorChecksInCache=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r,n,o,i,s,a,c,u,l;return t.__generator(this,(function(t){switch(t.label){case 0:for(r=this.getMonitorCheckFilters(e),n=new Map,o=[],i=function(t){var e=null===(l=t.authors)||void 0===l?void 0:l[0];if(!e)return"continue";o.push(s.cacheAdapter.COUNT([t]).then((function(t){n.set(e,t)})))},s=this,a=0,c=r;a<c.length;a++)u=c[a],i(u);return[4,Promise.allSettled(o)];case 1:return t.sent(),[2,n]}}))}))},MonitorService.prototype.fetchMonitorRegistrations=function(){return t.__awaiter(this,void 0,void 0,(function(){var e,r,n,i,s=this;return t.__generator(this,(function(t){switch(t.label){case 0:return console.log("fetchMonitorRegistrations"),o.StateManager.emit("activity","monitors/bootstrap/registrations","begin"),e=0,r=function(t){10166===t.kind&&(s.manager.handleEvent(t),e++,o.StateManager.emit("activity","monitors/bootstrap/registrations","update",{value:e}))},n={filters:[{kinds:[10166]}],relays:this.nip66Relays,options:{cache:!0,returnResults:!0,keepAlive:!1,stream:!0}},console.log("fetchMonitorRegistrations: args",n),[4,this.subscribe(n,{onevent:r})];case 1:return i=t.sent(),o.StateManager.emit("activity","monitors/bootstrap/registrations","finish",i),[2]}}))}))},MonitorService.prototype.fetchMonitorMeta=function(){return t.__awaiter(this,void 0,void 0,(function(){var e,r,n,i,s,a,c,u=this;return t.__generator(this,(function(l){switch(l.label){case 0:return o.StateManager.emit("activity","monitors/bootstrap/meta","begin"),e=t.__spreadArray([],this.array.map((function(t){return t.registration})),!0).filter((function(t){return void 0!==t})),r=e.map((function(t){return t.pubkey})),n=0,i=function(t){u.manager.handleEvent(t),n++,o.StateManager.emit("activity","monitors/bootstrap/meta","update",{value:n})},s=function(t){t.forEach(i),n+=t.length,o.StateManager.emit("activity","monitors/bootstrap/meta","update",{value:n})},a=r.map((function(t){return{authors:[t],kinds:[0,10002]}})),c={filters:a,relays:this.userMetaRelays,options:{cache:!0,returnResults:!0,keepAlive:!1,stream:!0}},[4,this.subscribe(c,{onevent:i,onevents:s})];case 1:return l.sent(),this.array.forEach((function(t){t.relays.forEach((function(t){return u.addRelay("route66",t)}))})),o.StateManager.emit("activity","monitors/bootstrap/meta","finish"),[2]}}))}))},MonitorService.prototype.isMonitorActive=function(r){return t.__awaiter(this,void 0,void 0,(function(){var n,o,i,s,a,c;return t.__generator(this,(function(u){switch(u.label){case 0:return(n=this.monitors.get(r))?(o=t.__assign(t.__assign({},n.checkFilter),{limit:1}),i=[o],s=e.defaultWebsocketAdapterOptions,a=this.nip66Relays,[4,this.subscribe({filters:i,relays:a,options:s})]):[2,!1];case 1:return[2,(c=u.sent())instanceof Array?c.length>0:c]}}))}))},MonitorService.prototype.syncMonitorsChecks=function(e,r,n){return t.__awaiter(this,void 0,void 0,(function(){var i,s,a,c,u;return t.__generator(this,(function(l){switch(l.label){case 0:return console.log("syncMonitorsChecks"),i=this.getMonitorCheckFilters(r),console.log("syncMonitorsChecks: filters",i),s={cache:!0,returnResults:!0,keepAlive:!1,stream:!0,batch:100},a=function(t){var e;null===(e=null==n?void 0:n.onevent)||void 0===e||e.call(n,t),o.StateManager.emit("event",t)},c=function(t){var e;t.length,null===(e=null==n?void 0:n.onevents)||void 0===e||e.call(n,t),o.StateManager.emit("events",t)},u=this.nip66Relays,e=e?t.__assign(t.__assign({},s),e):t.__assign({},s),console.log("syncMonitorsChecks: options",e),[4,this.fetch({relays:u,filters:i,options:e},{onevent:a,onevents:c})];case 1:return[2,l.sent()]}}))}))},MonitorService.prototype.countMonitorChecksFromCache=function(e,r){return t.__awaiter(this,void 0,void 0,(function(){var r,n,o;return t.__generator(this,(function(i){return(r=this.monitors.get(e))?(n=t.__assign({},r.checkFilter),o=[n],[2,this.countFromCache(o)]):[2,0]}))}))},MonitorService.prototype.fetchMonitorChecksFromCache=function(e,r){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,this.fetchMonitorChecks(e,r,"cache")]}))}))},MonitorService.prototype.fetchMonitorChecksFromWebsocket=function(e,r){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,this.fetchMonitorChecks(e,r,"websocket")]}))}))},MonitorService.prototype.fetchMonitorChecks=function(r,n,o){return t.__awaiter(this,arguments,void 0,(function(r,n,o,i){var s,a,c,u,l;return t.__generator(this,(function(i){switch(i.label){case 0:if(!(s=this.monitors.get(r)))return[2,[]];switch(a=t.__assign({},s.checkFilter),c=[a],u=n?t.__assign(t.__assign(t.__assign({},e.defaultWebsocketAdapterOptions),n),{stream:!1}):e.defaultWebsocketAdapterOptions,l=this.nip66Relays,o){case"cache":return[3,1];case"websocket":return[3,2]}return[3,4];case 1:return[2,this.fetchFromCache(c)];case 2:return[4,this.fetchFromWebsocket({filters:c,relays:l,options:u})];case 3:return[2,i.sent()];case 4:return[2,this.fetch({filters:c,relays:l,options:u})]}}))}))},MonitorService.prototype.beginLiveSync=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r,n,i,s,a,c=this;return t.__generator(this,(function(t){return r=Math.round(Date.now()/1e3),n=[],this.enabledMonitors.forEach((function(t){var e,r=null===(e=t.getLastSync(30166))||void 0===e?void 0:e.until;n.push({kinds:[30166],authors:[t.pubkey],since:r})})),i=this.nip66Relays,s={cache:!0,keepAlive:!0,returnResults:!0,stream:!0,batch:10},a=function(t){var n,i=Math.round(Date.now()/1e3),s=r;t.forEach((function(t){var e=t.pubkey,r=t.created_at,n=void 0===r?0:r,o=c.monitors.get(e);o&&(n>(o.getLastSyncUntil(30166)||0)&&(o.setLastSync(30166,"since",i-o.frequency),o.setLastSync(30166,"until",n)));n>s&&(s=n)})),s>r&&o.StateManager.set("lastCompleteSync",i),null===(n=null==e?void 0:e.onevents)||void 0===n||n.call(e,t)},[2,this.subscribe({filters:n,relays:i,options:s,hash:"liveSyncMonitorsChecks"},{onevents:a})]}))}))},MonitorService.prototype.stopLiveSync=function(){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){switch(t.label){case 0:return[4,this.unsubscribe("liveSyncMonitorsChecks")];case 1:return t.sent(),[2]}}))}))},MonitorService.prototype.ensureMonitorsActive=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r,n,i,s,a,c,u,l,h,v,f,p,d,g,_,y,M;return t.__generator(this,(function(b){switch(b.label){case 0:console.log("ensureMonitorsActive"),o.StateManager.emit("activity","monitors/bootstrap/ensureActive","begin"),r=t.__spreadArray([],this.array,!0),e&&("string"==typeof e&&(e=[e]),r=r.filter((function(t){return e.includes(t.pubkey)}))),n=[],i=[],s=Math.round(Date.now()/1e3),r.forEach((function(e){n.push(t.__assign(t.__assign({},e.checkFilter),{until:s,limit:1}))})),a=function(t,e){for(var r=[],n=0;n<t.length;n+=e)r.push(t.slice(n,n+e));return r}(n,10),c=new Set,u={onevent:function(t){i.push(t),c.add(t.pubkey),o.StateManager.emit("activity","monitors/bootstrap/ensureActive","update",{value:c.size})}},l=this.nip66Relays,h=0,v=a,b.label=1;case 1:return h<v.length?(f=v[h],[4,this.websocketAdapter.subscribe({relays:l,filters:f,options:{cache:!1,returnResults:!0,keepAlive:!1,stream:!1}},u)]):[3,4];case 2:b.sent(),b.label=3;case 3:return h++,[3,1];case 4:for(p=0,d=i;p<d.length;p++)g=d[p],_=g.pubkey,y=g.created_at,(null==(M=this.monitors.get(_))?void 0:M.registration)&&y&&(M.lastActive=y);return o.StateManager.emit("activity","monitors/bootstrap/ensureActive","finish"),[2]}}))}))},MonitorService.prototype.maybeEnableMonitors=function(){if(!this.enabledMonitors.length)for(var t=Array.from(this.monitors.values()).filter((function(t){var e,r;return null===(r=null===(e=null==t?void 0:t.registration)||void 0===e?void 0:e.checks)||void 0===r?void 0:r.length})).sort((function(t,e){var r,n,o,i,s,a;if(t.active&&!e.active)return-1;if(!t.active&&e.active)return 1;var c=null!==(o=null===(n=null===(r=t.registration)||void 0===r?void 0:r.checks)||void 0===n?void 0:n.length)&&void 0!==o?o:0;return(null!==(a=null===(s=null===(i=e.registration)||void 0===i?void 0:i.checks)||void 0===s?void 0:s.length)&&void 0!==a?a:0)-c})),e=0;e<this.DEFAULT_ENABLED_MONITORS&&e<t.length;e++)try{t[e].enable()}catch(r){t[e].enabled=!0}},MonitorService.prototype.optimizeFilters=function(e){for(var r,n,o,i=new Map,s=0,a=e;s<a.length;s++){var c=a[s],u=JSON.stringify({since:null!==(r=c.since)&&void 0!==r?r:null,until:null!==(n=c.until)&&void 0!==n?n:null,kinds:null!==(o=c.kinds)&&void 0!==o?o:null});if(i.has(u)){var l=i.get(u);l.authors=t.__spreadArray([],Array.from(new Set(t.__spreadArray(t.__spreadArray([],l.authors||[],!0),c.authors||[],!0))),!0)}else i.set(u,t.__assign(t.__assign({},c),{authors:t.__spreadArray([],c.authors||[],!0)}))}return Array.from(i.values())},MonitorService.prototype.getMonitorCheckFilters=function(e){var r=[];void 0===e?r=this.enabledMonitors:"boolean"==typeof e&&(r=e?this.enabledMonitors:this.disabledActiveMonitors);var n=[],o=Math.round(Date.now()/1e3);return r.forEach((function(e){n.push(t.__assign(t.__assign({},e.checkFilter),{until:o}))})),n},MonitorService.prototype.modifyReturnedEvents=function(e){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(t){return[2,e]}))}))},MonitorService.prototype.removeStaleChecks=function(e){return t.__awaiter(this,void 0,void 0,(function(){var r,n,o,i,s,a,c,u;return t.__generator(this,(function(l){switch(l.label){case 0:r=Array.from(this.monitors.values()),n=[],o=[],i=function(r){var i,a,c;return t.__generator(this,(function(u){switch(u.label){case 0:return i=r.pubkey,r.frequency?(a=r.isOnlineAfter,n.push({authors:[i],until:a}),s.cacheAdapter.DELETE(n),[4,r.returnOnlineRelays(e.filter((function(t){return t.pubkey===r.pubkey})))]):[2,"continue"];case 1:return c=u.sent(),o=t.__spreadArray(t.__spreadArray([],o,!0),c,!0),[2]}}))},s=this,a=0,c=r,l.label=1;case 1:return a<c.length?(u=c[a],[5,i(u)]):[3,4];case 2:l.sent(),l.label=3;case 3:return a++,[3,1];case 4:return[2,o]}}))}))},MonitorService.prototype.getMonitor=function(e){return t.__awaiter(this,void 0,void 0,(function(){return t.__generator(this,(function(r){return this.monitors.has(e)||t.__spreadArray(t.__spreadArray(t.__spreadArray([],this.nip66Relays,!0),this.userMetaRelays,!0),this.getMonitorRelays(e),!0),[2,this.monitors.get(e)]}))}))},MonitorService.prototype.getMonitorRelays=function(t){var e;return(null===(e=this.monitors.get(t))||void 0===e?void 0:e.relays)||[]},MonitorService.prototype.getMonitorPubkeys=function(){return this.sortedMonitors.length?this.sortedMonitors.map((function(t){return t.pubkey})):(console.warn("MonitorService getMonitorPubkeys: no monitors"),[])},MonitorService}(n.Service);exports.MonitorService=i;
|
|
2
|
+
//# sourceMappingURL=MonitorService.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonitorService.cjs.js","sources":["../../../src/services/MonitorService.ts"],"sourcesContent":["import { defaultWebsocketAdapterOptions, SubscribeHandlers, WebsocketAdapterFetchOptions, WebsocketAdapterOptions, WebsocketRequestBody } from '@base/core/WebsocketAdapter';\nimport { IEvent } from '@base/interfaces';\nimport { IAdaptersArgument } from '@base/interfaces/IAdaptersArgument';\nimport { Monitor } from '@base/models';\nimport { Filter } from 'nostr-tools';\nimport { MonitorManager } from '../managers/MonitorManager';\nimport { Service } from './Service';\nimport { StateManager } from '@base/managers/StateManager';\nimport { MonitorRegistration } from '@base/models/MonitorRegistration';\n\nexport interface MonitorFetchOptions extends WebsocketRequestBody {\n alwaysCheckRelay?: boolean;\n}\n\nexport class MonitorService extends Service {\n private readonly DEFAULT_ENABLED_MONITORS: number = 3;\n private _manager: MonitorManager;\n\n constructor(adapters: IAdaptersArgument) {\n super(adapters)\n this._manager = MonitorManager.getInstance();\n this.addRelay('route66', 'wss://relay.nostr.watch');\n this.addRelay('route66', 'wss://relaypag.es');\n this.addRelay('route66', 'wss://monitorlizard.nostr1.com/')\n this.addRelay('userMeta', 'wss://purplepag.es');\n this.addRelay('userMeta', 'wss://user.kindpag.es');\n this.addRelay('userMeta', 'wss://relay.nostr.band');\n this.init()\n }\n\n async init(): Promise<void> {\n ////console.log('MonitorService init');\n await this?.cacheAdapter?.ready();\n ////console.log('cacheadapter ready')\n this._ready = true;\n }\n\n async ready(): Promise<void> {\n while(!this._ready){\n await new Promise(resolve => setTimeout(resolve, 100))\n }\n }\n\n get manager(){\n return this._manager;\n }\n \n\n get monitors() {\n return this.manager.monitorsMap;\n }\n\n get array(): Monitor[] {\n return this.manager.array;\n }\n\n get map(): Map<string, Monitor> {\n return this.manager.monitorsMap;\n }\n \n get sortedMonitors() {\n return this.manager.sortedMonitors;\n }\n\n get enabledMonitors() {\n return this.manager.enabledMonitors;\n } \n\n get activeEnabledMonitors() {\n return this.manager.enabledActiveMonitors;\n }\n\n get disabledMonitors() {\n return this.manager.disabledMonitors;\n }\n\n get disabledActiveMonitors() {\n return this.manager.disabledActiveMonitors;\n }\n\n get disabledInactiveMonitors() {\n return this.manager.disabledInactiveMonitors;\n }\n \n\n get activeMonitors() {\n return this.manager.activeMonitors;\n }\n\n loadMonitors(monitors: any[] ) {\n this.manager.loadMonitors(monitors);\n }\n\n async fetch(args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n const { filters, relays, options } = args;\n const message: WebsocketRequestBody = { filters, relays, options };\n return this._fetch(message, callbacks);\n }\n\n async fetchOperatorRelaysNotOnline(pubkey: string, args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n const filters: Filter[] = []\n this.activeMonitors.forEach((monitor) => {\n filters.push({...monitor.checkFilterNotOnline, \"#p\": [pubkey]})\n })\n let relays = args?.relays || this.nip66Relays;\n const options = {\n stream: false,\n cache: true,\n returnResults: true,\n keepAlive: false\n }\n return this.subscribe({ filters, relays, options }, callbacks);\n }\n\n async fetchOperatorRelaysDead(pubkey: string, args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n const filters: Filter[] = []\n this.activeMonitors.forEach((monitor) => {\n filters.push({...monitor.checkFilterDead, \"#p\": [pubkey]})\n })\n let relays = args?.relays || this.nip66Relays;\n const options = {\n stream: false,\n cache: true,\n returnResults: true,\n keepAlive: false\n }\n return this.fetch({ filters, relays, options }, callbacks);\n }\n \n async sync(args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n console.log('sync')\n let index = 0\n let checkCounts = new Map();\n const updateCounts = (events: IEvent[]) => {\n for(const event of events){\n const { pubkey, kind } = event;\n const key = `${pubkey}:${kind}`;\n const count = checkCounts.get(key) || 0;\n checkCounts.set(key, count + 1);\n }\n }\n const onevent = (event: IEvent) => { \n console.log('onevent', event)\n updateCounts([event]);\n callbacks?.onevent?.(event)\n };\n const onevents = (events: IEvent[]) => {\n console.log('onevents', events.length)\n updateCounts(events);\n callbacks?.onevents?.(events);\n }\n const oneose = () => { \n console.log('oneose')\n this.updateCheckpoint(args?.filters![index], checkCounts); \n index++;\n callbacks?.oneose?.();\n }\n console.log('sync: args', args)\n const results = await this._fetch(args, { onevents, oneose, onevent });\n this.updateCheckpoints(args?.filters || [], checkCounts);\n return results;\n }\n\n updateCheckpoint(filter: Filter, counts: Map<string, number>): void {\n const { authors, kinds, since, until } = filter;\n for(const pubkey of authors! || []){\n const monitor = this.monitors.get(pubkey);\n if (!monitor) {\n console.error(`Monitor not found for pubkey: ${pubkey}`);\n continue;\n }\n for(const kind of kinds! || []){\n const key = `${pubkey}:${kind}`;\n const count = counts.get(key) || 0;\n if(count > 0){\n if(since){\n monitor.setLastSync(kind, 'since', since);\n }\n if(until){\n monitor.setLastSync(kind, 'until', until);\n } \n }\n }\n }\n }\n\n updateCheckpoints(filters: Filter[], counts: Map<string, number>): void {\n for (const filter of Array.from(filters)) {\n this.updateCheckpoint(filter, counts)\n } \n }\n\n async modifyCacheFilters(filters: Filter[]): Promise<Filter[]> {\n return filters.map((filter) => {\n const { authors, kinds, since:requestedSince, until:requestedUntil } = filter;\n for(const pubkey of authors || []) {\n const monitor = this.monitors.get(pubkey);\n for(const kind of kinds || []) {\n const cachedRange = monitor?.getLastSync(kind);\n if(cachedRange?.since){\n if(requestedSince && cachedRange.since < requestedSince) {\n filter.since = cachedRange.since;\n }\n }\n else {\n ////console.log(`modifyCacheFilters: no cached range for kind: ${kind}`);\n }\n }\n }\n return filter;\n });\n }\n\n async modifyWebsocketFilters(filters: Filter[]): Promise<Filter[]> {\n return filters.map((filter) => {\n const { authors, kinds, since:requestedSince, until:requestedUntil } = filter;\n for(const pubkey of authors || []) {\n const monitor = this.monitors.get(pubkey);\n for(const kind of kinds || []) {\n const cachedRange = monitor?.getLastSync(kind);\n if(cachedRange?.until){\n if(requestedSince && cachedRange.until > requestedSince) {\n filter.since = cachedRange.until;\n }\n else {\n ////console.log(`modifyWebsocketFilters: since unchanged`);\n }\n }\n }\n }\n return filter;\n });\n }\n\n async bootstrapMonitors(): Promise<void> {\n console.log('bootstrapMonitors')\n await this.fetchMonitorRegistrations();\n await this.fetchMonitorMeta();\n await this.ensureMonitorsActive();\n this.maybeEnableMonitors();\n }\n\n async bootstrap(): Promise<void> {\n await this.bootstrapMonitors();\n await this.bootstrapMonitorsChecks();\n }\n\n async bootstrapMonitorsChecks(options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[] | boolean | undefined> { \n console.log('bootstrapMonitorsChecks')\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'begin')\n let value = 0\n const onevent = (event: IEvent) => {\n this.manager.handleEvent(event);\n value++\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'update', { value })\n }\n const onevents = (events: IEvent[]) => {\n if(!events?.length) {\n console.warn('bootstrapMonitorsChecks: no events found');\n return;\n }\n events.forEach(onevent)\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'update', { value })\n }\n const result = await this.syncMonitorsChecks(options, true, { onevent, onevents });\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'finish', result)\n return result;\n }\n\n async fetchDisabledMonitorsChecks(): Promise<IEvent[] | boolean | undefined> {\n return this.syncMonitorsChecks({\n cache: true,\n // NOTE: `syncMonitorsChecks()` always supplies callbacks to the underlying\n // websocket adapter, which forces `stream=true`. With `returnResults=false`\n // the worker will *not* forward streamed events back to the adapter, so the\n // callbacks never fire and the GUI never receives these checks (they only\n // land in cache). We need results forwarded for streaming callbacks.\n returnResults: true,\n keepAlive: false,\n stream: false,\n batch: 20\n }, false)\n }\n\n async countMonitorChecksInCache(enabled?: boolean): Promise<Map<string, number>> {\n const filters = this.getMonitorCheckFilters(enabled);\n const result = new Map<string, number>()\n const promises: Promise<void>[] = [];\n for(const filter of filters){\n const monitorPk = filter.authors?.[0];\n if(!monitorPk) continue;\n promises.push(\n this.cacheAdapter.COUNT([filter])\n .then( (count: number) => {\n result.set(monitorPk, count)\n })\n )\n }\n await Promise.allSettled(promises);\n return result;\n }\n \n async fetchMonitorRegistrations(): Promise<void> {\n console.log('fetchMonitorRegistrations')\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'begin')\n let totalFound = 0\n const onevent = (event: IEvent) => {\n // console.log('onevent', event)\n if(event.kind !== 10166) return;\n this.manager.handleEvent(event);\n totalFound++\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'update', { value: totalFound})\n }\n const args = {\n filters: [{kinds: [10166]}], \n relays: this.nip66Relays, \n options: {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: true,\n }\n }\n console.log('fetchMonitorRegistrations: args', args)\n const result = await this.subscribe( args, { onevent } );\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'finish', result)\n }\n\n async fetchMonitorMeta(): Promise<void> {\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'begin')\n const monitors = [...this.array.map((m) => m.registration)].filter(registration => typeof registration !== 'undefined');\n const authors = monitors.map((monitor: MonitorRegistration) => monitor.pubkey as string);\n let totalEvents = 0;\n const onevent = ( event: IEvent ) => {\n this.manager.handleEvent(event)\n totalEvents++\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'update', { value: totalEvents})\n };\n const onevents = (events: IEvent[]) => { \n events.forEach(onevent) \n totalEvents += events.length;\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'update', { value: totalEvents});\n };\n const filters = authors.map(author => ({ authors: [author], kinds: [0, 10002] }))\n const args = {\n filters, \n relays: this.userMetaRelays,\n options: {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: true\n }\n }\n await this.subscribe( args, { onevent, onevents } );\n this.array.forEach((monitor) => {\n monitor.relays.forEach((relay:string) => this.addRelay('route66', relay));\n });\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'finish')\n }\n\n async isMonitorActive(pubkey: string): Promise<boolean> {\n const monitor = this.monitors.get(pubkey);\n if (!monitor) return false;\n const checkFilter = {...monitor.checkFilter, limit: 1};\n const filters = [checkFilter];\n const options = defaultWebsocketAdapterOptions;\n const relays = this.nip66Relays;\n const result = await this.subscribe({ filters, relays, options });\n return (result instanceof Array)? result.length > 0: (result as unknown as boolean)\n }\n\n async syncMonitorsChecks(options?: Partial<WebsocketAdapterOptions>, enabled?: boolean, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n console.log('syncMonitorsChecks')\n const filters: Filter[] = this.getMonitorCheckFilters(enabled);\n console.log('syncMonitorsChecks: filters', filters)\n const defaultOptions = {\n cache: true,\n returnResults: true, \n keepAlive: false,\n stream: true,\n batch: 100\n }\n let count = 0;\n const onevent = (event: IEvent) => {\n callbacks?.onevent?.(event);\n StateManager.emit(`event`, event);\n // StateManager.emit(`event:${event.kind}`, event);\n };\n const onevents = (events: IEvent[]) => {\n // console.log('onevents', events.length)\n count += events.length;\n callbacks?.onevents?.(events);\n StateManager.emit(`events`, events);\n };\n const relays = this.nip66Relays;\n if(!options) {\n options = {...defaultOptions}\n }\n else {\n options = {...defaultOptions, ...options}\n }\n console.log('syncMonitorsChecks: options', options)\n const result: IEvent[] | boolean | undefined = await this.fetch( { relays, filters, options: options as WebsocketAdapterOptions }, { onevent, onevents } );\n // StateManager.emit('bootstrap:checks:complete')\n return result;\n }\n\n async countMonitorChecksFromCache(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<number> { \n const monitor = this.monitors.get(pubkey);\n if (!monitor) return 0;\n const checkFilter = {...monitor.checkFilter};\n const filters = [checkFilter];\n return this.countFromCache(filters)\n }\n\n async fetchMonitorChecksFromCache(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[]> { \n return this.fetchMonitorChecks(pubkey, _options, 'cache');\n }\n\n async fetchMonitorChecksFromWebsocket(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[]> {\n return this.fetchMonitorChecks(pubkey, _options, 'websocket');\n }\n\n async fetchMonitorChecks(\n pubkey: string, \n _options?: Partial<WebsocketAdapterOptions>, \n from?: 'cache' | 'websocket', \n sync: boolean = false): Promise<IEvent[]> \n { \n const monitor = this.monitors.get(pubkey);\n if (!monitor) return [];\n let checkFilter: Filter = {...monitor.checkFilter};\n // if(from === 'cache') {\n // checkFilter = {...monitor.checkFilterSync}\n // }\n // else {\n // checkFilter = {...monitor.checkFilter};\n // }\n const filters = [checkFilter];\n const options: WebsocketAdapterOptions = (\n _options? \n {...defaultWebsocketAdapterOptions, ..._options, stream: false}: \n defaultWebsocketAdapterOptions\n ) as WebsocketAdapterOptions;\n //\n const relays = this.nip66Relays;\n let result;\n switch(from){\n case 'cache':\n return this.fetchFromCache(filters);\n case 'websocket':\n return await this.fetchFromWebsocket({ filters, relays, options });\n default: \n return this.fetch({ filters, relays, options }) as Promise<IEvent[]>;\n }\n }\n\n async beginLiveSync(callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n //console.log('!!! beginning live sync')\n const startedAt: number = Math.round(Date.now()/1000);\n const filters: Filter[] = []\n this.enabledMonitors.forEach( (monitor: Monitor ) => {\n const lastSyncUntil = monitor.getLastSync(30166)?.until;\n filters.push({ kinds: [30166], authors: [monitor.pubkey], since: lastSyncUntil });\n }) \n const hash = 'liveSyncMonitorsChecks';\n const relays: string[] = this.nip66Relays;\n const options: WebsocketAdapterOptions = {\n cache: true,\n keepAlive: true,\n returnResults: true,\n stream: true,\n batch: 10\n }\n let highestTimestamp: number = 0;\n const onevents: SubscribeHandlers['onevents'] = (events: IEvent[]) => {\n // console.log('!!! liveSync: onevents', events?.length);\n \n const now = Math.round(Date.now() / 1000);\n let highestTimestamp = startedAt; // Initialize to startedAt to avoid unnecessary checks later\n \n events.forEach((event) => {\n let { pubkey, created_at = 0 } = event; \n created_at = created_at as number\n const monitor = this.monitors.get(pubkey);\n if (monitor) {\n const lastSyncUntil = monitor.getLastSyncUntil(30166) || 0;\n if (created_at > lastSyncUntil) {\n monitor.setLastSync(30166, 'since', now - monitor.frequency);\n monitor.setLastSync(30166, 'until', created_at);\n }\n }\n if (created_at > highestTimestamp) {\n highestTimestamp = created_at;\n }\n });\n if (highestTimestamp > startedAt) {\n StateManager.set('lastCompleteSync', now);\n }\n callbacks?.onevents?.(events);\n };\n //console.log('HASH', hash)\n return this.subscribe({ filters, relays, options, hash }, { onevents });\n }\n\n async stopLiveSync(): Promise<void> {\n //console.log('!!! stopping live sync')\n await this.unsubscribe('liveSyncMonitorsChecks');\n }\n\n async ensureMonitorsActive(pubkeys?: string | string[]): Promise<void> {\n console.log('ensureMonitorsActive')\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'begin');\n const MAX_FILTERS = 10; //TODO: try to derive from NIP-11\n\n let monitors = [...this.array];\n \n if (pubkeys) {\n if (typeof pubkeys === 'string') pubkeys = [pubkeys];\n monitors = monitors.filter((m) => (pubkeys as string[]).includes(m.pubkey));\n }\n \n const filters: Filter[] = [];\n const events: IEvent[] = [];\n const until = Math.round(Date.now() / 1000);\n \n monitors.forEach((monitor) => {\n filters.push({...monitor.checkFilter, until, limit: 1});\n });\n \n const chunkArray = (arr: Filter[], size: number): Filter[][] => {\n const chunks: Filter[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n };\n \n const filterChunks = chunkArray(filters, MAX_FILTERS);\n\n const activePubkeys = new Set<string>();\n \n const onevent = (event: IEvent) => {\n events.push(event);\n activePubkeys.add(event.pubkey);\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'update', { value: activePubkeys.size });\n };\n \n const callbacks: SubscribeHandlers = { onevent };\n const relays = this.nip66Relays;\n \n for (const filterChunk of filterChunks) {\n await this.websocketAdapter.subscribe(\n {\n relays,\n filters: filterChunk,\n options: {\n cache: false,\n returnResults: true,\n keepAlive: false,\n stream: false,\n },\n },\n callbacks\n );\n }\n\n for (const event of events) {\n const { pubkey, created_at } = event;\n const monitor = this.monitors.get(pubkey);\n if (monitor?.registration) {\n if (created_at) monitor.lastActive = created_at;\n }\n }\n\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'finish');\n }\n\n maybeEnableMonitors(): void {\n if(this.enabledMonitors.length) {\n return;\n }\n const monitorsWithRegistrations = Array.from(this.monitors.values())\n .filter(m => m?.registration?.checks?.length);\n\n // Prefer active monitors, then sort by number of checks\n const sorted = monitorsWithRegistrations.sort((a, b) => {\n // Active monitors first\n if (a.active && !b.active) return -1;\n if (!a.active && b.active) return 1;\n // Then by check count\n const aChecks = a.registration?.checks?.length ?? 0;\n const bChecks = b.registration?.checks?.length ?? 0;\n return bChecks - aChecks;\n });\n\n for(let i=0; i < this.DEFAULT_ENABLED_MONITORS && i < sorted.length; i++) {\n try {\n sorted[i].enable();\n } catch {\n sorted[i].enabled = true;\n }\n }\n }\n\n optimizeFilters(filters: Filter[]): Filter[] {\n const filterMap: Map<string, Filter> = new Map();\n \n for (const filter of filters) {\n const key = JSON.stringify({\n since: filter.since ?? null,\n until: filter.until ?? null,\n kinds: filter.kinds ?? null,\n });\n \n if (filterMap.has(key)) {\n const existingFilter = filterMap.get(key)!;\n existingFilter.authors = [...Array.from(new Set([...(existingFilter.authors || []), ...(filter.authors || [])]))];\n } else {\n filterMap.set(key, { ...filter, authors: [...(filter.authors || [])] });\n }\n }\n \n return Array.from(filterMap.values());\n }\n\n getMonitorCheckFilters(enabled?: boolean): Filter[] {\n let monitors: Monitor[] = [];\n if(enabled === undefined) {\n monitors = this.enabledMonitors; \n }\n else if(typeof enabled === 'boolean') {\n monitors = enabled? this.enabledMonitors: this.disabledActiveMonitors;\n }\n let filters: Filter[] = [];\n const until = Math.round(Date.now()/1000);\n monitors.forEach((monitor) => {\n filters.push({...monitor.checkFilter, until});\n });\n return filters;\n }\n\n async modifyReturnedEvents(events: IEvent[]): Promise<IEvent[]> {\n return events;\n // return this.removeStaleChecks(events); \n }\n\n async removeStaleChecks(events: IEvent[]): Promise<IEvent[]> {\n const monitors = Array.from(this.monitors.values());\n const deleteFilters: Filter[] = []\n let timelyChecks: IEvent[] = []\n for(const monitor of monitors){\n const {pubkey, frequency} = monitor;\n if(!frequency) {\n continue;\n }\n const until = monitor.isOnlineAfter;\n deleteFilters.push({ authors: [ pubkey ], until })\n this.cacheAdapter.DELETE(deleteFilters)\n const onlineRelays = await monitor.returnOnlineRelays(events.filter(event => event.pubkey === monitor.pubkey));\n timelyChecks = [...timelyChecks, ...onlineRelays]\n }\n return timelyChecks;\n }\n\n async getMonitor(pubkey: string): Promise<Monitor | undefined> {\n if (this.monitors.has(pubkey)) {\n return this.monitors.get(pubkey);\n }\n const monitorKinds = [10166, 0, 10002];\n const filter: Filter = { authors: [pubkey], kinds: monitorKinds };\n const options: WebsocketAdapterOptions = {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: false,\n };\n const relays: string[] = [\n ...this.nip66Relays,\n ...this.userMetaRelays,\n ...this.getMonitorRelays(pubkey),\n ];\n // const events = await this.fetch({filters: [filter], options, relays}, this.manager.handleEvent.bind(this.manager) );\n return this.monitors.get(pubkey);\n }\n\n // async getMonitorChecks(pubkey: string): Promise<ICheck[]> {\n // const monitor = await this.getMonitor(pubkey);\n // const filter: Filter = { authors: [pubkey], kinds: [30166] };\n // const options: WebsocketAdapterOptions = {\n // cache: true,\n // returnResults: true,\n // keepAlive: false,\n // stream: false,\n // };\n // const relays: string[] = [\n // ...this.nip66Relays,\n // ...this.userMetaRelays,\n // ...this.getMonitorRelays(pubkey),\n // ];\n // const events = await this.fetch({filters: [filter], options, relays});\n // const checks = events.map((event) => k30166ToICheck(event));\n // return checks\n // }\n\n getMonitorRelays(pubkey: string): string[] {\n return this.monitors.get(pubkey)?.relays || [];\n }\n\n getMonitorPubkeys(): string[] {\n if (!this.sortedMonitors.length) {\n console.warn('MonitorService getMonitorPubkeys: no monitors');\n return [];\n }\n ////console.log(`total monitors in array: ${this.sortedMonitors.length}`)\n return this.sortedMonitors.map((monitor) => monitor.pubkey);\n }\n}\n"],"names":["MonitorService","_super","adapters","_this","call","this","DEFAULT_ENABLED_MONITORS","_manager","MonitorManager","getInstance","addRelay","init","__extends","prototype","_a","cacheAdapter","ready","_b","sent","_ready","Promise","resolve","setTimeout","Object","defineProperty","get","manager","monitorsMap","array","sortedMonitors","enabledMonitors","enabledActiveMonitors","disabledMonitors","disabledActiveMonitors","disabledInactiveMonitors","activeMonitors","loadMonitors","monitors","fetch","args","callbacks","filters","relays","options","message","_fetch","fetchOperatorRelaysNotOnline","pubkey","forEach","monitor","push","__assign","checkFilterNotOnline","nip66Relays","stream","cache","returnResults","keepAlive","subscribe","fetchOperatorRelaysDead","checkFilterDead","sync","console","log","index","checkCounts","Map","updateCounts","events","_i","events_1","event_1","kind","key","concat","count","set","onevent","event","onevents","length","oneose","updateCheckpoint","results","updateCheckpoints","filter","counts","authors","kinds","since","until","_c","setLastSync","error","Array","from","modifyCacheFilters","map","requestedSince","cachedRange","getLastSync","modifyWebsocketFilters","bootstrapMonitors","fetchMonitorRegistrations","fetchMonitorMeta","ensureMonitorsActive","maybeEnableMonitors","bootstrap","bootstrapMonitorsChecks","StateManager","emit","value","handleEvent","warn","syncMonitorsChecks","result","fetchDisabledMonitorsChecks","batch","countMonitorChecksInCache","enabled","getMonitorCheckFilters","promises","monitorPk","this_1","COUNT","then","filters_1","allSettled","totalFound","__spreadArray","m","registration","totalEvents","author","userMetaRelays","relay","isMonitorActive","checkFilter","limit","defaultWebsocketAdapterOptions","defaultOptions","countMonitorChecksFromCache","_options","countFromCache","fetchMonitorChecksFromCache","fetchMonitorChecks","fetchMonitorChecksFromWebsocket","pubkey_1","_options_1","from_1","__awaiter","arguments","fetchFromCache","fetchFromWebsocket","beginLiveSync","startedAt","Math","round","Date","now","lastSyncUntil","highestTimestamp","created_at","getLastSyncUntil","frequency","hash","stopLiveSync","unsubscribe","pubkeys","includes","filterChunks","arr","size","chunks","i","slice","chunkArray","activePubkeys","Set","add","filterChunks_1","filterChunk","websocketAdapter","events_2","event_2","lastActive","sorted","values","checks","sort","a","b","active","aChecks","_f","_e","_d","enable","optimizeFilters","filterMap","filters_2","JSON","stringify","has","existingFilter","undefined","modifyReturnedEvents","removeStaleChecks","deleteFilters","timelyChecks","isOnlineAfter","this_2","DELETE","returnOnlineRelays","onlineRelays","monitors_1","getMonitor","getMonitorRelays","getMonitorPubkeys","Service"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{__extends as t,__awaiter as e,__generator as n,__assign as o,__spreadArray as r}from"../_virtual/_tslib.esm.js";import{defaultWebsocketAdapterOptions as i}from"../core/WebsocketAdapter.esm.js";import{MonitorManager as s}from"../managers/MonitorManager.esm.js";import{Service as c}from"./Service.esm.js";import{StateManager as a}from"../managers/StateManager.esm.js";var u=function(c){function MonitorService(t){var e=c.call(this,t)||this;return e.DEFAULT_ENABLED_MONITORS=3,e._manager=s.getInstance(),e.addRelay("route66","wss://relay.nostr.watch"),e.addRelay("route66","wss://relaypag.es"),e.addRelay("route66","wss://monitorlizard.nostr1.com/"),e.addRelay("userMeta","wss://purplepag.es"),e.addRelay("userMeta","wss://user.kindpag.es"),e.addRelay("userMeta","wss://relay.nostr.band"),e.init(),e}return t(MonitorService,c),MonitorService.prototype.init=function(){return e(this,void 0,void 0,(function(){var t;return n(this,(function(e){switch(e.label){case 0:return[4,null===(t=null==this?void 0:this.cacheAdapter)||void 0===t?void 0:t.ready()];case 1:return e.sent(),this._ready=!0,[2]}}))}))},MonitorService.prototype.ready=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return this._ready?[3,2]:[4,new Promise((function(t){return setTimeout(t,100)}))];case 1:return t.sent(),[3,0];case 2:return[2]}}))}))},Object.defineProperty(MonitorService.prototype,"manager",{get:function(){return this._manager},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"monitors",{get:function(){return this.manager.monitorsMap},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"array",{get:function(){return this.manager.array},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"map",{get:function(){return this.manager.monitorsMap},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"sortedMonitors",{get:function(){return this.manager.sortedMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"enabledMonitors",{get:function(){return this.manager.enabledMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"activeEnabledMonitors",{get:function(){return this.manager.enabledActiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledMonitors",{get:function(){return this.manager.disabledMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledActiveMonitors",{get:function(){return this.manager.disabledActiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"disabledInactiveMonitors",{get:function(){return this.manager.disabledInactiveMonitors},enumerable:!1,configurable:!0}),Object.defineProperty(MonitorService.prototype,"activeMonitors",{get:function(){return this.manager.activeMonitors},enumerable:!1,configurable:!0}),MonitorService.prototype.loadMonitors=function(t){this.manager.loadMonitors(t)},MonitorService.prototype.fetch=function(t,o){return e(this,void 0,void 0,(function(){var e,r,i,s;return n(this,(function(n){return e=t.filters,r=t.relays,i=t.options,s={filters:e,relays:r,options:i},[2,this._fetch(s,o)]}))}))},MonitorService.prototype.fetchOperatorRelaysNotOnline=function(t,r,i){return e(this,void 0,void 0,(function(){var e,s,c;return n(this,(function(n){return e=[],this.activeMonitors.forEach((function(n){e.push(o(o({},n.checkFilterNotOnline),{"#p":[t]}))})),s=(null==r?void 0:r.relays)||this.nip66Relays,c={stream:!1,cache:!0,returnResults:!0,keepAlive:!1},[2,this.subscribe({filters:e,relays:s,options:c},i)]}))}))},MonitorService.prototype.fetchOperatorRelaysDead=function(t,r,i){return e(this,void 0,void 0,(function(){var e,s,c;return n(this,(function(n){return e=[],this.activeMonitors.forEach((function(n){e.push(o(o({},n.checkFilterDead),{"#p":[t]}))})),s=(null==r?void 0:r.relays)||this.nip66Relays,c={stream:!1,cache:!0,returnResults:!0,keepAlive:!1},[2,this.fetch({filters:e,relays:s,options:c},i)]}))}))},MonitorService.prototype.sync=function(t,o){return e(this,void 0,void 0,(function(){var e,r,i,s,c,a,u,l=this;return n(this,(function(n){switch(n.label){case 0:return console.log("sync"),e=0,r=new Map,i=function(t){for(var e=0,n=t;e<n.length;e++){var o=n[e],i=o.pubkey,s=o.kind,c="".concat(i,":").concat(s),a=r.get(c)||0;r.set(c,a+1)}},s=function(t){var e;console.log("onevent",t),i([t]),null===(e=null==o?void 0:o.onevent)||void 0===e||e.call(o,t)},c=function(t){var e;console.log("onevents",t.length),i(t),null===(e=null==o?void 0:o.onevents)||void 0===e||e.call(o,t)},a=function(){var n;console.log("oneose"),l.updateCheckpoint(null==t?void 0:t.filters[e],r),e++,null===(n=null==o?void 0:o.oneose)||void 0===n||n.call(o)},console.log("sync: args",t),[4,this._fetch(t,{onevents:c,oneose:a,onevent:s})];case 1:return u=n.sent(),this.updateCheckpoints((null==t?void 0:t.filters)||[],r),[2,u]}}))}))},MonitorService.prototype.updateCheckpoint=function(t,e){for(var n=t.authors,o=t.kinds,r=t.since,i=t.until,s=0,c=n||[];s<c.length;s++){var a=c[s],u=this.monitors.get(a);if(u)for(var l=0,h=o||[];l<h.length;l++){var v=h[l],f="".concat(a,":").concat(v);(e.get(f)||0)>0&&(r&&u.setLastSync(v,"since",r),i&&u.setLastSync(v,"until",i))}else console.error("Monitor not found for pubkey: ".concat(a))}},MonitorService.prototype.updateCheckpoints=function(t,e){for(var n=0,o=Array.from(t);n<o.length;n++){var r=o[n];this.updateCheckpoint(r,e)}},MonitorService.prototype.modifyCacheFilters=function(t){return e(this,void 0,void 0,(function(){var e=this;return n(this,(function(n){return[2,t.map((function(t){var n=t.authors,o=t.kinds,r=t.since;t.until;for(var i=0,s=n||[];i<s.length;i++)for(var c=s[i],a=e.monitors.get(c),u=0,l=o||[];u<l.length;u++){var h=l[u],v=null==a?void 0:a.getLastSync(h);(null==v?void 0:v.since)&&r&&v.since<r&&(t.since=v.since)}return t}))]}))}))},MonitorService.prototype.modifyWebsocketFilters=function(t){return e(this,void 0,void 0,(function(){var e=this;return n(this,(function(n){return[2,t.map((function(t){var n=t.authors,o=t.kinds,r=t.since;t.until;for(var i=0,s=n||[];i<s.length;i++)for(var c=s[i],a=e.monitors.get(c),u=0,l=o||[];u<l.length;u++){var h=l[u],v=null==a?void 0:a.getLastSync(h);(null==v?void 0:v.until)&&r&&v.until>r&&(t.since=v.until)}return t}))]}))}))},MonitorService.prototype.bootstrapMonitors=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return console.log("bootstrapMonitors"),[4,this.fetchMonitorRegistrations()];case 1:return t.sent(),[4,this.fetchMonitorMeta()];case 2:return t.sent(),[4,this.ensureMonitorsActive()];case 3:return t.sent(),this.maybeEnableMonitors(),[2]}}))}))},MonitorService.prototype.bootstrap=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,this.bootstrapMonitors()];case 1:return t.sent(),[4,this.bootstrapMonitorsChecks()];case 2:return t.sent(),[2]}}))}))},MonitorService.prototype.bootstrapMonitorsChecks=function(t){return e(this,void 0,void 0,(function(){var e,o,r,i,s=this;return n(this,(function(n){switch(n.label){case 0:return console.log("bootstrapMonitorsChecks"),a.emit("activity","monitors/bootstrap/checks","begin"),e=0,o=function(t){s.manager.handleEvent(t),e++,a.emit("activity","monitors/bootstrap/checks","update",{value:e})},r=function(t){(null==t?void 0:t.length)?(t.forEach(o),a.emit("activity","monitors/bootstrap/checks","update",{value:e})):console.warn("bootstrapMonitorsChecks: no events found")},[4,this.syncMonitorsChecks(t,!0,{onevent:o,onevents:r})];case 1:return i=n.sent(),a.emit("activity","monitors/bootstrap/checks","finish",i),[2,i]}}))}))},MonitorService.prototype.fetchDisabledMonitorsChecks=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){return[2,this.syncMonitorsChecks({cache:!0,returnResults:!0,keepAlive:!1,stream:!1,batch:20},!1)]}))}))},MonitorService.prototype.countMonitorChecksInCache=function(t){return e(this,void 0,void 0,(function(){var e,o,r,i,s,c,a,u,l;return n(this,(function(n){switch(n.label){case 0:for(e=this.getMonitorCheckFilters(t),o=new Map,r=[],i=function(t){var e=null===(l=t.authors)||void 0===l?void 0:l[0];if(!e)return"continue";r.push(s.cacheAdapter.COUNT([t]).then((function(t){o.set(e,t)})))},s=this,c=0,a=e;c<a.length;c++)u=a[c],i(u);return[4,Promise.allSettled(r)];case 1:return n.sent(),[2,o]}}))}))},MonitorService.prototype.fetchMonitorRegistrations=function(){return e(this,void 0,void 0,(function(){var t,e,o,r,i=this;return n(this,(function(n){switch(n.label){case 0:return console.log("fetchMonitorRegistrations"),a.emit("activity","monitors/bootstrap/registrations","begin"),t=0,e=function(e){10166===e.kind&&(i.manager.handleEvent(e),t++,a.emit("activity","monitors/bootstrap/registrations","update",{value:t}))},o={filters:[{kinds:[10166]}],relays:this.nip66Relays,options:{cache:!0,returnResults:!0,keepAlive:!1,stream:!0}},console.log("fetchMonitorRegistrations: args",o),[4,this.subscribe(o,{onevent:e})];case 1:return r=n.sent(),a.emit("activity","monitors/bootstrap/registrations","finish",r),[2]}}))}))},MonitorService.prototype.fetchMonitorMeta=function(){return e(this,void 0,void 0,(function(){var t,e,o,i,s,c,u,l=this;return n(this,(function(n){switch(n.label){case 0:return a.emit("activity","monitors/bootstrap/meta","begin"),t=r([],this.array.map((function(t){return t.registration})),!0).filter((function(t){return void 0!==t})),e=t.map((function(t){return t.pubkey})),o=0,i=function(t){l.manager.handleEvent(t),o++,a.emit("activity","monitors/bootstrap/meta","update",{value:o})},s=function(t){t.forEach(i),o+=t.length,a.emit("activity","monitors/bootstrap/meta","update",{value:o})},c=e.map((function(t){return{authors:[t],kinds:[0,10002]}})),u={filters:c,relays:this.userMetaRelays,options:{cache:!0,returnResults:!0,keepAlive:!1,stream:!0}},[4,this.subscribe(u,{onevent:i,onevents:s})];case 1:return n.sent(),this.array.forEach((function(t){t.relays.forEach((function(t){return l.addRelay("route66",t)}))})),a.emit("activity","monitors/bootstrap/meta","finish"),[2]}}))}))},MonitorService.prototype.isMonitorActive=function(t){return e(this,void 0,void 0,(function(){var e,r,s,c,a,u;return n(this,(function(n){switch(n.label){case 0:return(e=this.monitors.get(t))?(r=o(o({},e.checkFilter),{limit:1}),s=[r],c=i,a=this.nip66Relays,[4,this.subscribe({filters:s,relays:a,options:c})]):[2,!1];case 1:return[2,(u=n.sent())instanceof Array?u.length>0:u]}}))}))},MonitorService.prototype.syncMonitorsChecks=function(t,r,i){return e(this,void 0,void 0,(function(){var e,s,c,u,l;return n(this,(function(n){switch(n.label){case 0:return console.log("syncMonitorsChecks"),e=this.getMonitorCheckFilters(r),console.log("syncMonitorsChecks: filters",e),s={cache:!0,returnResults:!0,keepAlive:!1,stream:!0,batch:100},c=function(t){var e;null===(e=null==i?void 0:i.onevent)||void 0===e||e.call(i,t),a.emit("event",t)},u=function(t){var e;t.length,null===(e=null==i?void 0:i.onevents)||void 0===e||e.call(i,t),a.emit("events",t)},l=this.nip66Relays,t=t?o(o({},s),t):o({},s),console.log("syncMonitorsChecks: options",t),[4,this.fetch({relays:l,filters:e,options:t},{onevent:c,onevents:u})];case 1:return[2,n.sent()]}}))}))},MonitorService.prototype.countMonitorChecksFromCache=function(t,r){return e(this,void 0,void 0,(function(){var e,r,i;return n(this,(function(n){return(e=this.monitors.get(t))?(r=o({},e.checkFilter),i=[r],[2,this.countFromCache(i)]):[2,0]}))}))},MonitorService.prototype.fetchMonitorChecksFromCache=function(t,o){return e(this,void 0,void 0,(function(){return n(this,(function(e){return[2,this.fetchMonitorChecks(t,o,"cache")]}))}))},MonitorService.prototype.fetchMonitorChecksFromWebsocket=function(t,o){return e(this,void 0,void 0,(function(){return n(this,(function(e){return[2,this.fetchMonitorChecks(t,o,"websocket")]}))}))},MonitorService.prototype.fetchMonitorChecks=function(t,r,s){return e(this,arguments,void 0,(function(t,e,r,s){var c,a,u,l,h;return n(this,(function(n){switch(n.label){case 0:if(!(c=this.monitors.get(t)))return[2,[]];switch(a=o({},c.checkFilter),u=[a],l=e?o(o(o({},i),e),{stream:!1}):i,h=this.nip66Relays,r){case"cache":return[3,1];case"websocket":return[3,2]}return[3,4];case 1:return[2,this.fetchFromCache(u)];case 2:return[4,this.fetchFromWebsocket({filters:u,relays:h,options:l})];case 3:return[2,n.sent()];case 4:return[2,this.fetch({filters:u,relays:h,options:l})]}}))}))},MonitorService.prototype.beginLiveSync=function(t){return e(this,void 0,void 0,(function(){var e,o,r,i,s,c=this;return n(this,(function(n){return e=Math.round(Date.now()/1e3),o=[],this.enabledMonitors.forEach((function(t){var e,n=null===(e=t.getLastSync(30166))||void 0===e?void 0:e.until;o.push({kinds:[30166],authors:[t.pubkey],since:n})})),r=this.nip66Relays,i={cache:!0,keepAlive:!0,returnResults:!0,stream:!0,batch:10},s=function(n){var o,r=Math.round(Date.now()/1e3),i=e;n.forEach((function(t){var e=t.pubkey,n=t.created_at,o=void 0===n?0:n,s=c.monitors.get(e);s&&(o>(s.getLastSyncUntil(30166)||0)&&(s.setLastSync(30166,"since",r-s.frequency),s.setLastSync(30166,"until",o)));o>i&&(i=o)})),i>e&&a.set("lastCompleteSync",r),null===(o=null==t?void 0:t.onevents)||void 0===o||o.call(t,n)},[2,this.subscribe({filters:o,relays:r,options:i,hash:"liveSyncMonitorsChecks"},{onevents:s})]}))}))},MonitorService.prototype.stopLiveSync=function(){return e(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,this.unsubscribe("liveSyncMonitorsChecks")];case 1:return t.sent(),[2]}}))}))},MonitorService.prototype.ensureMonitorsActive=function(t){return e(this,void 0,void 0,(function(){var e,i,s,c,u,l,h,v,f,p,d,y,b,M,m,g,k;return n(this,(function(n){switch(n.label){case 0:console.log("ensureMonitorsActive"),a.emit("activity","monitors/bootstrap/ensureActive","begin"),e=r([],this.array,!0),t&&("string"==typeof t&&(t=[t]),e=e.filter((function(e){return t.includes(e.pubkey)}))),i=[],s=[],c=Math.round(Date.now()/1e3),e.forEach((function(t){i.push(o(o({},t.checkFilter),{until:c,limit:1}))})),u=function(t,e){for(var n=[],o=0;o<t.length;o+=e)n.push(t.slice(o,o+e));return n}(i,10),l=new Set,h={onevent:function(t){s.push(t),l.add(t.pubkey),a.emit("activity","monitors/bootstrap/ensureActive","update",{value:l.size})}},v=this.nip66Relays,f=0,p=u,n.label=1;case 1:return f<p.length?(d=p[f],[4,this.websocketAdapter.subscribe({relays:v,filters:d,options:{cache:!1,returnResults:!0,keepAlive:!1,stream:!1}},h)]):[3,4];case 2:n.sent(),n.label=3;case 3:return f++,[3,1];case 4:for(y=0,b=s;y<b.length;y++)M=b[y],m=M.pubkey,g=M.created_at,(null==(k=this.monitors.get(m))?void 0:k.registration)&&g&&(k.lastActive=g);return a.emit("activity","monitors/bootstrap/ensureActive","finish"),[2]}}))}))},MonitorService.prototype.maybeEnableMonitors=function(){if(!this.enabledMonitors.length)for(var t=Array.from(this.monitors.values()).filter((function(t){var e,n;return null===(n=null===(e=null==t?void 0:t.registration)||void 0===e?void 0:e.checks)||void 0===n?void 0:n.length})).sort((function(t,e){var n,o,r,i,s,c;if(t.active&&!e.active)return-1;if(!t.active&&e.active)return 1;var a=null!==(r=null===(o=null===(n=t.registration)||void 0===n?void 0:n.checks)||void 0===o?void 0:o.length)&&void 0!==r?r:0;return(null!==(c=null===(s=null===(i=e.registration)||void 0===i?void 0:i.checks)||void 0===s?void 0:s.length)&&void 0!==c?c:0)-a})),e=0;e<this.DEFAULT_ENABLED_MONITORS&&e<t.length;e++)try{t[e].enable()}catch(n){t[e].enabled=!0}},MonitorService.prototype.optimizeFilters=function(t){for(var e,n,i,s=new Map,c=0,a=t;c<a.length;c++){var u=a[c],l=JSON.stringify({since:null!==(e=u.since)&&void 0!==e?e:null,until:null!==(n=u.until)&&void 0!==n?n:null,kinds:null!==(i=u.kinds)&&void 0!==i?i:null});if(s.has(l)){var h=s.get(l);h.authors=r([],Array.from(new Set(r(r([],h.authors||[],!0),u.authors||[],!0))),!0)}else s.set(l,o(o({},u),{authors:r([],u.authors||[],!0)}))}return Array.from(s.values())},MonitorService.prototype.getMonitorCheckFilters=function(t){var e=[];void 0===t?e=this.enabledMonitors:"boolean"==typeof t&&(e=t?this.enabledMonitors:this.disabledActiveMonitors);var n=[],r=Math.round(Date.now()/1e3);return e.forEach((function(t){n.push(o(o({},t.checkFilter),{until:r}))})),n},MonitorService.prototype.modifyReturnedEvents=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){return[2,t]}))}))},MonitorService.prototype.removeStaleChecks=function(t){return e(this,void 0,void 0,(function(){var e,o,i,s,c,a,u,l;return n(this,(function(h){switch(h.label){case 0:e=Array.from(this.monitors.values()),o=[],i=[],s=function(e){var s,a,u;return n(this,(function(n){switch(n.label){case 0:return s=e.pubkey,e.frequency?(a=e.isOnlineAfter,o.push({authors:[s],until:a}),c.cacheAdapter.DELETE(o),[4,e.returnOnlineRelays(t.filter((function(t){return t.pubkey===e.pubkey})))]):[2,"continue"];case 1:return u=n.sent(),i=r(r([],i,!0),u,!0),[2]}}))},c=this,a=0,u=e,h.label=1;case 1:return a<u.length?(l=u[a],[5,s(l)]):[3,4];case 2:h.sent(),h.label=3;case 3:return a++,[3,1];case 4:return[2,i]}}))}))},MonitorService.prototype.getMonitor=function(t){return e(this,void 0,void 0,(function(){return n(this,(function(e){return this.monitors.has(t)||r(r(r([],this.nip66Relays,!0),this.userMetaRelays,!0),this.getMonitorRelays(t),!0),[2,this.monitors.get(t)]}))}))},MonitorService.prototype.getMonitorRelays=function(t){var e;return(null===(e=this.monitors.get(t))||void 0===e?void 0:e.relays)||[]},MonitorService.prototype.getMonitorPubkeys=function(){return this.sortedMonitors.length?this.sortedMonitors.map((function(t){return t.pubkey})):(console.warn("MonitorService getMonitorPubkeys: no monitors"),[])},MonitorService}(c);export{u as MonitorService};
|
|
2
|
+
//# sourceMappingURL=MonitorService.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MonitorService.esm.js","sources":["../../../src/services/MonitorService.ts"],"sourcesContent":["import { defaultWebsocketAdapterOptions, SubscribeHandlers, WebsocketAdapterFetchOptions, WebsocketAdapterOptions, WebsocketRequestBody } from '@base/core/WebsocketAdapter';\nimport { IEvent } from '@base/interfaces';\nimport { IAdaptersArgument } from '@base/interfaces/IAdaptersArgument';\nimport { Monitor } from '@base/models';\nimport { Filter } from 'nostr-tools';\nimport { MonitorManager } from '../managers/MonitorManager';\nimport { Service } from './Service';\nimport { StateManager } from '@base/managers/StateManager';\nimport { MonitorRegistration } from '@base/models/MonitorRegistration';\n\nexport interface MonitorFetchOptions extends WebsocketRequestBody {\n alwaysCheckRelay?: boolean;\n}\n\nexport class MonitorService extends Service {\n private readonly DEFAULT_ENABLED_MONITORS: number = 3;\n private _manager: MonitorManager;\n\n constructor(adapters: IAdaptersArgument) {\n super(adapters)\n this._manager = MonitorManager.getInstance();\n this.addRelay('route66', 'wss://relay.nostr.watch');\n this.addRelay('route66', 'wss://relaypag.es');\n this.addRelay('route66', 'wss://monitorlizard.nostr1.com/')\n this.addRelay('userMeta', 'wss://purplepag.es');\n this.addRelay('userMeta', 'wss://user.kindpag.es');\n this.addRelay('userMeta', 'wss://relay.nostr.band');\n this.init()\n }\n\n async init(): Promise<void> {\n ////console.log('MonitorService init');\n await this?.cacheAdapter?.ready();\n ////console.log('cacheadapter ready')\n this._ready = true;\n }\n\n async ready(): Promise<void> {\n while(!this._ready){\n await new Promise(resolve => setTimeout(resolve, 100))\n }\n }\n\n get manager(){\n return this._manager;\n }\n \n\n get monitors() {\n return this.manager.monitorsMap;\n }\n\n get array(): Monitor[] {\n return this.manager.array;\n }\n\n get map(): Map<string, Monitor> {\n return this.manager.monitorsMap;\n }\n \n get sortedMonitors() {\n return this.manager.sortedMonitors;\n }\n\n get enabledMonitors() {\n return this.manager.enabledMonitors;\n } \n\n get activeEnabledMonitors() {\n return this.manager.enabledActiveMonitors;\n }\n\n get disabledMonitors() {\n return this.manager.disabledMonitors;\n }\n\n get disabledActiveMonitors() {\n return this.manager.disabledActiveMonitors;\n }\n\n get disabledInactiveMonitors() {\n return this.manager.disabledInactiveMonitors;\n }\n \n\n get activeMonitors() {\n return this.manager.activeMonitors;\n }\n\n loadMonitors(monitors: any[] ) {\n this.manager.loadMonitors(monitors);\n }\n\n async fetch(args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n const { filters, relays, options } = args;\n const message: WebsocketRequestBody = { filters, relays, options };\n return this._fetch(message, callbacks);\n }\n\n async fetchOperatorRelaysNotOnline(pubkey: string, args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n const filters: Filter[] = []\n this.activeMonitors.forEach((monitor) => {\n filters.push({...monitor.checkFilterNotOnline, \"#p\": [pubkey]})\n })\n let relays = args?.relays || this.nip66Relays;\n const options = {\n stream: false,\n cache: true,\n returnResults: true,\n keepAlive: false\n }\n return this.subscribe({ filters, relays, options }, callbacks);\n }\n\n async fetchOperatorRelaysDead(pubkey: string, args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n const filters: Filter[] = []\n this.activeMonitors.forEach((monitor) => {\n filters.push({...monitor.checkFilterDead, \"#p\": [pubkey]})\n })\n let relays = args?.relays || this.nip66Relays;\n const options = {\n stream: false,\n cache: true,\n returnResults: true,\n keepAlive: false\n }\n return this.fetch({ filters, relays, options }, callbacks);\n }\n \n async sync(args: WebsocketRequestBody, callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n console.log('sync')\n let index = 0\n let checkCounts = new Map();\n const updateCounts = (events: IEvent[]) => {\n for(const event of events){\n const { pubkey, kind } = event;\n const key = `${pubkey}:${kind}`;\n const count = checkCounts.get(key) || 0;\n checkCounts.set(key, count + 1);\n }\n }\n const onevent = (event: IEvent) => { \n console.log('onevent', event)\n updateCounts([event]);\n callbacks?.onevent?.(event)\n };\n const onevents = (events: IEvent[]) => {\n console.log('onevents', events.length)\n updateCounts(events);\n callbacks?.onevents?.(events);\n }\n const oneose = () => { \n console.log('oneose')\n this.updateCheckpoint(args?.filters![index], checkCounts); \n index++;\n callbacks?.oneose?.();\n }\n console.log('sync: args', args)\n const results = await this._fetch(args, { onevents, oneose, onevent });\n this.updateCheckpoints(args?.filters || [], checkCounts);\n return results;\n }\n\n updateCheckpoint(filter: Filter, counts: Map<string, number>): void {\n const { authors, kinds, since, until } = filter;\n for(const pubkey of authors! || []){\n const monitor = this.monitors.get(pubkey);\n if (!monitor) {\n console.error(`Monitor not found for pubkey: ${pubkey}`);\n continue;\n }\n for(const kind of kinds! || []){\n const key = `${pubkey}:${kind}`;\n const count = counts.get(key) || 0;\n if(count > 0){\n if(since){\n monitor.setLastSync(kind, 'since', since);\n }\n if(until){\n monitor.setLastSync(kind, 'until', until);\n } \n }\n }\n }\n }\n\n updateCheckpoints(filters: Filter[], counts: Map<string, number>): void {\n for (const filter of Array.from(filters)) {\n this.updateCheckpoint(filter, counts)\n } \n }\n\n async modifyCacheFilters(filters: Filter[]): Promise<Filter[]> {\n return filters.map((filter) => {\n const { authors, kinds, since:requestedSince, until:requestedUntil } = filter;\n for(const pubkey of authors || []) {\n const monitor = this.monitors.get(pubkey);\n for(const kind of kinds || []) {\n const cachedRange = monitor?.getLastSync(kind);\n if(cachedRange?.since){\n if(requestedSince && cachedRange.since < requestedSince) {\n filter.since = cachedRange.since;\n }\n }\n else {\n ////console.log(`modifyCacheFilters: no cached range for kind: ${kind}`);\n }\n }\n }\n return filter;\n });\n }\n\n async modifyWebsocketFilters(filters: Filter[]): Promise<Filter[]> {\n return filters.map((filter) => {\n const { authors, kinds, since:requestedSince, until:requestedUntil } = filter;\n for(const pubkey of authors || []) {\n const monitor = this.monitors.get(pubkey);\n for(const kind of kinds || []) {\n const cachedRange = monitor?.getLastSync(kind);\n if(cachedRange?.until){\n if(requestedSince && cachedRange.until > requestedSince) {\n filter.since = cachedRange.until;\n }\n else {\n ////console.log(`modifyWebsocketFilters: since unchanged`);\n }\n }\n }\n }\n return filter;\n });\n }\n\n async bootstrapMonitors(): Promise<void> {\n console.log('bootstrapMonitors')\n await this.fetchMonitorRegistrations();\n await this.fetchMonitorMeta();\n await this.ensureMonitorsActive();\n this.maybeEnableMonitors();\n }\n\n async bootstrap(): Promise<void> {\n await this.bootstrapMonitors();\n await this.bootstrapMonitorsChecks();\n }\n\n async bootstrapMonitorsChecks(options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[] | boolean | undefined> { \n console.log('bootstrapMonitorsChecks')\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'begin')\n let value = 0\n const onevent = (event: IEvent) => {\n this.manager.handleEvent(event);\n value++\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'update', { value })\n }\n const onevents = (events: IEvent[]) => {\n if(!events?.length) {\n console.warn('bootstrapMonitorsChecks: no events found');\n return;\n }\n events.forEach(onevent)\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'update', { value })\n }\n const result = await this.syncMonitorsChecks(options, true, { onevent, onevents });\n StateManager.emit('activity', 'monitors/bootstrap/checks', 'finish', result)\n return result;\n }\n\n async fetchDisabledMonitorsChecks(): Promise<IEvent[] | boolean | undefined> {\n return this.syncMonitorsChecks({\n cache: true,\n // NOTE: `syncMonitorsChecks()` always supplies callbacks to the underlying\n // websocket adapter, which forces `stream=true`. With `returnResults=false`\n // the worker will *not* forward streamed events back to the adapter, so the\n // callbacks never fire and the GUI never receives these checks (they only\n // land in cache). We need results forwarded for streaming callbacks.\n returnResults: true,\n keepAlive: false,\n stream: false,\n batch: 20\n }, false)\n }\n\n async countMonitorChecksInCache(enabled?: boolean): Promise<Map<string, number>> {\n const filters = this.getMonitorCheckFilters(enabled);\n const result = new Map<string, number>()\n const promises: Promise<void>[] = [];\n for(const filter of filters){\n const monitorPk = filter.authors?.[0];\n if(!monitorPk) continue;\n promises.push(\n this.cacheAdapter.COUNT([filter])\n .then( (count: number) => {\n result.set(monitorPk, count)\n })\n )\n }\n await Promise.allSettled(promises);\n return result;\n }\n \n async fetchMonitorRegistrations(): Promise<void> {\n console.log('fetchMonitorRegistrations')\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'begin')\n let totalFound = 0\n const onevent = (event: IEvent) => {\n // console.log('onevent', event)\n if(event.kind !== 10166) return;\n this.manager.handleEvent(event);\n totalFound++\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'update', { value: totalFound})\n }\n const args = {\n filters: [{kinds: [10166]}], \n relays: this.nip66Relays, \n options: {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: true,\n }\n }\n console.log('fetchMonitorRegistrations: args', args)\n const result = await this.subscribe( args, { onevent } );\n StateManager.emit('activity', 'monitors/bootstrap/registrations', 'finish', result)\n }\n\n async fetchMonitorMeta(): Promise<void> {\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'begin')\n const monitors = [...this.array.map((m) => m.registration)].filter(registration => typeof registration !== 'undefined');\n const authors = monitors.map((monitor: MonitorRegistration) => monitor.pubkey as string);\n let totalEvents = 0;\n const onevent = ( event: IEvent ) => {\n this.manager.handleEvent(event)\n totalEvents++\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'update', { value: totalEvents})\n };\n const onevents = (events: IEvent[]) => { \n events.forEach(onevent) \n totalEvents += events.length;\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'update', { value: totalEvents});\n };\n const filters = authors.map(author => ({ authors: [author], kinds: [0, 10002] }))\n const args = {\n filters, \n relays: this.userMetaRelays,\n options: {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: true\n }\n }\n await this.subscribe( args, { onevent, onevents } );\n this.array.forEach((monitor) => {\n monitor.relays.forEach((relay:string) => this.addRelay('route66', relay));\n });\n StateManager.emit('activity', 'monitors/bootstrap/meta', 'finish')\n }\n\n async isMonitorActive(pubkey: string): Promise<boolean> {\n const monitor = this.monitors.get(pubkey);\n if (!monitor) return false;\n const checkFilter = {...monitor.checkFilter, limit: 1};\n const filters = [checkFilter];\n const options = defaultWebsocketAdapterOptions;\n const relays = this.nip66Relays;\n const result = await this.subscribe({ filters, relays, options });\n return (result instanceof Array)? result.length > 0: (result as unknown as boolean)\n }\n\n async syncMonitorsChecks(options?: Partial<WebsocketAdapterOptions>, enabled?: boolean, callbacks?: SubscribeHandlers): Promise<IEvent[] | boolean | undefined> {\n console.log('syncMonitorsChecks')\n const filters: Filter[] = this.getMonitorCheckFilters(enabled);\n console.log('syncMonitorsChecks: filters', filters)\n const defaultOptions = {\n cache: true,\n returnResults: true, \n keepAlive: false,\n stream: true,\n batch: 100\n }\n let count = 0;\n const onevent = (event: IEvent) => {\n callbacks?.onevent?.(event);\n StateManager.emit(`event`, event);\n // StateManager.emit(`event:${event.kind}`, event);\n };\n const onevents = (events: IEvent[]) => {\n // console.log('onevents', events.length)\n count += events.length;\n callbacks?.onevents?.(events);\n StateManager.emit(`events`, events);\n };\n const relays = this.nip66Relays;\n if(!options) {\n options = {...defaultOptions}\n }\n else {\n options = {...defaultOptions, ...options}\n }\n console.log('syncMonitorsChecks: options', options)\n const result: IEvent[] | boolean | undefined = await this.fetch( { relays, filters, options: options as WebsocketAdapterOptions }, { onevent, onevents } );\n // StateManager.emit('bootstrap:checks:complete')\n return result;\n }\n\n async countMonitorChecksFromCache(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<number> { \n const monitor = this.monitors.get(pubkey);\n if (!monitor) return 0;\n const checkFilter = {...monitor.checkFilter};\n const filters = [checkFilter];\n return this.countFromCache(filters)\n }\n\n async fetchMonitorChecksFromCache(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[]> { \n return this.fetchMonitorChecks(pubkey, _options, 'cache');\n }\n\n async fetchMonitorChecksFromWebsocket(pubkey: string, _options?: Partial<WebsocketAdapterOptions>): Promise<IEvent[]> {\n return this.fetchMonitorChecks(pubkey, _options, 'websocket');\n }\n\n async fetchMonitorChecks(\n pubkey: string, \n _options?: Partial<WebsocketAdapterOptions>, \n from?: 'cache' | 'websocket', \n sync: boolean = false): Promise<IEvent[]> \n { \n const monitor = this.monitors.get(pubkey);\n if (!monitor) return [];\n let checkFilter: Filter = {...monitor.checkFilter};\n // if(from === 'cache') {\n // checkFilter = {...monitor.checkFilterSync}\n // }\n // else {\n // checkFilter = {...monitor.checkFilter};\n // }\n const filters = [checkFilter];\n const options: WebsocketAdapterOptions = (\n _options? \n {...defaultWebsocketAdapterOptions, ..._options, stream: false}: \n defaultWebsocketAdapterOptions\n ) as WebsocketAdapterOptions;\n //\n const relays = this.nip66Relays;\n let result;\n switch(from){\n case 'cache':\n return this.fetchFromCache(filters);\n case 'websocket':\n return await this.fetchFromWebsocket({ filters, relays, options });\n default: \n return this.fetch({ filters, relays, options }) as Promise<IEvent[]>;\n }\n }\n\n async beginLiveSync(callbacks?: SubscribeHandlers): Promise<IEvent[]> {\n //console.log('!!! beginning live sync')\n const startedAt: number = Math.round(Date.now()/1000);\n const filters: Filter[] = []\n this.enabledMonitors.forEach( (monitor: Monitor ) => {\n const lastSyncUntil = monitor.getLastSync(30166)?.until;\n filters.push({ kinds: [30166], authors: [monitor.pubkey], since: lastSyncUntil });\n }) \n const hash = 'liveSyncMonitorsChecks';\n const relays: string[] = this.nip66Relays;\n const options: WebsocketAdapterOptions = {\n cache: true,\n keepAlive: true,\n returnResults: true,\n stream: true,\n batch: 10\n }\n let highestTimestamp: number = 0;\n const onevents: SubscribeHandlers['onevents'] = (events: IEvent[]) => {\n // console.log('!!! liveSync: onevents', events?.length);\n \n const now = Math.round(Date.now() / 1000);\n let highestTimestamp = startedAt; // Initialize to startedAt to avoid unnecessary checks later\n \n events.forEach((event) => {\n let { pubkey, created_at = 0 } = event; \n created_at = created_at as number\n const monitor = this.monitors.get(pubkey);\n if (monitor) {\n const lastSyncUntil = monitor.getLastSyncUntil(30166) || 0;\n if (created_at > lastSyncUntil) {\n monitor.setLastSync(30166, 'since', now - monitor.frequency);\n monitor.setLastSync(30166, 'until', created_at);\n }\n }\n if (created_at > highestTimestamp) {\n highestTimestamp = created_at;\n }\n });\n if (highestTimestamp > startedAt) {\n StateManager.set('lastCompleteSync', now);\n }\n callbacks?.onevents?.(events);\n };\n //console.log('HASH', hash)\n return this.subscribe({ filters, relays, options, hash }, { onevents });\n }\n\n async stopLiveSync(): Promise<void> {\n //console.log('!!! stopping live sync')\n await this.unsubscribe('liveSyncMonitorsChecks');\n }\n\n async ensureMonitorsActive(pubkeys?: string | string[]): Promise<void> {\n console.log('ensureMonitorsActive')\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'begin');\n const MAX_FILTERS = 10; //TODO: try to derive from NIP-11\n\n let monitors = [...this.array];\n \n if (pubkeys) {\n if (typeof pubkeys === 'string') pubkeys = [pubkeys];\n monitors = monitors.filter((m) => (pubkeys as string[]).includes(m.pubkey));\n }\n \n const filters: Filter[] = [];\n const events: IEvent[] = [];\n const until = Math.round(Date.now() / 1000);\n \n monitors.forEach((monitor) => {\n filters.push({...monitor.checkFilter, until, limit: 1});\n });\n \n const chunkArray = (arr: Filter[], size: number): Filter[][] => {\n const chunks: Filter[][] = [];\n for (let i = 0; i < arr.length; i += size) {\n chunks.push(arr.slice(i, i + size));\n }\n return chunks;\n };\n \n const filterChunks = chunkArray(filters, MAX_FILTERS);\n\n const activePubkeys = new Set<string>();\n \n const onevent = (event: IEvent) => {\n events.push(event);\n activePubkeys.add(event.pubkey);\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'update', { value: activePubkeys.size });\n };\n \n const callbacks: SubscribeHandlers = { onevent };\n const relays = this.nip66Relays;\n \n for (const filterChunk of filterChunks) {\n await this.websocketAdapter.subscribe(\n {\n relays,\n filters: filterChunk,\n options: {\n cache: false,\n returnResults: true,\n keepAlive: false,\n stream: false,\n },\n },\n callbacks\n );\n }\n\n for (const event of events) {\n const { pubkey, created_at } = event;\n const monitor = this.monitors.get(pubkey);\n if (monitor?.registration) {\n if (created_at) monitor.lastActive = created_at;\n }\n }\n\n StateManager.emit('activity', 'monitors/bootstrap/ensureActive', 'finish');\n }\n\n maybeEnableMonitors(): void {\n if(this.enabledMonitors.length) {\n return;\n }\n const monitorsWithRegistrations = Array.from(this.monitors.values())\n .filter(m => m?.registration?.checks?.length);\n\n // Prefer active monitors, then sort by number of checks\n const sorted = monitorsWithRegistrations.sort((a, b) => {\n // Active monitors first\n if (a.active && !b.active) return -1;\n if (!a.active && b.active) return 1;\n // Then by check count\n const aChecks = a.registration?.checks?.length ?? 0;\n const bChecks = b.registration?.checks?.length ?? 0;\n return bChecks - aChecks;\n });\n\n for(let i=0; i < this.DEFAULT_ENABLED_MONITORS && i < sorted.length; i++) {\n try {\n sorted[i].enable();\n } catch {\n sorted[i].enabled = true;\n }\n }\n }\n\n optimizeFilters(filters: Filter[]): Filter[] {\n const filterMap: Map<string, Filter> = new Map();\n \n for (const filter of filters) {\n const key = JSON.stringify({\n since: filter.since ?? null,\n until: filter.until ?? null,\n kinds: filter.kinds ?? null,\n });\n \n if (filterMap.has(key)) {\n const existingFilter = filterMap.get(key)!;\n existingFilter.authors = [...Array.from(new Set([...(existingFilter.authors || []), ...(filter.authors || [])]))];\n } else {\n filterMap.set(key, { ...filter, authors: [...(filter.authors || [])] });\n }\n }\n \n return Array.from(filterMap.values());\n }\n\n getMonitorCheckFilters(enabled?: boolean): Filter[] {\n let monitors: Monitor[] = [];\n if(enabled === undefined) {\n monitors = this.enabledMonitors; \n }\n else if(typeof enabled === 'boolean') {\n monitors = enabled? this.enabledMonitors: this.disabledActiveMonitors;\n }\n let filters: Filter[] = [];\n const until = Math.round(Date.now()/1000);\n monitors.forEach((monitor) => {\n filters.push({...monitor.checkFilter, until});\n });\n return filters;\n }\n\n async modifyReturnedEvents(events: IEvent[]): Promise<IEvent[]> {\n return events;\n // return this.removeStaleChecks(events); \n }\n\n async removeStaleChecks(events: IEvent[]): Promise<IEvent[]> {\n const monitors = Array.from(this.monitors.values());\n const deleteFilters: Filter[] = []\n let timelyChecks: IEvent[] = []\n for(const monitor of monitors){\n const {pubkey, frequency} = monitor;\n if(!frequency) {\n continue;\n }\n const until = monitor.isOnlineAfter;\n deleteFilters.push({ authors: [ pubkey ], until })\n this.cacheAdapter.DELETE(deleteFilters)\n const onlineRelays = await monitor.returnOnlineRelays(events.filter(event => event.pubkey === monitor.pubkey));\n timelyChecks = [...timelyChecks, ...onlineRelays]\n }\n return timelyChecks;\n }\n\n async getMonitor(pubkey: string): Promise<Monitor | undefined> {\n if (this.monitors.has(pubkey)) {\n return this.monitors.get(pubkey);\n }\n const monitorKinds = [10166, 0, 10002];\n const filter: Filter = { authors: [pubkey], kinds: monitorKinds };\n const options: WebsocketAdapterOptions = {\n cache: true,\n returnResults: true,\n keepAlive: false,\n stream: false,\n };\n const relays: string[] = [\n ...this.nip66Relays,\n ...this.userMetaRelays,\n ...this.getMonitorRelays(pubkey),\n ];\n // const events = await this.fetch({filters: [filter], options, relays}, this.manager.handleEvent.bind(this.manager) );\n return this.monitors.get(pubkey);\n }\n\n // async getMonitorChecks(pubkey: string): Promise<ICheck[]> {\n // const monitor = await this.getMonitor(pubkey);\n // const filter: Filter = { authors: [pubkey], kinds: [30166] };\n // const options: WebsocketAdapterOptions = {\n // cache: true,\n // returnResults: true,\n // keepAlive: false,\n // stream: false,\n // };\n // const relays: string[] = [\n // ...this.nip66Relays,\n // ...this.userMetaRelays,\n // ...this.getMonitorRelays(pubkey),\n // ];\n // const events = await this.fetch({filters: [filter], options, relays});\n // const checks = events.map((event) => k30166ToICheck(event));\n // return checks\n // }\n\n getMonitorRelays(pubkey: string): string[] {\n return this.monitors.get(pubkey)?.relays || [];\n }\n\n getMonitorPubkeys(): string[] {\n if (!this.sortedMonitors.length) {\n console.warn('MonitorService getMonitorPubkeys: no monitors');\n return [];\n }\n ////console.log(`total monitors in array: ${this.sortedMonitors.length}`)\n return this.sortedMonitors.map((monitor) => monitor.pubkey);\n }\n}\n"],"names":["MonitorService","_super","adapters","_this","call","this","DEFAULT_ENABLED_MONITORS","_manager","MonitorManager","getInstance","addRelay","init","__extends","prototype","_a","cacheAdapter","ready","_b","sent","_ready","Promise","resolve","setTimeout","Object","defineProperty","get","manager","monitorsMap","array","sortedMonitors","enabledMonitors","enabledActiveMonitors","disabledMonitors","disabledActiveMonitors","disabledInactiveMonitors","activeMonitors","loadMonitors","monitors","fetch","args","callbacks","filters","relays","options","message","_fetch","fetchOperatorRelaysNotOnline","pubkey","forEach","monitor","push","__assign","checkFilterNotOnline","nip66Relays","stream","cache","returnResults","keepAlive","subscribe","fetchOperatorRelaysDead","checkFilterDead","sync","console","log","index","checkCounts","Map","updateCounts","events","_i","events_1","event_1","kind","key","concat","count","set","onevent","event","onevents","length","oneose","updateCheckpoint","results","updateCheckpoints","filter","counts","authors","kinds","since","until","_c","setLastSync","error","Array","from","modifyCacheFilters","map","requestedSince","cachedRange","getLastSync","modifyWebsocketFilters","bootstrapMonitors","fetchMonitorRegistrations","fetchMonitorMeta","ensureMonitorsActive","maybeEnableMonitors","bootstrap","bootstrapMonitorsChecks","StateManager","emit","value","handleEvent","warn","syncMonitorsChecks","result","fetchDisabledMonitorsChecks","batch","countMonitorChecksInCache","enabled","getMonitorCheckFilters","promises","monitorPk","this_1","COUNT","then","filters_1","allSettled","totalFound","__spreadArray","m","registration","totalEvents","author","userMetaRelays","relay","isMonitorActive","checkFilter","limit","defaultWebsocketAdapterOptions","defaultOptions","countMonitorChecksFromCache","_options","countFromCache","fetchMonitorChecksFromCache","fetchMonitorChecks","fetchMonitorChecksFromWebsocket","pubkey_1","_options_1","from_1","__awaiter","arguments","fetchFromCache","fetchFromWebsocket","beginLiveSync","startedAt","Math","round","Date","now","lastSyncUntil","highestTimestamp","created_at","getLastSyncUntil","frequency","hash","stopLiveSync","unsubscribe","pubkeys","includes","filterChunks","arr","size","chunks","i","slice","chunkArray","activePubkeys","Set","add","filterChunks_1","filterChunk","websocketAdapter","events_2","event_2","lastActive","sorted","values","checks","sort","a","b","active","aChecks","_f","_e","_d","enable","optimizeFilters","filterMap","filters_2","JSON","stringify","has","existingFilter","undefined","modifyReturnedEvents","removeStaleChecks","deleteFilters","timelyChecks","isOnlineAfter","this_2","DELETE","returnOnlineRelays","onlineRelays","monitors_1","getMonitor","getMonitorRelays","getMonitorPubkeys","Service"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("../_virtual/_tslib.cjs.js"),r=require("./Service.cjs.js");require("../models/Event.cjs.js");var t=require("../models/Nip66CheckEvent.cjs.js");require("../models/DeltaEvent.cjs.js"),require("../models/RelayCheckAggregate.cjs.js"),require("../models/Geocoded.cjs.js"),require("../models/Monitor.cjs.js"),require("../models/Nip11.cjs.js"),require("../models/PubkeyProfile.cjs.js"),require("../models/PubkeyRelays.cjs.js");var i=require("./MonitorService.cjs.js"),n=require("../utils/nostr.cjs.js"),s=function(r){function RelayService(e,t){var n=r.call(this,e)||this;return n._relay="",n._ready=!1,n.monitors=null!=t?t:new i.MonitorService(e),n.addRelay("route66","wss://relay.nostr.watch"),n.addRelay("route66","wss://relaypag.es"),n.addRelay("route66","wss://monitorlizard.nostr1.com/"),n.addRelay("userMeta","wss://purplepag.es"),n.addRelay("userMeta","wss://user.kindpag.es"),n.addRelay("userMeta","wss://relay.nostr.band"),n.init(),n}return e.__extends(RelayService,r),RelayService.prototype.init=function(){return e.__awaiter(this,void 0,void 0,(function(){var r,t;return e.__generator(this,(function(e){switch(e.label){case 0:return[4,null===(r=null==this?void 0:this.cacheAdapter)||void 0===r?void 0:r.ready()];case 1:return e.sent(),[4,null===(t=null==this?void 0:this.monitors)||void 0===t?void 0:t.ready()];case 2:return e.sent(),this._ready=!0,[2]}}))}))},RelayService.prototype.ready=function(){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){switch(e.label){case 0:return this._ready?[3,2]:[4,new Promise((function(e){return setTimeout(e,100)}))];case 1:return e.sent(),[3,0];case 2:return[2]}}))}))},RelayService.prototype.relayFilters=function(r,t){void 0===t&&(t="online");var i=[];if(0===this.monitors.activeMonitors.length)return[{kinds:[30166],"#d":[r]}];var s="online"===t?this.monitors.activeMonitors:this.monitors.array,a={"#d":n.getNormalizedWebsocketVariants(r),kinds:[30166]};return"dead"===t?[a]:(s.forEach((function(r){var n;switch(t){case"offline":n=e.__assign(e.__assign({},r.checkFilterOffline),a);break;case"online":n=e.__assign(e.__assign({},r.checkFilter),a)}n&&i.push(n)})),i)},RelayService.prototype.deltaFilters=function(e,r){var t={kinds:[1066],"#r":n.getNormalizedWebsocketVariants(e)};return(null==r?void 0:r.since)&&(t.since=r.since),(null==r?void 0:r.until)&&(t.until=r.until),(null==r?void 0:r.limit)&&(t.limit=r.limit),[t]},RelayService.prototype.getRelayData=function(r){return e.__awaiter(this,arguments,void 0,(function(r,t){var i,n;return void 0===t&&(t="online"),e.__generator(this,(function(e){switch(e.label){case 0:return[4,this.ready()];case 1:return e.sent(),[4,this.monitors.ready()];case 2:return e.sent(),[4,this.fetchRelayChecks(r,t)];case 3:return(i=e.sent())&&(null==i?void 0:i.length)?[4,this.monitorInstancesFromChecks(i)]:[2];case 4:return(n=e.sent())?("online"===t&&(i=i.filter((function(e){var r=n.get(e.pubkey);return!(!r||!r.relayIsOnline(e))}))),"offline"===t&&(i=i.filter((function(e){var r=n.get(e.pubkey);return!(!r||!r.relayIsOffline(e,!0))}))),"dead"===t&&(i=i.filter((function(e){var r=n.get(e.pubkey);return!(!r||!r.relayIsDead(e))}))),[2,[i,n]]):[2]}}))}))},RelayService.prototype.fetchRelayChecks=function(r){return e.__awaiter(this,arguments,void 0,(function(r,i){var n,s,a,o,c;return void 0===i&&(i="online"),e.__generator(this,(function(e){switch(e.label){case 0:return(n=RelayService.formatRelay(r))?(s=this.relayFilters(n,i),a=this.nip66Relays,o={cache:!0,returnResults:!0,keepAlive:!1,stream:!1},[4,this.fetch({relays:a,filters:s,options:o,hash:"relay:".concat(Math.random()),priority:100})]):[2];case 1:return(c=e.sent())?[2,c.map((function(e){return new t.Nip66CheckEvent(e)}))]:[2]}}))}))},RelayService.prototype.fetchOperatorMeta=function(r,t){return e.__awaiter(this,arguments,void 0,(function(r,t,i){var n,s;return void 0===i&&(i=[]),e.__generator(this,(function(a){return n=[{kinds:[0,10002],authors:[r]}],i=e.__spreadArray(e.__spreadArray([],this.userMetaRelays,!0),i,!0),s={cache:!0,returnResults:!0,keepAlive:!1,stream:!0,batch:1},[2,this.subscribe({relays:i,filters:n,priority:1e3,options:s},t)]}))}))},RelayService.prototype.monitorInstancesFromChecks=function(r){return e.__awaiter(this,arguments,void 0,(function(r,t){var i,n,s,a,o,c,l,u,h,d=this;return void 0===t&&(t="map"),e.__generator(this,(function(y){switch(y.label){case 0:for(i=[],n=[],s=0,a=r;s<a.length;s++)o=a[s],i.push({authors:[o.pubkey],kinds:[10166]});return c=e.__spreadArray([],this.nip66Relays,!0),l={cache:!0,returnResults:!0,keepAlive:!1,stream:!0,batch:1},u=new Set,h=function(r){if(d.monitors.manager.handleEvent(r),10166===r.kind){if(u.has(r.pubkey))return;n.push(d.monitors.fetch({relays:e.__spreadArray([],d.userMetaRelays,!0),filters:[{authors:[r.pubkey],kinds:[0,10002]}],options:l},{onevent:h})),u.add(r.pubkey)}},[4,this.monitors.subscribe({relays:c,filters:i,options:l},{onevent:h})];case 1:return y.sent(),[4,Promise.allSettled(n)];case 2:return y.sent(),[2,"map"===t?this.monitors.map:this.monitors.array]}}))}))},RelayService.formatRelay=function(e){try{return new URL(e).toString()}catch(r){return console.warn("[RelayService] Invalid relay URL: ".concat(e)),""}},RelayService.removeOldChecks=function(e,r){return r.filter((function(r){var t=e.get(r.pubkey);return!(!t||!t.relayIsOnline(r))}))},RelayService.prototype.beginLiveSync=function(r,t){return e.__awaiter(this,void 0,void 0,(function(){var i,n,s,a;return e.__generator(this,(function(e){return i=[],this.monitors.enabledMonitors.forEach((function(e){var t,n=null===(t=e.getLastSync(30166))||void 0===t?void 0:t.until;i.push({kinds:[30166],authors:[e.pubkey],since:n,"#d":[r]})})),n=this.nip66Relays,s={cache:!0,keepAlive:!0,returnResults:!0,stream:!0,batch:2},a=function(e){var r;null===(r=null==t?void 0:t.onevents)||void 0===r||r.call(t,e)},[2,this.subscribe({filters:i,relays:n,options:s,hash:"liveSyncMonitorsChecksForRelay"},{onevents:a})]}))}))},RelayService.prototype.stopLiveSync=function(){return e.__awaiter(this,void 0,void 0,(function(){return e.__generator(this,(function(e){switch(e.label){case 0:return[4,this.unsubscribe("liveSyncMonitorsChecksForRelay")];case 1:return e.sent(),[2]}}))}))},RelayService}(r.Service);exports.RelayService=s;
|
|
2
|
+
//# sourceMappingURL=RelayService.cjs.js.map
|