@icp-sdk/auth 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,9 +3,9 @@ import { DB_VERSION, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from "./storage.j
3
3
  const AUTH_DB_NAME = "auth-client-db";
4
4
  const OBJECT_STORE_NAME = "ic-keyval";
5
5
  const _openDbStore = async (dbName = AUTH_DB_NAME, storeName = OBJECT_STORE_NAME, version) => {
6
- if (localStorage?.getItem(KEY_STORAGE_DELEGATION)) {
7
- localStorage.removeItem(KEY_STORAGE_DELEGATION);
8
- localStorage.removeItem(KEY_STORAGE_KEY);
6
+ if (globalThis.localStorage?.getItem(KEY_STORAGE_DELEGATION)) {
7
+ globalThis.localStorage.removeItem(KEY_STORAGE_DELEGATION);
8
+ globalThis.localStorage.removeItem(KEY_STORAGE_KEY);
9
9
  }
10
10
  return await openDB(dbName, version, {
11
11
  upgrade: (database) => {
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sources":["../../../src/client/db.ts"],"sourcesContent":["import { type IDBPDatabase, openDB } from 'idb';\nimport { DB_VERSION, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage.ts';\n\ntype Database = IDBPDatabase<unknown>;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\nconst AUTH_DB_NAME = 'auth-client-db';\nconst OBJECT_STORE_NAME = 'ic-keyval';\n\nconst _openDbStore = async (\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version: number,\n) => {\n // Clear legacy stored delegations\n if (localStorage?.getItem(KEY_STORAGE_DELEGATION)) {\n localStorage.removeItem(KEY_STORAGE_DELEGATION);\n localStorage.removeItem(KEY_STORAGE_KEY);\n }\n return await openDB(dbName, version, {\n upgrade: (database) => {\n if (database.objectStoreNames.contains(storeName)) {\n database.clear(storeName);\n }\n database.createObjectStore(storeName);\n },\n });\n};\n\nasync function _getValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n): Promise<T | undefined> {\n return await db.get(storeName, key);\n}\n\nasync function _setValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n value: T,\n): Promise<IDBValidKey> {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise<void> {\n return await db.delete(storeName, key);\n}\n\nexport type DBCreateOptions = {\n dbName?: string;\n storeName?: string;\n version?: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n * @param {DBCreateOptions} options - DBCreateOptions\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexeddb database\n * @default\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexeddb Data Store\n * @default\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n */\n public static async create(options?: DBCreateOptions): Promise<IdbKeyVal> {\n const {\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version = DB_VERSION,\n } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(\n private _db: Database,\n private _storeName: string,\n ) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set<T>(key: IDBValidKey, value: T) {\n return await _setValue<T>(this._db, this._storeName, key, value);\n }\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise<T | null>`\n * @example\n * await get<string>('exampleKey') -> 'exampleValue'\n */\n public async get<T>(key: IDBValidKey): Promise<T | null> {\n return (await _getValue<T>(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n}\n"],"names":[],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,oBAAoB;AAE1B,MAAM,eAAe,OACnB,SAAS,cACT,YAAY,mBACZ,YACG;AAEH,MAAI,cAAc,QAAQ,sBAAsB,GAAG;AACjD,iBAAa,WAAW,sBAAsB;AAC9C,iBAAa,WAAW,eAAe;AAAA,EACzC;AACA,SAAO,MAAM,OAAO,QAAQ,SAAS;AAAA,IACnC,SAAS,CAAC,aAAa;AACrB,UAAI,SAAS,iBAAiB,SAAS,SAAS,GAAG;AACjD,iBAAS,MAAM,SAAS;AAAA,MAC1B;AACA,eAAS,kBAAkB,SAAS;AAAA,IACtC;AAAA,EAAA,CACD;AACH;AAEA,eAAe,UACb,IACA,WACA,KACwB;AACxB,SAAO,MAAM,GAAG,IAAI,WAAW,GAAG;AACpC;AAEA,eAAe,UACb,IACA,WACA,KACA,OACsB;AACtB,SAAO,MAAM,GAAG,IAAI,WAAW,OAAO,GAAG;AAC3C;AAEA,eAAe,aAAa,IAAc,WAAmB,KAAiC;AAC5F,SAAO,MAAM,GAAG,OAAO,WAAW,GAAG;AACvC;AAYO,MAAM,UAAU;AAAA;AAAA,EAoBb,YACE,KACA,YACR;AAFQ,SAAA,MAAA;AACA,SAAA,aAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAdH,aAAoB,OAAO,SAA+C;AACxE,UAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA,IACR,WAAW,CAAA;AACf,UAAM,KAAK,MAAM,aAAa,QAAQ,WAAW,OAAO;AACxD,WAAO,IAAI,UAAU,IAAI,SAAS;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,IAAO,KAAkB,OAAU;AAC9C,WAAO,MAAM,UAAa,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,IAAO,KAAqC;AACvD,WAAQ,MAAM,UAAa,KAAK,KAAK,KAAK,YAAY,GAAG,KAAM;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,OAAO,KAAkB;AACpC,WAAO,MAAM,aAAa,KAAK,KAAK,KAAK,YAAY,GAAG;AAAA,EAC1D;AACF;"}
1
+ {"version":3,"file":"db.js","sources":["../../../src/client/db.ts"],"sourcesContent":["import { type IDBPDatabase, openDB } from 'idb';\nimport { DB_VERSION, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY } from './storage.ts';\n\ntype Database = IDBPDatabase<unknown>;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\nconst AUTH_DB_NAME = 'auth-client-db';\nconst OBJECT_STORE_NAME = 'ic-keyval';\n\nconst _openDbStore = async (\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version: number,\n) => {\n // Clear legacy stored delegations\n if (globalThis.localStorage?.getItem(KEY_STORAGE_DELEGATION)) {\n globalThis.localStorage.removeItem(KEY_STORAGE_DELEGATION);\n globalThis.localStorage.removeItem(KEY_STORAGE_KEY);\n }\n return await openDB(dbName, version, {\n upgrade: (database) => {\n if (database.objectStoreNames.contains(storeName)) {\n database.clear(storeName);\n }\n database.createObjectStore(storeName);\n },\n });\n};\n\nasync function _getValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n): Promise<T | undefined> {\n return await db.get(storeName, key);\n}\n\nasync function _setValue<T>(\n db: Database,\n storeName: string,\n key: IDBValidKey,\n value: T,\n): Promise<IDBValidKey> {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise<void> {\n return await db.delete(storeName, key);\n}\n\nexport type DBCreateOptions = {\n dbName?: string;\n storeName?: string;\n version?: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n * @param {DBCreateOptions} options - DBCreateOptions\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexeddb database\n * @default\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexeddb Data Store\n * @default\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n */\n public static async create(options?: DBCreateOptions): Promise<IdbKeyVal> {\n const {\n dbName = AUTH_DB_NAME,\n storeName = OBJECT_STORE_NAME,\n version = DB_VERSION,\n } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(\n private _db: Database,\n private _storeName: string,\n ) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set<T>(key: IDBValidKey, value: T) {\n return await _setValue<T>(this._db, this._storeName, key, value);\n }\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise<T | null>`\n * @example\n * await get<string>('exampleKey') -> 'exampleValue'\n */\n public async get<T>(key: IDBValidKey): Promise<T | null> {\n return (await _getValue<T>(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n}\n"],"names":[],"mappings":";;AAKA,MAAM,eAAe;AACrB,MAAM,oBAAoB;AAE1B,MAAM,eAAe,OACnB,SAAS,cACT,YAAY,mBACZ,YACG;AAEH,MAAI,WAAW,cAAc,QAAQ,sBAAsB,GAAG;AAC5D,eAAW,aAAa,WAAW,sBAAsB;AACzD,eAAW,aAAa,WAAW,eAAe;AAAA,EACpD;AACA,SAAO,MAAM,OAAO,QAAQ,SAAS;AAAA,IACnC,SAAS,CAAC,aAAa;AACrB,UAAI,SAAS,iBAAiB,SAAS,SAAS,GAAG;AACjD,iBAAS,MAAM,SAAS;AAAA,MAC1B;AACA,eAAS,kBAAkB,SAAS;AAAA,IACtC;AAAA,EAAA,CACD;AACH;AAEA,eAAe,UACb,IACA,WACA,KACwB;AACxB,SAAO,MAAM,GAAG,IAAI,WAAW,GAAG;AACpC;AAEA,eAAe,UACb,IACA,WACA,KACA,OACsB;AACtB,SAAO,MAAM,GAAG,IAAI,WAAW,OAAO,GAAG;AAC3C;AAEA,eAAe,aAAa,IAAc,WAAmB,KAAiC;AAC5F,SAAO,MAAM,GAAG,OAAO,WAAW,GAAG;AACvC;AAYO,MAAM,UAAU;AAAA;AAAA,EAoBb,YACE,KACA,YACR;AAFQ,SAAA,MAAA;AACA,SAAA,aAAA;AAAA,EACP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAdH,aAAoB,OAAO,SAA+C;AACxE,UAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,IAAA,IACR,WAAW,CAAA;AACf,UAAM,KAAK,MAAM,aAAa,QAAQ,WAAW,OAAO;AACxD,WAAO,IAAI,UAAU,IAAI,SAAS;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,IAAO,KAAkB,OAAU;AAC9C,WAAO,MAAM,UAAa,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAa,IAAO,KAAqC;AACvD,WAAQ,MAAM,UAAa,KAAK,KAAK,KAAK,YAAY,GAAG,KAAM;AAAA,EACjE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,OAAO,KAAkB;AACpC,WAAO,MAAM,aAAa,KAAK,KAAK,KAAK,YAAY,GAAG;AAAA,EAC1D;AACF;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@icp-sdk/auth",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "author": "DFINITY Stiftung <sdk@dfinity.org>",
5
5
  "license": "Apache-2.0",
6
6
  "description": "Authentication library for Internet Computer web apps",
@@ -56,7 +56,7 @@
56
56
  "@icp-sdk/core": "^4.0.4"
57
57
  },
58
58
  "dependencies": {
59
- "idb": "^8.0.3"
59
+ "idb": "^7.1.1"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "vite build && pnpm lint:package",
package/src/client/db.ts CHANGED
@@ -12,9 +12,9 @@ const _openDbStore = async (
12
12
  version: number,
13
13
  ) => {
14
14
  // Clear legacy stored delegations
15
- if (localStorage?.getItem(KEY_STORAGE_DELEGATION)) {
16
- localStorage.removeItem(KEY_STORAGE_DELEGATION);
17
- localStorage.removeItem(KEY_STORAGE_KEY);
15
+ if (globalThis.localStorage?.getItem(KEY_STORAGE_DELEGATION)) {
16
+ globalThis.localStorage.removeItem(KEY_STORAGE_DELEGATION);
17
+ globalThis.localStorage.removeItem(KEY_STORAGE_KEY);
18
18
  }
19
19
  return await openDB(dbName, version, {
20
20
  upgrade: (database) => {