refactor: replace rfdc with native structuredClone

This commit is contained in:
2024-04-03 11:14:47 +02:00
committed by Rainer Killinger
parent 622481a3c9
commit 53c3d0ba0c
13 changed files with 33 additions and 70 deletions

View File

@@ -21,10 +21,13 @@
"allowedCommonJsDependencies": [
"moment",
"opening_hours",
"leaflet",
"leaflet.markercluster",
"localforge",
"guid-typescript"
"localforage",
"i18next",
"semver",
"suncalc",
"guid-typescript",
"fast-deep-equal",
"maplibre-gl"
],
"aot": true,
"assets": [

View File

@@ -104,7 +104,7 @@ describe('ConfigProvider', () => {
it('should throw error on wrong config version in storage', async () => {
storageProviderSpy.has.and.returnValue(Promise.resolve(true));
const wrongConfig = JSON.parse(JSON.stringify(sampleIndexResponse));
const wrongConfig = structuredClone(sampleIndexResponse);
wrongConfig.backend.SCVersion = '0.1.0';
storageProviderSpy.get.and.returnValue(wrongConfig);
spyOn(configProvider.client, 'handshake').and.returnValue(Promise.resolve(sampleIndexResponse));

View File

@@ -59,7 +59,7 @@ describe('SettingsProvider', () => {
});
it('should provide and get setting', async () => {
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[0])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[0]));
const setting: SCSetting = await settingsProvider.getSetting(
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
@@ -68,7 +68,7 @@ describe('SettingsProvider', () => {
});
it('should provide and get settings value', async () => {
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[0])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[0]));
const value = await settingsProvider.getValue(
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
@@ -109,7 +109,7 @@ describe('SettingsProvider', () => {
});
it('should set value of a provided setting', async () => {
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[1])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[1]));
await settingsProvider.setSettingValue(
CONFIG_SETTINGS_MOCK[1].categories[0],
CONFIG_SETTINGS_MOCK[1].name,
@@ -125,7 +125,7 @@ describe('SettingsProvider', () => {
it('should return copy of settingsCache', async () => {
const category = CONFIG_SETTINGS_MOCK[0].categories[0];
const name = CONFIG_SETTINGS_MOCK[0].name;
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[0])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[0]));
const settings = await settingsProvider.getCache();
settings[category].settings[name].value = 'testValue';
// cached setting value should still be defaultValue
@@ -133,7 +133,7 @@ describe('SettingsProvider', () => {
});
it('should call storage put on setSettingValue', async () => {
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[0])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[0]));
await settingsProvider.setSettingValue(
CONFIG_SETTINGS_MOCK[0].categories[0],
CONFIG_SETTINGS_MOCK[0].name,
@@ -150,7 +150,7 @@ describe('SettingsProvider', () => {
it('should reset settings', async () => {
const category = CONFIG_SETTINGS_MOCK[0].categories[0];
const name = CONFIG_SETTINGS_MOCK[0].name;
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(CONFIG_SETTINGS_MOCK[0])));
await settingsProvider.provideSetting(structuredClone(CONFIG_SETTINGS_MOCK[0]));
await settingsProvider.setSettingValue(category, name, 'guest');
await settingsProvider.resetDefault();
const value = await settingsProvider.getValue(
@@ -203,7 +203,7 @@ describe('SettingsProvider', () => {
*/
async function testValue(setting: SCSetting, value: unknown) {
let error: Error | undefined = undefined;
await settingsProvider.provideSetting(JSON.parse(JSON.stringify(setting)));
await settingsProvider.provideSetting(structuredClone(setting));
try {
await settingsProvider.setSettingValue(setting.categories[0], setting.name, value as never);
} catch (error_) {

View File

@@ -271,7 +271,7 @@ export class SettingsProvider {
public async getCache(): Promise<SettingsCache> {
await this.init();
return JSON.parse(JSON.stringify(this.settingsCache));
return structuredClone(this.settingsCache);
}
/**
@@ -291,7 +291,7 @@ export class SettingsProvider {
await this.init();
if (this.settingExists(category, name)) {
// return a copy of the settings
return JSON.parse(JSON.stringify(this.settingsCache[category].settings[name]));
return structuredClone(this.settingsCache[category].settings[name]);
}
throw new Error(`Setting "${name}" not provided`);
}
@@ -306,7 +306,7 @@ export class SettingsProvider {
await this.init();
if (this.settingExists(category, name)) {
// return a copy of the settings value
return JSON.parse(JSON.stringify(this.settingsCache[category].settings[name].value));
return structuredClone(this.settingsCache[category].settings[name].value)!;
}
throw new Error(`Setting "${name}" not provided`);
}