UNPKG

@okta/okta-auth-js

Version:
78 lines (74 loc) 3.45 kB
/*! * Copyright (c) 2015-present, Okta, Inc. and/or its affiliates. All rights reserved. * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the "License.") * * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. * 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 { warn } from '../util/console.js'; import { isBrowser } from '../features.js'; import { IDX_RESPONSE_STORAGE_NAME } from '../constants.js'; import 'tiny-emitter'; import '../server/serverStorage.js'; import { SavedObject } from '../storage/SavedObject.js'; import { createCoreStorageManager } from '../core/storage.js'; import AuthSdkError from '../errors/AuthSdkError.js'; function createIdxStorageManager() { const CoreStorageManager = createCoreStorageManager(); return class IdxStorageManager extends CoreStorageManager { constructor(storageManagerOptions, cookieOptions, storageUtil) { super(storageManagerOptions, cookieOptions, storageUtil); } getIdxResponseStorage(options) { let storage; if (isBrowser()) { try { storage = this.storageUtil.getStorageByType('memory', options); } catch (e) { warn('No response storage found, you may want to provide custom implementation for intermediate idx responses to optimize the network traffic'); } } else { const transactionStorage = this.getTransactionStorage(options); if (transactionStorage) { storage = { getItem: (key) => { const transaction = transactionStorage.getStorage(); if (transaction && transaction[key]) { return transaction[key]; } return null; }, setItem: (key, val) => { const transaction = transactionStorage.getStorage(); if (!transaction) { throw new AuthSdkError('Transaction has been cleared, failed to save idxState'); } transaction[key] = val; transactionStorage.setStorage(transaction); }, removeItem: (key) => { const transaction = transactionStorage.getStorage(); if (!transaction) { return; } delete transaction[key]; transactionStorage.setStorage(transaction); } }; } } if (!storage) { return null; } return new SavedObject(storage, IDX_RESPONSE_STORAGE_NAME); } }; } export { createIdxStorageManager }; //# sourceMappingURL=storage.js.map