From 3b6611bf6bda975e5c8724c3a154a65a31c5e498 Mon Sep 17 00:00:00 2001 From: Charles Fries Date: Wed, 19 Jun 2024 20:47:28 -0700 Subject: [PATCH] chore: install `@tsconfig/ember`, update `typescript`, install `ts-patch` (#321) * Install `@tsconfig/ember` * Fix * TS * Lint * Null * Ch --- addon/adapters/cloud-firestore-modular.ts | 6 +- addon/authenticators/firebase.ts | 2 +- .../firebase-settings.ts | 6 +- addon/serializers/cloud-firestore-modular.ts | 6 +- addon/services/-firestore-data-manager.ts | 30 +- package-lock.json | 418 ++++-------------- package.json | 7 +- tests/dummy/app/controllers/application.ts | 2 +- .../adapters/cloud-firestore-modular-test.ts | 2 +- tests/unit/authenticators/firebase-test.ts | 4 +- .../services/-firestore-data-manager-test.ts | 30 +- tests/unit/transforms/timestamp-test.ts | 2 +- tests/unit/utils/custom-errors-test.ts | 10 +- tsconfig.json | 62 +-- 14 files changed, 151 insertions(+), 436 deletions(-) diff --git a/addon/adapters/cloud-firestore-modular.ts b/addon/adapters/cloud-firestore-modular.ts index 172b18a3..0f75a27a 100644 --- a/addon/adapters/cloud-firestore-modular.ts +++ b/addon/adapters/cloud-firestore-modular.ts @@ -1,8 +1,8 @@ import { getOwner } from '@ember/application'; import { inject as service } from '@ember/service'; import Adapter from '@ember-data/adapter'; -import DS, { ModelSchema } from 'ember-data'; -import ModelRegistry from 'ember-data/types/registries/model'; +import DS, { type ModelSchema } from 'ember-data'; +import type ModelRegistry from 'ember-data/types/registries/model'; import RSVP from 'rsvp'; import Store from '@ember-data/store'; @@ -272,7 +272,7 @@ export default class CloudFirestoreAdapter extends Adapter { urlNodes.pop(); const db = getFirestore(); - const docRef = doc(db, urlNodes.join('/'), id); + const docRef = doc(db, urlNodes.join('/'), id!); const modelName = relationship.type; const docSnapshot = relationship.options.isRealtime && !this.isFastBoot diff --git a/addon/authenticators/firebase.ts b/addon/authenticators/firebase.ts index 0c3a8642..bfb5dee5 100644 --- a/addon/authenticators/firebase.ts +++ b/addon/authenticators/firebase.ts @@ -1,6 +1,6 @@ import { getOwner } from '@ember/application'; -import { Auth, User, UserCredential } from 'firebase/auth'; +import type { Auth, User, UserCredential } from 'firebase/auth'; import BaseAuthenticator from 'ember-simple-auth/authenticators/base'; import type FastBoot from 'ember-cli-fastboot/services/fastboot'; diff --git a/addon/instance-initializers/firebase-settings.ts b/addon/instance-initializers/firebase-settings.ts index 60be5476..b7907184 100644 --- a/addon/instance-initializers/firebase-settings.ts +++ b/addon/instance-initializers/firebase-settings.ts @@ -1,7 +1,7 @@ import ApplicationInstance from '@ember/application/instance'; -import { FirebaseApp, FirebaseOptions } from 'firebase/app'; -import { Firestore, EmulatorMockTokenOptions } from 'firebase/firestore'; +import type { FirebaseApp, FirebaseError, FirebaseOptions } from 'firebase/app'; +import type { Firestore, EmulatorMockTokenOptions } from 'firebase/firestore'; import { initializeApp } from 'ember-cloud-firestore-adapter/firebase/app'; import { @@ -141,7 +141,7 @@ export function initialize(appInstance: ApplicationInstance): void { try { setupModularInstance(addonConfig); } catch (e) { - if (e.code !== 'failed-precondition') { + if ((e as FirebaseError).code !== 'failed-precondition') { throw new Error( `There was a problem with initializing Firebase. Check if you've configured the addon properly. | Error: ${e}`, ); diff --git a/addon/serializers/cloud-firestore-modular.ts b/addon/serializers/cloud-firestore-modular.ts index 10ea0fca..8b696916 100644 --- a/addon/serializers/cloud-firestore-modular.ts +++ b/addon/serializers/cloud-firestore-modular.ts @@ -4,7 +4,7 @@ */ import { isNone } from '@ember/utils'; -import DS, { ModelSchema } from 'ember-data'; +import DS, { type ModelSchema } from 'ember-data'; import JSONSerializer from '@ember-data/serializer/json'; import Store from '@ember-data/store'; @@ -134,9 +134,9 @@ export default class CloudFirestoreSerializer extends JSONSerializer { ...super.serialize(snapshot, options), }; - snapshot.eachRelationship((name: string, relationship) => { + snapshot.eachRelationship((name, relationship) => { if (relationship.kind === 'hasMany') { - delete json[name]; + delete json[name as string]; } }); diff --git a/addon/services/-firestore-data-manager.ts b/addon/services/-firestore-data-manager.ts index 050b18b3..b7904905 100644 --- a/addon/services/-firestore-data-manager.ts +++ b/addon/services/-firestore-data-manager.ts @@ -1,10 +1,10 @@ import { next } from '@ember/runloop'; import DS from 'ember-data'; -import ModelRegistry from 'ember-data/types/registries/model'; +import type ModelRegistry from 'ember-data/types/registries/model'; import Service, { inject as service } from '@ember/service'; import StoreService from '@ember-data/store'; -import { +import type { CollectionReference, DocumentReference, DocumentSnapshot, @@ -96,7 +96,7 @@ export default class FirestoreDataManager extends Service { await this.setupDocRealtimeUpdates(modelName, docRef); } - return this.docListeners[listenerKey].snapshot; + return this.docListeners[listenerKey]!.snapshot; } public async findAllRealtime( @@ -109,7 +109,7 @@ export default class FirestoreDataManager extends Service { await this.setupColRealtimeUpdates(modelName, colRef); } - return this.colListeners[listenerKey].snapshot; + return this.colListeners[listenerKey]!.snapshot; } public async queryRealtime( @@ -120,7 +120,7 @@ export default class FirestoreDataManager extends Service { let unsubscribe: Unsubscribe | undefined; if (this.queryListeners[queryId]) { - unsubscribe = this.queryListeners[queryId].unsubscribe; + unsubscribe = this.queryListeners[queryId]!.unsubscribe; delete this.queryListeners[queryId]; } @@ -130,7 +130,7 @@ export default class FirestoreDataManager extends Service { unsubscribe(); } - return this.queryListeners[queryId].snapshots; + return this.queryListeners[queryId]!.snapshots; } public async findHasManyRealtime( @@ -141,7 +141,7 @@ export default class FirestoreDataManager extends Service { let unsubscribe: Unsubscribe | undefined; if (this.hasManyListeners[queryId]) { - unsubscribe = this.hasManyListeners[queryId].unsubscribe; + unsubscribe = this.hasManyListeners[queryId]!.unsubscribe; delete this.hasManyListeners[queryId]; } @@ -151,7 +151,7 @@ export default class FirestoreDataManager extends Service { unsubscribe(); } - return this.hasManyListeners[queryId].snapshots; + return this.hasManyListeners[queryId]!.snapshots; } public async queryWithReferenceTo( @@ -320,7 +320,7 @@ export default class FirestoreDataManager extends Service { listenerKey: string, ): void { if (docSnapshot.exists()) { - this.docListeners[listenerKey].snapshot = docSnapshot; + this.docListeners[listenerKey]!.snapshot = docSnapshot; this.pushRecord(modelName, docSnapshot); } else { this.unloadRecord(modelName, docSnapshot.id, listenerKey); @@ -332,7 +332,7 @@ export default class FirestoreDataManager extends Service { listenerKey: string, querySnapshot: QuerySnapshot, ): void { - this.colListeners[listenerKey].snapshot = querySnapshot; + this.colListeners[listenerKey]!.snapshot = querySnapshot; querySnapshot.forEach((docSnapshot) => { this.pushRecord(modelName, docSnapshot); @@ -378,7 +378,7 @@ export default class FirestoreDataManager extends Service { // multiple times. Race condition can happen where queryId no longer exists inside // queryListeners so we have this check. if (Object.prototype.hasOwnProperty.call(this.queryListeners, queryId)) { - const { unsubscribe } = this.queryListeners[queryId]; + const { unsubscribe } = this.queryListeners[queryId]!; delete this.queryListeners[queryId]; recordArray.update().then(() => unsubscribe()); @@ -479,22 +479,22 @@ export default class FirestoreDataManager extends Service { private destroyListener(type: string, key: string): void { if (type === 'doc' && this.docListeners[key]) { - this.docListeners[key].unsubscribe(); + this.docListeners[key]!.unsubscribe(); delete this.docListeners[key]; } if (type === 'col' && this.colListeners[key]) { - this.colListeners[key].unsubscribe(); + this.colListeners[key]!.unsubscribe(); delete this.colListeners[key]; } if (type === 'query' && this.queryListeners[key]) { - this.queryListeners[key].unsubscribe(); + this.queryListeners[key]!.unsubscribe(); delete this.queryListeners[key]; } if (type === 'hasMany' && this.hasManyListeners[key]) { - this.hasManyListeners[key].unsubscribe(); + this.hasManyListeners[key]!.unsubscribe(); delete this.hasManyListeners[key]; } } diff --git a/package-lock.json b/package-lock.json index 6fb72bac..019f6845 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "@embroider/test-setup": "^3.0.3", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", + "@tsconfig/ember": "^3.0.8", "@types/ember": "^4.0.11", "@types/ember__application": "^4.0.11", "@types/ember__array": "^4.0.10", @@ -92,9 +93,9 @@ "stylelint": "^15.11.0", "stylelint-config-standard": "^34.0.0", "stylelint-prettier": "^4.0.2", + "ts-patch": "^3.2.0", "ts-transformer-keys": "^0.4.4", - "ttypescript": "^1.5.15", - "typescript": "^4.4.3", + "typescript": "^5.4.5", "webpack": "^5.91.0" }, "engines": { @@ -2053,30 +2054,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@csstools/css-parser-algorithms": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", @@ -11570,33 +11547,11 @@ "node": ">= 10" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "peer": true + "node_modules/@tsconfig/ember": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/ember/-/ember-3.0.8.tgz", + "integrity": "sha512-OVnIsZIt/8q0VEtcdz3rRryNrm6gdJTxXlxefkGIrkZnME0wqslmwHlUEZ7mvh377df9FqBhNKrYNarhCW8zJA==", + "dev": true }, "node_modules/@types/acorn": { "version": "4.0.6", @@ -11990,9 +11945,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.6.tgz", + "integrity": "sha512-JbA0XIJPL1IiNnU7PFxDXyfAwcwVVrOoqyzzyQTyMeVhBzkJVMSkC1LlVsRQ2lpqiY4n6Bb9oCS6lzDKVQxbZw==", "dependencies": { "undici-types": "~5.26.4" } @@ -12799,13 +12754,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -16943,13 +16891,6 @@ "node": ">= 0.10" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "peer": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -46354,13 +46295,6 @@ "semver": "bin/semver.js" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "peer": true - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -51743,21 +51677,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/stylelint/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, "node_modules/stylelint/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -52727,81 +52646,48 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "node_modules/ts-patch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.2.0.tgz", + "integrity": "sha512-fUGMkjGIlD4BFibDM+6pLYLXRguzCUY6fhP1KQzSnFJfAtTDT7DKyX0yHn3CJqfBv4mia/o3ZRte31UVf9Dl1A==", "dev": true, - "peer": true, "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "chalk": "^4.1.2", + "global-prefix": "^3.0.0", + "minimist": "^1.2.8", + "resolve": "^1.22.2", + "semver": "^7.5.4", + "strip-ansi": "^6.0.1" }, "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "ts-patch": "bin/ts-patch.js", + "tspc": "bin/tspc.js" } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "node_modules/ts-patch/node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "node_modules/ts-patch/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.3.1" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/ts-transformer-keys": { @@ -52843,23 +52729,6 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, - "node_modules/ttypescript": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.15.tgz", - "integrity": "sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==", - "dev": true, - "dependencies": { - "resolve": ">=1.9.0" - }, - "bin": { - "ttsc": "bin/tsc", - "ttsserver": "bin/tsserver" - }, - "peerDependencies": { - "ts-node": ">=8.0.2", - "typescript": ">=3.2.2" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -52985,16 +52854,16 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/typescript-memoize": { @@ -53327,13 +53196,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "peer": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -53948,16 +53810,6 @@ "node": ">=12" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -55303,29 +55155,6 @@ "dev": true, "optional": true }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "peer": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - } - } - }, "@csstools/css-parser-algorithms": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", @@ -63224,33 +63053,11 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "peer": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "peer": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "peer": true + "@tsconfig/ember": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/ember/-/ember-3.0.8.tgz", + "integrity": "sha512-OVnIsZIt/8q0VEtcdz3rRryNrm6gdJTxXlxefkGIrkZnME0wqslmwHlUEZ7mvh377df9FqBhNKrYNarhCW8zJA==", + "dev": true }, "@types/acorn": { "version": "4.0.6", @@ -63643,9 +63450,9 @@ "dev": true }, "@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.6.tgz", + "integrity": "sha512-JbA0XIJPL1IiNnU7PFxDXyfAwcwVVrOoqyzzyQTyMeVhBzkJVMSkC1LlVsRQ2lpqiY4n6Bb9oCS6lzDKVQxbZw==", "requires": { "undici-types": "~5.26.4" } @@ -64255,13 +64062,6 @@ } } }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -67580,13 +67380,6 @@ "vary": "^1" } }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "peer": true - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -91270,13 +91063,6 @@ } } }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "peer": true - }, "makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -95415,14 +95201,6 @@ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, - "typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "optional": true, - "peer": true - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -96188,48 +95966,39 @@ "dev": true, "requires": {} }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "ts-patch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.2.0.tgz", + "integrity": "sha512-fUGMkjGIlD4BFibDM+6pLYLXRguzCUY6fhP1KQzSnFJfAtTDT7DKyX0yHn3CJqfBv4mia/o3ZRte31UVf9Dl1A==", "dev": true, - "peer": true, "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" + "chalk": "^4.1.2", + "global-prefix": "^3.0.0", + "minimist": "^1.2.8", + "resolve": "^1.22.2", + "semver": "^7.5.4", + "strip-ansi": "^6.0.1" }, "dependencies": { - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "peer": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "peer": true + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "peer": true + "requires": { + "isexe": "^2.0.0" + } } } }, @@ -96269,15 +96038,6 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", "dev": true }, - "ttypescript": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/ttypescript/-/ttypescript-1.5.15.tgz", - "integrity": "sha512-48ykDNHzFnPMnv4hYX1P8Q84TvCZyL1QlFxeuxsuZ48X2+ameBgPenvmCkHJtoOSxpoWTWi8NcgNrRnVDOmfSg==", - "dev": true, - "requires": { - "resolve": ">=1.9.0" - } - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -96367,9 +96127,9 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true }, "typescript-memoize": { @@ -96619,13 +96379,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "peer": true - }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -97100,13 +96853,6 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 4f6d7799..8f5a497d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ }, "scripts": { "build": "npm run build:wrappers && ember build --environment=production", - "build:wrappers": "ttsc -p tsconfig.build-wrappers.json && node ./scripts/build-wrappers.js && rimraf ./scripts/build-wrappers.js", + "build:wrappers": "tspc -p tsconfig.build-wrappers.json && node ./scripts/build-wrappers.js && rimraf ./scripts/build-wrappers.js", "lint": "concurrently \"npm:lint:*(!fix)\" --names \"lint:\"", "lint:css": "stylelint \"**/*.css\"", "lint:css:fix": "concurrently \"npm:lint:css -- --fix\"", @@ -47,6 +47,7 @@ "@embroider/test-setup": "^3.0.3", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", + "@tsconfig/ember": "^3.0.8", "@types/ember": "^4.0.11", "@types/ember__application": "^4.0.11", "@types/ember__array": "^4.0.10", @@ -117,9 +118,9 @@ "stylelint": "^15.11.0", "stylelint-config-standard": "^34.0.0", "stylelint-prettier": "^4.0.2", + "ts-patch": "^3.2.0", "ts-transformer-keys": "^0.4.4", - "ttypescript": "^1.5.15", - "typescript": "^4.4.3", + "typescript": "^5.4.5", "webpack": "^5.91.0" }, "peerDependencies": { diff --git a/tests/dummy/app/controllers/application.ts b/tests/dummy/app/controllers/application.ts index 5e538869..415562e2 100644 --- a/tests/dummy/app/controllers/application.ts +++ b/tests/dummy/app/controllers/application.ts @@ -2,7 +2,7 @@ import { action } from '@ember/object'; import { inject as service } from '@ember/service'; import Controller from '@ember/controller'; -import { Auth } from 'firebase/auth'; +import type { Auth } from 'firebase/auth'; import SessionService from 'ember-simple-auth/services/session'; import { diff --git a/tests/unit/adapters/cloud-firestore-modular-test.ts b/tests/unit/adapters/cloud-firestore-modular-test.ts index c5e8a350..7870412e 100644 --- a/tests/unit/adapters/cloud-firestore-modular-test.ts +++ b/tests/unit/adapters/cloud-firestore-modular-test.ts @@ -390,7 +390,7 @@ module('Unit | Adapter | cloud firestore modular', function (hooks) { // Assert assert.ok(error instanceof AdapterRecordNotFoundError); assert.strictEqual( - error.message, + (error as AdapterRecordNotFoundError).message, "Record user_100 for model type user doesn't exist", ); } diff --git a/tests/unit/authenticators/firebase-test.ts b/tests/unit/authenticators/firebase-test.ts index 25053dac..346ab736 100644 --- a/tests/unit/authenticators/firebase-test.ts +++ b/tests/unit/authenticators/firebase-test.ts @@ -6,8 +6,8 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -import { Auth } from 'firebase/auth'; -import { Firestore } from 'firebase/firestore'; +import type { Auth } from 'firebase/auth'; +import type { Firestore } from 'firebase/firestore'; import { getAuth, diff --git a/tests/unit/services/-firestore-data-manager-test.ts b/tests/unit/services/-firestore-data-manager-test.ts index cd623b59..8f3ea3b1 100644 --- a/tests/unit/services/-firestore-data-manager-test.ts +++ b/tests/unit/services/-firestore-data-manager-test.ts @@ -4,7 +4,7 @@ import { waitUntil } from '@ember/test-helpers'; import DS from 'ember-data'; import RSVP from 'rsvp'; -import { Firestore } from 'firebase/firestore'; +import type { Firestore } from 'firebase/firestore'; import sinon from 'sinon'; import { @@ -109,8 +109,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.size, 3); - assert.strictEqual(result.docs[0].id, 'user_a'); - assert.deepEqual(result.docs[0].data(), { + assert.strictEqual(result.docs[0]?.id, 'user_a'); + assert.deepEqual(result.docs[0]?.data(), { name: 'user_a', age: 15, username: 'user_a', @@ -182,8 +182,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 3); - assert.strictEqual(result[0].id, 'user_a'); - assert.deepEqual(result[0].data(), { + assert.strictEqual(result[0]?.id, 'user_a'); + assert.deepEqual(result[0]?.data(), { name: 'user_a', age: 15, username: 'user_a', @@ -212,8 +212,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 1); - assert.strictEqual(result[0].id, 'group_a'); - assert.deepEqual(result[0].data(), { name: 'group_a' }); + assert.strictEqual(result[0]?.id, 'group_a'); + assert.deepEqual(result[0]?.data(), { name: 'group_a' }); }); test('should update record array when query gets updated', async function (assert) { @@ -272,8 +272,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 1); - assert.strictEqual(result[0].id, 'post_b'); - assert.deepEqual(result[0].get('title'), 'post_b'); + assert.strictEqual(result[0]?.id, 'post_b'); + assert.deepEqual(result[0]?.get('title'), 'post_b'); }); test('should return fetched records with referenceTo indicators', async function (assert) { @@ -296,8 +296,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 1); - assert.strictEqual(result[0].id, 'group_a'); - assert.deepEqual(result[0].data(), { name: 'group_a' }); + assert.strictEqual(result[0]?.id, 'group_a'); + assert.deepEqual(result[0]?.data(), { name: 'group_a' }); }); test('should reload has-many reference when query gets updated', async function (assert) { @@ -357,8 +357,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 3); - assert.strictEqual(result[0].id, 'user_a'); - assert.deepEqual(result[0].data(), { + assert.strictEqual(result[0]?.id, 'user_a'); + assert.deepEqual(result[0]?.data(), { name: 'user_a', age: 15, username: 'user_a', @@ -382,8 +382,8 @@ module('Unit | Service | -firestore-data-manager', function (hooks) { // Assert assert.strictEqual(result.length, 1); - assert.strictEqual(result[0].id, 'group_a'); - assert.deepEqual(result[0].data(), { name: 'group_a' }); + assert.strictEqual(result[0]?.id, 'group_a'); + assert.deepEqual(result[0]?.data(), { name: 'group_a' }); }); }); }); diff --git a/tests/unit/transforms/timestamp-test.ts b/tests/unit/transforms/timestamp-test.ts index c867404e..626f8e2c 100644 --- a/tests/unit/transforms/timestamp-test.ts +++ b/tests/unit/transforms/timestamp-test.ts @@ -1,7 +1,7 @@ import { module, test } from 'qunit'; import { setupTest } from 'ember-qunit'; -import { Firestore } from 'firebase/firestore'; +import type { Firestore } from 'firebase/firestore'; import { doc, diff --git a/tests/unit/utils/custom-errors-test.ts b/tests/unit/utils/custom-errors-test.ts index e5665c3c..9daffd45 100644 --- a/tests/unit/utils/custom-errors-test.ts +++ b/tests/unit/utils/custom-errors-test.ts @@ -13,8 +13,14 @@ module('Unit | Utility | custom-errors', function () { }); } catch (error) { assert.ok(error instanceof AdapterRecordNotFoundError); - assert.strictEqual(error.message, 'Test Error'); - assert.strictEqual(error.cause, 'Test Cause'); + assert.strictEqual( + (error as AdapterRecordNotFoundError).message, + 'Test Error', + ); + assert.strictEqual( + (error as AdapterRecordNotFoundError).cause, + 'Test Cause', + ); } }); }); diff --git a/tsconfig.json b/tsconfig.json index 4093a29d..c4bed3a0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,56 +1,18 @@ { + "extends": "@tsconfig/ember/tsconfig.json", "compilerOptions": { - "target": "es2020", - "allowJs": true, - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "noImplicitAny": true, - "noImplicitThis": true, - "alwaysStrict": true, - "strictNullChecks": true, - "strictPropertyInitialization": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noEmitOnError": true, - "noEmit": true, - "inlineSourceMap": true, - "inlineSources": true, + // The combination of `baseUrl` with `paths` allows Ember's classic package + // layout, which is not resolvable with the Node resolution algorithm, to + // work with TypeScript. "baseUrl": ".", - "module": "es6", - "experimentalDecorators": true, "paths": { - "dummy/tests/*": [ - "tests/*" - ], - "dummy/*": [ - "tests/dummy/app/*", - "app/*" - ], - "ember-cloud-firestore-adapter": [ - "addon" - ], - "ember-cloud-firestore-adapter/*": [ - "addon/*" - ], - "ember-cloud-firestore-adapter/test-support": [ - "addon-test-support" - ], - "ember-cloud-firestore-adapter/test-support/*": [ - "addon-test-support/*" - ], - "*": [ - "types/*" - ] + "dummy/tests/*": ["tests/*"], + "dummy/*": ["tests/dummy/app/*", "app/*"], + "ember-cloud-firestore-adapter": ["addon"], + "ember-cloud-firestore-adapter/*": ["addon/*"], + "ember-cloud-firestore-adapter/test-support": ["addon-test-support"], + "ember-cloud-firestore-adapter/test-support/*": ["addon-test-support/*"], + "*": ["types/*"] } - }, - "include": [ - "app/**/*", - "addon/**/*", - "tests/**/*", - "types/**/*", - "test-support/**/*", - "addon-test-support/**/*" - ] + } }