@techextensor/tab-core-utility 2.2.159 → 2.2.162
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.
- package/esm2022/index.mjs +2 -1
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +9 -9
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +4 -4
- package/esm2022/lib/tab-core-utility/auth/idb-storage.service.mjs +23 -8
- package/esm2022/lib/tab-core-utility/auth/local-storage.service.mjs +57 -19
- package/esm2022/lib/tab-core-utility/auth/session-storage.service.mjs +57 -19
- package/esm2022/lib/tab-core-utility/core/service/encryption.service.mjs +89 -0
- package/index.d.ts +1 -0
- package/lib/tab-core-utility/app/constants/common.d.ts +2 -1
- package/lib/tab-core-utility/auth/idb-storage.service.d.ts +3 -1
- package/lib/tab-core-utility/auth/local-storage.service.d.ts +17 -0
- package/lib/tab-core-utility/auth/session-storage.service.d.ts +17 -0
- package/lib/tab-core-utility/core/service/encryption.service.d.ts +52 -0
- package/package.json +4 -2
- package/esm2022/lib/tab-core-utility/app/utils/get-api-url.function.mjs +0 -7
- package/esm2022/lib/tab-core-utility/core/http-client/injector.service.mjs +0 -20
- package/lib/tab-core-utility/app/utils/get-api-url.function.d.ts +0 -1
- package/lib/tab-core-utility/core/http-client/injector.service.d.ts +0 -10
package/esm2022/index.mjs
CHANGED
|
@@ -74,9 +74,10 @@ export * from './lib/tab-core-utility/core/http-client/api.service';
|
|
|
74
74
|
export * from './lib/tab-core-utility/core/service/translation.service';
|
|
75
75
|
export * from './lib/tab-core-utility/core/service/notification.service';
|
|
76
76
|
export * from './lib/tab-core-utility/core/service/confirmation.service';
|
|
77
|
+
export * from './lib/tab-core-utility/core/service/encryption.service';
|
|
77
78
|
// Pipe
|
|
78
79
|
export * from './lib/tab-core-utility/core/pipe/translate.pipe';
|
|
79
80
|
// Provider
|
|
80
81
|
export * from './lib/tab-core-utility/core/provider/translation.provider';
|
|
81
82
|
export * from './lib/tab-core-utility/core/provider/notification.provider';
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0I7QUFDbEIsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxhQUFhO0FBQ2IsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLG9EQUFvRCxDQUFDO0FBQ25FLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscURBQXFELENBQUM7QUFFcEUsYUFBYTtBQUNiLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLGdEQUFnRCxDQUFDO0FBRS9ELGdCQUFnQjtBQUNoQixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsdUVBQXVFLENBQUM7QUFDdEYsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLDJEQUEyRCxDQUFDO0FBQzFFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDZEQUE2RCxDQUFDO0FBRTVFLGNBQWMseURBQXlELENBQUM7QUFDeEUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsZ0VBQWdFLENBQUM7QUFDL0UsY0FBYywwREFBMEQsQ0FBQztBQUN6RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLHNGQUFzRjtBQUV0RixtQkFBbUI7QUFDbkIsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFFckUsZUFBZTtBQUNmLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNkRBQTZELENBQUM7QUFFNUUsY0FBYztBQUNkLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLCtDQUErQyxDQUFDO0FBRTlELE9BQU87QUFDUCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLGlEQUFpRCxDQUFDO0FBRWhFLE9BQU87QUFDUCwrRkFBK0Y7QUFDL0YsaUZBQWlGO0FBQ2pGLHdGQUF3RjtBQUV4RixjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMscURBQXFELENBQUM7QUFFcEUsK0RBQStEO0FBRy9ELFFBQVE7QUFFUiw2REFBNkQ7QUFDN0QsNERBQTREO0FBQzVELDBEQUEwRDtBQUUxRCxVQUFVO0FBQ1YsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyx3REFBd0QsQ0FBQztBQUV2RSxPQUFPO0FBQ1AsY0FBYyxpREFBaUQsQ0FBQztBQUVoRSxXQUFXO0FBQ1gsY0FBYywyREFBMkQsQ0FBQztBQUMxRSxjQUFjLDREQUE0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQXBwIC8gY29uc3RhbnRzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvY29tbW9uJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NvbnN0YW50cy9lcnJvci1tZXNzYWdlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xuXG4vLyBBcHAgLyBjcnVkXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1jcnVkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZ2V0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZm9ybWlvLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItaW5zZXJ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItZGVsZXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItdXBkYXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItd29ya2Zsb3cuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1ibHVlcHJpbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9jcnVkL3RhYi1yZWxlYXNlLnNlcnZpY2UnO1xuXG4vLyBBcHAgLyBlbnVtXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9jb21tb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9jb250cm9sbGVycy5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL2RzcS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL3Blcm1pc3Npb24uZW51bSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9xdWVyeS5lbnVtJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2VudW1zL3dvcmtmbG93LmVudW0nO1xuXG4vLyBBcHAgLyBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi9hcHAuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL2NvbW1vbi91c2VyLXBlcnNvbmFsaXphdGlvbi5oZWxwZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vcmVxLXJlcy5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3doZXJlLWNsYXVzZS5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvY29tbW9uL3RlbXBsYXRlLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vbWV0YS1kYXRhLmhlbHBlcnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3NjcmVlbi9mb3Jtcy5oZWxwZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2hlbHBlcnMvc2NyZWVuL2dyaWQtY29sdW1uLWRhdGEuaGVscGVycyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9oZWxwZXJzL3NjcmVlbi9ncmlkLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vbWVkaWEtdXBsb2FkLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vcGx1Z2luLmhlbHBlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnMnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9zY3JlZW4vZnRwLW1lZGlhLXVwbG9hZC5oZWxwZXJzJztcblxuLy8gQXBwIC8gaW50ZXJmYWNlc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy9hdXRoLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaW50ZXJmYWNlcy91c2VyLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL29yZ0luZm8uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2ludGVyZmFjZXMvc2NoZW1hLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL2dyaWQuaW50ZXJmYWNlJztcblxuLy8gQXBwIC8gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9tb2RlbHMvYXBpLXF1ZXJ5LmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL21vZGVscy9jb21tb24uY2xhc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvbW9kZWxzL2RhdGEtc291cmNlLXF1ZXJpZXMuY2xhc3MnO1xuXG4vLyBBcHAgLyB1dGlsc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvZmlsdGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvZm9ybS1idWlsZGVyLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvanNvbi51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL29wZXJhdG9ycy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC91dGlscy90YWItYXBwLnV0aWwnO1xuXG4vLyBBdXRoXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9pZGItc3RvcmFnZS5zZXJ2aWNlJztcblxuLy8gQ29yZVxuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvZXJyb3ItaGFuZGxlci1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvY29yZS9lcnJvci1oYW5kbGVyL2Vycm9yLWhhbmRsZXIuc3RvcmUnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL2Vycm9yLWhhbmRsZXIvbW9kZWxzL2Vycm9yLWhhbmRsZXIuc3RhdGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLXVybC50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xuXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvdXRpbC9hdXRoLnV0aWxzJztcblxuXG4vLyBzdG9yZVxuXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L3N0b3JlL29yZ2luZm8uc3RvcmUnXG4vLyBleHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L3N0b3JlL3NjaGVtYS5zdG9yZSdcbi8vIGV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1jb3JlLXV0aWxpdHkvc3RvcmUvYXV0aC5zdG9yZSdcblxuLy8gU2VydmljZVxuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL3NlcnZpY2UvdHJhbnNsYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9ub3RpZmljYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9jb25maXJtYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvc2VydmljZS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuXG4vLyBQaXBlXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvcGlwZS90cmFuc2xhdGUucGlwZSc7XG5cbi8vIFByb3ZpZGVyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvcHJvdmlkZXIvdHJhbnNsYXRpb24ucHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFiLWNvcmUtdXRpbGl0eS9jb3JlL3Byb3ZpZGVyL25vdGlmaWNhdGlvbi5wcm92aWRlcic7XG5cbiJdfQ==
|
|
@@ -43,14 +43,14 @@
|
|
|
43
43
|
export class Common {
|
|
44
44
|
static { this.i18n = {}; }
|
|
45
45
|
// Initialize the static variables
|
|
46
|
-
static init(
|
|
47
|
-
Common.
|
|
48
|
-
Common.
|
|
49
|
-
Common.
|
|
50
|
-
Common.
|
|
51
|
-
|
|
52
|
-
Common.tabAppObjectAccess =
|
|
53
|
-
Common.staticToken =
|
|
46
|
+
static init(environment) {
|
|
47
|
+
Common.environmentName = environment.name;
|
|
48
|
+
Common.applicationCode = environment.commonConfig.applicationCode;
|
|
49
|
+
Common.tabJson = environment.commonConfig.tabJson;
|
|
50
|
+
Common.tabUserPersonalizedData = environment.commonConfig.tabUserPersonalizedData;
|
|
51
|
+
Common.tabUserPermissions = environment.commonConfig.tabUserPermissions;
|
|
52
|
+
Common.tabAppObjectAccess = environment.commonConfig.tabAppObjectAccess;
|
|
53
|
+
Common.staticToken = environment.commonConfig.staticToken;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NvbnN0YW50cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELDBDQUEwQztBQUMxQywrREFBK0Q7QUFDL0QsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCwwREFBMEQ7QUFFMUQsa0RBQWtEO0FBRWxELCtEQUErRDtBQUMvRCw2REFBNkQ7QUFDN0QsdUNBQXVDO0FBR3ZDLDBCQUEwQjtBQUMxQixrR0FBa0c7QUFDbEcsZUFBZTtBQUNmLHFGQUFxRjtBQUNyRixXQUFXO0FBQ1gsaUNBQWlDO0FBRWpDLHlHQUF5RztBQUN6RyxnRkFBZ0Y7QUFDaEYsdUJBQXVCO0FBRXZCLHlDQUF5QztBQUN6QyxtQkFBbUI7QUFDbkIsbUNBQW1DO0FBQ25DLDhCQUE4QjtBQUM5QixtQkFBbUI7QUFDbkIsbURBQW1EO0FBQ25ELGl2QkFBaXZCO0FBQ2p2QixLQUFLO0FBR0wsTUFBTTtBQUNOLGtEQUFrRDtBQUNsRCxNQUFNO0FBQ04sNENBQTRDO0FBQzVDLFVBQVU7QUFDVix5RUFBeUU7QUFDekUsaUNBQWlDO0FBQ2pDLGtCQUFrQjtBQUNsQiwrQkFBK0I7QUFDL0IsUUFBUTtBQUNSLHNCQUFzQjtBQUN0QixvREFBb0Q7QUFDcEQsTUFBTTtBQUNOLElBQUk7QUFDSiw0QkFBNEI7QUFFNUIsTUFBTSxPQUFPLE1BQU07YUFRRCxTQUFJLEdBQVEsRUFBRSxDQUFDO0lBRTdCLGtDQUFrQztJQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQWdCO1FBQ2pDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUMxQyxNQUFNLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDO1FBQ2xFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDbEQsTUFBTSxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUM7UUFDbEYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFDeEUsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLENBQUM7UUFDeEUsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztJQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuLy8gaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IElkYlNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL2lkYi1zdG9yYWdlLnNlcnZpY2UnO1xyXG4vLyBpbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuLy8gaW1wb3J0IHsgQXBwbGljYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzcyc7XHJcbi8vIGltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuL3N0b3JhZ2UtY29uc3RhbnRzJztcclxuXHJcbi8vIGltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIGNvbnN0IHNlc3Npb25TdG9yYWdlU2VydmljZSA9IGluamVjdChTZXNzaW9uU3RvcmFnZVNlcnZpY2UpO1xyXG4vLyBjb25zdCBzZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBuZXcgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKCk7XHJcbi8vIGNvbnN0IGlkYlNlcnZpY2UgPSBuZXcgSWRiU2VydmljZSgpO1xyXG5cclxuXHJcbi8vIGV4cG9ydCBjb25zdCBDb21tb24gPSB7XHJcbi8vIC8vICAgYXBwbGljYXRpb25Db2RlOiBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpXHJcbi8vIC8vID8gU3RyaW5nKFxyXG4vLyAvLyAgICAgICBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpXHJcbi8vIC8vICAgICApXHJcbi8vIC8vICAgICA6IFN0b3JhZ2VDb25zdGFudHMuVEFCLFxyXG5cclxuLy8gICBhcHBsaWNhdGlvbkNvZGU6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLmFwcGxpY2F0aW9uQ29kZSkgPyBTdHJpbmcoXHJcbi8vICAgICBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpXHJcbi8vICAgKSA6ICdUQUJfUmV3cml0ZScsXHJcblxyXG4vLyAgIHN0YXRpY0FwcGxpY2F0aW9uQ29kZTonVEFCX1Jld3JpdGUnLFxyXG4vLyAgIHRhYkpzb246IG51bGwsXHJcbi8vICAgdGFiVXNlclBlcnNvbmFsaXplZERhdGE6IG51bGwsXHJcbi8vICAgdGFiVXNlclBlcm1pc3Npb25zOiBudWxsLFxyXG4vLyAgIGFwcEluZm86IG51bGwsXHJcbi8vICAgb3JnSWQ6ICcxQjYwMjIyOS01N0Y5LTRERjgtODYwQy01ODZBOTZFNUJDNjgnLFxyXG4vLyAgIHN0YXRpY1Rva2VuOiAnYmVhcmVyIGV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUp6ZFdJaU9pSm9ZWEprYVdzdWRHaGhhMnRoY2tCMFpXTm9aWGgwWlc1emIzSXVZMjl0SWl3aWFuUnBJam9pTURCbE16QTJaVGN0TWpFM1pTMDBNekkyTFRnMFpERXRObVpqWTJFMU5tWXdNV1kwSWl3aVpXMWhhV3dpT2lKb1lYSmthV3N1ZEdoaGEydGhja0IwWldOb1pYaDBaVzV6YjNJdVkyOXRJaXdpYVdRaU9pSXdZall3TURZNVpTMDJaVE00TFRRMFlUVXRPRE15WVMxbE1UQm1ZV1EzTVRVeVlqWWlMQ0pzYjJOaGJHVlRaWFIwYVc1bklqb2llMXdpVkdsdFpWcHZibVZKWkZ3aU9sd2lTVzVrYVdFZ1UzUmhibVJoY21RZ1ZHbHRaVndpTEZ3aVRHOWpZV3hsWENJNk1DeGNJa3hoYm1kMVlXZGxYQ0k2TUN4Y0lrUmhkR1ZHYjNKdFlYUmNJanBjSW1Sa0xVMU5MWGw1ZVhsY0lpeGNJbFJwYldWR2IzSnRZWFJjSWpwY0ltaG9PbTF0T25OeklIUjBYQ0lzWENKT2RXMWlaWEpHYjNKdFlYUmNJanB1ZFd4c0xGd2lRM1Z5Y21WdVkzbGNJanB1ZFd4c2ZTSXNJbkp2YkdVaU9pSkJaRzFwYm1semRISmhkRzl5SWl3aVVtOXNaVWxrY3lJNklqSmpZalF6TVdFMkxUVXhaV1V0TkRZelpTMDROREJqTFROaE1UaGpOV1psT1RFMU1DSXNJbTVpWmlJNk1UY3hOREF5TlRrd05Td2laWGh3SWpveE56UTFOVFl4T1RBMUxDSnBZWFFpT2pFM01UUXdNalU1TURWOS5Gcmd1SFkwcHgzd25pdGZnc29kVEpwZXhGcjVGenZieDVVU0RCRjY2bVFBJyxcclxuLy8gfTtcclxuXHJcblxyXG4vLyAvKipcclxuLy8gICogR2V0IHNjaGVtYSBEYXRhIEZyb20gSURkIGFuZCBhZGQgdG8gdGFiSnNvbi5cclxuLy8gICovXHJcbi8vIGFzeW5jIGZ1bmN0aW9uIGdldExvY2FsU3RvcmFnZVRhYkRhdGEoKSB7XHJcbi8vICAgdHJ5IHtcclxuLy8gICAgIGxldCBkYXRhOiBhbnkgPSBhd2FpdCBpZGJTZXJ2aWNlLmdldEl0ZW0oU3RvcmFnZUNvbnN0YW50cy50YWJEYXRhKVxyXG4vLyAgICAgY29uc29sZS5sb2coJ2RhdGEnLCBkYXRhKTtcclxuLy8gICAgIGlmIChkYXRhKSB7XHJcbi8vICAgICAgIENvbW1vbi50YWJKc29uID0gZGF0YTtcclxuLy8gICAgIH1cclxuLy8gICB9IGNhdGNoIChlcnJvcikge1xyXG4vLyAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTonLCBlcnJvcik7XHJcbi8vICAgfVxyXG4vLyB9XHJcbi8vIGdldExvY2FsU3RvcmFnZVRhYkRhdGEoKTtcclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tb24ge1xyXG4gICAgcHVibGljIHN0YXRpYyBlbnZpcm9ubWVudE5hbWU6IHN0cmluZztcclxuICAgIHB1YmxpYyBzdGF0aWMgYXBwbGljYXRpb25Db2RlOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgc3RhdGljIHRhYkpzb246IGFueTtcclxuICAgIHB1YmxpYyBzdGF0aWMgdGFiVXNlclBlcnNvbmFsaXplZERhdGE6IGFueTtcclxuICAgIHB1YmxpYyBzdGF0aWMgdGFiVXNlclBlcm1pc3Npb25zOiBhbnk7XHJcbiAgICBwdWJsaWMgc3RhdGljIHRhYkFwcE9iamVjdEFjY2VzczogYW55O1xyXG4gICAgcHVibGljIHN0YXRpYyBzdGF0aWNUb2tlbjogYW55O1xyXG4gICAgcHVibGljIHN0YXRpYyBpMThuOiBhbnkgPSB7fTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplIHRoZSBzdGF0aWMgdmFyaWFibGVzXHJcbiAgICBwdWJsaWMgc3RhdGljIGluaXQoZW52aXJvbm1lbnQ6IGFueSkge1xyXG4gICAgICBDb21tb24uZW52aXJvbm1lbnROYW1lID0gZW52aXJvbm1lbnQubmFtZTtcclxuICAgICAgQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSA9IGVudmlyb25tZW50LmNvbW1vbkNvbmZpZy5hcHBsaWNhdGlvbkNvZGU7XHJcbiAgICAgIENvbW1vbi50YWJKc29uID0gZW52aXJvbm1lbnQuY29tbW9uQ29uZmlnLnRhYkpzb247XHJcbiAgICAgIENvbW1vbi50YWJVc2VyUGVyc29uYWxpemVkRGF0YSA9IGVudmlyb25tZW50LmNvbW1vbkNvbmZpZy50YWJVc2VyUGVyc29uYWxpemVkRGF0YTtcclxuICAgICAgQ29tbW9uLnRhYlVzZXJQZXJtaXNzaW9ucyA9IGVudmlyb25tZW50LmNvbW1vbkNvbmZpZy50YWJVc2VyUGVybWlzc2lvbnM7XHJcbiAgICAgIENvbW1vbi50YWJBcHBPYmplY3RBY2Nlc3MgPSBlbnZpcm9ubWVudC5jb21tb25Db25maWcudGFiQXBwT2JqZWN0QWNjZXNzO1xyXG4gICAgICBDb21tb24uc3RhdGljVG9rZW4gPSBlbnZpcm9ubWVudC5jb21tb25Db25maWcuc3RhdGljVG9rZW47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -6,10 +6,10 @@ import { getAppObject, getDsqIdfromSelectedAppObjectDSQArray, } from './tab-app.
|
|
|
6
6
|
import { API } from '../constants/api-constants';
|
|
7
7
|
import { getFormBuilderType } from './form-builder.util';
|
|
8
8
|
import { StorageConstants } from '../constants/storage-constants';
|
|
9
|
-
// import { inject } from '@angular/core';
|
|
10
9
|
import { SessionStorageService } from '../../auth/session-storage.service';
|
|
11
|
-
|
|
12
|
-
const
|
|
10
|
+
import { EncryptionService } from '../../core/service/encryption.service';
|
|
11
|
+
const encryptionService = new EncryptionService();
|
|
12
|
+
const sessionStorageService = new SessionStorageService(encryptionService);
|
|
13
13
|
/**
|
|
14
14
|
* Delete a key from the response object
|
|
15
15
|
*
|
|
@@ -177,4 +177,4 @@ export function getFormDataHeaders() {
|
|
|
177
177
|
}
|
|
178
178
|
return null;
|
|
179
179
|
}
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUNMLFlBQVksRUFDWixxQ0FBcUMsR0FDdEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsMENBQTBDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzNFLCtEQUErRDtBQUMvRCxNQUFNLHFCQUFxQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztBQUUxRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsUUFBYSxFQUFFLEdBQVc7SUFDOUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFhLEVBQUUsS0FBYTtJQUMzRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YscUJBQXFCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7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QUMsaUJBQWlCLENBQ3JELGdCQUFnQixDQUFDLEtBQUssQ0FDdkIsQ0FBQztJQUNGLElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsYUFBYSxFQUFFLE9BQU87WUFDdEIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1NBQ3hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFwcE9iamVjdCB9IGZyb20gJy4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzJztcclxuaW1wb3J0IHtcclxuICBnZXRBcHBPYmplY3QsXHJcbiAgZ2V0RHNxSWRmcm9tU2VsZWN0ZWRBcHBPYmplY3REU1FBcnJheSxcclxufSBmcm9tICcuL3RhYi1hcHAudXRpbCc7XHJcbmltcG9ydCB7IEFwcEZpZWxkcyB9IGZyb20gJy4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzJztcclxuaW1wb3J0IHsgQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBnZXRGb3JtQnVpbGRlclR5cGUgfSBmcm9tICcuL2Zvcm0tYnVpbGRlci51dGlsJztcclxuaW1wb3J0IHsgU3RvcmFnZUNvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cy9zdG9yYWdlLWNvbnN0YW50cyc7XHJcbi8vIGltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0QXBpVXJsIH0gZnJvbSAnLi9nZXQtYXBpLXVybC5mdW5jdGlvbic7XHJcbmltcG9ydCB7IEFQSV9VUkwgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS11cmwudG9rZW4nO1xyXG4vLyBjb25zdCBzZXNzaW9uU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlKTtcclxuY29uc3Qgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNlc3Npb25TdG9yYWdlU2VydmljZSgpO1xyXG5cclxuLyoqXHJcbiAqIERlbGV0ZSBhIGtleSBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0ga2V5IC0gVGhlIGtleSB0byBiZSBkZWxldGVkXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSB1cGRhdGVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGRlbGV0ZUtleUZyb21SZXNwb25zZShyZXNwb25zZTogYW55LCBrZXk6IHN0cmluZykge1xyXG4gIGRlbGV0ZSByZXNwb25zZVtrZXldO1xyXG4gIHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFJlbW92ZSB0aGUgcHJpbWFyeSBrZXkgZnJvbSB0aGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3RcclxuICogQHBhcmFtIGZpZWxkIC0gVGhlIGZpZWxkIHRvIGJlIHJlbW92ZWQgYXMgcHJpbWFyeSBrZXlcclxuICogQHJldHVybnMgYW55IC0gVGhlIHVwZGF0ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJpbWFyeUtleShyZXNwb25zZTogYW55LCBmaWVsZDogc3RyaW5nKSB7XHJcbiAgaWYgKGZpZWxkKSB7XHJcbiAgICBkZWxldGVLZXlGcm9tUmVzcG9uc2UocmVzcG9uc2UsIGZpZWxkKTtcclxuICB9XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIG11bHRpcGxlIHByaW1hcnkga2V5cyBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGRzIC0gVGhlIGFycmF5IG9mIGZpZWxkcyB0byBiZSByZW1vdmVkIGFzIHByaW1hcnkga2V5c1xyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgdXBkYXRlZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVNdWx0aXBsZVByaW1hcnlLZXkocmVzcG9uc2U6IGFueSwgZmllbGRzOiBhbnkpIHtcclxuICBmaWVsZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICBkZWxldGUgcmVzcG9uc2VbZWxlbWVudC5GaWVsZE5hbWVdO1xyXG4gIH0pO1xyXG4gIHJldHVybiByZXNwb25zZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgSHR0cEhlYWRlcnMgZm9yIEFQSSByZXF1ZXN0c1xyXG4gKlxyXG4gKiBAcmV0dXJucyBIdHRwSGVhZGVycyB8IG51bGwgLSBUaGUgSHR0cEhlYWRlcnMgb2JqZWN0IG9yIG51bGxcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJzKGhlYWRlcnM/OiBhbnkpIHtcclxuICBpZihoZWFkZXJzKXtcclxuICAgIHJldHVybiBoZWFkZXJzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnRva2VuKTtcclxuICAgIC8vIGNvbnN0IHN0YXRpY1Rva2VuID0gc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuc3RhdGljVG9rZW4pO1xyXG4gICAgLy8gcGF0Y2ggdmVyc2lvblxyXG4gICAgY29uc3Qgc3RhdGljVG9rZW4gPSBDb21tb24uc3RhdGljVG9rZW47XHJcbiAgICBcclxuICAgIGlmICghdG9rZW4gJiYgc3RhdGljVG9rZW4pIHtcclxuICAgICAgICAvLyBUb2tlbiBpcyBlbXB0eSBidXQgc3RhdGljVG9rZW4gaXMgbm90XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IHN0YXRpY1Rva2VuLFxyXG4gICAgICAgICAgICBBcHBsaWNhdGlvbkNvZGU6IENvbW1vbi5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRva2VuKSB7XHJcbiAgICAgICAgLy8gVG9rZW4gaXMgbm90IGVtcHR5XHJcbiAgICAgICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IHRva2VuLFxyXG4gICAgICAgICAgICBBcHBsaWNhdGlvbkNvZGU6IENvbW1vbi5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlbiBib3RoIHRva2VucyBhcmUgZW1wdHlcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgcHJpbWFyeSBrZXkgZmllbGRzIGZyb20gdGhlIEFwcE9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gYXBwT2JqZWN0IC0gVGhlIEFwcE9iamVjdFxyXG4gKiBAcmV0dXJucyBBcHBGaWVsZHNbXSB8IG51bGwgLSBUaGUgYXJyYXkgb2YgcHJpbWFyeSBrZXkgZmllbGRzIG9yIG51bGxcclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJpbWFyeUtleUZpZWxkcyhhcHBPYmplY3Q6IEFwcE9iamVjdCkge1xyXG4gIGlmIChhcHBPYmplY3QuRmllbGRzLmxlbmd0aCkge1xyXG4gICAgcmV0dXJuIGFwcE9iamVjdC5GaWVsZHMuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQuSXNQcmltYXJ5S2V5KTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIGVkaXQgcmVjb3JkIElEIGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBmaWVsZE5hbWUgLSBUaGUgZmllbGQgbmFtZSBmb3IgdGhlIGVkaXQgcmVjb3JkIElEXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSBlZGl0IHJlY29yZCBJRFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEVkaXRSZWNvcmRJZChyZXNwb25zZTogYW55LCBmaWVsZE5hbWU6IGFueSkge1xyXG4gIGxldCByZWNvcmRJZCA9IG51bGw7XHJcbiAgaWYgKGZpZWxkTmFtZSkge1xyXG4gICAgcmVjb3JkSWQgPSByZXNwb25zZVtmaWVsZE5hbWVdIHx8IG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlY29yZElkID0gcmVzcG9uc2UuSWQgfHwgcmVzcG9uc2UuSUQgfHwgbnVsbDtcclxuICB9XHJcbiAgcmV0dXJuIHJlY29yZElkO1xyXG59XHJcblxyXG4vKipcclxuICogR2VuZXJhdGUgdGhlIGZpZWxkcyBzY2hlbWEgYmFzZWQgb24gdGhlIEFwcEZpZWxkc1xyXG4gKlxyXG4gKiBAcGFyYW0gZmllbGRzIC0gVGhlIEFwcEZpZWxkcyBvYmplY3RcclxuICogQHJldHVybnMgYW55IC0gVGhlIGdlbmVyYXRlZCBmaWVsZHMgc2NoZW1hXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGaWVsZHNTY2hlbWEodXJsOmFueSxmaWVsZHM6IEFwcEZpZWxkcykge1xyXG4gIGxldCBzY2hlbWEgPSB7fTtcclxuICAvLyBjb25zdCBhcGlVcmwgPSBnZXRBcGlVcmwoKTtcclxuICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KCdMb29rVXBEZXRhaWxzJykpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkQXBwT2JqZWN0OiBBcHBPYmplY3QgPSBnZXRBcHBPYmplY3QoXHJcbiAgICAgIGZpZWxkcy5Mb29rVXBEZXRhaWxzLkxvb2t1cE9iamVjdFxyXG4gICAgKTtcclxuICAgIGNvbnN0IGRzcUlEID0gZ2V0RHNxSWRmcm9tU2VsZWN0ZWRBcHBPYmplY3REU1FBcnJheShcclxuICAgICAgc2VsZWN0ZWRBcHBPYmplY3Q/LkRhdGFTb3VyY2VRdWVyaWVzLFxyXG4gICAgICBmaWVsZHMuTG9va1VwRGV0YWlscy5Mb29rdXBPYmplY3QsXHJcbiAgICAgICdMaXN0J1xyXG4gICAgKTtcclxuICAgIHNjaGVtYSA9IHtcclxuICAgICAgbGFiZWw6IGZpZWxkcy5EaXNwbGF5TmFtZSxcclxuICAgICAgdHlwZTogJ3NlbGVjdCcsXHJcbiAgICAgIGtleTogZmllbGRzLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgZGF0YVNyYzogJ3VybCcsXHJcbiAgICAgIHZhbHVlUHJvcGVydHk6IGZpZWxkcy5Mb29rVXBEZXRhaWxzLkxvb2t1cEZpZWxkLFxyXG4gICAgICB0ZW1wbGF0ZTogYDxzcGFuPnt7IGl0ZW0uJHtmaWVsZHMuTG9va1VwRGV0YWlscy5EaXNwbGF5RmllbGR9IH19PC9zcGFuPmAsXHJcbiAgICAgIHNlbGVjdFZhbHVlczogJ1Jlc3VsdCcsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICAvLyB1cmw6IGAke2FwaVVybH0ke0FQSS5nZXRMaXN0RnJvbURzcX0ke2RzcUlEfWAsLy8gQVBJLmdldExpc3RGcm9tRHNxICsgZHNxSUQsXHJcbiAgICAgICAgdXJsOiBgJHt1cmx9JHtBUEkuZ2V0TGlzdEZyb21Ec3F9JHtkc3FJRH1gLC8vIEFQSS5nZXRMaXN0RnJvbURzcSArIGRzcUlELFxyXG4gICAgICAgIGhlYWRlcnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJrZXlcIjogU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICAgICAgICAgIFwidmFsdWVcIjogc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMuYXBwbGljYXRpb25Db2RlKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJrZXlcIjogU3RvcmFnZUNvbnN0YW50cy5BdXRob3JpemF0aW9uLFxyXG4gICAgICAgICAgICBcInZhbHVlXCI6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnRva2VuKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgXCJrZXlcIjogU3RvcmFnZUNvbnN0YW50cy5UZW5hbnRJZCxcclxuICAgICAgICAgICAgXCJ2YWx1ZVwiOiBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5UZW5hbnRJZClcclxuICAgICAgICAgIH1cclxuICAgICAgICBdLFxyXG4gICAgICB9LFxyXG4gICAgICBcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIHNjaGVtYSA9IHtcclxuICAgICAgbGFiZWw6IGZpZWxkcy5EaXNwbGF5TmFtZSxcclxuICAgICAgdHlwZTogZ2V0Rm9ybUJ1aWxkZXJUeXBlKGZpZWxkcy5GaWVsZFR5cGUuRGF0YVR5cGUpLFxyXG4gICAgICBrZXk6IGZpZWxkcy5TeXN0ZW1EQkZpZWxkTmFtZSxcclxuICAgICAgaW5wdXQ6IHRydWUsXHJcbiAgICB9O1xyXG4gIH1cclxuICByZXR1cm4gc2NoZW1hO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBIdHRwSGVhZGVycyBmb3IgZm9ybSBkYXRhIHJlcXVlc3RzXHJcbiAqXHJcbiAqIEByZXR1cm5zIEh0dHBIZWFkZXJzIHwgbnVsbCAtIFRoZSBIdHRwSGVhZGVycyBvYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEZvcm1EYXRhSGVhZGVycygpIHtcclxuICBjb25zdCBpc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFxyXG4gICAgU3RvcmFnZUNvbnN0YW50cy50b2tlblxyXG4gICk7XHJcbiAgaWYgKGlzVG9rZW4pIHtcclxuICAgIHJldHVybiBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICBBY2NlcHQ6ICcqLyonLFxyXG4gICAgICBBdXRob3JpemF0aW9uOiBpc1Rva2VuLFxyXG4gICAgICBBcHBsaWNhdGlvbkNvZGU6IENvbW1vbi5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuIl19
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxLXJlcy51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL3V0aWxzL3JlcS1yZXMudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwwQ0FBMEM7QUFDMUMsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUNMLFlBQVksRUFDWixxQ0FBcUMsR0FDdEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDbEQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFFM0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLFFBQWEsRUFBRSxHQUFXO0lBQzlELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBYSxFQUFFLEtBQWE7SUFDM0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLHFCQUFxQixDQUFD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QUFDaEIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCO0lBQ2hDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLGlCQUFpQixDQUNyRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQ3ZCLENBQUM7SUFDRixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osT0FBTyxJQUFJLFdBQVcsQ0FBQztZQUNyQixNQUFNLEVBQUUsS0FBSztZQUNiLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLGVBQWUsRUFBRSxNQUFNLENBQUMsZUFBZTtTQUN4QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXHJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QgfSBmcm9tICcuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzcyc7XHJcbmltcG9ydCB7XHJcbiAgZ2V0QXBwT2JqZWN0LFxyXG4gIGdldERzcUlkZnJvbVNlbGVjdGVkQXBwT2JqZWN0RFNRQXJyYXksXHJcbn0gZnJvbSAnLi90YWItYXBwLnV0aWwnO1xyXG5pbXBvcnQgeyBBcHBGaWVsZHMgfSBmcm9tICcuLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzcyc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0Rm9ybUJ1aWxkZXJUeXBlIH0gZnJvbSAnLi9mb3JtLWJ1aWxkZXIudXRpbCc7XHJcbmltcG9ydCB7IFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMvc3RvcmFnZS1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2UvZW5jcnlwdGlvbi5zZXJ2aWNlJztcclxuY29uc3QgZW5jcnlwdGlvblNlcnZpY2UgPSBuZXcgRW5jcnlwdGlvblNlcnZpY2UoKTtcclxuY29uc3Qgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gbmV3IFNlc3Npb25TdG9yYWdlU2VydmljZShlbmNyeXB0aW9uU2VydmljZSk7XHJcblxyXG4vKipcclxuICogRGVsZXRlIGEga2V5IGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBrZXkgLSBUaGUga2V5IHRvIGJlIGRlbGV0ZWRcclxuICogQHJldHVybnMgYW55IC0gVGhlIHVwZGF0ZWQgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlS2V5RnJvbVJlc3BvbnNlKHJlc3BvbnNlOiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgZGVsZXRlIHJlc3BvbnNlW2tleV07XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogUmVtb3ZlIHRoZSBwcmltYXJ5IGtleSBmcm9tIHRoZSByZXNwb25zZSBvYmplY3RcclxuICpcclxuICogQHBhcmFtIHJlc3BvbnNlIC0gVGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKiBAcGFyYW0gZmllbGQgLSBUaGUgZmllbGQgdG8gYmUgcmVtb3ZlZCBhcyBwcmltYXJ5IGtleVxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgdXBkYXRlZCByZXNwb25zZSBvYmplY3RcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQcmltYXJ5S2V5KHJlc3BvbnNlOiBhbnksIGZpZWxkOiBzdHJpbmcpIHtcclxuICBpZiAoZmllbGQpIHtcclxuICAgIGRlbGV0ZUtleUZyb21SZXNwb25zZShyZXNwb25zZSwgZmllbGQpO1xyXG4gIH1cclxuICByZXR1cm4gcmVzcG9uc2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgbXVsdGlwbGUgcHJpbWFyeSBrZXlzIGZyb20gdGhlIHJlc3BvbnNlIG9iamVjdFxyXG4gKlxyXG4gKiBAcGFyYW0gcmVzcG9uc2UgLSBUaGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqIEBwYXJhbSBmaWVsZHMgLSBUaGUgYXJyYXkgb2YgZmllbGRzIHRvIGJlIHJlbW92ZWQgYXMgcHJpbWFyeSBrZXlzXHJcbiAqIEByZXR1cm5zIGFueSAtIFRoZSB1cGRhdGVkIHJlc3BvbnNlIG9iamVjdFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShyZXNwb25zZTogYW55LCBmaWVsZHM6IGFueSkge1xyXG4gIGZpZWxkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgIGRlbGV0ZSByZXNwb25zZVtlbGVtZW50LkZpZWxkTmFtZV07XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHJlc3BvbnNlO1xyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBIdHRwSGVhZGVycyBmb3IgQVBJIHJlcXVlc3RzXHJcbiAqXHJcbiAqIEByZXR1cm5zIEh0dHBIZWFkZXJzIHwgbnVsbCAtIFRoZSBIdHRwSGVhZGVycyBvYmplY3Qgb3IgbnVsbFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlcnMoaGVhZGVycz86IGFueSkge1xyXG4gIGlmKGhlYWRlcnMpe1xyXG4gICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IHRva2VuID0gc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMudG9rZW4pO1xyXG4gICAgLy8gY29uc3Qgc3RhdGljVG9rZW4gPSBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5zdGF0aWNUb2tlbik7XHJcbiAgICAvLyBwYXRjaCB2ZXJzaW9uXHJcbiAgICBjb25zdCBzdGF0aWNUb2tlbiA9IENvbW1vbi5zdGF0aWNUb2tlbjtcclxuICAgIFxyXG4gICAgaWYgKCF0b2tlbiAmJiBzdGF0aWNUb2tlbikge1xyXG4gICAgICAgIC8vIFRva2VuIGlzIGVtcHR5IGJ1dCBzdGF0aWNUb2tlbiBpcyBub3RcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogc3RhdGljVG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodG9rZW4pIHtcclxuICAgICAgICAvLyBUb2tlbiBpcyBub3QgZW1wdHlcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXHJcbiAgICAgICAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVuIGJvdGggdG9rZW5zIGFyZSBlbXB0eVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2V0IHRoZSBwcmltYXJ5IGtleSBmaWVsZHMgZnJvbSB0aGUgQXBwT2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSBhcHBPYmplY3QgLSBUaGUgQXBwT2JqZWN0XHJcbiAqIEByZXR1cm5zIEFwcEZpZWxkc1tdIHwgbnVsbCAtIFRoZSBhcnJheSBvZiBwcmltYXJ5IGtleSBmaWVsZHMgb3IgbnVsbFxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdDogQXBwT2JqZWN0KSB7XHJcbiAgaWYgKGFwcE9iamVjdC5GaWVsZHMubGVuZ3RoKSB7XHJcbiAgICByZXR1cm4gYXBwT2JqZWN0LkZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5Jc1ByaW1hcnlLZXkpO1xyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuLyoqXHJcbiAqIEdldCB0aGUgZWRpdCByZWNvcmQgSUQgZnJvbSB0aGUgcmVzcG9uc2Ugb2JqZWN0XHJcbiAqXHJcbiAqIEBwYXJhbSByZXNwb25zZSAtIFRoZSByZXNwb25zZSBvYmplY3RcclxuICogQHBhcmFtIGZpZWxkTmFtZSAtIFRoZSBmaWVsZCBuYW1lIGZvciB0aGUgZWRpdCByZWNvcmQgSURcclxuICogQHJldHVybnMgYW55IC0gVGhlIGVkaXQgcmVjb3JkIElEXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0RWRpdFJlY29yZElkKHJlc3BvbnNlOiBhbnksIGZpZWxkTmFtZTogYW55KSB7XHJcbiAgbGV0IHJlY29yZElkID0gbnVsbDtcclxuICBpZiAoZmllbGROYW1lKSB7XHJcbiAgICByZWNvcmRJZCA9IHJlc3BvbnNlW2ZpZWxkTmFtZV0gfHwgbnVsbDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmVjb3JkSWQgPSByZXNwb25zZS5JZCB8fCByZXNwb25zZS5JRCB8fCBudWxsO1xyXG4gIH1cclxuICByZXR1cm4gcmVjb3JkSWQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSB0aGUgZmllbGRzIHNjaGVtYSBiYXNlZCBvbiB0aGUgQXBwRmllbGRzXHJcbiAqXHJcbiAqIEBwYXJhbSBmaWVsZHMgLSBUaGUgQXBwRmllbGRzIG9iamVjdFxyXG4gKiBAcmV0dXJucyBhbnkgLSBUaGUgZ2VuZXJhdGVkIGZpZWxkcyBzY2hlbWFcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZpZWxkc1NjaGVtYSh1cmw6YW55LGZpZWxkczogQXBwRmllbGRzKSB7XHJcbiAgbGV0IHNjaGVtYSA9IHt9O1xyXG4gIC8vIGNvbnN0IGFwaVVybCA9IGdldEFwaVVybCgpO1xyXG4gIGlmIChmaWVsZHMuaGFzT3duUHJvcGVydHkoJ0xvb2tVcERldGFpbHMnKSkge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRBcHBPYmplY3Q6IEFwcE9iamVjdCA9IGdldEFwcE9iamVjdChcclxuICAgICAgZmllbGRzLkxvb2tVcERldGFpbHMuTG9va3VwT2JqZWN0XHJcbiAgICApO1xyXG4gICAgY29uc3QgZHNxSUQgPSBnZXREc3FJZGZyb21TZWxlY3RlZEFwcE9iamVjdERTUUFycmF5KFxyXG4gICAgICBzZWxlY3RlZEFwcE9iamVjdD8uRGF0YVNvdXJjZVF1ZXJpZXMsXHJcbiAgICAgIGZpZWxkcy5Mb29rVXBEZXRhaWxzLkxvb2t1cE9iamVjdCxcclxuICAgICAgJ0xpc3QnXHJcbiAgICApO1xyXG4gICAgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogZmllbGRzLkRpc3BsYXlOYW1lLFxyXG4gICAgICB0eXBlOiAnc2VsZWN0JyxcclxuICAgICAga2V5OiBmaWVsZHMuU3lzdGVtREJGaWVsZE5hbWUsXHJcbiAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICBkYXRhU3JjOiAndXJsJyxcclxuICAgICAgdmFsdWVQcm9wZXJ0eTogZmllbGRzLkxvb2tVcERldGFpbHMuTG9va3VwRmllbGQsXHJcbiAgICAgIHRlbXBsYXRlOiBgPHNwYW4+e3sgaXRlbS4ke2ZpZWxkcy5Mb29rVXBEZXRhaWxzLkRpc3BsYXlGaWVsZH0gfX08L3NwYW4+YCxcclxuICAgICAgc2VsZWN0VmFsdWVzOiAnUmVzdWx0JyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIC8vIHVybDogYCR7YXBpVXJsfSR7QVBJLmdldExpc3RGcm9tRHNxfSR7ZHNxSUR9YCwvLyBBUEkuZ2V0TGlzdEZyb21Ec3EgKyBkc3FJRCxcclxuICAgICAgICB1cmw6IGAke3VybH0ke0FQSS5nZXRMaXN0RnJvbURzcX0ke2RzcUlEfWAsLy8gQVBJLmdldExpc3RGcm9tRHNxICsgZHNxSUQsXHJcbiAgICAgICAgaGVhZGVyczogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcImtleVwiOiBTdG9yYWdlQ29uc3RhbnRzLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgICAgICAgICAgXCJ2YWx1ZVwiOiBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcImtleVwiOiBTdG9yYWdlQ29uc3RhbnRzLkF1dGhvcml6YXRpb24sXHJcbiAgICAgICAgICAgIFwidmFsdWVcIjogc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldFNlc3Npb25TdG9yYWdlKFN0b3JhZ2VDb25zdGFudHMudG9rZW4pXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBcImtleVwiOiBTdG9yYWdlQ29uc3RhbnRzLlRlbmFudElkLFxyXG4gICAgICAgICAgICBcInZhbHVlXCI6IHNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLlRlbmFudElkKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF0sXHJcbiAgICAgIH0sXHJcbiAgICAgIFxyXG4gICAgfTtcclxuICB9IGVsc2Uge1xyXG4gICAgc2NoZW1hID0ge1xyXG4gICAgICBsYWJlbDogZmllbGRzLkRpc3BsYXlOYW1lLFxyXG4gICAgICB0eXBlOiBnZXRGb3JtQnVpbGRlclR5cGUoZmllbGRzLkZpZWxkVHlwZS5EYXRhVHlwZSksXHJcbiAgICAgIGtleTogZmllbGRzLlN5c3RlbURCRmllbGROYW1lLFxyXG4gICAgICBpbnB1dDogdHJ1ZSxcclxuICAgIH07XHJcbiAgfVxyXG4gIHJldHVybiBzY2hlbWE7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZXQgdGhlIEh0dHBIZWFkZXJzIGZvciBmb3JtIGRhdGEgcmVxdWVzdHNcclxuICpcclxuICogQHJldHVybnMgSHR0cEhlYWRlcnMgfCBudWxsIC0gVGhlIEh0dHBIZWFkZXJzIG9iamVjdCBvciBudWxsXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9ybURhdGFIZWFkZXJzKCkge1xyXG4gIGNvbnN0IGlzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoXHJcbiAgICBTdG9yYWdlQ29uc3RhbnRzLnRva2VuXHJcbiAgKTtcclxuICBpZiAoaXNUb2tlbikge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEFjY2VwdDogJyovKicsXHJcbiAgICAgIEF1dGhvcml6YXRpb246IGlzVG9rZW4sXHJcbiAgICAgIEFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG4iXX0=
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { openDB } from 'idb';
|
|
3
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../core/service/encryption.service";
|
|
4
6
|
export class IdbService {
|
|
5
|
-
constructor() {
|
|
7
|
+
constructor(encryptionService) {
|
|
8
|
+
this.encryptionService = encryptionService;
|
|
6
9
|
this.dbName = 'TabDatabase';
|
|
7
10
|
this.dbVersion = 1;
|
|
8
11
|
this.dbPromise = openDB(this.dbName, this.dbVersion, {
|
|
@@ -24,28 +27,40 @@ export class IdbService {
|
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
29
|
async setItemIndexedDb(key, data) {
|
|
30
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
31
|
+
const stringData = (typeof data === 'string' || !this.encryptionService?.shouldEncrypt()) ? data : JSON.stringify(data);
|
|
32
|
+
const encrypted = this.encryptionService.encrypt(stringData);
|
|
27
33
|
const db = await this.dbPromise;
|
|
28
34
|
const tx = db.transaction('myObjectStore', 'readwrite');
|
|
29
35
|
const store = tx.objectStore('myObjectStore');
|
|
30
|
-
await store.put({ key, data });
|
|
36
|
+
await store.put({ key: secureKey, data: encrypted });
|
|
31
37
|
await tx.done;
|
|
32
38
|
}
|
|
33
39
|
async getItem(key) {
|
|
34
40
|
try {
|
|
35
41
|
const result = await this.getItemIndexedDb(key);
|
|
36
|
-
return result
|
|
42
|
+
return result;
|
|
37
43
|
}
|
|
38
44
|
catch (error) {
|
|
39
45
|
throw new Error('Error retrieving data: ' + error);
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
48
|
async getItemIndexedDb(key) {
|
|
49
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
43
50
|
const db = await this.dbPromise;
|
|
44
51
|
const tx = db.transaction('myObjectStore', 'readonly');
|
|
45
52
|
const store = tx.objectStore('myObjectStore');
|
|
46
|
-
const result = await store.get(
|
|
53
|
+
const result = await store.get(secureKey);
|
|
47
54
|
await tx.done;
|
|
48
|
-
|
|
55
|
+
if (!result?.data)
|
|
56
|
+
return null;
|
|
57
|
+
try {
|
|
58
|
+
const decrypted = this.encryptionService.decrypt(result.data);
|
|
59
|
+
return decrypted;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
49
64
|
}
|
|
50
65
|
async clearIndexedDB() {
|
|
51
66
|
try {
|
|
@@ -59,11 +74,11 @@ export class IdbService {
|
|
|
59
74
|
throw new Error('Error clearing IndexedDB: ' + error);
|
|
60
75
|
}
|
|
61
76
|
}
|
|
62
|
-
static { this.ɵfac = function IdbService_Factory(t) { return new (t || IdbService)(); }; }
|
|
77
|
+
static { this.ɵfac = function IdbService_Factory(t) { return new (t || IdbService)(i0.ɵɵinject(i1.EncryptionService)); }; }
|
|
63
78
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: IdbService, factory: IdbService.ɵfac, providedIn: 'root' }); }
|
|
64
79
|
}
|
|
65
80
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(IdbService, [{
|
|
66
81
|
type: Injectable,
|
|
67
82
|
args: [{ providedIn: 'root' }]
|
|
68
|
-
}], () => [], null); })();
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
}], () => [{ type: i1.EncryptionService }], null); })();
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRiLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2F1dGgvaWRiLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQTBCLE1BQU0sS0FBSyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFVdkUsTUFBTSxPQUFPLFVBQVU7SUFLbkIsWUFBb0IsaUJBQW9DO1FBQXBDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFKdkMsV0FBTSxHQUFHLGFBQWEsQ0FBQztRQUN2QixjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBSTNCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2RCxPQUFPLENBQUMsRUFBRTtnQkFDTixJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO29CQUNqRCxFQUFFLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzlELENBQUM7WUFDTCxDQUFDO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVyxFQUFFLElBQVM7UUFDaEMsSUFBSSxDQUFDO1lBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDUCxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUM7UUFBQyxPQUFPLEtB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O1lBQ3BCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLENBQUE7UUFDekQsQ0FBQztJQUNMLENBQUM7MkVBMUVRLFVBQVU7dUVBQVYsVUFBVSxXQUFWLFVBQVUsbUJBREcsTUFBTTs7aUZBQ25CLFVBQVU7Y0FEdEIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG9wZW5EQiwgSURCUERhdGFiYXNlLCBEQlNjaGVtYSB9IGZyb20gJ2lkYic7XG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NvcmUvc2VydmljZS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgTXlEQiBleHRlbmRzIERCU2NoZW1hIHtcbiAgICBteU9iamVjdFN0b3JlOiB7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogeyBrZXk6IHN0cmluZzsgZGF0YTogc3RyaW5nIH07XG4gICAgfTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJZGJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRiTmFtZSA9ICdUYWJEYXRhYmFzZSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkYlZlcnNpb24gPSAxO1xuICAgIHByaXZhdGUgZGJQcm9taXNlOiBQcm9taXNlPElEQlBEYXRhYmFzZTxNeURCPj47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSkge1xuICAgICAgICB0aGlzLmRiUHJvbWlzZSA9IG9wZW5EQjxNeURCPih0aGlzLmRiTmFtZSwgdGhpcy5kYlZlcnNpb24sIHtcbiAgICAgICAgICAgIHVwZ3JhZGUoZGIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ215T2JqZWN0U3RvcmUnKSkge1xuICAgICAgICAgICAgICAgICAgICBkYi5jcmVhdGVPYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScsIHsga2V5UGF0aDogJ2tleScgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgc2V0SXRlbShrZXk6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0SXRlbUluZGV4ZWREYihrZXksIGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBzdG9yaW5nIGRhdGE6ICcgKyBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNldEl0ZW1JbmRleGVkRGIoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzZWN1cmVLZXkgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmdldFNlY3VyZUtleShrZXkpO1xuICAgICAgICBjb25zdCBzdHJpbmdEYXRhID0gKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyB8fCAhdGhpcy5lbmNyeXB0aW9uU2VydmljZT8uc2hvdWxkRW5jcnlwdCgpKSA/IGRhdGEgOiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KHN0cmluZ0RhdGEpO1xuXG4gICAgICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kYlByb21pc2U7XG4gICAgICAgIGNvbnN0IHR4ID0gZGIudHJhbnNhY3Rpb24oJ215T2JqZWN0U3RvcmUnLCAncmVhZHdyaXRlJyk7XG4gICAgICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoJ215T2JqZWN0U3RvcmUnKTtcbiAgICAgICAgYXdhaXQgc3RvcmUucHV0KHsga2V5OiBzZWN1cmVLZXksIGRhdGE6IGVuY3J5cHRlZCB9KTtcbiAgICAgICAgYXdhaXQgdHguZG9uZTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0SXRlbUluZGV4ZWREYihrZXkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgcmV0cmlldmluZyBkYXRhOiAnICsgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRJdGVtSW5kZXhlZERiKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3Qgc2VjdXJlS2V5ID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5nZXRTZWN1cmVLZXkoa2V5KTtcbiAgICAgICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmRiUHJvbWlzZTtcbiAgICAgICAgY29uc3QgdHggPSBkYi50cmFuc2FjdGlvbignbXlPYmplY3RTdG9yZScsICdyZWFkb25seScpO1xuICAgICAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKCdteU9iamVjdFN0b3JlJyk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JlLmdldChzZWN1cmVLZXkpO1xuICAgICAgICBhd2FpdCB0eC5kb25lO1xuXG4gICAgICAgIGlmICghcmVzdWx0Py5kYXRhKSByZXR1cm4gbnVsbDtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KHJlc3VsdC5kYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBkZWNyeXB0ZWQ7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXR1cm4gIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBjbGVhckluZGV4ZWREQigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kYlByb21pc2U7XG4gICAgICAgICAgICBjb25zdCB0eCA9IGRiLnRyYW5zYWN0aW9uKCdteU9iamVjdFN0b3JlJywgJ3JlYWR3cml0ZScpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZSgnbXlPYmplY3RTdG9yZScpO1xuICAgICAgICAgICAgYXdhaXQgc3RvcmUuY2xlYXIoKTtcbiAgICAgICAgICAgIGF3YWl0IHR4LmRvbmU7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGNsZWFyaW5nIEluZGV4ZWREQjogJyArIGVycm9yKVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cblxuIl19
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../core/service/encryption.service";
|
|
4
6
|
export class LocalStorageService {
|
|
5
|
-
constructor() {
|
|
7
|
+
constructor(encryptionService) {
|
|
8
|
+
this.encryptionService = encryptionService;
|
|
6
9
|
// -----------------------------------------------------------------------------------------------------
|
|
7
10
|
// @ Public methods
|
|
8
11
|
// -----------------------------------------------------------------------------------------------------
|
|
12
|
+
this.cache = new Map();
|
|
9
13
|
/**
|
|
10
14
|
* Set data in local storage
|
|
11
15
|
* @param key - Key to store the data
|
|
12
16
|
* @param data - Data to be stored
|
|
13
17
|
*/
|
|
14
18
|
this.setLocalStorage = (key, data) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
localStorage.setItem(key, JSON.stringify(data));
|
|
21
|
-
}
|
|
19
|
+
const stringData = typeof data === 'string' ? data : JSON.stringify(data);
|
|
20
|
+
this.cache.set(key, stringData);
|
|
21
|
+
this.encryptAndStore(key, stringData);
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Get data from local storage
|
|
@@ -26,30 +26,68 @@ export class LocalStorageService {
|
|
|
26
26
|
* @returns The data stored in local storage
|
|
27
27
|
*/
|
|
28
28
|
this.getLocalStorage = (key) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
if (this.cache.has(key)) {
|
|
30
|
+
return this.cache.get(key);
|
|
31
|
+
}
|
|
32
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
33
|
+
const encrypted = localStorage.getItem(secureKey);
|
|
34
|
+
if (!encrypted)
|
|
35
|
+
return null;
|
|
36
|
+
try {
|
|
37
|
+
const decrypted = this.encryptionService.decrypt(encrypted);
|
|
38
|
+
this.cache.set(key, decrypted);
|
|
39
|
+
return decrypted;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
36
44
|
};
|
|
37
45
|
/**
|
|
38
46
|
* Remove data from local storage
|
|
39
47
|
* @param key - Key of the data to be removed
|
|
40
48
|
*/
|
|
41
49
|
this.removeLocalStorage = (key) => {
|
|
42
|
-
|
|
50
|
+
this.cache.delete(key);
|
|
51
|
+
this.removeFromLocalStorage(key);
|
|
43
52
|
};
|
|
44
53
|
this.clearLocalStorage = () => {
|
|
45
54
|
localStorage.clear();
|
|
55
|
+
this.cache.clear();
|
|
46
56
|
};
|
|
47
57
|
}
|
|
48
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Encrypts the given data using the encryption service and stores it in local storage.
|
|
60
|
+
*
|
|
61
|
+
* @param key The key to store the data under
|
|
62
|
+
* @param data The data to be stored
|
|
63
|
+
*/
|
|
64
|
+
encryptAndStore(key, data) {
|
|
65
|
+
// Use `queueMicrotask` to ensure that the encryption and storage are done after the current task is completed
|
|
66
|
+
// This is to prevent any errors that might occur during encryption from causing the application to crash
|
|
67
|
+
queueMicrotask(() => {
|
|
68
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
69
|
+
const encrypted = this.encryptionService.encrypt(data);
|
|
70
|
+
localStorage.setItem(secureKey, encrypted);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Removes the data stored in local storage for the given key.
|
|
75
|
+
* This method is used internally by `removeLocalStorage`.
|
|
76
|
+
* @param key The key of the data to be removed
|
|
77
|
+
*/
|
|
78
|
+
removeFromLocalStorage(key) {
|
|
79
|
+
// Use `queueMicrotask` to ensure that the removal is done after the current task is completed
|
|
80
|
+
// This is to prevent any errors that might occur during removal from causing the application to crash
|
|
81
|
+
queueMicrotask(() => {
|
|
82
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
83
|
+
localStorage.removeItem(secureKey);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = function LocalStorageService_Factory(t) { return new (t || LocalStorageService)(i0.ɵɵinject(i1.EncryptionService)); }; }
|
|
49
87
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalStorageService, factory: LocalStorageService.ɵfac, providedIn: 'root' }); }
|
|
50
88
|
}
|
|
51
89
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LocalStorageService, [{
|
|
52
90
|
type: Injectable,
|
|
53
91
|
args: [{ providedIn: 'root' }]
|
|
54
|
-
}],
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
}], () => [{ type: i1.EncryptionService }], null); })();
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXV0aC9sb2NhbC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQUd2RSxNQUFNLE9BQU8sbUJBQW1CO0lBTzlCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBTnhELHdHQUF3RztRQUN4RyxtQkFBbUI7UUFDbkIsd0dBQXdHO1FBRWhHLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUkxQzs7OztXQUlHO1FBQ0gsb0JBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxJQUFTLEVBQVEsRUFBRTtZQUNqRCxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEMsQ0FBQyxDQUFDO1FBRUY7Ozs7V0FJRztRQUNILG9CQUFlLEdBQUcsQ0FBQyxHQUFXLEVBQU8sRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsRCxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUU1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRjs7O1dBR0c7UUFDSCx1QkFBa0IsR0FBRyxDQUFDLEdBQVcsRUFBUSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7UUFFRixzQkFBaUIsR0FBRyxHQUFTLEVBQUU7WUFDN0IsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO0lBaEQwRCxDQUFDO0lBa0Q3RDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FBQyxHQUFXLEVBQUUsSUFBWTtRQUMvQyw4R0FBOEc7UUFDOUcseUdBQXlHO1FBQ3pHLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxzQkFBc0IsQ0FBQyxHQUFXO1FBQ3hDLDhGQUE4RjtRQUM5RixzR0FBc0c7UUFDdEcsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNELFlBQVksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO29GQXJGVSxtQkFBbUI7dUVBQW5CLG1CQUFtQixXQUFuQixtQkFBbUIsbUJBRE4sTUFBTTs7aUZBQ25CLG1CQUFtQjtjQUQvQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2UvZW5jcnlwdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb2NhbFN0b3JhZ2VTZXJ2aWNlIHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQCBQdWJsaWMgbWV0aG9kc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIHByaXZhdGUgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlKSB7IH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgaW4gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IC0gS2V5IHRvIHN0b3JlIHRoZSBkYXRhXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzdG9yZWRcbiAgICovXG4gIHNldExvY2FsU3RvcmFnZSA9IChrZXk6IHN0cmluZywgZGF0YTogYW55KTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc3RyaW5nRGF0YSA9IHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJyA/IGRhdGEgOiBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgICB0aGlzLmNhY2hlLnNldChrZXksIHN0cmluZ0RhdGEpO1xuICAgIHRoaXMuZW5jcnlwdEFuZFN0b3JlKGtleSwgc3RyaW5nRGF0YSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldCBkYXRhIGZyb20gbG9jYWwgc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IC0gS2V5IHRvIHJldHJpZXZlIHRoZSBkYXRhXG4gICAqIEByZXR1cm5zIFRoZSBkYXRhIHN0b3JlZCBpbiBsb2NhbCBzdG9yYWdlXG4gICAqL1xuICBnZXRMb2NhbFN0b3JhZ2UgPSAoa2V5OiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgIGlmICh0aGlzLmNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWNoZS5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWN1cmVLZXkgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmdldFNlY3VyZUtleShrZXkpO1xuICAgIGNvbnN0IGVuY3J5cHRlZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHNlY3VyZUtleSk7XG4gICAgaWYgKCFlbmNyeXB0ZWQpIHJldHVybiBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBkZWNyeXB0ZWQpO1xuICAgICAgcmV0dXJuIGRlY3J5cHRlZDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgZGF0YSBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICogQHBhcmFtIGtleSAtIEtleSBvZiB0aGUgZGF0YSB0byBiZSByZW1vdmVkXG4gICAqL1xuICByZW1vdmVMb2NhbFN0b3JhZ2UgPSAoa2V5OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuICAgIHRoaXMucmVtb3ZlRnJvbUxvY2FsU3RvcmFnZShrZXkpO1xuICB9O1xuXG4gIGNsZWFyTG9jYWxTdG9yYWdlID0gKCk6IHZvaWQgPT4ge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgIHRoaXMuY2FjaGUuY2xlYXIoKTtcbiAgfTtcblxuICAvKipcbiAgICogRW5jcnlwdHMgdGhlIGdpdmVuIGRhdGEgdXNpbmcgdGhlIGVuY3J5cHRpb24gc2VydmljZSBhbmQgc3RvcmVzIGl0IGluIGxvY2FsIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzdG9yZSB0aGUgZGF0YSB1bmRlclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBiZSBzdG9yZWRcbiAgICovXG4gIHByaXZhdGUgZW5jcnlwdEFuZFN0b3JlKGtleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBVc2UgYHF1ZXVlTWljcm90YXNrYCB0byBlbnN1cmUgdGhhdCB0aGUgZW5jcnlwdGlvbiBhbmQgc3RvcmFnZSBhcmUgZG9uZSBhZnRlciB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlZFxuICAgIC8vIFRoaXMgaXMgdG8gcHJldmVudCBhbnkgZXJyb3JzIHRoYXQgbWlnaHQgb2NjdXIgZHVyaW5nIGVuY3J5cHRpb24gZnJvbSBjYXVzaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBjcmFzaFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUtleSA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZ2V0U2VjdXJlS2V5KGtleSk7XG4gICAgICBjb25zdCBlbmNyeXB0ZWQgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoZGF0YSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShzZWN1cmVLZXksIGVuY3J5cHRlZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgZGF0YSBzdG9yZWQgaW4gbG9jYWwgc3RvcmFnZSBmb3IgdGhlIGdpdmVuIGtleS5cbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IGByZW1vdmVMb2NhbFN0b3JhZ2VgLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBrZXkgb2YgdGhlIGRhdGEgdG8gYmUgcmVtb3ZlZFxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVGcm9tTG9jYWxTdG9yYWdlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVXNlIGBxdWV1ZU1pY3JvdGFza2AgdG8gZW5zdXJlIHRoYXQgdGhlIHJlbW92YWwgaXMgZG9uZSBhZnRlciB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlZFxuICAgIC8vIFRoaXMgaXMgdG8gcHJldmVudCBhbnkgZXJyb3JzIHRoYXQgbWlnaHQgb2NjdXIgZHVyaW5nIHJlbW92YWwgZnJvbSBjYXVzaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBjcmFzaFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUtleSA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZ2V0U2VjdXJlS2V5KGtleSk7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzZWN1cmVLZXkpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../core/service/encryption.service";
|
|
4
6
|
export class SessionStorageService {
|
|
5
|
-
constructor() {
|
|
7
|
+
constructor(encryptionService) {
|
|
8
|
+
this.encryptionService = encryptionService;
|
|
6
9
|
// -----------------------------------------------------------------------------------------------------
|
|
7
10
|
// @ Public methods
|
|
8
11
|
// -----------------------------------------------------------------------------------------------------
|
|
12
|
+
this.cache = new Map();
|
|
9
13
|
/**
|
|
10
14
|
* Set data in session storage
|
|
11
15
|
* @param key - Key to store the data
|
|
12
16
|
* @param data - Data to be stored
|
|
13
17
|
*/
|
|
14
18
|
this.setSessionStorage = (key, data) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
sessionStorage.setItem(key, JSON.stringify(data));
|
|
21
|
-
}
|
|
19
|
+
const stringData = typeof data === 'string' ? data : JSON.stringify(data);
|
|
20
|
+
this.cache.set(key, stringData);
|
|
21
|
+
this.encryptAndStore(key, stringData);
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Get data from session storage
|
|
@@ -26,30 +26,68 @@ export class SessionStorageService {
|
|
|
26
26
|
* @returns The data stored in session storage
|
|
27
27
|
*/
|
|
28
28
|
this.getSessionStorage = (key) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
if (this.cache.has(key)) {
|
|
30
|
+
return this.cache.get(key);
|
|
31
|
+
}
|
|
32
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
33
|
+
const encrypted = sessionStorage.getItem(secureKey);
|
|
34
|
+
if (!encrypted)
|
|
35
|
+
return null;
|
|
36
|
+
try {
|
|
37
|
+
const decrypted = this.encryptionService.decrypt(encrypted);
|
|
38
|
+
this.cache.set(key, decrypted);
|
|
39
|
+
return decrypted;
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
36
44
|
};
|
|
37
45
|
/**
|
|
38
46
|
* Remove data from session storage
|
|
39
47
|
* @param key - Key of the data to be removed
|
|
40
48
|
*/
|
|
41
49
|
this.removeSessionStorage = (key) => {
|
|
42
|
-
|
|
50
|
+
this.cache.delete(key);
|
|
51
|
+
this.removeFromSessionStorage(key);
|
|
43
52
|
};
|
|
44
53
|
this.clearSessionStorage = () => {
|
|
54
|
+
this.cache.clear();
|
|
45
55
|
sessionStorage.clear();
|
|
46
56
|
};
|
|
47
57
|
}
|
|
48
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Encrypts the given data using the encryption service and stores it in session storage.
|
|
60
|
+
*
|
|
61
|
+
* @param key The key to store the data under
|
|
62
|
+
* @param data The data to be stored
|
|
63
|
+
*/
|
|
64
|
+
encryptAndStore(key, data) {
|
|
65
|
+
// Use `queueMicrotask` to ensure that the encryption and storage are done after the current task is completed
|
|
66
|
+
// This is to prevent any errors that might occur during encryption from causing the application to crash
|
|
67
|
+
queueMicrotask(() => {
|
|
68
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
69
|
+
const encrypted = this.encryptionService.encrypt(data);
|
|
70
|
+
sessionStorage.setItem(secureKey, encrypted);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Removes the data stored in session storage for the given key.
|
|
75
|
+
* This method is used internally by `removeLocalStorage`.
|
|
76
|
+
* @param key The key of the data to be removed
|
|
77
|
+
*/
|
|
78
|
+
removeFromSessionStorage(key) {
|
|
79
|
+
// Use `queueMicrotask` to ensure that the removal is done after the current task is completed
|
|
80
|
+
// This is to prevent any errors that might occur during removal from causing the application to crash
|
|
81
|
+
queueMicrotask(() => {
|
|
82
|
+
const secureKey = this.encryptionService.getSecureKey(key);
|
|
83
|
+
sessionStorage.removeItem(secureKey);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = function SessionStorageService_Factory(t) { return new (t || SessionStorageService)(i0.ɵɵinject(i1.EncryptionService)); }; }
|
|
49
87
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SessionStorageService, factory: SessionStorageService.ɵfac, providedIn: 'root' }); }
|
|
50
88
|
}
|
|
51
89
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SessionStorageService, [{
|
|
52
90
|
type: Injectable,
|
|
53
91
|
args: [{ providedIn: 'root' }]
|
|
54
|
-
}],
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
}], () => [{ type: i1.EncryptionService }], null); })();
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hdXRoL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7QUFHdkUsTUFBTSxPQUFPLHFCQUFxQjtJQU1oQyxZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUx4RCx3R0FBd0c7UUFDeEcsbUJBQW1CO1FBQ25CLHdHQUF3RztRQUVoRyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFHMUM7Ozs7V0FJRztRQUNILHNCQUFpQixHQUFHLENBQUMsR0FBVyxFQUFFLElBQVMsRUFBUSxFQUFFO1lBQ25ELE1BQU0sVUFBVSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUM7UUFFRjs7OztXQUlHO1FBQ0gsc0JBQWlCLEdBQUcsQ0FBQyxHQUFXLEVBQU8sRUFBRTtZQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUVELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0QsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUU1QixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRjs7O1dBR0c7UUFDSCx5QkFBb0IsR0FBRyxDQUFDLEdBQVcsRUFBUSxFQUFFO1lBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFFRix3QkFBbUIsR0FBRyxHQUFTLEVBQUU7WUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDO0lBaEQwRCxDQUFDO0lBa0Q3RDs7Ozs7T0FLRztJQUNLLGVBQWUsQ0FBQyxHQUFXLEVBQUUsSUFBWTtRQUMvQyw4R0FBOEc7UUFDOUcseUdBQXlHO1FBQ3pHLGNBQWMsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZELGNBQWMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx3QkFBd0IsQ0FBQyxHQUFXO1FBQzFDLDhGQUE4RjtRQUM5RixzR0FBc0c7UUFDdEcsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNELGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3NGQXBGVSxxQkFBcUI7dUVBQXJCLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRFIsTUFBTTs7aUZBQ25CLHFCQUFxQjtjQURqQyxVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlcnZpY2UvZW5jcnlwdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZXNzaW9uU3RvcmFnZVNlcnZpY2Uge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgcHJpdmF0ZSBjYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlKSB7IH1cblxuICAvKipcbiAgICogU2V0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlXG4gICAqIEBwYXJhbSBrZXkgLSBLZXkgdG8gc3RvcmUgdGhlIGRhdGFcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHN0b3JlZFxuICAgKi9cbiAgc2V0U2Vzc2lvblN0b3JhZ2UgPSAoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSk6IHZvaWQgPT4ge1xuICAgIGNvbnN0IHN0cmluZ0RhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhIDogSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBzdHJpbmdEYXRhKTtcbiAgICB0aGlzLmVuY3J5cHRBbmRTdG9yZShrZXksIHN0cmluZ0RhdGEpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXQgZGF0YSBmcm9tIHNlc3Npb24gc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IC0gS2V5IHRvIHJldHJpZXZlIHRoZSBkYXRhXG4gICAqIEByZXR1cm5zIFRoZSBkYXRhIHN0b3JlZCBpbiBzZXNzaW9uIHN0b3JhZ2VcbiAgICovXG4gIGdldFNlc3Npb25TdG9yYWdlID0gKGtleTogc3RyaW5nKTogYW55ID0+IHtcbiAgICBpZiAodGhpcy5jYWNoZS5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdXJlS2V5ID0gdGhpcy5lbmNyeXB0aW9uU2VydmljZS5nZXRTZWN1cmVLZXkoa2V5KTtcbiAgICBjb25zdCBlbmNyeXB0ZWQgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHNlY3VyZUtleSk7XG4gICAgaWYgKCFlbmNyeXB0ZWQpIHJldHVybiBudWxsO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChlbmNyeXB0ZWQpO1xuICAgICAgdGhpcy5jYWNoZS5zZXQoa2V5LCBkZWNyeXB0ZWQpO1xuICAgICAgcmV0dXJuIGRlY3J5cHRlZDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZW1vdmUgZGF0YSBmcm9tIHNlc3Npb24gc3RvcmFnZVxuICAgKiBAcGFyYW0ga2V5IC0gS2V5IG9mIHRoZSBkYXRhIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZVNlc3Npb25TdG9yYWdlID0gKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICB0aGlzLnJlbW92ZUZyb21TZXNzaW9uU3RvcmFnZShrZXkpO1xuICB9O1xuXG4gIGNsZWFyU2Vzc2lvblN0b3JhZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRzIHRoZSBnaXZlbiBkYXRhIHVzaW5nIHRoZSBlbmNyeXB0aW9uIHNlcnZpY2UgYW5kIHN0b3JlcyBpdCBpbiBzZXNzaW9uIHN0b3JhZ2UuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgVGhlIGtleSB0byBzdG9yZSB0aGUgZGF0YSB1bmRlclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBiZSBzdG9yZWRcbiAgICovXG4gIHByaXZhdGUgZW5jcnlwdEFuZFN0b3JlKGtleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBVc2UgYHF1ZXVlTWljcm90YXNrYCB0byBlbnN1cmUgdGhhdCB0aGUgZW5jcnlwdGlvbiBhbmQgc3RvcmFnZSBhcmUgZG9uZSBhZnRlciB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlZFxuICAgIC8vIFRoaXMgaXMgdG8gcHJldmVudCBhbnkgZXJyb3JzIHRoYXQgbWlnaHQgb2NjdXIgZHVyaW5nIGVuY3J5cHRpb24gZnJvbSBjYXVzaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBjcmFzaFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUtleSA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZ2V0U2VjdXJlS2V5KGtleSk7XG4gICAgICBjb25zdCBlbmNyeXB0ZWQgPSB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoZGF0YSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKHNlY3VyZUtleSwgZW5jcnlwdGVkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBkYXRhIHN0b3JlZCBpbiBzZXNzaW9uIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgaW50ZXJuYWxseSBieSBgcmVtb3ZlTG9jYWxTdG9yYWdlYC5cbiAgICogQHBhcmFtIGtleSBUaGUga2V5IG9mIHRoZSBkYXRhIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlRnJvbVNlc3Npb25TdG9yYWdlKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gVXNlIGBxdWV1ZU1pY3JvdGFza2AgdG8gZW5zdXJlIHRoYXQgdGhlIHJlbW92YWwgaXMgZG9uZSBhZnRlciB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlZFxuICAgIC8vIFRoaXMgaXMgdG8gcHJldmVudCBhbnkgZXJyb3JzIHRoYXQgbWlnaHQgb2NjdXIgZHVyaW5nIHJlbW92YWwgZnJvbSBjYXVzaW5nIHRoZSBhcHBsaWNhdGlvbiB0byBjcmFzaFxuICAgIHF1ZXVlTWljcm90YXNrKCgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyZUtleSA9IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZ2V0U2VjdXJlS2V5KGtleSk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHNlY3VyZUtleSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as CryptoJS from 'crypto-js';
|
|
3
|
+
import { Common } from '../../app/constants/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class EncryptionService {
|
|
6
|
+
/**
|
|
7
|
+
* Constructor
|
|
8
|
+
*
|
|
9
|
+
* Generates domain-based key synchronously
|
|
10
|
+
*
|
|
11
|
+
* @param {string} domain - current domain
|
|
12
|
+
* @returns {void}
|
|
13
|
+
*/
|
|
14
|
+
constructor() {
|
|
15
|
+
// Generate domain-based key synchronously
|
|
16
|
+
const domain = window.location.hostname;
|
|
17
|
+
this.encryptionKey = CryptoJS.SHA256(domain).toString().substring(0, 32);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Encrypts the given string using AES encryption with the encryption key.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} data - The string to be encrypted.
|
|
23
|
+
* @returns {string} The encrypted string.
|
|
24
|
+
*/
|
|
25
|
+
encrypt(data) {
|
|
26
|
+
if (!this.shouldEncrypt()) {
|
|
27
|
+
return data; // Return plain data in non-prod
|
|
28
|
+
}
|
|
29
|
+
return CryptoJS.AES.encrypt(data, this.encryptionKey).toString();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Decrypts the given encrypted data using AES decryption with the encryption key.
|
|
33
|
+
*
|
|
34
|
+
* @param {string} encryptedData - The data to be decrypted.
|
|
35
|
+
* @returns {string} The decrypted string.
|
|
36
|
+
*/
|
|
37
|
+
decrypt(encryptedData) {
|
|
38
|
+
if (!this.shouldEncrypt()) {
|
|
39
|
+
return encryptedData; // Return as-is in non-prod
|
|
40
|
+
}
|
|
41
|
+
return CryptoJS.AES.decrypt(encryptedData, this.encryptionKey).toString(CryptoJS.enc.Utf8);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Returns a secure key for the given key.
|
|
45
|
+
* If encryption is enabled, it encrypts the key using SHA-256 and the encryption key.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} key - The key to be secured.
|
|
48
|
+
* @returns {string} The secure key.
|
|
49
|
+
*/
|
|
50
|
+
getSecureKey(key) {
|
|
51
|
+
return this.encryptKey(key);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Encrypts the given key using SHA-256 and the encryption key.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} key - The key to be encrypted.
|
|
57
|
+
* @returns {string} The encrypted key (16 characters long).
|
|
58
|
+
*/
|
|
59
|
+
encryptKey(key) {
|
|
60
|
+
if (!this.shouldEncrypt()) {
|
|
61
|
+
return key;
|
|
62
|
+
}
|
|
63
|
+
// Encrypts the key using SHA-256 and the encryption key
|
|
64
|
+
// The output is a 16-character long string
|
|
65
|
+
return CryptoJS.SHA256(key + this.encryptionKey).toString().substring(0, 16);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Determines whether encryption should be applied based on the environment.
|
|
69
|
+
* Caches the result to avoid repeated checks.
|
|
70
|
+
*
|
|
71
|
+
* @returns {boolean} True if encryption should be applied, false otherwise.
|
|
72
|
+
*/
|
|
73
|
+
shouldEncrypt() {
|
|
74
|
+
// Return cached value if available
|
|
75
|
+
if (this.shouldEncryptCache !== undefined) {
|
|
76
|
+
return this.shouldEncryptCache;
|
|
77
|
+
}
|
|
78
|
+
// Check if the current environment is not 'Development'
|
|
79
|
+
this.shouldEncryptCache = Common.environmentName !== 'Development';
|
|
80
|
+
return this.shouldEncryptCache;
|
|
81
|
+
}
|
|
82
|
+
static { this.ɵfac = function EncryptionService_Factory(t) { return new (t || EncryptionService)(); }; }
|
|
83
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EncryptionService, factory: EncryptionService.ɵfac, providedIn: 'root' }); }
|
|
84
|
+
}
|
|
85
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EncryptionService, [{
|
|
86
|
+
type: Injectable,
|
|
87
|
+
args: [{ providedIn: 'root' }]
|
|
88
|
+
}], () => [], null); })();
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvY29yZS9zZXJ2aWNlL2VuY3J5cHRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFHcEQsTUFBTSxPQUFPLGlCQUFpQjtJQUkxQjs7Ozs7OztPQU9HO0lBQ0g7UUFDSSwwQ0FBMEM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDeEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLElBQVk7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLENBQUMsZ0NBQWdDO1FBQ2pELENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLGFBQXFCO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUN4QixPQUFPLGFBQWEsQ0FBQyxDQUFDLDJCQUEyQjtRQUNyRCxDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxZQUFZLENBQUMsR0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssVUFBVSxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQztRQUNELHdEQUF3RDtRQUN4RCwyQ0FBMkM7UUFDM0MsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhO1FBQ2hCLG1DQUFtQztRQUNuQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNuQyxDQUFDO1FBRUQsd0RBQXdEO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsZUFBZSxLQUFLLGFBQWEsQ0FBQztRQUNuRSxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO2tGQXZGUSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uLy4uL2FwcC9jb25zdGFudHMvY29tbW9uJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBFbmNyeXB0aW9uU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmNyeXB0aW9uS2V5ITogc3RyaW5nO1xuICAgIHByaXZhdGUgc2hvdWxkRW5jcnlwdENhY2hlITogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICpcbiAgICAgKiBHZW5lcmF0ZXMgZG9tYWluLWJhc2VkIGtleSBzeW5jaHJvbm91c2x5XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZG9tYWluIC0gY3VycmVudCBkb21haW5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLy8gR2VuZXJhdGUgZG9tYWluLWJhc2VkIGtleSBzeW5jaHJvbm91c2x5XG4gICAgICAgIGNvbnN0IGRvbWFpbiA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbiAgICAgICAgdGhpcy5lbmNyeXB0aW9uS2V5ID0gQ3J5cHRvSlMuU0hBMjU2KGRvbWFpbikudG9TdHJpbmcoKS5zdWJzdHJpbmcoMCwgMzIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVuY3J5cHRzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgQUVTIGVuY3J5cHRpb24gd2l0aCB0aGUgZW5jcnlwdGlvbiBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YSAtIFRoZSBzdHJpbmcgdG8gYmUgZW5jcnlwdGVkLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNyeXB0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGVuY3J5cHQoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZEVuY3J5cHQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGE7IC8vIFJldHVybiBwbGFpbiBkYXRhIGluIG5vbi1wcm9kXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoZGF0YSwgdGhpcy5lbmNyeXB0aW9uS2V5KS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY3J5cHRzIHRoZSBnaXZlbiBlbmNyeXB0ZWQgZGF0YSB1c2luZyBBRVMgZGVjcnlwdGlvbiB3aXRoIHRoZSBlbmNyeXB0aW9uIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBlbmNyeXB0ZWREYXRhIC0gVGhlIGRhdGEgdG8gYmUgZGVjcnlwdGVkLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBkZWNyeXB0ZWQgc3RyaW5nLlxuICAgICAqL1xuICAgIGRlY3J5cHQoZW5jcnlwdGVkRGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3VsZEVuY3J5cHQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHRlZERhdGE7IC8vIFJldHVybiBhcy1pcyBpbiBub24tcHJvZFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIENyeXB0b0pTLkFFUy5kZWNyeXB0KGVuY3J5cHRlZERhdGEsIHRoaXMuZW5jcnlwdGlvbktleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBzZWN1cmUga2V5IGZvciB0aGUgZ2l2ZW4ga2V5LlxuICAgICAqIElmIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgaXQgZW5jcnlwdHMgdGhlIGtleSB1c2luZyBTSEEtMjU2IGFuZCB0aGUgZW5jcnlwdGlvbiBrZXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIGtleSB0byBiZSBzZWN1cmVkLlxuICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBzZWN1cmUga2V5LlxuICAgICAqL1xuICAgIGdldFNlY3VyZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVuY3J5cHRLZXkoa2V5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmNyeXB0cyB0aGUgZ2l2ZW4ga2V5IHVzaW5nIFNIQS0yNTYgYW5kIHRoZSBlbmNyeXB0aW9uIGtleS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHRvIGJlIGVuY3J5cHRlZC5cbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jcnlwdGVkIGtleSAoMTYgY2hhcmFjdGVycyBsb25nKS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVuY3J5cHRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIXRoaXMuc2hvdWxkRW5jcnlwdCgpKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICAgIC8vIEVuY3J5cHRzIHRoZSBrZXkgdXNpbmcgU0hBLTI1NiBhbmQgdGhlIGVuY3J5cHRpb24ga2V5XG4gICAgICAgIC8vIFRoZSBvdXRwdXQgaXMgYSAxNi1jaGFyYWN0ZXIgbG9uZyBzdHJpbmdcbiAgICAgICAgcmV0dXJuIENyeXB0b0pTLlNIQTI1NihrZXkgKyB0aGlzLmVuY3J5cHRpb25LZXkpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDE2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgZW5jcnlwdGlvbiBzaG91bGQgYmUgYXBwbGllZCBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuXG4gICAgICogQ2FjaGVzIHRoZSByZXN1bHQgdG8gYXZvaWQgcmVwZWF0ZWQgY2hlY2tzLlxuICAgICAqXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZW5jcnlwdGlvbiBzaG91bGQgYmUgYXBwbGllZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzaG91bGRFbmNyeXB0KCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBSZXR1cm4gY2FjaGVkIHZhbHVlIGlmIGF2YWlsYWJsZVxuICAgICAgICBpZiAodGhpcy5zaG91bGRFbmNyeXB0Q2FjaGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hvdWxkRW5jcnlwdENhY2hlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyBub3QgJ0RldmVsb3BtZW50J1xuICAgICAgICB0aGlzLnNob3VsZEVuY3J5cHRDYWNoZSA9IENvbW1vbi5lbnZpcm9ubWVudE5hbWUgIT09ICdEZXZlbG9wbWVudCc7XG4gICAgICAgIHJldHVybiB0aGlzLnNob3VsZEVuY3J5cHRDYWNoZTtcbiAgICB9ICAgICAgIFxufSJdfQ==
|
package/index.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export * from './lib/tab-core-utility/core/http-client/api.service';
|
|
|
55
55
|
export * from './lib/tab-core-utility/core/service/translation.service';
|
|
56
56
|
export * from './lib/tab-core-utility/core/service/notification.service';
|
|
57
57
|
export * from './lib/tab-core-utility/core/service/confirmation.service';
|
|
58
|
+
export * from './lib/tab-core-utility/core/service/encryption.service';
|
|
58
59
|
export * from './lib/tab-core-utility/core/pipe/translate.pipe';
|
|
59
60
|
export * from './lib/tab-core-utility/core/provider/translation.provider';
|
|
60
61
|
export * from './lib/tab-core-utility/core/provider/notification.provider';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export declare class Common {
|
|
2
|
+
static environmentName: string;
|
|
2
3
|
static applicationCode: string;
|
|
3
4
|
static tabJson: any;
|
|
4
5
|
static tabUserPersonalizedData: any;
|
|
@@ -6,5 +7,5 @@ export declare class Common {
|
|
|
6
7
|
static tabAppObjectAccess: any;
|
|
7
8
|
static staticToken: any;
|
|
8
9
|
static i18n: any;
|
|
9
|
-
static init(
|
|
10
|
+
static init(environment: any): void;
|
|
10
11
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
3
|
export declare class IdbService {
|
|
4
|
+
private encryptionService;
|
|
3
5
|
private readonly dbName;
|
|
4
6
|
private readonly dbVersion;
|
|
5
7
|
private dbPromise;
|
|
6
|
-
constructor();
|
|
8
|
+
constructor(encryptionService: EncryptionService);
|
|
7
9
|
setItem(key: string, data: any): Promise<void>;
|
|
8
10
|
private setItemIndexedDb;
|
|
9
11
|
getItem(key: string): Promise<any>;
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
3
|
export declare class LocalStorageService {
|
|
4
|
+
private encryptionService;
|
|
5
|
+
private cache;
|
|
6
|
+
constructor(encryptionService: EncryptionService);
|
|
3
7
|
/**
|
|
4
8
|
* Set data in local storage
|
|
5
9
|
* @param key - Key to store the data
|
|
@@ -18,6 +22,19 @@ export declare class LocalStorageService {
|
|
|
18
22
|
*/
|
|
19
23
|
removeLocalStorage: (key: string) => void;
|
|
20
24
|
clearLocalStorage: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Encrypts the given data using the encryption service and stores it in local storage.
|
|
27
|
+
*
|
|
28
|
+
* @param key The key to store the data under
|
|
29
|
+
* @param data The data to be stored
|
|
30
|
+
*/
|
|
31
|
+
private encryptAndStore;
|
|
32
|
+
/**
|
|
33
|
+
* Removes the data stored in local storage for the given key.
|
|
34
|
+
* This method is used internally by `removeLocalStorage`.
|
|
35
|
+
* @param key The key of the data to be removed
|
|
36
|
+
*/
|
|
37
|
+
private removeFromLocalStorage;
|
|
21
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageService, never>;
|
|
22
39
|
static ɵprov: i0.ɵɵInjectableDeclaration<LocalStorageService>;
|
|
23
40
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
import { EncryptionService } from '../core/service/encryption.service';
|
|
1
2
|
import * as i0 from "@angular/core";
|
|
2
3
|
export declare class SessionStorageService {
|
|
4
|
+
private encryptionService;
|
|
5
|
+
private cache;
|
|
6
|
+
constructor(encryptionService: EncryptionService);
|
|
3
7
|
/**
|
|
4
8
|
* Set data in session storage
|
|
5
9
|
* @param key - Key to store the data
|
|
@@ -18,6 +22,19 @@ export declare class SessionStorageService {
|
|
|
18
22
|
*/
|
|
19
23
|
removeSessionStorage: (key: string) => void;
|
|
20
24
|
clearSessionStorage: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Encrypts the given data using the encryption service and stores it in session storage.
|
|
27
|
+
*
|
|
28
|
+
* @param key The key to store the data under
|
|
29
|
+
* @param data The data to be stored
|
|
30
|
+
*/
|
|
31
|
+
private encryptAndStore;
|
|
32
|
+
/**
|
|
33
|
+
* Removes the data stored in session storage for the given key.
|
|
34
|
+
* This method is used internally by `removeLocalStorage`.
|
|
35
|
+
* @param key The key of the data to be removed
|
|
36
|
+
*/
|
|
37
|
+
private removeFromSessionStorage;
|
|
21
38
|
static ɵfac: i0.ɵɵFactoryDeclaration<SessionStorageService, never>;
|
|
22
39
|
static ɵprov: i0.ɵɵInjectableDeclaration<SessionStorageService>;
|
|
23
40
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class EncryptionService {
|
|
3
|
+
private readonly encryptionKey;
|
|
4
|
+
private shouldEncryptCache;
|
|
5
|
+
/**
|
|
6
|
+
* Constructor
|
|
7
|
+
*
|
|
8
|
+
* Generates domain-based key synchronously
|
|
9
|
+
*
|
|
10
|
+
* @param {string} domain - current domain
|
|
11
|
+
* @returns {void}
|
|
12
|
+
*/
|
|
13
|
+
constructor();
|
|
14
|
+
/**
|
|
15
|
+
* Encrypts the given string using AES encryption with the encryption key.
|
|
16
|
+
*
|
|
17
|
+
* @param {string} data - The string to be encrypted.
|
|
18
|
+
* @returns {string} The encrypted string.
|
|
19
|
+
*/
|
|
20
|
+
encrypt(data: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Decrypts the given encrypted data using AES decryption with the encryption key.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} encryptedData - The data to be decrypted.
|
|
25
|
+
* @returns {string} The decrypted string.
|
|
26
|
+
*/
|
|
27
|
+
decrypt(encryptedData: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Returns a secure key for the given key.
|
|
30
|
+
* If encryption is enabled, it encrypts the key using SHA-256 and the encryption key.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} key - The key to be secured.
|
|
33
|
+
* @returns {string} The secure key.
|
|
34
|
+
*/
|
|
35
|
+
getSecureKey(key: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Encrypts the given key using SHA-256 and the encryption key.
|
|
38
|
+
*
|
|
39
|
+
* @param {string} key - The key to be encrypted.
|
|
40
|
+
* @returns {string} The encrypted key (16 characters long).
|
|
41
|
+
*/
|
|
42
|
+
private encryptKey;
|
|
43
|
+
/**
|
|
44
|
+
* Determines whether encryption should be applied based on the environment.
|
|
45
|
+
* Caches the result to avoid repeated checks.
|
|
46
|
+
*
|
|
47
|
+
* @returns {boolean} True if encryption should be applied, false otherwise.
|
|
48
|
+
*/
|
|
49
|
+
shouldEncrypt(): boolean;
|
|
50
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EncryptionService, never>;
|
|
51
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EncryptionService>;
|
|
52
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@techextensor/tab-core-utility",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.162",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^17.3.0",
|
|
6
6
|
"@angular/core": "^17.3.0",
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
"ngx-toastr": "^19.0.0",
|
|
10
10
|
"rxjs": "^7.8.1",
|
|
11
11
|
"idb": "^8.0.0",
|
|
12
|
-
"liquidjs": "^10.12.0"
|
|
12
|
+
"liquidjs": "^10.12.0",
|
|
13
|
+
"cypress": "^13.6.6",
|
|
14
|
+
"crypto-js": "^4.2.0"
|
|
13
15
|
},
|
|
14
16
|
"dependencies": {
|
|
15
17
|
"tslib": "^2.3.0"
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { InjectorService } from '../../core/http-client/injector.service';
|
|
2
|
-
import { API_URL } from '../../core/http-client/api-url.token';
|
|
3
|
-
export function getApiUrl() {
|
|
4
|
-
const injector = InjectorService.instance.getInjector();
|
|
5
|
-
return injector.get(API_URL);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFwaS11cmwuZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvdXRpbHMvZ2V0LWFwaS11cmwuZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUUvRCxNQUFNLFVBQVUsU0FBUztJQUN2QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC9pbmplY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IEFQSV9VUkwgfSBmcm9tICcuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS11cmwudG9rZW4nO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpVXJsKCk6IHN0cmluZyB7XG4gIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3JTZXJ2aWNlLmluc3RhbmNlLmdldEluamVjdG9yKCk7XG4gIHJldHVybiBpbmplY3Rvci5nZXQoQVBJX1VSTCk7XG59Il19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Injectable, Injector } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class InjectorService {
|
|
4
|
-
constructor(injector) {
|
|
5
|
-
this.injector = injector;
|
|
6
|
-
InjectorService.instance = this;
|
|
7
|
-
}
|
|
8
|
-
getInjector() {
|
|
9
|
-
return this.injector;
|
|
10
|
-
}
|
|
11
|
-
static { this.ɵfac = function InjectorService_Factory(t) { return new (t || InjectorService)(i0.ɵɵinject(i0.Injector)); }; }
|
|
12
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: InjectorService, factory: InjectorService.ɵfac, providedIn: 'root' }); }
|
|
13
|
-
}
|
|
14
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InjectorService, [{
|
|
15
|
-
type: Injectable,
|
|
16
|
-
args: [{
|
|
17
|
-
providedIn: 'root'
|
|
18
|
-
}]
|
|
19
|
-
}], () => [{ type: i0.Injector }], null); })();
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2NvcmUvaHR0cC1jbGllbnQvaW5qZWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLckQsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQyxlQUFlLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO2dGQVRVLGVBQWU7dUVBQWYsZUFBZSxXQUFmLGVBQWUsbUJBRmQsTUFBTTs7aUZBRVAsZUFBZTtjQUgzQixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBJbmplY3RvclNlcnZpY2Uge1xuICBzdGF0aWMgaW5zdGFuY2U6IEluamVjdG9yU2VydmljZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIEluamVjdG9yU2VydmljZS5pbnN0YW5jZSA9IHRoaXM7XG4gIH1cblxuICBnZXRJbmplY3RvcigpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XG4gIH1cbn0iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function getApiUrl(): string;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Injector } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class InjectorService {
|
|
4
|
-
private injector;
|
|
5
|
-
static instance: InjectorService;
|
|
6
|
-
constructor(injector: Injector);
|
|
7
|
-
getInjector(): Injector;
|
|
8
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<InjectorService, never>;
|
|
9
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<InjectorService>;
|
|
10
|
-
}
|