@progalaxyelabs/ngx-stonescriptphp-client 1.0.4 → 1.1.0

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 (64) hide show
  1. package/dist/api-connection.service.d.ts +35 -0
  2. package/dist/api-connection.service.d.ts.map +1 -0
  3. package/dist/api-connection.service.js +314 -0
  4. package/dist/api-connection.service.js.map +1 -0
  5. package/dist/api-response.model.d.ts +16 -0
  6. package/dist/api-response.model.d.ts.map +1 -0
  7. package/dist/api-response.model.js +51 -0
  8. package/dist/api-response.model.js.map +1 -0
  9. package/dist/auth.service.d.ts +4 -0
  10. package/dist/auth.service.d.ts.map +1 -0
  11. package/dist/auth.service.js +16 -0
  12. package/dist/auth.service.js.map +1 -0
  13. package/dist/csrf.service.d.ts +22 -0
  14. package/dist/csrf.service.d.ts.map +1 -0
  15. package/dist/csrf.service.js +47 -0
  16. package/dist/csrf.service.js.map +1 -0
  17. package/dist/db.service.d.ts +4 -0
  18. package/dist/db.service.d.ts.map +1 -0
  19. package/dist/db.service.js +16 -0
  20. package/dist/db.service.js.map +1 -0
  21. package/dist/{ngx-stonescriptphp-client/fesm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs → esm/api-connection.service.js} +27 -275
  22. package/dist/esm/api-connection.service.js.map +1 -0
  23. package/dist/esm/api-response.model.js +47 -0
  24. package/dist/esm/api-response.model.js.map +1 -0
  25. package/dist/esm/auth.service.js +13 -0
  26. package/dist/esm/auth.service.js.map +1 -0
  27. package/dist/esm/csrf.service.js +44 -0
  28. package/dist/esm/csrf.service.js.map +1 -0
  29. package/dist/esm/db.service.js +13 -0
  30. package/dist/esm/db.service.js.map +1 -0
  31. package/dist/esm/index.js +13 -0
  32. package/dist/esm/index.js.map +1 -0
  33. package/dist/esm/my-environment.model.js +29 -0
  34. package/dist/esm/my-environment.model.js.map +1 -0
  35. package/dist/esm/ngx-stonescriptphp-client.module.js +25 -0
  36. package/dist/esm/ngx-stonescriptphp-client.module.js.map +1 -0
  37. package/dist/esm/signin-status.service.js +23 -0
  38. package/dist/esm/signin-status.service.js.map +1 -0
  39. package/dist/esm/token.service.js +61 -0
  40. package/dist/esm/token.service.js.map +1 -0
  41. package/dist/index.d.ts +10 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +16 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/my-environment.model.d.ts +61 -0
  46. package/dist/my-environment.model.d.ts.map +1 -0
  47. package/dist/my-environment.model.js +33 -0
  48. package/dist/my-environment.model.js.map +1 -0
  49. package/dist/ngx-stonescriptphp-client.module.d.ts +6 -0
  50. package/dist/ngx-stonescriptphp-client.module.d.ts.map +1 -0
  51. package/dist/ngx-stonescriptphp-client.module.js +28 -0
  52. package/dist/ngx-stonescriptphp-client.module.js.map +1 -0
  53. package/dist/signin-status.service.d.ts +8 -0
  54. package/dist/signin-status.service.d.ts.map +1 -0
  55. package/dist/signin-status.service.js +26 -0
  56. package/dist/signin-status.service.js.map +1 -0
  57. package/dist/token.service.d.ts +14 -0
  58. package/dist/token.service.d.ts.map +1 -0
  59. package/dist/token.service.js +64 -0
  60. package/dist/token.service.js.map +1 -0
  61. package/package.json +18 -34
  62. package/dist/ngx-stonescriptphp-client/README.md +0 -186
  63. package/dist/ngx-stonescriptphp-client/fesm2022/progalaxyelabs-ngx-stonescriptphp-client.mjs.map +0 -1
  64. package/dist/ngx-stonescriptphp-client/index.d.ts +0 -184
