From 5e1043feb7c5ae7612b426e4325a53a97b07a96f Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Fri, 31 May 2024 10:51:18 -0700 Subject: [PATCH 1/4] refactor: Replace Zone.scheduleMacroTask with ExperimentalPendingTasks --- src/compat/angularfire2.spec.ts | 9 +-- src/compat/database/database.spec.ts | 6 +- src/zones.ts | 102 ++++++++++++++------------- 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/src/compat/angularfire2.spec.ts b/src/compat/angularfire2.spec.ts index eef6b97bf..931dd025c 100644 --- a/src/compat/angularfire2.spec.ts +++ b/src/compat/angularfire2.spec.ts @@ -1,4 +1,4 @@ -import { CompilerFactory, DoBootstrap, NgModule, NgZone, PlatformRef } from '@angular/core'; +import { CompilerFactory, DoBootstrap, ExperimentalPendingTasks, NgModule, NgZone, PlatformRef } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { ɵAngularFireSchedulers, ɵZoneScheduler, ɵkeepUnstableUntilFirstFactory } from '@angular/fire'; import { AngularFireModule, FirebaseApp } from '@angular/fire/compat'; @@ -89,7 +89,7 @@ describe('angularfire', () => { let schedulers: ɵAngularFireSchedulers; let outsideZone: Zone; let insideZone: Zone; - beforeAll(() => { + beforeEach(() => { outsideZone = Zone.current; insideZone = Zone.current.fork({ name: 'ngZone' @@ -100,7 +100,7 @@ describe('angularfire', () => { runOutsideAngular: outsideZone.runGuarded.bind(outsideZone), runTask: insideZone.run.bind(insideZone) } as NgZone; - schedulers = new ɵAngularFireSchedulers(ngZone); + schedulers = new ɵAngularFireSchedulers(ngZone, TestBed.inject(ExperimentalPendingTasks)); }); it('should re-schedule emissions asynchronously', done => { @@ -157,7 +157,8 @@ describe('angularfire', () => { runTask: insideZone.run.bind(insideZone) } as NgZone, outsideAngular: new ɵZoneScheduler(outsideZone, testScheduler), - insideAngular: new ɵZoneScheduler(insideZone, testScheduler) + insideAngular: new ɵZoneScheduler(insideZone, testScheduler), + pendingTasks: TestBed.inject(ExperimentalPendingTasks), }; const keepUnstableOp = ɵkeepUnstableUntilFirstFactory(trackingSchedulers); diff --git a/src/compat/database/database.spec.ts b/src/compat/database/database.spec.ts index 5a104e4b4..527cebe30 100644 --- a/src/compat/database/database.spec.ts +++ b/src/compat/database/database.spec.ts @@ -1,11 +1,11 @@ -import { NgZone } from '@angular/core'; +import { ExperimentalPendingTasks, NgZone } from '@angular/core'; import { TestBed } from '@angular/core/testing'; import { ɵAngularFireSchedulers } from '@angular/fire'; import { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp } from '@angular/fire/compat'; import { AngularFireDatabase, AngularFireDatabaseModule, URL } from '@angular/fire/compat/database'; +import 'firebase/compat/database'; import { COMMON_CONFIG } from '../../../src/test-config'; import { rando } from '../../../src/utils'; -import 'firebase/compat/database'; describe('AngularFireDatabase', () => { let app: FirebaseApp; @@ -41,7 +41,7 @@ describe('AngularFireDatabase', () => { }); it('should accept a Firebase App in the constructor', (done) => { - const schedulers = new ɵAngularFireSchedulers(zone); + const schedulers = new ɵAngularFireSchedulers(zone, TestBed.inject(ExperimentalPendingTasks)); const database = new AngularFireDatabase( app.options, rando(), undefined, {}, zone, schedulers, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, diff --git a/src/zones.ts b/src/zones.ts index 2b6a6ffb1..1e1024b57 100644 --- a/src/zones.ts +++ b/src/zones.ts @@ -1,5 +1,9 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import { Injectable, NgZone } from '@angular/core'; +import { + ExperimentalPendingTasks, + Injectable, + NgZone +} from '@angular/core'; import { Observable, Operator, @@ -46,32 +50,21 @@ export class ɵZoneScheduler implements SchedulerLike { } class BlockUntilFirstOperator implements Operator { - // @ts-ignore - private task: MacroTask | null = null; - - constructor(private zone: any) { - } + constructor( + private zone: any, + private pendingTasks: ExperimentalPendingTasks + ) {} call(subscriber: Subscriber, source: Observable): TeardownLogic { - const unscheduleTask = this.unscheduleTask.bind(this); - // @ts-ignore - this.task = this.zone.run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop)); + const taskDone = this.zone.run(() => this.pendingTasks.add()); + // maybe this is a race condition, invoke in a timeout + // hold for 10ms while I try to figure out what is going on + const unscheduleTask = () => setTimeout(taskDone, 10); return source.pipe( tap({ next: unscheduleTask, complete: unscheduleTask, error: unscheduleTask }) ).subscribe(subscriber).add(unscheduleTask); } - - private unscheduleTask() { - // maybe this is a race condition, invoke in a timeout - // hold for 10ms while I try to figure out what is going on - setTimeout(() => { - if (this.task != null && this.task.state === 'scheduled') { - this.task.invoke(); - this.task = null; - } - }, 10); - } } @Injectable({ @@ -81,11 +74,15 @@ export class ɵAngularFireSchedulers { public readonly outsideAngular: ɵZoneScheduler; public readonly insideAngular: ɵZoneScheduler; - constructor(public ngZone: NgZone) { - // @ts-ignore - this.outsideAngular = ngZone.runOutsideAngular(() => new ɵZoneScheduler(Zone.current)); - // @ts-ignore - this.insideAngular = ngZone.run(() => new ɵZoneScheduler(Zone.current, asyncScheduler)); + constructor(public ngZone: NgZone, public pendingTasks: ExperimentalPendingTasks) { + this.outsideAngular = ngZone.runOutsideAngular( + // @ts-ignore + () => new ɵZoneScheduler(Zone.current) + ); + this.insideAngular = ngZone.run( + // @ts-ignore + () => new ɵZoneScheduler(Zone.current, asyncScheduler) + ); globalThis.ɵAngularFireScheduler ||= this; } } @@ -126,10 +123,14 @@ export function keepUnstableUntilFirst(obs$: Observable): Observable { * value from firebase but doesn't block the zone forever since the firebase subscription * is still alive. */ -export function ɵkeepUnstableUntilFirstFactory(schedulers: ɵAngularFireSchedulers) { - return function keepUnstableUntilFirst(obs$: Observable): Observable { +export function ɵkeepUnstableUntilFirstFactory( + schedulers: ɵAngularFireSchedulers +) { + return function keepUnstableUntilFirst( + obs$: Observable + ): Observable { obs$ = obs$.lift( - new BlockUntilFirstOperator(schedulers.ngZone) + new BlockUntilFirstOperator(schedulers.ngZone, schedulers.pendingTasks) ); return obs$.pipe( @@ -144,18 +145,17 @@ export function ɵkeepUnstableUntilFirstFactory(schedulers: ɵAngularFireSchedul } // @ts-ignore -const zoneWrapFn = (it: (...args: any[]) => any, macrotask: MacroTask|undefined) => { +const zoneWrapFn = ( + it: (...args: any[]) => any, + taskDone: VoidFunction | undefined +) => { // eslint-disable-next-line @typescript-eslint/no-this-alias const _this = this; // function() is needed for the arguments object return function() { const _arguments = arguments; - if (macrotask) { - setTimeout(() => { - if (macrotask.state === 'scheduled') { - macrotask.invoke(); - } - }, 10); + if (taskDone) { + setTimeout(taskDone, 10); } return run(() => it.apply(_this, _arguments)); }; @@ -163,20 +163,18 @@ const zoneWrapFn = (it: (...args: any[]) => any, macrotask: MacroTask|undefined) export const ɵzoneWrap = (it: T, blockUntilFirst: boolean): T => { // function() is needed for the arguments object - return function() { - // @ts-ignore - let macrotask: MacroTask | undefined; + return function () { + let taskDone: VoidFunction | undefined; const _arguments = arguments; - // if this is a callback function, e.g, onSnapshot, we should create a microtask and invoke it + // if this is a callback function, e.g, onSnapshot, we should create a pending task and complete it // only once one of the callback functions is tripped. for (let i = 0; i < arguments.length; i++) { if (typeof _arguments[i] === 'function') { if (blockUntilFirst) { - // @ts-ignore - macrotask ||= run(() => Zone.current.scheduleMacroTask('firebaseZoneBlock', noop, {}, noop, noop)); + taskDone ||= run(() => getSchedulers().pendingTasks.add()); } // TODO create a microtask to track callback functions - _arguments[i] = zoneWrapFn(_arguments[i], macrotask); + _arguments[i] = zoneWrapFn(_arguments[i], taskDone); } } const ret = runOutsideAngular(() => (it as any).apply(this, _arguments)); @@ -195,16 +193,20 @@ export const ɵzoneWrap = (it: T, blockUntilFirst: boolean): T => { return ret.pipe(keepUnstableUntilFirst) as any; } else if (ret instanceof Promise) { // eslint-disable-next-line @typescript-eslint/no-misused-promises - return run(() => new Promise((resolve, reject) => ret.then(it => run(() => resolve(it)), reason => run(() => reject(reason))))); - } else if (typeof ret === 'function' && macrotask) { + return run( + () => + new Promise((resolve, reject) => + ret.then( + (it) => run(() => resolve(it)), + (reason) => run(() => reject(reason)) + ) + ) + ); + } else if (typeof ret === 'function' && taskDone) { // Handle unsubscribe // function() is needed for the arguments object - return function() { - setTimeout(() => { - if (macrotask && macrotask.state === 'scheduled') { - macrotask.invoke(); - } - }, 10); + return function () { + setTimeout(taskDone, 10); return ret.apply(this, arguments); }; } else { From 56c19f37d408026edbceda729fdb527e3066e750 Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Fri, 31 May 2024 14:07:49 -0700 Subject: [PATCH 2/4] lint: Fix pre-commit issues --- package-lock.json | 1150 ++++++++++++++++++-- package.json | 8 +- src/analytics/firebase.ts | 4 +- src/auth/rxfire.ts | 4 +- src/compat/firestore/collection/changes.ts | 4 +- src/database/rxfire.ts | 6 +- src/firestore/lite/rxfire.ts | 8 +- src/firestore/rxfire.ts | 12 +- src/performance/rxfire.ts | 4 +- src/remote-config/rxfire.ts | 8 +- src/vertexai-preview/firebase.ts | 4 +- src/zones.ts | 12 +- 12 files changed, 1087 insertions(+), 137 deletions(-) diff --git a/package-lock.json b/package-lock.json index d1e93d4cf..b3729cbab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,8 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^18.0.0", + "@angular-eslint/builder": "^18.0.1", + "@angular-eslint/eslint-plugin": "^18.0.1", "@angular/animations": "^18.0.0", "@angular/cli": "^18.0.0", "@angular/compiler-cli": "^18.0.0", @@ -54,8 +56,8 @@ "@types/semver": "^7.1.0", "@types/triple-beam": "^1.3.0", "@types/winston": "^2.4.4", - "@typescript-eslint/eslint-plugin": "6.13.1", - "@typescript-eslint/parser": "6.13.1", + "@typescript-eslint/eslint-plugin": "^7.11.0", + "@typescript-eslint/parser": "^7.11.0", "conventional-changelog-cli": "^1.2.0", "cross-spawn": "^7.0.3", "eslint": "^8.54.0", @@ -943,6 +945,55 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-eslint/builder": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.0.1.tgz", + "integrity": "sha512-b/VUeTQznAmGdwP4OyPWyegqSRWub7E8/WXBqojrSFyLkFhpTiHpk/3/5G3LsgTb0zBfyAsqkA0yaadsHu9pjA==", + "dev": true, + "dependencies": { + "@nx/devkit": "^19.0.6", + "nx": "^19.0.6" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.0.1.tgz", + "integrity": "sha512-lr4Ysoo28FBOKcJFQUGTMpbWDcak+gyuYvyggp37ERvazE6EDomPFxzEHNqVT9EI9sZ+GDBOoPR+EdFh0ALGNw==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.0.1.tgz", + "integrity": "sha512-pS3SYLa9DA+ENklGxEUlcw6/xCxgDk9fgjyaheuSjDxL3TIh1pTa4V2TptODdcPh7XCYXiVmy+e/w79mXlGzOw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.0.1", + "@angular-eslint/utils": "18.0.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.0.1.tgz", + "integrity": "sha512-Q9lCySqg+9h2cz08+SoWj48cY1i04tL1k3bsQJmF2TsylAw2mSsNGX2X3h9WkdxY7sUoY0mP7MVW1iU54Gobcg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.0.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0-alpha.20", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, "node_modules/@angular/animations": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.0.0.tgz", @@ -4164,9 +4215,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", - "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5190,13 +5241,13 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -5217,9 +5268,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@inquirer/figures": { @@ -5352,6 +5403,18 @@ "node": ">=8" } }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -6072,6 +6135,232 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/@nrwl/devkit": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-19.1.1.tgz", + "integrity": "sha512-CrbEy4zBRPPV8gGtwpSgfxJUElXRxEGvvxQlrhoCKmzH7v9407jFjXpzYOipwa9u65a7raCCtsSKYuRdecRglQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "19.1.1" + } + }, + "node_modules/@nrwl/tao": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-19.1.1.tgz", + "integrity": "sha512-03iaf+rnOEf5HHLsiSA7QIk63mBtcU4vkqkggoYLxJpMthx5nD4Z12nk+G/Z5RKWYUG4k3j6G7CFiIQRYOy7TA==", + "dev": true, + "dependencies": { + "nx": "19.1.1", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nx/devkit": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-19.1.1.tgz", + "integrity": "sha512-YMt5vFaNMeIKgBwQ3RIFQG7AoYOksd8vNxwunirN95q/70HMIoJQsnRCMT45jVd9D/GIWASgY8QsGTMJfcO0qQ==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "19.1.1", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 17 <= 20" + } + }, + "node_modules/@nx/devkit/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-19.1.1.tgz", + "integrity": "sha512-5CcgmNhUg5N62zCuzNZfRRPvaLRZNhLk0OkpMa085atEshM8RUAMbN80ffINaBssYtKu6znJ9LhUK+q7C3KiFQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-19.1.1.tgz", + "integrity": "sha512-vDM9vZow3YLA3+7GKTqhtguNcbQPifMTbqm8Aevd/suqCChQsLyD1Hh1Z+o03RNolNTRacNb6GPvoKFY4BJ2tA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-19.1.1.tgz", + "integrity": "sha512-FfOBrc1vndWYXSZVgbB9nWRp8/jo7f9b3g3ZfqaVwsGpcYcwz7dxiPV7HQKysTR0WNVv1aTi2Dg1CF+F94qlPw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-19.1.1.tgz", + "integrity": "sha512-Bb94MmoOsPnTI4n1mrILSwGmx9I50LEkEOgksoiOEYdykWKjbz6z4ZnFCJHTeF0bca1OmF5iCjFWU42KlLUsRQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-19.1.1.tgz", + "integrity": "sha512-mqiRi95LOUTWldtif3f2aJOFLxg/2jnM1UYj85vUlaLZJmQK64OhQslCAAZCmEWkHAYqEooHaYqj30YmDb92jw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-19.1.1.tgz", + "integrity": "sha512-lhyVsuT19Ez4ynhen6dT+Zdq2cABXcphYSkVSASvZGvka/65AS+0D1hX0TFDPJvbTdsHwVszJQZzIqGmYUkhLA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-19.1.1.tgz", + "integrity": "sha512-zUQhMwz/gQ0up1iymwTqXbyLJca87HXOP+uAD5wfgarh0yhPDwcGaVsV8O8t2z8W/dH/yYmuppe3gAwsvd5SSg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-19.1.1.tgz", + "integrity": "sha512-3Gc2iwMbFAp50OlIqfgryTtZno/FqPW+AOP1Pijo/jJOZ8DHP3A7Zy8QoJYUgTQxCffzVbhshXW6yy403pV3OQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-19.1.1.tgz", + "integrity": "sha512-91LJG0triTdZDHnT9l1N1YuIwhmR7iCbKsEv345OdPhHJeQ6GAuJCD0SqDk6aZ13xr7LoRlS8c6bnfctXeslQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-19.1.1.tgz", + "integrity": "sha512-rEWRqcW1osCeaZ9KPfZWARIdOHGd0WXRW6iqqRvZZEAIbGlZP/89Sj2o9Fvs5oHpng7kfrqsDbpbikmmlX7HTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@opentelemetry/api": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", @@ -6580,6 +6869,12 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -7156,33 +7451,31 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz", - "integrity": "sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.11.0.tgz", + "integrity": "sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/type-utils": "6.13.1", - "@typescript-eslint/utils": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", - "debug": "^4.3.4", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/type-utils": "7.11.0", + "@typescript-eslint/utils": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -7191,26 +7484,26 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.1.tgz", - "integrity": "sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.11.0.tgz", + "integrity": "sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/typescript-estree": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", "debug": "^4.3.4" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -7219,16 +7512,16 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz", - "integrity": "sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", + "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1" + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -7236,25 +7529,25 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz", - "integrity": "sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.11.0.tgz", + "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.13.1", - "@typescript-eslint/utils": "6.13.1", + "@typescript-eslint/typescript-estree": "7.11.0", + "@typescript-eslint/utils": "7.11.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" }, "peerDependenciesMeta": { "typescript": { @@ -7263,12 +7556,12 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.1.tgz", - "integrity": "sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", + "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -7276,21 +7569,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz", - "integrity": "sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", + "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/visitor-keys": "6.13.1", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -7302,42 +7596,63 @@ } } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", + "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.13.1", - "@typescript-eslint/types": "6.13.1", - "@typescript-eslint/typescript-estree": "6.13.1", - "semver": "^7.5.4" + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/typescript-estree": "7.11.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz", - "integrity": "sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", + "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.13.1", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.11.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -7514,6 +7829,37 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -8106,6 +8452,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-loader": { "version": "9.1.3", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", @@ -10271,6 +10628,15 @@ "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -10386,10 +10752,31 @@ "node": ">=0.10.0" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "node_modules/dotenv": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", + "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, "node_modules/duplexify": { @@ -10422,6 +10809,21 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.777", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.777.tgz", @@ -10557,6 +10959,18 @@ "node": ">=10.13.0" } }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -10838,16 +11252,16 @@ } }, "node_modules/eslint": { - "version": "8.55.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", - "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.55.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -11652,6 +12066,36 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/filesize": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", @@ -12157,9 +12601,9 @@ "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -13749,9 +14193,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -14884,6 +15328,94 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/jasmine": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.1.0.tgz", @@ -14955,6 +15487,100 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -17504,6 +18130,12 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", @@ -17726,6 +18358,277 @@ "node": ">=0.10.0" } }, + "node_modules/nx": { + "version": "19.1.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-19.1.1.tgz", + "integrity": "sha512-9NPKoAQ+I3KcoFDThAVu7YznE9fKbV/AiE5dAXPbWfye9HjRdnhLQmXN122ADlq4pA5wkXwxvAxRLw2WA7Kkgw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nrwl/tao": "19.1.1", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.6.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.3.1", + "dotenv-expand": "~10.0.0", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "19.1.1", + "@nx/nx-darwin-x64": "19.1.1", + "@nx/nx-freebsd-x64": "19.1.1", + "@nx/nx-linux-arm-gnueabihf": "19.1.1", + "@nx/nx-linux-arm64-gnu": "19.1.1", + "@nx/nx-linux-arm64-musl": "19.1.1", + "@nx/nx-linux-x64-gnu": "19.1.1", + "@nx/nx-linux-x64-musl": "19.1.1", + "@nx/nx-win32-arm64-msvc": "19.1.1", + "@nx/nx-win32-x64-msvc": "19.1.1" + }, + "peerDependencies": { + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/nx/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nx/node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/nx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/nx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/nx/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/nx/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/nx/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/nx/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/nx/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -18738,6 +19641,32 @@ "node": ">= 0.8.0" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", @@ -19642,6 +20571,12 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "optional": true }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -21323,6 +22258,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "dependencies": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stubs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", @@ -22027,12 +22979,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" diff --git a/package.json b/package.json index 7befa1b1a..9dedf7b73 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,8 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^18.0.0", + "@angular-eslint/builder": "^18.0.1", + "@angular-eslint/eslint-plugin": "^18.0.1", "@angular/animations": "^18.0.0", "@angular/cli": "^18.0.0", "@angular/compiler-cli": "^18.0.0", @@ -90,8 +92,8 @@ "@types/semver": "^7.1.0", "@types/triple-beam": "^1.3.0", "@types/winston": "^2.4.4", - "@typescript-eslint/eslint-plugin": "6.13.1", - "@typescript-eslint/parser": "6.13.1", + "@typescript-eslint/eslint-plugin": "^7.11.0", + "@typescript-eslint/parser": "^7.11.0", "conventional-changelog-cli": "^1.2.0", "cross-spawn": "^7.0.3", "eslint": "^8.54.0", @@ -118,4 +120,4 @@ "typescript": ">=5.4 <5.5" }, "typings": "index.d.ts" -} \ No newline at end of file +} diff --git a/src/analytics/firebase.ts b/src/analytics/firebase.ts index b34d0b2df..31eb6f33c 100644 --- a/src/analytics/firebase.ts +++ b/src/analytics/firebase.ts @@ -10,9 +10,9 @@ import { setConsent as _setConsent, setCurrentScreen as _setCurrentScreen, setDefaultEventParameters as _setDefaultEventParameters, - settings as _settings, setUserId as _setUserId, - setUserProperties as _setUserProperties + setUserProperties as _setUserProperties, + settings as _settings } from 'firebase/analytics'; export { diff --git a/src/auth/rxfire.ts b/src/auth/rxfire.ts index f4fad8eb9..d964dd86c 100644 --- a/src/auth/rxfire.ts +++ b/src/auth/rxfire.ts @@ -2,8 +2,8 @@ import { ɵzoneWrap } from '@angular/fire'; import { authState as _authState, - user as _user, - idToken as _idToken + idToken as _idToken, + user as _user } from 'rxfire/auth'; export const authState = ɵzoneWrap(_authState, true); diff --git a/src/compat/firestore/collection/changes.ts b/src/compat/firestore/collection/changes.ts index 5676d47fb..53b1c20c7 100644 --- a/src/compat/firestore/collection/changes.ts +++ b/src/compat/firestore/collection/changes.ts @@ -98,7 +98,7 @@ function sliceAndSplice( export function combineChange(combined: DocumentChange[], change: DocumentChange): DocumentChange[] { switch (change.type) { case 'added': - if (combined[change.newIndex] && combined[change.newIndex].doc.ref.isEqual(change.doc.ref)) { + if (combined[change.newIndex]?.doc.ref.isEqual(change.doc.ref)) { // Not sure why the duplicates are getting fired } else { return sliceAndSplice(combined, change.newIndex, 0, change); @@ -119,7 +119,7 @@ export function combineChange(combined: DocumentChange[], change: Document } break; case 'removed': - if (combined[change.oldIndex] && combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) { + if (combined[change.oldIndex]?.doc.ref.isEqual(change.doc.ref)) { return sliceAndSplice(combined, change.oldIndex, 1); } break; diff --git a/src/database/rxfire.ts b/src/database/rxfire.ts index 10a411e06..a6ac2245d 100644 --- a/src/database/rxfire.ts +++ b/src/database/rxfire.ts @@ -1,14 +1,14 @@ // DO NOT MODIFY, this file is autogenerated by tools/build.ts import { ɵzoneWrap } from '@angular/fire'; import { + auditTrail as _auditTrail, + changeToData as _changeToData, fromRef as _fromRef, - stateChanges as _stateChanges, list as _list, listVal as _listVal, - auditTrail as _auditTrail, object as _object, objectVal as _objectVal, - changeToData as _changeToData + stateChanges as _stateChanges } from 'rxfire/database'; export { diff --git a/src/firestore/lite/rxfire.ts b/src/firestore/lite/rxfire.ts index 3b36d3559..0e3fdf174 100644 --- a/src/firestore/lite/rxfire.ts +++ b/src/firestore/lite/rxfire.ts @@ -2,13 +2,13 @@ import { ɵzoneWrap } from '@angular/fire'; import { collection as _collection, - collectionData as _collectionData, - collectionCountSnap as _collectionCountSnap, collectionCount as _collectionCount, + collectionCountSnap as _collectionCountSnap, + collectionData as _collectionData, doc as _doc, docData as _docData, - snapToData as _snapToData, - fromRef as _fromRef + fromRef as _fromRef, + snapToData as _snapToData } from 'rxfire/firestore/lite'; export const collectionSnapshots = ɵzoneWrap(_collection, true); diff --git a/src/firestore/rxfire.ts b/src/firestore/rxfire.ts index b7331b060..07e95c9c5 100644 --- a/src/firestore/rxfire.ts +++ b/src/firestore/rxfire.ts @@ -1,17 +1,17 @@ // DO NOT MODIFY, this file is autogenerated by tools/build.ts import { ɵzoneWrap } from '@angular/fire'; import { - collectionChanges as _collectionChanges, - collection as _collection, - sortedChanges as _sortedChanges, auditTrail as _auditTrail, - collectionData as _collectionData, - collectionCountSnap as _collectionCountSnap, + collection as _collection, + collectionChanges as _collectionChanges, collectionCount as _collectionCount, + collectionCountSnap as _collectionCountSnap, + collectionData as _collectionData, doc as _doc, docData as _docData, + fromRef as _fromRef, snapToData as _snapToData, - fromRef as _fromRef + sortedChanges as _sortedChanges } from 'rxfire/firestore'; export const collectionChanges = ɵzoneWrap(_collectionChanges, true); diff --git a/src/performance/rxfire.ts b/src/performance/rxfire.ts index 5b0ea78ea..7d71b321d 100644 --- a/src/performance/rxfire.ts +++ b/src/performance/rxfire.ts @@ -2,9 +2,9 @@ import { ɵzoneWrap } from '@angular/fire'; import { traceUntil as _traceUntil, - traceWhile as _traceWhile, traceUntilComplete as _traceUntilComplete, - traceUntilFirst as _traceUntilFirst + traceUntilFirst as _traceUntilFirst, + traceWhile as _traceWhile } from 'rxfire/performance'; export const traceUntil = ɵzoneWrap(_traceUntil, true); diff --git a/src/remote-config/rxfire.ts b/src/remote-config/rxfire.ts index 0c0d0de5a..d2fd59a52 100644 --- a/src/remote-config/rxfire.ts +++ b/src/remote-config/rxfire.ts @@ -1,11 +1,11 @@ // DO NOT MODIFY, this file is autogenerated by tools/build.ts import { ɵzoneWrap } from '@angular/fire'; import { - getValue as _getValue, - getString as _getString, - getNumber as _getNumber, + getAll as _getAll, getBoolean as _getBoolean, - getAll as _getAll + getNumber as _getNumber, + getString as _getString, + getValue as _getValue } from 'rxfire/remote-config'; export const getValueChanges = ɵzoneWrap(_getValue, true); diff --git a/src/vertexai-preview/firebase.ts b/src/vertexai-preview/firebase.ts index d5063a834..8d46493ce 100644 --- a/src/vertexai-preview/firebase.ts +++ b/src/vertexai-preview/firebase.ts @@ -2,8 +2,8 @@ export * from 'firebase/vertexai-preview'; import { ɵzoneWrap } from '@angular/fire'; import { - getVertexAI as _getVertexAI, - getGenerativeModel as _getGenerativeModel + getGenerativeModel as _getGenerativeModel, + getVertexAI as _getVertexAI } from 'firebase/vertexai-preview'; export const getVertexAI = ɵzoneWrap(_getVertexAI, true); diff --git a/src/zones.ts b/src/zones.ts index 1e1024b57..f57064824 100644 --- a/src/zones.ts +++ b/src/zones.ts @@ -17,10 +17,6 @@ import { } from 'rxjs'; import { observeOn, subscribeOn, tap } from 'rxjs/operators'; -// eslint-disable-next-line @typescript-eslint/no-empty-function -function noop() { -} - /** * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor. */ @@ -56,7 +52,7 @@ class BlockUntilFirstOperator implements Operator { ) {} call(subscriber: Subscriber, source: Observable): TeardownLogic { - const taskDone = this.zone.run(() => this.pendingTasks.add()); + const taskDone: VoidFunction = this.zone.run(() => this.pendingTasks.add()); // maybe this is a race condition, invoke in a timeout // hold for 10ms while I try to figure out what is going on const unscheduleTask = () => setTimeout(taskDone, 10); @@ -195,12 +191,12 @@ export const ɵzoneWrap = (it: T, blockUntilFirst: boolean): T => { // eslint-disable-next-line @typescript-eslint/no-misused-promises return run( () => - new Promise((resolve, reject) => + new Promise((resolve, reject) => { ret.then( (it) => run(() => resolve(it)), (reason) => run(() => reject(reason)) - ) - ) + ); + }) ); } else if (typeof ret === 'function' && taskDone) { // Handle unsubscribe From df2350b9c368c21b2d666ea508a1dfd614148ce5 Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Wed, 17 Jul 2024 00:02:21 +0000 Subject: [PATCH 3/4] fix: Guard access to global Zone in case it is undefined --- src/zones.ts | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/zones.ts b/src/zones.ts index f57064824..4fc34c7ee 100644 --- a/src/zones.ts +++ b/src/zones.ts @@ -17,6 +17,8 @@ import { } from 'rxjs'; import { observeOn, subscribeOn, tap } from 'rxjs/operators'; +declare const Zone: {current: unknown} | undefined; + /** * Schedules tasks so that they are invoked inside the Zone that is passed in the constructor. */ @@ -33,9 +35,13 @@ export class ɵZoneScheduler implements SchedulerLike { // Wrap the specified work function to make sure that if nested scheduling takes place the // work is executed in the correct zone const workInZone = function(this: SchedulerAction, state: any) { - targetZone.runGuarded(() => { + if (targetZone) { + targetZone.runGuarded(() => { + work.apply(this, [state]); + }); + } else { work.apply(this, [state]); - }); + } }; // Scheduling itself needs to be run in zone to ensure setInterval calls for async scheduling are done @@ -72,12 +78,13 @@ export class ɵAngularFireSchedulers { constructor(public ngZone: NgZone, public pendingTasks: ExperimentalPendingTasks) { this.outsideAngular = ngZone.runOutsideAngular( - // @ts-ignore - () => new ɵZoneScheduler(Zone.current) + () => new ɵZoneScheduler(typeof Zone === 'undefined' ? undefined : Zone.current) ); this.insideAngular = ngZone.run( - // @ts-ignore - () => new ɵZoneScheduler(Zone.current, asyncScheduler) + () => new ɵZoneScheduler( + typeof Zone === 'undefined' ? undefined : Zone.current, + asyncScheduler + ) ); globalThis.ɵAngularFireScheduler ||= this; } @@ -140,20 +147,15 @@ export function ɵkeepUnstableUntilFirstFactory( }; } -// @ts-ignore const zoneWrapFn = ( it: (...args: any[]) => any, taskDone: VoidFunction | undefined ) => { - // eslint-disable-next-line @typescript-eslint/no-this-alias - const _this = this; - // function() is needed for the arguments object - return function() { - const _arguments = arguments; + return (...args: any[]) => { if (taskDone) { setTimeout(taskDone, 10); } - return run(() => it.apply(_this, _arguments)); + return run(() => it.apply(this, args)); }; }; From 8d405f1799959a084fc7a83e174e8040ea7dfd25 Mon Sep 17 00:00:00 2001 From: Miles Malerba Date: Wed, 17 Jul 2024 03:44:29 +0000 Subject: [PATCH 4/4] build: Stop build reintroducing lint errors --- src/analytics/firebase.ts | 2 +- src/auth/rxfire.ts | 2 +- src/database/rxfire.ts | 6 +++--- src/firestore/lite/rxfire.ts | 6 +++--- src/firestore/rxfire.ts | 12 ++++++------ src/performance/rxfire.ts | 2 +- src/remote-config/rxfire.ts | 8 ++++---- src/vertexai-preview/firebase.ts | 2 +- tools/build.ts | 4 ++-- 9 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/analytics/firebase.ts b/src/analytics/firebase.ts index 31eb6f33c..07b5c2ae2 100644 --- a/src/analytics/firebase.ts +++ b/src/analytics/firebase.ts @@ -27,6 +27,6 @@ export const setAnalyticsCollectionEnabled = ɵzoneWrap(_setAnalyticsCollectionE export const setConsent = ɵzoneWrap(_setConsent, true); export const setCurrentScreen = ɵzoneWrap(_setCurrentScreen, true); export const setDefaultEventParameters = ɵzoneWrap(_setDefaultEventParameters, true); -export const settings = ɵzoneWrap(_settings, true); export const setUserId = ɵzoneWrap(_setUserId, true); export const setUserProperties = ɵzoneWrap(_setUserProperties, true); +export const settings = ɵzoneWrap(_settings, true); diff --git a/src/auth/rxfire.ts b/src/auth/rxfire.ts index d964dd86c..561f853bb 100644 --- a/src/auth/rxfire.ts +++ b/src/auth/rxfire.ts @@ -7,5 +7,5 @@ import { } from 'rxfire/auth'; export const authState = ɵzoneWrap(_authState, true); -export const user = ɵzoneWrap(_user, true); export const idToken = ɵzoneWrap(_idToken, true); +export const user = ɵzoneWrap(_user, true); diff --git a/src/database/rxfire.ts b/src/database/rxfire.ts index a6ac2245d..b34588af7 100644 --- a/src/database/rxfire.ts +++ b/src/database/rxfire.ts @@ -16,11 +16,11 @@ export { ListenerMethods } from 'rxfire/database'; +export const auditTrail = ɵzoneWrap(_auditTrail, true); +export const changeToData = ɵzoneWrap(_changeToData, true); export const fromRef = ɵzoneWrap(_fromRef, true); -export const stateChanges = ɵzoneWrap(_stateChanges, true); export const list = ɵzoneWrap(_list, true); export const listVal = ɵzoneWrap(_listVal, true); -export const auditTrail = ɵzoneWrap(_auditTrail, true); export const object = ɵzoneWrap(_object, true); export const objectVal = ɵzoneWrap(_objectVal, true); -export const changeToData = ɵzoneWrap(_changeToData, true); +export const stateChanges = ɵzoneWrap(_stateChanges, true); diff --git a/src/firestore/lite/rxfire.ts b/src/firestore/lite/rxfire.ts index 0e3fdf174..8e1d5e2b5 100644 --- a/src/firestore/lite/rxfire.ts +++ b/src/firestore/lite/rxfire.ts @@ -12,10 +12,10 @@ import { } from 'rxfire/firestore/lite'; export const collectionSnapshots = ɵzoneWrap(_collection, true); -export const collectionData = ɵzoneWrap(_collectionData, true); -export const collectionCountSnap = ɵzoneWrap(_collectionCountSnap, true); export const collectionCount = ɵzoneWrap(_collectionCount, true); +export const collectionCountSnap = ɵzoneWrap(_collectionCountSnap, true); +export const collectionData = ɵzoneWrap(_collectionData, true); export const docSnapshots = ɵzoneWrap(_doc, true); export const docData = ɵzoneWrap(_docData, true); -export const snapToData = ɵzoneWrap(_snapToData, true); export const fromRef = ɵzoneWrap(_fromRef, true); +export const snapToData = ɵzoneWrap(_snapToData, true); diff --git a/src/firestore/rxfire.ts b/src/firestore/rxfire.ts index 07e95c9c5..6b2eb8e92 100644 --- a/src/firestore/rxfire.ts +++ b/src/firestore/rxfire.ts @@ -14,14 +14,14 @@ import { sortedChanges as _sortedChanges } from 'rxfire/firestore'; -export const collectionChanges = ɵzoneWrap(_collectionChanges, true); -export const collectionSnapshots = ɵzoneWrap(_collection, true); -export const sortedChanges = ɵzoneWrap(_sortedChanges, true); export const auditTrail = ɵzoneWrap(_auditTrail, true); -export const collectionData = ɵzoneWrap(_collectionData, true); -export const collectionCountSnap = ɵzoneWrap(_collectionCountSnap, true); +export const collectionSnapshots = ɵzoneWrap(_collection, true); +export const collectionChanges = ɵzoneWrap(_collectionChanges, true); export const collectionCount = ɵzoneWrap(_collectionCount, true); +export const collectionCountSnap = ɵzoneWrap(_collectionCountSnap, true); +export const collectionData = ɵzoneWrap(_collectionData, true); export const docSnapshots = ɵzoneWrap(_doc, true); export const docData = ɵzoneWrap(_docData, true); -export const snapToData = ɵzoneWrap(_snapToData, true); export const fromRef = ɵzoneWrap(_fromRef, true); +export const snapToData = ɵzoneWrap(_snapToData, true); +export const sortedChanges = ɵzoneWrap(_sortedChanges, true); diff --git a/src/performance/rxfire.ts b/src/performance/rxfire.ts index 7d71b321d..b81aa9f95 100644 --- a/src/performance/rxfire.ts +++ b/src/performance/rxfire.ts @@ -8,6 +8,6 @@ import { } from 'rxfire/performance'; export const traceUntil = ɵzoneWrap(_traceUntil, true); -export const traceWhile = ɵzoneWrap(_traceWhile, true); export const traceUntilComplete = ɵzoneWrap(_traceUntilComplete, true); export const traceUntilFirst = ɵzoneWrap(_traceUntilFirst, true); +export const traceWhile = ɵzoneWrap(_traceWhile, true); diff --git a/src/remote-config/rxfire.ts b/src/remote-config/rxfire.ts index d2fd59a52..450c624e1 100644 --- a/src/remote-config/rxfire.ts +++ b/src/remote-config/rxfire.ts @@ -8,8 +8,8 @@ import { getValue as _getValue } from 'rxfire/remote-config'; -export const getValueChanges = ɵzoneWrap(_getValue, true); -export const getStringChanges = ɵzoneWrap(_getString, true); -export const getNumberChanges = ɵzoneWrap(_getNumber, true); -export const getBooleanChanges = ɵzoneWrap(_getBoolean, true); export const getAllChanges = ɵzoneWrap(_getAll, true); +export const getBooleanChanges = ɵzoneWrap(_getBoolean, true); +export const getNumberChanges = ɵzoneWrap(_getNumber, true); +export const getStringChanges = ɵzoneWrap(_getString, true); +export const getValueChanges = ɵzoneWrap(_getValue, true); diff --git a/src/vertexai-preview/firebase.ts b/src/vertexai-preview/firebase.ts index 8d46493ce..bedac22b3 100644 --- a/src/vertexai-preview/firebase.ts +++ b/src/vertexai-preview/firebase.ts @@ -6,5 +6,5 @@ import { getVertexAI as _getVertexAI } from 'firebase/vertexai-preview'; -export const getVertexAI = ɵzoneWrap(_getVertexAI, true); export const getGenerativeModel = ɵzoneWrap(_getGenerativeModel, true); +export const getVertexAI = ɵzoneWrap(_getVertexAI, true); diff --git a/tools/build.ts b/tools/build.ts index 6fe2dfb30..3384e799d 100644 --- a/tools/build.ts +++ b/tools/build.ts @@ -1,6 +1,6 @@ -import { join } from 'path'; import { spawn } from 'cross-spawn'; import { copy, writeFile } from 'fs-extra'; +import { join } from 'path'; import { keys as tsKeys } from 'ts-transformer-keys'; interface OverrideOptions { @@ -19,7 +19,7 @@ function zoneWrapExports() { overrides: Record = {} ) => { const imported = await import(path); - const toBeExported: [string, string, boolean][] = exports. + const toBeExported: [string, string, boolean][] = exports.sort(). filter(it => !it.startsWith('_') && overrides[it] !== null && overrides[it]?.override !== true). map(importName => { const zoneWrap = typeof imported[importName] === 'function' &&