ng update @ngx-pwa/local-storage
Important
If your project is actually in a version < 15, please do the other migrations first in an incremental way. The version 9 migration is especially important, as a wrongly done migration could lead to the loss of all previously stored data.
- Angular 16 is required.
- RxJS >= 7.4 is required.
- TypeScript 5.0 is recommended.
Important
- RxJS 6 is not supported.
- TypeScript 4.9 should work but is not tested.
LocalStorage
service is deprecated and will be removed in v17. The StorageMap
replacement exists since v8 now, so it is time to move forward.
Migration is very simple:
// Before
import { LocalStorage } from '@ngx-pwa/local-storage';
@Injectable()
export class YourService {
constructor(private storage: LocalStorage) {
this.storage.getItem('key').subscribe();
this.storage.setItem('key', 'value').subscribe();
this.storage.removeItem('key').subscribe();
this.storage.clear().subscribe();
this.storage.length;
}
}
// After
import { StorageMap } from '@ngx-pwa/local-storage';
@Injectable()
export class YourService {
constructor(private storage: StorageMap) {
this.storage.get('key').subscribe();
this.storage.set('key', 'value').subscribe();
this.storage.delete('key').subscribe();
this.storage.clear().subscribe();
this.storage.size;
}
}
Minor typings differences:
- the
StorageMap
read method returnsundefined
if thekey
does not exist (theLocalStorage
one returnednull
), so update any explicit condition:
// Before
this.storage.getItem('key').subscribe((data) => {
if (data !== null) {}
});
// After
this.storage.get('key').subscribe((data) => {
if (data !== undefined) {}
});
- the
StorageMap
writing methods returnundefined
(theLocalStorage
ones returnedtrue
): it is unlikely to concern you, as the return is useless for these methods
Specific JSONSchemaXXX
interfaces are deprecated and will be removed in version 17. They were introduced in very old versions of this library as a workaround to some TypeScript issues which are gone for a long time now. Since version 8, you should have used the generic JSONSchema
interface.
Note that if you are using JSONSchemaArray
for a tuple schema, you need to switch to JSONSchema
now because of the fix in version 16.2.0.
Example:
// Before
const schema: JSONSchemaString = { type: 'string' };
// After
const schema = { type: 'string' } satisfies JSONSchema;
Tip
If you wonder why satisfies JSONSchema
instead of schema: JSONSchema
, check this Pull Request.
JSONValidator
is deprecated and will no longer be available in version 17. It is an internal utility class which is limited, could change at any time and is out of scope of this library.
Tip
If you need a JSON validator, there are far better and dedicated libraries available like ajv.
LocalDatabase
is deprecated and will no longer be available in version 17. It is an internal utility class, and overriding it is an undocumented behavior. If you are doing so, you are basically rewriting your own storage library, so using this one makes no sense, you can your service directly.