@@ -0,0 +1,10 @@
1
+ export * from './api-connection.service';
2
+ export * from './auth.service';
3
+ export * from './db.service';
4
+ export * from './signin-status.service';
5
+ export * from './token.service';
6
+ export * from './csrf.service';
7
+ export * from './api-response.model';
8
+ export * from './my-environment.model';
9
+ export * from './ngx-stonescriptphp-client.module';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /*
3
+ * Public API Surface of ngx-stonescriptphp-client
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tslib_1 = require("tslib");
7
+ tslib_1.__exportStar(require("./api-connection.service"), exports);
8
+ tslib_1.__exportStar(require("./auth.service"), exports);
9
+ tslib_1.__exportStar(require("./db.service"), exports);
10
+ tslib_1.__exportStar(require("./signin-status.service"), exports);
11
+ tslib_1.__exportStar(require("./token.service"), exports);
12
+ tslib_1.__exportStar(require("./csrf.service"), exports);
13
+ tslib_1.__exportStar(require("./api-response.model"), exports);
14
+ tslib_1.__exportStar(require("./my-environment.model"), exports);
15
+ tslib_1.__exportStar(require("./ngx-stonescriptphp-client.module"), exports);
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mEAAyC;AACzC,yDAA+B;AAC/B,uDAA6B;AAC7B,kEAAwC;AACxC,0DAAgC;AAChC,yDAA+B;AAC/B,+DAAqC;AACrC,iEAAuC;AACvC,6EAAmD"}
@@ -0,0 +1,61 @@
1
+ export type AuthMode = 'cookie' | 'body' | 'none';
2
+ export interface AuthConfig {
3
+ /**
4
+ * Authentication mode:
5
+ * - 'cookie': Use httpOnly cookies + CSRF tokens (recommended, matches StoneScriptPHP v2.1.x)
6
+ * - 'body': Send tokens in request body (legacy mode)
7
+ * - 'none': No automatic token refresh
8
+ */
9
+ mode: AuthMode;
10
+ /**
11
+ * Token refresh endpoint path
12
+ * @default '/auth/refresh' for cookie mode, '/user/refresh_access' for body mode
13
+ */
14
+ refreshEndpoint?: string;
15
+ /**
16
+ * Enable CSRF token support (required for cookie mode)
17
+ * @default true for cookie mode, false for body mode
18
+ */
19
+ useCsrf?: boolean;
20
+ /**
21
+ * Cookie name for refresh token
22
+ * @default 'refresh_token'
23
+ */
24
+ refreshTokenCookieName?: string;
25
+ /**
26
+ * Cookie name for CSRF token
27
+ * @default 'csrf_token'
28
+ */
29
+ csrfTokenCookieName?: string;
30
+ /**
31
+ * CSRF header name
32
+ * @default 'X-CSRF-Token'
33
+ */
34
+ csrfHeaderName?: string;
35
+ }
36
+ export declare class MyEnvironmentModel {
37
+ production: boolean;
38
+ firebase: {
39
+ projectId: string;
40
+ appId: string;
41
+ databaseURL: string;
42
+ storageBucket: string;
43
+ locationId: string;
44
+ apiKey: string;
45
+ authDomain: string;
46
+ messagingSenderId: string;
47
+ measurementId: string;
48
+ };
49
+ apiServer: {
50
+ host: string;
51
+ };
52
+ chatServer: {
53
+ host: string;
54
+ };
55
+ /**
56
+ * Authentication configuration
57
+ * @default { mode: 'cookie', refreshEndpoint: '/auth/refresh', useCsrf: true }
58
+ */
59
+ auth?: AuthConfig;
60
+ }
61
+ //# sourceMappingURL=my-environment.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-environment.model.d.ts","sourceRoot":"","sources":["../src/my-environment.model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,UAAU;IACvB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,kBAAkB;IAC3B,UAAU,EAAE,OAAO,CAAO;IAC1B,QAAQ,EAAE;QACN,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,UAAU,EAAE,MAAM,CAAA;QAClB,iBAAiB,EAAE,MAAM,CAAA;QACzB,aAAa,EAAE,MAAM,CAAA;KACxB,CAUI;IACL,SAAS,EAAE;QACP,IAAI,EAAE,MAAM,CAAA;KACf,CAAe;IAChB,UAAU,EAAE;QACR,IAAI,EAAE,MAAM,CAAA;KACf,CAAe;IAEhB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAOf;CACL"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MyEnvironmentModel = void 0;
4
+ class MyEnvironmentModel {
5
+ production = true;
6
+ firebase = {
7
+ projectId: '',
8
+ appId: '',
9
+ databaseURL: '',
10
+ storageBucket: '',
11
+ locationId: '',
12
+ apiKey: '',
13
+ authDomain: '',
14
+ messagingSenderId: '',
15
+ measurementId: ''
16
+ };
17
+ apiServer = { host: '' };
18
+ chatServer = { host: '' };
19
+ /**
20
+ * Authentication configuration
21
+ * @default { mode: 'cookie', refreshEndpoint: '/auth/refresh', useCsrf: true }
22
+ */
23
+ auth = {
24
+ mode: 'cookie',
25
+ refreshEndpoint: '/auth/refresh',
26
+ useCsrf: true,
27
+ refreshTokenCookieName: 'refresh_token',
28
+ csrfTokenCookieName: 'csrf_token',
29
+ csrfHeaderName: 'X-CSRF-Token'
30
+ };
31
+ }
32
+ exports.MyEnvironmentModel = MyEnvironmentModel;
33
+ //# sourceMappingURL=my-environment.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"my-environment.model.js","sourceRoot":"","sources":["../src/my-environment.model.ts"],"names":[],"mappings":";;;AA0CA,MAAa,kBAAkB;IAC3B,UAAU,GAAY,IAAI,CAAA;IAC1B,QAAQ,GAUJ;QACI,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,EAAE;QACd,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE,EAAE;KACpB,CAAA;IACL,SAAS,GAEL,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAChB,UAAU,GAEN,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAEhB;;;OAGG;IACH,IAAI,GAAgB;QAChB,IAAI,EAAE,QAAQ;QACd,eAAe,EAAE,eAAe;QAChC,OAAO,EAAE,IAAI;QACb,sBAAsB,EAAE,eAAe;QACvC,mBAAmB,EAAE,YAAY;QACjC,cAAc,EAAE,cAAc;KACjC,CAAC;CACL;AA1CD,gDA0CC"}
@@ -0,0 +1,6 @@
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import { MyEnvironmentModel } from './my-environment.model';
3
+ export declare class NgxStoneScriptPhpClientModule {
4
+ static forRoot(environment: MyEnvironmentModel): ModuleWithProviders<NgxStoneScriptPhpClientModule>;
5
+ }
6
+ //# sourceMappingURL=ngx-stonescriptphp-client.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-stonescriptphp-client.module.d.ts","sourceRoot":"","sources":["../src/ngx-stonescriptphp-client.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBAMa,6BAA6B;WACxB,OAAO,CAAC,WAAW,EAAE,kBAAkB,GAAG,mBAAmB,CAAC,6BAA6B,CAAC;CAQ7G"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var NgxStoneScriptPhpClientModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NgxStoneScriptPhpClientModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const core_1 = require("@angular/core");
7
+ const common_1 = require("@angular/common");
8
+ const my_environment_model_1 = require("./my-environment.model");
9
+ let NgxStoneScriptPhpClientModule = NgxStoneScriptPhpClientModule_1 = class NgxStoneScriptPhpClientModule {
10
+ static forRoot(environment) {
11
+ return {
12
+ ngModule: NgxStoneScriptPhpClientModule_1,
13
+ providers: [
14
+ { provide: my_environment_model_1.MyEnvironmentModel, useValue: environment }
15
+ ]
16
+ };
17
+ }
18
+ };
19
+ exports.NgxStoneScriptPhpClientModule = NgxStoneScriptPhpClientModule;
20
+ exports.NgxStoneScriptPhpClientModule = NgxStoneScriptPhpClientModule = NgxStoneScriptPhpClientModule_1 = tslib_1.__decorate([
21
+ (0, core_1.NgModule)({
22
+ declarations: [],
23
+ imports: [
24
+ common_1.CommonModule
25
+ ]
26
+ })
27
+ ], NgxStoneScriptPhpClientModule);
28
+ //# sourceMappingURL=ngx-stonescriptphp-client.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-stonescriptphp-client.module.js","sourceRoot":"","sources":["../src/ngx-stonescriptphp-client.module.ts"],"names":[],"mappings":";;;;;AAAA,wCAA8D;AAC9D,4CAA+C;AAC/C,iEAA4D;AAUrD,IAAM,6BAA6B,qCAAnC,MAAM,6BAA6B;IAC/B,MAAM,CAAC,OAAO,CAAC,WAA+B;QACjD,OAAO;YACH,QAAQ,EAAE,+BAA6B;YACvC,SAAS,EAAE;gBACP,EAAE,OAAO,EAAE,yCAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE;aACzD;SACJ,CAAA;IACL,CAAC;CACJ,CAAA;AATY,sEAA6B;wCAA7B,6BAA6B;IANzC,IAAA,eAAQ,EAAC;QACN,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE;YACL,qBAAY;SACf;KACJ,CAAC;GACW,6BAA6B,CASzC"}
@@ -0,0 +1,8 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ export declare class SigninStatusService {
3
+ status: BehaviorSubject<boolean>;
4
+ constructor();
5
+ signedOut(): void;
6
+ signedIn(): void;
7
+ }
8
+ //# sourceMappingURL=signin-status.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signin-status.service.d.ts","sourceRoot":"","sources":["../src/signin-status.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAEvC,qBAGa,mBAAmB;IACrB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;;IAMvC,SAAS,IAAI,IAAI;IAIjB,QAAQ,IAAI,IAAI;CAGnB"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SigninStatusService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@angular/core");
6
+ const rxjs_1 = require("rxjs");
7
+ let SigninStatusService = class SigninStatusService {
8
+ status;
9
+ constructor() {
10
+ this.status = new rxjs_1.BehaviorSubject(false);
11
+ }
12
+ signedOut() {
13
+ this.status.next(false);
14
+ }
15
+ signedIn() {
16
+ this.status.next(true);
17
+ }
18
+ };
19
+ exports.SigninStatusService = SigninStatusService;
20
+ exports.SigninStatusService = SigninStatusService = tslib_1.__decorate([
21
+ (0, core_1.Injectable)({
22
+ providedIn: 'root'
23
+ }),
24
+ tslib_1.__metadata("design:paramtypes", [])
25
+ ], SigninStatusService);
26
+ //# sourceMappingURL=signin-status.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signin-status.service.js","sourceRoot":"","sources":["../src/signin-status.service.ts"],"names":[],"mappings":";;;;AAAA,wCAA2C;AAC3C,+BAAuC;AAKhC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACrB,MAAM,CAA0B;IAEvC;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAe,CAAU,KAAK,CAAC,CAAA;IACrD,CAAC;IAED,SAAS;QACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;CACJ,CAAA;AAdY,kDAAmB;8BAAnB,mBAAmB;IAH/B,IAAA,iBAAU,EAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;;GACW,mBAAmB,CAc/B"}
@@ -0,0 +1,14 @@
1
+ export declare class TokenService {
2
+ private accessToken;
3
+ private refreshToken;
4
+ private lsAccessTokenKey;
5
+ private lsRefreshTokenKey;
6
+ constructor();
7
+ setTokens(accessToken: string, refreshToken: string): void;
8
+ setAccessToken(accessToken: string): void;
9
+ setRefreshToken(refreshToken: string): void;
10
+ getAccessToken(): string;
11
+ getRefreshToken(): string;
12
+ clear(): void;
13
+ }
14
+ //# sourceMappingURL=token.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.service.d.ts","sourceRoot":"","sources":["../src/token.service.ts"],"names":[],"mappings":"AAEA,qBAGa,YAAY;IACrB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IAEzB,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,iBAAiB,CAA+B;;IAIxD,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAOnD,cAAc,CAAC,WAAW,EAAE,MAAM;IAKlC,eAAe,CAAC,YAAY,EAAE,MAAM;IAKpC,cAAc;IAad,eAAe;IAaf,KAAK;CAMR"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@angular/core");
6
+ let TokenService = class TokenService {
7
+ accessToken = '';
8
+ refreshToken = '';
9
+ lsAccessTokenKey = 'progalaxyapi_access_token';
10
+ lsRefreshTokenKey = 'progalaxyapi_refresh_token';
11
+ constructor() { }
12
+ setTokens(accessToken, refreshToken) {
13
+ this.accessToken = accessToken;
14
+ this.refreshToken = refreshToken;
15
+ localStorage.setItem(this.lsAccessTokenKey, accessToken);
16
+ localStorage.setItem(this.lsRefreshTokenKey, refreshToken);
17
+ }
18
+ setAccessToken(accessToken) {
19
+ this.accessToken = accessToken;
20
+ localStorage.setItem(this.lsAccessTokenKey, accessToken);
21
+ }
22
+ setRefreshToken(refreshToken) {
23
+ this.refreshToken = refreshToken;
24
+ localStorage.setItem(this.lsRefreshTokenKey, refreshToken);
25
+ }
26
+ getAccessToken() {
27
+ if (this.accessToken) {
28
+ return this.accessToken;
29
+ }
30
+ const storedAccessToken = localStorage.getItem(this.lsAccessTokenKey);
31
+ if (storedAccessToken) {
32
+ return storedAccessToken;
33
+ }
34
+ else {
35
+ return '';
36
+ }
37
+ }
38
+ getRefreshToken() {
39
+ if (this.refreshToken) {
40
+ return this.refreshToken;
41
+ }
42
+ const storedRefreshToken = localStorage.getItem(this.lsRefreshTokenKey);
43
+ if (storedRefreshToken) {
44
+ return storedRefreshToken;
45
+ }
46
+ else {
47
+ return '';
48
+ }
49
+ }
50
+ clear() {
51
+ this.accessToken = '';
52
+ this.refreshToken = '';
53
+ localStorage.removeItem(this.lsAccessTokenKey);
54
+ localStorage.removeItem(this.lsRefreshTokenKey);
55
+ }
56
+ };
57
+ exports.TokenService = TokenService;
58
+ exports.TokenService = TokenService = tslib_1.__decorate([
59
+ (0, core_1.Injectable)({
60
+ providedIn: 'root'
61
+ }),
62
+ tslib_1.__metadata("design:paramtypes", [])
63
+ ], TokenService);
64
+ //# sourceMappingURL=token.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.service.js","sourceRoot":"","sources":["../src/token.service.ts"],"names":[],"mappings":";;;;AAAA,wCAA2C;AAKpC,IAAM,YAAY,GAAlB,MAAM,YAAY;IACb,WAAW,GAAG,EAAE,CAAA;IAChB,YAAY,GAAG,EAAE,CAAA;IAEjB,gBAAgB,GAAG,2BAA2B,CAAA;IAC9C,iBAAiB,GAAG,4BAA4B,CAAA;IAExD,gBAAgB,CAAC;IAEjB,SAAS,CAAC,WAAmB,EAAE,YAAoB;QAC/C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;QACxD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,cAAc,CAAC,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAA;IAC5D,CAAC;IAED,eAAe,CAAC,YAAoB;QAChC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAA;IAC9D,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,WAAW,CAAA;QAC3B,CAAC;QAED,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACrE,IAAI,iBAAiB,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAA;QAC5B,CAAC;aAAM,CAAC;YACJ,OAAO,EAAE,CAAA;QACb,CAAC;IACL,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAA;QAC5B,CAAC;QAED,MAAM,kBAAkB,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACvE,IAAI,kBAAkB,EAAE,CAAC;YACrB,OAAO,kBAAkB,CAAA;QAC7B,CAAC;aAAM,CAAC;YACJ,OAAO,EAAE,CAAA;QACb,CAAC;IACL,CAAC;IAED,KAAK;QACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACtB,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC9C,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;IACnD,CAAC;CACJ,CAAA;AA1DY,oCAAY;uBAAZ,YAAY;IAHxB,IAAA,iBAAU,EAAC;QACR,UAAU,EAAE,MAAM;KACrB,CAAC;;GACW,YAAY,CA0DxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progalaxyelabs/ngx-stonescriptphp-client",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "Angular client library for StoneScriptPHP backend framework",
5
5
  "keywords": [
6
6
  "angular",
@@ -24,7 +24,15 @@
24
24
  "url": "https://stonescriptphp.org"
25
25
  },
