@23blocks/angular 0.2.1 → 1.0.1

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.
@@ -1,22 +1,50 @@
1
1
  import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
2
  import { _ as _ts_metadata } from "@swc/helpers/_/_ts_metadata";
3
3
  import { _ as _ts_param } from "@swc/helpers/_/_ts_param";
4
- import { Injectable, Inject } from '@angular/core';
5
- import { from } from 'rxjs';
4
+ import { Injectable, Inject, Optional } from '@angular/core';
5
+ import { from, tap } from 'rxjs';
6
6
  import { createAuthenticationBlock } from '@23blocks/block-authentication';
7
7
  import { TRANSPORT, AUTHENTICATION_CONFIG } from '../tokens.js';
8
+ import { TOKEN_MANAGER, SIMPLE_CONFIG } from '../simple-providers.js';
8
9
  export class AuthenticationService {
10
+ /**
11
+ * Check if using simplified API with automatic token management
12
+ */ get isTokenMode() {
13
+ var _this_simpleConfig;
14
+ return this.tokenManager !== null && ((_this_simpleConfig = this.simpleConfig) == null ? void 0 : _this_simpleConfig.authMode) !== 'cookie';
15
+ }
9
16
  // ─────────────────────────────────────────────────────────────────────────────
10
17
  // Auth Service
11
18
  // ─────────────────────────────────────────────────────────────────────────────
12
- signIn(request) {
13
- return from(this.block.auth.signIn(request));
19
+ /**
20
+ * Sign in with email and password.
21
+ * When using simplified API (provideBlocks23), tokens are stored automatically.
22
+ */ signIn(request) {
23
+ return from(this.block.auth.signIn(request)).pipe(tap((response)=>{
24
+ if (this.isTokenMode && this.tokenManager && response.accessToken) {
25
+ this.tokenManager.setTokens(response.accessToken, response.refreshToken);
26
+ }
27
+ }));
14
28
  }
15
- signUp(request) {
16
- return from(this.block.auth.signUp(request));
29
+ /**
30
+ * Sign up a new user.
31
+ * When using simplified API, tokens are stored automatically if returned.
32
+ */ signUp(request) {
33
+ return from(this.block.auth.signUp(request)).pipe(tap((response)=>{
34
+ if (this.isTokenMode && this.tokenManager && response.accessToken) {
35
+ this.tokenManager.setTokens(response.accessToken);
36
+ }
37
+ }));
17
38
  }
18
- signOut() {
19
- return from(this.block.auth.signOut());
39
+ /**
40
+ * Sign out the current user.
41
+ * When using simplified API, tokens are cleared automatically.
42
+ */ signOut() {
43
+ return from(this.block.auth.signOut()).pipe(tap(()=>{
44
+ if (this.isTokenMode && this.tokenManager) {
45
+ this.tokenManager.clearTokens();
46
+ }
47
+ }));
20
48
  }
21
49
  requestPasswordReset(request) {
22
50
  return from(this.block.auth.requestPasswordReset(request));
@@ -85,6 +113,49 @@ export class AuthenticationService {
85
113
  return from(this.block.apiKeys.revoke(id));
86
114
  }
87
115
  // ─────────────────────────────────────────────────────────────────────────────
116
+ // Token Management (only applicable with provideBlocks23)
117
+ // ─────────────────────────────────────────────────────────────────────────────
118
+ /**
119
+ * Get the current access token (token mode only).
120
+ * Returns null if using cookie mode or no token is stored.
121
+ */ getAccessToken() {
122
+ var _this_tokenManager;
123
+ var _this_tokenManager_getAccessToken;
124
+ return (_this_tokenManager_getAccessToken = (_this_tokenManager = this.tokenManager) == null ? void 0 : _this_tokenManager.getAccessToken()) != null ? _this_tokenManager_getAccessToken : null;
125
+ }
126
+ /**
127
+ * Get the current refresh token (token mode only).
128
+ * Returns null if using cookie mode or no token is stored.
129
+ */ getRefreshToken() {
130
+ var _this_tokenManager;
131
+ var _this_tokenManager_getRefreshToken;
132
+ return (_this_tokenManager_getRefreshToken = (_this_tokenManager = this.tokenManager) == null ? void 0 : _this_tokenManager.getRefreshToken()) != null ? _this_tokenManager_getRefreshToken : null;
133
+ }
134
+ /**
135
+ * Manually set tokens (token mode only).
136
+ * Useful for SSR hydration or external auth flows.
137
+ */ setTokens(accessToken, refreshToken) {
138
+ var _this_tokenManager;
139
+ (_this_tokenManager = this.tokenManager) == null ? void 0 : _this_tokenManager.setTokens(accessToken, refreshToken);
140
+ }
141
+ /**
142
+ * Clear stored tokens.
143
+ */ clearTokens() {
144
+ var _this_tokenManager;
145
+ (_this_tokenManager = this.tokenManager) == null ? void 0 : _this_tokenManager.clearTokens();
146
+ }
147
+ /**
148
+ * Check if user is likely authenticated.
149
+ * In token mode: checks if token exists.
150
+ * In cookie mode: always returns null (use validateToken instead).
151
+ */ isAuthenticated() {
152
+ var _this_simpleConfig;
153
+ if (!this.tokenManager || ((_this_simpleConfig = this.simpleConfig) == null ? void 0 : _this_simpleConfig.authMode) === 'cookie') {
154
+ return null;
155
+ }
156
+ return !!this.tokenManager.getAccessToken();
157
+ }
158
+ // ─────────────────────────────────────────────────────────────────────────────
88
159
  // Direct Block Access (for advanced usage)
89
160
  // ─────────────────────────────────────────────────────────────────────────────
90
161
  /**
@@ -93,8 +164,10 @@ export class AuthenticationService {
93
164
  */ get rawBlock() {
94
165
  return this.block;
95
166
  }
96
- constructor(transport, config){
167
+ constructor(transport, config, tokenManager, simpleConfig){
97
168
  this.block = createAuthenticationBlock(transport, config);
169
+ this.tokenManager = tokenManager;
170
+ this.simpleConfig = simpleConfig;
98
171
  }
99
172
  }
100
173
  AuthenticationService = _ts_decorate([
@@ -103,10 +176,16 @@ AuthenticationService = _ts_decorate([
103
176
  }),
104
177
  _ts_param(0, Inject(TRANSPORT)),
105
178
  _ts_param(1, Inject(AUTHENTICATION_CONFIG)),
179
+ _ts_param(2, Optional()),
180
+ _ts_param(2, Inject(TOKEN_MANAGER)),
181
+ _ts_param(3, Optional()),
182
+ _ts_param(3, Inject(SIMPLE_CONFIG)),
106
183
  _ts_metadata("design:type", Function),
107
184
  _ts_metadata("design:paramtypes", [
108
185
  typeof Transport === "undefined" ? Object : Transport,
109
- typeof AuthenticationBlockConfig === "undefined" ? Object : AuthenticationBlockConfig
186
+ typeof AuthenticationBlockConfig === "undefined" ? Object : AuthenticationBlockConfig,
187
+ Object,
188
+ Object
110
189
  ])
111
190
  ], AuthenticationService);
112
191
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/authentication/authentication.service.ts"],"sourcesContent":["import { Injectable, Inject } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport type { Transport } from '@23blocks/contracts';\nimport {\n createAuthenticationBlock,\n type AuthenticationBlock,\n type AuthenticationBlockConfig,\n type User,\n type Role,\n type Permission,\n type SignInRequest,\n type SignInResponse,\n type SignUpRequest,\n type SignUpResponse,\n type PasswordResetRequest,\n type PasswordUpdateRequest,\n type TokenValidationResponse,\n type ApiKey,\n type ApiKeyWithSecret,\n type CreateApiKeyRequest,\n type UpdateApiKeyRequest,\n type UpdateUserRequest,\n type CreateRoleRequest,\n type UpdateRoleRequest,\n} from '@23blocks/block-authentication';\nimport { TRANSPORT, AUTHENTICATION_CONFIG } from '../tokens.js';\n\n/**\n * Angular service wrapping the Authentication block.\n * Converts Promise-based APIs to RxJS Observables.\n *\n * @example\n * ```typescript\n * @Component({...})\n * export class LoginComponent {\n * constructor(private auth: AuthenticationService) {}\n *\n * login(email: string, password: string) {\n * this.auth.signIn({ email, password }).subscribe({\n * next: (response) => console.log('Signed in:', response.user),\n * error: (err) => console.error('Failed:', err),\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class AuthenticationService {\n private readonly block: AuthenticationBlock;\n\n constructor(\n @Inject(TRANSPORT) transport: Transport,\n @Inject(AUTHENTICATION_CONFIG) config: AuthenticationBlockConfig\n ) {\n this.block = createAuthenticationBlock(transport, config);\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Auth Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n signIn(request: SignInRequest): Observable<SignInResponse> {\n return from(this.block.auth.signIn(request));\n }\n\n signUp(request: SignUpRequest): Observable<SignUpResponse> {\n return from(this.block.auth.signUp(request));\n }\n\n signOut(): Observable<void> {\n return from(this.block.auth.signOut());\n }\n\n requestPasswordReset(request: PasswordResetRequest): Observable<void> {\n return from(this.block.auth.requestPasswordReset(request));\n }\n\n updatePassword(request: PasswordUpdateRequest): Observable<void> {\n return from(this.block.auth.updatePassword(request));\n }\n\n validateToken(token: string): Observable<TokenValidationResponse> {\n return from(this.block.auth.validateToken(token));\n }\n\n getCurrentUser(): Observable<User | null> {\n return from(this.block.auth.getCurrentUser());\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Users Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listUsers(params?: { page?: number; perPage?: number }): Observable<User[]> {\n return from(this.block.users.list(params));\n }\n\n getUser(id: string): Observable<User> {\n return from(this.block.users.get(id));\n }\n\n updateUser(id: string, request: UpdateUserRequest): Observable<User> {\n return from(this.block.users.update(id, request));\n }\n\n deleteUser(id: string): Observable<void> {\n return from(this.block.users.delete(id));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Roles Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listRoles(): Observable<Role[]> {\n return from(this.block.roles.list());\n }\n\n getRole(id: string): Observable<Role> {\n return from(this.block.roles.get(id));\n }\n\n createRole(request: CreateRoleRequest): Observable<Role> {\n return from(this.block.roles.create(request));\n }\n\n updateRole(id: string, request: UpdateRoleRequest): Observable<Role> {\n return from(this.block.roles.update(id, request));\n }\n\n deleteRole(id: string): Observable<void> {\n return from(this.block.roles.delete(id));\n }\n\n listPermissions(): Observable<Permission[]> {\n return from(this.block.roles.listPermissions());\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // API Keys Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listApiKeys(): Observable<ApiKey[]> {\n return from(this.block.apiKeys.list());\n }\n\n getApiKey(id: string): Observable<ApiKey> {\n return from(this.block.apiKeys.get(id));\n }\n\n createApiKey(request: CreateApiKeyRequest): Observable<ApiKeyWithSecret> {\n return from(this.block.apiKeys.create(request));\n }\n\n updateApiKey(id: string, request: UpdateApiKeyRequest): Observable<ApiKey> {\n return from(this.block.apiKeys.update(id, request));\n }\n\n revokeApiKey(id: string): Observable<void> {\n return from(this.block.apiKeys.revoke(id));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Direct Block Access (for advanced usage)\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Access the underlying block for advanced operations\n * Use this when you need access to services not wrapped by this Angular service\n */\n get rawBlock(): AuthenticationBlock {\n return this.block;\n }\n}\n"],"names":["Injectable","Inject","from","createAuthenticationBlock","TRANSPORT","AUTHENTICATION_CONFIG","AuthenticationService","signIn","request","block","auth","signUp","signOut","requestPasswordReset","updatePassword","validateToken","token","getCurrentUser","listUsers","params","users","list","getUser","id","get","updateUser","update","deleteUser","delete","listRoles","roles","getRole","createRole","create","updateRole","deleteRole","listPermissions","listApiKeys","apiKeys","getApiKey","createApiKey","updateApiKey","revokeApiKey","revoke","rawBlock","constructor","transport","config","providedIn"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;AAAA,SAASA,UAAU,EAAEC,MAAM,QAAQ,gBAAgB;AACnD,SAAqBC,IAAI,QAAQ,OAAO;AAExC,SACEC,yBAAyB,QAoBpB,iCAAiC;AACxC,SAASC,SAAS,EAAEC,qBAAqB,QAAQ,eAAe;AAsBhE,OAAO,MAAMC;IAUX,gFAAgF;IAChF,eAAe;IACf,gFAAgF;IAEhFC,OAAOC,OAAsB,EAA8B;QACzD,OAAON,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACH,MAAM,CAACC;IACrC;IAEAG,OAAOH,OAAsB,EAA8B;QACzD,OAAON,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACC,MAAM,CAACH;IACrC;IAEAI,UAA4B;QAC1B,OAAOV,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACE,OAAO;IACrC;IAEAC,qBAAqBL,OAA6B,EAAoB;QACpE,OAAON,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACG,oBAAoB,CAACL;IACnD;IAEAM,eAAeN,OAA8B,EAAoB;QAC/D,OAAON,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACI,cAAc,CAACN;IAC7C;IAEAO,cAAcC,KAAa,EAAuC;QAChE,OAAOd,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACK,aAAa,CAACC;IAC5C;IAEAC,iBAA0C;QACxC,OAAOf,KAAK,IAAI,CAACO,KAAK,CAACC,IAAI,CAACO,cAAc;IAC5C;IAEA,gFAAgF;IAChF,gBAAgB;IAChB,gFAAgF;IAEhFC,UAAUC,MAA4C,EAAsB;QAC1E,OAAOjB,KAAK,IAAI,CAACO,KAAK,CAACW,KAAK,CAACC,IAAI,CAACF;IACpC;IAEAG,QAAQC,EAAU,EAAoB;QACpC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAACW,KAAK,CAACI,GAAG,CAACD;IACnC;IAEAE,WAAWF,EAAU,EAAEf,OAA0B,EAAoB;QACnE,OAAON,KAAK,IAAI,CAACO,KAAK,CAACW,KAAK,CAACM,MAAM,CAACH,IAAIf;IAC1C;IAEAmB,WAAWJ,EAAU,EAAoB;QACvC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAACW,KAAK,CAACQ,MAAM,CAACL;IACtC;IAEA,gFAAgF;IAChF,gBAAgB;IAChB,gFAAgF;IAEhFM,YAAgC;QAC9B,OAAO3B,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACT,IAAI;IACnC;IAEAU,QAAQR,EAAU,EAAoB;QACpC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACN,GAAG,CAACD;IACnC;IAEAS,WAAWxB,OAA0B,EAAoB;QACvD,OAAON,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACG,MAAM,CAACzB;IACtC;IAEA0B,WAAWX,EAAU,EAAEf,OAA0B,EAAoB;QACnE,OAAON,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACJ,MAAM,CAACH,IAAIf;IAC1C;IAEA2B,WAAWZ,EAAU,EAAoB;QACvC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACF,MAAM,CAACL;IACtC;IAEAa,kBAA4C;QAC1C,OAAOlC,KAAK,IAAI,CAACO,KAAK,CAACqB,KAAK,CAACM,eAAe;IAC9C;IAEA,gFAAgF;IAChF,mBAAmB;IACnB,gFAAgF;IAEhFC,cAAoC;QAClC,OAAOnC,KAAK,IAAI,CAACO,KAAK,CAAC6B,OAAO,CAACjB,IAAI;IACrC;IAEAkB,UAAUhB,EAAU,EAAsB;QACxC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAAC6B,OAAO,CAACd,GAAG,CAACD;IACrC;IAEAiB,aAAahC,OAA4B,EAAgC;QACvE,OAAON,KAAK,IAAI,CAACO,KAAK,CAAC6B,OAAO,CAACL,MAAM,CAACzB;IACxC;IAEAiC,aAAalB,EAAU,EAAEf,OAA4B,EAAsB;QACzE,OAAON,KAAK,IAAI,CAACO,KAAK,CAAC6B,OAAO,CAACZ,MAAM,CAACH,IAAIf;IAC5C;IAEAkC,aAAanB,EAAU,EAAoB;QACzC,OAAOrB,KAAK,IAAI,CAACO,KAAK,CAAC6B,OAAO,CAACK,MAAM,CAACpB;IACxC;IAEA,gFAAgF;IAChF,2CAA2C;IAC3C,gFAAgF;IAEhF;;;GAGC,GACD,IAAIqB,WAAgC;QAClC,OAAO,IAAI,CAACnC,KAAK;IACnB;IAzHAoC,YACE,AAAmBC,SAAoB,EACvC,AAA+BC,MAAiC,CAChE;QACA,IAAI,CAACtC,KAAK,GAAGN,0BAA0B2C,WAAWC;IACpD;AAqHF;AA7HazC;IADZN,WAAW;QAAEgD,YAAY;IAAO;IAK5B/C,aAAAA,OAAOG;IACPH,aAAAA,OAAOI;;;eADsB,qCAAA;eACS,qDAAA;;GAL9BC"}
1
+ {"version":3,"sources":["../../../src/lib/authentication/authentication.service.ts"],"sourcesContent":["import { Injectable, Inject, Optional } from '@angular/core';\nimport { Observable, from, tap } from 'rxjs';\nimport type { Transport } from '@23blocks/contracts';\nimport {\n createAuthenticationBlock,\n type AuthenticationBlock,\n type AuthenticationBlockConfig,\n type User,\n type Role,\n type Permission,\n type SignInRequest,\n type SignInResponse,\n type SignUpRequest,\n type SignUpResponse,\n type PasswordResetRequest,\n type PasswordUpdateRequest,\n type TokenValidationResponse,\n type ApiKey,\n type ApiKeyWithSecret,\n type CreateApiKeyRequest,\n type UpdateApiKeyRequest,\n type UpdateUserRequest,\n type CreateRoleRequest,\n type UpdateRoleRequest,\n} from '@23blocks/block-authentication';\nimport { TRANSPORT, AUTHENTICATION_CONFIG } from '../tokens.js';\nimport { TOKEN_MANAGER, SIMPLE_CONFIG, type TokenManagerService, type Simple23BlocksConfig } from '../simple-providers.js';\n\n/**\n * Angular service wrapping the Authentication block.\n * Converts Promise-based APIs to RxJS Observables.\n *\n * @example\n * ```typescript\n * @Component({...})\n * export class LoginComponent {\n * constructor(private auth: AuthenticationService) {}\n *\n * login(email: string, password: string) {\n * this.auth.signIn({ email, password }).subscribe({\n * next: (response) => console.log('Signed in:', response.user),\n * error: (err) => console.error('Failed:', err),\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class AuthenticationService {\n private readonly block: AuthenticationBlock;\n private readonly tokenManager: TokenManagerService | null;\n private readonly simpleConfig: Simple23BlocksConfig | null;\n\n constructor(\n @Inject(TRANSPORT) transport: Transport,\n @Inject(AUTHENTICATION_CONFIG) config: AuthenticationBlockConfig,\n @Optional() @Inject(TOKEN_MANAGER) tokenManager: TokenManagerService | null,\n @Optional() @Inject(SIMPLE_CONFIG) simpleConfig: Simple23BlocksConfig | null\n ) {\n this.block = createAuthenticationBlock(transport, config);\n this.tokenManager = tokenManager;\n this.simpleConfig = simpleConfig;\n }\n\n /**\n * Check if using simplified API with automatic token management\n */\n private get isTokenMode(): boolean {\n return this.tokenManager !== null && this.simpleConfig?.authMode !== 'cookie';\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Auth Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Sign in with email and password.\n * When using simplified API (provideBlocks23), tokens are stored automatically.\n */\n signIn(request: SignInRequest): Observable<SignInResponse> {\n return from(this.block.auth.signIn(request)).pipe(\n tap((response) => {\n if (this.isTokenMode && this.tokenManager && response.accessToken) {\n this.tokenManager.setTokens(response.accessToken, response.refreshToken);\n }\n })\n );\n }\n\n /**\n * Sign up a new user.\n * When using simplified API, tokens are stored automatically if returned.\n */\n signUp(request: SignUpRequest): Observable<SignUpResponse> {\n return from(this.block.auth.signUp(request)).pipe(\n tap((response) => {\n if (this.isTokenMode && this.tokenManager && response.accessToken) {\n this.tokenManager.setTokens(response.accessToken);\n }\n })\n );\n }\n\n /**\n * Sign out the current user.\n * When using simplified API, tokens are cleared automatically.\n */\n signOut(): Observable<void> {\n return from(this.block.auth.signOut()).pipe(\n tap(() => {\n if (this.isTokenMode && this.tokenManager) {\n this.tokenManager.clearTokens();\n }\n })\n );\n }\n\n requestPasswordReset(request: PasswordResetRequest): Observable<void> {\n return from(this.block.auth.requestPasswordReset(request));\n }\n\n updatePassword(request: PasswordUpdateRequest): Observable<void> {\n return from(this.block.auth.updatePassword(request));\n }\n\n validateToken(token: string): Observable<TokenValidationResponse> {\n return from(this.block.auth.validateToken(token));\n }\n\n getCurrentUser(): Observable<User | null> {\n return from(this.block.auth.getCurrentUser());\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Users Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listUsers(params?: { page?: number; perPage?: number }): Observable<User[]> {\n return from(this.block.users.list(params));\n }\n\n getUser(id: string): Observable<User> {\n return from(this.block.users.get(id));\n }\n\n updateUser(id: string, request: UpdateUserRequest): Observable<User> {\n return from(this.block.users.update(id, request));\n }\n\n deleteUser(id: string): Observable<void> {\n return from(this.block.users.delete(id));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Roles Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listRoles(): Observable<Role[]> {\n return from(this.block.roles.list());\n }\n\n getRole(id: string): Observable<Role> {\n return from(this.block.roles.get(id));\n }\n\n createRole(request: CreateRoleRequest): Observable<Role> {\n return from(this.block.roles.create(request));\n }\n\n updateRole(id: string, request: UpdateRoleRequest): Observable<Role> {\n return from(this.block.roles.update(id, request));\n }\n\n deleteRole(id: string): Observable<void> {\n return from(this.block.roles.delete(id));\n }\n\n listPermissions(): Observable<Permission[]> {\n return from(this.block.roles.listPermissions());\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // API Keys Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listApiKeys(): Observable<ApiKey[]> {\n return from(this.block.apiKeys.list());\n }\n\n getApiKey(id: string): Observable<ApiKey> {\n return from(this.block.apiKeys.get(id));\n }\n\n createApiKey(request: CreateApiKeyRequest): Observable<ApiKeyWithSecret> {\n return from(this.block.apiKeys.create(request));\n }\n\n updateApiKey(id: string, request: UpdateApiKeyRequest): Observable<ApiKey> {\n return from(this.block.apiKeys.update(id, request));\n }\n\n revokeApiKey(id: string): Observable<void> {\n return from(this.block.apiKeys.revoke(id));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Token Management (only applicable with provideBlocks23)\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Get the current access token (token mode only).\n * Returns null if using cookie mode or no token is stored.\n */\n getAccessToken(): string | null {\n return this.tokenManager?.getAccessToken() ?? null;\n }\n\n /**\n * Get the current refresh token (token mode only).\n * Returns null if using cookie mode or no token is stored.\n */\n getRefreshToken(): string | null {\n return this.tokenManager?.getRefreshToken() ?? null;\n }\n\n /**\n * Manually set tokens (token mode only).\n * Useful for SSR hydration or external auth flows.\n */\n setTokens(accessToken: string, refreshToken?: string): void {\n this.tokenManager?.setTokens(accessToken, refreshToken);\n }\n\n /**\n * Clear stored tokens.\n */\n clearTokens(): void {\n this.tokenManager?.clearTokens();\n }\n\n /**\n * Check if user is likely authenticated.\n * In token mode: checks if token exists.\n * In cookie mode: always returns null (use validateToken instead).\n */\n isAuthenticated(): boolean | null {\n if (!this.tokenManager || this.simpleConfig?.authMode === 'cookie') {\n return null;\n }\n return !!this.tokenManager.getAccessToken();\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Direct Block Access (for advanced usage)\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Access the underlying block for advanced operations\n * Use this when you need access to services not wrapped by this Angular service\n */\n get rawBlock(): AuthenticationBlock {\n return this.block;\n }\n}\n"],"names":["Injectable","Inject","Optional","from","tap","createAuthenticationBlock","TRANSPORT","AUTHENTICATION_CONFIG","TOKEN_MANAGER","SIMPLE_CONFIG","AuthenticationService","isTokenMode","tokenManager","simpleConfig","authMode","signIn","request","block","auth","pipe","response","accessToken","setTokens","refreshToken","signUp","signOut","clearTokens","requestPasswordReset","updatePassword","validateToken","token","getCurrentUser","listUsers","params","users","list","getUser","id","get","updateUser","update","deleteUser","delete","listRoles","roles","getRole","createRole","create","updateRole","deleteRole","listPermissions","listApiKeys","apiKeys","getApiKey","createApiKey","updateApiKey","revokeApiKey","revoke","getAccessToken","getRefreshToken","isAuthenticated","rawBlock","constructor","transport","config","providedIn"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/dist/lib/index.js CHANGED
@@ -1,6 +1,13 @@
1
+ // ─────────────────────────────────────────────────────────────────────────────
2
+ // Simplified API (Recommended)
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ export { provideBlocks23, getBlocks23Providers, TOKEN_MANAGER, SIMPLE_CONFIG } from './simple-providers.js';
5
+ // ─────────────────────────────────────────────────────────────────────────────
6
+ // Advanced API (Custom transport)
7
+ // ─────────────────────────────────────────────────────────────────────────────
1
8
  // Tokens
2
9
  export { TRANSPORT, AUTHENTICATION_CONFIG, SEARCH_CONFIG, PRODUCTS_CONFIG, CRM_CONFIG, CONTENT_CONFIG, GEOLOCATION_CONFIG, CONVERSATIONS_CONFIG, FILES_CONFIG, FORMS_CONFIG, ASSETS_CONFIG, CAMPAIGNS_CONFIG, COMPANY_CONFIG, REWARDS_CONFIG, SALES_CONFIG, WALLET_CONFIG, JARVIS_CONFIG, ONBOARDING_CONFIG, UNIVERSITY_CONFIG } from './tokens.js';
3
- // Provider functions
10
+ // Provider functions (advanced - requires custom transport)
4
11
  export { provide23Blocks, get23BlocksProviders } from './providers.js';
5
12
  // Services
6
13
  export { AuthenticationService } from './authentication/index.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// Tokens\nexport {\n TRANSPORT,\n AUTHENTICATION_CONFIG,\n SEARCH_CONFIG,\n PRODUCTS_CONFIG,\n CRM_CONFIG,\n CONTENT_CONFIG,\n GEOLOCATION_CONFIG,\n CONVERSATIONS_CONFIG,\n FILES_CONFIG,\n FORMS_CONFIG,\n ASSETS_CONFIG,\n CAMPAIGNS_CONFIG,\n COMPANY_CONFIG,\n REWARDS_CONFIG,\n SALES_CONFIG,\n WALLET_CONFIG,\n JARVIS_CONFIG,\n ONBOARDING_CONFIG,\n UNIVERSITY_CONFIG,\n} from './tokens.js';\n\n// Provider functions\nexport { provide23Blocks, get23BlocksProviders, type Provide23BlocksConfig } from './providers.js';\n\n// Services\nexport { AuthenticationService } from './authentication/index.js';\nexport { SearchService } from './search/index.js';\nexport { ProductsService } from './products/index.js';\nexport { CrmService } from './crm/index.js';\nexport { ContentService } from './content/index.js';\nexport { GeolocationService } from './geolocation/index.js';\nexport { ConversationsService } from './conversations/index.js';\nexport { FilesService } from './files/index.js';\nexport { FormsService } from './forms/index.js';\nexport { AssetsService } from './assets/index.js';\nexport { CampaignsService } from './campaigns/index.js';\nexport { CompanyService } from './company/index.js';\nexport { RewardsService } from './rewards/index.js';\nexport { SalesService } from './sales/index.js';\nexport { WalletService } from './wallet/index.js';\nexport { JarvisService } from './jarvis/index.js';\nexport { OnboardingService } from './onboarding/index.js';\nexport { UniversityService } from './university/index.js';\n"],"names":["TRANSPORT","AUTHENTICATION_CONFIG","SEARCH_CONFIG","PRODUCTS_CONFIG","CRM_CONFIG","CONTENT_CONFIG","GEOLOCATION_CONFIG","CONVERSATIONS_CONFIG","FILES_CONFIG","FORMS_CONFIG","ASSETS_CONFIG","CAMPAIGNS_CONFIG","COMPANY_CONFIG","REWARDS_CONFIG","SALES_CONFIG","WALLET_CONFIG","JARVIS_CONFIG","ONBOARDING_CONFIG","UNIVERSITY_CONFIG","provide23Blocks","get23BlocksProviders","AuthenticationService","SearchService","ProductsService","CrmService","ContentService","GeolocationService","ConversationsService","FilesService","FormsService","AssetsService","CampaignsService","CompanyService","RewardsService","SalesService","WalletService","JarvisService","OnboardingService","UniversityService"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAAS;AACT,SACEA,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACbC,eAAe,EACfC,UAAU,EACVC,cAAc,EACdC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,YAAY,EACZC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QACZ,cAAc;AAErB,qBAAqB;AACrB,SAASC,eAAe,EAAEC,oBAAoB,QAAoC,iBAAiB;AAEnG,WAAW;AACX,SAASC,qBAAqB,QAAQ,4BAA4B;AAClE,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,iBAAiB,QAAQ,wBAAwB"}
1
+ {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// ─────────────────────────────────────────────────────────────────────────────\n// Simplified API (Recommended)\n// ─────────────────────────────────────────────────────────────────────────────\nexport {\n provideBlocks23,\n getBlocks23Providers,\n type Simple23BlocksConfig,\n type AuthMode,\n type StorageType,\n type TokenManagerService,\n TOKEN_MANAGER,\n SIMPLE_CONFIG,\n} from './simple-providers.js';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Advanced API (Custom transport)\n// ─────────────────────────────────────────────────────────────────────────────\n// Tokens\nexport {\n TRANSPORT,\n AUTHENTICATION_CONFIG,\n SEARCH_CONFIG,\n PRODUCTS_CONFIG,\n CRM_CONFIG,\n CONTENT_CONFIG,\n GEOLOCATION_CONFIG,\n CONVERSATIONS_CONFIG,\n FILES_CONFIG,\n FORMS_CONFIG,\n ASSETS_CONFIG,\n CAMPAIGNS_CONFIG,\n COMPANY_CONFIG,\n REWARDS_CONFIG,\n SALES_CONFIG,\n WALLET_CONFIG,\n JARVIS_CONFIG,\n ONBOARDING_CONFIG,\n UNIVERSITY_CONFIG,\n} from './tokens.js';\n\n// Provider functions (advanced - requires custom transport)\nexport { provide23Blocks, get23BlocksProviders, type Provide23BlocksConfig } from './providers.js';\n\n// Services\nexport { AuthenticationService } from './authentication/index.js';\nexport { SearchService } from './search/index.js';\nexport { ProductsService } from './products/index.js';\nexport { CrmService } from './crm/index.js';\nexport { ContentService } from './content/index.js';\nexport { GeolocationService } from './geolocation/index.js';\nexport { ConversationsService } from './conversations/index.js';\nexport { FilesService } from './files/index.js';\nexport { FormsService } from './forms/index.js';\nexport { AssetsService } from './assets/index.js';\nexport { CampaignsService } from './campaigns/index.js';\nexport { CompanyService } from './company/index.js';\nexport { RewardsService } from './rewards/index.js';\nexport { SalesService } from './sales/index.js';\nexport { WalletService } from './wallet/index.js';\nexport { JarvisService } from './jarvis/index.js';\nexport { OnboardingService } from './onboarding/index.js';\nexport { UniversityService } from './university/index.js';\n"],"names":["provideBlocks23","getBlocks23Providers","TOKEN_MANAGER","SIMPLE_CONFIG","TRANSPORT","AUTHENTICATION_CONFIG","SEARCH_CONFIG","PRODUCTS_CONFIG","CRM_CONFIG","CONTENT_CONFIG","GEOLOCATION_CONFIG","CONVERSATIONS_CONFIG","FILES_CONFIG","FORMS_CONFIG","ASSETS_CONFIG","CAMPAIGNS_CONFIG","COMPANY_CONFIG","REWARDS_CONFIG","SALES_CONFIG","WALLET_CONFIG","JARVIS_CONFIG","ONBOARDING_CONFIG","UNIVERSITY_CONFIG","provide23Blocks","get23BlocksProviders","AuthenticationService","SearchService","ProductsService","CrmService","ContentService","GeolocationService","ConversationsService","FilesService","FormsService","AssetsService","CampaignsService","CompanyService","RewardsService","SalesService","WalletService","JarvisService","OnboardingService","UniversityService"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAChF,SACEA,eAAe,EACfC,oBAAoB,EAKpBC,aAAa,EACbC,aAAa,QACR,wBAAwB;AAE/B,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAChF,SAAS;AACT,SACEC,SAAS,EACTC,qBAAqB,EACrBC,aAAa,EACbC,eAAe,EACfC,UAAU,EACVC,cAAc,EACdC,kBAAkB,EAClBC,oBAAoB,EACpBC,YAAY,EACZC,YAAY,EACZC,aAAa,EACbC,gBAAgB,EAChBC,cAAc,EACdC,cAAc,EACdC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,iBAAiB,EACjBC,iBAAiB,QACZ,cAAc;AAErB,4DAA4D;AAC5D,SAASC,eAAe,EAAEC,oBAAoB,QAAoC,iBAAiB;AAEnG,WAAW;AACX,SAASC,qBAAqB,QAAQ,4BAA4B;AAClE,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,kBAAkB,QAAQ,yBAAyB;AAC5D,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,iBAAiB,QAAQ,wBAAwB"}
@@ -0,0 +1,400 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
3
+ import { createHttpTransport } from '@23blocks/transport-http';
4
+ import { TRANSPORT, AUTHENTICATION_CONFIG, SEARCH_CONFIG, PRODUCTS_CONFIG, CRM_CONFIG, CONTENT_CONFIG, GEOLOCATION_CONFIG, CONVERSATIONS_CONFIG, FILES_CONFIG, FORMS_CONFIG, ASSETS_CONFIG, CAMPAIGNS_CONFIG, COMPANY_CONFIG, REWARDS_CONFIG, SALES_CONFIG, WALLET_CONFIG, JARVIS_CONFIG, ONBOARDING_CONFIG, UNIVERSITY_CONFIG } from './tokens.js';
5
+ /**
6
+ * Injection token for the token manager (internal use)
7
+ */ export const TOKEN_MANAGER = new InjectionToken('23blocks.token-manager');
8
+ /**
9
+ * Injection token for simple config
10
+ */ export const SIMPLE_CONFIG = new InjectionToken('23blocks.simple-config');
11
+ /**
12
+ * Generate storage key scoped to app and tenant
13
+ */ function getStorageKey(type, appId, tenantId) {
14
+ const scope = tenantId ? `${appId}_${tenantId}` : appId;
15
+ return `23blocks_${scope}_${type}_token`;
16
+ }
17
+ /**
18
+ * In-memory storage for SSR
19
+ */ let MemoryStorage = class MemoryStorage {
20
+ getItem(key) {
21
+ var _this_data_get;
22
+ return (_this_data_get = this.data.get(key)) != null ? _this_data_get : null;
23
+ }
24
+ setItem(key, value) {
25
+ this.data.set(key, value);
26
+ }
27
+ removeItem(key) {
28
+ this.data.delete(key);
29
+ }
30
+ constructor(){
31
+ this.data = new Map();
32
+ }
33
+ };
34
+ /**
35
+ * Create a token manager with scoped storage keys and cross-tab sync
36
+ */ function createTokenManager(appId, storageType, tenantId) {
37
+ const isBrowser = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';
38
+ const accessTokenKey = getStorageKey('access', appId, tenantId);
39
+ const refreshTokenKey = getStorageKey('refresh', appId, tenantId);
40
+ let storage;
41
+ if (!isBrowser) {
42
+ storage = new MemoryStorage();
43
+ } else {
44
+ switch(storageType){
45
+ case 'sessionStorage':
46
+ storage = window.sessionStorage;
47
+ break;
48
+ case 'memory':
49
+ storage = new MemoryStorage();
50
+ break;
51
+ default:
52
+ storage = window.localStorage;
53
+ }
54
+ }
55
+ return {
56
+ getAccessToken () {
57
+ try {
58
+ return storage.getItem(accessTokenKey);
59
+ } catch (e) {
60
+ return null;
61
+ }
62
+ },
63
+ getRefreshToken () {
64
+ try {
65
+ return storage.getItem(refreshTokenKey);
66
+ } catch (e) {
67
+ return null;
68
+ }
69
+ },
70
+ setTokens (accessToken, refreshToken) {
71
+ try {
72
+ storage.setItem(accessTokenKey, accessToken);
73
+ if (refreshToken) {
74
+ storage.setItem(refreshTokenKey, refreshToken);
75
+ }
76
+ } catch (e) {
77
+ console.warn('[23blocks] Unable to store tokens');
78
+ }
79
+ },
80
+ clearTokens () {
81
+ try {
82
+ storage.removeItem(accessTokenKey);
83
+ storage.removeItem(refreshTokenKey);
84
+ } catch (e) {
85
+ // Silently fail
86
+ }
87
+ },
88
+ onStorageChange (callback) {
89
+ // Only works in browser with localStorage/sessionStorage
90
+ if (!isBrowser || storageType === 'memory') {
91
+ // Return no-op unsubscribe for SSR/memory storage
92
+ return ()=>{};
93
+ }
94
+ const handler = (event)=>{
95
+ // Only trigger if our keys changed
96
+ if (event.key === accessTokenKey || event.key === refreshTokenKey) {
97
+ callback();
98
+ }
99
+ };
100
+ window.addEventListener('storage', handler);
101
+ // Return unsubscribe function
102
+ return ()=>{
103
+ window.removeEventListener('storage', handler);
104
+ };
105
+ }
106
+ };
107
+ }
108
+ /**
109
+ * Create transport with automatic token handling
110
+ */ function createTransportWithAuth(config, tokenManager) {
111
+ return createHttpTransport({
112
+ baseUrl: config.baseUrl,
113
+ timeout: config.timeout,
114
+ credentials: config.authMode === 'cookie' ? 'include' : undefined,
115
+ headers: ()=>{
116
+ const headers = _extends({}, config.headers, {
117
+ appid: config.appId
118
+ });
119
+ if (config.tenantId) {
120
+ headers['tenant-id'] = config.tenantId;
121
+ }
122
+ // In token mode, add Authorization header if we have a token
123
+ if (config.authMode !== 'cookie') {
124
+ const token = tokenManager.getAccessToken();
125
+ if (token) {
126
+ headers['Authorization'] = `Bearer ${token}`;
127
+ }
128
+ }
129
+ return headers;
130
+ }
131
+ });
132
+ }
133
+ /**
134
+ * Provide 23blocks services with simplified configuration.
135
+ *
136
+ * This is the recommended way to set up 23blocks in new Angular applications.
137
+ * It automatically handles token storage and authentication headers.
138
+ *
139
+ * @example Token mode (default)
140
+ * ```typescript
141
+ * // app.config.ts
142
+ * import { ApplicationConfig } from '@angular/core';
143
+ * import { provideBlocks23 } from '@23blocks/angular';
144
+ *
145
+ * export const appConfig: ApplicationConfig = {
146
+ * providers: [
147
+ * provideBlocks23({
148
+ * baseUrl: 'https://api.yourapp.com',
149
+ * appId: 'your-app-id',
150
+ * }),
151
+ * ],
152
+ * };
153
+ * ```
154
+ *
155
+ * @example Cookie mode (recommended for security)
156
+ * ```typescript
157
+ * export const appConfig: ApplicationConfig = {
158
+ * providers: [
159
+ * provideBlocks23({
160
+ * baseUrl: 'https://api.yourapp.com',
161
+ * appId: 'your-app-id',
162
+ * authMode: 'cookie',
163
+ * }),
164
+ * ],
165
+ * };
166
+ * ```
167
+ */ export function provideBlocks23(config) {
168
+ // Block config for all services
169
+ const blockConfig = {
170
+ appId: config.appId,
171
+ tenantId: config.tenantId
172
+ };
173
+ const providers = [
174
+ // Store config for injection
175
+ {
176
+ provide: SIMPLE_CONFIG,
177
+ useValue: config
178
+ },
179
+ // Token manager factory - creates singleton within the injector
180
+ {
181
+ provide: TOKEN_MANAGER,
182
+ useFactory: ()=>{
183
+ var _config_storage;
184
+ const storage = (_config_storage = config.storage) != null ? _config_storage : 'localStorage';
185
+ return createTokenManager(config.appId, storage, config.tenantId);
186
+ }
187
+ },
188
+ // Transport factory - depends on token manager
189
+ {
190
+ provide: TRANSPORT,
191
+ useFactory: (tokenManager)=>{
192
+ return createTransportWithAuth(config, tokenManager);
193
+ },
194
+ deps: [
195
+ TOKEN_MANAGER
196
+ ]
197
+ },
198
+ // Block configs
199
+ {
200
+ provide: AUTHENTICATION_CONFIG,
201
+ useValue: blockConfig
202
+ },
203
+ {
204
+ provide: SEARCH_CONFIG,
205
+ useValue: blockConfig
206
+ },
207
+ {
208
+ provide: PRODUCTS_CONFIG,
209
+ useValue: blockConfig
210
+ },
211
+ {
212
+ provide: CRM_CONFIG,
213
+ useValue: blockConfig
214
+ },
215
+ {
216
+ provide: CONTENT_CONFIG,
217
+ useValue: blockConfig
218
+ },
219
+ {
220
+ provide: GEOLOCATION_CONFIG,
221
+ useValue: blockConfig
222
+ },
223
+ {
224
+ provide: CONVERSATIONS_CONFIG,
225
+ useValue: blockConfig
226
+ },
227
+ {
228
+ provide: FILES_CONFIG,
229
+ useValue: blockConfig
230
+ },
231
+ {
232
+ provide: FORMS_CONFIG,
233
+ useValue: blockConfig
234
+ },
235
+ {
236
+ provide: ASSETS_CONFIG,
237
+ useValue: blockConfig
238
+ },
239
+ {
240
+ provide: CAMPAIGNS_CONFIG,
241
+ useValue: blockConfig
242
+ },
243
+ {
244
+ provide: COMPANY_CONFIG,
245
+ useValue: blockConfig
246
+ },
247
+ {
248
+ provide: REWARDS_CONFIG,
249
+ useValue: blockConfig
250
+ },
251
+ {
252
+ provide: SALES_CONFIG,
253
+ useValue: blockConfig
254
+ },
255
+ {
256
+ provide: WALLET_CONFIG,
257
+ useValue: blockConfig
258
+ },
259
+ {
260
+ provide: JARVIS_CONFIG,
261
+ useValue: blockConfig
262
+ },
263
+ {
264
+ provide: ONBOARDING_CONFIG,
265
+ useValue: blockConfig
266
+ },
267
+ {
268
+ provide: UNIVERSITY_CONFIG,
269
+ useValue: blockConfig
270
+ }
271
+ ];
272
+ return makeEnvironmentProviders(providers);
273
+ }
274
+ /**
275
+ * Get providers array for NgModule-based applications with simplified config.
276
+ *
277
+ * @example
278
+ * ```typescript
279
+ * // app.module.ts
280
+ * import { NgModule } from '@angular/core';
281
+ * import { getBlocks23Providers } from '@23blocks/angular';
282
+ *
283
+ * @NgModule({
284
+ * providers: [
285
+ * ...getBlocks23Providers({
286
+ * baseUrl: 'https://api.yourapp.com',
287
+ * appId: 'your-app-id',
288
+ * }),
289
+ * ],
290
+ * })
291
+ * export class AppModule {}
292
+ * ```
293
+ */ export function getBlocks23Providers(config) {
294
+ // Block config for all services
295
+ const blockConfig = {
296
+ appId: config.appId,
297
+ tenantId: config.tenantId
298
+ };
299
+ return [
300
+ // Store config for injection
301
+ {
302
+ provide: SIMPLE_CONFIG,
303
+ useValue: config
304
+ },
305
+ // Token manager factory - creates singleton within the injector
306
+ {
307
+ provide: TOKEN_MANAGER,
308
+ useFactory: ()=>{
309
+ var _config_storage;
310
+ const storage = (_config_storage = config.storage) != null ? _config_storage : 'localStorage';
311
+ return createTokenManager(config.appId, storage, config.tenantId);
312
+ }
313
+ },
314
+ // Transport factory - depends on token manager
315
+ {
316
+ provide: TRANSPORT,
317
+ useFactory: (tokenManager)=>{
318
+ return createTransportWithAuth(config, tokenManager);
319
+ },
320
+ deps: [
321
+ TOKEN_MANAGER
322
+ ]
323
+ },
324
+ // Block configs
325
+ {
326
+ provide: AUTHENTICATION_CONFIG,
327
+ useValue: blockConfig
328
+ },
329
+ {
330
+ provide: SEARCH_CONFIG,
331
+ useValue: blockConfig
332
+ },
333
+ {
334
+ provide: PRODUCTS_CONFIG,
335
+ useValue: blockConfig
336
+ },
337
+ {
338
+ provide: CRM_CONFIG,
339
+ useValue: blockConfig
340
+ },
341
+ {
342
+ provide: CONTENT_CONFIG,
343
+ useValue: blockConfig
344
+ },
345
+ {
346
+ provide: GEOLOCATION_CONFIG,
347
+ useValue: blockConfig
348
+ },
349
+ {
350
+ provide: CONVERSATIONS_CONFIG,
351
+ useValue: blockConfig
352
+ },
353
+ {
354
+ provide: FILES_CONFIG,
355
+ useValue: blockConfig
356
+ },
357
+ {
358
+ provide: FORMS_CONFIG,
359
+ useValue: blockConfig
360
+ },
361
+ {
362
+ provide: ASSETS_CONFIG,
363
+ useValue: blockConfig
364
+ },
365
+ {
366
+ provide: CAMPAIGNS_CONFIG,
367
+ useValue: blockConfig
368
+ },
369
+ {
370
+ provide: COMPANY_CONFIG,
371
+ useValue: blockConfig
372
+ },
373
+ {
374
+ provide: REWARDS_CONFIG,
375
+ useValue: blockConfig
376
+ },
377
+ {
378
+ provide: SALES_CONFIG,
379
+ useValue: blockConfig
380
+ },
381
+ {
382
+ provide: WALLET_CONFIG,
383
+ useValue: blockConfig
384
+ },
385
+ {
386
+ provide: JARVIS_CONFIG,
387
+ useValue: blockConfig
388
+ },
389
+ {
390
+ provide: ONBOARDING_CONFIG,
391
+ useValue: blockConfig
392
+ },
393
+ {
394
+ provide: UNIVERSITY_CONFIG,
395
+ useValue: blockConfig
396
+ }
397
+ ];
398
+ }
399
+
400
+ //# sourceMappingURL=simple-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/simple-providers.ts"],"sourcesContent":["import type { Provider, EnvironmentProviders } from '@angular/core';\nimport { InjectionToken, makeEnvironmentProviders } from '@angular/core';\nimport { createHttpTransport } from '@23blocks/transport-http';\nimport type { Transport } from '@23blocks/contracts';\nimport {\n TRANSPORT,\n AUTHENTICATION_CONFIG,\n SEARCH_CONFIG,\n PRODUCTS_CONFIG,\n CRM_CONFIG,\n CONTENT_CONFIG,\n GEOLOCATION_CONFIG,\n CONVERSATIONS_CONFIG,\n FILES_CONFIG,\n FORMS_CONFIG,\n ASSETS_CONFIG,\n CAMPAIGNS_CONFIG,\n COMPANY_CONFIG,\n REWARDS_CONFIG,\n SALES_CONFIG,\n WALLET_CONFIG,\n JARVIS_CONFIG,\n ONBOARDING_CONFIG,\n UNIVERSITY_CONFIG,\n} from './tokens.js';\n\n/**\n * Authentication mode for the simplified API\n */\nexport type AuthMode = 'token' | 'cookie';\n\n/**\n * Storage type for token mode\n */\nexport type StorageType = 'localStorage' | 'sessionStorage' | 'memory';\n\n/**\n * Simplified configuration for providing 23blocks services\n */\nexport interface Simple23BlocksConfig {\n /**\n * Base URL for the 23blocks API\n * @example 'https://api.yourapp.com'\n */\n baseUrl: string;\n\n /**\n * Application ID\n */\n appId: string;\n\n /**\n * Tenant ID (optional, for multi-tenant setups)\n */\n tenantId?: string;\n\n /**\n * Authentication mode\n * - 'token' (default): SDK stores tokens in localStorage/sessionStorage/memory\n * - 'cookie': Backend manages auth via httpOnly cookies\n */\n authMode?: AuthMode;\n\n /**\n * Storage type for token mode\n * @default 'localStorage'\n */\n storage?: StorageType;\n\n /**\n * Additional headers to include with every request\n */\n headers?: Record<string, string>;\n\n /**\n * Request timeout in milliseconds\n * @default 30000\n */\n timeout?: number;\n}\n\n/**\n * Injection token for the token manager (internal use)\n */\nexport const TOKEN_MANAGER = new InjectionToken<TokenManagerService>('23blocks.token-manager');\n\n/**\n * Injection token for simple config\n */\nexport const SIMPLE_CONFIG = new InjectionToken<Simple23BlocksConfig>('23blocks.simple-config');\n\n/**\n * Token manager interface\n */\nexport interface TokenManagerService {\n getAccessToken(): string | null;\n getRefreshToken(): string | null;\n setTokens(accessToken: string, refreshToken?: string): void;\n clearTokens(): void;\n /**\n * Subscribe to storage changes from other tabs/windows.\n * Returns an unsubscribe function.\n */\n onStorageChange(callback: () => void): () => void;\n}\n\n/**\n * Generate storage key scoped to app and tenant\n */\nfunction getStorageKey(type: 'access' | 'refresh', appId: string, tenantId?: string): string {\n const scope = tenantId ? `${appId}_${tenantId}` : appId;\n return `23blocks_${scope}_${type}_token`;\n}\n\n/**\n * In-memory storage for SSR\n */\nclass MemoryStorage {\n private data = new Map<string, string>();\n getItem(key: string): string | null {\n return this.data.get(key) ?? null;\n }\n setItem(key: string, value: string): void {\n this.data.set(key, value);\n }\n removeItem(key: string): void {\n this.data.delete(key);\n }\n}\n\n/**\n * Create a token manager with scoped storage keys and cross-tab sync\n */\nfunction createTokenManager(\n appId: string,\n storageType: StorageType,\n tenantId?: string\n): TokenManagerService {\n const isBrowser = typeof window !== 'undefined' && typeof window.localStorage !== 'undefined';\n\n const accessTokenKey = getStorageKey('access', appId, tenantId);\n const refreshTokenKey = getStorageKey('refresh', appId, tenantId);\n\n let storage: Storage | MemoryStorage;\n if (!isBrowser) {\n storage = new MemoryStorage();\n } else {\n switch (storageType) {\n case 'sessionStorage':\n storage = window.sessionStorage;\n break;\n case 'memory':\n storage = new MemoryStorage();\n break;\n default:\n storage = window.localStorage;\n }\n }\n\n return {\n getAccessToken(): string | null {\n try {\n return storage.getItem(accessTokenKey);\n } catch {\n return null;\n }\n },\n getRefreshToken(): string | null {\n try {\n return storage.getItem(refreshTokenKey);\n } catch {\n return null;\n }\n },\n setTokens(accessToken: string, refreshToken?: string): void {\n try {\n storage.setItem(accessTokenKey, accessToken);\n if (refreshToken) {\n storage.setItem(refreshTokenKey, refreshToken);\n }\n } catch {\n console.warn('[23blocks] Unable to store tokens');\n }\n },\n clearTokens(): void {\n try {\n storage.removeItem(accessTokenKey);\n storage.removeItem(refreshTokenKey);\n } catch {\n // Silently fail\n }\n },\n onStorageChange(callback: () => void): () => void {\n // Only works in browser with localStorage/sessionStorage\n if (!isBrowser || storageType === 'memory') {\n // Return no-op unsubscribe for SSR/memory storage\n return () => {};\n }\n\n const handler = (event: StorageEvent) => {\n // Only trigger if our keys changed\n if (event.key === accessTokenKey || event.key === refreshTokenKey) {\n callback();\n }\n };\n\n window.addEventListener('storage', handler);\n\n // Return unsubscribe function\n return () => {\n window.removeEventListener('storage', handler);\n };\n },\n };\n}\n\n/**\n * Create transport with automatic token handling\n */\nfunction createTransportWithAuth(config: Simple23BlocksConfig, tokenManager: TokenManagerService): Transport {\n return createHttpTransport({\n baseUrl: config.baseUrl,\n timeout: config.timeout,\n credentials: config.authMode === 'cookie' ? 'include' : undefined,\n headers: () => {\n const headers: Record<string, string> = {\n ...config.headers,\n appid: config.appId,\n };\n\n if (config.tenantId) {\n headers['tenant-id'] = config.tenantId;\n }\n\n // In token mode, add Authorization header if we have a token\n if (config.authMode !== 'cookie') {\n const token = tokenManager.getAccessToken();\n if (token) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n }\n\n return headers;\n },\n });\n}\n\n/**\n * Provide 23blocks services with simplified configuration.\n *\n * This is the recommended way to set up 23blocks in new Angular applications.\n * It automatically handles token storage and authentication headers.\n *\n * @example Token mode (default)\n * ```typescript\n * // app.config.ts\n * import { ApplicationConfig } from '@angular/core';\n * import { provideBlocks23 } from '@23blocks/angular';\n *\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideBlocks23({\n * baseUrl: 'https://api.yourapp.com',\n * appId: 'your-app-id',\n * }),\n * ],\n * };\n * ```\n *\n * @example Cookie mode (recommended for security)\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideBlocks23({\n * baseUrl: 'https://api.yourapp.com',\n * appId: 'your-app-id',\n * authMode: 'cookie',\n * }),\n * ],\n * };\n * ```\n */\nexport function provideBlocks23(config: Simple23BlocksConfig): EnvironmentProviders {\n // Block config for all services\n const blockConfig = { appId: config.appId, tenantId: config.tenantId };\n\n const providers: Provider[] = [\n // Store config for injection\n { provide: SIMPLE_CONFIG, useValue: config },\n\n // Token manager factory - creates singleton within the injector\n {\n provide: TOKEN_MANAGER,\n useFactory: () => {\n const storage = config.storage ?? 'localStorage';\n return createTokenManager(config.appId, storage, config.tenantId);\n },\n },\n\n // Transport factory - depends on token manager\n {\n provide: TRANSPORT,\n useFactory: (tokenManager: TokenManagerService) => {\n return createTransportWithAuth(config, tokenManager);\n },\n deps: [TOKEN_MANAGER],\n },\n\n // Block configs\n { provide: AUTHENTICATION_CONFIG, useValue: blockConfig },\n { provide: SEARCH_CONFIG, useValue: blockConfig },\n { provide: PRODUCTS_CONFIG, useValue: blockConfig },\n { provide: CRM_CONFIG, useValue: blockConfig },\n { provide: CONTENT_CONFIG, useValue: blockConfig },\n { provide: GEOLOCATION_CONFIG, useValue: blockConfig },\n { provide: CONVERSATIONS_CONFIG, useValue: blockConfig },\n { provide: FILES_CONFIG, useValue: blockConfig },\n { provide: FORMS_CONFIG, useValue: blockConfig },\n { provide: ASSETS_CONFIG, useValue: blockConfig },\n { provide: CAMPAIGNS_CONFIG, useValue: blockConfig },\n { provide: COMPANY_CONFIG, useValue: blockConfig },\n { provide: REWARDS_CONFIG, useValue: blockConfig },\n { provide: SALES_CONFIG, useValue: blockConfig },\n { provide: WALLET_CONFIG, useValue: blockConfig },\n { provide: JARVIS_CONFIG, useValue: blockConfig },\n { provide: ONBOARDING_CONFIG, useValue: blockConfig },\n { provide: UNIVERSITY_CONFIG, useValue: blockConfig },\n ];\n\n return makeEnvironmentProviders(providers);\n}\n\n/**\n * Get providers array for NgModule-based applications with simplified config.\n *\n * @example\n * ```typescript\n * // app.module.ts\n * import { NgModule } from '@angular/core';\n * import { getBlocks23Providers } from '@23blocks/angular';\n *\n * @NgModule({\n * providers: [\n * ...getBlocks23Providers({\n * baseUrl: 'https://api.yourapp.com',\n * appId: 'your-app-id',\n * }),\n * ],\n * })\n * export class AppModule {}\n * ```\n */\nexport function getBlocks23Providers(config: Simple23BlocksConfig): Provider[] {\n // Block config for all services\n const blockConfig = { appId: config.appId, tenantId: config.tenantId };\n\n return [\n // Store config for injection\n { provide: SIMPLE_CONFIG, useValue: config },\n\n // Token manager factory - creates singleton within the injector\n {\n provide: TOKEN_MANAGER,\n useFactory: () => {\n const storage = config.storage ?? 'localStorage';\n return createTokenManager(config.appId, storage, config.tenantId);\n },\n },\n\n // Transport factory - depends on token manager\n {\n provide: TRANSPORT,\n useFactory: (tokenManager: TokenManagerService) => {\n return createTransportWithAuth(config, tokenManager);\n },\n deps: [TOKEN_MANAGER],\n },\n\n // Block configs\n { provide: AUTHENTICATION_CONFIG, useValue: blockConfig },\n { provide: SEARCH_CONFIG, useValue: blockConfig },\n { provide: PRODUCTS_CONFIG, useValue: blockConfig },\n { provide: CRM_CONFIG, useValue: blockConfig },\n { provide: CONTENT_CONFIG, useValue: blockConfig },\n { provide: GEOLOCATION_CONFIG, useValue: blockConfig },\n { provide: CONVERSATIONS_CONFIG, useValue: blockConfig },\n { provide: FILES_CONFIG, useValue: blockConfig },\n { provide: FORMS_CONFIG, useValue: blockConfig },\n { provide: ASSETS_CONFIG, useValue: blockConfig },\n { provide: CAMPAIGNS_CONFIG, useValue: blockConfig },\n { provide: COMPANY_CONFIG, useValue: blockConfig },\n { provide: REWARDS_CONFIG, useValue: blockConfig },\n { provide: SALES_CONFIG, useValue: blockConfig },\n { provide: WALLET_CONFIG, useValue: blockConfig },\n { provide: JARVIS_CONFIG, useValue: blockConfig },\n { provide: ONBOARDING_CONFIG, useValue: blockConfig },\n { provide: UNIVERSITY_CONFIG, useValue: blockConfig },\n ];\n}\n"],"names":["InjectionToken","makeEnvironmentProviders","createHttpTransport","TRANSPORT","AUTHENTICATION_CONFIG","SEARCH_CONFIG","PRODUCTS_CONFIG","CRM_CONFIG","CONTENT_CONFIG","GEOLOCATION_CONFIG","CONVERSATIONS_CONFIG","FILES_CONFIG","FORMS_CONFIG","ASSETS_CONFIG","CAMPAIGNS_CONFIG","COMPANY_CONFIG","REWARDS_CONFIG","SALES_CONFIG","WALLET_CONFIG","JARVIS_CONFIG","ONBOARDING_CONFIG","UNIVERSITY_CONFIG","TOKEN_MANAGER","SIMPLE_CONFIG","getStorageKey","type","appId","tenantId","scope","MemoryStorage","getItem","key","data","get","setItem","value","set","removeItem","delete","Map","createTokenManager","storageType","isBrowser","window","localStorage","accessTokenKey","refreshTokenKey","storage","sessionStorage","getAccessToken","getRefreshToken","setTokens","accessToken","refreshToken","console","warn","clearTokens","onStorageChange","callback","handler","event","addEventListener","removeEventListener","createTransportWithAuth","config","tokenManager","baseUrl","timeout","credentials","authMode","undefined","headers","appid","token","provideBlocks23","blockConfig","providers","provide","useValue","useFactory","deps","getBlocks23Providers"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/angular",
3
- "version": "0.2.1",
3
+ "version": "1.0.1",
4
4
  "description": "Angular bindings for 23blocks SDK - Injectable services with RxJS Observables",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",
@@ -57,6 +57,7 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@23blocks/contracts": "*",
60
+ "@23blocks/transport-http": "*",
60
61
  "@23blocks/block-authentication": "*",
61
62
  "@23blocks/block-search": "*",
62
63
  "@23blocks/block-products": "*",