Skip to content

Commit 84892b7

Browse files
committed
updated idb from 3 to 6.1.5
1 parent acc5810 commit 84892b7

File tree

5 files changed

+96
-92
lines changed

5 files changed

+96
-92
lines changed

packages/messaging/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"./sw": "./dist/index.sw.esm2017.js",
1919
"./package.json": "./package.json"
2020
},
21-
"typings": "dist/src/index.d.ts",
21+
"typings": "./dist/index-public.d.ts",
2222
"files": [
2323
"dist",
2424
"sw/package.json"
@@ -47,18 +47,18 @@
4747
"@firebase/app": "0.x"
4848
},
4949
"dependencies": {
50+
"@firebase/component": "0.5.9",
5051
"@firebase/installations": "0.5.4",
5152
"@firebase/messaging-interop-types": "0.1.0",
5253
"@firebase/util": "1.4.2",
53-
"@firebase/component": "0.5.9",
54-
"idb": "3.0.2",
54+
"idb": "6.1.5",
5555
"tslib": "^2.1.0"
5656
},
5757
"devDependencies": {
5858
"@firebase/app": "0.7.8",
59+
"@rollup/plugin-json": "4.1.0",
5960
"rollup": "2.57.0",
6061
"rollup-plugin-typescript2": "0.30.0",
61-
"@rollup/plugin-json": "4.1.0",
6262
"ts-essentials": "8.1.0",
6363
"typescript": "4.2.2"
6464
},

packages/messaging/src/helpers/migrate-old-database.ts

Lines changed: 68 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { deleteDb, openDb } from 'idb';
18+
import { deleteDB, openDB } from 'idb';
1919

2020
import { TokenDetails } from '../interfaces/token-details';
2121
import { arrayToBase64 } from './array-base64-translator';
@@ -87,84 +87,85 @@ export async function migrateOldDatabase(
8787
}
8888

