@quadrel-enterprise-ui/persistence 1.0.0 → 18.1.2
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/README.md +39 -0
- package/esm2022/lib/model/persistence-config.mjs +2 -0
- package/esm2022/lib/model/persistence-types.mjs +2 -0
- package/esm2022/lib/persistence-config.token.mjs +3 -0
- package/esm2022/lib/persistence.module.mjs +24 -0
- package/esm2022/lib/persistence.service.mjs +28 -0
- package/esm2022/lib/strategy/cookie-strategy/cookie-strategy.factory.mjs +44 -0
- package/esm2022/lib/strategy/cookie-strategy/cookie-strategy.mjs +68 -0
- package/esm2022/lib/strategy/persist-strategy.mjs +2 -0
- package/esm2022/lib/strategy/strategy-resolver.service.mjs +30 -0
- package/esm2022/lib/utils/stringifyer.mjs +13 -0
- package/esm2022/public-api.mjs +3 -0
- package/esm2022/quadrel-enterprise-ui-persistence.mjs +5 -0
- package/fesm2022/quadrel-enterprise-ui-persistence.mjs +194 -0
- package/fesm2022/quadrel-enterprise-ui-persistence.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/model/persistence-config.d.ts +18 -0
- package/lib/model/persistence-types.d.ts +2 -0
- package/lib/persistence-config.token.d.ts +3 -0
- package/lib/persistence.module.d.ts +9 -0
- package/lib/persistence.service.d.ts +12 -0
- package/lib/strategy/cookie-strategy/cookie-strategy.d.ts +26 -0
- package/lib/strategy/cookie-strategy/cookie-strategy.factory.d.ts +15 -0
- package/lib/strategy/persist-strategy.d.ts +22 -0
- package/lib/strategy/strategy-resolver.service.d.ts +13 -0
- package/lib/utils/stringifyer.d.ts +3 -0
- package/package.json +31 -9
- package/public-api.d.ts +2 -0
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# qd-persistence
|
|
2
|
+
|
|
3
|
+
This library was generated with [Nx](https://nx.dev).
|
|
4
|
+
|
|
5
|
+
QD Persistence saves all cookies under the domain '.bazg.admin.ch' unless your service runs on localhost.
|
|
6
|
+
|
|
7
|
+
## Development
|
|
8
|
+
|
|
9
|
+
Run `npm run start` or `nx serve` to start the test app for development. The test app integrates all libraries of the monorepo.
|
|
10
|
+
|
|
11
|
+
### Testing cookies
|
|
12
|
+
|
|
13
|
+
You can also test QD Persistence locally. If you run a service on localhost, all QD Persistence cookies will be saved on the domain 'localhost'.
|
|
14
|
+
|
|
15
|
+
## Build
|
|
16
|
+
|
|
17
|
+
Run `nx build qd-persistence` to build the project. The build artifacts will be stored in the `dist/libs/qd-persistence` directory. Use `--configuration production` for a production build.
|
|
18
|
+
|
|
19
|
+
## Running unit tests
|
|
20
|
+
|
|
21
|
+
Run `nx test qd-persistence` to execute the unit tests.
|
|
22
|
+
|
|
23
|
+
## Release
|
|
24
|
+
|
|
25
|
+
Releases can be made on a release branch with the following commands:
|
|
26
|
+
|
|
27
|
+
Run `nx release-patch qd-persistence` to create a patch release.
|
|
28
|
+
|
|
29
|
+
Run `nx release-minor qd-persistence` to create a minor release.
|
|
30
|
+
|
|
31
|
+
Run `nx release-major qd-persistence` to create a major release.
|
|
32
|
+
|
|
33
|
+
Run `nx prerelease qd-persistence` to create a beta release.
|
|
34
|
+
|
|
35
|
+
Run `nx premajor qd-persistence` to create a beta major release.
|
|
36
|
+
|
|
37
|
+
## Further help
|
|
38
|
+
|
|
39
|
+
To get more help on the NX CLI use `nx help` or go check out the documentation [NX CLI Commands](https://nx.dev/reference/commands).
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC1wZXJzaXN0ZW5jZS9zcmMvbGliL21vZGVsL3BlcnNpc3RlbmNlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUWRQZXJzaXN0U3RyYXRlZ3kgfSBmcm9tICcuL3BlcnNpc3RlbmNlLXR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBRZFBlcnNpc3RlbmNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIElkZW50aWZpZXJcbiAgICogQGV4YW1wbGUgUGFzc2FyXG4gICAqL1xuICBhcHBsaWNhdGlvbklkZW50aWZpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogRnJvbnRlbmQgSWRlbnRpZmllciAoVW5pcXVlIGlkZW50aWZpZXIgZm9yIGEgZnJvbnRlbmQgcHJvamVjdClcbiAgICogQGV4YW1wbGUgV2FyZW52ZXJrZWhyXG4gICAqL1xuICBmcm9udGVuZElkZW50aWZpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogUGVyc2lzdCBTdHJhdGVneVxuICAgKiAqIEBkZWZhdWx0OiBjb29raWVcbiAgICovXG4gIHBlcnNpc3RTdHJhdGVneT86IFFkUGVyc2lzdFN0cmF0ZWd5O1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UtdHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXBlcnNpc3RlbmNlL3NyYy9saWIvbW9kZWwvcGVyc2lzdGVuY2UtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFFkUGVyc2lzdFNjb3BlID0gJ3ByaXZhdGUnIHwgJ2FwcGxpY2F0aW9uJyB8ICdiYXpnJztcbmV4cG9ydCB0eXBlIFFkUGVyc2lzdFN0cmF0ZWd5ID0gJ2Nvb2tpZSc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const QD_PERSISTENCE_CONFIG = new InjectionToken('QD_PERSISTENCE_CONFIG');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UtY29uZmlnLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9xZC1wZXJzaXN0ZW5jZS9zcmMvbGliL3BlcnNpc3RlbmNlLWNvbmZpZy50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkUGVyc2lzdGVuY2VDb25maWcgfSBmcm9tICcuL21vZGVsL3BlcnNpc3RlbmNlLWNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBRRF9QRVJTSVNURU5DRV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48UWRQZXJzaXN0ZW5jZUNvbmZpZz4oJ1FEX1BFUlNJU1RFTkNFX0NPTkZJRycpO1xuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { QD_PERSISTENCE_CONFIG } from './persistence-config.token';
|
|
3
|
+
import { QdPersistenceService } from './persistence.service';
|
|
4
|
+
import { QdStrategyResolverService } from './strategy/strategy-resolver.service';
|
|
5
|
+
import { QdCookieStrategyFactory } from './strategy/cookie-strategy/cookie-strategy.factory';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class QdPersistenceModule {
|
|
8
|
+
static forRoot(config) {
|
|
9
|
+
return {
|
|
10
|
+
ngModule: QdPersistenceModule,
|
|
11
|
+
providers: [{ provide: QD_PERSISTENCE_CONFIG, useValue: config }]
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule });
|
|
16
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, providers: [QdPersistenceService, QdStrategyResolverService, QdCookieStrategyFactory] });
|
|
17
|
+
}
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, decorators: [{
|
|
19
|
+
type: NgModule,
|
|
20
|
+
args: [{
|
|
21
|
+
providers: [QdPersistenceService, QdStrategyResolverService, QdCookieStrategyFactory]
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9xZC1wZXJzaXN0ZW5jZS9zcmMvbGliL3BlcnNpc3RlbmNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7QUFLN0YsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQTJCO1FBQ3hDLE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztTQUNsRSxDQUFDO0lBQ0osQ0FBQzt1R0FOVSxtQkFBbUI7d0dBQW5CLG1CQUFtQjt3R0FBbkIsbUJBQW1CLGFBRm5CLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUM7OzJGQUUxRSxtQkFBbUI7a0JBSC9CLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUM7aUJBQ3RGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkUGVyc2lzdGVuY2VDb25maWcgfSBmcm9tICcuL21vZGVsL3BlcnNpc3RlbmNlLWNvbmZpZyc7XG5pbXBvcnQgeyBRRF9QRVJTSVNURU5DRV9DT05GSUcgfSBmcm9tICcuL3BlcnNpc3RlbmNlLWNvbmZpZy50b2tlbic7XG5pbXBvcnQgeyBRZFBlcnNpc3RlbmNlU2VydmljZSB9IGZyb20gJy4vcGVyc2lzdGVuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBRZFN0cmF0ZWd5UmVzb2x2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9zdHJhdGVneS9zdHJhdGVneS1yZXNvbHZlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkQ29va2llU3RyYXRlZ3lGYWN0b3J5IH0gZnJvbSAnLi9zdHJhdGVneS9jb29raWUtc3RyYXRlZ3kvY29va2llLXN0cmF0ZWd5LmZhY3RvcnknO1xuXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtRZFBlcnNpc3RlbmNlU2VydmljZSwgUWRTdHJhdGVneVJlc29sdmVyU2VydmljZSwgUWRDb29raWVTdHJhdGVneUZhY3RvcnldXG59KVxuZXhwb3J0IGNsYXNzIFFkUGVyc2lzdGVuY2VNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IFFkUGVyc2lzdGVuY2VDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFFkUGVyc2lzdGVuY2VNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFFkUGVyc2lzdGVuY2VNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IFFEX1BFUlNJU1RFTkNFX0NPTkZJRywgdXNlVmFsdWU6IGNvbmZpZyB9XVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { QdStrategyResolverService } from './strategy/strategy-resolver.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./strategy/strategy-resolver.service";
|
|
5
|
+
export class QdPersistenceService {
|
|
6
|
+
strategyResolverService;
|
|
7
|
+
constructor(strategyResolverService) {
|
|
8
|
+
this.strategyResolverService = strategyResolverService;
|
|
9
|
+
}
|
|
10
|
+
write(key, data, scope = 'bazg') {
|
|
11
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
12
|
+
strategy.setItem(key, data);
|
|
13
|
+
}
|
|
14
|
+
read(key, scope = 'bazg') {
|
|
15
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
16
|
+
return strategy.getItem(key);
|
|
17
|
+
}
|
|
18
|
+
delete(key, scope = 'bazg') {
|
|
19
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
20
|
+
strategy.removeItem(key);
|
|
21
|
+
}
|
|
22
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService, deps: [{ token: i1.QdStrategyResolverService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
23
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService });
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService, decorators: [{
|
|
26
|
+
type: Injectable
|
|
27
|
+
}], ctorParameters: () => [{ type: i1.QdStrategyResolverService }] });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdGVuY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtcGVyc2lzdGVuY2Uvc3JjL2xpYi9wZXJzaXN0ZW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7OztBQUlqRixNQUFNLE9BQU8sb0JBQW9CO0lBQ1g7SUFBcEIsWUFBb0IsdUJBQWtEO1FBQWxELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBMkI7SUFBRyxDQUFDO0lBRTFFLEtBQUssQ0FBSSxHQUFXLEVBQUUsSUFBTyxFQUFFLFFBQXdCLE1BQU07UUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3RCxRQUFRLENBQUMsT0FBTyxDQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxDQUFJLEdBQVcsRUFBRSxRQUF3QixNQUFNO1FBQ2pELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0QsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBVyxFQUFFLFFBQXdCLE1BQU07UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3RCxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7dUdBbkJVLG9CQUFvQjsyR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUWRTdHJhdGVneVJlc29sdmVyU2VydmljZSB9IGZyb20gJy4vc3RyYXRlZ3kvc3RyYXRlZ3ktcmVzb2x2ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBlcnNpc3RTY29wZSB9IGZyb20gJy4vbW9kZWwvcGVyc2lzdGVuY2UtdHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUWRQZXJzaXN0ZW5jZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0cmF0ZWd5UmVzb2x2ZXJTZXJ2aWNlOiBRZFN0cmF0ZWd5UmVzb2x2ZXJTZXJ2aWNlKSB7fVxuXG4gIHdyaXRlPFQ+KGtleTogc3RyaW5nLCBkYXRhOiBULCBzY29wZTogUWRQZXJzaXN0U2NvcGUgPSAnYmF6ZycpOiB2b2lkIHtcbiAgICBjb25zdCBzdHJhdGVneSA9IHRoaXMuc3RyYXRlZ3lSZXNvbHZlclNlcnZpY2UucmVzb2x2ZShzY29wZSk7XG5cbiAgICBzdHJhdGVneS5zZXRJdGVtPFQ+KGtleSwgZGF0YSk7XG4gIH1cblxuICByZWFkPFQ+KGtleTogc3RyaW5nLCBzY29wZTogUWRQZXJzaXN0U2NvcGUgPSAnYmF6ZycpOiBUIHwgbnVsbCB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLnN0cmF0ZWd5UmVzb2x2ZXJTZXJ2aWNlLnJlc29sdmUoc2NvcGUpO1xuXG4gICAgcmV0dXJuIHN0cmF0ZWd5LmdldEl0ZW08VD4oa2V5KTtcbiAgfVxuXG4gIGRlbGV0ZShrZXk6IHN0cmluZywgc2NvcGU6IFFkUGVyc2lzdFNjb3BlID0gJ2JhemcnKTogdm9pZCB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLnN0cmF0ZWd5UmVzb2x2ZXJTZXJ2aWNlLnJlc29sdmUoc2NvcGUpO1xuXG4gICAgc3RyYXRlZ3kucmVtb3ZlSXRlbShrZXkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
4
|
+
import { QdCookieStrategy } from './cookie-strategy';
|
|
5
|
+
import { QD_PERSISTENCE_CONFIG } from '../../persistence-config.token';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "ngx-cookie-service";
|
|
8
|
+
export class QdCookieStrategyFactory {
|
|
9
|
+
config;
|
|
10
|
+
cookieService;
|
|
11
|
+
document;
|
|
12
|
+
constructor(config, cookieService, document) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.cookieService = cookieService;
|
|
15
|
+
this.document = document;
|
|
16
|
+
}
|
|
17
|
+
getCookieStrategy(scope) {
|
|
18
|
+
return new QdCookieStrategy(this.getCookieName(scope), this.cookieService, document);
|
|
19
|
+
}
|
|
20
|
+
getCookieName(scope) {
|
|
21
|
+
switch (scope) {
|
|
22
|
+
case 'bazg':
|
|
23
|
+
return 'QD-BAZG';
|
|
24
|
+
case 'application':
|
|
25
|
+
return `QD-APPLICATION_${this.config.applicationIdentifier}`;
|
|
26
|
+
case 'private':
|
|
27
|
+
return `QD-PRIVATE_${this.config.applicationIdentifier}_${this.config.frontendIdentifier}`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory, deps: [{ token: QD_PERSISTENCE_CONFIG }, { token: i1.CookieService }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory });
|
|
32
|
+
}
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory, decorators: [{
|
|
34
|
+
type: Injectable
|
|
35
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
36
|
+
type: Inject,
|
|
37
|
+
args: [QD_PERSISTENCE_CONFIG]
|
|
38
|
+
}] }, { type: i1.CookieService }, { type: Document, decorators: [{
|
|
39
|
+
type: Optional
|
|
40
|
+
}, {
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [DOCUMENT]
|
|
43
|
+
}] }] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0cmF0ZWd5LmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXBlcnNpc3RlbmNlL3NyYy9saWIvc3RyYXRlZ3kvY29va2llLXN0cmF0ZWd5L2Nvb2tpZS1zdHJhdGVneS5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFNdkUsTUFBTSxPQUFPLHVCQUF1QjtJQUVPO0lBQy9CO0lBQzhCO0lBSHhDLFlBQ3lDLE1BQTJCLEVBQzFELGFBQTRCLEVBQ0UsUUFBbUI7UUFGbEIsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQ3hELENBQUM7SUFFSixpQkFBaUIsQ0FBQyxLQUFxQjtRQUNyQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBcUI7UUFDekMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssTUFBTTtnQkFDVCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLGFBQWE7Z0JBQ2hCLE9BQU8sa0JBQWtCLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvRCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxjQUFjLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9GLENBQUM7SUFDSCxDQUFDO3VHQXBCVSx1QkFBdUIsa0JBRXhCLHFCQUFxQiwwQ0FFVCxRQUFROzJHQUpuQix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMscUJBQXFCOzswQkFFNUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBRZENvb2tpZVN0cmF0ZWd5IH0gZnJvbSAnLi9jb29raWUtc3RyYXRlZ3knO1xuaW1wb3J0IHsgUURfUEVSU0lTVEVOQ0VfQ09ORklHIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2UtY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFFkUGVyc2lzdGVuY2VDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbC9wZXJzaXN0ZW5jZS1jb25maWcnO1xuaW1wb3J0IHsgUWRQZXJzaXN0U2NvcGUgfSBmcm9tICcuLi8uLi9tb2RlbC9wZXJzaXN0ZW5jZS10eXBlcyc7XG5pbXBvcnQgeyBRZFBlcnNpc3RTdHJhdGVneSB9IGZyb20gJy4uL3BlcnNpc3Qtc3RyYXRlZ3knO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUWRDb29raWVTdHJhdGVneUZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFFEX1BFUlNJU1RFTkNFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFFkUGVyc2lzdGVuY2VDb25maWcsXG4gICAgcHJpdmF0ZSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ/OiBEb2N1bWVudFxuICApIHt9XG5cbiAgZ2V0Q29va2llU3RyYXRlZ3koc2NvcGU6IFFkUGVyc2lzdFNjb3BlKTogUWRQZXJzaXN0U3RyYXRlZ3kge1xuICAgIHJldHVybiBuZXcgUWRDb29raWVTdHJhdGVneSh0aGlzLmdldENvb2tpZU5hbWUoc2NvcGUpLCB0aGlzLmNvb2tpZVNlcnZpY2UsIGRvY3VtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29va2llTmFtZShzY29wZTogUWRQZXJzaXN0U2NvcGUpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAoc2NvcGUpIHtcbiAgICAgIGNhc2UgJ2JhemcnOlxuICAgICAgICByZXR1cm4gJ1FELUJBWkcnO1xuICAgICAgY2FzZSAnYXBwbGljYXRpb24nOlxuICAgICAgICByZXR1cm4gYFFELUFQUExJQ0FUSU9OXyR7dGhpcy5jb25maWcuYXBwbGljYXRpb25JZGVudGlmaWVyfWA7XG4gICAgICBjYXNlICdwcml2YXRlJzpcbiAgICAgICAgcmV0dXJuIGBRRC1QUklWQVRFXyR7dGhpcy5jb25maWcuYXBwbGljYXRpb25JZGVudGlmaWVyfV8ke3RoaXMuY29uZmlnLmZyb250ZW5kSWRlbnRpZmllcn1gO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
+
import { Inject, Optional } from '@angular/core';
|
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
5
|
+
import { QdStringifyer } from '../../utils/stringifyer';
|
|
6
|
+
/**
|
|
7
|
+
* This strategy uses cookies to make the data visible between different subdomains of the host 'bazg.admin.ch'.
|
|
8
|
+
* In contrast, local storage would make the data only visible for a specific subdomain.
|
|
9
|
+
* If this strategy is used locally, the cookies will be saved for the domain 'localhost'.
|
|
10
|
+
* For the future another strategy is planned that saves the data in a backend service and that will also allow data
|
|
11
|
+
* to be shared between websites with different hosts.
|
|
12
|
+
*/
|
|
13
|
+
let QdCookieStrategy = class QdCookieStrategy {
|
|
14
|
+
cookieName;
|
|
15
|
+
cookieService;
|
|
16
|
+
document;
|
|
17
|
+
cookieExpiresDays = 365 * 10;
|
|
18
|
+
constructor(cookieName, cookieService, document) {
|
|
19
|
+
this.cookieName = cookieName;
|
|
20
|
+
this.cookieService = cookieService;
|
|
21
|
+
this.document = document;
|
|
22
|
+
}
|
|
23
|
+
get cookieDomain() {
|
|
24
|
+
if (this.document?.location?.hostname === 'localhost')
|
|
25
|
+
return 'localhost';
|
|
26
|
+
return '.bazg.admin.ch';
|
|
27
|
+
}
|
|
28
|
+
get persistedData() {
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(this.cookieService.get(this.cookieName));
|
|
31
|
+
if (typeof parsed !== 'object' || Array.isArray(parsed))
|
|
32
|
+
return {};
|
|
33
|
+
return parsed ?? {};
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
return {};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
persistData(data) {
|
|
40
|
+
this.cookieService.set(this.cookieName, JSON.stringify(data), this.cookieExpiresDays, '/', this.cookieDomain);
|
|
41
|
+
}
|
|
42
|
+
setItem(key, value) {
|
|
43
|
+
const data = this.persistedData;
|
|
44
|
+
data[key] = QdStringifyer.tryStringify(value);
|
|
45
|
+
this.persistData(data);
|
|
46
|
+
}
|
|
47
|
+
getItem(key) {
|
|
48
|
+
try {
|
|
49
|
+
return JSON.parse(this.persistedData[key]);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
return this.persistedData[key] ?? null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
removeItem(key) {
|
|
56
|
+
const data = this.persistedData;
|
|
57
|
+
delete data[key];
|
|
58
|
+
this.persistData(data);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
QdCookieStrategy = __decorate([
|
|
62
|
+
__param(2, Optional()),
|
|
63
|
+
__param(2, Inject(DOCUMENT)),
|
|
64
|
+
__metadata("design:paramtypes", [String, CookieService,
|
|
65
|
+
Document])
|
|
66
|
+
], QdCookieStrategy);
|
|
67
|
+
export { QdCookieStrategy };
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC1wZXJzaXN0ZW5jZS9zcmMvbGliL3N0cmF0ZWd5L2Nvb2tpZS1zdHJhdGVneS9jb29raWUtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3hEOzs7Ozs7R0FNRztBQUNILElBQWEsZ0JBQWdCLEdBQTdCLE1BQWEsZ0JBQWdCO0lBSWpCO0lBQ0E7SUFDOEI7SUFMaEMsaUJBQWlCLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVyQyxZQUNVLFVBQWtCLEVBQ2xCLGFBQTRCLEVBQ0UsUUFBbUI7UUFGakQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNFLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDeEQsQ0FBQztJQUVKLElBQVksWUFBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsS0FBSyxXQUFXO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDMUUsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztZQUVuRSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQztZQUVuRSxPQUFPLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXFCO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQsT0FBTyxDQUFJLEdBQVcsRUFBRSxLQUFRO1FBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUM7UUFFakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsT0FBTyxDQUFJLEdBQVc7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFTLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQVEsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQU8sSUFBSSxJQUFJLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQztDQUNGLENBQUE7QUFuRFksZ0JBQWdCO0lBTXhCLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFBRSxXQUFBLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTs2Q0FETixhQUFhO1FBQ2EsUUFBUTtHQU5oRCxnQkFBZ0IsQ0FtRDVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XG5pbXBvcnQgeyBRZFN0cmluZ2lmeWVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5naWZ5ZXInO1xuaW1wb3J0IHsgUWRQZXJzaXN0U3RyYXRlZ3kgfSBmcm9tICcuLi9wZXJzaXN0LXN0cmF0ZWd5JztcblxudHlwZSBRZFBlcnNpc3RlZERhdGEgPSB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcblxuLyoqXG4gKiBUaGlzIHN0cmF0ZWd5IHVzZXMgY29va2llcyB0byBtYWtlIHRoZSBkYXRhIHZpc2libGUgYmV0d2VlbiBkaWZmZXJlbnQgc3ViZG9tYWlucyBvZiB0aGUgaG9zdCAnYmF6Zy5hZG1pbi5jaCcuXG4gKiBJbiBjb250cmFzdCwgbG9jYWwgc3RvcmFnZSB3b3VsZCBtYWtlIHRoZSBkYXRhIG9ubHkgdmlzaWJsZSBmb3IgYSBzcGVjaWZpYyBzdWJkb21haW4uXG4gKiBJZiB0aGlzIHN0cmF0ZWd5IGlzIHVzZWQgbG9jYWxseSwgdGhlIGNvb2tpZXMgd2lsbCBiZSBzYXZlZCBmb3IgdGhlIGRvbWFpbiAnbG9jYWxob3N0Jy5cbiAqIEZvciB0aGUgZnV0dXJlIGFub3RoZXIgc3RyYXRlZ3kgaXMgcGxhbm5lZCB0aGF0IHNhdmVzIHRoZSBkYXRhIGluIGEgYmFja2VuZCBzZXJ2aWNlIGFuZCB0aGF0IHdpbGwgYWxzbyBhbGxvdyBkYXRhXG4gKiB0byBiZSBzaGFyZWQgYmV0d2VlbiB3ZWJzaXRlcyB3aXRoIGRpZmZlcmVudCBob3N0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFFkQ29va2llU3RyYXRlZ3kgaW1wbGVtZW50cyBRZFBlcnNpc3RTdHJhdGVneSB7XG4gIHByaXZhdGUgY29va2llRXhwaXJlc0RheXMgPSAzNjUgKiAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvb2tpZU5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudD86IERvY3VtZW50XG4gICkge31cblxuICBwcml2YXRlIGdldCBjb29raWVEb21haW4oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudD8ubG9jYXRpb24/Lmhvc3RuYW1lID09PSAnbG9jYWxob3N0JykgcmV0dXJuICdsb2NhbGhvc3QnO1xuICAgIHJldHVybiAnLmJhemcuYWRtaW4uY2gnO1xuICB9XG5cbiAgZ2V0IHBlcnNpc3RlZERhdGEoKTogUWRQZXJzaXN0ZWREYXRhIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyc2VkID0gSlNPTi5wYXJzZSh0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KHRoaXMuY29va2llTmFtZSkpO1xuXG4gICAgICBpZiAodHlwZW9mIHBhcnNlZCAhPT0gJ29iamVjdCcgfHwgQXJyYXkuaXNBcnJheShwYXJzZWQpKSByZXR1cm4ge307XG5cbiAgICAgIHJldHVybiBwYXJzZWQgPz8ge307XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGVyc2lzdERhdGEoZGF0YTogUWRQZXJzaXN0ZWREYXRhKSB7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldCh0aGlzLmNvb2tpZU5hbWUsIEpTT04uc3RyaW5naWZ5KGRhdGEpLCB0aGlzLmNvb2tpZUV4cGlyZXNEYXlzLCAnLycsIHRoaXMuY29va2llRG9tYWluKTtcbiAgfVxuXG4gIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9IHRoaXMucGVyc2lzdGVkRGF0YTtcbiAgICBkYXRhW2tleV0gPSBRZFN0cmluZ2lmeWVyLnRyeVN0cmluZ2lmeTxUPih2YWx1ZSk7XG5cbiAgICB0aGlzLnBlcnNpc3REYXRhKGRhdGEpO1xuICB9XG5cbiAgZ2V0SXRlbTxUPihrZXk6IHN0cmluZyk6IFQgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoPHN0cmluZz50aGlzLnBlcnNpc3RlZERhdGFba2V5XSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuICh0aGlzLnBlcnNpc3RlZERhdGFba2V5XSBhcyBUKSA/PyBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5wZXJzaXN0ZWREYXRhO1xuICAgIGRlbGV0ZSBkYXRhW2tleV07XG5cbiAgICB0aGlzLnBlcnNpc3REYXRhKGRhdGEpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdC1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtcGVyc2lzdGVuY2Uvc3JjL2xpYi9zdHJhdGVneS9wZXJzaXN0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc3RyYXRlZ3kgZm9yIHBlcnNpc3RpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBlcnNpc3RTdHJhdGVneSB7XG4gIC8qKlxuICAgKiBTZXQgZGF0YS5cbiAgICogQHBhcmFtIGtleSBLZXkgZm9yIHRoZSBkYXRhXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgZGF0YSBpdHNlbGZcbiAgICovXG4gIHNldEl0ZW08VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZDtcblxuICAvKipcbiAgICogR2V0cyBkYXRhIGZvciBhIHNwZWNpZmljIGtleS5cbiAgICogQHBhcmFtIGtleSBLZXkgb2YgdGhlIGRhdGFcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgZGF0YSBvciBudWxsIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGdldEl0ZW08VD4oa2V5OiBzdHJpbmcpOiBUIHwgbnVsbDtcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgZW50cnkgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKiBAcGFyYW0ga2V5IEtleSBvZiB0aGUgZW50cnlcbiAgICovXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { QD_PERSISTENCE_CONFIG } from '../persistence-config.token';
|
|
3
|
+
import { QdCookieStrategyFactory } from './cookie-strategy/cookie-strategy.factory';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./cookie-strategy/cookie-strategy.factory";
|
|
6
|
+
export class QdStrategyResolverService {
|
|
7
|
+
config;
|
|
8
|
+
cookieStrategyFactory;
|
|
9
|
+
constructor(config, cookieStrategyFactory) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.cookieStrategyFactory = cookieStrategyFactory;
|
|
12
|
+
}
|
|
13
|
+
resolve(scope) {
|
|
14
|
+
/* istanbul ignore next (remove comment when another strategy is added) */
|
|
15
|
+
switch (this.config.persistStrategy) {
|
|
16
|
+
case 'cookie':
|
|
17
|
+
default:
|
|
18
|
+
return this.cookieStrategyFactory.getCookieStrategy(scope);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService, deps: [{ token: QD_PERSISTENCE_CONFIG }, { token: i1.QdCookieStrategyFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService });
|
|
23
|
+
}
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
27
|
+
type: Inject,
|
|
28
|
+
args: [QD_PERSISTENCE_CONFIG]
|
|
29
|
+
}] }, { type: i1.QdCookieStrategyFactory }] });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3ktcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtcGVyc2lzdGVuY2Uvc3JjL2xpYi9zdHJhdGVneS9zdHJhdGVneS1yZXNvbHZlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRXBFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7QUFHcEYsTUFBTSxPQUFPLHlCQUF5QjtJQUVLO0lBQy9CO0lBRlYsWUFDeUMsTUFBMkIsRUFDMUQscUJBQThDO1FBRGYsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFDMUQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF5QjtJQUNyRCxDQUFDO0lBRUosT0FBTyxDQUFDLEtBQXFCO1FBQzNCLDBFQUEwRTtRQUMxRSxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDcEMsS0FBSyxRQUFRLENBQUM7WUFDZDtnQkFDRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQzt1R0FiVSx5QkFBeUIsa0JBRTFCLHFCQUFxQjsyR0FGcEIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUWRQZXJzaXN0U2NvcGUgfSBmcm9tICcuLi9tb2RlbC9wZXJzaXN0ZW5jZS10eXBlcyc7XG5pbXBvcnQgeyBRZFBlcnNpc3RTdHJhdGVneSB9IGZyb20gJy4vcGVyc2lzdC1zdHJhdGVneSc7XG5pbXBvcnQgeyBRRF9QRVJTSVNURU5DRV9DT05GSUcgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZS1jb25maWcudG9rZW4nO1xuaW1wb3J0IHsgUWRQZXJzaXN0ZW5jZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL3BlcnNpc3RlbmNlLWNvbmZpZyc7XG5pbXBvcnQgeyBRZENvb2tpZVN0cmF0ZWd5RmFjdG9yeSB9IGZyb20gJy4vY29va2llLXN0cmF0ZWd5L2Nvb2tpZS1zdHJhdGVneS5mYWN0b3J5JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFFkU3RyYXRlZ3lSZXNvbHZlclNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFFEX1BFUlNJU1RFTkNFX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFFkUGVyc2lzdGVuY2VDb25maWcsXG4gICAgcHJpdmF0ZSBjb29raWVTdHJhdGVneUZhY3Rvcnk6IFFkQ29va2llU3RyYXRlZ3lGYWN0b3J5XG4gICkge31cblxuICByZXNvbHZlKHNjb3BlOiBRZFBlcnNpc3RTY29wZSk6IFFkUGVyc2lzdFN0cmF0ZWd5IHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAocmVtb3ZlIGNvbW1lbnQgd2hlbiBhbm90aGVyIHN0cmF0ZWd5IGlzIGFkZGVkKSAqL1xuICAgIHN3aXRjaCAodGhpcy5jb25maWcucGVyc2lzdFN0cmF0ZWd5KSB7XG4gICAgICBjYXNlICdjb29raWUnOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY29va2llU3RyYXRlZ3lGYWN0b3J5LmdldENvb2tpZVN0cmF0ZWd5KHNjb3BlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class QdStringifyer {
|
|
2
|
+
static tryStringify(value) {
|
|
3
|
+
let data = '';
|
|
4
|
+
if (['object', 'boolean', 'number'].includes(typeof value)) {
|
|
5
|
+
data = JSON.stringify(value);
|
|
6
|
+
}
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
data = value;
|
|
9
|
+
}
|
|
10
|
+
return data;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5naWZ5ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXBlcnNpc3RlbmNlL3NyYy9saWIvdXRpbHMvc3RyaW5naWZ5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGFBQWE7SUFDeEIsTUFBTSxDQUFDLFlBQVksQ0FBSSxLQUFRO1FBQzdCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0QsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBRZFN0cmluZ2lmeWVyIHtcbiAgc3RhdGljIHRyeVN0cmluZ2lmeTxUPih2YWx1ZTogVCk6IHN0cmluZyB7XG4gICAgbGV0IGRhdGEgPSAnJztcblxuICAgIGlmIChbJ29iamVjdCcsICdib29sZWFuJywgJ251bWJlciddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSkpIHtcbiAgICAgIGRhdGEgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRhdGEgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './lib/persistence.module';
|
|
2
|
+
export * from './lib/persistence.service';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvcWQtcGVyc2lzdGVuY2Uvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvcGVyc2lzdGVuY2UubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BlcnNpc3RlbmNlLnNlcnZpY2UnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVhZHJlbC1lbnRlcnByaXNlLXVpLXBlcnNpc3RlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9xZC1wZXJzaXN0ZW5jZS9zcmMvcXVhZHJlbC1lbnRlcnByaXNlLXVpLXBlcnNpc3RlbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Optional, Inject, Injectable, NgModule } from '@angular/core';
|
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
|
+
import * as i1 from 'ngx-cookie-service';
|
|
5
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
6
|
+
import { __decorate, __param, __metadata } from 'tslib';
|
|
7
|
+
|
|
8
|
+
const QD_PERSISTENCE_CONFIG = new InjectionToken('QD_PERSISTENCE_CONFIG');
|
|
9
|
+
|
|
10
|
+
class QdStringifyer {
|
|
11
|
+
static tryStringify(value) {
|
|
12
|
+
let data = '';
|
|
13
|
+
if (['object', 'boolean', 'number'].includes(typeof value)) {
|
|
14
|
+
data = JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
if (typeof value === 'string') {
|
|
17
|
+
data = value;
|
|
18
|
+
}
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* This strategy uses cookies to make the data visible between different subdomains of the host 'bazg.admin.ch'.
|
|
25
|
+
* In contrast, local storage would make the data only visible for a specific subdomain.
|
|
26
|
+
* If this strategy is used locally, the cookies will be saved for the domain 'localhost'.
|
|
27
|
+
* For the future another strategy is planned that saves the data in a backend service and that will also allow data
|
|
28
|
+
* to be shared between websites with different hosts.
|
|
29
|
+
*/
|
|
30
|
+
let QdCookieStrategy = class QdCookieStrategy {
|
|
31
|
+
cookieName;
|
|
32
|
+
cookieService;
|
|
33
|
+
document;
|
|
34
|
+
cookieExpiresDays = 365 * 10;
|
|
35
|
+
constructor(cookieName, cookieService, document) {
|
|
36
|
+
this.cookieName = cookieName;
|
|
37
|
+
this.cookieService = cookieService;
|
|
38
|
+
this.document = document;
|
|
39
|
+
}
|
|
40
|
+
get cookieDomain() {
|
|
41
|
+
if (this.document?.location?.hostname === 'localhost')
|
|
42
|
+
return 'localhost';
|
|
43
|
+
return '.bazg.admin.ch';
|
|
44
|
+
}
|
|
45
|
+
get persistedData() {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(this.cookieService.get(this.cookieName));
|
|
48
|
+
if (typeof parsed !== 'object' || Array.isArray(parsed))
|
|
49
|
+
return {};
|
|
50
|
+
return parsed ?? {};
|
|
51
|
+
}
|
|
52
|
+
catch (e) {
|
|
53
|
+
return {};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
persistData(data) {
|
|
57
|
+
this.cookieService.set(this.cookieName, JSON.stringify(data), this.cookieExpiresDays, '/', this.cookieDomain);
|
|
58
|
+
}
|
|
59
|
+
setItem(key, value) {
|
|
60
|
+
const data = this.persistedData;
|
|
61
|
+
data[key] = QdStringifyer.tryStringify(value);
|
|
62
|
+
this.persistData(data);
|
|
63
|
+
}
|
|
64
|
+
getItem(key) {
|
|
65
|
+
try {
|
|
66
|
+
return JSON.parse(this.persistedData[key]);
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
return this.persistedData[key] ?? null;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
removeItem(key) {
|
|
73
|
+
const data = this.persistedData;
|
|
74
|
+
delete data[key];
|
|
75
|
+
this.persistData(data);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
QdCookieStrategy = __decorate([
|
|
79
|
+
__param(2, Optional()),
|
|
80
|
+
__param(2, Inject(DOCUMENT)),
|
|
81
|
+
__metadata("design:paramtypes", [String, CookieService,
|
|
82
|
+
Document])
|
|
83
|
+
], QdCookieStrategy);
|
|
84
|
+
|
|
85
|
+
class QdCookieStrategyFactory {
|
|
86
|
+
config;
|
|
87
|
+
cookieService;
|
|
88
|
+
document;
|
|
89
|
+
constructor(config, cookieService, document) {
|
|
90
|
+
this.config = config;
|
|
91
|
+
this.cookieService = cookieService;
|
|
92
|
+
this.document = document;
|
|
93
|
+
}
|
|
94
|
+
getCookieStrategy(scope) {
|
|
95
|
+
return new QdCookieStrategy(this.getCookieName(scope), this.cookieService, document);
|
|
96
|
+
}
|
|
97
|
+
getCookieName(scope) {
|
|
98
|
+
switch (scope) {
|
|
99
|
+
case 'bazg':
|
|
100
|
+
return 'QD-BAZG';
|
|
101
|
+
case 'application':
|
|
102
|
+
return `QD-APPLICATION_${this.config.applicationIdentifier}`;
|
|
103
|
+
case 'private':
|
|
104
|
+
return `QD-PRIVATE_${this.config.applicationIdentifier}_${this.config.frontendIdentifier}`;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory, deps: [{ token: QD_PERSISTENCE_CONFIG }, { token: i1.CookieService }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
108
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory });
|
|
109
|
+
}
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdCookieStrategyFactory, decorators: [{
|
|
111
|
+
type: Injectable
|
|
112
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
113
|
+
type: Inject,
|
|
114
|
+
args: [QD_PERSISTENCE_CONFIG]
|
|
115
|
+
}] }, { type: i1.CookieService }, { type: Document, decorators: [{
|
|
116
|
+
type: Optional
|
|
117
|
+
}, {
|
|
118
|
+
type: Inject,
|
|
119
|
+
args: [DOCUMENT]
|
|
120
|
+
}] }] });
|
|
121
|
+
|
|
122
|
+
class QdStrategyResolverService {
|
|
123
|
+
config;
|
|
124
|
+
cookieStrategyFactory;
|
|
125
|
+
constructor(config, cookieStrategyFactory) {
|
|
126
|
+
this.config = config;
|
|
127
|
+
this.cookieStrategyFactory = cookieStrategyFactory;
|
|
128
|
+
}
|
|
129
|
+
resolve(scope) {
|
|
130
|
+
/* istanbul ignore next (remove comment when another strategy is added) */
|
|
131
|
+
switch (this.config.persistStrategy) {
|
|
132
|
+
case 'cookie':
|
|
133
|
+
default:
|
|
134
|
+
return this.cookieStrategyFactory.getCookieStrategy(scope);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService, deps: [{ token: QD_PERSISTENCE_CONFIG }, { token: QdCookieStrategyFactory }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
138
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService });
|
|
139
|
+
}
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdStrategyResolverService, decorators: [{
|
|
141
|
+
type: Injectable
|
|
142
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
143
|
+
type: Inject,
|
|
144
|
+
args: [QD_PERSISTENCE_CONFIG]
|
|
145
|
+
}] }, { type: QdCookieStrategyFactory }] });
|
|
146
|
+
|
|
147
|
+
class QdPersistenceService {
|
|
148
|
+
strategyResolverService;
|
|
149
|
+
constructor(strategyResolverService) {
|
|
150
|
+
this.strategyResolverService = strategyResolverService;
|
|
151
|
+
}
|
|
152
|
+
write(key, data, scope = 'bazg') {
|
|
153
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
154
|
+
strategy.setItem(key, data);
|
|
155
|
+
}
|
|
156
|
+
read(key, scope = 'bazg') {
|
|
157
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
158
|
+
return strategy.getItem(key);
|
|
159
|
+
}
|
|
160
|
+
delete(key, scope = 'bazg') {
|
|
161
|
+
const strategy = this.strategyResolverService.resolve(scope);
|
|
162
|
+
strategy.removeItem(key);
|
|
163
|
+
}
|
|
164
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService, deps: [{ token: QdStrategyResolverService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
165
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService });
|
|
166
|
+
}
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceService, decorators: [{
|
|
168
|
+
type: Injectable
|
|
169
|
+
}], ctorParameters: () => [{ type: QdStrategyResolverService }] });
|
|
170
|
+
|
|
171
|
+
class QdPersistenceModule {
|
|
172
|
+
static forRoot(config) {
|
|
173
|
+
return {
|
|
174
|
+
ngModule: QdPersistenceModule,
|
|
175
|
+
providers: [{ provide: QD_PERSISTENCE_CONFIG, useValue: config }]
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
179
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule });
|
|
180
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, providers: [QdPersistenceService, QdStrategyResolverService, QdCookieStrategyFactory] });
|
|
181
|
+
}
|
|
182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPersistenceModule, decorators: [{
|
|
183
|
+
type: NgModule,
|
|
184
|
+
args: [{
|
|
185
|
+
providers: [QdPersistenceService, QdStrategyResolverService, QdCookieStrategyFactory]
|
|
186
|
+
}]
|
|
187
|
+
}] });
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Generated bundle index. Do not edit.
|
|
191
|
+
*/
|
|
192
|
+
|
|
193
|
+
export { QdPersistenceModule, QdPersistenceService };
|
|
194
|
+
//# sourceMappingURL=quadrel-enterprise-ui-persistence.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quadrel-enterprise-ui-persistence.mjs","sources":["../../../../libs/qd-persistence/src/lib/persistence-config.token.ts","../../../../libs/qd-persistence/src/lib/utils/stringifyer.ts","../../../../libs/qd-persistence/src/lib/strategy/cookie-strategy/cookie-strategy.ts","../../../../libs/qd-persistence/src/lib/strategy/cookie-strategy/cookie-strategy.factory.ts","../../../../libs/qd-persistence/src/lib/strategy/strategy-resolver.service.ts","../../../../libs/qd-persistence/src/lib/persistence.service.ts","../../../../libs/qd-persistence/src/lib/persistence.module.ts","../../../../libs/qd-persistence/src/quadrel-enterprise-ui-persistence.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { QdPersistenceConfig } from './model/persistence-config';\n\nexport const QD_PERSISTENCE_CONFIG = new InjectionToken<QdPersistenceConfig>('QD_PERSISTENCE_CONFIG');\n","export class QdStringifyer {\n static tryStringify<T>(value: T): string {\n let data = '';\n\n if (['object', 'boolean', 'number'].includes(typeof value)) {\n data = JSON.stringify(value);\n }\n\n if (typeof value === 'string') {\n data = value;\n }\n\n return data;\n }\n}\n","import { Inject, Optional } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\nimport { QdStringifyer } from '../../utils/stringifyer';\nimport { QdPersistStrategy } from '../persist-strategy';\n\ntype QdPersistedData = { [key: string]: unknown };\n\n/**\n * This strategy uses cookies to make the data visible between different subdomains of the host 'bazg.admin.ch'.\n * In contrast, local storage would make the data only visible for a specific subdomain.\n * If this strategy is used locally, the cookies will be saved for the domain 'localhost'.\n * For the future another strategy is planned that saves the data in a backend service and that will also allow data\n * to be shared between websites with different hosts.\n */\nexport class QdCookieStrategy implements QdPersistStrategy {\n private cookieExpiresDays = 365 * 10;\n\n constructor(\n private cookieName: string,\n private cookieService: CookieService,\n @Optional() @Inject(DOCUMENT) private document?: Document\n ) {}\n\n private get cookieDomain(): string {\n if (this.document?.location?.hostname === 'localhost') return 'localhost';\n return '.bazg.admin.ch';\n }\n\n get persistedData(): QdPersistedData {\n try {\n const parsed = JSON.parse(this.cookieService.get(this.cookieName));\n\n if (typeof parsed !== 'object' || Array.isArray(parsed)) return {};\n\n return parsed ?? {};\n } catch (e) {\n return {};\n }\n }\n\n private persistData(data: QdPersistedData) {\n this.cookieService.set(this.cookieName, JSON.stringify(data), this.cookieExpiresDays, '/', this.cookieDomain);\n }\n\n setItem<T>(key: string, value: T): void {\n const data = this.persistedData;\n data[key] = QdStringifyer.tryStringify<T>(value);\n\n this.persistData(data);\n }\n\n getItem<T>(key: string): T | null {\n try {\n return JSON.parse(<string>this.persistedData[key]);\n } catch (e) {\n return (this.persistedData[key] as T) ?? null;\n }\n }\n\n removeItem(key: string): void {\n const data = this.persistedData;\n delete data[key];\n\n this.persistData(data);\n }\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { CookieService } from 'ngx-cookie-service';\nimport { QdCookieStrategy } from './cookie-strategy';\nimport { QD_PERSISTENCE_CONFIG } from '../../persistence-config.token';\nimport { QdPersistenceConfig } from '../../model/persistence-config';\nimport { QdPersistScope } from '../../model/persistence-types';\nimport { QdPersistStrategy } from '../persist-strategy';\n\n@Injectable()\nexport class QdCookieStrategyFactory {\n constructor(\n @Inject(QD_PERSISTENCE_CONFIG) private config: QdPersistenceConfig,\n private cookieService: CookieService,\n @Optional() @Inject(DOCUMENT) private document?: Document\n ) {}\n\n getCookieStrategy(scope: QdPersistScope): QdPersistStrategy {\n return new QdCookieStrategy(this.getCookieName(scope), this.cookieService, document);\n }\n\n private getCookieName(scope: QdPersistScope): string {\n switch (scope) {\n case 'bazg':\n return 'QD-BAZG';\n case 'application':\n return `QD-APPLICATION_${this.config.applicationIdentifier}`;\n case 'private':\n return `QD-PRIVATE_${this.config.applicationIdentifier}_${this.config.frontendIdentifier}`;\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { QdPersistScope } from '../model/persistence-types';\nimport { QdPersistStrategy } from './persist-strategy';\nimport { QD_PERSISTENCE_CONFIG } from '../persistence-config.token';\nimport { QdPersistenceConfig } from '../model/persistence-config';\nimport { QdCookieStrategyFactory } from './cookie-strategy/cookie-strategy.factory';\n\n@Injectable()\nexport class QdStrategyResolverService {\n constructor(\n @Inject(QD_PERSISTENCE_CONFIG) private config: QdPersistenceConfig,\n private cookieStrategyFactory: QdCookieStrategyFactory\n ) {}\n\n resolve(scope: QdPersistScope): QdPersistStrategy {\n /* istanbul ignore next (remove comment when another strategy is added) */\n switch (this.config.persistStrategy) {\n case 'cookie':\n default:\n return this.cookieStrategyFactory.getCookieStrategy(scope);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { QdStrategyResolverService } from './strategy/strategy-resolver.service';\nimport { QdPersistScope } from './model/persistence-types';\n\n@Injectable()\nexport class QdPersistenceService {\n constructor(private strategyResolverService: QdStrategyResolverService) {}\n\n write<T>(key: string, data: T, scope: QdPersistScope = 'bazg'): void {\n const strategy = this.strategyResolverService.resolve(scope);\n\n strategy.setItem<T>(key, data);\n }\n\n read<T>(key: string, scope: QdPersistScope = 'bazg'): T | null {\n const strategy = this.strategyResolverService.resolve(scope);\n\n return strategy.getItem<T>(key);\n }\n\n delete(key: string, scope: QdPersistScope = 'bazg'): void {\n const strategy = this.strategyResolverService.resolve(scope);\n\n strategy.removeItem(key);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { QdPersistenceConfig } from './model/persistence-config';\nimport { QD_PERSISTENCE_CONFIG } from './persistence-config.token';\nimport { QdPersistenceService } from './persistence.service';\nimport { QdStrategyResolverService } from './strategy/strategy-resolver.service';\nimport { QdCookieStrategyFactory } from './strategy/cookie-strategy/cookie-strategy.factory';\n\n@NgModule({\n providers: [QdPersistenceService, QdStrategyResolverService, QdCookieStrategyFactory]\n})\nexport class QdPersistenceModule {\n static forRoot(config: QdPersistenceConfig): ModuleWithProviders<QdPersistenceModule> {\n return {\n ngModule: QdPersistenceModule,\n providers: [{ provide: QD_PERSISTENCE_CONFIG, useValue: config }]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.QdCookieStrategyFactory","i1.QdStrategyResolverService"],"mappings":"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"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { QdPersistStrategy } from './persistence-types';
|
|
2
|
+
export interface QdPersistenceConfig {
|
|
3
|
+
/**
|
|
4
|
+
* Application Identifier
|
|
5
|
+
* @example Passar
|
|
6
|
+
*/
|
|
7
|
+
applicationIdentifier: string;
|
|
8
|
+
/**
|
|
9
|
+
* Frontend Identifier (Unique identifier for a frontend project)
|
|
10
|
+
* @example Warenverkehr
|
|
11
|
+
*/
|
|
12
|
+
frontendIdentifier: string;
|
|
13
|
+
/**
|
|
14
|
+
* Persist Strategy
|
|
15
|
+
* * @default: cookie
|
|
16
|
+
*/
|
|
17
|
+
persistStrategy?: QdPersistStrategy;
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import { QdPersistenceConfig } from './model/persistence-config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class QdPersistenceModule {
|
|
5
|
+
static forRoot(config: QdPersistenceConfig): ModuleWithProviders<QdPersistenceModule>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdPersistenceModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<QdPersistenceModule, never, never, never>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<QdPersistenceModule>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { QdStrategyResolverService } from './strategy/strategy-resolver.service';
|
|
2
|
+
import { QdPersistScope } from './model/persistence-types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class QdPersistenceService {
|
|
5
|
+
private strategyResolverService;
|
|
6
|
+
constructor(strategyResolverService: QdStrategyResolverService);
|
|
7
|
+
write<T>(key: string, data: T, scope?: QdPersistScope): void;
|
|
8
|
+
read<T>(key: string, scope?: QdPersistScope): T | null;
|
|
9
|
+
delete(key: string, scope?: QdPersistScope): void;
|
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdPersistenceService, never>;
|
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<QdPersistenceService>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
2
|
+
import { QdPersistStrategy } from '../persist-strategy';
|
|
3
|
+
type QdPersistedData = {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* This strategy uses cookies to make the data visible between different subdomains of the host 'bazg.admin.ch'.
|
|
8
|
+
* In contrast, local storage would make the data only visible for a specific subdomain.
|
|
9
|
+
* If this strategy is used locally, the cookies will be saved for the domain 'localhost'.
|
|
10
|
+
* For the future another strategy is planned that saves the data in a backend service and that will also allow data
|
|
11
|
+
* to be shared between websites with different hosts.
|
|
12
|
+
*/
|
|
13
|
+
export declare class QdCookieStrategy implements QdPersistStrategy {
|
|
14
|
+
private cookieName;
|
|
15
|
+
private cookieService;
|
|
16
|
+
private document?;
|
|
17
|
+
private cookieExpiresDays;
|
|
18
|
+
constructor(cookieName: string, cookieService: CookieService, document?: Document | undefined);
|
|
19
|
+
private get cookieDomain();
|
|
20
|
+
get persistedData(): QdPersistedData;
|
|
21
|
+
private persistData;
|
|
22
|
+
setItem<T>(key: string, value: T): void;
|
|
23
|
+
getItem<T>(key: string): T | null;
|
|
24
|
+
removeItem(key: string): void;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CookieService } from 'ngx-cookie-service';
|
|
2
|
+
import { QdPersistenceConfig } from '../../model/persistence-config';
|
|
3
|
+
import { QdPersistScope } from '../../model/persistence-types';
|
|
4
|
+
import { QdPersistStrategy } from '../persist-strategy';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class QdCookieStrategyFactory {
|
|
7
|
+
private config;
|
|
8
|
+
private cookieService;
|
|
9
|
+
private document?;
|
|
10
|
+
constructor(config: QdPersistenceConfig, cookieService: CookieService, document?: Document | undefined);
|
|
11
|
+
getCookieStrategy(scope: QdPersistScope): QdPersistStrategy;
|
|
12
|
+
private getCookieName;
|
|
13
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdCookieStrategyFactory, [null, null, { optional: true; }]>;
|
|
14
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<QdCookieStrategyFactory>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A strategy for persisting data.
|
|
3
|
+
*/
|
|
4
|
+
export interface QdPersistStrategy {
|
|
5
|
+
/**
|
|
6
|
+
* Set data.
|
|
7
|
+
* @param key Key for the data
|
|
8
|
+
* @param value The data itself
|
|
9
|
+
*/
|
|
10
|
+
setItem<T>(key: string, value: T): void;
|
|
11
|
+
/**
|
|
12
|
+
* Gets data for a specific key.
|
|
13
|
+
* @param key Key of the data
|
|
14
|
+
* @returns Returns the data or null if not found.
|
|
15
|
+
*/
|
|
16
|
+
getItem<T>(key: string): T | null;
|
|
17
|
+
/**
|
|
18
|
+
* Removes the entry with the given key.
|
|
19
|
+
* @param key Key of the entry
|
|
20
|
+
*/
|
|
21
|
+
removeItem(key: string): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { QdPersistScope } from '../model/persistence-types';
|
|
2
|
+
import { QdPersistStrategy } from './persist-strategy';
|
|
3
|
+
import { QdPersistenceConfig } from '../model/persistence-config';
|
|
4
|
+
import { QdCookieStrategyFactory } from './cookie-strategy/cookie-strategy.factory';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class QdStrategyResolverService {
|
|
7
|
+
private config;
|
|
8
|
+
private cookieStrategyFactory;
|
|
9
|
+
constructor(config: QdPersistenceConfig, cookieStrategyFactory: QdCookieStrategyFactory);
|
|
10
|
+
resolve(scope: QdPersistScope): QdPersistStrategy;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QdStrategyResolverService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<QdStrategyResolverService>;
|
|
13
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quadrel-enterprise-ui/persistence",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "",
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
"
|
|
8
|
-
},
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
"version": "18.1.2",
|
|
4
|
+
"description": "Library for the persistence of data",
|
|
5
|
+
"peerDependencies": {
|
|
6
|
+
"@angular/common": "~18.2.9",
|
|
7
|
+
"@angular/core": "~18.2.9"
|
|
8
|
+
},
|
|
9
|
+
"dependencies": {
|
|
10
|
+
"tslib": "^2.6.3",
|
|
11
|
+
"ngx-cookie-service": "^18.0.0"
|
|
12
|
+
},
|
|
13
|
+
"jestSonar": {
|
|
14
|
+
"reportPath": "../../coverage/libs/qd-persistence/",
|
|
15
|
+
"reportFile": "sqr.xml",
|
|
16
|
+
"indent": 4,
|
|
17
|
+
"sonar56x": true
|
|
18
|
+
},
|
|
19
|
+
"module": "fesm2022/quadrel-enterprise-ui-persistence.mjs",
|
|
20
|
+
"typings": "index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
"./package.json": {
|
|
23
|
+
"default": "./package.json"
|
|
24
|
+
},
|
|
25
|
+
".": {
|
|
26
|
+
"types": "./index.d.ts",
|
|
27
|
+
"esm2022": "./esm2022/quadrel-enterprise-ui-persistence.mjs",
|
|
28
|
+
"esm": "./esm2022/quadrel-enterprise-ui-persistence.mjs",
|
|
29
|
+
"default": "./fesm2022/quadrel-enterprise-ui-persistence.mjs"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"sideEffects": false
|
|
33
|
+
}
|
package/public-api.d.ts
ADDED