@progalaxyelabs/ngx-stonescriptphp-client 0.0.10 → 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.
- package/HLD.md +31 -0
- package/LICENSE +21 -0
- package/README.md +89 -2
- package/dist/ngx-stonescriptphp-client/README.md +186 -0
- package/{fesm2022 → dist/ngx-stonescriptphp-client/fesm2022}/progalaxyelabs-ngx-stonescriptphp-client.mjs +262 -46
- package/dist/ngx-stonescriptphp-client/fesm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs.map +1 -0
- package/dist/ngx-stonescriptphp-client/index.d.ts +184 -0
- package/docs/AUTH_COMPATIBILITY.md +310 -0
- package/docs/CHANGELOG.md +261 -0
- package/package.json +75 -18
- package/esm2022/lib/api-connection.service.mjs +0 -169
- package/esm2022/lib/api-response.model.mjs +0 -26
- package/esm2022/lib/auth.service.mjs +0 -14
- package/esm2022/lib/db.service.mjs +0 -14
- package/esm2022/lib/my-environment.model.mjs +0 -19
- package/esm2022/lib/ngx-stonescriptphp-client/ngx-stonescriptphp-client.module.mjs +0 -27
- package/esm2022/lib/signin-status.service.mjs +0 -23
- package/esm2022/lib/token.service.mjs +0 -55
- package/esm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs +0 -5
- package/esm2022/public-api.mjs +0 -12
- package/fesm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/api-connection.service.d.ts +0 -23
- package/lib/api-response.model.d.ts +0 -9
- package/lib/auth.service.d.ts +0 -6
- package/lib/db.service.d.ts +0 -6
- package/lib/my-environment.model.d.ts +0 -20
- package/lib/ngx-stonescriptphp-client/ngx-stonescriptphp-client.module.d.ts +0 -10
- package/lib/signin-status.service.d.ts +0 -10
- package/lib/token.service.d.ts +0 -14
- package/public-api.d.ts +0 -8
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2025-12-14
|
|
9
|
+
|
|
10
|
+
### 🎉 Production Ready Release
|
|
11
|
+
|
|
12
|
+
This is the first stable production release of `@progalaxyelabs/ngx-stonescriptphp-client`.
|
|
13
|
+
|
|
14
|
+
#### Repository Organization
|
|
15
|
+
- **Documentation**: Moved CHANGELOG.md and AUTH_COMPATIBILITY.md to `docs/` folder
|
|
16
|
+
- **Project Structure**: Cleaned up root directory - only README.md and HLD.md remain
|
|
17
|
+
- **.gitignore**: Updated for proper npm package exclusions
|
|
18
|
+
- **package.json**: Added `docs` folder to published files
|
|
19
|
+
|
|
20
|
+
#### Why 1.0.0?
|
|
21
|
+
- ✅ Full compatibility with StoneScriptPHP Framework v2.1.x
|
|
22
|
+
- ✅ All major HTTP methods implemented (GET, POST, PUT, PATCH, DELETE)
|
|
23
|
+
- ✅ Configurable authentication modes (cookie/body/none)
|
|
24
|
+
- ✅ CSRF protection support
|
|
25
|
+
- ✅ Comprehensive documentation
|
|
26
|
+
- ✅ Clean repository structure
|
|
27
|
+
- ✅ Production-ready and stable API
|
|
28
|
+
|
|
29
|
+
**No code changes from v0.0.15** - purely organizational improvements and version bump to indicate production readiness.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## [0.0.15] - 2025-12-14 (Pre-release)
|
|
34
|
+
|
|
35
|
+
### 🎉 Major Feature: Configurable Authentication Modes
|
|
36
|
+
|
|
37
|
+
This release adds **full compatibility with StoneScriptPHP Framework v2.1.x authentication** while maintaining backward compatibility.
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
#### Authentication Configuration
|
|
42
|
+
- **`AuthConfig` interface**: Configure authentication mode, endpoints, and CSRF settings
|
|
43
|
+
- **`AuthMode` type**: Choose between `'cookie'`, `'body'`, or `'none'` authentication modes
|
|
44
|
+
- **Cookie-based auth mode**: Full support for StoneScriptPHP v2.1.x secure httpOnly cookie + CSRF auth (recommended)
|
|
45
|
+
- **Body-based auth mode**: Legacy mode for custom backends (sends tokens in request body)
|
|
46
|
+
- **No-auth mode**: Disable automatic token refresh for manual auth management
|
|
47
|
+
|
|
48
|
+
#### New Services & Methods
|
|
49
|
+
- **`CsrfService`**: Manage CSRF tokens from cookies for secure authentication
|
|
50
|
+
- **`TokenService.setAccessToken()`**: Set only access token
|
|
51
|
+
- **`TokenService.setRefreshToken()`**: Set only refresh token
|
|
52
|
+
- **`MyEnvironmentModel.auth`**: Authentication configuration object
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
#### Auth Mode Configuration (Breaking Change with Migration Path)
|
|
57
|
+
- **Default auth mode**: Now defaults to `'cookie'` mode (StoneScriptPHP v2.1.x compatible)
|
|
58
|
+
- **Token refresh**: Completely rewritten to support multiple auth strategies:
|
|
59
|
+
- **Cookie mode**: Uses httpOnly cookies + CSRF tokens, calls `/auth/refresh` (default)
|
|
60
|
+
- **Body mode**: Sends tokens in request body (legacy), calls `/user/refresh_access`
|
|
61
|
+
- **None mode**: Disables automatic token refresh
|
|
62
|
+
|
|
63
|
+
#### Migration Guide for v0.0.10 → v0.0.15
|
|
64
|
+
|
|
65
|
+
**For StoneScriptPHP v2.1.x users (recommended):**
|
|
66
|
+
```typescript
|
|
67
|
+
// environment.ts
|
|
68
|
+
export const environment = {
|
|
69
|
+
apiServer: { host: 'http://localhost:8000/' },
|
|
70
|
+
auth: {
|
|
71
|
+
mode: 'cookie', // Default, can omit
|
|
72
|
+
refreshEndpoint: '/auth/refresh' // Default, can omit
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**For legacy/custom backend users:**
|
|
78
|
+
```typescript
|
|
79
|
+
// environment.ts
|
|
80
|
+
export const environment = {
|
|
81
|
+
apiServer: { host: 'http://localhost:8000/' },
|
|
82
|
+
auth: {
|
|
83
|
+
mode: 'body',
|
|
84
|
+
refreshEndpoint: '/user/refresh_access'
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**To disable auto-refresh:**
|
|
90
|
+
```typescript
|
|
91
|
+
// environment.ts
|
|
92
|
+
export const environment = {
|
|
93
|
+
apiServer: { host: 'http://localhost:8000/' },
|
|
94
|
+
auth: { mode: 'none' }
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Fixed
|
|
99
|
+
- ✅ **Authentication compatibility with StoneScriptPHP v2.1.x** - Now fully compatible!
|
|
100
|
+
- ✅ Cookie-based auth with CSRF protection
|
|
101
|
+
- ✅ Configurable refresh endpoints
|
|
102
|
+
- ✅ Proper error handling in both auth modes
|
|
103
|
+
|
|
104
|
+
### Documentation
|
|
105
|
+
- Updated [AUTH_COMPATIBILITY.md](AUTH_COMPATIBILITY.md) (in docs/) - Auth now fully compatible!
|
|
106
|
+
- Added configuration examples for all auth modes
|
|
107
|
+
- Comprehensive migration guide
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## [0.0.13] - 2025-12-14 (Skipped - Never Published)
|
|
112
|
+
|
|
113
|
+
### Added
|
|
114
|
+
|
|
115
|
+
#### ApiConnectionService
|
|
116
|
+
- **DELETE method**: Added `delete<T>(endpoint: string, queryParamsObj?: any): Promise<ApiResponse<T>>` for DELETE HTTP requests
|
|
117
|
+
- **PUT method**: Added `put<T>(pathWithQueryParams: string, data: any): Promise<ApiResponse<T>>` for PUT HTTP requests (full updates)
|
|
118
|
+
- **PATCH method**: Added `patch<T>(pathWithQueryParams: string, data: any): Promise<ApiResponse<T>>` for PATCH HTTP requests (partial updates)
|
|
119
|
+
|
|
120
|
+
#### ApiResponse Model
|
|
121
|
+
- **isSuccess()**: Returns `true` if status is 'ok'
|
|
122
|
+
- **isError()**: Returns `true` if status is 'error' or 'not ok'
|
|
123
|
+
- **getData()**: Returns the data payload or null
|
|
124
|
+
- **getError()**: Returns the error message or 'Unknown error'
|
|
125
|
+
- **getStatus()**: Returns the status string
|
|
126
|
+
- **getMessage()**: Returns the message string
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
- Version synchronization between root package.json (0.0.12) and library package.json (was 0.0.10, now 0.0.12)
|
|
130
|
+
|
|
131
|
+
### Notes
|
|
132
|
+
- `onOk()` and `onNotOk()` methods were already present in ApiResponse (since earlier versions)
|
|
133
|
+
- `DbService` is exported but remains unimplemented - placeholder for future database query functionality
|
|
134
|
+
|
|
135
|
+
## [0.0.10] - 2025-12-08
|
|
136
|
+
|
|
137
|
+
### Published to NPM
|
|
138
|
+
- Initial NPM release with GET and POST methods
|
|
139
|
+
- Basic authentication flow with token refresh
|
|
140
|
+
- ApiResponse model with `onOk()`, `onNotOk()`, and `onError()` callbacks
|
|
141
|
+
|
|
142
|
+
## [0.0.9] - 2025-12-07
|
|
143
|
+
|
|
144
|
+
### Changed
|
|
145
|
+
- Documentation improvements
|
|
146
|
+
- README updates for npm presentation
|
|
147
|
+
|
|
148
|
+
## [0.0.8] - 2025-12-06
|
|
149
|
+
|
|
150
|
+
### Changed
|
|
151
|
+
- Package naming fixes
|
|
152
|
+
- Documentation updates
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Migration Guide: v0.0.10 → v0.0.13
|
|
157
|
+
|
|
158
|
+
### New HTTP Methods Available
|
|
159
|
+
|
|
160
|
+
You can now use all standard REST HTTP methods:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// Before (v0.0.10) - Had to use raw HttpClient for these operations
|
|
164
|
+
constructor(private http: HttpClient) {}
|
|
165
|
+
this.http.delete(`${apiUrl}/users/${id}`).subscribe(...)
|
|
166
|
+
|
|
167
|
+
// After (v0.0.13) - Use ApiConnectionService directly
|
|
168
|
+
constructor(private apiConnection: ApiConnectionService) {}
|
|
169
|
+
|
|
170
|
+
// DELETE
|
|
171
|
+
await this.apiConnection.delete(`/users/${id}`)
|
|
172
|
+
await this.apiConnection.delete(`/users/${id}`, { force: true }) // with query params
|
|
173
|
+
|
|
174
|
+
// PUT (full update)
|
|
175
|
+
await this.apiConnection.put(`/users/${id}`, { name: 'John', email: 'john@example.com' })
|
|
176
|
+
|
|
177
|
+
// PATCH (partial update)
|
|
178
|
+
await this.apiConnection.patch(`/users/${id}`, { name: 'John' })
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### New ApiResponse Helper Methods
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// Before (v0.0.10) - Manual status checking
|
|
185
|
+
const response = await this.apiConnection.get('/users')
|
|
186
|
+
if (response.status === 'ok') {
|
|
187
|
+
this.users = response.data
|
|
188
|
+
} else {
|
|
189
|
+
this.error = response.message
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// After (v0.0.13) - Use helper methods
|
|
193
|
+
const response = await this.apiConnection.get('/users')
|
|
194
|
+
|
|
195
|
+
// Option 1: Helper methods
|
|
196
|
+
if (response.isSuccess()) {
|
|
197
|
+
this.users = response.getData()
|
|
198
|
+
} else {
|
|
199
|
+
this.error = response.getError()
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// Option 2: Fluent API (still available)
|
|
203
|
+
response
|
|
204
|
+
.onOk(data => this.users = data)
|
|
205
|
+
.onNotOk((message, data) => this.error = message)
|
|
206
|
+
.onError(() => console.error('Network error'))
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Known Issues
|
|
212
|
+
|
|
213
|
+
### 🔴 CRITICAL: Authentication Flow Incompatibility
|
|
214
|
+
|
|
215
|
+
The token refresh mechanism in v0.0.13 is **incompatible** with StoneScriptPHP Framework v2.1.x built-in authentication.
|
|
216
|
+
|
|
217
|
+
**Issue**: Client expects `/user/refresh_access` endpoint with tokens in request body, but the framework's built-in `RefreshRoute` uses:
|
|
218
|
+
- Endpoint: `/auth/refresh` (default, customizable)
|
|
219
|
+
- Security: httpOnly cookies + CSRF tokens
|
|
220
|
+
- Does NOT accept tokens in request body
|
|
221
|
+
|
|
222
|
+
**Impact**:
|
|
223
|
+
- ✅ **Works**: General API calls (GET, POST, PUT, PATCH, DELETE) with manual token management
|
|
224
|
+
- ❌ **Broken**: Automatic token refresh on 401 errors
|
|
225
|
+
- ⚠️ **Workaround**: Implement custom `/user/refresh_access` route on your backend OR manage auth manually
|
|
226
|
+
|
|
227
|
+
**See**: [AUTH_COMPATIBILITY.md](AUTH_COMPATIBILITY.md) for detailed analysis and solutions.
|
|
228
|
+
|
|
229
|
+
**Fix Planned**: v0.0.14 will add configurable auth modes to support both cookie-based and body-based authentication.
|
|
230
|
+
|
|
231
|
+
### DbService (Not Yet Implemented)
|
|
232
|
+
The `DbService` is exported in the public API but contains no implementation. It is a placeholder for future database query functionality. Do not use it in production.
|
|
233
|
+
|
|
234
|
+
### Angular Version Compatibility
|
|
235
|
+
The package is built with Angular 16 but declares peer dependencies for Angular 16-20. While it should work across these versions, comprehensive testing has only been done with Angular 16. If you encounter issues with Angular 19/20, please report them at: https://github.com/progalaxyelabs/ngx-stonescriptphp-client/issues
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Roadmap
|
|
240
|
+
|
|
241
|
+
### Planned for v0.0.13+
|
|
242
|
+
- Complete `DbService` implementation with type-safe database queries
|
|
243
|
+
- HTTP interceptor support for custom auth/logging/retry logic
|
|
244
|
+
- File upload/download support
|
|
245
|
+
- Comprehensive unit tests
|
|
246
|
+
- Rebuild with Angular 19/20 for production
|
|
247
|
+
|
|
248
|
+
### Future Versions
|
|
249
|
+
- RxJS operators for common patterns
|
|
250
|
+
- WebSocket support for real-time features
|
|
251
|
+
- Migration to `@stonescriptphp` namespace
|
|
252
|
+
- Demo application and Storybook documentation
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Links
|
|
257
|
+
|
|
258
|
+
- **NPM Package**: https://www.npmjs.com/package/@progalaxyelabs/ngx-stonescriptphp-client
|
|
259
|
+
- **GitHub Repository**: https://github.com/progalaxyelabs/ngx-stonescriptphp-client
|
|
260
|
+
- **StoneScriptPHP Framework**: https://stonescriptphp.org
|
|
261
|
+
- **Report Issues**: https://github.com/progalaxyelabs/ngx-stonescriptphp-client/issues
|
package/package.json
CHANGED
|
@@ -1,25 +1,82 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@progalaxyelabs/ngx-stonescriptphp-client",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"description": "Angular client library for StoneScriptPHP backend framework",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"angular",
|
|
7
|
+
"stonescriptphp",
|
|
8
|
+
"http-client",
|
|
9
|
+
"api-client",
|
|
10
|
+
"typescript"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://stonescriptphp.org",
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/progalaxyelabs/ngx-stonescriptphp-client.git"
|
|
16
|
+
},
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/progalaxyelabs/ngx-stonescriptphp-client/issues"
|
|
19
|
+
},
|
|
20
|
+
"license": "MIT",
|
|
21
|
+
"author": {
|
|
22
|
+
"name": "StoneScriptPHP Team",
|
|
23
|
+
"email": "team@stonescriptphp.org",
|
|
24
|
+
"url": "https://stonescriptphp.org"
|
|
25
|
+
},
|
|
26
|
+
"main": "dist/index.js",
|
|
27
|
+
"types": "dist/index.d.ts",
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"README.md",
|
|
31
|
+
"HLD.md",
|
|
32
|
+
"LICENSE",
|
|
33
|
+
"docs"
|
|
34
|
+
],
|
|
35
|
+
"scripts": {
|
|
36
|
+
"ng": "ng",
|
|
37
|
+
"start": "ng serve",
|
|
38
|
+
"prebuild": "npm --no-git-tag-version version patch",
|
|
39
|
+
"build": "ng build",
|
|
40
|
+
"watch": "ng build --watch --configuration development",
|
|
41
|
+
"test": "ng test",
|
|
42
|
+
"publish:npm": "npm publish --access public"
|
|
43
|
+
},
|
|
44
|
+
"private": false,
|
|
4
45
|
"peerDependencies": {
|
|
5
|
-
"@angular/common": "^
|
|
6
|
-
"@angular/core": "^
|
|
46
|
+
"@angular/common": "^19.0.0 || ^20.0.0",
|
|
47
|
+
"@angular/core": "^19.0.0 || ^20.0.0",
|
|
48
|
+
"rxjs": "^7.8.0"
|
|
7
49
|
},
|
|
8
50
|
"dependencies": {
|
|
9
|
-
"
|
|
51
|
+
"@angular-devkit/schematics": "^20.0.0",
|
|
52
|
+
"@angular/animations": "^20.0.0",
|
|
53
|
+
"@angular/common": "^20.0.0",
|
|
54
|
+
"@angular/compiler": "^20.0.0",
|
|
55
|
+
"@angular/core": "^20.0.0",
|
|
56
|
+
"@angular/forms": "^20.0.0",
|
|
57
|
+
"@angular/platform-browser": "^20.0.0",
|
|
58
|
+
"@angular/platform-browser-dynamic": "^20.0.0",
|
|
59
|
+
"@angular/router": "^20.0.0",
|
|
60
|
+
"rxjs": "~7.8.0",
|
|
61
|
+
"tslib": "^2.8.0",
|
|
62
|
+
"zone.js": "~0.15.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@angular-devkit/build-angular": "^20.0.0",
|
|
66
|
+
"@angular/cli": "^20.0.0",
|
|
67
|
+
"@angular/compiler-cli": "^20.0.0",
|
|
68
|
+
"@schematics/angular": "^20.0.0",
|
|
69
|
+
"@types/jasmine": "~5.1.0",
|
|
70
|
+
"jasmine-core": "~5.5.0",
|
|
71
|
+
"karma": "~6.4.0",
|
|
72
|
+
"karma-chrome-launcher": "~3.2.0",
|
|
73
|
+
"karma-coverage": "~2.2.0",
|
|
74
|
+
"karma-jasmine": "~5.1.0",
|
|
75
|
+
"karma-jasmine-html-reporter": "~2.1.0",
|
|
76
|
+
"ng-packagr": "^20.0.0",
|
|
77
|
+
"typescript": "~5.8.0"
|
|
10
78
|
},
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
"typings": "index.d.ts",
|
|
14
|
-
"exports": {
|
|
15
|
-
"./package.json": {
|
|
16
|
-
"default": "./package.json"
|
|
17
|
-
},
|
|
18
|
-
".": {
|
|
19
|
-
"types": "./index.d.ts",
|
|
20
|
-
"esm2022": "./esm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs",
|
|
21
|
-
"esm": "./esm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs",
|
|
22
|
-
"default": "./fesm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs"
|
|
23
|
-
}
|
|
79
|
+
"publishConfig": {
|
|
80
|
+
"access": "public"
|
|
24
81
|
}
|
|
25
|
-
}
|
|
82
|
+
}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { ApiResponse } from './api-response.model';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./token.service";
|
|
5
|
-
import * as i2 from "./signin-status.service";
|
|
6
|
-
import * as i3 from "./my-environment.model";
|
|
7
|
-
export class ApiConnectionService {
|
|
8
|
-
constructor(tokens, signinStatus, environment) {
|
|
9
|
-
this.tokens = tokens;
|
|
10
|
-
this.signinStatus = signinStatus;
|
|
11
|
-
this.environment = environment;
|
|
12
|
-
this.host = ''; // contains trailing slash
|
|
13
|
-
this.accessToken = '';
|
|
14
|
-
this.host = environment.apiServer.host;
|
|
15
|
-
}
|
|
16
|
-
async request(url, options, data) {
|
|
17
|
-
try {
|
|
18
|
-
if (data !== null) {
|
|
19
|
-
const body = JSON.stringify(data);
|
|
20
|
-
if (body) {
|
|
21
|
-
options.body = body;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
options.body = {};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const accessTokenIncluded = this.includeAccessToken(options);
|
|
28
|
-
let response = await fetch(url, options);
|
|
29
|
-
if ((response.status === 401) && accessTokenIncluded) {
|
|
30
|
-
response = await this.refreshAccessTokenAndRetry(url, options, response);
|
|
31
|
-
}
|
|
32
|
-
if (response.ok) {
|
|
33
|
-
const json = await (response.json());
|
|
34
|
-
return (new ApiResponse(json.status, json.data, json.message));
|
|
35
|
-
}
|
|
36
|
-
if (response.status === 401) {
|
|
37
|
-
this.signinStatus.signedOut();
|
|
38
|
-
}
|
|
39
|
-
return this.handleError(response);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
return this.handleError(error);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
handleError(error) {
|
|
46
|
-
console.error(`Backend returned code ${error.status}, ` +
|
|
47
|
-
`full error: `, error);
|
|
48
|
-
return new ApiResponse('error');
|
|
49
|
-
}
|
|
50
|
-
async get(endpoint, queryParamsObj) {
|
|
51
|
-
const url = this.host + endpoint.replace(/^\/+/, '') + this.buildQueryString(queryParamsObj);
|
|
52
|
-
const fetchOptions = {
|
|
53
|
-
mode: 'cors',
|
|
54
|
-
redirect: 'error'
|
|
55
|
-
};
|
|
56
|
-
return this.request(url, fetchOptions, null);
|
|
57
|
-
}
|
|
58
|
-
async post(pathWithQueryParams, data) {
|
|
59
|
-
const url = this.host + pathWithQueryParams.replace(/^\/+/, '');
|
|
60
|
-
const fetchOptions = {
|
|
61
|
-
method: 'POST',
|
|
62
|
-
mode: 'cors',
|
|
63
|
-
redirect: 'error',
|
|
64
|
-
headers: {
|
|
65
|
-
'Content-Type': 'application/json'
|
|
66
|
-
},
|
|
67
|
-
body: JSON.stringify(data)
|
|
68
|
-
};
|
|
69
|
-
return this.request(url, fetchOptions, data);
|
|
70
|
-
}
|
|
71
|
-
// async postFormWithFiles(pathWithQueryParams: string, formData: FormData): Promise<ApiResponse | null> {
|
|
72
|
-
// const url = this.host + pathWithQueryParams.replace(/^\/+/, '')
|
|
73
|
-
// try {
|
|
74
|
-
// const fetchOptions: RequestInit = {
|
|
75
|
-
// method: 'POST',
|
|
76
|
-
// mode: 'cors',
|
|
77
|
-
// redirect: 'error',
|
|
78
|
-
// body: formData
|
|
79
|
-
// }
|
|
80
|
-
// const accessTokenIncluded = this.includeAccessToken(fetchOptions)
|
|
81
|
-
// let response: Response = await fetch(url, fetchOptions)
|
|
82
|
-
// if ((response.status === 401) && accessTokenIncluded) {
|
|
83
|
-
// response = await this.refreshAccessTokenAndRetry(url, fetchOptions, response)
|
|
84
|
-
// }
|
|
85
|
-
// if (response.ok) {
|
|
86
|
-
// return ((await (response.json()) as ApiResponse))
|
|
87
|
-
// }
|
|
88
|
-
// return this.handleError(response)
|
|
89
|
-
// } catch (error) {
|
|
90
|
-
// return this.handleError(error)
|
|
91
|
-
// }
|
|
92
|
-
// }
|
|
93
|
-
includeAccessToken(options) {
|
|
94
|
-
this.accessToken = this.tokens.getAccessToken();
|
|
95
|
-
if (!this.accessToken) {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
if (!options.headers) {
|
|
99
|
-
options.headers = {};
|
|
100
|
-
}
|
|
101
|
-
options.headers['Authorization'] = 'Bearer ' + this.accessToken;
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
async refreshAccessTokenAndRetry(url, fetchOptions, response) {
|
|
105
|
-
const refreshStatusOk = await this.refreshAccessToken();
|
|
106
|
-
if (!refreshStatusOk) {
|
|
107
|
-
return response;
|
|
108
|
-
}
|
|
109
|
-
fetchOptions.headers['Authorization'] = 'Bearer ' + this.accessToken;
|
|
110
|
-
response = await fetch(url, fetchOptions);
|
|
111
|
-
return response;
|
|
112
|
-
}
|
|
113
|
-
async refreshAccessToken() {
|
|
114
|
-
const refreshToken = this.tokens.getRefreshToken();
|
|
115
|
-
if (!refreshToken) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
|
-
const refreshTokenUrl = this.host + 'user/refresh_access';
|
|
119
|
-
let refreshTokenResponse = await fetch(refreshTokenUrl, {
|
|
120
|
-
method: 'POST',
|
|
121
|
-
mode: 'cors',
|
|
122
|
-
redirect: 'error',
|
|
123
|
-
headers: {
|
|
124
|
-
'Content-Type': 'application/json'
|
|
125
|
-
},
|
|
126
|
-
body: JSON.stringify({
|
|
127
|
-
access_token: this.accessToken,
|
|
128
|
-
refresh_token: refreshToken
|
|
129
|
-
})
|
|
130
|
-
});
|
|
131
|
-
if (!refreshTokenResponse.ok) {
|
|
132
|
-
this.accessToken = '';
|
|
133
|
-
this.tokens.clear();
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
let refreshAccessData = await refreshTokenResponse.json();
|
|
137
|
-
if (!refreshAccessData) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
this.tokens.setTokens(refreshAccessData.data.access_token, refreshToken);
|
|
141
|
-
this.accessToken = refreshAccessData.data.access_token;
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
buildQueryString(options) {
|
|
145
|
-
if (options === undefined) {
|
|
146
|
-
return '';
|
|
147
|
-
}
|
|
148
|
-
const array = [];
|
|
149
|
-
for (let key in options) {
|
|
150
|
-
if (options.hasOwnProperty(key) && (options[key] !== null) && (options[key] !== undefined)) {
|
|
151
|
-
array.push(encodeURIComponent(key) + "=" + encodeURIComponent(options[key]));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
const str = array.join('&');
|
|
155
|
-
if (str !== '') {
|
|
156
|
-
return '?' + str;
|
|
157
|
-
}
|
|
158
|
-
return '';
|
|
159
|
-
}
|
|
160
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, deps: [{ token: i1.TokenService }, { token: i2.SigninStatusService }, { token: i3.MyEnvironmentModel }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
161
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, providedIn: 'root' }); }
|
|
162
|
-
}
|
|
163
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApiConnectionService, decorators: [{
|
|
164
|
-
type: Injectable,
|
|
165
|
-
args: [{
|
|
166
|
-
providedIn: 'root'
|
|
167
|
-
}]
|
|
168
|
-
}], ctorParameters: function () { return [{ type: i1.TokenService }, { type: i2.SigninStatusService }, { type: i3.MyEnvironmentModel }]; } });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNvbm5lY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdG9uZXNjcmlwdHBocC1jbGllbnQvc3JjL2xpYi9hcGktY29ubmVjdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQU1uRCxNQUFNLE9BQU8sb0JBQW9CO0lBTTdCLFlBQ1ksTUFBb0IsRUFDcEIsWUFBaUMsRUFDakMsV0FBK0I7UUFGL0IsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsZ0JBQVcsR0FBWCxXQUFXLENBQW9CO1FBUG5DLFNBQUksR0FBRyxFQUFFLENBQUEsQ0FBQywwQkFBMEI7UUFFcEMsZ0JBQVcsR0FBRyxFQUFFLENBQUE7UUFPcEIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQTtJQUMxQyxDQUFDO0lBR08sS0FBSyxDQUFDLE9BQU8sQ0FBVyxHQUFXLEVBQUUsT0FBWSxFQUFFLElBQWdCO1FBQ3ZFLElBQUk7WUFFQSxJQUFHLElBQUksS0FBSyxJQUFJLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDakMsSUFBRyxJQUFJLEVBQUU7b0JBQ0wsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7aUJBQ3RCO3FCQUFNO29CQUNILE9BQU8sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO2lCQUNwQjthQUNKO1lBRUQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFNUQsSUFBSSxRQUFRLEdBQWEsTUFBTSxL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TyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUMvRTtTQUNKO1FBQ0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMzQixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDWixPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUE7U0FDbkI7UUFFRCxPQUFPLEVBQUUsQ0FBQTtJQUNiLENBQUM7K0dBekxRLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07OzRGQUVULG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2lnbmluU3RhdHVzU2VydmljZSB9IGZyb20gJy4vc2lnbmluLXN0YXR1cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFwaVJlc3BvbnNlIH0gZnJvbSAnLi9hcGktcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgTXlFbnZpcm9ubWVudE1vZGVsIH0gZnJvbSAnLi9teS1lbnZpcm9ubWVudC5tb2RlbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXBpQ29ubmVjdGlvblNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBob3N0ID0gJycgLy8gY29udGFpbnMgdHJhaWxpbmcgc2xhc2hcblxuICAgIHByaXZhdGUgYWNjZXNzVG9rZW4gPSAnJ1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdG9rZW5zOiBUb2tlblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2lnbmluU3RhdHVzOiBTaWduaW5TdGF0dXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGVudmlyb25tZW50OiBNeUVudmlyb25tZW50TW9kZWxcbiAgICApIHtcbiAgICAgICAgdGhpcy5ob3N0ID0gZW52aXJvbm1lbnQuYXBpU2VydmVyLmhvc3RcbiAgICB9XG5cblxuICAgIHByaXZhdGUgYXN5bmMgcmVxdWVzdDxEYXRhVHlwZT4odXJsOiBzdHJpbmcsIG9wdGlvbnM6IGFueSwgZGF0YTogYW55IHwgbnVsbCk6IFByb21pc2U8QXBpUmVzcG9uc2U8RGF0YVR5cGU+PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGlmKGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICAgICAgICAgICAgICBpZihib2R5KSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuYm9keSA9IGJvZHlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmJvZHkgPSB7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW5JbmNsdWRlZCA9IHRoaXMuaW5jbHVkZUFjY2Vzc1Rva2VuKG9wdGlvbnMpXG5cbiAgICAgICAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIG9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmICgocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpICYmIGFjY2Vzc1Rva2VuSW5jbHVkZWQpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVmcmVzaEFjY2Vzc1Rva2VuQW5kUmV0cnkodXJsLCBvcHRpb25zLCByZXNwb25zZSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICAgICAgY29uc3QganNvbiA9IGF3YWl0IChyZXNwb25zZS5qc29uKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIChuZXcgQXBpUmVzcG9uc2U8RGF0YVR5cGU+KGpzb24uc3RhdHVzLCBqc29uLmRhdGEsIGpzb24ubWVzc2FnZSkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2lnbmluU3RhdHVzLnNpZ25lZE91dCgpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yPERhdGFUeXBlPihyZXNwb25zZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yPERhdGFUeXBlPihlcnJvcilcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlRXJyb3I8RGF0YVR5cGU+KGVycm9yOiBhbnkpOiBBcGlSZXNwb25zZTxEYXRhVHlwZT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYEJhY2tlbmQgcmV0dXJuZWQgY29kZSAke2Vycm9yLnN0YXR1c30sIGAgK1xuICAgICAgICAgICAgYGZ1bGwgZXJyb3I6IGAsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBcGlSZXNwb25zZTxEYXRhVHlwZT4oJ2Vycm9yJylcbiAgICB9XG5cbiAgICBhc3luYyBnZXQ8RGF0YVR5cGU+KGVuZHBvaW50OiBzdHJpbmcsIHF1ZXJ5UGFyYW1zT2JqPzogYW55ICk6IFByb21pc2U8QXBpUmVzcG9uc2U8RGF0YVR5cGU+PiB7XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuaG9zdCArIGVuZHBvaW50LnJlcGxhY2UoL15cXC8rLywgJycpICsgdGhpcy5idWlsZFF1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zT2JqKVxuICAgICAgICBjb25zdCBmZXRjaE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgbW9kZTogJ2NvcnMnLFxuICAgICAgICAgICAgcmVkaXJlY3Q6ICdlcnJvcidcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgZmV0Y2hPcHRpb25zLCBudWxsKVxuICAgIH1cblxuICAgIGFzeW5jIHBvc3Q8RGF0YVR5cGU+KHBhdGhXaXRoUXVlcnlQYXJhbXM6IHN0cmluZywgZGF0YTogYW55KTogUHJvbWlzZTxBcGlSZXNwb25zZTxEYXRhVHlwZT4+IHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5ob3N0ICsgcGF0aFdpdGhRdWVyeVBhcmFtcy5yZXBsYWNlKC9eXFwvKy8sICcnKVxuICAgICAgICBjb25zdCBmZXRjaE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICBtb2RlOiAnY29ycycsXG4gICAgICAgICAgICByZWRpcmVjdDogJ2Vycm9yJyxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoZGF0YSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgZmV0Y2hPcHRpb25zLCBkYXRhKSAgICAgICAgXG4gICAgfVxuXG4gICAgLy8gYXN5bmMgcG9zdEZvcm1XaXRoRmlsZXMocGF0aFdpdGhRdWVyeVBhcmFtczogc3RyaW5nLCBmb3JtRGF0YTogRm9ybURhdGEpOiBQcm9taXNlPEFwaVJlc3BvbnNlIHwgbnVsbD4ge1xuICAgIC8vICAgICBjb25zdCB1cmwgPSB0aGlzLmhvc3QgKyBwYXRoV2l0aFF1ZXJ5UGFyYW1zLnJlcGxhY2UoL15cXC8rLywgJycpXG4gICAgLy8gICAgIHRyeSB7XG4gICAgLy8gICAgICAgICBjb25zdCBmZXRjaE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgIC8vICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIC8vICAgICAgICAgICAgIG1vZGU6ICdjb3JzJyxcbiAgICAvLyAgICAgICAgICAgICByZWRpcmVjdDogJ2Vycm9yJyxcbiAgICAvLyAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbkluY2x1ZGVkID0gdGhpcy5pbmNsdWRlQWNjZXNzVG9rZW4oZmV0Y2hPcHRpb25zKVxuXG4gICAgLy8gICAgICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCBmZXRjaE9wdGlvbnMpXG5cbiAgICAvLyAgICAgICAgIGlmICgocmVzcG9uc2Uuc3RhdHVzID09PSA0MDEpICYmIGFjY2Vzc1Rva2VuSW5jbHVkZWQpIHtcbiAgICAvLyAgICAgICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVmcmVzaEFjY2Vzc1Rva2VuQW5kUmV0cnkodXJsLCBmZXRjaE9wdGlvbnMsIHJlc3BvbnNlKVxuICAgIC8vICAgICAgICAgfVxuXG4gICAgLy8gICAgICAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAvLyAgICAgICAgICAgICByZXR1cm4gKChhd2FpdCAocmVzcG9uc2UuanNvbigpKSBhcyBBcGlSZXNwb25zZSkpXG4gICAgLy8gICAgICAgICB9XG5cbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUVycm9yKHJlc3BvbnNlKVxuICAgIC8vICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vICAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpXG4gICAgLy8gICAgIH1cbiAgICAvLyB9XG5cbiAgICBwcml2YXRlIGluY2x1ZGVBY2Nlc3NUb2tlbihvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy5hY2Nlc3NUb2tlbiA9IHRoaXMudG9rZW5zLmdldEFjY2Vzc1Rva2VuKClcbiAgICAgICAgaWYgKCF0aGlzLmFjY2Vzc1Rva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSB7fVxuICAgICAgICB9XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gJ0JlYXJlciAnICsgdGhpcy5hY2Nlc3NUb2tlblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgcmVmcmVzaEFjY2Vzc1Rva2VuQW5kUmV0cnkodXJsOiBzdHJpbmcsIGZldGNoT3B0aW9uczogYW55LCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG5cbiAgICAgICAgY29uc3QgcmVmcmVzaFN0YXR1c09rID0gYXdhaXQgdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4oKVxuICAgICAgICBpZiAoIXJlZnJlc2hTdGF0dXNPaykge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgIH1cblxuICAgICAgICBmZXRjaE9wdGlvbnMuaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gJ0JlYXJlciAnICsgdGhpcy5hY2Nlc3NUb2tlblxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgZmV0Y2hPcHRpb25zKVxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICB9XG5cbiAgICBhc3luYyByZWZyZXNoQWNjZXNzVG9rZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5zLmdldFJlZnJlc2hUb2tlbigpXG4gICAgICAgIGlmICghcmVmcmVzaFRva2VuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlZnJlc2hUb2tlblVybCA9IHRoaXMuaG9zdCArICd1c2VyL3JlZnJlc2hfYWNjZXNzJ1xuICAgICAgICBsZXQgcmVmcmVzaFRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChyZWZyZXNoVG9rZW5VcmwsIHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgbW9kZTogJ2NvcnMnLFxuICAgICAgICAgICAgcmVkaXJlY3Q6ICdlcnJvcicsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgICAgICBhY2Nlc3NfdG9rZW46IHRoaXMuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICAgICAgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgICBpZiAoIXJlZnJlc2hUb2tlblJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gJydcbiAgICAgICAgICAgIHRoaXMudG9rZW5zLmNsZWFyKClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlZnJlc2hBY2Nlc3NEYXRhID0gYXdhaXQgcmVmcmVzaFRva2VuUmVzcG9uc2UuanNvbigpXG4gICAgICAgIGlmICghcmVmcmVzaEFjY2Vzc0RhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudG9rZW5zLnNldFRva2VucyhyZWZyZXNoQWNjZXNzRGF0YS5kYXRhLmFjY2Vzc190b2tlbiwgcmVmcmVzaFRva2VuKVxuICAgICAgICB0aGlzLmFjY2Vzc1Rva2VuID0gcmVmcmVzaEFjY2Vzc0RhdGEuZGF0YS5hY2Nlc3NfdG9rZW5cblxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGJ1aWxkUXVlcnlTdHJpbmcob3B0aW9ucz86IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXJyYXkgPSBbXVxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gb3B0aW9ucykge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAob3B0aW9uc1trZXldICE9PSBudWxsKSAmJiAob3B0aW9uc1trZXldICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkucHVzaChlbmNvZGVVUklDb21wb25lbnQoa2V5KSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KG9wdGlvbnNba2V5XSkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RyID0gYXJyYXkuam9pbignJicpXG4gICAgICAgIGlmIChzdHIgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gJz8nICsgc3RyXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJydcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export class ApiResponse {
|
|
2
|
-
constructor(status, data = {}, message = '') {
|
|
3
|
-
this.status = status;
|
|
4
|
-
this.data = data;
|
|
5
|
-
this.message = message;
|
|
6
|
-
}
|
|
7
|
-
onOk(callback) {
|
|
8
|
-
if (this.status === 'ok') {
|
|
9
|
-
callback(this.data);
|
|
10
|
-
}
|
|
11
|
-
return this;
|
|
12
|
-
}
|
|
13
|
-
onNotOk(callback) {
|
|
14
|
-
if (this.status === 'not ok') {
|
|
15
|
-
callback(this.message, this.data);
|
|
16
|
-
}
|
|
17
|
-
return this;
|
|
18
|
-
}
|
|
19
|
-
onError(callback) {
|
|
20
|
-
if (this.status === 'error') {
|
|
21
|
-
callback();
|
|
22
|
-
}
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXJlc3BvbnNlLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0b25lc2NyaXB0cGhwLWNsaWVudC9zcmMvbGliL2FwaS1yZXNwb25zZS5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sV0FBVztJQUtwQixZQUFZLE1BQWMsRUFBRSxPQUFZLEVBQUUsRUFBRSxVQUFrQixFQUFFO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO0lBQzFCLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBa0M7UUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtZQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3RCO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQW1EO1FBQ3ZELElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUU7WUFDMUIsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ3BDO1FBQ0QsT0FBTyxJQUFJLENBQUE7SUFDZixDQUFDO0lBRUQsT0FBTyxDQUFDLFFBQW9CO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLEVBQUU7WUFDekIsUUFBUSxFQUFFLENBQUE7U0FDYjtRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFwaVJlc3BvbnNlPERhdGFUeXBlPiB7XG4gICAgcHJpdmF0ZSBzdGF0dXM6IHN0cmluZ1xuICAgIHByaXZhdGUgZGF0YTogYW55XG4gICAgcHJpdmF0ZSBtZXNzYWdlOiBzdHJpbmdcblxuICAgIGNvbnN0cnVjdG9yKHN0YXR1czogc3RyaW5nLCBkYXRhOiBhbnkgPSB7fSwgbWVzc2FnZTogc3RyaW5nID0gJycpIHtcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXNcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YVxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgfVxuXG4gICAgb25PayhjYWxsYmFjazogKGRhdGE6IERhdGFUeXBlKSA9PiB2b2lkKTogQXBpUmVzcG9uc2U8RGF0YVR5cGU+IHtcbiAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICBjYWxsYmFjayh0aGlzLmRhdGEpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICB9XG5cbiAgICBvbk5vdE9rKGNhbGxiYWNrOiAobWVzc2FnZTogc3RyaW5nLCBkYXRhOiBEYXRhVHlwZSkgPT4gdm9pZCk6IEFwaVJlc3BvbnNlPERhdGFUeXBlPiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gJ25vdCBvaycpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMubWVzc2FnZSwgdGhpcy5kYXRhKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgb25FcnJvcihjYWxsYmFjazogKCkgPT4gdm9pZCk6IEFwaVJlc3BvbnNlPERhdGFUeXBlPiB7XG4gICAgICAgIGlmICh0aGlzLnN0YXR1cyA9PT0gJ2Vycm9yJykge1xuICAgICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzXG4gICAgfVxufSJdfQ==
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class AuthService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, providedIn: 'root' }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthService, decorators: [{
|
|
9
|
-
type: Injectable,
|
|
10
|
-
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
}]
|
|
13
|
-
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXN0b25lc2NyaXB0cGhwLWNsaWVudC9zcmMvbGliL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sV0FBVztJQUV0QixnQkFBZ0IsQ0FBQzsrR0FGTixXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG59XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class DbService {
|
|
4
|
-
constructor() { }
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, providedIn: 'root' }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DbService, decorators: [{
|
|
9
|
-
type: Injectable,
|
|
10
|
-
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
}]
|
|
13
|
-
}], ctorParameters: function () { return []; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zdG9uZXNjcmlwdHBocC1jbGllbnQvc3JjL2xpYi9kYi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxTQUFTO0lBRXBCLGdCQUFnQixDQUFDOytHQUZOLFNBQVM7bUhBQVQsU0FBUyxjQUZSLE1BQU07OzRGQUVQLFNBQVM7a0JBSHJCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEYlNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG59XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export class MyEnvironmentModel {
|
|
2
|
-
constructor() {
|
|
3
|
-
this.production = true;
|
|
4
|
-
this.firebase = {
|
|
5
|
-
projectId: '',
|
|
6
|
-
appId: '',
|
|
7
|
-
databaseURL: '',
|
|
8
|
-
storageBucket: '',
|
|
9
|
-
locationId: '',
|
|
10
|
-
apiKey: '',
|
|
11
|
-
authDomain: '',
|
|
12
|
-
messagingSenderId: '',
|
|
13
|
-
measurementId: ''
|
|
14
|
-
};
|
|
15
|
-
this.apiServer = { host: '' };
|
|
16
|
-
this.chatServer = { host: '' };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXktZW52aXJvbm1lbnQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc3RvbmVzY3JpcHRwaHAtY2xpZW50L3NyYy9saWIvbXktZW52aXJvbm1lbnQubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNJLGVBQVUsR0FBWSxJQUFJLENBQUE7UUFDMUIsYUFBUSxHQVVKO1lBQ0ksU0FBUyxFQUFFLEVBQUU7WUFDYixLQUFLLEVBQUUsRUFBRTtZQUNULFdBQVcsRUFBRSxFQUFFO1lBQ2YsYUFBYSxFQUFFLEVBQUU7WUFDakIsVUFBVSxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsRUFBRTtZQUNWLFVBQVUsRUFBRSxFQUFFO1lBQ2QsaUJBQWlCLEVBQUUsRUFBRTtZQUNyQixhQUFhLEVBQUUsRUFBRTtTQUNwQixDQUFBO1FBQ0wsY0FBUyxHQUVMLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFBO1FBQ2hCLGVBQVUsR0FFTixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyQixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgTXlFbnZpcm9ubWVudE1vZGVsIHtcbiAgICBwcm9kdWN0aW9uOiBib29sZWFuID0gdHJ1ZVxuICAgIGZpcmViYXNlOiB7XG4gICAgICAgIHByb2plY3RJZDogc3RyaW5nXG4gICAgICAgIGFwcElkOiBzdHJpbmdcbiAgICAgICAgZGF0YWJhc2VVUkw6IHN0cmluZ1xuICAgICAgICBzdG9yYWdlQnVja2V0OiBzdHJpbmdcbiAgICAgICAgbG9jYXRpb25JZDogc3RyaW5nXG4gICAgICAgIGFwaUtleTogc3RyaW5nXG4gICAgICAgIGF1dGhEb21haW46IHN0cmluZ1xuICAgICAgICBtZXNzYWdpbmdTZW5kZXJJZDogc3RyaW5nXG4gICAgICAgIG1lYXN1cmVtZW50SWQ6IHN0cmluZ1xuICAgIH0gPSB7XG4gICAgICAgICAgICBwcm9qZWN0SWQ6ICcnLFxuICAgICAgICAgICAgYXBwSWQ6ICcnLFxuICAgICAgICAgICAgZGF0YWJhc2VVUkw6ICcnLFxuICAgICAgICAgICAgc3RvcmFnZUJ1Y2tldDogJycsXG4gICAgICAgICAgICBsb2NhdGlvbklkOiAnJyxcbiAgICAgICAgICAgIGFwaUtleTogJycsXG4gICAgICAgICAgICBhdXRoRG9tYWluOiAnJyxcbiAgICAgICAgICAgIG1lc3NhZ2luZ1NlbmRlcklkOiAnJyxcbiAgICAgICAgICAgIG1lYXN1cmVtZW50SWQ6ICcnXG4gICAgICAgIH1cbiAgICBhcGlTZXJ2ZXI6IHtcbiAgICAgICAgaG9zdDogc3RyaW5nXG4gICAgfSA9IHsgaG9zdDogJycgfVxuICAgIGNoYXRTZXJ2ZXI6IHtcbiAgICAgICAgaG9zdDogc3RyaW5nXG4gICAgfSA9IHsgaG9zdDogJycgfTtcbn0iXX0=
|