{"id":18705622,"url":"https://github.com/angular-package/storage","last_synced_at":"2025-11-09T06:30:24.489Z","repository":{"id":117698593,"uuid":"415604440","full_name":"angular-package/storage","owner":"angular-package","description":"The storage of data under allowed names.","archived":false,"fork":false,"pushed_at":"2021-10-31T17:59:33.000Z","size":38,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-28T06:41:52.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angular-package.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["angular-package"],"patreon":"sciborrudnicki","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-10-10T14:10:14.000Z","updated_at":"2021-10-31T17:59:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"6e1614d8-6006-455e-a930-7d50a305992d","html_url":"https://github.com/angular-package/storage","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-package%2Fstorage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-package%2Fstorage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-package%2Fstorage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angular-package%2Fstorage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angular-package","download_url":"https://codeload.github.com/angular-package/storage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239568488,"owners_count":19660688,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T12:11:30.649Z","updated_at":"2025-11-09T06:30:24.400Z","avatar_url":"https://github.com/angular-package.png","language":"TypeScript","funding_links":["https://github.com/sponsors/angular-package","https://patreon.com/sciborrudnicki","https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026link=https://github.com/sponsors/angular-package"],"categories":[],"sub_categories":[],"readme":"# Packages\n\nUseful and simple to use packages based on the [angular.io][angulario].\n\n| Package                              | Description                                            | Status |\n| :----------------------------------- | :----------------------------------------------------- | -----: |\n| [callback][callback-github-readme]   | Manages the callback [`function`][js-function].        | [![npm version][callback-npm-badge-png]][callback-npm-badge] |\n| [change-detection][cd-github-readme] | Improves application performance.                      | [![npm version][cd-npm-badge-png]][cd-npm-badge] |\n| [component-loader][cl-github-readme] | Handles dynamic loading components.                    | [![npm version][cl-npm-badge-png]][cl-npm-badge] |\n| [core][core-github-readme]           | Core features.                                         | [![npm version][core-npm-badge-png]][core-npm-badge] |\n| [error][error-github-readme]         | Manages an [`Error`][js-error].                        | [![npm version][error-npm-badge-png]][error-npm-badge] |\n| [prism][prism-github-readme]         | [`Prism`][prism-js] highlighter module.                | [![npm version][prism-npm-badge-png]][prism-npm-badge] |\n| [property][property-github-readme]   | Handles object properties.                             | [![npm version][property-npm-badge-png]][property-npm-badge] |\n| [storage][storage-github-readme]     | The storage of data under allowed names.               | [![npm version][storage-npm-badge-png]][storage-npm-badge] |\n| [reactive][reactive-github-readme]   | Automatize the process of creating some rxjs features. | [![npm version][reactive-npm-badge-png]][reactive-npm-badge] |\n| [testing][testing-github-readme]     | Support for testing other packages.                    | [![npm version][testing-npm-badge-png]][testing-npm-badge] |\n| [type][type-github-readme]           | Common types, type guards, and type checkers.          | [![npm version][type-npm-badge-png]][type-npm-badge] |\n| [ui][ui-github-readme]               | User interface.                                        | *In Progress* |\n\n\u003e Click on the package name to visit its [GitHub](https://github.com/) page.\n\n## angular-package/storage\n\nThe storage of data under allowed names.\n\n[![Gitter][gitter-badge]][gitter-chat]\n\u003c!-- npm badge --\u003e\n[![npm version][storage-npm-badge-svg]][storage-npm-badge]\n\u003c!-- GitHub badges --\u003e\n[![GitHub issues][storage-badge-issues]][storage-issues]\n[![GitHub forks][storage-badge-forks]][storage-forks]\n[![GitHub stars][storage-badge-stars]][storage-stars]\n[![GitHub license][storage-badge-license]][storage-license]\n\u003c!-- Sponsors badges --\u003e\n[![GitHub sponsors][github-badge-sponsor]][github-sponsor-link]\n[![Support me on Patreon][patreon-badge]][patreon-link]\n\n----\n\n## Table of contents\n\n* [Basic concepts](#basic-concepts)\n* [Skeleton](#skeleton)\n* [Installation](#installation)\n* [Api](#api)\n* [`Storage`](#storage)\n* [Interface](#interface)\n* [Type](#type)\n* [Experimental](#experimental)\n* [Changelog](#changelog)\n* [Git](#git)\n  * [Commit](#commit)\n  * [Versioning](#versioning)\n* [License](#license)\n\n----\n\n\u003cbr\u003e\n\n## Basic concepts\n\nChecks\n\u003e It's to check the provided value to be **the same** as **expected**.\n\nType guard (constrain)\n\u003e Constrains the parameter type to **not let** input **unexpected** value in the **code editor**.\n\nGuards\n\u003e It's a **combination** of both above, **constrains** the type of the parameter in the **code editor**, and checks its provided argument.\n\nDefines\n\u003e Returns defined value from a method of an object.  \n\u003e Defines new value in an object and returns a defined value.  \n\nGets\n\u003e Returns a value from an object.\n\nSets\n\u003e Adds or updates an element with a specified key and a value to an object and returns an object.  \n\n\u003cbr\u003e\n\n## Skeleton\n\nThis package was built by the [library skeleton][skeleton] which was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.5.\n\nCopy this package to the `packages/storage` folder of the [library skeleton][skeleton] then run the commands below.\n\n### Code scaffolding\n\nRun `ng generate component component-name --project storage` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project storage`.\n\u003e Note: Don't forget to add `--project storage` or else it will be added to the default project in your `angular.json` file.\n\n### Build\n\nRun `ng build storage` to build the package. The build artifacts will be stored in the `dist/` directory.\n\n### Publishing\n\nAfter building your library with `ng build storage`, go to the dist folder `cd dist/storage` and run `npm publish`.\n\n### Running unit tests\n\nInstall `@angular-package/testing` with command:\n\n```typescript\nnpm i @angular-package/testing --no-save\n```\n\nRun `ng test storage` to execute the unit tests via [Karma](https://karma-runner.github.io).\n\n\u003cbr\u003e\n\n## Installation\n\nInstall `@angular-package/storage` package with command:\n\n```bash\nnpm i @angular-package/storage --save\n```\n\n\u003cbr\u003e\n\n## Api\n\n```typescript\nimport {\n  // Class.\n  AllowedName,\n  Storage\n} from '@angular-package/storage';\n```\n\n\u003cbr\u003e\n\n## `Storage`\n\nThe storage of data under allowed names.\n\n\u003cbr\u003e\n\n**Instance public properties:**\n\n| Storage.prototype.                      | Description |\n| :-------------------------------------- | :---------- |\n| [`size: number`](#storageprototypesize) | The size accessor property returns the number of elements in [`storage`](#storage). |\n\n**Constructor:**\n\n| Constructor                         | Description |\n| :---------------------------------- | :---------- |\n| [`Storage()`](#storage-constructor) | Initializes an instance of [`Storage`](#storage) with optional allowed names under which values can be stored. |\n\n**Instance public methods:**\n\n| Storage.prototype.                            | Description |\n| :-------------------------------------------- | :---------- |\n| [`clear()`](#storageprototypeclear)           | The `clear()` method removes all elements from the [`storage`](#storage). |\n| [`delete()`](#storageprototypedelete)         | The `delete()` method removes the element from the [`storage`](#storage) using the provided `name`. |\n| [`forEach()`](#storageprototypeforeach)       | The `forEach()` method executes a provided [`function`][js-function] once per each name/value pair in the [`storage`](#storage), in insertion order. |\n| [`get()`](#storageprototypeget)               | The `get()` method returns an element from the [`storage`](#storage) using the provided `name`. |\n| [`has()`](#storageprototypehas)               | The `has()` method returns a [`boolean`][js-boolean] indicating whether an element with the provided `name` exists. |\n| [`set()`](#storageprototypeset)               | The `set()` method **adds** or **updates** the `value` of the element under the given allowed `name`. |\n| [`setOfType()`](#storageprototypesetoftype)   | The `setOfType()` method **adds** or **updates** the element `value` of the type specified by the provided `type` under the given allowed `name`. |\n\n\u003cbr\u003e\n\n### `Storage` instance public properties\n\n#### `Storage.prototype.size`\n\nThe size accessor property returns the number of elements in storage.\n\n```typescript\npublic get size(): number {\n  return super.size;\n}\n```\n\n\u003cbr\u003e\n\n### `Storage` constructor\n\n#### `Storage()`\n\nInitializes an instance of [`Storage`](#storage) with optional allowed names under which values can be stored.\n\n```typescript\n// Syntax.\nconstructor(...allowNames: AllowNames[]) {\n  super();\n  this.#allowedName = new AllowedName(...allowNames);\n}\n```\n\n**Parameters:**\n\n| Name: type                    | Description |\n| :---------------------------- | :---------- |\n| `...allowNames: AllowNames[]` | An optional [rest parameter][js-rest-parameter] of allowed names of [`string`][js-string] type, under which values can be stored. Only those names given by this parameter are being checked by the public [`isNameAllowed()`](#allowednameprototypeisnameallowed) of the [`AllowedName`](#allowedname) method and the check was not **disabled** by the [`checkNames()`](#storageprototypechecknames) method. |\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n### `Storage` instance public methods\n\n#### `Storage.prototype.clear()`\n\nThe `clear()` method removes all elements from the [`storage`](#storage).\n\n```typescript\n// Syntax.\npublic clear(): this {\n  super.clear();\n  return this;\n}\n```\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.delete()`\n\nThe `delete()` method removes the element from the [`storage`](#storage) using the provided `name`.\n\n```typescript\n// Syntax.\npublic delete\u003cName extends AllowNames\u003e(\n  name: Name,\n  callback?: ResultCallback\u003cName\u003e\n): boolean {\n  return guardString(name, callback) ? super.delete(name) : false;\n}\n```\n\n**Generic type variables:**\n\n| Name   | Default value            | Description |\n| :----- | :----------------------: | :---------- |\n| `Name` | Captured from the `name` | A generic type variable `Name` constrained by the generic type variable `AllowNames`, by default of the value captured from the supplied `name` indicates the **name** under which element value is stored. |\n\n**Parameters:**\n\n| Name: type                        | Description |\n| :-------------------------------- | :---------- |\n| `name: Name`                      | The name of the generic type variable `Name` of the element to remove from the [`storage`](#storage). |\n| `callback?: ResultCallback\u003cName\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the check whether the provided `check` is a [`string`][js-string] type. |\n\n**Returns:**\n\nThe **return value** is a [`boolean`][js-boolean] if an element in the [`storage`](#storage) existed and has been removed or `false` if the element did not exist or the given name was not a [`string`][js-string] type.\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.forEach()`\n\nThe `forEach()` method executes a provided [`function`][js-function] once per each name/value pair in the [`storage`](#storage), in insertion order.\n\n```typescript\n// Syntax.\npublic forEach(\n  forEach: (\n    value: any,\n    name: AllowNames,\n    storage: Storage\u003cAllowNames\u003e\n  ) =\u003e void,\n  callback?: ResultCallback\u003cFunction\u003e\n): this {\n  guardFunction(forEach, callback) \u0026\u0026 super.forEach(forEach as any);\n  return this;\n}\n```\n\n**Parameters:**\n\n| Name: type                            | Description |\n| :------------------------------------ | :---------- |\n| `forEach: Function`                   | The callback [`function`][js-function] to execute for each entry in the storage, that takes the `value` and the `name` of each iterated element and [`storage`](#storage) being iterated. |\n| `callback?: ResultCallback\u003cFunction\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the result of the check whether the provided `forEach` is the [`function`][js-function]. |\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.get()`\n\nThe `get()` method returns an element from the [`storage`](#storage) using the provided `name`.\n\n```typescript\n// Syntax.\npublic get\u003cValue = any, Name extends AllowNames = AllowNames\u003e(\n  name: Name,\n  callback?: ResultCallback\u003cName\u003e\n): Value {\n  return guardString(name, callback) \u0026\u0026 super.get(name);\n}\n```\n\n**Generic type variables:**\n\n| Name    | Default value            | Description |\n| :------ | :----------------------: | :---------- |\n| `Value` | [`any`][ts-any]          | A generic type variable `Value` determines the type of the `value` parameter, by default of [`any`][ts-any] via the return type. |\n| `Name`  | Captured from the `name` | A generic type variable `Name` constrained by the generic type variable `AllowNames`, by default of the value captured from the supplied `name` indicates the **name** under which element value is picked from the [`storage`](#storage). |\n\n**Parameters:**\n\n| Name: type                        | Description |\n| :-------------------------------- | :---------- |\n| `name: Name`                      | The name of the generic type variable `Name` of the element to remove from the [`storage`](#storage). |\n| `callback?: ResultCallback\u003cName\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the check whether the provided `name` is a [`string`][js-string] type. |\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.has()`\n\nThe `has()` method returns a [`boolean`][js-boolean] indicating whether an element with the provided `name` exists.\n\n```typescript\n// Syntax.\npublic has\u003cName extends AllowNames\u003e(\n  name: Name,\n  callback?: ResultCallback\u003cName\u003e\n): boolean {\n  return guardString(name, callback) \u0026\u0026 super.has(name);\n}\n```\n\n**Generic type variables:**\n\n| Name   | Default value            | Description |\n| :----- | :----------------------: | :---------- |\n| `Name` | Captured from the `name` | A generic type variable `Name` constrained by the generic type variable `AllowNames`, by default of the value captured from the supplied `name` indicates the **name** under which element value is picked from the [`storage`](#storage). |\n\n**Parameters:**\n\n| Name: type                        | Description |\n| :-------------------------------- | :---------- |\n| `name: Name`                      | The name of the generic type variable `Name` of the element to check for presence in the [`storage`](#storage). |\n| `callback?: ResultCallback\u003cName\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the check whether the provided `name` is a [`string`][js-string] type. |\n\n**Returns:**\n\nThe return value is a [`boolean`][js-boolean] indicating whether the element of the provided `name` exists in the [`storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.set()`\n\nThe `set()` method **adds** or **updates** the `value` of the element under the given allowed `name`.\n\n```typescript\n// Syntax.\npublic set\u003cValue, Name extends AllowNames\u003e(\n  name: Name,\n  value: Value,\n  callback?: ResultCallback\u003cName\u003e\n): this {\n  this.#allowedName.isNameAllowed(name, callback) \u0026\u0026 super.set(name, value);\n  return this;\n}\n```\n\n**Generic type variables:**\n\n| Name    | Default value             | Description |\n| :------ | :-----------------------: | :---------- |\n| `Value` | Captured from the `value` | A generic type variable `Value` determines the type of the `value` parameter, by default of the value captured from the supplied `value`. |\n| `Name`  | Captured from the `name`  | A generic type variable `Name` constrained by the generic type variable `AllowNames`, by default of the value captured from the supplied `name` indicates the **name** under which element value is stored. |\n\n**Parameters:**\n\n| Name: type                        | Description |\n| :-------------------------------- | :---------- |\n| `name: Name`                      | The name of the generic type variable `Name` under which the element is **added** to the [`storage`](#storage) or **updated** in the [`storage`](#storage). The value is checked against being an allowed name if the allowed names were provided. |\n| `value: Value`                    | The value of [`any`][ts-any] type to **add** to the [`storage`](#storage) or **update** in the [`storage`](#storage) under the given `name`. |\n| `callback?: ResultCallback\u003cName\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the check whether the provided `name` is a [`string`][js-string] type. |\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n#### `Storage.prototype.setOfType()`\n\nThe `setOfType()` method **adds** or **updates** the element `value` of the type specified by the provided `type` under the given allowed `name`.\n\n```typescript\n// Syntax.\npublic setOfType\u003cValue extends Type, Name extends AllowNames\u003e(\n  name: Name,\n  value: Value,\n  type: Types\u003cValue\u003e,\n  callback?: ResultCallback\u003cName | Value\u003e\n): this {\n  this._setOfType(name, value, type, callback);\n  return this;\n}\n```\n\n**Generic type variables:**\n\n| Name    | Default value             | Description |\n| :------ | :-----------------------: | :---------- |\n| `Value` | Captured from the `value` | A generic type variable `Value` constrained by the generic type [`Type`][package-type-type] determines the type of the `value` parameter, by default of the value captured from the supplied `value`. |\n| `Name`  | Captured from the `name`  | A generic type variable `Name` constrained by the generic type variable `AllowNames`, by default of the value captured from the supplied `name` indicates the **name** under which element value is stored. |\n\n**Parameters:**\n\n| Name: type                                 | Description |\n| :----------------------------------------- | :---------- |\n| `name: Name`                               | The name of the generic type variable `Name` under which the element is **added** to the [`storage`](#storage) or **updated** in the [`storage`](#storage). The value is checked against being an allowed name if the allowed names were provided. |\n| `value: Value`                             | The element value of the given `type` to **add** to the storage or **update** in the storage, under the given `name`. |\n| `type: Types\u003cValue\u003e`                       | The type of the generic type [`Types`][package-type-types] indicates against which type the given `value` is checked. |\n| `callback?: ResultCallback\u003cName \\| Value\u003e` | An optional callback [`function`][js-function] of [`ResultCallback`][package-callback-resultcallback] type to handle the result of the check whether the provided `value` is the type of the given `type` and the `name` is the allowed name under which the provided `value` can be stored. |\n\n**Returns:**\n\nThe **return value** is an instance of [`Storage`](#storage).\n\n**Usage:**\n\n```typescript\n// Example usage.\nimport { Storage } from '@angular-package/storage';\n\n```\n\n\u003cbr\u003e\n\n## Changelog\n\nThe **changelog** of this package is based on [*keep a changelog*](https://keepachangelog.com/en/1.0.0/). To read it, click on the [CHANGELOG.md](https://github.com/angular-package/storage/blob/main/CHANGELOG.md) link.\n\n\u003e A changelog is a file which contains a curated, chronologically ordered list of notable changes for each version of a project. - [*keep a changelog*](https://keepachangelog.com/en/1.0.0/)\n\n\u003cbr\u003e\n\n## GIT\n\n### Commit\n\n* [AngularJS Git Commit Message Conventions][git-commit-angular]\n* [Karma Git Commit Msg][git-commit-karma]\n* [Conventional Commits][git-commit-conventional]\n\n### Versioning\n\n[Semantic Versioning 2.0.0][git-semver]\n\n**Given a version number MAJOR.MINOR.PATCH, increment the:**\n\n* MAJOR version when you make incompatible API changes,\n* MINOR version when you add functionality in a backwards-compatible manner, and\n* PATCH version when you make backwards-compatible bug fixes.\n\nAdditional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.\n\n**FAQ**\nHow should I deal with revisions in the 0.y.z initial development phase?\n\n\u003e The simplest thing to do is start your initial development release at 0.1.0 and then increment the minor version for each subsequent release.\n\nHow do I know when to release 1.0.0?\n\n\u003e If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backwards compatibility, you should probably already be 1.0.0.\n\n## License\n\nMIT © angular-package ([license][storage-license])\n\n\u003c!-- Funding --\u003e\n[github-badge-sponsor]: https://img.shields.io/static/v1?label=Sponsor\u0026message=%E2%9D%A4\u0026logo=GitHub\u0026link=https://github.com/sponsors/angular-package\n[github-sponsor-link]: https://github.com/sponsors/angular-package\n[patreon-badge]: https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fshieldsio-patreon.vercel.app%2Fapi%3Fusername%3Dsciborrudnicki%26type%3Dpatrons\u0026style=flat\n[patreon-link]: https://patreon.com/sciborrudnicki\n\n[angulario]: https://angular.io\n[skeleton]: https://github.com/angular-package/skeleton\n\n\u003c!-- Update status --\u003e\n[experimental]: https://img.shields.io/badge/-experimental-orange\n[fix]: https://img.shields.io/badge/-fix-red\n[new]: https://img.shields.io/badge/-new-green\n[update]: https://img.shields.io/badge/-update-red\n\n\u003c!-- Gitter --\u003e\n[gitter-badge]: https://badges.gitter.im/angularpackage/Lobby.svg\n[gitter-chat]: https://gitter.im/angularpackage/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\n\n\u003c!-- GIT --\u003e\n[git-semver]: http://semver.org/\n\n\u003c!-- GIT: commit --\u003e\n[git-commit-angular]: https://gist.github.com/stephenparish/9941e89d80e2bc58a153\n[git-commit-karma]: http://karma-runner.github.io/0.10/dev/git-commit-msg.html\n[git-commit-conventional]: https://www.conventionalcommits.org/en/v1.0.0/\n\n\u003c!-- This package: storage  --\u003e\n  \u003c!-- GitHub: badges --\u003e\n  [storage-badge-issues]: https://img.shields.io/github/issues/angular-package/storage\n  [storage-badge-forks]: https://img.shields.io/github/forks/angular-package/storage\n  [storage-badge-stars]: https://img.shields.io/github/stars/angular-package/storage\n  [storage-badge-license]: https://img.shields.io/github/license/angular-package/storage\n  \u003c!-- GitHub: badges links --\u003e\n  [storage-issues]: https://github.com/angular-package/storage/issues\n  [storage-forks]: https://github.com/angular-package/storage/network\n  [storage-license]: https://github.com/angular-package/storage/blob/master/LICENSE\n  [storage-stars]: https://github.com/angular-package/storage/stargazers\n\u003c!-- This package --\u003e\n  [storage-github-changelog]: https://github.com/angular-package/storage/blob/main/CHANGELOG.md\n\n\u003c!-- Package: callback --\u003e\n  \u003c!-- npm --\u003e\n  [callback-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fcallback.svg\n  [callback-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fcallback.png\n  [callback-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fcallback\n  [callback-npm-readme]: https://www.npmjs.com/package/@angular-package/callback#readme\n\n  \u003c!-- GitHub --\u003e\n  [callback-github-readme]: https://github.com/angular-package/callback#readme\n\n  [package-callback-resultcallback]: https://github.com/angular-package/callback#resultcallback\n\n\u003c!-- Package: change-detection --\u003e\n  \u003c!-- npm --\u003e\n  [cd-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fchange-detection.svg\n  [cd-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fchange-detection.png\n  [cd-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fchange-detection\n  [cd-npm-readme]: https://www.npmjs.com/package/@angular-package/change-detection#readme\n\n  \u003c!-- GitHub --\u003e\n  [cd-github-readme]: https://github.com/angular-package/change-detection#readme\n\n\u003c!-- Package: component-loader --\u003e\n  \u003c!-- npm --\u003e\n  [cl-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fcomponent-loader.svg\n  [cl-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fcomponent-loader.png\n  [cl-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fcomponent-loader\n  [cl-npm-readme]: https://www.npmjs.com/package/@angular-package/component-loader#readme\n\n  \u003c!-- GitHub --\u003e\n  [cl-github-readme]: https://github.com/angular-package/component-loader#readme\n\n\u003c!-- Package: core --\u003e\n  \u003c!-- npm --\u003e\n  [core-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fcore.svg\n  [core-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fcore.png\n  [core-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fcore\n  [core-npm-readme]: https://www.npmjs.com/package/@angular-package/core#readme\n\n  \u003c!-- GitHub --\u003e\n  [core-github-readme]: https://github.com/angular-package/core#readme\n\n\u003c!-- Package: error --\u003e\n  \u003c!-- npm --\u003e\n  [error-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Ferror.svg\n  [error-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Ferror.png\n  [error-npm-badge]: https://badge.fury.io/js/%40angular-package%2Ferror\n  [error-npm-readme]: https://www.npmjs.com/package/@angular-package/error#readme\n\n  \u003c!-- GitHub --\u003e\n  [error-github-readme]: https://github.com/angular-package/error#readme\n\n\u003c!-- Package: prism --\u003e\n  \u003c!-- npm --\u003e\n  [prism-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fprism.svg\n  [prism-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fprism.png\n  [prism-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fprism\n  [prism-npm-readme]: https://www.npmjs.com/package/@angular-package/prism#readme\n\n  \u003c!-- GitHub --\u003e\n  [prism-github-readme]: https://github.com/angular-package/prism#readme\n\n\u003c!-- Package: property --\u003e\n  \u003c!-- npm --\u003e\n  [property-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fproperty.svg\n  [property-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fproperty.png\n  [property-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fproperty\n  [property-npm-readme]: https://www.npmjs.com/package/@angular-package/property#readme\n\n  \u003c!-- GitHub --\u003e\n  [property-github-readme]: https://github.com/angular-package/property#readme\n\n\u003c!-- Package: reactive --\u003e\n  \u003c!-- npm --\u003e\n  [reactive-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Freactive.svg\n  [reactive-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Freactive.png\n  [reactive-npm-badge]: https://badge.fury.io/js/%40angular-package%2Freactive\n  [reactive-npm-readme]: https://www.npmjs.com/package/@angular-package/reactive#readme\n\n  \u003c!-- GitHub --\u003e\n  [reactive-github-readme]: https://github.com/angular-package/reactive#readme\n\n\u003c!-- Package: storage --\u003e\n  \u003c!-- npm --\u003e\n  [storage-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fstorage.svg\n  [storage-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Fstorage.png\n  [storage-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fstorage\n  [storage-npm-readme]: https://www.npmjs.com/package/@angular-package/storage#readme\n\n  \u003c!-- GitHub --\u003e\n  [storage-github-readme]: https://github.com/angular-package/change-detection#readme\n\n\n\u003c!-- Package: testing --\u003e\n  \u003c!-- npm --\u003e\n  [testing-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Ftesting.svg\n  [testing-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Ftesting.png\n  [testing-npm-badge]: https://badge.fury.io/js/%40angular-package%2Ftesting\n  [testing-npm-readme]: https://www.npmjs.com/package/@angular-package/testing#readme\n\n  \u003c!-- GitHub --\u003e\n  [testing-github-readme]: https://github.com/angular-package/testing#readme\n\n\u003c!-- Package: type --\u003e\n  \u003c!-- npm --\u003e\n  [type-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Ftype.svg\n  [type-npm-badge-png]: https://badge.fury.io/js/%40angular-package%2Ftype.png\n  [type-npm-badge]: https://badge.fury.io/js/%40angular-package%2Ftype\n  [type-npm-readme]: https://www.npmjs.com/package/@angular-package/type#readme\n\n  \u003c!-- GitHub --\u003e\n  [type-github-readme]: https://github.com/angular-package/type#readme\n\n  [package-type-valueparser]: https://github.com/angular-package/type#valueparser\n  [package-type-key]: https://github.com/angular-package/type#key\n  [package-type-resultcallback]: https://github.com/angular-package/type#resultcallback\n  [package-type-type]: https://github.com/angular-package/type#type\n  [package-type-types]: https://github.com/angular-package/type#types\n\n\u003c!-- Package: ui --\u003e\n  \u003c!-- npm --\u003e\n  [ui-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fui.svg\n  [ui-npm-badge-svg]: https://badge.fury.io/js/%40angular-package%2Fui.svg\n  [ui-npm-badge]: https://badge.fury.io/js/%40angular-package%2Fui\n  [ui-npm-readme]: https://www.npmjs.com/package/@angular-package/ui#readme\n\n  \u003c!-- GitHub --\u003e\n  [ui-github-readme]: https://github.com/angular-package/ui#readme\n\n\u003c!-- Angular --\u003e\n[angular-component-factory-resolver]: https://angular.io/api/core/ComponentFactoryResolver\n[angular-view-container-ref]: https://angular.io/api/core/ViewContainerRef\n\n\u003c!-- Jasmine --\u003e\n[jasmine-describe]: https://jasmine.github.io/api/3.8/global.html#describe\n[jasmine-expect]: https://jasmine.github.io/api/3.8/global.html#expect\n[jasmine-it]: https://jasmine.github.io/api/3.8/global.html#it\n\n\u003c!-- Javascript  --\u003e\n[js-array]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array\n[js-array-every]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every\n[js-array-some]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some\n\n[js-bigint]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt\n[js-bigintconstructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt/BigInt\n\n[js-boolean]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean\n[js-booleanconstructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean/Boolean\n\n[js-classes]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes\n\n[js-date]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date\n\n[js-error]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error\n\n[js-function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions\n[js-rest-parameter]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters\n\n[js-getter]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get\n[js-object-getownpropertydescriptor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor\n[js-object-getOwnpropertydescriptors]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors\n\n[js-setter]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set\n\n[js-hasownproperty]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty\n\n[js-instanceof]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof\n[js-in-operator]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/in\n\n[js-map]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map\n\n[js-null]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/null\n[js-number]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number\n[js-numberconstructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/Number\n\n[js-object]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object\n[js-object-define-property]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\n\n[js-primitive]: https://developer.mozilla.org/en-US/docs/Glossary/Primitive\n[js-promise]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise\n\n[js-rangeerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError\n[js-referenceerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError\n[js-regexp]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n\n[js-set]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set\n[js-storage]: https://developer.mozilla.org/en-US/docs/Web/API/Storage\n[js-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String\n[js-stringconstructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/String\n\n[js-symbol]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol\n[js-symbolconstructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/Symbol\n[js-syntaxerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError\n\n[js-typeerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError\n\n[js-undefined]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined\n[js-urlerror]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError\n\n[js-weakset]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet\n\n\u003c!-- Karma --\u003e\n[karma]: http://karma-runner.github.io/0.10/index.html\n\n\u003c!-- Prism --\u003e\n[prism-js]: https://prismjs.com/\n\n\u003c!-- Typescript --\u003e\n[ts-any]: https://www.typescriptlang.org/docs/handbook/basic-types.html#any\n[ts-boolean]: https://www.typescriptlang.org/docs/handbook/basic-types.html#boolean\n[ts-classes]: https://www.typescriptlang.org/docs/handbook/2/classes.html\n[ts-enums]: https://www.typescriptlang.org/docs/handbook/enums.html\n[ts-function]: https://www.typescriptlang.org/docs/handbook/2/functions.html\n[ts-interface]: https://www.typescriptlang.org/docs/handbook/interfaces.html#our-first-interface\n[ts-never]: https://www.typescriptlang.org/docs/handbook/basic-types.html#never\n[ts-number]: https://www.typescriptlang.org/docs/handbook/basic-types.html#number\n[ts-object]: https://www.typescriptlang.org/docs/handbook/basic-types.html#object\n[ts-string]: https://www.typescriptlang.org/docs/handbook/basic-types.html#string\n[ts-unknown]: https://www.typescriptlang.org/docs/handbook/basic-types.html#unknown\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangular-package%2Fstorage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangular-package%2Fstorage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangular-package%2Fstorage/lists"}