@progalaxyelabs/ngx-stonescriptphp-client 1.0.0 → 1.0.4

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.
Files changed (32) hide show
  1. package/HLD.md +31 -0
  2. package/LICENSE +21 -0
  3. package/README.md +89 -2
  4. package/dist/ngx-stonescriptphp-client/README.md +186 -0
  5. package/{fesm2022 → dist/ngx-stonescriptphp-client/fesm2022}/progalaxyelabs-ngx-stonescriptphp-client.mjs +28 -28
  6. package/{fesm2022 → dist/ngx-stonescriptphp-client/fesm2022}/progalaxyelabs-ngx-stonescriptphp-client.mjs.map +1 -1
  7. package/dist/ngx-stonescriptphp-client/index.d.ts +184 -0
  8. package/docs/AUTH_COMPATIBILITY.md +310 -0
  9. package/docs/CHANGELOG.md +261 -0
  10. package/package.json +75 -18
  11. package/esm2022/lib/api-connection.service.mjs +0 -304
  12. package/esm2022/lib/api-response.model.mjs +0 -44
  13. package/esm2022/lib/auth.service.mjs +0 -14
  14. package/esm2022/lib/csrf.service.mjs +0 -46
  15. package/esm2022/lib/db.service.mjs +0 -14
  16. package/esm2022/lib/my-environment.model.mjs +0 -31
  17. package/esm2022/lib/ngx-stonescriptphp-client/ngx-stonescriptphp-client.module.mjs +0 -27
  18. package/esm2022/lib/signin-status.service.mjs +0 -23
  19. package/esm2022/lib/token.service.mjs +0 -63
  20. package/esm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs +0 -5
  21. package/esm2022/public-api.mjs +0 -13
  22. package/index.d.ts +0 -5
  23. package/lib/api-connection.service.d.ts +0 -37
  24. package/lib/api-response.model.d.ts +0 -15
  25. package/lib/auth.service.d.ts +0 -6
  26. package/lib/csrf.service.d.ts +0 -24
  27. package/lib/db.service.d.ts +0 -6
  28. package/lib/my-environment.model.d.ts +0 -60
  29. package/lib/ngx-stonescriptphp-client/ngx-stonescriptphp-client.module.d.ts +0 -10
  30. package/lib/signin-status.service.d.ts +0 -10
  31. package/lib/token.service.d.ts +0 -16
  32. package/public-api.d.ts +0 -9
package/HLD.md ADDED
@@ -0,0 +1,31 @@
1
+ # ngx-stonescriptphp-client - High Level Design
2
+
3
+ ## Overview
4
+ Official Angular HTTP client library for StoneScriptPHP backend framework.
5
+
6
+ ## Purpose
7
+ Provides type-safe HTTP calls to StoneScriptPHP APIs using auto-generated TypeScript interfaces.
8
+
9
+ ## Architecture
10
+
11
+ ### Components
12
+ - **ApiConnectionService** - HTTP client wrapper with error handling
13
+ - **AuthService** - JWT token management
14
+ - **DbService** - IndexedDB offline storage integration
15
+ - **TokenService** - Token storage and refresh logic
16
+ - **SigninStatusService** - Authentication state management
17
+
18
+ ### Flow
19
+ 1. StoneScriptPHP generates TypeScript DTOs from PHP
20
+ 2. Angular imports generated interfaces
21
+ 3. HTTP calls use interfaces for type safety
22
+ 4. Responses validated against DTOs
23
+
24
+ ## Tech Stack
25
+ - Angular >= 19.0
26
+ - RxJS >= 7.8
27
+ - TypeScript >= 5.8
28
+
29
+ ## Distribution
30
+ - Published to npm as @progalaxyelabs/ngx-stonescriptphp-client
31
+ - Future migration to @stonescriptphp namespace planned
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 ProGalaxy eLabs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -7,6 +7,19 @@
7
7
 