8989
let tokenDetails: TokenDetails | null = null;
90+
const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, {
91+
upgrade: async (db, oldVersion, _, transaction) => {
92+
if (oldVersion < 2) {
93+
// Database too old, skip migration.
94+
return;
95+
}
9096

91-
const db = await openDb(OLD_DB_NAME, OLD_DB_VERSION, async db => {
92-
if (db.oldVersion < 2) {
93-
// Database too old, skip migration.
94-
return;
95-
}
96-
97-
if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {
98-
// Database did not exist. Nothing to do.
99-
return;
100-
}
101-
102-
const objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);
103-
const value = await objectStore.index('fcmSenderId').get(senderId);
104-
await objectStore.clear();
105-
106-
if (!value) {
107-
// No entry in the database, nothing to migrate.
108-
return;
109-
}
97+
if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {
98+
// Database did not exist. Nothing to do.
99+
return;
100+
}
110101

111-
if (db.oldVersion === 2) {
112-
const oldDetails = value as V2TokenDetails;
102+
const objectStore = transaction.objectStore(OLD_OBJECT_STORE_NAME);
103+
const value = await objectStore.index('fcmSenderId').get(senderId);
104+
await objectStore.clear();
113105

114-
if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {
106+
if (!value) {
107+
// No entry in the database, nothing to migrate.
115108
return;
116109
}
117110

118-
tokenDetails = {
119-
token: oldDetails.fcmToken,
120-
createTime: oldDetails.createTime ?? Date.now(),
121-
subscriptionOptions: {
122-
auth: oldDetails.auth,
123-
p256dh: oldDetails.p256dh,
124-
endpoint: oldDetails.endpoint,
125-
swScope: oldDetails.swScope,
126-
vapidKey:
127-
typeof oldDetails.vapidKey === 'string'
128-
? oldDetails.vapidKey
129-
: arrayToBase64(oldDetails.vapidKey)
130-
}
131-
};
132-
} else if (db.oldVersion === 3) {
133-
const oldDetails = value as V3TokenDetails;
134-
135-
tokenDetails = {
136-
token: oldDetails.fcmToken,
137-
createTime: oldDetails.createTime,
138-
subscriptionOptions: {
139-
auth: arrayToBase64(oldDetails.auth),
140-
p256dh: arrayToBase64(oldDetails.p256dh),
141-
endpoint: oldDetails.endpoint,
142-
swScope: oldDetails.swScope,
143-
vapidKey: arrayToBase64(oldDetails.vapidKey)
144-
}
145-
};
146-
} else if (db.oldVersion === 4) {
147-
const oldDetails = value as V4TokenDetails;
148-
149-
tokenDetails = {
150-
token: oldDetails.fcmToken,
151-
createTime: oldDetails.createTime,
152-
subscriptionOptions: {
153-
auth: arrayToBase64(oldDetails.auth),
154-
p256dh: arrayToBase64(oldDetails.p256dh),
155-
endpoint: oldDetails.endpoint,
156-
swScope: oldDetails.swScope,
157-
vapidKey: arrayToBase64(oldDetails.vapidKey)
111+
if (oldVersion === 2) {
112+
const oldDetails = value as V2TokenDetails;
113+
114+
if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {
115+
return;
158116
}
159-
};
117+
118+
tokenDetails = {
119+
token: oldDetails.fcmToken,
120+
createTime: oldDetails.createTime ?? Date.now(),
121+
subscriptionOptions: {
122+
auth: oldDetails.auth,
123+
p256dh: oldDetails.p256dh,
124+
endpoint: oldDetails.endpoint,
125+
swScope: oldDetails.swScope,
126+
vapidKey:
127+
typeof oldDetails.vapidKey === 'string'
128+
? oldDetails.vapidKey
129+
: arrayToBase64(oldDetails.vapidKey)
130+
}
131+
};
132+
} else if (oldVersion === 3) {
133+
const oldDetails = value as V3TokenDetails;
134+
135+
tokenDetails = {
136+
token: oldDetails.fcmToken,
137+
createTime: oldDetails.createTime,
138+
subscriptionOptions: {
139+
auth: arrayToBase64(oldDetails.auth),
140+
p256dh: arrayToBase64(oldDetails.p256dh),
141+
endpoint: oldDetails.endpoint,
142+
swScope: oldDetails.swScope,
143+
vapidKey: arrayToBase64(oldDetails.vapidKey)
144+
}
145+
};
146+
} else if (oldVersion === 4) {
147+
const oldDetails = value as V4TokenDetails;
148+
149+
tokenDetails = {
150+
token: oldDetails.fcmToken,
151+
createTime: oldDetails.createTime,
152+
subscriptionOptions: {
153+
auth: arrayToBase64(oldDetails.auth),
154+
p256dh: arrayToBase64(oldDetails.p256dh),
155+
endpoint: oldDetails.endpoint,
156+
swScope: oldDetails.swScope,
157+
vapidKey: arrayToBase64(oldDetails.vapidKey)
158+
}
159+
};
160+
}
160161
}
161162
});
162163
db.close();
163164

164165
// Delete all old databases.
165-
await deleteDb(OLD_DB_NAME);
166-
await deleteDb('fcm_vapid_details_db');
167-
await deleteDb('undefined');
166+
await deleteDB(OLD_DB_NAME);
167+
await deleteDB('fcm_vapid_details_db');
168+
await deleteDB('undefined');
168169

169170
return checkTokenDetails(tokenDetails) ? tokenDetails : null;
170171
}

packages/messaging/src/internals/idb-manager.ts

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* limitations under the License.
1616
*/
1717

18-
import { DB, deleteDb, openDb } from 'idb';
18+
import { IDBPDatabase, deleteDB, openDB } from 'idb';
1919

2020
import { FirebaseInternalDependencies } from '../interfaces/internal-dependencies';
2121
import { TokenDetails } from '../interfaces/token-details';
@@ -26,17 +26,19 @@ export const DATABASE_NAME = 'firebase-messaging-database';
2626
const DATABASE_VERSION = 1;
2727
const OBJECT_STORE_NAME = 'firebase-messaging-store';
2828

29-
let dbPromise: Promise<DB> | null = null;
30-
function getDbPromise(): Promise<DB> {
29+
let dbPromise: Promise<IDBPDatabase> | null = null;
30+
function getDbPromise(): Promise<IDBPDatabase> {
3131
if (!dbPromise) {
32-
dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, upgradeDb => {
33-
// We don't use 'break' in this switch statement, the fall-through behavior is what we want,
34-
// because if there are multiple versions between the old version and the current version, we
35-
// want ALL the migrations that correspond to those versions to run, not only the last one.
36-
// eslint-disable-next-line default-case
37-
switch (upgradeDb.oldVersion) {
38-
case 0:
39-
upgradeDb.createObjectStore(OBJECT_STORE_NAME);
32+
dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {
33+
upgrade: (upgradeDb, oldVersion) => {
34+
// We don't use 'break' in this switch statement, the fall-through behavior is what we want,
35+
// because if there are multiple versions between the old version and the current version, we
36+
// want ALL the migrations that correspond to those versions to run, not only the last one.
37+
// eslint-disable-next-line default-case
38+
switch (oldVersion) {
39+
case 0:
40+
upgradeDb.createObjectStore(OBJECT_STORE_NAME);
41+
}
4042
}
4143
});
4244
}
@@ -77,7 +79,7 @@ export async function dbSet(
7779
const db = await getDbPromise();
7880
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
7981
await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);
80-
await tx.complete;
82+
await tx.done;
8183
return tokenDetails;
8284
}
8385

@@ -89,14 +91,14 @@ export async function dbRemove(
8991
const db = await getDbPromise();
9092
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
9193
await tx.objectStore(OBJECT_STORE_NAME).delete(key);
92-
await tx.complete;
94+
await tx.done;
9395
}
9496

9597
/** Deletes the DB. Useful for tests. */
9698
export async function dbDelete(): Promise<void> {
9799
if (dbPromise) {
98100
(await dbPromise).close();
99-
await deleteDb(DATABASE_NAME);
101+
await deleteDB(DATABASE_NAME);
100102
dbPromise = null;
101103
}
102104
}

scripts/tsconfig.json

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,14 @@
11
{
22
"compilerOptions": {
33
"strict": true,
4-
"lib": [
5-
"ESNext"
6-
],
4+
"lib": ["ESNext"],
75
"module": "CommonJS",
86
"moduleResolution": "node",
97
"esModuleInterop": true,
108
"resolveJsonModule": true,
119
"target": "es5",
12-
"typeRoots": [
13-
"../node_modules/@types"
14-
],
10+
"typeRoots": ["../node_modules/@types"],
1511
"allowJs": true,
1612
"downlevelIteration": true
1713
}
18-
}
14+
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8659,6 +8659,11 @@ [email protected]:
86598659
resolved "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz#c8e9122d5ddd40f13b60ae665e4862f8b13fa384"
86608660
integrity sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw==
86618661

8662+
8663+
version "6.1.5"
8664+
resolved "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz#dbc53e7adf1ac7c59f9b2bf56e00b4ea4fce8c7b"
8665+
integrity sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==
8666+
86628667
ieee754@^1.1.13, ieee754@^1.1.4:
86638668
version "1.2.1"
86648669
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"

0 commit comments

Comments
 (0)