26
26
  "main": "dist/index.js",
27
+ "module": "dist/esm/index.js",
27
28
  "types": "dist/index.d.ts",
29
+ "exports": {
30
+ ".": {
31
+ "types": "./dist/index.d.ts",
32
+ "import": "./dist/esm/index.js",
33
+ "require": "./dist/index.js"
34
+ }
35
+ },
28
36
  "files": [
29
37
  "dist",
30
38
  "README.md",
@@ -33,50 +41,26 @@
33
41
  "docs"
34
42
  ],
35
43
  "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",
44
+ "build": "rm -rf dist && tsc && tsc -p tsconfig.esm.json",
45
+ "prepublishOnly": "npm run build",
46
+ "test": "echo \"No tests configured\"",
42
47
  "publish:npm": "npm publish --access public"
43
48
  },
44
49
  "private": false,
45
50
  "peerDependencies": {
46
51
  "@angular/common": "^19.0.0 || ^20.0.0",
47
- "@angular/core": "^19.0.0 || ^20.0.0",
48
- "rxjs": "^7.8.0"
52
+ "@angular/core": "^19.0.0 || ^20.0.0"
49
53
  },
50
54
  "dependencies": {
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"
55
+ "tslib": "^2.8.0"
63
56
  },
64
57
  "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",
58
+ "@angular/common": "^20.0.0",
59
+ "@angular/core": "^20.0.0",
77
60
  "typescript": "~5.8.0"
78
61
  },
79
62
  "publishConfig": {
80
63
  "access": "public"
81
- }
64
+ },
65
+ "sideEffects": false
82
66
  }
@@ -1,186 +0,0 @@
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**