8
8
  **Note:** While published as `@progalaxyelabs/ngx-stonescriptphp-client`, this is the official client for [StoneScriptPHP](https://stonescriptphp.org). Future versions will migrate to the `@stonescriptphp` namespace.
9
9
 
10
+ ## ✅ Authentication Support (v1.0.0+)
11
+
12
+ **Fully compatible with StoneScriptPHP Framework v2.1.x authentication!**
13
+
14
+ - ✅ **Cookie-based auth**: Secure httpOnly cookies + CSRF (StoneScriptPHP v2.1.x default)
15
+ - ✅ **Body-based auth**: Legacy mode for custom backends
16
+ - ✅ **Configurable**: Choose your auth strategy via environment config
17
+ - ✅ **All HTTP methods**: GET, POST, PUT, PATCH, DELETE with automatic token refresh
18
+
19
+ See [Configuration](#configuration) section below for setup details.
20
+
21
+ 📖 **Documentation**: [CHANGELOG](docs/CHANGELOG.md) | [Auth Compatibility](docs/AUTH_COMPATIBILITY.md)
22
+
10
23
  ---
11
24
 
12
25
  ## What is this?
@@ -27,7 +40,7 @@ This library provides the HTTP client that consumes those contracts, giving you
27
40
  - ✅ **RxJS observables** - Native Angular integration
28
41
  - ✅ **Error handling** - Consistent error responses
29
42
  - ✅ **Interceptors ready** - Add auth, logging, retry logic
30
- - ✅ **Angular 19+** - Modern Angular standalone components
43
+ - ✅ **Angular 19+ & 20+** - Modern Angular standalone components
31
44
 
32
45
  ## Installation
33
46
 
@@ -105,6 +118,80 @@ PHP Backend (StoneScriptPHP) Angular Frontend
105
118
  3. Import generated TypeScript interfaces in Angular
106
119
  4. Make type-safe HTTP calls
107
120
 
121
+ ## Configuration
122
+
123
+ ### Authentication Modes (v1.0.0+)
124
+
125
+ Choose your authentication strategy based on your backend:
126
+
127
+ #### Cookie-based Auth (Recommended - StoneScriptPHP v2.1.x)
128
+
129
+ ```typescript
130
+ // environment.ts
131
+ export const environment = {
132
+ production: false,
133
+ apiServer: {
134
+ host: 'http://localhost:8000/'
135
+ },
136
+ auth: {
137
+ mode: 'cookie', // Default mode
138
+ refreshEndpoint: '/auth/refresh', // Default endpoint
139
+ useCsrf: true, // Default for cookie mode
140
+ refreshTokenCookieName: 'refresh_token', // Default
141
+ csrfTokenCookieName: 'csrf_token', // Default
142
+ csrfHeaderName: 'X-CSRF-Token' // Default
143
+ }
144
+ }
145
+ ```
146
+
147
+ **Features:**
148
+ - Secure httpOnly cookies prevent XSS attacks
149
+ - CSRF token protection
150
+ - Token rotation on refresh
151
+ - Works with StoneScriptPHP `AuthRoutes::register($router)`
152
+
153
+ #### Body-based Auth (Legacy/Custom Backends)
154
+
155
+ ```typescript
156
+ // environment.ts
157
+ export const environment = {
158
+ production: false,
159
+ apiServer: {
160
+ host: 'http://localhost:8000/'
161
+ },
162
+ auth: {
163
+ mode: 'body',
164
+ refreshEndpoint: '/user/refresh_access',
165
+ useCsrf: false
166
+ }
167
+ }
168
+ ```
169
+
170
+ **Use when:**
171
+ - Your backend accepts tokens in request body
172
+ - Custom authentication implementation
173
+ - Migrating from older systems
174
+
175
+ #### Manual Auth (No Auto-Refresh)
176
+
177
+ ```typescript
178
+ // environment.ts
179
+ export const environment = {
180
+ production: false,
181
+ apiServer: {
182
+ host: 'http://localhost:8000/'
183
+ },
184
+ auth: {
185
+ mode: 'none'
186
+ }
187
+ }
188
+ ```
189
+
190
+ **Use when:**
191
+ - You handle token refresh manually
192
+ - No authentication needed
193
+ - Custom auth logic
194
+
108
195
  ## Advanced Usage
109
196
 
110
197
  ### With Interceptors
@@ -151,7 +238,7 @@ StoneScriptPHP responses follow this structure:
151
238
 
152
239
  ## Requirements
153
240
 
154
- - Angular >= 19.0.0
241
+ - Angular >= 19.0.0 or 20.0.0
155
242
  - RxJS >= 7.8.0
156
243
  - TypeScript >= 5.8.0
157
244
 
@@ -0,0 +1,186 @@
1
+ # ngx-stonescriptphp-client
2
+
3
+ > Official Angular client library for StoneScriptPHP backend framework
4
+
5
+ [![npm version](https://badge.fury.io/js/%40progalaxyelabs%2Fngx-stonescriptphp-client.svg)](https://www.npmjs.com/package/@progalaxyelabs/ngx-stonescriptphp-client)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+
8
+ **Note:** While published as `@progalaxyelabs/ngx-stonescriptphp-client`, this is the official client for [StoneScriptPHP](https://stonescriptphp.org). Future versions will migrate to the `@stonescriptphp` namespace.
9
+
10
+ ---
11
+
12
+ ## What is this?
13
+
14
+ The Angular HTTP client library for **StoneScriptPHP** - a modern PHP backend framework that auto-generates TypeScript clients from your backend DTOs and contracts.
15
+
16
+ When you build APIs with StoneScriptPHP, you define:
17
+ - Request DTOs (TypeScript interfaces)
18
+ - Response DTOs (TypeScript interfaces)
19
+ - Route contracts (interfaces)
20
+
21
+ This library provides the HTTP client that consumes those contracts, giving you **100% type-safe** API calls with zero manual typing.
22
+
23
+ ## Features
24
+
25
+ - ✅ **Type-safe HTTP calls** - Full TypeScript support from backend DTOs
26
+ - ✅ **Auto-generated clients** - StoneScriptPHP generates TypeScript from PHP
27
+ - ✅ **RxJS observables** - Native Angular integration
28
+ - ✅ **Error handling** - Consistent error responses
29
+ - ✅ **Interceptors ready** - Add auth, logging, retry logic
30
+ - ✅ **Angular 19+** - Modern Angular standalone components
31
+
32
+ ## Installation
33
+
34
+ ```bash
35
+ npm install @progalaxyelabs/ngx-stonescriptphp-client
36
+ ```
37
+
38
+ ## Quick Start
39
+
40
+ ### 1. Generate TypeScript Client from Backend
41
+
42
+ In your StoneScriptPHP project:
43
+
44
+ ```bash
45
+ php stone generate typescript-client
46
+ ```
47
+
48
+ This generates TypeScript interfaces from your PHP DTOs.
49
+
50
+ ### 2. Use in Angular
51
+
52
+ ```typescript
53
+ import { Component } from '@angular/core';
54
+ import { HttpClient } from '@angular/common/http';
55
+ import { Observable } from 'rxjs';
56
+
57
+ // Auto-generated from StoneScriptPHP backend
58
+ interface ProductRequest {
59
+ name: string;
60
+ price: number;
61
+ }
62
+
63
+ interface ProductResponse {
64
+ productId: number;
65
+ status: string;
66
+ }
67
+
68
+ @Component({
69
+ selector: 'app-products',
70
+ standalone: true,
71
+ template: `<button (click)="createProduct()">Create Product</button>`
72
+ })
73
+ export class ProductsComponent {
74
+ constructor(private http: HttpClient) {}
75
+
76
+ createProduct(): void {
77
+ const request: ProductRequest = {
78
+ name: 'Widget',
79
+ price: 99.99
80
+ };
81
+
82
+ this.http.post<ProductResponse>('http://localhost:9100/products', request)
83
+ .subscribe(response => {
84
+ console.log('Product created:', response.productId);
85
+ });
86
+ }
87
+ }
88
+ ```
89
+
90
+ ## How it Works
91
+
92
+ StoneScriptPHP follows a **contract-first** approach:
93
+
94
+ ```
95
+ PHP Backend (StoneScriptPHP) Angular Frontend
96
+ ┌─────────────────────────┐ ┌──────────────────────┐
97
+ │ ProductRequest DTO │ ──────> │ ProductRequest.ts │
98
+ │ ProductResponse DTO │ ──────> │ ProductResponse.ts │
99
+ │ IProductRoute contract │ ──────> │ Type-safe HTTP calls │
100
+ └─────────────────────────┘ └──────────────────────┘
101
+ ```
102
+
103
+ 1. Define DTOs in PHP
104
+ 2. Run `php stone generate typescript-client`
105
+ 3. Import generated TypeScript interfaces in Angular
106
+ 4. Make type-safe HTTP calls
107
+
108
+ ## Advanced Usage
109
+
110
+ ### With Interceptors
111
+
112
+ ```typescript
113
+ import { HttpInterceptor, HttpRequest, HttpHandler } from '@angular/common/http';
114
+
115
+ export class AuthInterceptor implements HttpInterceptor {
116
+ intercept(req: HttpRequest<any>, next: HttpHandler) {
117
+ const authReq = req.clone({
118
+ headers: req.headers.set('Authorization', 'Bearer ' + getToken())
119
+ });
120
+ return next.handle(authReq);
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### With Error Handling
126
+
127
+ ```typescript
128
+ this.http.post<ProductResponse>('/products', request)
129
+ .pipe(
130
+ catchError(error => {
131
+ console.error('API Error:', error);
132
+ return throwError(() => error);
133
+ })
134
+ )
135
+ .subscribe(response => {
136
+ // Handle success
137
+ });
138
+ ```
139
+
140
+ ## API Response Format
141
+
142
+ StoneScriptPHP responses follow this structure:
143
+
144
+ ```typescript
145
+ {
146
+ "status": "ok" | "error",
147
+ "message": "Success message",
148
+ "data": { /* Your DTO */ }
149
+ }
150
+ ```
151
+
152
+ ## Requirements
153
+
154
+ - Angular >= 19.0.0
155
+ - RxJS >= 7.8.0
156
+ - TypeScript >= 5.8.0
157
+
158
+ ## Documentation
159
+
160
+ - **Framework Docs:** [stonescriptphp.org](https://stonescriptphp.org)
161
+ - **Getting Started:** [stonescriptphp.org/docs/getting-started](https://stonescriptphp.org/docs/getting-started)
162
+ - **TypeScript Client Guide:** [stonescriptphp.org/docs/typescript-client](https://stonescriptphp.org/docs/typescript-client)
163
+
164
+ ## Example Projects
165
+
166
+ Check out the [StoneScriptPHP examples repository](https://github.com/progalaxyelabs/StoneScriptPHP/tree/main/examples) for full-stack example apps.
167
+
168
+ ## Contributing
169
+
170
+ This is part of the StoneScriptPHP ecosystem. Contributions welcome!
171
+
172
+ - Report issues: [GitHub Issues](https://github.com/progalaxyelabs/ngx-stonescriptphp-client/issues)
173
+ - Framework repo: [StoneScriptPHP](https://github.com/progalaxyelabs/StoneScriptPHP)
174
+
175
+ ## License
176
+
177
+ MIT
178
+
179
+ ## Related Projects
180
+
181
+ - [StoneScriptPHP](https://github.com/progalaxyelabs/StoneScriptPHP) - The PHP backend framework
182
+ - [sunbird-garden](https://github.com/progalaxyelabs/sunbird-garden) - Reference implementation
183
+
184
+ ---
185
+
186
+ **Made with ❤️ by the StoneScriptPHP team**
@@ -98,15 +98,15 @@ class TokenService {
98
98
  localStorage.removeItem(this.lsAccessTokenKey);
99
99
  localStorage.removeItem(this.lsRefreshTokenKey);
100
100
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
102
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, providedIn: 'root' }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TokenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
102
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TokenService, providedIn: 'root' }); }
103
103
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TokenService, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: TokenService, decorators: [{
105
105
  type: Injectable,
106
106
  args: [{
107
107
  providedIn: 'root'
108
108
  }]
109
- }], ctorParameters: function () { return []; } });
109
+ }], ctorParameters: () => [] });
110
110
 
111
111
  class SigninStatusService {
112
112
  constructor() {
@@ -118,15 +118,15 @@ class SigninStatusService {
118
118
  signedIn() {
119
119
  this.status.next(true);
120
120
  }
121
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SigninStatusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
122
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SigninStatusService, providedIn: 'root' }); }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigninStatusService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
122
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigninStatusService, providedIn: 'root' }); }
123
123
  }
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SigninStatusService, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: SigninStatusService, decorators: [{
125
125
  type: Injectable,
126
126
  args: [{
127
127
  providedIn: 'root'
128
128
  }]
129
- }], ctorParameters: function () { return []; } });
129
+ }], ctorParameters: () => [] });
130
130
 
131
131
  class MyEnvironmentModel {
132
132
  constructor() {
@@ -193,10 +193,10 @@ class CsrfService {
193
193
  // Can only clear non-httpOnly cookies
194
194
  document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
195
195
  }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CsrfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
197
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CsrfService, providedIn: 'root' }); }
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CsrfService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
197
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CsrfService, providedIn: 'root' }); }
198
198
  }
199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CsrfService, decorators: [{
199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CsrfService, decorators: [{
200
200
  type: Injectable,
201
201
  args: [{
202
202
  providedIn: 'root'
@@ -396,7 +396,7 @@ class ApiConnectionService {
396
396
  let refreshTokenResponse = await fetch(refreshTokenUrl, {
397
397
  method: 'POST',
398
398
  mode: 'cors',
399
- credentials: 'include',
399
+ credentials: 'include', // Important: send cookies
400
400
  redirect: 'error',
401
401
  headers: headers
402
402
  });
@@ -490,39 +490,39 @@ class ApiConnectionService {
490
490
  }
491
491
  return '';
492
492
  }
493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, deps: [{ token: TokenService }, { token: SigninStatusService }, { token: MyEnvironmentModel }, { token: CsrfService }], target: i0.ɵɵFactoryTarget.Injectable }); }
494
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, providedIn: 'root' }); }
493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ApiConnectionService, deps: [{ token: TokenService }, { token: SigninStatusService }, { token: MyEnvironmentModel }, { token: CsrfService }], target: i0.ɵɵFactoryTarget.Injectable }); }
494
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ApiConnectionService, providedIn: 'root' }); }
495
495
  }
496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, decorators: [{
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ApiConnectionService, decorators: [{
497
497
  type: Injectable,
498
498
  args: [{
499
499
  providedIn: 'root'
500
500
  }]
501
- }], ctorParameters: function () { return [{ type: TokenService }, { type: SigninStatusService }, { type: MyEnvironmentModel }, { type: CsrfService }]; } });
501
+ }], ctorParameters: () => [{ type: TokenService }, { type: SigninStatusService }, { type: MyEnvironmentModel }, { type: CsrfService }] });
502
502
 
503
503
  class AuthService {
504
504
  constructor() { }
505
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
506
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, providedIn: 'root' }); }
505
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
506
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AuthService, providedIn: 'root' }); }
507
507
  }
508
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, decorators: [{
508
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AuthService, decorators: [{
509
509
  type: Injectable,
510
510
  args: [{
511
511
  providedIn: 'root'
512
512
  }]
513
- }], ctorParameters: function () { return []; } });
513
+ }], ctorParameters: () => [] });
514
514
 
515
515
  class DbService {
516
516
  constructor() { }
517
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
518
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, providedIn: 'root' }); }
517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
518
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DbService, providedIn: 'root' }); }
519
519
  }
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, decorators: [{
520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DbService, decorators: [{
521
521
  type: Injectable,
522
522
  args: [{
523
523
  providedIn: 'root'
524
524
  }]
525
- }], ctorParameters: function () { return []; } });
525
+ }], ctorParameters: () => [] });
526
526
 
527
527
  class NgxStoneScriptPhpClientModule {
528
528
  static forRoot(environment) {
@@ -533,11 +533,11 @@ class NgxStoneScriptPhpClientModule {
533
533
  ]
534
534
  };
535
535
  }
536
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxStoneScriptPhpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
537
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgxStoneScriptPhpClientModule, imports: [CommonModule] }); }
538
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxStoneScriptPhpClientModule, imports: [CommonModule] }); }
536
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxStoneScriptPhpClientModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
537
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: NgxStoneScriptPhpClientModule, imports: [CommonModule] }); }
538
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxStoneScriptPhpClientModule, imports: [CommonModule] }); }
539
539
  }
540
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxStoneScriptPhpClientModule, decorators: [{
540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgxStoneScriptPhpClientModule, decorators: [{
541
541
  type: NgModule,
542
542
  args: [{
543
543
  declarations: [],