From c6ecac8ac7110622d178d9450446318a4d0c474e Mon Sep 17 00:00:00 2001 From: Mila <107142260+milaGGL@users.noreply.github.com> Date: Thu, 28 Mar 2024 13:30:54 -0400 Subject: [PATCH 1/6] Fix CSI timestamp issue (#8090) --- .changeset/friendly-eyes-destroy.md | 5 + .../src/index/firestore_index_value_writer.ts | 15 +- .../firestore/src/local/indexeddb_schema.ts | 3 +- .../src/local/indexeddb_schema_converter.ts | 13 ++ .../src/local/indexeddb_sentinels.ts | 5 +- .../firestore_index_value_writer.test.ts | 173 ++++++++++++++++++ .../unit/index/ordered_code_writer.test.ts | 2 +- .../test/unit/local/index_manager.test.ts | 101 +++++++++- 8 files changed, 307 insertions(+), 10 deletions(-) create mode 100644 .changeset/friendly-eyes-destroy.md create mode 100644 packages/firestore/test/unit/index/firestore_index_value_writer.test.ts diff --git a/.changeset/friendly-eyes-destroy.md b/.changeset/friendly-eyes-destroy.md new file mode 100644 index 00000000000..5c805043700 --- /dev/null +++ b/.changeset/friendly-eyes-destroy.md @@ -0,0 +1,5 @@ +--- +'@firebase/firestore': patch +--- + +Fixed the CSI issue where indexing on timestamp fields leads to incorrect query results. diff --git a/packages/firestore/src/index/firestore_index_value_writer.ts b/packages/firestore/src/index/firestore_index_value_writer.ts index 9bbcd6fcc63..9d5d86ab640 100644 --- a/packages/firestore/src/index/firestore_index_value_writer.ts +++ b/packages/firestore/src/index/firestore_index_value_writer.ts @@ -16,7 +16,11 @@ */ import { DocumentKey } from '../model/document_key'; -import { normalizeByteString, normalizeNumber } from '../model/normalize'; +import { + normalizeByteString, + normalizeNumber, + normalizeTimestamp +} from '../model/normalize'; import { isMaxValue } from '../model/values'; import { ArrayValue, MapValue, Value } from '../protos/firestore_proto_api'; import { fail } from '../util/assert'; @@ -93,14 +97,13 @@ export class FirestoreIndexValueWriter { } } } else if ('timestampValue' in indexValue) { - const timestamp = indexValue.timestampValue!; + let timestamp = indexValue.timestampValue!; this.writeValueTypeLabel(encoder, INDEX_TYPE_TIMESTAMP); if (typeof timestamp === 'string') { - encoder.writeString(timestamp); - } else { - encoder.writeString(`${timestamp.seconds || ''}`); - encoder.writeNumber(timestamp.nanos || 0); + timestamp = normalizeTimestamp(timestamp); } + encoder.writeString(`${timestamp.seconds || ''}`); + encoder.writeNumber(timestamp.nanos || 0); } else if ('stringValue' in indexValue) { this.writeIndexString(indexValue.stringValue!, encoder); this.writeTruncationMarker(encoder); diff --git a/packages/firestore/src/local/indexeddb_schema.ts b/packages/firestore/src/local/indexeddb_schema.ts index c4373f3881e..b832f29a035 100644 --- a/packages/firestore/src/local/indexeddb_schema.ts +++ b/packages/firestore/src/local/indexeddb_schema.ts @@ -51,9 +51,10 @@ import { DbTimestampKey } from './indexeddb_sentinels'; * document lookup via `getAll()`. * 14. Add overlays. * 15. Add indexing support. + * 16. Parse timestamp strings before creating index entries. */ -export const SCHEMA_VERSION = 15; +export const SCHEMA_VERSION = 16; /** * Wrapper class to store timestamps (seconds and nanos) in IndexedDb objects. diff --git a/packages/firestore/src/local/indexeddb_schema_converter.ts b/packages/firestore/src/local/indexeddb_schema_converter.ts index 3509db11a14..b65a63a627f 100644 --- a/packages/firestore/src/local/indexeddb_schema_converter.ts +++ b/packages/firestore/src/local/indexeddb_schema_converter.ts @@ -256,6 +256,19 @@ export class SchemaConverter implements SimpleDbSchemaConverter { p = p.next(() => createFieldIndex(db)); } + if (fromVersion < 16 && toVersion >= 16) { + // Clear the object stores to remove possibly corrupted index entries + p = p + .next(() => { + const indexStateStore = txn.objectStore(DbIndexStateStore); + indexStateStore.clear(); + }) + .next(() => { + const indexEntryStore = txn.objectStore(DbIndexEntryStore); + indexEntryStore.clear(); + }); + } + return p; } diff --git a/packages/firestore/src/local/indexeddb_sentinels.ts b/packages/firestore/src/local/indexeddb_sentinels.ts index f0b92c1224a..854b146ed7f 100644 --- a/packages/firestore/src/local/indexeddb_sentinels.ts +++ b/packages/firestore/src/local/indexeddb_sentinels.ts @@ -414,6 +414,7 @@ export const V15_STORES = [ DbIndexStateStore, DbIndexEntryStore ]; +export const V16_STORES = V15_STORES; /** * The list of all default IndexedDB stores used throughout the SDK. This is @@ -424,7 +425,9 @@ export const ALL_STORES = V12_STORES; /** Returns the object stores for the provided schema. */ export function getObjectStores(schemaVersion: number): string[] { - if (schemaVersion === 15) { + if (schemaVersion === 16) { + return V16_STORES; + } else if (schemaVersion === 15) { return V15_STORES; } else if (schemaVersion === 14) { return V14_STORES; diff --git a/packages/firestore/test/unit/index/firestore_index_value_writer.test.ts b/packages/firestore/test/unit/index/firestore_index_value_writer.test.ts new file mode 100644 index 00000000000..8f7cd7c973f --- /dev/null +++ b/packages/firestore/test/unit/index/firestore_index_value_writer.test.ts @@ -0,0 +1,173 @@ +/** + * @license + * Copyright 2024 Google LLC + * + * Licensed under the Apache License, Version 2.0x00 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0x00 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { expect } from 'chai'; + +import { FirestoreIndexValueWriter } from '../../../src/index/firestore_index_value_writer'; +import { IndexByteEncoder } from '../../../src/index/index_byte_encoder'; +import { Timestamp } from '../../../src/lite-api/timestamp'; +import { IndexKind } from '../../../src/model/field_index'; +import type { Value } from '../../../src/protos/firestore_proto_api'; +import { toTimestamp } from '../../../src/remote/serializer'; +import { JSON_SERIALIZER } from '../local/persistence_test_helpers'; + +import { compare } from './ordered_code_writer.test'; + +describe('Firestore Index Value Writer', () => { + function compareIndexEncodedValues( + value1: Value, + value2: Value, + direction: IndexKind + ): number { + const encoder1 = new IndexByteEncoder(); + const encoder2 = new IndexByteEncoder(); + FirestoreIndexValueWriter.INSTANCE.writeIndexValue( + value1, + encoder1.forKind(direction) + ); + + FirestoreIndexValueWriter.INSTANCE.writeIndexValue( + value2, + encoder2.forKind(direction) + ); + + return compare(encoder1.encodedBytes(), encoder2.encodedBytes()); + } + + describe('can gracefully handle different format of timestamp', () => { + it('can handle different format of timestamp', () => { + const value1 = { timestampValue: '2016-01-02T10:20:50.850Z' }; + const value2 = { timestampValue: '2016-01-02T10:20:50.850000Z' }; + const value3 = { timestampValue: '2016-01-02T10:20:50.850000000Z' }; + const value4 = { + timestampValue: { seconds: 1451730050, nanos: 850000000 } + }; + const value5 = { + timestampValue: toTimestamp( + JSON_SERIALIZER, + new Timestamp(1451730050, 850000000) + ) + }; + expect( + compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value5, IndexKind.ASCENDING) + ).to.equal(0); + + expect( + compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value5, IndexKind.DESCENDING) + ).to.equal(0); + }); + + it('can handle timestamps with 0 nanoseconds', () => { + const value1 = { timestampValue: '2016-01-02T10:20:50Z' }; + const value2 = { timestampValue: '2016-01-02T10:20:50.000000000Z' }; + const value3 = { timestampValue: { seconds: 1451730050, nanos: 0 } }; + const value4 = { + timestampValue: toTimestamp( + JSON_SERIALIZER, + new Timestamp(1451730050, 0) + ) + }; + expect( + compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING) + ).to.equal(0); + + expect( + compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING) + ).to.equal(0); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING) + ).to.equal(0); + }); + + it('can compare timestamps with different formats', () => { + const value1 = { timestampValue: '2016-01-02T10:20:50Z' }; + const value2 = { timestampValue: '2016-01-02T10:20:50.000001Z' }; + const value3 = { + timestampValue: { seconds: 1451730050, nanos: 999999999 } + }; + const value4 = { + timestampValue: toTimestamp( + JSON_SERIALIZER, + new Timestamp(1451730050, 1) + ) + }; + expect( + compareIndexEncodedValues(value1, value2, IndexKind.ASCENDING) + ).to.equal(-1); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.ASCENDING) + ).to.equal(-1); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.ASCENDING) + ).to.equal(-1); + expect( + compareIndexEncodedValues(value2, value3, IndexKind.ASCENDING) + ).to.equal(-1); + expect( + compareIndexEncodedValues(value2, value4, IndexKind.ASCENDING) + ).to.equal(1); + expect( + compareIndexEncodedValues(value3, value4, IndexKind.ASCENDING) + ).to.equal(1); + + expect( + compareIndexEncodedValues(value1, value2, IndexKind.DESCENDING) + ).to.equal(1); + expect( + compareIndexEncodedValues(value1, value3, IndexKind.DESCENDING) + ).to.equal(1); + expect( + compareIndexEncodedValues(value1, value4, IndexKind.DESCENDING) + ).to.equal(1); + expect( + compareIndexEncodedValues(value2, value3, IndexKind.DESCENDING) + ).to.equal(1); + expect( + compareIndexEncodedValues(value2, value4, IndexKind.DESCENDING) + ).to.equal(-1); + expect( + compareIndexEncodedValues(value3, value4, IndexKind.DESCENDING) + ).to.equal(-1); + }); + }); +}); diff --git a/packages/firestore/test/unit/index/ordered_code_writer.test.ts b/packages/firestore/test/unit/index/ordered_code_writer.test.ts index b3f58987f49..6d87ddb4849 100644 --- a/packages/firestore/test/unit/index/ordered_code_writer.test.ts +++ b/packages/firestore/test/unit/index/ordered_code_writer.test.ts @@ -226,7 +226,7 @@ function fromHex(hexString: string): Uint8Array { return bytes; } -function compare(left: Uint8Array, right: Uint8Array): number { +export function compare(left: Uint8Array, right: Uint8Array): number { for (let i = 0; i < Math.min(left.length, right.length); ++i) { if (left[i] < right[i]) { return -1; diff --git a/packages/firestore/test/unit/local/index_manager.test.ts b/packages/firestore/test/unit/local/index_manager.test.ts index 0788dcabbde..5d27fcc257f 100644 --- a/packages/firestore/test/unit/local/index_manager.test.ts +++ b/packages/firestore/test/unit/local/index_manager.test.ts @@ -30,6 +30,7 @@ import { queryWithLimit, queryWithStartAt } from '../../../src/core/query'; +import { Timestamp } from '../../../src/lite-api/timestamp'; import { displayNameForIndexType, IndexType @@ -37,7 +38,7 @@ import { import { IndexedDbPersistence } from '../../../src/local/indexeddb_persistence'; import { Persistence } from '../../../src/local/persistence'; import { documentMap } from '../../../src/model/collections'; -import { Document } from '../../../src/model/document'; +import { Document, MutableDocument } from '../../../src/model/document'; import { IndexKind, IndexOffset, @@ -45,6 +46,18 @@ import { } from '../../../src/model/field_index'; import { JsonObject } from '../../../src/model/object_value'; import { canonicalId } from '../../../src/model/values'; +import { + ApiClientObjectMap as ProtoObjectMap, + Document as ProtoDocument, + Value as ProtoValue +} from '../../../src/protos/firestore_proto_api'; +import { + fromDocument, + JsonProtoSerializer, + toName, + toTimestamp, + toVersion +} from '../../../src/remote/serializer'; import { addEqualityMatcher } from '../../util/equality_matcher'; import { bound, @@ -95,6 +108,11 @@ describe('IndexedDbIndexManager', async () => { } let persistencePromise: Promise; + const serializer = new JsonProtoSerializer( + persistenceHelpers.TEST_DATABASE_ID, + /* useProto3Json= */ true + ); + beforeEach(async () => { persistencePromise = persistenceHelpers.testIndexedDbPersistence(); }); @@ -1026,6 +1044,62 @@ describe('IndexedDbIndexManager', async () => { await verifyResults(testingQuery, 'coll/val3'); }); + it('can index timestamp fields of different format', async () => { + await indexManager.addFieldIndex( + fieldIndex('coll', { fields: [['date', IndexKind.ASCENDING]] }) + ); + + await addDocFromProto('coll/val1', { + 'date': { timestampValue: '2016-01-02T10:20:50Z' } + }); + await addDocFromProto('coll/val2', { + 'date': { timestampValue: '2016-01-02T10:20:50.000000000Z' } + }); + await addDocFromProto('coll/val3', { + 'date': { timestampValue: '2016-01-02T10:20:50.850Z' } + }); + await addDocFromProto('coll/val4', { + 'date': { timestampValue: '2016-01-02T10:20:50.850000000Z' } + }); + await addDocFromProto('coll/val5', { + 'date': { timestampValue: { seconds: 1451730050, nanos: 999999999 } } + }); + await addDocFromProto('coll/val6', { + 'date': { + timestampValue: toTimestamp(serializer, new Timestamp(1451730050, 1)) + } + }); + + let q = queryWithAddedOrderBy(query('coll'), orderBy('date')); + await verifyResults( + q, + 'coll/val1', + 'coll/val2', + 'coll/val6', + 'coll/val3', + 'coll/val4', + 'coll/val5' + ); + + q = queryWithAddedFilter( + query('coll'), + filter('date', '==', new Timestamp(1451730050, 850000000)) + ); + await verifyResults(q, 'coll/val3', 'coll/val4'); + + q = queryWithAddedFilter( + query('coll'), + filter('date', '>=', new Timestamp(1451730050, 850000000)) + ); + await verifyResults(q, 'coll/val3', 'coll/val4', 'coll/val5'); + + q = queryWithAddedFilter( + query('coll'), + filter('date', '>', new Timestamp(1451730050, 0)) + ); + await verifyResults(q, 'coll/val6', 'coll/val3', 'coll/val4', 'coll/val5'); + }); + it('support advances queries', async () => { // This test compares local query results with those received from the Java // Server SDK. @@ -1828,6 +1902,31 @@ describe('IndexedDbIndexManager', async () => { return addDocs(doc(key, 1, data)); } + function addDocFromProto( + key: string, + data: ProtoObjectMap | undefined + ): Promise { + return addDocs(docFromProto(key, 1, data)); + } + + function docFromProto( + keyStr: string, + versionNumber: number, + data: ProtoObjectMap | undefined + ): MutableDocument { + const proto: ProtoDocument = { + name: toName(serializer, key(keyStr)), + fields: data, + updateTime: toVersion(serializer, version(versionNumber)), + createTime: toVersion(serializer, version(versionNumber)) + }; + return fromDocument( + serializer, + proto, + /* hasCommittedMutations= */ undefined + ); + } + async function verifyResults(query: Query, ...keys: string[]): Promise { const target = queryToTarget(query); const actualResults = await indexManager.getDocumentsMatchingTarget(target); From 666dddae0b050204c59f70e74010fd92a6b54187 Mon Sep 17 00:00:00 2001 From: Mila <107142260+milaGGL@users.noreply.github.com> Date: Fri, 29 Mar 2024 10:19:01 -0400 Subject: [PATCH 2/6] Move MIEQ tests to composite index file (#7999) --- .changeset/odd-gorillas-cough.md | 6 + .../firestore_composite_index_config.tf | 247 ++++++- .../api/composite_index_query.test.ts | 652 +++++++++++++++++- .../test/integration/api/query.test.ts | 605 ---------------- .../util/composite_index_test_helper.ts | 13 +- 5 files changed, 914 insertions(+), 609 deletions(-) create mode 100644 .changeset/odd-gorillas-cough.md diff --git a/.changeset/odd-gorillas-cough.md b/.changeset/odd-gorillas-cough.md new file mode 100644 index 00000000000..b89c5de1a38 --- /dev/null +++ b/.changeset/odd-gorillas-cough.md @@ -0,0 +1,6 @@ +--- +'@firebase/firestore': minor +'firebase': minor +--- + +Enable queries with range & inequality filters on multiple fields. diff --git a/packages/firestore/firestore_composite_index_config.tf b/packages/firestore/firestore_composite_index_config.tf index 217dbb70294..495c6ef1467 100644 --- a/packages/firestore/firestore_composite_index_config.tf +++ b/packages/firestore/firestore_composite_index_config.tf @@ -115,6 +115,36 @@ locals { }, ] index9 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "a" + order = "ASCENDING" + }, + + { + field_path = "b" + order = "ASCENDING" + }, + ] + index10 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "b" + order = "DESCENDING" + }, + + { + field_path = "a" + order = "DESCENDING" + }, + ] + index11 = [ { field_path = "testId" order = "ASCENDING" @@ -128,7 +158,7 @@ locals { order = "ASCENDING" }, ] - index10 = [ + index12 = [ { field_path = "testId" order = "ASCENDING" @@ -146,7 +176,7 @@ locals { order = "ASCENDING" }, ] - index11 = [ + index13 = [ { field_path = "rating" array_config = "CONTAINS" @@ -164,5 +194,218 @@ locals { order = "ASCENDING" }, ] + index14 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "sort" + order = "ASCENDING" + } + ] + index15 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "sort" + order = "ASCENDING" + }, + { + field_path = "v" + order = "ASCENDING" + } + ] + index16 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "v" + order = "DESCENDING" + }, + { + field_path = "key" + order = "DESCENDING" + }, + { + field_path = "sort" + order = "DESCENDING" + }, + ] + index17 = [ + { + field_path = "v" + array_config = "CONTAINS" + }, + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "sort" + order = "ASCENDING" + }, + ] + index18 = [ + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "testId" + order = "ASCENDING" + }, + + { + field_path = "sort" + order = "DESCENDING" + }, + { + field_path = "v" + order = "ASCENDING" + }, + ] + index19 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + + { + field_path = "sort" + order = "DESCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "v" + order = "ASCENDING" + }, + ] + index20 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "v" + order = "ASCENDING" + }, + + { + field_path = "sort" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + + ] + index21 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "sort" + order = "DESCENDING" + }, + { + field_path = "key" + order = "DESCENDING" + }, + + ] + index22 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "v" + order = "DESCENDING" + }, + { + field_path = "sort" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + ] + index23 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "name" + order = "ASCENDING" + }, + { + field_path = "metadata.createdAt" + order = "ASCENDING" + }, + ] + index24 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "name" + order = "DESCENDING" + }, + { + field_path = "field" + order = "DESCENDING" + }, + { + field_path = "`field.dot`" + order = "DESCENDING" + }, + { + field_path = "`field\\\\slash`" + order = "DESCENDING" + }, + ], + index25 = [ + { + field_path = "testId" + order = "ASCENDING" + }, + { + field_path = "v" + order = "ASCENDING" + }, + { + field_path = "key" + order = "ASCENDING" + }, + { + field_path = "sort" + order = "ASCENDING" + }, + ] } } diff --git a/packages/firestore/test/integration/api/composite_index_query.test.ts b/packages/firestore/test/integration/api/composite_index_query.test.ts index da70ac1ece7..04cdafe7169 100644 --- a/packages/firestore/test/integration/api/composite_index_query.test.ts +++ b/packages/firestore/test/integration/api/composite_index_query.test.ts @@ -30,7 +30,12 @@ import { count, doc, writeBatch, - collectionGroup + collectionGroup, + FieldPath, + and, + getCountFromServer, + documentId, + disableNetwork } from '../util/firebase_export'; import { apiDescribe } from '../util/helpers'; @@ -302,4 +307,649 @@ apiDescribe('Composite Index Queries', persistence => { }); }); }); + + describe('Multiple Inequality', () => { + it('can use multiple inequality filters', async () => { + const testDocs = { + doc1: { key: 'a', sort: 0, v: 0 }, + doc2: { key: 'b', sort: 3, v: 1 }, + doc3: { key: 'c', sort: 1, v: 3 }, + doc4: { key: 'd', sort: 2, v: 2 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + // Multiple inequality fields + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '<=', 2), + where('v', '>', 2) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc3']); + + // Duplicate inequality fields + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '<=', 2), + where('sort', '>', 1) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc4']); + + // With multiple IN + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>=', 'a'), + where('sort', '<=', 2), + where('v', 'in', [2, 3, 4]), + where('sort', 'in', [2, 3]) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc4']); + + // With NOT-IN + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>=', 'a'), + where('sort', '<=', 2), + where('v', 'not-in', [2, 4, 5]) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc1', 'doc3']); + + // With orderby + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>=', 'a'), + where('sort', '<=', 2), + orderBy('v', 'desc') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc3', + 'doc4', + 'doc1' + ]); + + // With limit + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>=', 'a'), + where('sort', '<=', 2), + orderBy('v', 'desc'), + limit(2) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc3', 'doc4']); + + // With limitToLast + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>=', 'a'), + where('sort', '<=', 2), + orderBy('v', 'desc'), + limitToLast(2) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc4', 'doc1']); + }); + }); + + it('can use on special values', async () => { + const testDocs = { + doc1: { key: 'a', sort: 0, v: 0 }, + doc2: { key: 'b', sort: NaN, v: 1 }, + doc3: { key: 'c', sort: null, v: 3 }, + doc4: { key: 'd', v: 0 }, + doc5: { key: 'e', sort: 1 }, + doc6: { key: 'f', sort: 1, v: 1 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '<=', 2) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc5', 'doc6']); + + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '<=', 2), + where('v', '<=', 1) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc6']); + }); + }); + + it('can use with array membership', async () => { + const testDocs = { + doc1: { key: 'a', sort: 0, v: [0] }, + doc2: { key: 'b', sort: 1, v: [0, 1, 3] }, + doc3: { key: 'c', sort: 1, v: [] }, + doc4: { key: 'd', sort: 2, v: [1] }, + doc5: { key: 'e', sort: 3, v: [2, 4] }, + doc6: { key: 'f', sort: 4, v: [NaN] }, + doc7: { key: 'g', sort: 4, v: [null] } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '>=', 1), + where('v', 'array-contains', 0) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc2']); + + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '>=', 1), + where('v', 'array-contains-any', [0, 1]) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc2', 'doc4']); + }); + }); + + it('can use with nested field', () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const testData = (n?: number): any => { + n = n || 1; + return { + name: 'room ' + n, + metadata: { + createdAt: n + }, + field: 'field ' + n, + 'field.dot': n, + 'field\\slash': n + }; + }; + + const testDocs = { + 'doc1': testData(400), + 'doc2': testData(200), + 'doc3': testData(100), + 'doc4': testData(300) + }; + + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('metadata.createdAt', '<=', 500), + where('metadata.createdAt', '>', 100), + where('name', '!=', 'room 200'), + orderBy('name') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc4', 'doc1']); + + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('field', '>=', 'field 100'), + where(new FieldPath('field.dot'), '!=', 300), + where('field\\slash', '<', 400), + orderBy('name', 'desc') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc2', 'doc3']); + }); + }); + + it('can use with nested composite filters', async () => { + const testDocs = { + doc1: { key: 'a', sort: 0, v: 5 }, + doc2: { key: 'aa', sort: 4, v: 4 }, + doc3: { key: 'c', sort: 3, v: 3 }, + doc4: { key: 'b', sort: 2, v: 2 }, + doc5: { key: 'b', sort: 2, v: 1 }, + doc6: { key: 'b', sort: 0, v: 0 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + let snapshot = await testHelper.getDocs( + testHelper.compositeQuery( + coll, + or( + and(where('key', '==', 'b'), where('sort', '<=', 2)), + and(where('key', '!=', 'b'), where('v', '>', 4)) + ) + ) + ); + // Implicitly ordered by: 'key' asc, 'sort' asc, 'v' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc1', + 'doc6', + 'doc5', + 'doc4' + ]); + + snapshot = await testHelper.getDocs( + testHelper.compositeQuery( + coll, + or( + and(where('key', '==', 'b'), where('sort', '<=', 2)), + and(where('key', '!=', 'b'), where('v', '>', 4)) + ), + orderBy('sort', 'desc'), + orderBy('key') + ) + ); + // Ordered by: 'sort' desc, 'key' asc, 'v' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc5', + 'doc4', + 'doc1', + 'doc6' + ]); + + snapshot = await testHelper.getDocs( + testHelper.compositeQuery( + coll, + and( + or( + and(where('key', '==', 'b'), where('sort', '<=', 4)), + and(where('key', '!=', 'b'), where('v', '>=', 4)) + ), + or( + and(where('key', '>', 'b'), where('sort', '>=', 1)), + and(where('key', '<', 'b'), where('v', '>', 0)) + ) + ) + ) + ); + // Implicitly ordered by: 'key' asc, 'sort' asc, 'v' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot, ['doc1', 'doc2']); + }); + }); + + it('inequality fields will be implicitly ordered lexicographically', async () => { + const testDocs = { + doc1: { key: 'a', sort: 0, v: 5 }, + doc2: { key: 'aa', sort: 4, v: 4 }, + doc3: { key: 'b', sort: 3, v: 3 }, + doc4: { key: 'b', sort: 2, v: 2 }, + doc5: { key: 'b', sort: 2, v: 1 }, + doc6: { key: 'b', sort: 0, v: 0 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '>', 1), + where('v', 'in', [1, 2, 3, 4]) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc4', + 'doc5', + 'doc3' + ]); + + // Implicitly ordered by: 'key' asc, 'sort' asc,__name__ asc + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('sort', '>', 1), + where('key', '!=', 'a'), + where('v', 'in', [1, 2, 3, 4]) + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc4', + 'doc5', + 'doc3' + ]); + }); + }); + + it('can use multiple explicit order by field', async () => { + const testDocs = { + doc1: { key: 'a', sort: 5, v: 0 }, + doc2: { key: 'aa', sort: 4, v: 0 }, + doc3: { key: 'b', sort: 3, v: 1 }, + doc4: { key: 'b', sort: 2, v: 1 }, + doc5: { key: 'bb', sort: 1, v: 1 }, + doc6: { key: 'c', sort: 0, v: 2 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + // Ordered by: 'v' asc, 'key' asc, 'sort' asc, __name__ asc + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + orderBy('v') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc4', + 'doc3', + 'doc5' + ]); + + // Ordered by: 'v asc, 'sort' asc, 'key' asc, __name__ asc + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + orderBy('v'), + orderBy('sort') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc5', + 'doc4', + 'doc3' + ]); + + // Implicit order by matches the direction of last explicit order by. + // Ordered by: 'v' desc, 'key' desc, 'sort' desc, __name__ desc + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + orderBy('v', 'desc') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc5', + 'doc3', + 'doc4', + 'doc2' + ]); + + // Ordered by: 'v desc, 'sort' asc, 'key' asc, __name__ asc + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + orderBy('v', 'desc'), + orderBy('sort') + ) + ); + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc5', + 'doc4', + 'doc3', + 'doc2' + ]); + }); + }); + + it('can use in aggregate query', async () => { + const testDocs = { + doc1: { key: 'a', sort: 5, v: 0 }, + doc2: { key: 'aa', sort: 4, v: 0 }, + doc3: { key: 'b', sort: 3, v: 1 }, + doc4: { key: 'b', sort: 2, v: 1 }, + doc5: { key: 'bb', sort: 1, v: 1 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + const snapshot1 = await getCountFromServer( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + orderBy('v') + ) + ); + + expect(snapshot1.data().count).to.equal(4); + + const snapshot2 = await getAggregateFromServer( + testHelper.query( + coll, + where('key', '>', 'a'), + where('sort', '>=', 1), + where('v', '!=', 0) + ), + { + count: count(), + sum: sum('sort'), + avg: average('v') + } + ); + expect(snapshot2.data().count).to.equal(3); + expect(snapshot2.data().sum).to.equal(6); + expect(snapshot2.data().avg).to.equal(1); + }); + }); + + it('can use document ID im multiple inequality query', () => { + const testDocs = { + doc1: { key: 'a', sort: 5 }, + doc2: { key: 'aa', sort: 4 }, + doc3: { key: 'b', sort: 3 }, + doc4: { key: 'b', sort: 2 }, + doc5: { key: 'bb', sort: 1 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + let snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where('sort', '>=', 1), + where('key', '!=', 'a'), + where(documentId(), '<', 'doc5') + ) + ); + // Document Key in inequality field will implicitly ordered to the last. + // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc4', + 'doc3' + ]); + + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where(documentId(), '<', 'doc5'), + where('sort', '>=', 1), + where('key', '!=', 'a') + ) + ); + // Changing filters order will not effect implicit order. + // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc4', + 'doc3' + ]); + + snapshot = await testHelper.getDocs( + testHelper.query( + coll, + where(documentId(), '<', 'doc5'), + where('sort', '>=', 1), + where('key', '!=', 'a'), + orderBy('sort', 'desc') + ) + ); + // Ordered by: 'sort' desc,'key' desc, __name__ desc + testHelper.assertSnapshotResultIdsMatch(snapshot, [ + 'doc2', + 'doc3', + 'doc4' + ]); + }); + }); + + it('can get documents while offline', () => { + const testDocs = { + doc1: { key: 'a', sort: 1 }, + doc2: { key: 'aa', sort: 4 }, + doc3: { key: 'b', sort: 3 }, + doc4: { key: 'b', sort: 2 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs( + persistence.toLruGc(), + testDocs, + async (coll, db) => { + const query_ = testHelper.query( + coll, + where('key', '!=', 'a'), + where('sort', '<=', 3) + ); + //populate the cache. + const snapshot1 = await testHelper.getDocs(query_); + expect(snapshot1.size).to.equal(2); + + await disableNetwork(db); + + const snapshot2 = await testHelper.getDocs(query_); + expect(snapshot2.metadata.fromCache).to.be.true; + expect(snapshot2.metadata.hasPendingWrites).to.be.false; + // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc + testHelper.assertSnapshotResultIdsMatch(snapshot2, ['doc4', 'doc3']); + } + ); + }); + + // eslint-disable-next-line no-restricted-properties + (persistence.gc === 'lru' ? it : it.skip)( + 'can get same result from server and cache', + () => { + const testDocs = { + doc1: { a: 1, b: 0 }, + doc2: { a: 2, b: 1 }, + doc3: { a: 3, b: 2 }, + doc4: { a: 1, b: 3 }, + doc5: { a: 1, b: 1 } + }; + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestDocs(persistence, testDocs, async coll => { + // implicit AND: a != 1 && b < 2 + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.query(coll, where('a', '!=', 1), where('b', '<', 2)), + 'doc2' + ); + + // explicit AND: a != 1 && b < 2 + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.compositeQuery( + coll, + and(where('a', '!=', 1), where('b', '<', 2)) + ), + 'doc2' + ); + + // explicit AND: a < 3 && b not-in [2, 3] + // Implicitly ordered by: a asc, b asc, __name__ asc + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.compositeQuery( + coll, + and(where('a', '<', 3), where('b', 'not-in', [2, 3])) + ), + 'doc1', + 'doc5', + 'doc2' + ); + + // a <3 && b != 0, implicitly ordered by: a asc, b asc, __name__ asc + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.query( + coll, + where('b', '!=', 0), + where('a', '<', 3), + limit(2) + ), + 'doc5', + 'doc4' + ); + + // a <3 && b != 0, ordered by: b desc, a desc, __name__ desc + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.query( + coll, + where('a', '<', 3), + where('b', '!=', 0), + orderBy('b', 'desc'), + limit(2) + ), + 'doc4', + 'doc2' + ); + + // explicit OR: multiple inequality: a>2 || b<1. + await testHelper.assertOnlineAndOfflineResultsMatch( + testHelper.compositeQuery( + coll, + or(where('a', '>', 2), where('b', '<', 1)) + ), + 'doc1', + 'doc3' + ); + }); + } + ); + + it('inequality query will reject if document key is not the last orderBy field', () => { + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestCollection(persistence, async coll => { + // Implicitly ordered by: __name__ asc, 'key' asc, + const queryForRejection = testHelper.query( + coll, + where('key', '!=', 42), + orderBy(documentId()) + ); + + await expect( + testHelper.getDocs(queryForRejection) + ).to.be.eventually.rejectedWith( + /order by clause cannot contain more fields after the key/i + ); + }); + }); + + it('inequality query will reject if document key appears only in equality filter', () => { + const testHelper = new CompositeIndexTestHelper(); + return testHelper.withTestCollection(persistence, async coll => { + const query_ = testHelper.query( + coll, + where('key', '!=', 42), + where(documentId(), '==', 'doc1') + ); + await expect(testHelper.getDocs(query_)).to.be.eventually.rejectedWith( + 'Equality on key is not allowed if there are other inequality fields and key does not appear in inequalities.' + ); + }); + }); + }); }); diff --git a/packages/firestore/test/integration/api/query.test.ts b/packages/firestore/test/integration/api/query.test.ts index 7468b39bfeb..7bb8d70c193 100644 --- a/packages/firestore/test/integration/api/query.test.ts +++ b/packages/firestore/test/integration/api/query.test.ts @@ -23,11 +23,9 @@ import { EventsAccumulator } from '../util/events_accumulator'; import { addDoc, and, - average, Bytes, collection, collectionGroup, - count, deleteDoc, disableNetwork, doc, @@ -38,10 +36,7 @@ import { enableNetwork, endAt, endBefore, - FieldPath, GeoPoint, - getAggregateFromServer, - getCountFromServer, getDocs, limit, limitToLast, @@ -53,7 +48,6 @@ import { setDoc, startAfter, startAt, - sum, Timestamp, updateDoc, where, @@ -67,7 +61,6 @@ import { RetryError, toChangesArray, toDataArray, - toIds, PERSISTENCE_MODE_UNSPECIFIED, withEmptyTestCollection, withRetry, @@ -1347,604 +1340,6 @@ apiDescribe('Queries', persistence => { }); }); - // eslint-disable-next-line no-restricted-properties - (USE_EMULATOR ? describe : describe.skip)('Multiple Inequality', () => { - it('can use multiple inequality filters', async () => { - const testDocs = { - doc1: { key: 'a', sort: 0, v: 0 }, - doc2: { key: 'b', sort: 3, v: 1 }, - doc3: { key: 'c', sort: 1, v: 3 }, - doc4: { key: 'd', sort: 2, v: 2 } - }; - return withTestCollection(persistence, testDocs, async coll => { - // Multiple inequality fields - const snapshot1 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '<=', 2), - where('v', '>', 2) - ) - ); - expect(toIds(snapshot1)).to.deep.equal(['doc3']); - - // Duplicate inequality fields - const snapshot2 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '<=', 2), - where('sort', '>', 1) - ) - ); - expect(toIds(snapshot2)).to.deep.equal(['doc4']); - - // With multiple IN - const snapshot3 = await getDocs( - query( - coll, - where('key', '>=', 'a'), - where('sort', '<=', 2), - where('v', 'in', [2, 3, 4]), - where('sort', 'in', [2, 3]) - ) - ); - expect(toIds(snapshot3)).to.deep.equal(['doc4']); - - // With NOT-IN - const snapshot4 = await getDocs( - query( - coll, - where('key', '>=', 'a'), - where('sort', '<=', 2), - where('v', 'not-in', [2, 4, 5]) - ) - ); - expect(toIds(snapshot4)).to.deep.equal(['doc1', 'doc3']); - - // With orderby - const snapshot5 = await getDocs( - query( - coll, - where('key', '>=', 'a'), - where('sort', '<=', 2), - orderBy('v', 'desc') - ) - ); - expect(toIds(snapshot5)).to.deep.equal(['doc3', 'doc4', 'doc1']); - - // With limit - const snapshot6 = await getDocs( - query( - coll, - where('key', '>=', 'a'), - where('sort', '<=', 2), - orderBy('v', 'desc'), - limit(2) - ) - ); - expect(toIds(snapshot6)).to.deep.equal(['doc3', 'doc4']); - - // With limitToLast - const snapshot7 = await getDocs( - query( - coll, - where('key', '>=', 'a'), - where('sort', '<=', 2), - orderBy('v', 'desc'), - limitToLast(2) - ) - ); - expect(toIds(snapshot7)).to.deep.equal(['doc4', 'doc1']); - }); - }); - - it('can use on special values', async () => { - const testDocs = { - doc1: { key: 'a', sort: 0, v: 0 }, - doc2: { key: 'b', sort: NaN, v: 1 }, - doc3: { key: 'c', sort: null, v: 3 }, - doc4: { key: 'd', v: 0 }, - doc5: { key: 'e', sort: 1 }, - doc6: { key: 'f', sort: 1, v: 1 } - }; - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getDocs( - query(coll, where('key', '!=', 'a'), where('sort', '<=', 2)) - ); - expect(toIds(snapshot1)).to.deep.equal(['doc5', 'doc6']); - - const snapshot2 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '<=', 2), - where('v', '<=', 1) - ) - ); - expect(toIds(snapshot2)).to.deep.equal(['doc6']); - }); - }); - it('can use with array membership', async () => { - const testDocs = { - doc1: { key: 'a', sort: 0, v: [0] }, - doc2: { key: 'b', sort: 1, v: [0, 1, 3] }, - doc3: { key: 'c', sort: 1, v: [] }, - doc4: { key: 'd', sort: 2, v: [1] }, - doc5: { key: 'e', sort: 3, v: [2, 4] }, - doc6: { key: 'f', sort: 4, v: [NaN] }, - doc7: { key: 'g', sort: 4, v: [null] } - }; - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '>=', 1), - where('v', 'array-contains', 0) - ) - ); - expect(toIds(snapshot1)).to.deep.equal(['doc2']); - - const snapshot2 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '>=', 1), - where('v', 'array-contains-any', [0, 1]) - ) - ); - expect(toIds(snapshot2)).to.deep.equal(['doc2', 'doc4']); - }); - }); - - it('can use with nested field', () => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const testData = (n?: number): any => { - n = n || 1; - return { - name: 'room ' + n, - metadata: { - createdAt: n - }, - field: 'field ' + n, - 'field.dot': n, - 'field\\slash': n - }; - }; - - const testDocs = { - 'doc1': testData(400), - 'doc2': testData(200), - 'doc3': testData(100), - 'doc4': testData(300) - }; - - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getDocs( - query( - coll, - where('metadata.createdAt', '<=', 500), - where('metadata.createdAt', '>', 100), - where('name', '!=', 'room 200'), - orderBy('name') - ) - ); - expect(toIds(snapshot1)).to.deep.equal(['doc4', 'doc1']); - - const snapshot2 = await getDocs( - query( - coll, - where('field', '>=', 'field 100'), - where(new FieldPath('field.dot'), '!=', 300), - where('field\\slash', '<', 400), - orderBy('name', 'desc') - ) - ); - expect(toIds(snapshot2)).to.deep.equal(['doc2', 'doc3']); - }); - }); - - it('can use with nested composite filters', async () => { - const testDocs = { - doc1: { key: 'a', sort: 0, v: 5 }, - doc2: { key: 'aa', sort: 4, v: 4 }, - doc3: { key: 'c', sort: 3, v: 3 }, - doc4: { key: 'b', sort: 2, v: 2 }, - doc5: { key: 'b', sort: 2, v: 1 }, - doc6: { key: 'b', sort: 0, v: 0 } - }; - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getDocs( - query( - coll, - or( - and(where('key', '==', 'b'), where('sort', '<=', 2)), - and(where('key', '!=', 'b'), where('v', '>', 4)) - ) - ) - ); - // Implicitly ordered by: 'key' asc, 'sort' asc, 'v' asc, __name__ asc - expect(toIds(snapshot1)).to.deep.equal([ - 'doc1', - 'doc6', - 'doc5', - 'doc4' - ]); - - const snapshot2 = await getDocs( - query( - coll, - or( - and(where('key', '==', 'b'), where('sort', '<=', 2)), - and(where('key', '!=', 'b'), where('v', '>', 4)) - ), - orderBy('sort', 'desc'), - orderBy('key') - ) - ); - // Ordered by: 'sort' desc, 'key' asc, 'v' asc, __name__ asc - expect(toIds(snapshot2)).to.deep.equal([ - 'doc5', - 'doc4', - 'doc1', - 'doc6' - ]); - - const snapshot3 = await getDocs( - query( - coll, - and( - or( - and(where('key', '==', 'b'), where('sort', '<=', 4)), - and(where('key', '!=', 'b'), where('v', '>=', 4)) - ), - or( - and(where('key', '>', 'b'), where('sort', '>=', 1)), - and(where('key', '<', 'b'), where('v', '>', 0)) - ) - ) - ) - ); - // Implicitly ordered by: 'key' asc, 'sort' asc, 'v' asc, __name__ asc - expect(toIds(snapshot3)).to.deep.equal(['doc1', 'doc2']); - }); - }); - - it('inequality fields will be implicitly ordered lexicographically', async () => { - const testDocs = { - doc1: { key: 'a', sort: 0, v: 5 }, - doc2: { key: 'aa', sort: 4, v: 4 }, - doc3: { key: 'b', sort: 3, v: 3 }, - doc4: { key: 'b', sort: 2, v: 2 }, - doc5: { key: 'b', sort: 2, v: 1 }, - doc6: { key: 'b', sort: 0, v: 0 } - }; - return withTestCollection(persistence, testDocs, async coll => { - // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc - const snapshot1 = await getDocs( - query( - coll, - where('key', '!=', 'a'), - where('sort', '>', 1), - where('v', 'in', [1, 2, 3, 4]) - ) - ); - expect(toIds(snapshot1)).to.deep.equal([ - 'doc2', - 'doc4', - 'doc5', - 'doc3' - ]); - - // Implicitly ordered by: 'key' asc, 'sort' asc,__name__ asc - const snapshot2 = await getDocs( - query( - coll, - where('sort', '>', 1), - where('key', '!=', 'a'), - where('v', 'in', [1, 2, 3, 4]) - ) - ); - expect(toIds(snapshot2)).to.deep.equal([ - 'doc2', - 'doc4', - 'doc5', - 'doc3' - ]); - }); - }); - - it('can use multiple explicit order by field', async () => { - const testDocs = { - doc1: { key: 'a', sort: 5, v: 0 }, - doc2: { key: 'aa', sort: 4, v: 0 }, - doc3: { key: 'b', sort: 3, v: 1 }, - doc4: { key: 'b', sort: 2, v: 1 }, - doc5: { key: 'bb', sort: 1, v: 1 }, - doc6: { key: 'c', sort: 0, v: 2 } - }; - - return withTestCollection(persistence, testDocs, async coll => { - // Ordered by: 'v' asc, 'key' asc, 'sort' asc, __name__ asc - const snapshot1 = await getDocs( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - orderBy('v') - ) - ); - expect(toIds(snapshot1)).to.deep.equal([ - 'doc2', - 'doc4', - 'doc3', - 'doc5' - ]); - - // Ordered by: 'v asc, 'sort' asc, 'key' asc, __name__ asc - const snapshot2 = await getDocs( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - orderBy('v'), - orderBy('sort') - ) - ); - expect(toIds(snapshot2)).to.deep.equal([ - 'doc2', - 'doc5', - 'doc4', - 'doc3' - ]); - - // Implicit order by matches the direction of last explicit order by. - // Ordered by: 'v' desc, 'key' desc, 'sort' desc, __name__ desc - const snapshot3 = await getDocs( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - orderBy('v', 'desc') - ) - ); - expect(toIds(snapshot3)).to.deep.equal([ - 'doc5', - 'doc3', - 'doc4', - 'doc2' - ]); - - // Ordered by: 'v desc, 'sort' asc, 'key' asc, __name__ asc - const snapshot4 = await getDocs( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - orderBy('v', 'desc'), - orderBy('sort') - ) - ); - expect(toIds(snapshot4)).to.deep.equal([ - 'doc5', - 'doc4', - 'doc3', - 'doc2' - ]); - }); - }); - - it('can use in aggregate query', async () => { - const testDocs = { - doc1: { key: 'a', sort: 5, v: 0 }, - doc2: { key: 'aa', sort: 4, v: 0 }, - doc3: { key: 'b', sort: 3, v: 1 }, - doc4: { key: 'b', sort: 2, v: 1 }, - doc5: { key: 'bb', sort: 1, v: 1 } - }; - - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getCountFromServer( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - orderBy('v') - ) - ); - expect(snapshot1.data().count).to.equal(4); - - const snapshot2 = await getAggregateFromServer( - query( - coll, - where('key', '>', 'a'), - where('sort', '>=', 1), - where('v', '!=', 0) - ), - { - count: count(), - sum: sum('sort'), - avg: average('v') - } - ); - expect(snapshot2.data().count).to.equal(3); - expect(snapshot2.data().sum).to.equal(6); - expect(snapshot2.data().avg).to.equal(1); - }); - }); - - it('can use document ID im multiple inequality query', () => { - const testDocs = { - doc1: { key: 'a', sort: 5 }, - doc2: { key: 'aa', sort: 4 }, - doc3: { key: 'b', sort: 3 }, - doc4: { key: 'b', sort: 2 }, - doc5: { key: 'bb', sort: 1 } - }; - return withTestCollection(persistence, testDocs, async coll => { - const snapshot1 = await getDocs( - query( - coll, - where('sort', '>=', 1), - where('key', '!=', 'a'), - where(documentId(), '<', 'doc5') - ) - ); - // Document Key in inequality field will implicitly ordered to the last. - // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc - expect(toIds(snapshot1)).to.deep.equal(['doc2', 'doc4', 'doc3']); - - const snapshot2 = await getDocs( - query( - coll, - where(documentId(), '<', 'doc5'), - where('sort', '>=', 1), - where('key', '!=', 'a') - ) - ); - // Changing filters order will not effect implicit order. - // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc - expect(toIds(snapshot2)).to.deep.equal(['doc2', 'doc4', 'doc3']); - - const snapshot3 = await getDocs( - query( - coll, - where(documentId(), '<', 'doc5'), - where('sort', '>=', 1), - where('key', '!=', 'a'), - orderBy('sort', 'desc') - ) - ); - // Ordered by: 'sort' desc,'key' desc, __name__ desc - expect(toIds(snapshot3)).to.deep.equal(['doc2', 'doc3', 'doc4']); - }); - }); - - it('can get documents while offline', () => { - const testDocs = { - doc1: { key: 'a', sort: 1 }, - doc2: { key: 'aa', sort: 4 }, - doc3: { key: 'b', sort: 3 }, - doc4: { key: 'b', sort: 2 } - }; - return withTestCollection( - persistence.toLruGc(), - testDocs, - async (coll, db) => { - const query_ = query( - coll, - where('key', '!=', 'a'), - where('sort', '<=', 3) - ); - //populate the cache. - const snapshot1 = await getDocs(query_); - expect(snapshot1.size).to.equal(2); - - await disableNetwork(db); - - const snapshot2 = await getDocs(query_); - expect(snapshot2.metadata.fromCache).to.be.true; - expect(snapshot2.metadata.hasPendingWrites).to.be.false; - // Implicitly ordered by: 'key' asc, 'sort' asc, __name__ asc - expect(toIds(snapshot2)).to.deep.equal(['doc4', 'doc3']); - } - ); - }); - - // eslint-disable-next-line no-restricted-properties - (persistence.gc === 'lru' ? it : it.skip)( - 'can get same result from server and cache', - () => { - const testDocs = { - doc1: { a: 1, b: 0 }, - doc2: { a: 2, b: 1 }, - doc3: { a: 3, b: 2 }, - doc4: { a: 1, b: 3 }, - doc5: { a: 1, b: 1 } - }; - - return withTestCollection(persistence, testDocs, async coll => { - // implicit AND: a != 1 && b < 2 - await checkOnlineAndOfflineResultsMatch( - query(coll, where('a', '!=', 1), where('b', '<', 2)), - 'doc2' - ); - - // explicit AND: a != 1 && b < 2 - await checkOnlineAndOfflineResultsMatch( - query(coll, and(where('a', '!=', 1), where('b', '<', 2))), - 'doc2' - ); - - // explicit AND: a < 3 && b not-in [2, 3] - // Implicitly ordered by: a asc, b asc, __name__ asc - await checkOnlineAndOfflineResultsMatch( - query(coll, and(where('a', '<', 3), where('b', 'not-in', [2, 3]))), - 'doc1', - 'doc5', - 'doc2' - ); - - // a <3 && b != 0, implicitly ordered by: a asc, b asc, __name__ asc - await checkOnlineAndOfflineResultsMatch( - query(coll, where('b', '!=', 0), where('a', '<', 3), limit(2)), - 'doc5', - 'doc4' - ); - - // a <3 && b != 0, ordered by: b desc, a desc, __name__ desc - await checkOnlineAndOfflineResultsMatch( - query( - coll, - where('a', '<', 3), - where('b', '!=', 0), - orderBy('b', 'desc'), - limit(2) - ), - 'doc4', - 'doc2' - ); - - // explicit OR: multiple inequality: a>2 || b<1. - await checkOnlineAndOfflineResultsMatch( - query(coll, or(where('a', '>', 2), where('b', '<', 1))), - 'doc1', - 'doc3' - ); - }); - } - ); - - it('inequality query will reject if document key is not the last orderBy field', () => { - return withEmptyTestCollection(persistence, async coll => { - // Implicitly ordered by: __name__ asc, 'key' asc, - const queryForRejection = query( - coll, - where('key', '!=', 42), - orderBy(documentId()) - ); - - await expect(getDocs(queryForRejection)).to.be.eventually.rejectedWith( - 'order by clause cannot contain more fields after the key' - ); - }); - }); - - it('inequality query will reject if document key appears only in equality filter', () => { - return withEmptyTestCollection(persistence, async coll => { - const query_ = query( - coll, - where('key', '!=', 42), - where(documentId(), '==', 'doc1') - ); - await expect(getDocs(query_)).to.be.eventually.rejectedWith( - 'Equality on key is not allowed if there are other inequality fields and key does not appear in inequalities.' - ); - }); - }); - }); - // OR Query tests only run when the SDK's local cache is configured to use // LRU garbage collection (rather than eager garbage collection) because // they validate that the result from server and cache match. diff --git a/packages/firestore/test/integration/util/composite_index_test_helper.ts b/packages/firestore/test/integration/util/composite_index_test_helper.ts index b04bb483558..5199539768b 100644 --- a/packages/firestore/test/integration/util/composite_index_test_helper.ts +++ b/packages/firestore/test/integration/util/composite_index_test_helper.ts @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { expect } from 'chai'; import { query as internalQuery, @@ -49,7 +50,8 @@ import { batchCommitDocsToCollection, checkOnlineAndOfflineResultsMatch, PERSISTENCE_MODE_UNSPECIFIED, - PersistenceMode + PersistenceMode, + toIds } from './helpers'; import { COMPOSITE_INDEX_TEST_COLLECTION, @@ -169,6 +171,15 @@ export class CompositeIndexTestHelper { ); } + // Asserts that the IDs in the query snapshot matches the expected Ids. The expected document + // IDs are hashed to match the actual document IDs created by the test helper. + assertSnapshotResultIdsMatch( + snapshot: QuerySnapshot, + expectedIds: string[] + ): void { + expect(toIds(snapshot)).to.deep.equal(this.toHashedIds(expectedIds)); + } + // Adds a filter on test id for a query. query(query_: Query, ...queryConstraints: QueryConstraint[]): Query { return internalQuery( From 6d31930b3abe1588ae81a5c14b59cd386fddc718 Mon Sep 17 00:00:00 2001 From: James Daniels Date: Tue, 2 Apr 2024 12:53:55 -0400 Subject: [PATCH 3/6] Quick fix for FirebaseServerApp#toJSON (#8109) * Quick fix for FirebaseServerApp#toJSON * initalization => initialization --- .changeset/shy-bats-wave.md | 5 +++++ docs-devsite/app.firebaseserverappsettings.md | 4 ++-- packages/app/src/firebaseServerApp.test.ts | 20 +++++++++++++++++++ packages/app/src/firebaseServerApp.ts | 4 ++++ packages/app/src/public-types.ts | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 .changeset/shy-bats-wave.md diff --git a/.changeset/shy-bats-wave.md b/.changeset/shy-bats-wave.md new file mode 100644 index 00000000000..d234f2925c2 --- /dev/null +++ b/.changeset/shy-bats-wave.md @@ -0,0 +1,5 @@ +--- +'@firebase/app': patch +--- + +FirebaseServerApp should not be JSON serializable diff --git a/docs-devsite/app.firebaseserverappsettings.md b/docs-devsite/app.firebaseserverappsettings.md index 20c335b04a6..59aba9bca78 100644 --- a/docs-devsite/app.firebaseserverappsettings.md +++ b/docs-devsite/app.firebaseserverappsettings.md @@ -23,7 +23,7 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings | Property | Type | Description | | --- | --- | --- | -| [authIdToken](./app.firebaseserverappsettings.md#firebaseserverappsettingsauthidtoken) | string | An optional Auth ID token used to resume a signed in user session from a client runtime environment.Invoking getAuth with a FirebaseServerApp configured with a validated authIdToken causes an automatic attempt to sign in the user that the authIdToken represents. The token needs to have been recently minted for this operation to succeed.If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initalization.If a user is successfully signed in, then the Auth instance's onAuthStateChanged callback is invoked with the User object as per standard Auth flows. However, User objects created via an authIdToken do not have a refresh token. Attempted refreshToken operations fail. | +| [authIdToken](./app.firebaseserverappsettings.md#firebaseserverappsettingsauthidtoken) | string | An optional Auth ID token used to resume a signed in user session from a client runtime environment.Invoking getAuth with a FirebaseServerApp configured with a validated authIdToken causes an automatic attempt to sign in the user that the authIdToken represents. The token needs to have been recently minted for this operation to succeed.If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initialization.If a user is successfully signed in, then the Auth instance's onAuthStateChanged callback is invoked with the User object as per standard Auth flows. However, User objects created via an authIdToken do not have a refresh token. Attempted refreshToken operations fail. | | [name](./app.firebaseserverappsettings.md#firebaseserverappsettingsname) | undefined | There is no getApp() operation for FirebaseServerApp, so the name is not relevant for applications. However, it may be used internally, and is declared here so that FirebaseServerApp conforms to the FirebaseApp interface. | | [releaseOnDeref](./app.firebaseserverappsettings.md#firebaseserverappsettingsreleaseonderef) | object | An optional object. If provided, the Firebase SDK uses a FinalizationRegistry object to monitor the garbage collection status of the provided object. The Firebase SDK releases its reference on the FirebaseServerApp instance when the provided releaseOnDeref object is garbage collected.You can use this field to reduce memory management overhead for your application. If provided, an app running in a SSR pass does not need to perform FirebaseServerApp cleanup, so long as the reference object is deleted (by falling out of SSR scope, for instance.)If an object is not provided then the application must clean up the FirebaseServerApp instance by invoking deleteApp.If the application provides an object in this parameter, but the application is executed in a JavaScript engine that predates the support of FinalizationRegistry (introduced in node v14.6.0, for instance), then an error is thrown at FirebaseServerApp initialization. | @@ -33,7 +33,7 @@ An optional Auth ID token used to resume a signed in user session from a client Invoking `getAuth` with a `FirebaseServerApp` configured with a validated `authIdToken` causes an automatic attempt to sign in the user that the `authIdToken` represents. The token needs to have been recently minted for this operation to succeed. -If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initalization. +If the token fails local verification, or if the Auth service has failed to validate it when the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not sign in a user on initialization. If a user is successfully signed in, then the Auth instance's `onAuthStateChanged` callback is invoked with the `User` object as per standard Auth flows. However, `User` objects created via an `authIdToken` do not have a refresh token. Attempted `refreshToken` operations fail. diff --git a/packages/app/src/firebaseServerApp.test.ts b/packages/app/src/firebaseServerApp.test.ts index 408b5f09922..bf2da5c06d5 100644 --- a/packages/app/src/firebaseServerApp.test.ts +++ b/packages/app/src/firebaseServerApp.test.ts @@ -135,4 +135,24 @@ describe('FirebaseServerApp', () => { expect(() => app.settings).throws('Firebase Server App has been deleted'); }); + + it('should not be JSON serializable', () => { + const options = { + apiKey: 'APIKEY' + }; + + const serverAppSettings: FirebaseServerAppSettings = { + automaticDataCollectionEnabled: false, + releaseOnDeref: options + }; + + const app = new FirebaseServerAppImpl( + options, + serverAppSettings, + 'testName', + new ComponentContainer('test') + ); + + expect(JSON.stringify(app)).to.eql(undefined); + }); }); diff --git a/packages/app/src/firebaseServerApp.ts b/packages/app/src/firebaseServerApp.ts index b40471c903f..6b6c33d316b 100644 --- a/packages/app/src/firebaseServerApp.ts +++ b/packages/app/src/firebaseServerApp.ts @@ -82,6 +82,10 @@ export class FirebaseServerAppImpl registerVersion(packageName, version, 'serverapp'); } + toJSON(): undefined { + return undefined; + } + get refCount(): number { return this._refCount; } diff --git a/packages/app/src/public-types.ts b/packages/app/src/public-types.ts index ad2b441933a..eb963a54adf 100644 --- a/packages/app/src/public-types.ts +++ b/packages/app/src/public-types.ts @@ -186,7 +186,7 @@ export interface FirebaseServerAppSettings extends FirebaseAppSettings { * * If the token fails local verification, or if the Auth service has failed to validate it when * the Auth SDK is initialized, then a warning is logged to the console and the Auth SDK will not - * sign in a user on initalization. + * sign in a user on initialization. * * If a user is successfully signed in, then the Auth instance's `onAuthStateChanged` callback * is invoked with the `User` object as per standard Auth flows. However, `User` objects From b64b947b8bbbb0f2e07e5bed8d3fb7b0807f034f Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Wed, 3 Apr 2024 15:38:27 -0400 Subject: [PATCH 4/6] Upgrade dependencies April 2024 (#8098) ### Discussion Updating a series of Renovate-found outdated dependencies. Including: - PR: #7770 - PR: #7571 - PR: #7450 - PR: #4827 - PR #8108 Additional minor dependency updates based on the renovate PR #5566: - `@babel/core`: `7.22.11 -> 7.24.3` - `@babel/register`: `7.22.5 -> 7.23.7` - `@rushstack/ts-command-line`: `4.15.2 -> 4.19.1` - `@types/chai`: `4.3.5 -> 4.3.14` - `@types/chai-as-promised`: `7.1.5 -> 7.1.8` - `@types/child-process-promise`: `2.2.2 -> 2.2.6` - `@types/express`: `4.17.17 -> 4.17.21` - `@types/inquirer`: `8.2.6 -> 8.2.10` - `@types/js-yaml`: `4.0.5 -> 4.0.9` - `@types/json-stable-stringify`: `1.0.34 -> 1.0.36` - `@types/listr`: `0.14.4 -> 0.14.9` - `@types/mz`: `2.7.4 -> 2.7.8` - `@types/request`: `2.48.8 -> 2.48.12` - `@types/sinon-chai`: `3.2.9 -> 3.2.12` - `@types/resolve`: `1.20.2 -> 1.20.6` - `@types/tmp`: `0.2.3 -> 0.2.6` - `@types/trusted-types`: `2.0.3 -> 2.0.7` - `@types/webpack `: `5.28.0 -> 5.28.5` - `@types/yargs`: `17.0.24 -> 17.0.32` - `chai`: `4.3.7 -> 4.4.1` - `firebase-admin`: `11.10.1 -> 11.11.1` - `json-stable-stringify`: `1.0.2 -> 1.1.1` - `rollup-plugin-copy`: `3.4.0 -> 3.5.0` - `rollup-plugin-dts`: `5.3.0 -> 5.3.1` - `rollup-plugin-license`: `3.0.1 -> 3.3.1` - `karma-webpack`: `5.0.0 -> 5.0.1` - `karma-firefox-launcher`: `2.1.2 -> 2.1.3` - `karma-spec-reporter`: `0.0.34 -> 0.0.36` - `patch-package`: `7.0.0 -> 7.0.2` - `protobufjs`: `7.2.4 -> 7.2.6` - `simple-git`: `3.19.1 -> 3.24.0` --- config/functions/package.json | 2 +- e2e/package.json | 6 +- e2e/yarn.lock | 191 +-- integration/firebase/package.json | 6 +- integration/firestore/package.json | 4 +- integration/messaging/package.json | 6 +- package.json | 44 +- packages/app/package.json | 2 +- .../auth-compat/demo/functions/package.json | 2 +- packages/auth/demo/functions/package.json | 2 +- packages/auth/package.json | 4 +- packages/firestore/package.json | 12 +- .../rules-unit-testing/functions/package.json | 2 +- packages/storage/package.json | 2 +- repo-scripts/api-documenter/package.json | 6 +- repo-scripts/size-analysis/package.json | 2 +- yarn.lock | 1331 ++++++++++++----- 17 files changed, 1145 insertions(+), 479 deletions(-) diff --git a/config/functions/package.json b/config/functions/package.json index 083fc2a5e9f..08a79673e85 100644 --- a/config/functions/package.json +++ b/config/functions/package.json @@ -3,7 +3,7 @@ "description": "Cloud Functions for Firebase", "dependencies": { "cors": "2.8.5", - "firebase-admin": "11.10.1", + "firebase-admin": "11.11.1", "firebase-functions": "3.24.1" }, "private": true, diff --git a/e2e/package.json b/e2e/package.json index eac3b6c6faf..c4dee3448ce 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -21,12 +21,12 @@ "firebase": "9.23.0" }, "devDependencies": { - "@babel/core": "7.22.11", + "@babel/core": "7.24.3", "@babel/preset-env": "7.22.10", - "@types/chai": "4.3.5", + "@types/chai": "4.3.14", "@types/mocha": "9.1.1", "babel-loader": "8.3.0", - "chai": "4.3.7", + "chai": "4.4.1", "karma": "6.4.2", "karma-chrome-launcher": "3.2.0", "karma-mocha": "2.0.1", diff --git a/e2e/yarn.lock b/e2e/yarn.lock index 3e54a3ae3c3..d2260b4bff6 100644 --- a/e2e/yarn.lock +++ b/e2e/yarn.lock @@ -17,7 +17,7 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/code-frame@^7.22.10", "@babel/code-frame@^7.23.5": +"@babel/code-frame@^7.23.5": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== @@ -25,6 +25,14 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" +"@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.14.5", "@babel/compat-data@^7.14.7": version "7.14.7" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" @@ -35,22 +43,22 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.22.11": - version "7.22.11" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz#8033acaa2aa24c3f814edaaa057f3ce0ba559c24" - integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== +"@babel/core@7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" + integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.11" - "@babel/parser" "^7.22.11" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.1" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.1" + "@babel/parser" "^7.24.1" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" @@ -86,14 +94,14 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.22.10", "@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== +"@babel/generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.14.5": @@ -344,7 +352,7 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.23.3": +"@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== @@ -526,13 +534,13 @@ "@babel/traverse" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/helpers@^7.22.11": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" - integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== +"@babel/helpers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" + "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" "@babel/highlight@^7.14.5": @@ -553,16 +561,31 @@ chalk "^2.4.2" js-tokens "^4.0.0" +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7": version "7.14.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== -"@babel/parser@^7.22.11", "@babel/parser@^7.24.0": +"@babel/parser@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== +"@babel/parser@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.23.3" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -1690,7 +1713,7 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.24.0": +"@babel/template@^7.22.15", "@babel/template@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -1714,18 +1737,18 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.22.11", "@babel/traverse@^7.24.0": - version "7.24.0" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" - integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== +"@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.0" + "@babel/parser" "^7.24.1" "@babel/types" "^7.24.0" debug "^4.3.1" globals "^11.1.0" @@ -1747,7 +1770,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.22.10", "@babel/types@^7.22.11", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.24.0": +"@babel/types@^7.22.10", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0": version "7.24.0" resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -2173,15 +2196,6 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -2191,21 +2205,11 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.24" -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== - "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - "@jridgewell/set-array@^1.2.1": version "1.2.1" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" @@ -2221,7 +2225,7 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.24": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -2229,14 +2233,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.10" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.10.tgz#db436f0917d655393851bc258918c00226c9b183" - integrity sha512-Q0YbBd6OTsXm8Y21+YUSDXupHnodNC2M4O18jtd3iwJ3+vMZNdKGols0a9G6JOK0dcJ3IdUUHoh908ZI6qhk8Q== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" @@ -2315,10 +2311,10 @@ dependencies: "@types/node" "*" -"@types/chai@4.3.5": - version "4.3.5" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b" - integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== +"@types/chai@4.3.14": + version "4.3.14" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz#ae3055ea2be43c91c9fd700a36d67820026d96e6" + integrity sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w== "@types/component-emitter@^1.2.10": version "1.2.10" @@ -3133,18 +3129,18 @@ caniuse-lite@^1.0.30001587: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001597.tgz#8be94a8c1d679de23b22fbd944232aa1321639e6" integrity sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w== -chai@4.3.7: - version "4.3.7" - resolved "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== +chai@4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" @@ -3163,10 +3159,12 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" chokidar@3.5.3, chokidar@^3.5.3: version "3.5.3" @@ -3372,6 +3370,11 @@ convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + convert-source-map@~1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" @@ -3518,7 +3521,7 @@ decamelize@^4.0.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -deep-eql@^4.1.2: +deep-eql@^4.1.3: version "4.1.3" resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== @@ -4080,10 +4083,10 @@ get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" @@ -4881,12 +4884,12 @@ long@^5.0.0: resolved "https://registry.npmjs.org/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f" integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A== -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - get-func-name "^2.0.0" + get-func-name "^2.0.1" lru-cache@^5.1.1: version "5.1.1" @@ -6200,7 +6203,7 @@ tty-browserify@^0.0.1: resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== -type-detect@^4.0.0, type-detect@^4.0.5: +type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== diff --git a/integration/firebase/package.json b/integration/firebase/package.json index 0349375eaf6..b438827019c 100644 --- a/integration/firebase/package.json +++ b/integration/firebase/package.json @@ -8,13 +8,13 @@ }, "devDependencies": { "firebase": "10.10.0", - "@types/chai": "4.3.5", + "@types/chai": "4.3.14", "@types/mocha": "9.1.1", - "chai": "4.3.7", + "chai": "4.4.1", "karma": "6.4.2", "karma-babel-preprocessor": "8.0.2", "karma-chrome-launcher": "3.2.0", - "karma-firefox-launcher": "2.1.2", + "karma-firefox-launcher": "2.1.3", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "karma-typescript": "5.5.4", diff --git a/integration/firestore/package.json b/integration/firestore/package.json index c4efd21d434..42455c29b95 100644 --- a/integration/firestore/package.json +++ b/integration/firestore/package.json @@ -24,11 +24,11 @@ "gulp-replace": "1.1.4", "karma": "6.4.2", "karma-chrome-launcher": "3.2.0", - "karma-firefox-launcher": "2.1.2", + "karma-firefox-launcher": "2.1.3", "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.36", "mocha": "9.2.2", - "ts-loader": "8.4.0", + "ts-loader": "9.5.1", "typescript": "4.2.2", "webpack": "5.76.0", "webpack-stream": "7.0.0" diff --git a/integration/messaging/package.json b/integration/messaging/package.json index 1fc273d1472..7bddc0dd56f 100644 --- a/integration/messaging/package.json +++ b/integration/messaging/package.json @@ -10,9 +10,9 @@ }, "devDependencies": { "firebase": "10.10.0", - "chai": "4.3.7", - "chromedriver": "116.0.0", - "express": "4.18.2", + "chai": "4.4.1", + "chromedriver": "119.0.1", + "express": "4.19.2", "geckodriver": "2.0.4", "mocha": "9.2.2", "undici": "5.28.3", diff --git a/package.json b/package.json index 502397c8820..cd6ffb8678d 100644 --- a/package.json +++ b/package.json @@ -60,38 +60,38 @@ "repo-scripts/*" ], "devDependencies": { - "@babel/core": "7.22.11", + "@babel/core": "7.24.3", "@babel/plugin-transform-modules-commonjs": "7.22.11", "@babel/preset-env": "7.22.10", "@babel/preset-typescript": "7.22.11", - "@babel/register": "7.22.5", + "@babel/register": "7.23.7", "@changesets/changelog-github": "0.4.8", "@changesets/cli": "2.26.2", - "@types/chai": "4.3.5", - "@types/chai-as-promised": "7.1.5", - "@types/child-process-promise": "2.2.2", + "@types/chai": "4.3.14", + "@types/chai-as-promised": "7.1.8", + "@types/child-process-promise": "2.2.6", "@types/clone": "2.1.1", "@types/eslint": "7.29.0", - "@types/inquirer": "8.2.6", - "@types/js-yaml": "4.0.5", - "@types/listr": "0.14.4", + "@types/inquirer": "8.2.10", + "@types/js-yaml": "4.0.9", + "@types/listr": "0.14.9", "@types/long": "4.0.2", "@types/mocha": "9.1.1", - "@types/mz": "2.7.4", + "@types/mz": "2.7.8", "@types/node": "16.18.68", - "@types/request": "2.48.8", + "@types/request": "2.48.12", "@types/sinon": "9.0.11", - "@types/sinon-chai": "3.2.9", - "@types/tmp": "0.2.3", - "@types/trusted-types": "2.0.3", - "@types/yargs": "17.0.24", + "@types/sinon-chai": "3.2.12", + "@types/tmp": "0.2.6", + "@types/trusted-types": "2.0.7", + "@types/yargs": "17.0.32", "@typescript-eslint/eslint-plugin": "5.62.0", "@typescript-eslint/eslint-plugin-tslint": "5.62.0", "@typescript-eslint/parser": "5.62.0", "api-documenter-me": "0.1.1", "api-extractor-me": "0.1.2", "babel-loader": "8.3.0", - "chai": "4.3.7", + "chai": "4.4.1", "chai-as-promised": "7.1.1", "chalk": "4.1.2", "child-process-promise": "2.2.1", @@ -102,7 +102,7 @@ "eslint": "7.32.0", "eslint-plugin-import": "2.26.0", "eslint-plugin-unused-imports": "2.0.0", - "express": "4.18.2", + "express": "4.19.2", "find-free-port": "2.0.0", "firebase-tools": "11.30.0", "glob": "7.2.3", @@ -115,12 +115,12 @@ "karma-chrome-launcher": "3.2.0", "karma-cli": "2.0.0", "karma-coverage-istanbul-reporter": "3.0.3", - "karma-firefox-launcher": "2.1.2", + "karma-firefox-launcher": "2.1.3", "karma-mocha": "2.0.1", "karma-mocha-reporter": "2.2.5", "karma-safari-launcher": "1.0.0", "karma-sourcemap-loader": "0.4.0", - "karma-spec-reporter": "0.0.34", + "karma-spec-reporter": "0.0.36", "karma-summary-reporter": "3.1.1", "karma-webpack": "5.0.0", "lcov-result-merger": "3.3.0", @@ -136,19 +136,19 @@ "npm-run-all": "4.1.5", "nyc": "15.1.0", "ora": "5.4.1", - "patch-package": "7.0.0", + "patch-package": "7.0.2", "postinstall-postinstall": "2.1.0", "prettier": "2.8.7", "protractor": "5.4.2", "request": "2.88.2", - "semver": "7.3.8", - "simple-git": "3.19.1", + "semver": "7.5.2", + "simple-git": "3.24.0", "sinon": "9.2.4", "sinon-chai": "3.7.0", "source-map-loader": "1.1.3", "sqlite3": "5.1.6", "terser": "5.16.1", - "ts-loader": "8.4.0", + "ts-loader": "9.5.1", "ts-node": "10.9.1", "tslint": "6.1.3", "typedoc": "0.16.11", diff --git a/packages/app/package.json b/packages/app/package.json index 1936379662c..e72e2a13ace 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -50,7 +50,7 @@ "rollup": "2.79.1", "rollup-plugin-replace": "2.2.0", "rollup-plugin-typescript2": "0.31.2", - "rollup-plugin-dts": "5.3.0", + "rollup-plugin-dts": "5.3.1", "typescript": "4.7.4" }, "repository": { diff --git a/packages/auth-compat/demo/functions/package.json b/packages/auth-compat/demo/functions/package.json index de794491ce0..70a35abdd84 100644 --- a/packages/auth-compat/demo/functions/package.json +++ b/packages/auth-compat/demo/functions/package.json @@ -9,7 +9,7 @@ "logs": "firebase functions:log" }, "dependencies": { - "firebase-admin": "11.10.1", + "firebase-admin": "11.11.1", "firebase-functions": "3.24.1" }, "private": true diff --git a/packages/auth/demo/functions/package.json b/packages/auth/demo/functions/package.json index d240de9b37d..275924c8ed2 100644 --- a/packages/auth/demo/functions/package.json +++ b/packages/auth/demo/functions/package.json @@ -9,7 +9,7 @@ "logs": "firebase functions:log" }, "dependencies": { - "firebase-admin": "11.10.1", + "firebase-admin": "11.11.1", "firebase-functions": "3.24.1" }, "private": true, diff --git a/packages/auth/package.json b/packages/auth/package.json index 0bb0f2b346a..39297914cc1 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -137,8 +137,8 @@ "@firebase/app": "0.10.0", "@rollup/plugin-json": "4.1.0", "@rollup/plugin-strip": "2.1.0", - "@types/express": "4.17.17", - "chromedriver": "116.0.0", + "@types/express": "4.17.21", + "chromedriver": "119.0.1", "rollup": "2.79.1", "rollup-plugin-sourcemaps": "0.6.3", "rollup-plugin-typescript2": "0.31.2", diff --git a/packages/firestore/package.json b/packages/firestore/package.json index 23ce4bc81e2..274b5b8a9cd 100644 --- a/packages/firestore/package.json +++ b/packages/firestore/package.json @@ -112,21 +112,21 @@ "@firebase/app": "0.10.0", "@firebase/app-compat": "0.2.30", "@firebase/auth": "1.7.0", - "@rollup/plugin-alias": "3.1.9", + "@rollup/plugin-alias": "5.1.0", "@rollup/plugin-json": "4.1.0", "@types/eslint": "7.29.0", - "@types/json-stable-stringify": "1.0.34", + "@types/json-stable-stringify": "1.0.36", "chai-exclude": "2.1.0", - "json-stable-stringify": "1.0.2", - "protobufjs": "7.2.4", + "json-stable-stringify": "1.1.1", + "protobufjs": "7.2.6", "rollup": "2.79.1", - "rollup-plugin-copy": "3.4.0", + "rollup-plugin-copy": "3.5.0", "rollup-plugin-copy-assets": "2.0.3", "rollup-plugin-replace": "2.2.0", "rollup-plugin-sourcemaps": "0.6.3", "rollup-plugin-terser": "7.0.2", "rollup-plugin-typescript2": "0.31.2", - "rollup-plugin-dts": "5.3.0", + "rollup-plugin-dts": "5.3.1", "ts-node": "10.9.1", "typescript": "4.7.4" }, diff --git a/packages/rules-unit-testing/functions/package.json b/packages/rules-unit-testing/functions/package.json index 54fd69653b5..d40ad549c0c 100644 --- a/packages/rules-unit-testing/functions/package.json +++ b/packages/rules-unit-testing/functions/package.json @@ -8,7 +8,7 @@ }, "private": true, "dependencies": { - "firebase-admin": "11.10.1", + "firebase-admin": "11.11.1", "firebase-functions": "3.24.1" }, "engines": { diff --git a/packages/storage/package.json b/packages/storage/package.json index 3174702187b..886ce50292e 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -58,7 +58,7 @@ "@firebase/app": "0.10.0", "@firebase/auth": "1.7.0", "rollup": "2.79.1", - "@rollup/plugin-alias": "3.1.9", + "@rollup/plugin-alias": "5.1.0", "@rollup/plugin-json": "4.1.0", "rollup-plugin-typescript2": "0.31.2", "typescript": "4.7.4" diff --git a/repo-scripts/api-documenter/package.json b/repo-scripts/api-documenter/package.json index 1f29b251183..1e6b1a9ac21 100644 --- a/repo-scripts/api-documenter/package.json +++ b/repo-scripts/api-documenter/package.json @@ -24,15 +24,15 @@ "api-extractor-model-me": "0.1.1", "@microsoft/tsdoc": "0.12.24", "@rushstack/node-core-library": "3.59.7", - "@rushstack/ts-command-line": "4.15.2", + "@rushstack/ts-command-line": "4.19.1", "colors": "~1.4.0", "resolve": "~1.22.0", "tslib": "^2.1.0", "js-yaml": "4.1.0" }, "devDependencies": { - "@types/js-yaml": "4.0.5", - "@types/resolve": "1.20.2", + "@types/js-yaml": "4.0.9", + "@types/resolve": "1.20.6", "mocha-chai-jest-snapshot": "1.1.3" } } diff --git a/repo-scripts/size-analysis/package.json b/repo-scripts/size-analysis/package.json index 4597273c717..151a775e47f 100644 --- a/repo-scripts/size-analysis/package.json +++ b/repo-scripts/size-analysis/package.json @@ -27,7 +27,7 @@ "rollup-plugin-typescript2": "0.31.2", "@rollup/plugin-virtual": "2.1.0", "webpack": "5.76.0", - "@types/webpack": "5.28.0", + "@types/webpack": "5.28.5", "webpack-virtual-modules": "0.5.0", "child-process-promise": "2.2.1", "memfs": "3.5.3", diff --git a/yarn.lock b/yarn.lock index a7bb7754f0b..d75026f9182 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,21 +34,6 @@ dependencies: "@babel/highlight" "^7.14.5" -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.22.10": - version "7.22.13" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" - integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== - dependencies: - "@babel/highlight" "^7.22.13" - chalk "^2.4.2" - "@babel/code-frame@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz" @@ -56,6 +41,14 @@ dependencies: "@babel/highlight" "^7.22.5" +"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + "@babel/compat-data@^7.15.0": version "7.15.0" resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz" @@ -66,22 +59,27 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz" integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== -"@babel/core@7.22.11": - version "7.22.11" - resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz" - integrity sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ== +"@babel/compat-data@^7.23.5": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz#31c1f66435f2a9c329bb5716a6d6186c516c3742" + integrity sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA== + +"@babel/core@7.24.3": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz#568864247ea10fbd4eff04dda1e05f9e2ea985c3" + integrity sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.11" - "@babel/parser" "^7.22.11" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" - convert-source-map "^1.7.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.1" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.24.1" + "@babel/parser" "^7.24.1" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" @@ -117,16 +115,6 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.22.10": - version "7.22.10" - resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== - dependencies: - "@babel/types" "^7.22.10" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - "@babel/generator@^7.22.7": version "7.22.7" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz" @@ -137,6 +125,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz#e67e06f68568a4ebf194d1c6014235344f0476d0" + integrity sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A== + dependencies: + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" @@ -179,6 +177,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.22.11": version "7.22.11" resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.11.tgz" @@ -237,6 +246,11 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + "@babel/helper-environment-visitor@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz" @@ -259,6 +273,14 @@ "@babel/template" "^7.22.5" "@babel/types" "^7.22.5" +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + "@babel/helper-get-function-arity@^7.15.4": version "7.15.4" resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz" @@ -301,6 +323,13 @@ dependencies: "@babel/types" "^7.15.4" +"@babel/helper-module-imports@^7.22.15": + version "7.24.3" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + "@babel/helper-module-imports@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz" @@ -347,6 +376,17 @@ "@babel/helper-split-export-declaration" "^7.22.6" "@babel/helper-validator-identifier" "^7.22.5" +"@babel/helper-module-transforms@^7.23.3": + version "7.23.3" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" + integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-optimise-call-expression@^7.15.4": version "7.15.4" resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz" @@ -461,7 +501,12 @@ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": +"@babel/helper-string-parser@^7.23.4": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": version "7.22.20" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== @@ -486,6 +531,11 @@ resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz" integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + "@babel/helper-wrap-function@^7.22.9": version "7.22.10" resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz" @@ -504,14 +554,14 @@ "@babel/traverse" "^7.15.4" "@babel/types" "^7.15.4" -"@babel/helpers@^7.22.11": - version "7.22.11" - resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz" - integrity sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg== +"@babel/helpers@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz#183e44714b9eba36c3038e442516587b1e0a1a94" + integrity sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.11" - "@babel/types" "^7.22.11" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": version "7.14.5" @@ -522,24 +572,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.22.13": - version "7.22.13" - resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz" - integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ== - dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.4.2" - js-tokens "^4.0.0" - "@babel/highlight@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz" @@ -549,21 +581,31 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.15.4", "@babel/parser@^7.15.5", "@babel/parser@^7.7.2": version "7.15.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz" integrity sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g== -"@babel/parser@^7.22.11": - version "7.22.13" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.13.tgz" - integrity sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw== - "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": version "7.22.7" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz" integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.24.0", "@babel/parser@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz#1e416d3627393fab1cb5b0f2f1796a100ae9133a" + integrity sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz" @@ -1253,15 +1295,15 @@ "@babel/plugin-transform-modules-commonjs" "^7.22.11" "@babel/plugin-transform-typescript" "^7.22.11" -"@babel/register@7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/register/-/register-7.22.5.tgz" - integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ== +"@babel/register@7.23.7": + version "7.23.7" + resolved "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" + integrity sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" make-dir "^2.1.0" - pirates "^4.0.5" + pirates "^4.0.6" source-map-support "^0.5.16" "@babel/regjsgen@^0.8.0": @@ -1292,6 +1334,15 @@ "@babel/parser" "^7.15.4" "@babel/types" "^7.15.4" +"@babel/template@^7.22.15", "@babel/template@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + "@babel/template@^7.22.5": version "7.22.5" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz" @@ -1316,22 +1367,6 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.22.11": - version "7.22.11" - resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.11.tgz" - integrity sha512-mzAenteTfomcB7mfPtyi+4oe5BZ6MXxWcn4CX+h4IRJ+OOGXBrWU6jDQavkQI9Vuc5P+donFabBfFCcmWka9lQ== - dependencies: - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.11" - "@babel/types" "^7.22.11" - debug "^4.1.0" - globals "^11.1.0" - "@babel/traverse@^7.22.5": version "7.22.8" resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz" @@ -1348,6 +1383,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.24.1": + version "7.24.1" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== + dependencies: + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.24.1" + "@babel/types" "^7.24.0" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0": version "7.23.3" resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz#d5ea892c07f2ec371ac704420f4dcdb07b5f9598" @@ -1374,7 +1425,7 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@babel/types@^7.22.10", "@babel/types@^7.22.11": +"@babel/types@^7.22.10": version "7.22.11" resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.11.tgz" integrity sha512-siazHiGuZRz9aB9NpHy9GOs9xiQPKnMzgdr493iI1M67vRXpnEq8ZOOKzezC5q7zwuQ6sDhdSp4SD9ixKSqKZg== @@ -1392,6 +1443,15 @@ "@babel/helper-validator-identifier" "^7.22.5" to-fast-properties "^2.0.0" +"@babel/types@^7.23.0", "@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@changesets/apply-release-plan@^6.1.4": version "6.1.4" resolved "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.4.tgz" @@ -1875,6 +1935,15 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" @@ -1885,11 +1954,21 @@ resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz" integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/source-map@^0.3.2": version "0.3.2" resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz" @@ -1908,9 +1987,9 @@ resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz" integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== -"@jridgewell/sourcemap-codec@^1.4.13": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": @@ -1929,6 +2008,14 @@ "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@jridgewell/trace-mapping@^0.3.9": version "0.3.14" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz" @@ -2964,12 +3051,12 @@ resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" integrity sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA= -"@rollup/plugin-alias@3.1.9": - version "3.1.9" - resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz" - integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== +"@rollup/plugin-alias@5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.1.0.tgz#99a94accc4ff9a3483be5baeedd5d7da3b597e93" + integrity sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ== dependencies: - slash "^3.0.0" + slash "^4.0.0" "@rollup/plugin-commonjs@21.1.0": version "21.1.0" @@ -3062,6 +3149,18 @@ semver "~7.5.4" z-schema "~5.0.2" +"@rushstack/node-core-library@4.0.2": + version "4.0.2" + resolved "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz#e26854a3314b279d57e8abdb4acce7797d02f554" + integrity sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg== + dependencies: + fs-extra "~7.0.1" + import-lazy "~4.0.0" + jju "~1.4.0" + resolve "~1.22.1" + semver "~7.5.4" + z-schema "~5.0.2" + "@rushstack/rig-package@0.2.9": version "0.2.9" resolved "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.2.9.tgz" @@ -3071,14 +3170,22 @@ resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.15.2": - version "4.15.2" - resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.15.2.tgz" - integrity sha512-5+C2uoJY8b+odcZD6coEe2XNC4ZjGB4vCMESbqW/8DHRWC/qIHfANdmN9F1wz/lAgxz72i7xRoVtPY2j7e4gpQ== +"@rushstack/terminal@0.10.0": + version "0.10.0" + resolved "https://registry.npmjs.org/@rushstack/terminal/-/terminal-0.10.0.tgz#e81909fa0e5c8016b6df4739f0f381f44358269f" + integrity sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw== + dependencies: + "@rushstack/node-core-library" "4.0.2" + supports-color "~8.1.1" + +"@rushstack/ts-command-line@4.19.1": + version "4.19.1" + resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.19.1.tgz#288ee54dd607e558a8be07705869c16c31b5c3ef" + integrity sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg== dependencies: + "@rushstack/terminal" "0.10.0" "@types/argparse" "1.0.38" argparse "~1.0.9" - colors "~1.2.1" string-argv "~0.3.1" "@rushstack/ts-command-line@4.7.8": @@ -3150,10 +3257,10 @@ dependencies: defer-to-connect "^2.0.0" -"@testim/chrome-version@^1.1.3": - version "1.1.3" - resolved "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.3.tgz" - integrity sha512-g697J3WxV/Zytemz8aTuKjTGYtta9+02kva3C1xc7KXB8GdbfE1akGJIsZLyY/FSh2QrnE+fiB7vmWU3XNcb6A== +"@testim/chrome-version@^1.1.4": + version "1.1.4" + resolved "https://registry.npmjs.org/@testim/chrome-version/-/chrome-version-1.1.4.tgz#86e04e677cd6c05fa230dd15ac223fa72d1d7090" + integrity sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g== "@tootallnate/once@1": version "1.1.2" @@ -3220,10 +3327,10 @@ resolved "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz" integrity sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w== -"@types/chai-as-promised@7.1.5": - version "7.1.5" - resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.5.tgz" - integrity sha512-jStwss93SITGBwt/niYrkf2C+/1KTeZCZl1LaeezTlqppAKeoQC7jxyqYuP72sxBGKCIbw7oHgbYssIRzT5FCQ== +"@types/chai-as-promised@7.1.8": + version "7.1.8" + resolved "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== dependencies: "@types/chai" "*" @@ -3232,15 +3339,15 @@ resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.22.tgz" integrity sha512-tFfcE+DSTzWAgifkjik9AySNqIyNoYwmR+uecPwwD/XRNfvOjmC/FjCxpiUGDkDVDphPfCUecSQVFw+lN3M3kQ== -"@types/chai@4.3.5": - version "4.3.5" - resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz" - integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng== +"@types/chai@4.3.14": + version "4.3.14" + resolved "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz#ae3055ea2be43c91c9fd700a36d67820026d96e6" + integrity sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w== -"@types/child-process-promise@2.2.2": - version "2.2.2" - resolved "https://registry.npmjs.org/@types/child-process-promise/-/child-process-promise-2.2.2.tgz" - integrity sha512-4eGTIhKW0jb9DlS81Fgo/UyZ12DMhDhz3Ec8tdHW53l4ubteynNIuy7Z1HNnyHn1jTzXa/o9iX0WoAdiSoDs+Q== +"@types/child-process-promise@2.2.6": + version "2.2.6" + resolved "https://registry.npmjs.org/@types/child-process-promise/-/child-process-promise-2.2.6.tgz#3936229dd9c88d14a52cb05a061d9a67f0d0374e" + integrity sha512-g0pOHijr6Trug43D2bV0PLSIsSHa/xHEES2HeX5BAlduq1vW0nZcq27Zeud5lgmNB+kPYYVqiMap32EHGTco/w== dependencies: "@types/node" "*" @@ -3331,10 +3438,10 @@ "@types/qs" "*" "@types/range-parser" "*" -"@types/express@4.17.17": - version "4.17.17" - resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== +"@types/express@4.17.21": + version "4.17.21" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -3368,10 +3475,10 @@ resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/inquirer@8.2.6": - version "8.2.6" - resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.6.tgz" - integrity sha512-3uT88kxg8lNzY8ay2ZjP44DKcRaTGztqeIvN2zHvhzIBH/uAPaL75aBtdNRKbA7xXoMbBt5kX0M00VKAnfOYlA== +"@types/inquirer@8.2.10": + version "8.2.10" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.10.tgz#9444dce2d764c35bc5bb4d742598aaa4acb6561b" + integrity sha512-IdD5NmHyVjWM8SHWo/kPBgtzXatwPkfwzyP3fN1jF2g9BWt5WO+8hL2F4o2GKIYsU40PpqeevuUWvkS/roXJkA== dependencies: "@types/through" "*" rxjs "^7.2.0" @@ -3402,10 +3509,10 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/js-yaml@4.0.5": - version "4.0.5" - resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== +"@types/js-yaml@4.0.9": + version "4.0.9" + resolved "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2" + integrity sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg== "@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6", "@types/json-schema@^7.0.8": version "7.0.9" @@ -3417,10 +3524,10 @@ resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/json-stable-stringify@1.0.34": - version "1.0.34" - resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz" - integrity sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw== +"@types/json-stable-stringify@1.0.36": + version "1.0.36" + resolved "https://registry.npmjs.org/@types/json-stable-stringify/-/json-stable-stringify-1.0.36.tgz#fe6c6001a69ff8160a772da08779448a333c7ddd" + integrity sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw== "@types/json5@^0.0.29": version "0.0.29" @@ -3434,10 +3541,10 @@ dependencies: "@types/node" "*" -"@types/listr@0.14.4": - version "0.14.4" - resolved "https://registry.npmjs.org/@types/listr/-/listr-0.14.4.tgz" - integrity sha512-+MWvidNujBUgJsi4yMVwEQQwaHe6oHedPSy+dwk3akGEeuIbvhWkK+TGsXSwbFup7Y0cCBb+wzzdD+yGKp7sOg== +"@types/listr@0.14.9": + version "0.14.9" + resolved "https://registry.npmjs.org/@types/listr/-/listr-0.14.9.tgz#736581cfdfcdb821bace0a3e5b05e91182e00c85" + integrity sha512-Ncsy/jtO/HZYrupLGcnp1BOswZVsNvggjIjnf2EZ1xECfU4hxcQ3FWvFEyR+/DXssz0HDm74Op/tEsyrB3eV5w== dependencies: "@types/node" "*" rxjs "^6.5.1" @@ -3472,10 +3579,10 @@ resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== -"@types/mz@2.7.4": - version "2.7.4" - resolved "https://registry.npmjs.org/@types/mz/-/mz-2.7.4.tgz" - integrity sha512-Zs0imXxyWT20j3Z2NwKpr0IO2LmLactBblNyLua5Az4UHuqOQ02V3jPTgyKwDkuc33/ahw+C3O1PIZdrhFMuQA== +"@types/mz@2.7.8": + version "2.7.8" + resolved "https://registry.npmjs.org/@types/mz/-/mz-2.7.8.tgz#5ac05b34f08e6225d7ad9b05e158b03d9ca9e2d4" + integrity sha512-mGLNqqwt8yu4pDw9rEphAiyWnEdok0GzOGrwi5EiTuDFxw7H3ZaEI4ASFKq4HaZtemtjQ8MkcmtWcrU4V0WkIw== dependencies: "@types/node" "*" @@ -3556,10 +3663,10 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/request@2.48.8": - version "2.48.8" - resolved "https://registry.npmjs.org/@types/request/-/request-2.48.8.tgz" - integrity sha512-whjk1EDJPcAR2kYHRbFl/lKeeKYTi05A15K9bnLInCVroNDCtXce57xKdI0/rQaA3K+6q0eFyUBPmqfSndUZdQ== +"@types/request@2.48.12": + version "2.48.12" + resolved "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz#0f590f615a10f87da18e9790ac94c29ec4c5ef30" + integrity sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw== dependencies: "@types/caseless" "*" "@types/node" "*" @@ -3573,10 +3680,10 @@ dependencies: "@types/node" "*" -"@types/resolve@1.20.2": - version "1.20.2" - resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" - integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== +"@types/resolve@1.20.6": + version "1.20.6" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz#e6e60dad29c2c8c206c026e6dd8d6d1bdda850b8" + integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ== "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" @@ -3608,10 +3715,10 @@ "@types/mime" "*" "@types/node" "*" -"@types/sinon-chai@3.2.9": - version "3.2.9" - resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.9.tgz" - integrity sha512-/19t63pFYU0ikrdbXKBWj9PCdnKyTd0Qkz0X91Ta081cYsq90OxYdcWwK/dwEoDa6dtXgj2HJfmzgq+QZTHdmQ== +"@types/sinon-chai@3.2.12": + version "3.2.12" + resolved "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz#c7cb06bee44a534ec84f3a5534c3a3a46fd779b6" + integrity sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ== dependencies: "@types/chai" "*" "@types/sinon" "*" @@ -3647,20 +3754,20 @@ dependencies: "@types/node" "*" -"@types/tmp@0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz" - integrity sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA== +"@types/tmp@0.2.6": + version "0.2.6" + resolved "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217" + integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA== "@types/tough-cookie@*": version "4.0.1" resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.1.tgz" integrity sha512-Y0K95ThC3esLEYD6ZuqNek29lNX2EM1qxV8y2FTLUB0ff5wWrk7az+mLrnNFUnaXcgKye22+sFBRXOgpPILZNg== -"@types/trusted-types@2.0.3": - version "2.0.3" - resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz" - integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== +"@types/trusted-types@2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== "@types/vinyl@^2.0.4": version "2.0.6" @@ -3670,10 +3777,10 @@ "@types/expect" "^1.20.4" "@types/node" "*" -"@types/webpack@5.28.0": - version "5.28.0" - resolved "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.0.tgz" - integrity sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w== +"@types/webpack@5.28.5": + version "5.28.5" + resolved "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.5.tgz#0e9d9a15efa09bbda2cef41356ca4ac2031ea9a2" + integrity sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw== dependencies: "@types/node" "*" tapable "^2.2.0" @@ -3684,10 +3791,10 @@ resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz" integrity sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw== -"@types/yargs@17.0.24": - version "17.0.24" - resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== +"@types/yargs@17.0.32": + version "17.0.32" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -4440,6 +4547,14 @@ arr-union@^3.1.0: resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + array-differ@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz" @@ -4471,14 +4586,15 @@ array-ify@^1.0.0: integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= array-includes@^3.1.4: - version "3.1.5" - resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" + version "3.1.8" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" is-string "^1.0.7" array-initial@^1.0.0: @@ -4532,7 +4648,7 @@ array-unique@^0.3.2: resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= -array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: +array.prototype.flat@^1.2.3: version "1.3.0" resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz" integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== @@ -4542,6 +4658,30 @@ array.prototype.flat@^1.2.3, array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +array.prototype.flat@^1.2.5: + version "1.3.2" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" @@ -4682,6 +4822,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" @@ -4692,12 +4839,12 @@ aws4@^1.8.0: resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^1.4.0: - version "1.6.7" - resolved "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" - integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== +axios@^1.6.0: + version "1.6.8" + resolved "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" + integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== dependencies: - follow-redirects "^1.15.4" + follow-redirects "^1.15.6" form-data "^4.0.0" proxy-from-env "^1.1.0" @@ -5008,13 +5155,13 @@ body-parser@1.19.0, body-parser@^1.18.3, body-parser@^1.19.0: raw-body "2.4.0" type-is "~1.6.17" -body-parser@1.20.1: - version "1.20.1" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" - integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== dependencies: bytes "3.1.2" - content-type "~1.0.4" + content-type "~1.0.5" debug "2.6.9" depd "2.0.0" destroy "1.2.0" @@ -5022,7 +5169,7 @@ body-parser@1.20.1: iconv-lite "0.4.24" on-finished "2.4.1" qs "6.11.0" - raw-body "2.5.1" + raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -5184,6 +5331,16 @@ browserslist@^4.21.10, browserslist@^4.21.9: node-releases "^2.0.13" update-browserslist-db "^1.0.11" +browserslist@^4.22.2: + version "4.23.0" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + browserstack@^1.5.1: version "1.6.1" resolved "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz" @@ -5383,6 +5540,17 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" +call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" @@ -5427,6 +5595,11 @@ caniuse-lite@^1.0.30001517: resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz" integrity sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA== +caniuse-lite@^1.0.30001587: + version "1.0.30001600" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" + integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== + cardinal@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" @@ -5454,18 +5627,18 @@ chai-exclude@2.1.0: dependencies: fclone "^1.0.11" -chai@4.3.7: - version "4.3.7" - resolved "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz" - integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A== +chai@4.4.1: + version "4.4.1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^4.1.2" - get-func-name "^2.0.0" - loupe "^2.3.1" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" pathval "^1.1.1" - type-detect "^4.0.5" + type-detect "^4.0.8" chalk@4.1.2, chalk@4.x, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" @@ -5510,6 +5683,13 @@ check-error@^1.0.2: resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + child-process-promise@2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/child-process-promise/-/child-process-promise-2.2.1.tgz" @@ -5583,18 +5763,18 @@ chrome-trace-event@^1.0.2: resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== -chromedriver@116.0.0: - version "116.0.0" - resolved "https://registry.npmjs.org/chromedriver/-/chromedriver-116.0.0.tgz#3f5d07b5427953270461791651d7b68cb6afe9fe" - integrity sha512-/TQaRn+RUAYnVqy5Vx8VtU8DvtWosU8QLM2u7BoNM5h55PRQPXF/onHAehEi8Sj/CehdKqH50NFdiumQAUr0DQ== +chromedriver@119.0.1: + version "119.0.1" + resolved "https://registry.npmjs.org/chromedriver/-/chromedriver-119.0.1.tgz#064f3650790ccea055e9bfd95c600f5ea60295e9" + integrity sha512-lpCFFLaXPpvElTaUOWKdP74pFb/sJhWtWqMjn7Ju1YriWn8dT5JBk84BGXMPvZQs70WfCYWecxdMmwfIu1Mupg== dependencies: - "@testim/chrome-version" "^1.1.3" - axios "^1.4.0" - compare-versions "^6.0.0" + "@testim/chrome-version" "^1.1.4" + axios "^1.6.0" + compare-versions "^6.1.0" extract-zip "^2.0.1" https-proxy-agent "^5.0.1" proxy-from-env "^1.1.0" - tcp-port-used "^1.0.1" + tcp-port-used "^1.0.2" ci-info@^2.0.0: version "2.0.0" @@ -5955,7 +6135,7 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -compare-versions@^6.0.0: +compare-versions@^6.1.0: version "6.1.0" resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== @@ -6084,6 +6264,11 @@ content-type@^1.0.4, content-type@~1.0.4: resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + conventional-changelog-angular@^5.0.12: version "5.0.13" resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz" @@ -6173,6 +6358,11 @@ convert-source-map@^1.0.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, dependencies: safe-buffer "~5.1.1" +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + convert-source-map@~1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz" @@ -6188,10 +6378,10 @@ cookie@0.4.0: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== cookie@~0.4.1: version "0.4.1" @@ -6463,6 +6653,33 @@ data-uri-to-buffer@3: resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + dataloader@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz" @@ -6499,7 +6716,7 @@ debug-fabulous@^1.0.0: debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" @@ -6572,9 +6789,9 @@ dedent@^0.7.0: resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= -deep-eql@^4.1.2: +deep-eql@^4.1.3: version "4.1.3" - resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== dependencies: type-detect "^4.0.0" @@ -6630,6 +6847,15 @@ defer-to-connect@^2.0.0: resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" @@ -6645,6 +6871,15 @@ define-properties@^1.1.4: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" @@ -6944,6 +7179,11 @@ electron-to-chromium@^1.4.477: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.505.tgz" integrity sha512-0A50eL5BCCKdxig2SsCXhpuztnB9PfUgRMojj5tMvt8O54lbwz3t6wNgnpiTRosw5QjlJB7ixhVyeg8daLQwSQ== +electron-to-chromium@^1.4.668: + version "1.4.722" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.722.tgz#99ae3484c5fc0f387d39ad98d77e1f259b9f4074" + integrity sha512-5nLE0TWFFpZ80Crhtp4pIp8LXCztjYX41yUcV6b+bKR2PqzjskTMOOlBi1VjBHlvHwS+4gar7kNKOrsbsewEZQ== + elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz" @@ -7024,14 +7264,13 @@ engine.io@~6.2.0: engine.io-parser "~5.0.3" ws "~8.2.3" -enhanced-resolve@^4.0.0: - version "4.5.0" - resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz" - integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== +enhanced-resolve@^5.0.0: + version "5.16.0" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz#65ec88778083056cb32487faa9aef82ed0864787" + integrity sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA== dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" + graceful-fs "^4.2.4" + tapable "^2.2.0" enhanced-resolve@^5.10.0: version "5.15.0" @@ -7114,7 +7353,7 @@ es-abstract@^1.18.0-next.2, es-abstract@^1.18.5: string.prototype.trimstart "^1.0.4" unbox-primitive "^1.0.1" -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: +es-abstract@^1.19.0, es-abstract@^1.19.2, es-abstract@^1.19.5: version "1.20.0" resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.0.tgz" integrity sha512-URbD8tgRthKD3YcC39vbvSDrX23upXnPcnGAjQfgxXF5ID75YcENawc9ZX/9iTP9ptUyfCLIxTTuMYoRfiOVKA== @@ -7143,6 +7382,70 @@ es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19 string.prototype.trimstart "^1.0.5" unbox-primitive "^1.0.2" +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + es-module-lexer@^0.7.1: version "0.7.1" resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz" @@ -7153,6 +7456,22 @@ es-module-lexer@^0.9.0: resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz" integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" @@ -7279,24 +7598,24 @@ escodegen@^1.8.1: source-map "~0.6.1" eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + version "0.3.9" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - resolve "^1.20.0" + is-core-module "^2.13.0" + resolve "^1.22.4" eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + version "2.8.1" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== dependencies: debug "^3.2.7" - find-up "^2.1.0" eslint-plugin-import@2.26.0: version "2.26.0" - resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== dependencies: array-includes "^3.1.4" @@ -7609,17 +7928,17 @@ expect@^27.2.1: jest-message-util "^27.2.0" jest-regex-util "^27.0.6" -express@4.18.2: - version "4.18.2" - resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" - integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== +express@4.19.2: + version "4.19.2" + resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.1" + body-parser "1.20.2" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.5.0" + cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" @@ -8013,7 +8332,7 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= @@ -8188,11 +8507,18 @@ fn.name@1.x.x: resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz" integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== -follow-redirects@^1.0.0, follow-redirects@^1.15.4: +follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.6" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" @@ -8399,6 +8725,11 @@ function-bind@^1.1.1: resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + function.prototype.name@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" @@ -8409,12 +8740,22 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -functions-have-names@^1.2.2: +functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -8525,10 +8866,10 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" @@ -8539,6 +8880,17 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" @@ -8579,6 +8931,15 @@ get-symbol-description@^1.0.0: call-bind "^1.0.2" get-intrinsic "^1.1.1" +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + get-uri@3: version "3.0.2" resolved "https://registry.npmjs.org/get-uri/-/get-uri-3.0.2.tgz" @@ -8794,6 +9155,13 @@ globals@^9.18.0: resolved "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + globby@10.0.1: version "10.0.1" resolved "https://registry.npmjs.org/globby/-/globby-10.0.1.tgz" @@ -8953,6 +9321,13 @@ google-p12-pem@^4.0.0: dependencies: node-forge "^1.3.1" +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + got@11.8.2: version "11.8.2" resolved "https://registry.npmjs.org/got/-/got-11.8.2.tgz" @@ -9173,6 +9548,18 @@ has-property-descriptors@^1.0.0: dependencies: get-intrinsic "^1.1.1" +has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + has-symbols@^1.0.1, has-symbols@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" @@ -9190,6 +9577,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-unicode@^2.0.0, has-unicode@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" @@ -9263,6 +9657,13 @@ hasha@^5.0.0: is-stream "^2.0.0" type-fest "^0.8.0" +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -9701,6 +10102,15 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + interpret@^1.0.0, interpret@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" @@ -9768,6 +10178,14 @@ is-arguments@^1.0.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" @@ -9819,6 +10237,11 @@ is-builtin-module@^3.1.0: dependencies: builtin-modules "^3.0.0" +is-callable@^1.1.3, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" @@ -9880,6 +10303,13 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + is-date-object@^1.0.1: version "1.0.5" resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" @@ -10023,6 +10453,11 @@ is-negative-zero@^2.0.2: resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + is-npm@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" @@ -10154,6 +10589,13 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" +is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-ssh@^1.3.0: version "1.3.3" resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" @@ -10204,6 +10646,13 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-typed-array@^1.1.3, is-typed-array@^1.1.7: version "1.1.8" resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" @@ -10295,6 +10744,11 @@ isarray@1.0.0, isarray@~1.0.0: resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isbinaryfile@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz" @@ -10767,12 +11221,15 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz" - integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== +json-stable-stringify@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454" + integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg== dependencies: + call-bind "^1.0.5" + isarray "^2.0.5" jsonify "^0.0.1" + object-keys "^1.1.1" json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" @@ -10786,6 +11243,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.2.0" resolved "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" @@ -10943,13 +11407,13 @@ karma-coverage-istanbul-reporter@3.0.3: istanbul-reports "^3.0.2" minimatch "^3.0.4" -karma-firefox-launcher@2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz" - integrity sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA== +karma-firefox-launcher@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.3.tgz#b278a4cbffa92ab81394b1a398813847b0624a85" + integrity sha512-LMM2bseebLbYjODBOVt7TCPP9OI2vZIXCavIXhkO9m+10Uj5l7u/SKoeRmYx8FYHTVGZSpk6peX+3BMHC1WwNw== dependencies: is-wsl "^2.2.0" - which "^2.0.1" + which "^3.0.0" karma-mocha-reporter@2.2.5: version "2.2.5" @@ -10979,13 +11443,6 @@ karma-sourcemap-loader@0.4.0: dependencies: graceful-fs "^4.2.10" -karma-spec-reporter@0.0.34: - version "0.0.34" - resolved "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.34.tgz" - integrity sha512-l5H/Nh9q4g2Ysx2CDU2m+NIPyLQpCVbk9c4V02BTZHw3NM6RO1dq3eRpKXCSSdPt4RGfhHk8jDt3XYkGp+5PWg== - dependencies: - colors "1.4.0" - karma-spec-reporter@0.0.36: version "0.0.36" resolved "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.36.tgz" @@ -11645,12 +12102,12 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: - get-func-name "^2.0.0" + get-func-name "^2.0.1" lowercase-keys@^2.0.0: version "2.0.0" @@ -11703,12 +12160,12 @@ magic-string@^0.25.2, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.4" -magic-string@^0.30.0: - version "0.30.0" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz" - integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ== +magic-string@^0.30.2: + version "0.30.8" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613" + integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ== dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" + "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@~0.26.2: version "0.26.7" @@ -12649,6 +13106,11 @@ node-releases@^2.0.13: resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + node-version@^1.0.0: version "1.2.0" resolved "https://registry.npmjs.org/node-version/-/node-version-1.2.0.tgz" @@ -12937,6 +13399,11 @@ object-inspect@^1.12.0: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-is@^1.0.1: version "1.1.5" resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" @@ -12967,6 +13434,16 @@ object.assign@^4.0.4, object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + object.defaults@^1.0.0, object.defaults@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz" @@ -13010,13 +13487,13 @@ object.reduce@^1.0.0: make-iterator "^1.0.0" object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + version "1.2.0" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" on-finished@2.4.1: version "2.4.1" @@ -13486,10 +13963,10 @@ pascalcase@^0.1.1: resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= -patch-package@7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/patch-package/-/patch-package-7.0.0.tgz" - integrity sha512-eYunHbnnB2ghjTNc5iL1Uo7TsGMuXk0vibX3RFcE/CdVdXzmdbMsG/4K4IgoSuIkLTI5oHrMQk4+NkFqSed0BQ== +patch-package@7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/patch-package/-/patch-package-7.0.2.tgz#c01589bb6964854b5210506a5845d47900641f5a" + integrity sha512-PMYfL8LXxGIRmxXLqlEaBxzKPu7/SdP13ld6GSfAUJUZRmBDPp8chZs0dpzaAFn9TSPnFiMwkC6PJt6pBiAl8Q== dependencies: "@yarnpkg/lockfile" "^1.1.0" chalk "^4.1.2" @@ -13501,7 +13978,7 @@ patch-package@7.0.0: minimist "^1.2.6" open "^7.4.2" rimraf "^2.6.3" - semver "^5.6.0" + semver "^7.5.3" slash "^2.0.0" tmp "^0.0.33" yaml "^2.2.2" @@ -13697,10 +14174,10 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" -pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== +pirates@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== "pkg-dir@< 6 >= 5": version "5.0.0" @@ -13756,6 +14233,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + postcss@^7.0.16: version "7.0.36" resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz" @@ -13903,7 +14385,25 @@ protobufjs@6.11.3, protobufjs@^6.11.3: "@types/node" ">=13.7.0" long "^4.0.0" -protobufjs@7.2.4, protobufjs@^7.2.4: +protobufjs@7.2.6: + version "7.2.6" + resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" + integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +protobufjs@^7.2.4: version "7.2.4" resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz" integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== @@ -14152,10 +14652,10 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.1: - version "2.5.1" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" http-errors "2.0.0" @@ -14466,6 +14966,16 @@ regexp.prototype.flags@^1.4.1: define-properties "^1.1.3" functions-have-names "^1.2.2" +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + regexpp@^3.1.0: version "3.2.0" resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" @@ -14691,12 +15201,12 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17. is-core-module "^2.2.0" path-parse "^1.0.6" -resolve@^1.22.0, resolve@~1.22.0: - version "1.22.0" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== +resolve@^1.22.0, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -14707,6 +15217,15 @@ resolve@~1.17.0: dependencies: path-parse "^1.0.6" +resolve@~1.22.0: + version "1.22.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@~1.22.1: version "1.22.4" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" @@ -14801,10 +15320,10 @@ rollup-plugin-copy-assets@2.0.3: dependencies: fs-extra "^7.0.1" -rollup-plugin-copy@3.4.0: - version "3.4.0" - resolved "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.4.0.tgz" - integrity sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ== +rollup-plugin-copy@3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/rollup-plugin-copy/-/rollup-plugin-copy-3.5.0.tgz#7ffa2a7a8303e143876fa64fb5eed9022d304eeb" + integrity sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA== dependencies: "@types/fs-extra" "^8.0.1" colorette "^1.1.0" @@ -14812,14 +15331,14 @@ rollup-plugin-copy@3.4.0: globby "10.0.1" is-plain-object "^3.0.0" -rollup-plugin-dts@5.3.0: - version "5.3.0" - resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz" - integrity sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ== +rollup-plugin-dts@5.3.1: + version "5.3.1" + resolved "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.3.1.tgz#c2841269a3a5cb986b7791b0328e6a178eba108f" + integrity sha512-gusMi+Z4gY/JaEQeXnB0RUdU82h1kF0WYzCWgVmV4p3hWXqelaKuCvcJawfeg+EKn2T1Ie+YWF2OiN1/L8bTVg== dependencies: - magic-string "^0.30.0" + magic-string "^0.30.2" optionalDependencies: - "@babel/code-frame" "^7.18.6" + "@babel/code-frame" "^7.22.5" rollup-plugin-license@3.0.1: version "3.0.1" @@ -14944,6 +15463,16 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" @@ -14954,6 +15483,15 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" @@ -15089,10 +15627,10 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.3.8: - version "7.3.8" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== +semver@7.5.2: + version "7.5.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz#5b851e66d1be07c1cdaf37dfc856f543325a2beb" + integrity sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ== dependencies: lru-cache "^6.0.0" @@ -15216,6 +15754,28 @@ set-blocking@^2.0.0, set-blocking@~2.0.0: resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + set-immediate-shim@~1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" @@ -15318,10 +15878,10 @@ signal-exit@^3.0.7: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -simple-git@3.19.1: - version "3.19.1" - resolved "https://registry.npmjs.org/simple-git/-/simple-git-3.19.1.tgz" - integrity sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w== +simple-git@3.24.0: + version "3.24.0" + resolved "https://registry.npmjs.org/simple-git/-/simple-git-3.24.0.tgz#33a8c88dc6fa74e53eaf3d6bfc27d0182a49ec00" + integrity sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw== dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" @@ -15361,6 +15921,11 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" @@ -15576,6 +16141,11 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + sourcemap-codec@^1.4.4, sourcemap-codec@^1.4.8: version "1.4.8" resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" @@ -15889,6 +16459,16 @@ string.prototype.padend@^3.0.0: define-properties "^1.1.3" es-abstract "^1.18.0-next.2" +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + string.prototype.trimend@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" @@ -15906,6 +16486,15 @@ string.prototype.trimend@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string.prototype.trimstart@^1.0.4: version "1.0.4" resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" @@ -15923,6 +16512,15 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" @@ -16049,7 +16647,7 @@ superstatic@^9.0.3: optionalDependencies: re2 "^1.17.7" -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: +supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1, supports-color@~8.1.1: version "8.1.1" resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -16124,11 +16722,6 @@ table@^6.0.9: string-width "^4.2.0" strip-ansi "^6.0.0" -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" @@ -16182,7 +16775,7 @@ tar@^6.0.2, tar@^6.1.0, tar@^6.1.11, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -tcp-port-used@^1.0.1, tcp-port-used@^1.0.2: +tcp-port-used@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz" integrity sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA== @@ -16505,16 +17098,16 @@ ts-essentials@9.3.0: resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz" integrity sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw== -ts-loader@8.4.0: - version "8.4.0" - resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-8.4.0.tgz" - integrity sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw== +ts-loader@9.5.1: + version "9.5.1" + resolved "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz#63d5912a86312f1fbe32cef0859fb8b2193d9b89" + integrity sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg== dependencies: chalk "^4.1.0" - enhanced-resolve "^4.0.0" - loader-utils "^2.0.0" + enhanced-resolve "^5.0.0" micromatch "^4.0.0" semver "^7.3.4" + source-map "^0.7.4" ts-node@10.9.1: version "10.9.1" @@ -16536,12 +17129,12 @@ ts-node@10.9.1: yn "3.1.1" tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + version "3.15.0" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== dependencies: "@types/json5" "^0.0.29" - json5 "^1.0.1" + json5 "^1.0.2" minimist "^1.2.6" strip-bom "^3.0.0" @@ -16642,7 +17235,7 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5, type-detect@^4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -16715,6 +17308,50 @@ type@^2.7.2: resolved "https://registry.npmjs.org/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" @@ -17023,6 +17660,14 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + update-notifier-cjs@^5.1.6: version "5.1.6" resolved "https://registry.npmjs.org/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz" @@ -17539,6 +18184,17 @@ which-pm@2.0.0: load-yaml-file "^0.2.0" path-exists "^4.0.0" +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + which-typed-array@^1.1.2: version "1.1.7" resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" @@ -17565,6 +18221,13 @@ which@^1.2.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" From fe09d8338d7d5f7a82d8cd73cf825adbe5551975 Mon Sep 17 00:00:00 2001 From: DellaBitta Date: Mon, 8 Apr 2024 13:33:51 -0400 Subject: [PATCH 5/6] Update undici dependency to 5.8.24. (#8138) Update our undici dependency to 5.8.24 due to CVE-2024-30260. Fixes #8132. --- .changeset/cyan-pugs-buy.md | 9 +++++++++ integration/messaging/package.json | 2 +- package.json | 2 +- packages/auth-compat/package.json | 2 +- packages/auth/package.json | 2 +- packages/firestore/package.json | 2 +- packages/functions/package.json | 2 +- packages/storage/package.json | 2 +- repo-scripts/changelog-generator/package.json | 2 +- yarn.lock | 8 ++++---- 10 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 .changeset/cyan-pugs-buy.md diff --git a/.changeset/cyan-pugs-buy.md b/.changeset/cyan-pugs-buy.md new file mode 100644 index 00000000000..3e7bea26306 --- /dev/null +++ b/.changeset/cyan-pugs-buy.md @@ -0,0 +1,9 @@ +--- +'@firebase/auth-compat': patch +'@firebase/firestore': patch +'@firebase/functions': patch +'@firebase/storage': patch +'@firebase/auth': patch +--- + +Update undici version to 5.28.4 due to CVE-2024-30260. diff --git a/integration/messaging/package.json b/integration/messaging/package.json index 7bddc0dd56f..35faa09c49f 100644 --- a/integration/messaging/package.json +++ b/integration/messaging/package.json @@ -15,7 +15,7 @@ "express": "4.19.2", "geckodriver": "2.0.4", "mocha": "9.2.2", - "undici": "5.28.3", + "undici": "5.28.4", "selenium-assistant": "6.1.1" } } diff --git a/package.json b/package.json index cd6ffb8678d..ef19b394ca1 100644 --- a/package.json +++ b/package.json @@ -153,7 +153,7 @@ "tslint": "6.1.3", "typedoc": "0.16.11", "typescript": "4.7.4", - "undici": "5.28.3", + "undici": "5.28.4", "watch": "1.0.2", "webpack": "5.76.0", "yargs": "17.7.2" diff --git a/packages/auth-compat/package.json b/packages/auth-compat/package.json index b1002a3559c..0e6eee7dcfc 100644 --- a/packages/auth-compat/package.json +++ b/packages/auth-compat/package.json @@ -54,7 +54,7 @@ "@firebase/auth-types": "0.12.1", "@firebase/component": "0.6.6", "@firebase/util": "1.9.5", - "undici": "5.28.3", + "undici": "5.28.4", "tslib": "^2.1.0" }, "license": "Apache-2.0", diff --git a/packages/auth/package.json b/packages/auth/package.json index 39297914cc1..fcffa563f50 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -129,7 +129,7 @@ "@firebase/component": "0.6.6", "@firebase/logger": "0.4.1", "@firebase/util": "1.9.5", - "undici": "5.28.3", + "undici": "5.28.4", "tslib": "^2.1.0" }, "license": "Apache-2.0", diff --git a/packages/firestore/package.json b/packages/firestore/package.json index 274b5b8a9cd..f7c35e6e42b 100644 --- a/packages/firestore/package.json +++ b/packages/firestore/package.json @@ -102,7 +102,7 @@ "@firebase/webchannel-wrapper": "0.10.6", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", - "undici": "5.28.3", + "undici": "5.28.4", "tslib": "^2.1.0" }, "peerDependencies": { diff --git a/packages/functions/package.json b/packages/functions/package.json index e5a6b004d90..b24599d0de4 100644 --- a/packages/functions/package.json +++ b/packages/functions/package.json @@ -71,7 +71,7 @@ "@firebase/auth-interop-types": "0.2.2", "@firebase/app-check-interop-types": "0.3.1", "@firebase/util": "1.9.5", - "undici": "5.28.3", + "undici": "5.28.4", "tslib": "^2.1.0" }, "nyc": { diff --git a/packages/storage/package.json b/packages/storage/package.json index 886ce50292e..9aac870cef9 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -48,7 +48,7 @@ "dependencies": { "@firebase/util": "1.9.5", "@firebase/component": "0.6.6", - "undici": "5.28.3", + "undici": "5.28.4", "tslib": "^2.1.0" }, "peerDependencies": { diff --git a/repo-scripts/changelog-generator/package.json b/repo-scripts/changelog-generator/package.json index f2afdaeffbf..e04bb6f2ecf 100644 --- a/repo-scripts/changelog-generator/package.json +++ b/repo-scripts/changelog-generator/package.json @@ -20,7 +20,7 @@ "@changesets/types": "3.3.0", "@changesets/get-github-info": "0.5.2", "@types/node": "20.8.10", - "undici": "5.28.3" + "undici": "5.28.4" }, "license": "Apache-2.0", "devDependencies": { diff --git a/yarn.lock b/yarn.lock index d75026f9182..01d60f9b013 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17501,10 +17501,10 @@ undici-types@~5.26.4: resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici@5.28.3: - version "5.28.3" - resolved "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz#a731e0eff2c3fcfd41c1169a869062be222d1e5b" - integrity sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA== +undici@5.28.4: + version "5.28.4" + resolved "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== dependencies: "@fastify/busboy" "^2.0.0" From f1a57d00d05c202ca676f22ed89ad636e8a708c6 Mon Sep 17 00:00:00 2001 From: Kai Wu Date: Mon, 8 Apr 2024 15:35:50 -0700 Subject: [PATCH 6/6] Don't delete on update failure (#8141) * Don't delete on update failure * update * Update cyan-rats-itch.md --- .changeset/cyan-rats-itch.md | 5 +++ .../src/internals/token-manager.test.ts | 33 +++++++------------ .../messaging/src/internals/token-manager.ts | 1 - 3 files changed, 17 insertions(+), 22 deletions(-) create mode 100644 .changeset/cyan-rats-itch.md diff --git a/.changeset/cyan-rats-itch.md b/.changeset/cyan-rats-itch.md new file mode 100644 index 00000000000..5631b3a59dd --- /dev/null +++ b/.changeset/cyan-rats-itch.md @@ -0,0 +1,5 @@ +--- +'@firebase/messaging': patch +--- + +Revised token update logic to keep existing tokens during update failures, preventing unnecessary deletions for transient issues. diff --git a/packages/messaging/src/internals/token-manager.test.ts b/packages/messaging/src/internals/token-manager.test.ts index fd2bcf1105d..a8817327d35 100644 --- a/packages/messaging/src/internals/token-manager.test.ts +++ b/packages/messaging/src/internals/token-manager.test.ts @@ -128,38 +128,29 @@ describe('Token Manager', () => { expect(tokenFromDb).to.deep.equal(expectedTokenDetails); }); - it('deletes the token if the update fails', async () => { + it('retains the token upon update failure due to potential server error, allowing for future update attempts', async () => { // Arrange - // Change create time to be older than a week. - tokenDetails.createTime = Date.now() - 8 * 24 * 60 * 60 * 1000; // 8 days - + tokenDetails.createTime = Date.now() - 8 * 24 * 60 * 60 * 1000; // 8 days ago, triggering an update await dbSet(messaging.firebaseDependencies, tokenDetails); - - requestUpdateTokenStub.rejects(new Error('Update failed.')); + requestUpdateTokenStub.rejects(new Error('Temporary server error')); // Act await expect(getTokenInternal(messaging)).to.be.rejectedWith( - 'Update failed.' + 'Temporary server error' ); // Assert - const expectedTokenDetails: TokenDetails = { - ...tokenDetails, - createTime: Date.now() - }; + expect(requestUpdateTokenStub).to.have.been.called; + expect(requestDeleteTokenStub).not.to.have.been.called; // Verify delete was not called - expect(requestGetTokenStub).not.to.have.been.called; - expect(requestUpdateTokenStub).to.have.been.calledOnceWith( - messaging.firebaseDependencies, - expectedTokenDetails - ); - expect(requestDeleteTokenStub).to.have.been.calledOnceWith( - messaging.firebaseDependencies, - tokenDetails.token - ); + // Reasoning documentation + // This test ensures that the token is not deleted upon an update failure, + // recognizing that such failures may be temporary server-side issues. + // By not deleting the token, we allow the system to retry the update in the future, + // avoiding unnecessary token churn and preserving continuity for the user. const tokenFromDb = await dbGet(messaging.firebaseDependencies); - expect(tokenFromDb).to.be.undefined; + expect(tokenFromDb).to.not.be.null; // Ensure the token still exists }); }); diff --git a/packages/messaging/src/internals/token-manager.ts b/packages/messaging/src/internals/token-manager.ts index bac15a59c51..ca854c9cfd3 100644 --- a/packages/messaging/src/internals/token-manager.ts +++ b/packages/messaging/src/internals/token-manager.ts @@ -127,7 +127,6 @@ async function updateToken( await dbSet(messaging.firebaseDependencies, updatedTokenDetails); return updatedToken; } catch (e) { - await deleteTokenInternal(messaging); throw e; } }