ngx-api-cache 20.0.4 → 20.0.6

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 CHANGED
@@ -8,6 +8,10 @@ This is a very lightweight library for api-cache.
8
8
 
9
9
  This library does not require third party dependencies
10
10
 
11
+ ## DEMO
12
+
13
+ [![Demo](https://img.shields.io/badge/Demo-Vercel-000000?logo=vercel&logoColor=white)](https://ngx-api-cache.vercel.app)
14
+
11
15
  ### USAGE
12
16
 
13
17
  1. Install
@@ -44,19 +44,10 @@ class NgxApiCacheService {
44
44
  if (destroyRef) {
45
45
  obs$ = obs$.pipe(takeUntilDestroyed(destroyRef));
46
46
  }
47
- obs$.subscribe({
48
- next: (resp) => {
49
- console.log('✅ Got response:', resp);
50
- entry.loading.set(false);
51
- entry.error.set(null);
52
- entry.data.set(resp);
53
- },
54
- error: (err) => {
55
- console.error('❌ HTTP Error:', err);
56
- entry.loading.set(false);
57
- entry.error.set(err);
58
- entry.data.set(null);
59
- }
47
+ obs$.subscribe(resp => {
48
+ entry.loading.set(false);
49
+ entry.error.set(null);
50
+ entry.data.set(resp);
60
51
  });
61
52
  }
62
53
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxApiCacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-api-cache.mjs","sources":["../../../projects/ngx-api-cache/src/lib/ngx-api-cache.service.ts","../../../projects/ngx-api-cache/src/public-api.ts","../../../projects/ngx-api-cache/src/ngx-api-cache.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, signal, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { catchError, throwError } from 'rxjs';\nimport { CacheEntry, CacheResult } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxApiCacheService {\n private http = inject(HttpClient);\n private cache = new Map<string, CacheEntry<unknown>>();\n\n public get<T>(url: string, destroyRef?: DestroyRef): CacheResult<T> {\n if (!this.cache.has(url)) {\n const entry: CacheEntry<T> = {\n data: signal(null),\n loading: signal(true),\n error: signal(null)\n };\n this.cache.set(url, entry as CacheEntry<unknown>);\n this.request(url, entry, destroyRef);\n }\n\n const entry = this.cache.get(url) as CacheEntry<T>;\n\n return {\n data: entry.data.asReadonly(),\n loading: entry.loading.asReadonly(),\n error: entry.error.asReadonly(),\n refresh: (): void => {\n entry.loading.set(true);\n entry.error.set(null);\n this.request(url, entry, destroyRef);\n },\n patch: (updater: (current: T | null) => T): void => {\n const current = entry.data();\n const newValue = updater(current);\n entry.data.set(newValue);\n }\n };\n }\n\n private request<T>(url: string, entry: CacheEntry<T>, destroyRef?: DestroyRef): void {\n let obs$ = this.http.get<T>(url).pipe(\n catchError(error => {\n entry.loading.set(false);\n entry.error.set(error);\n entry.data.set(null);\n return throwError(() => error);\n })\n );\n\n if (destroyRef) {\n obs$ = obs$.pipe(takeUntilDestroyed(destroyRef));\n }\n\n obs$.subscribe({\n next: (resp) => {\n console.log('✅ Got response:', resp);\n entry.loading.set(false);\n entry.error.set(null);\n entry.data.set(resp);\n },\n error: (err) => {\n console.error('❌ HTTP Error:', err);\n entry.loading.set(false);\n entry.error.set(err);\n entry.data.set(null);\n }\n });\n }\n}\n","/*\n * Public API Surface of my-lib\n */\n\nexport * from './lib/ngx-api-cache.service';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-api-cache.mjs","sources":["../../../projects/ngx-api-cache/src/lib/ngx-api-cache.service.ts","../../../projects/ngx-api-cache/src/public-api.ts","../../../projects/ngx-api-cache/src/ngx-api-cache.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, signal, inject, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { catchError, throwError } from 'rxjs';\nimport { CacheEntry, CacheResult } from './types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxApiCacheService {\n private http = inject(HttpClient);\n private cache = new Map<string, CacheEntry<unknown>>();\n\n public get<T>(url: string, destroyRef?: DestroyRef): CacheResult<T> {\n if (!this.cache.has(url)) {\n const entry: CacheEntry<T> = {\n data: signal(null),\n loading: signal(true),\n error: signal(null)\n };\n this.cache.set(url, entry as CacheEntry<unknown>);\n this.request(url, entry, destroyRef);\n }\n\n const entry = this.cache.get(url) as CacheEntry<T>;\n\n return {\n data: entry.data.asReadonly(),\n loading: entry.loading.asReadonly(),\n error: entry.error.asReadonly(),\n refresh: (): void => {\n entry.loading.set(true);\n entry.error.set(null);\n this.request(url, entry, destroyRef);\n },\n patch: (updater: (current: T | null) => T): void => {\n const current = entry.data();\n const newValue = updater(current);\n entry.data.set(newValue);\n }\n };\n }\n\n private request<T>(url: string, entry: CacheEntry<T>, destroyRef?: DestroyRef): void {\n let obs$ = this.http.get<T>(url).pipe(\n catchError(error => {\n entry.loading.set(false);\n entry.error.set(error);\n entry.data.set(null);\n return throwError(() => error);\n })\n );\n\n if (destroyRef) {\n obs$ = obs$.pipe(takeUntilDestroyed(destroyRef));\n }\n\n obs$.subscribe(resp => {\n entry.loading.set(false);\n entry.error.set(null);\n entry.data.set(resp);\n });\n }\n}\n","/*\n * Public API Surface of my-lib\n */\n\nexport * from './lib/ngx-api-cache.service';\nexport * from './lib/types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-api-cache",
3
- "version": "20.0.4",
3
+ "version": "20.0.6",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.1",
6
6
  "@angular/core": "^20.3.1"
@@ -19,7 +19,7 @@
19
19
  "url": "https://boosty.to/hq_dev"
20
20
  }
21
21
  ],
22
- "homepage": "https://github.com/andrew-dev283/ngx-api-cache",
22
+ "homepage": "https://ngx-api-cache.vercel.app",
23
23
  "license": "MIT",
24
24
  "keywords": [
25
25
  "angular",