From c0875efd18097b0fcd0b30db71095ac12c1457db Mon Sep 17 00:00:00 2001 From: David Fahlander Date: Thu, 28 Oct 2021 01:12:39 +0200 Subject: [PATCH] Let liveQuery() be type-wise compable with RxJS (#1417) * Let liveQuery() be type-wise compable with RxJS * Flag for dts-bundle-generator to inline global declarations. --- package-lock.json | 14 +++++++------- package.json | 4 ++-- src/classes/observable/observable.ts | 6 +++--- src/public/types/observable.d.ts | 6 ++++++ 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09d754f98..b0c7ff213 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "3.2.0-rc.2", "license": "Apache-2.0", "devDependencies": { - "dts-bundle-generator": "^5.7.0", + "dts-bundle-generator": "^5.9.0", "just-build": "^0.9.19", "karma": "^6.1.1", "karma-browserstack-launcher": "^1.5.2", @@ -588,9 +588,9 @@ } }, "node_modules/dts-bundle-generator": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-5.7.0.tgz", - "integrity": "sha512-sSFtdHL/G8y90wWRB8HCWPwdXXbToOuPLgON1q8f1+vXuiDdRez12M4RAf770dLWb05ekaFdYYGaT68jUU52zw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-5.9.0.tgz", + "integrity": "sha512-wzxUa9nfGL09Sg+gD3jqA8kYIA9A/olenvP2MmZ6IGTlUxR8G1z4U+0+OfUEL6OH1mzn6xsD8EOVgpNnGDi8tQ==", "dev": true, "dependencies": { "typescript": ">=3.0.1", @@ -3188,9 +3188,9 @@ } }, "dts-bundle-generator": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-5.7.0.tgz", - "integrity": "sha512-sSFtdHL/G8y90wWRB8HCWPwdXXbToOuPLgON1q8f1+vXuiDdRez12M4RAf770dLWb05ekaFdYYGaT68jUU52zw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/dts-bundle-generator/-/dts-bundle-generator-5.9.0.tgz", + "integrity": "sha512-wzxUa9nfGL09Sg+gD3jqA8kYIA9A/olenvP2MmZ6IGTlUxR8G1z4U+0+OfUEL6OH1mzn6xsD8EOVgpNnGDi8tQ==", "dev": true, "requires": { "typescript": ">=3.0.1", diff --git a/package.json b/package.json index 0e9e41b03..2c78a5c4f 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "node ../tools/replaceVersionAndDate.js ../dist/dexie.js", "node ../tools/replaceVersionAndDate.js ../dist/dexie.mjs", "node ../tools/replaceVersionAndDate.js ../dist/modern/dexie.mjs", - "dts-bundle-generator --inline-declare-externals -o ../dist/dexie.d.ts public/index.d.ts", + "dts-bundle-generator --inline-declare-global --inline-declare-externals -o ../dist/dexie.d.ts public/index.d.ts", "node ../tools/prepend.js ../dist/dexie.d.ts ../tools/build-configs/banner.txt", "node ../tools/replaceVersionAndDate.js ../dist/dexie.d.ts" ], @@ -94,7 +94,7 @@ }, "homepage": "https://dexie.org", "devDependencies": { - "dts-bundle-generator": "^5.7.0", + "dts-bundle-generator": "^5.9.0", "just-build": "^0.9.19", "karma": "^6.1.1", "karma-browserstack-launcher": "^1.5.2", diff --git a/src/classes/observable/observable.ts b/src/classes/observable/observable.ts index ddf974cd7..c890c50ae 100644 --- a/src/classes/observable/observable.ts +++ b/src/classes/observable/observable.ts @@ -4,10 +4,10 @@ import { Subscription, } from "../../public/types/observable"; -const symbolObservable = +const symbolObservable: typeof Symbol.observable = typeof Symbol !== "undefined" && "observable" in Symbol - ? Symbol["observable"] - : "@@observable"; + ? Symbol.observable + : "@@observable" as any; export class Observable implements IObservable { private _subscribe: (observer: Observer) => Subscription; diff --git a/src/public/types/observable.d.ts b/src/public/types/observable.d.ts index c966c78d4..9c2c4a39c 100644 --- a/src/public/types/observable.d.ts +++ b/src/public/types/observable.d.ts @@ -1,5 +1,10 @@ // There typings are extracted from https://github.com/tc39/proposal-observable +declare global { + interface SymbolConstructor { + readonly observable: symbol; + } +} export interface Observable { subscribe( onNext?: ((value: T) => void) | null, @@ -7,6 +12,7 @@ export interface Observable { onComplete?: (() => void) | null ): Subscription; subscribe(observer?: Observer | null): Subscription; + [Symbol.observable]: () => Observable; } export interface Subscription {