@23blocks/angular 1.0.1 → 1.0.2

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/dist/lib/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // ─────────────────────────────────────────────────────────────────────────────
2
- // Simplified API (Recommended)
2
+ // Main API (Recommended)
3
3
  // ─────────────────────────────────────────────────────────────────────────────
4
- export { provideBlocks23, getBlocks23Providers, TOKEN_MANAGER, SIMPLE_CONFIG } from './simple-providers.js';
4
+ export { // Main exports
5
+ provideBlocks23, getBlocks23Providers, TOKEN_MANAGER, PROVIDER_CONFIG, SIMPLE_CONFIG } from './simple-providers.js';
5
6
  // ─────────────────────────────────────────────────────────────────────────────
6
7
  // Advanced API (Custom transport)
7
8
  // ─────────────────────────────────────────────────────────────────────────────
@@ -1 +1 @@
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"}
1
+ {"version":3,"sources":["../../src/lib/index.ts"],"sourcesContent":["// ─────────────────────────────────────────────────────────────────────────────\n// Main API (Recommended)\n// ─────────────────────────────────────────────────────────────────────────────\nexport {\n // Main exports\n provideBlocks23,\n getBlocks23Providers,\n type ProviderConfig,\n type AuthMode,\n type StorageType,\n type TokenManagerService,\n TOKEN_MANAGER,\n PROVIDER_CONFIG,\n\n // Backward compatibility (deprecated)\n type Simple23BlocksConfig,\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","PROVIDER_CONFIG","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,yBAAyB;AACzB,gFAAgF;AAChF,SACE,eAAe;AACfA,eAAe,EACfC,oBAAoB,EAKpBC,aAAa,EACbC,eAAe,EAIfC,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"}
@@ -6,8 +6,9 @@ import { TRANSPORT, AUTHENTICATION_CONFIG, SEARCH_CONFIG, PRODUCTS_CONFIG, CRM_C
6
6
  * Injection token for the token manager (internal use)
7
7
  */ export const TOKEN_MANAGER = new InjectionToken('23blocks.token-manager');
8
8
  /**
9
- * Injection token for simple config
10
- */ export const SIMPLE_CONFIG = new InjectionToken('23blocks.simple-config');
9
+ * Injection token for provider config
10
+ */ export const PROVIDER_CONFIG = new InjectionToken('23blocks.provider-config');
11
+ /** @deprecated Use PROVIDER_CONFIG instead */ export const SIMPLE_CONFIG = PROVIDER_CONFIG;
11
12
  /**
12
13
  * Generate storage key scoped to app and tenant
13
14
  */ function getStorageKey(type, appId, tenantId) {
@@ -173,7 +174,7 @@ import { TRANSPORT, AUTHENTICATION_CONFIG, SEARCH_CONFIG, PRODUCTS_CONFIG, CRM_C
173
174
  const providers = [
174
175
  // Store config for injection
175
176
  {
176
- provide: SIMPLE_CONFIG,
177
+ provide: PROVIDER_CONFIG,
177
178
  useValue: config
178
179
  },
179
180
  // Token manager factory - creates singleton within the injector
@@ -299,7 +300,7 @@ import { TRANSPORT, AUTHENTICATION_CONFIG, SEARCH_CONFIG, PRODUCTS_CONFIG, CRM_C
299
300
  return [
300
301
  // Store config for injection
301
302
  {
302
- provide: SIMPLE_CONFIG,
303
+ provide: PROVIDER_CONFIG,
303
304
  useValue: config
304
305
  },
305
306
  // Token manager factory - creates singleton within the injector
@@ -1 +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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"}
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\n */\nexport type AuthMode = 'token' | 'cookie';\n\n/**\n * Storage type for token mode\n */\nexport type StorageType = 'localStorage' | 'sessionStorage' | 'memory';\n\n/**\n * Configuration for providing 23blocks services\n */\nexport interface ProviderConfig {\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 provider config\n */\nexport const PROVIDER_CONFIG = new InjectionToken<ProviderConfig>('23blocks.provider-config');\n\n/** @deprecated Use PROVIDER_CONFIG instead */\nexport const SIMPLE_CONFIG = PROVIDER_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: ProviderConfig, 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: ProviderConfig): 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: PROVIDER_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: ProviderConfig): 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: PROVIDER_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\n// ─────────────────────────────────────────────────────────────────────────────\n// Backward Compatibility Aliases (deprecated)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/** @deprecated Use `ProviderConfig` instead */\nexport type Simple23BlocksConfig = ProviderConfig;\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","PROVIDER_CONFIG","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":";AACA,SAASA,cAAc,EAAEC,wBAAwB,QAAQ,gBAAgB;AACzE,SAASC,mBAAmB,QAAQ,2BAA2B;AAE/D,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;AAyDrB;;CAEC,GACD,OAAO,MAAMC,gBAAgB,IAAItB,eAAoC,0BAA0B;AAE/F;;CAEC,GACD,OAAO,MAAMuB,kBAAkB,IAAIvB,eAA+B,4BAA4B;AAE9F,4CAA4C,GAC5C,OAAO,MAAMwB,gBAAgBD,gBAAgB;AAiB7C;;CAEC,GACD,SAASE,cAAcC,IAA0B,EAAEC,KAAa,EAAEC,QAAiB;IACjF,MAAMC,QAAQD,WAAW,CAAC,EAAED,MAAM,CAAC,EAAEC,SAAS,CAAC,GAAGD;IAClD,OAAO,CAAC,SAAS,EAAEE,MAAM,CAAC,EAAEH,KAAK,MAAM,CAAC;AAC1C;AAEA;;CAEC,GACD,IAAA,AAAMI,gBAAN,MAAMA;IAEJC,QAAQC,GAAW,EAAiB;YAC3B;QAAP,OAAO,CAAA,iBAAA,IAAI,CAACC,IAAI,CAACC,GAAG,CAACF,gBAAd,iBAAsB;IAC/B;IACAG,QAAQH,GAAW,EAAEI,KAAa,EAAQ;QACxC,IAAI,CAACH,IAAI,CAACI,GAAG,CAACL,KAAKI;IACrB;IACAE,WAAWN,GAAW,EAAQ;QAC5B,IAAI,CAACC,IAAI,CAACM,MAAM,CAACP;IACnB;;aATQC,OAAO,IAAIO;;AAUrB;AAEA;;CAEC,GACD,SAASC,mBACPd,KAAa,EACbe,WAAwB,EACxBd,QAAiB;IAEjB,MAAMe,YAAY,OAAOC,WAAW,eAAe,OAAOA,OAAOC,YAAY,KAAK;IAElF,MAAMC,iBAAiBrB,cAAc,UAAUE,OAAOC;IACtD,MAAMmB,kBAAkBtB,cAAc,WAAWE,OAAOC;IAExD,IAAIoB;IACJ,IAAI,CAACL,WAAW;QACdK,UAAU,IAAIlB;IAChB,OAAO;QACL,OAAQY;YACN,KAAK;gBACHM,UAAUJ,OAAOK,cAAc;gBAC/B;YACF,KAAK;gBACHD,UAAU,IAAIlB;gBACd;YACF;gBACEkB,UAAUJ,OAAOC,YAAY;QACjC;IACF;IAEA,OAAO;QACLK;YACE,IAAI;gBACF,OAAOF,QAAQjB,OAAO,CAACe;YACzB,EAAE,UAAM;gBACN,OAAO;YACT;QACF;QACAK;YACE,IAAI;gBACF,OAAOH,QAAQjB,OAAO,CAACgB;YACzB,EAAE,UAAM;gBACN,OAAO;YACT;QACF;QACAK,WAAUC,WAAmB,EAAEC,YAAqB;YAClD,IAAI;gBACFN,QAAQb,OAAO,CAACW,gBAAgBO;gBAChC,IAAIC,cAAc;oBAChBN,QAAQb,OAAO,CAACY,iBAAiBO;gBACnC;YACF,EAAE,UAAM;gBACNC,QAAQC,IAAI,CAAC;YACf;QACF;QACAC;YACE,IAAI;gBACFT,QAAQV,UAAU,CAACQ;gBACnBE,QAAQV,UAAU,CAACS;YACrB,EAAE,UAAM;YACN,gBAAgB;YAClB;QACF;QACAW,iBAAgBC,QAAoB;YAClC,yDAAyD;YACzD,IAAI,CAAChB,aAAaD,gBAAgB,UAAU;gBAC1C,kDAAkD;gBAClD,OAAO,KAAO;YAChB;YAEA,MAAMkB,UAAU,CAACC;gBACf,mCAAmC;gBACnC,IAAIA,MAAM7B,GAAG,KAAKc,kBAAkBe,MAAM7B,GAAG,KAAKe,iBAAiB;oBACjEY;gBACF;YACF;YAEAf,OAAOkB,gBAAgB,CAAC,WAAWF;YAEnC,8BAA8B;YAC9B,OAAO;gBACLhB,OAAOmB,mBAAmB,CAAC,WAAWH;YACxC;QACF;IACF;AACF;AAEA;;CAEC,GACD,SAASI,wBAAwBC,MAAsB,EAAEC,YAAiC;IACxF,OAAOhE,oBAAoB;QACzBiE,SAASF,OAAOE,OAAO;QACvBC,SAASH,OAAOG,OAAO;QACvBC,aAAaJ,OAAOK,QAAQ,KAAK,WAAW,YAAYC;QACxDC,SAAS;YACP,MAAMA,UAAkC,aACnCP,OAAOO,OAAO;gBACjBC,OAAOR,OAAOtC,KAAK;;YAGrB,IAAIsC,OAAOrC,QAAQ,EAAE;gBACnB4C,OAAO,CAAC,YAAY,GAAGP,OAAOrC,QAAQ;YACxC;YAEA,6DAA6D;YAC7D,IAAIqC,OAAOK,QAAQ,KAAK,UAAU;gBAChC,MAAMI,QAAQR,aAAahB,cAAc;gBACzC,IAAIwB,OAAO;oBACTF,OAAO,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAEE,MAAM,CAAC;gBAC9C;YACF;YAEA,OAAOF;QACT;IACF;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GACD,OAAO,SAASG,gBAAgBV,MAAsB;IACpD,gCAAgC;IAChC,MAAMW,cAAc;QAAEjD,OAAOsC,OAAOtC,KAAK;QAAEC,UAAUqC,OAAOrC,QAAQ;IAAC;IAErE,MAAMiD,YAAwB;QAC5B,6BAA6B;QAC7B;YAAEC,SAASvD;YAAiBwD,UAAUd;QAAO;QAE7C,gEAAgE;QAChE;YACEa,SAASxD;YACT0D,YAAY;oBACMf;gBAAhB,MAAMjB,UAAUiB,CAAAA,kBAAAA,OAAOjB,OAAO,YAAdiB,kBAAkB;gBAClC,OAAOxB,mBAAmBwB,OAAOtC,KAAK,EAAEqB,SAASiB,OAAOrC,QAAQ;YAClE;QACF;QAEA,+CAA+C;QAC/C;YACEkD,SAAS3E;YACT6E,YAAY,CAACd;gBACX,OAAOF,wBAAwBC,QAAQC;YACzC;YACAe,MAAM;gBAAC3D;aAAc;QACvB;QAEA,gBAAgB;QAChB;YAAEwD,SAAS1E;YAAuB2E,UAAUH;QAAY;QACxD;YAAEE,SAASzE;YAAe0E,UAAUH;QAAY;QAChD;YAAEE,SAASxE;YAAiByE,UAAUH;QAAY;QAClD;YAAEE,SAASvE;YAAYwE,UAAUH;QAAY;QAC7C;YAAEE,SAAStE;YAAgBuE,UAAUH;QAAY;QACjD;YAAEE,SAASrE;YAAoBsE,UAAUH;QAAY;QACrD;YAAEE,SAASpE;YAAsBqE,UAAUH;QAAY;QACvD;YAAEE,SAASnE;YAAcoE,UAAUH;QAAY;QAC/C;YAAEE,SAASlE;YAAcmE,UAAUH;QAAY;QAC/C;YAAEE,SAASjE;YAAekE,UAAUH;QAAY;QAChD;YAAEE,SAAShE;YAAkBiE,UAAUH;QAAY;QACnD;YAAEE,SAAS/D;YAAgBgE,UAAUH;QAAY;QACjD;YAAEE,SAAS9D;YAAgB+D,UAAUH;QAAY;QACjD;YAAEE,SAAS7D;YAAc8D,UAAUH;QAAY;QAC/C;YAAEE,SAAS5D;YAAe6D,UAAUH;QAAY;QAChD;YAAEE,SAAS3D;YAAe4D,UAAUH;QAAY;QAChD;YAAEE,SAAS1D;YAAmB2D,UAAUH;QAAY;QACpD;YAAEE,SAASzD;YAAmB0D,UAAUH;QAAY;KACrD;IAED,OAAO3E,yBAAyB4E;AAClC;AAEA;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASK,qBAAqBjB,MAAsB;IACzD,gCAAgC;IAChC,MAAMW,cAAc;QAAEjD,OAAOsC,OAAOtC,KAAK;QAAEC,UAAUqC,OAAOrC,QAAQ;IAAC;IAErE,OAAO;QACL,6BAA6B;QAC7B;YAAEkD,SAASvD;YAAiBwD,UAAUd;QAAO;QAE7C,gEAAgE;QAChE;YACEa,SAASxD;YACT0D,YAAY;oBACMf;gBAAhB,MAAMjB,UAAUiB,CAAAA,kBAAAA,OAAOjB,OAAO,YAAdiB,kBAAkB;gBAClC,OAAOxB,mBAAmBwB,OAAOtC,KAAK,EAAEqB,SAASiB,OAAOrC,QAAQ;YAClE;QACF;QAEA,+CAA+C;QAC/C;YACEkD,SAAS3E;YACT6E,YAAY,CAACd;gBACX,OAAOF,wBAAwBC,QAAQC;YACzC;YACAe,MAAM;gBAAC3D;aAAc;QACvB;QAEA,gBAAgB;QAChB;YAAEwD,SAAS1E;YAAuB2E,UAAUH;QAAY;QACxD;YAAEE,SAASzE;YAAe0E,UAAUH;QAAY;QAChD;YAAEE,SAASxE;YAAiByE,UAAUH;QAAY;QAClD;YAAEE,SAASvE;YAAYwE,UAAUH;QAAY;QAC7C;YAAEE,SAAStE;YAAgBuE,UAAUH;QAAY;QACjD;YAAEE,SAASrE;YAAoBsE,UAAUH;QAAY;QACrD;YAAEE,SAASpE;YAAsBqE,UAAUH;QAAY;QACvD;YAAEE,SAASnE;YAAcoE,UAAUH;QAAY;QAC/C;YAAEE,SAASlE;YAAcmE,UAAUH;QAAY;QAC/C;YAAEE,SAASjE;YAAekE,UAAUH;QAAY;QAChD;YAAEE,SAAShE;YAAkBiE,UAAUH;QAAY;QACnD;YAAEE,SAAS/D;YAAgBgE,UAAUH;QAAY;QACjD;YAAEE,SAAS9D;YAAgB+D,UAAUH;QAAY;QACjD;YAAEE,SAAS7D;YAAc8D,UAAUH;QAAY;QAC/C;YAAEE,SAAS5D;YAAe6D,UAAUH;QAAY;QAChD;YAAEE,SAAS3D;YAAe4D,UAAUH;QAAY;QAChD;YAAEE,SAAS1D;YAAmB2D,UAAUH;QAAY;QACpD;YAAEE,SAASzD;YAAmB0D,UAAUH;QAAY;KACrD;AACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@23blocks/angular",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Angular bindings for 23blocks SDK - Injectable services with RxJS Observables",
5
5
  "license": "MIT",
6
6
  "author": "23blocks <hello@23blocks.com>",