@23blocks/angular 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.esm.js +4230 -0
  3. package/dist/src/index.d.ts +2 -0
  4. package/dist/src/index.d.ts.map +1 -0
  5. package/dist/src/lib/assets/assets.service.d.ts +58 -0
  6. package/dist/src/lib/assets/assets.service.d.ts.map +1 -0
  7. package/dist/{lib/assets/index.js → src/lib/assets/index.d.ts} +1 -2
  8. package/dist/src/lib/assets/index.d.ts.map +1 -0
  9. package/dist/src/lib/authentication/authentication.service.d.ts +105 -0
  10. package/dist/src/lib/authentication/authentication.service.d.ts.map +1 -0
  11. package/dist/{lib/authentication/index.js → src/lib/authentication/index.d.ts} +1 -2
  12. package/dist/src/lib/authentication/index.d.ts.map +1 -0
  13. package/dist/src/lib/campaigns/campaigns.service.d.ts +66 -0
  14. package/dist/src/lib/campaigns/campaigns.service.d.ts.map +1 -0
  15. package/dist/{lib/campaigns/index.js → src/lib/campaigns/index.d.ts} +1 -2
  16. package/dist/src/lib/campaigns/index.d.ts.map +1 -0
  17. package/dist/src/lib/company/company.service.d.ts +65 -0
  18. package/dist/src/lib/company/company.service.d.ts.map +1 -0
  19. package/dist/{lib/company/index.js → src/lib/company/index.d.ts} +1 -2
  20. package/dist/src/lib/company/index.d.ts.map +1 -0
  21. package/dist/src/lib/content/content.service.d.ts +67 -0
  22. package/dist/src/lib/content/content.service.d.ts.map +1 -0
  23. package/dist/{lib/content/index.js → src/lib/content/index.d.ts} +1 -2
  24. package/dist/src/lib/content/index.d.ts.map +1 -0
  25. package/dist/src/lib/conversations/conversations.service.d.ts +74 -0
  26. package/dist/src/lib/conversations/conversations.service.d.ts.map +1 -0
  27. package/dist/{lib/conversations/index.js → src/lib/conversations/index.d.ts} +1 -2
  28. package/dist/src/lib/conversations/index.d.ts.map +1 -0
  29. package/dist/src/lib/crm/crm.service.d.ts +84 -0
  30. package/dist/src/lib/crm/crm.service.d.ts.map +1 -0
  31. package/dist/{lib/crm/index.js → src/lib/crm/index.d.ts} +1 -2
  32. package/dist/src/lib/crm/index.d.ts.map +1 -0
  33. package/dist/src/lib/files/files.service.d.ts +62 -0
  34. package/dist/src/lib/files/files.service.d.ts.map +1 -0
  35. package/dist/{lib/files/index.js → src/lib/files/index.d.ts} +1 -2
  36. package/dist/src/lib/files/index.d.ts.map +1 -0
  37. package/dist/src/lib/forms/forms.service.d.ts +60 -0
  38. package/dist/src/lib/forms/forms.service.d.ts.map +1 -0
  39. package/dist/src/lib/forms/index.d.ts +2 -0
  40. package/dist/src/lib/forms/index.d.ts.map +1 -0
  41. package/dist/src/lib/geolocation/geolocation.service.d.ts +93 -0
  42. package/dist/src/lib/geolocation/geolocation.service.d.ts.map +1 -0
  43. package/dist/{lib/geolocation/index.js → src/lib/geolocation/index.d.ts} +1 -2
  44. package/dist/src/lib/geolocation/index.d.ts.map +1 -0
  45. package/dist/src/lib/index.d.ts +22 -0
  46. package/dist/src/lib/index.d.ts.map +1 -0
  47. package/dist/{lib/jarvis/index.js → src/lib/jarvis/index.d.ts} +1 -2
  48. package/dist/src/lib/jarvis/index.d.ts.map +1 -0
  49. package/dist/src/lib/jarvis/jarvis.service.d.ts +69 -0
  50. package/dist/src/lib/jarvis/jarvis.service.d.ts.map +1 -0
  51. package/dist/{lib/onboarding/index.js → src/lib/onboarding/index.d.ts} +1 -2
  52. package/dist/src/lib/onboarding/index.d.ts.map +1 -0
  53. package/dist/src/lib/onboarding/onboarding.service.d.ts +68 -0
  54. package/dist/src/lib/onboarding/onboarding.service.d.ts.map +1 -0
  55. package/dist/{lib/products/index.js → src/lib/products/index.d.ts} +1 -2
  56. package/dist/src/lib/products/index.d.ts.map +1 -0
  57. package/dist/src/lib/products/products.service.d.ts +101 -0
  58. package/dist/src/lib/products/products.service.d.ts.map +1 -0
  59. package/dist/src/lib/providers.d.ts +97 -0
  60. package/dist/src/lib/providers.d.ts.map +1 -0
  61. package/dist/{lib/rewards/index.js → src/lib/rewards/index.d.ts} +1 -2
  62. package/dist/src/lib/rewards/index.d.ts.map +1 -0
  63. package/dist/src/lib/rewards/rewards.service.d.ts +62 -0
  64. package/dist/src/lib/rewards/rewards.service.d.ts.map +1 -0
  65. package/dist/{lib/sales/index.js → src/lib/sales/index.d.ts} +1 -2
  66. package/dist/src/lib/sales/index.d.ts.map +1 -0
  67. package/dist/src/lib/sales/sales.service.d.ts +62 -0
  68. package/dist/src/lib/sales/sales.service.d.ts.map +1 -0
  69. package/dist/{lib/search/index.js → src/lib/search/index.d.ts} +1 -2
  70. package/dist/src/lib/search/index.d.ts.map +1 -0
  71. package/dist/src/lib/search/search.service.d.ts +80 -0
  72. package/dist/src/lib/search/search.service.d.ts.map +1 -0
  73. package/dist/src/lib/simple-providers.d.ts +202 -0
  74. package/dist/src/lib/simple-providers.d.ts.map +1 -0
  75. package/dist/src/lib/tokens.d.ts +114 -0
  76. package/dist/src/lib/tokens.d.ts.map +1 -0
  77. package/dist/{lib/university/index.js → src/lib/university/index.d.ts} +1 -2
  78. package/dist/src/lib/university/index.d.ts.map +1 -0
  79. package/dist/src/lib/university/university.service.d.ts +75 -0
  80. package/dist/src/lib/university/university.service.d.ts.map +1 -0
  81. package/dist/{lib/wallet/index.js → src/lib/wallet/index.d.ts} +1 -2
  82. package/dist/src/lib/wallet/index.d.ts.map +1 -0
  83. package/dist/src/lib/wallet/wallet.service.d.ts +60 -0
  84. package/dist/src/lib/wallet/wallet.service.d.ts.map +1 -0
  85. package/package.json +10 -8
  86. package/dist/index.js +0 -3
  87. package/dist/index.js.map +0 -1
  88. package/dist/lib/assets/assets.service.js +0 -123
  89. package/dist/lib/assets/assets.service.js.map +0 -1
  90. package/dist/lib/assets/index.js.map +0 -1
  91. package/dist/lib/authentication/authentication.service.js +0 -209
  92. package/dist/lib/authentication/authentication.service.js.map +0 -1
  93. package/dist/lib/authentication/index.js.map +0 -1
  94. package/dist/lib/campaigns/campaigns.service.js +0 -150
  95. package/dist/lib/campaigns/campaigns.service.js.map +0 -1
  96. package/dist/lib/campaigns/index.js.map +0 -1
  97. package/dist/lib/company/company.service.js +0 -150
  98. package/dist/lib/company/company.service.js.map +0 -1
  99. package/dist/lib/company/index.js.map +0 -1
  100. package/dist/lib/content/content.service.js +0 -153
  101. package/dist/lib/content/content.service.js.map +0 -1
  102. package/dist/lib/content/index.js.map +0 -1
  103. package/dist/lib/conversations/conversations.service.js +0 -177
  104. package/dist/lib/conversations/conversations.service.js.map +0 -1
  105. package/dist/lib/conversations/index.js.map +0 -1
  106. package/dist/lib/crm/crm.service.js +0 -210
  107. package/dist/lib/crm/crm.service.js.map +0 -1
  108. package/dist/lib/crm/index.js.map +0 -1
  109. package/dist/lib/files/files.service.js +0 -120
  110. package/dist/lib/files/files.service.js.map +0 -1
  111. package/dist/lib/files/index.js.map +0 -1
  112. package/dist/lib/forms/forms.service.js +0 -132
  113. package/dist/lib/forms/forms.service.js.map +0 -1
  114. package/dist/lib/forms/index.js +0 -3
  115. package/dist/lib/forms/index.js.map +0 -1
  116. package/dist/lib/geolocation/geolocation.service.js +0 -240
  117. package/dist/lib/geolocation/geolocation.service.js.map +0 -1
  118. package/dist/lib/geolocation/index.js.map +0 -1
  119. package/dist/lib/index.js +0 -36
  120. package/dist/lib/index.js.map +0 -1
  121. package/dist/lib/jarvis/index.js.map +0 -1
  122. package/dist/lib/jarvis/jarvis.service.js +0 -162
  123. package/dist/lib/jarvis/jarvis.service.js.map +0 -1
  124. package/dist/lib/onboarding/index.js.map +0 -1
  125. package/dist/lib/onboarding/onboarding.service.js +0 -132
  126. package/dist/lib/onboarding/onboarding.service.js.map +0 -1
  127. package/dist/lib/products/index.js.map +0 -1
  128. package/dist/lib/products/products.service.js +0 -255
  129. package/dist/lib/products/products.service.js.map +0 -1
  130. package/dist/lib/providers.js +0 -286
  131. package/dist/lib/providers.js.map +0 -1
  132. package/dist/lib/rewards/index.js.map +0 -1
  133. package/dist/lib/rewards/rewards.service.js +0 -138
  134. package/dist/lib/rewards/rewards.service.js.map +0 -1
  135. package/dist/lib/sales/index.js.map +0 -1
  136. package/dist/lib/sales/sales.service.js +0 -138
  137. package/dist/lib/sales/sales.service.js.map +0 -1
  138. package/dist/lib/search/index.js.map +0 -1
  139. package/dist/lib/search/search.service.js +0 -106
  140. package/dist/lib/search/search.service.js.map +0 -1
  141. package/dist/lib/simple-providers.js +0 -498
  142. package/dist/lib/simple-providers.js.map +0 -1
  143. package/dist/lib/tokens.js +0 -85
  144. package/dist/lib/tokens.js.map +0 -1
  145. package/dist/lib/university/index.js.map +0 -1
  146. package/dist/lib/university/university.service.js +0 -174
  147. package/dist/lib/university/university.service.js.map +0 -1
  148. package/dist/lib/wallet/index.js.map +0 -1
  149. package/dist/lib/wallet/wallet.service.js +0 -111
  150. package/dist/lib/wallet/wallet.service.js.map +0 -1
@@ -1 +0,0 @@
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 // Per-service transport tokens\n AUTHENTICATION_TRANSPORT,\n SEARCH_TRANSPORT,\n PRODUCTS_TRANSPORT,\n CRM_TRANSPORT,\n CONTENT_TRANSPORT,\n GEOLOCATION_TRANSPORT,\n CONVERSATIONS_TRANSPORT,\n FILES_TRANSPORT,\n FORMS_TRANSPORT,\n ASSETS_TRANSPORT,\n CAMPAIGNS_TRANSPORT,\n COMPANY_TRANSPORT,\n REWARDS_TRANSPORT,\n SALES_TRANSPORT,\n WALLET_TRANSPORT,\n JARVIS_TRANSPORT,\n ONBOARDING_TRANSPORT,\n UNIVERSITY_TRANSPORT,\n // Config tokens\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 * Service URL configuration - each microservice has its own URL.\n * All URLs are optional - only configure the services you need.\n */\nexport interface ServiceUrls {\n /** Authentication service URL */\n authentication?: string;\n /** Search service URL */\n search?: string;\n /** Products service URL */\n products?: string;\n /** CRM service URL */\n crm?: string;\n /** Content service URL */\n content?: string;\n /** Geolocation service URL */\n geolocation?: string;\n /** Conversations service URL */\n conversations?: string;\n /** Files service URL */\n files?: string;\n /** Forms service URL */\n forms?: string;\n /** Assets service URL */\n assets?: string;\n /** Campaigns service URL */\n campaigns?: string;\n /** Company service URL */\n company?: string;\n /** Rewards service URL */\n rewards?: string;\n /** Sales service URL */\n sales?: string;\n /** Wallet service URL */\n wallet?: string;\n /** Jarvis (AI) service URL */\n jarvis?: string;\n /** Onboarding service URL */\n onboarding?: string;\n /** University (LMS) service URL */\n university?: string;\n}\n\n/**\n * Configuration for providing 23blocks services\n */\nexport interface ProviderConfig {\n /**\n * Service URLs for each microservice.\n * Only configure the services you need - accessing a service without\n * a configured URL will throw an error.\n *\n * @example\n * ```typescript\n * provideBlocks23({\n * appId: 'your-app-id',\n * urls: {\n * authentication: 'https://gateway.23blocks.com',\n * crm: 'https://crm.23blocks.com',\n * products: 'https://products.23blocks.com',\n * },\n * })\n * ```\n */\n urls: ServiceUrls;\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 for a specific URL\n */\nfunction createTransportWithAuth(\n baseUrl: string,\n config: ProviderConfig,\n tokenManager: TokenManagerService\n): Transport {\n return createHttpTransport({\n 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 * Services are only available if their URL is configured. Accessing a service\n * without a configured URL will throw an error.\n *\n * @example Basic usage with multiple services\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 * appId: 'your-app-id',\n * urls: {\n * authentication: 'https://gateway.23blocks.com',\n * crm: 'https://crm.23blocks.com',\n * products: 'https://products.23blocks.com',\n * },\n * }),\n * ],\n * };\n * ```\n *\n * @example Cookie mode (recommended for security)\n * ```typescript\n * export const appConfig: ApplicationConfig = {\n * providers: [\n * provideBlocks23({\n * appId: 'your-app-id',\n * authMode: 'cookie',\n * urls: {\n * authentication: 'https://gateway.23blocks.com',\n * crm: 'https://crm.23blocks.com',\n * },\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 // Helper to create transport provider for a service URL\n const createTransportProvider = (\n token: InjectionToken<Transport | null>,\n url: string | undefined\n ): Provider => ({\n provide: token,\n useFactory: (tokenManager: TokenManagerService) => {\n if (!url) return null;\n return createTransportWithAuth(url, config, tokenManager);\n },\n deps: [TOKEN_MANAGER],\n });\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 // Per-service transport factories (null if URL not configured)\n createTransportProvider(AUTHENTICATION_TRANSPORT, config.urls.authentication),\n createTransportProvider(SEARCH_TRANSPORT, config.urls.search),\n createTransportProvider(PRODUCTS_TRANSPORT, config.urls.products),\n createTransportProvider(CRM_TRANSPORT, config.urls.crm),\n createTransportProvider(CONTENT_TRANSPORT, config.urls.content),\n createTransportProvider(GEOLOCATION_TRANSPORT, config.urls.geolocation),\n createTransportProvider(CONVERSATIONS_TRANSPORT, config.urls.conversations),\n createTransportProvider(FILES_TRANSPORT, config.urls.files),\n createTransportProvider(FORMS_TRANSPORT, config.urls.forms),\n createTransportProvider(ASSETS_TRANSPORT, config.urls.assets),\n createTransportProvider(CAMPAIGNS_TRANSPORT, config.urls.campaigns),\n createTransportProvider(COMPANY_TRANSPORT, config.urls.company),\n createTransportProvider(REWARDS_TRANSPORT, config.urls.rewards),\n createTransportProvider(SALES_TRANSPORT, config.urls.sales),\n createTransportProvider(WALLET_TRANSPORT, config.urls.wallet),\n createTransportProvider(JARVIS_TRANSPORT, config.urls.jarvis),\n createTransportProvider(ONBOARDING_TRANSPORT, config.urls.onboarding),\n createTransportProvider(UNIVERSITY_TRANSPORT, config.urls.university),\n\n // Backward compatibility: provide TRANSPORT token using auth URL if available\n // (for advanced API users who still inject TRANSPORT directly)\n {\n provide: TRANSPORT,\n useFactory: (tokenManager: TokenManagerService) => {\n // Use auth URL if available, otherwise create a dummy transport that throws\n const url = config.urls.authentication;\n if (url) {\n return createTransportWithAuth(url, config, tokenManager);\n }\n // Return a transport that throws helpful errors\n return {\n request: () => {\n throw new Error(\n '[23blocks] TRANSPORT is not configured. ' +\n 'Use per-service transport tokens or configure urls.authentication.'\n );\n },\n };\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 * Services are only available if their URL is configured. Accessing a service\n * without a configured URL will throw an error.\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 * appId: 'your-app-id',\n * urls: {\n * authentication: 'https://gateway.23blocks.com',\n * crm: 'https://crm.23blocks.com',\n * },\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 // Helper to create transport provider for a service URL\n const createTransportProvider = (\n token: InjectionToken<Transport | null>,\n url: string | undefined\n ): Provider => ({\n provide: token,\n useFactory: (tokenManager: TokenManagerService) => {\n if (!url) return null;\n return createTransportWithAuth(url, config, tokenManager);\n },\n deps: [TOKEN_MANAGER],\n });\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 // Per-service transport factories (null if URL not configured)\n createTransportProvider(AUTHENTICATION_TRANSPORT, config.urls.authentication),\n createTransportProvider(SEARCH_TRANSPORT, config.urls.search),\n createTransportProvider(PRODUCTS_TRANSPORT, config.urls.products),\n createTransportProvider(CRM_TRANSPORT, config.urls.crm),\n createTransportProvider(CONTENT_TRANSPORT, config.urls.content),\n createTransportProvider(GEOLOCATION_TRANSPORT, config.urls.geolocation),\n createTransportProvider(CONVERSATIONS_TRANSPORT, config.urls.conversations),\n createTransportProvider(FILES_TRANSPORT, config.urls.files),\n createTransportProvider(FORMS_TRANSPORT, config.urls.forms),\n createTransportProvider(ASSETS_TRANSPORT, config.urls.assets),\n createTransportProvider(CAMPAIGNS_TRANSPORT, config.urls.campaigns),\n createTransportProvider(COMPANY_TRANSPORT, config.urls.company),\n createTransportProvider(REWARDS_TRANSPORT, config.urls.rewards),\n createTransportProvider(SALES_TRANSPORT, config.urls.sales),\n createTransportProvider(WALLET_TRANSPORT, config.urls.wallet),\n createTransportProvider(JARVIS_TRANSPORT, config.urls.jarvis),\n createTransportProvider(ONBOARDING_TRANSPORT, config.urls.onboarding),\n createTransportProvider(UNIVERSITY_TRANSPORT, config.urls.university),\n\n // Backward compatibility: provide TRANSPORT token using auth URL if available\n {\n provide: TRANSPORT,\n useFactory: (tokenManager: TokenManagerService) => {\n const url = config.urls.authentication;\n if (url) {\n return createTransportWithAuth(url, config, tokenManager);\n }\n return {\n request: () => {\n throw new Error(\n '[23blocks] TRANSPORT is not configured. ' +\n 'Use per-service transport tokens or configure urls.authentication.'\n );\n },\n };\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_TRANSPORT","SEARCH_TRANSPORT","PRODUCTS_TRANSPORT","CRM_TRANSPORT","CONTENT_TRANSPORT","GEOLOCATION_TRANSPORT","CONVERSATIONS_TRANSPORT","FILES_TRANSPORT","FORMS_TRANSPORT","ASSETS_TRANSPORT","CAMPAIGNS_TRANSPORT","COMPANY_TRANSPORT","REWARDS_TRANSPORT","SALES_TRANSPORT","WALLET_TRANSPORT","JARVIS_TRANSPORT","ONBOARDING_TRANSPORT","UNIVERSITY_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","baseUrl","config","tokenManager","timeout","credentials","authMode","undefined","headers","appid","token","provideBlocks23","blockConfig","createTransportProvider","url","provide","useFactory","deps","providers","useValue","urls","authentication","search","products","crm","content","geolocation","conversations","files","forms","assets","campaigns","company","rewards","sales","wallet","jarvis","onboarding","university","request","Error","getBlocks23Providers"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,85 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- // ─────────────────────────────────────────────────────────────────────────────
3
- // Transport Tokens (per-service)
4
- // ─────────────────────────────────────────────────────────────────────────────
5
- /**
6
- * @deprecated Use per-service transport tokens (AUTHENTICATION_TRANSPORT, etc.)
7
- * Shared transport token - only for backward compatibility with advanced API
8
- */ export const TRANSPORT = new InjectionToken('23blocks.transport');
9
- /** Transport for Authentication service */ export const AUTHENTICATION_TRANSPORT = new InjectionToken('23blocks.authentication.transport');
10
- /** Transport for Search service */ export const SEARCH_TRANSPORT = new InjectionToken('23blocks.search.transport');
11
- /** Transport for Products service */ export const PRODUCTS_TRANSPORT = new InjectionToken('23blocks.products.transport');
12
- /** Transport for CRM service */ export const CRM_TRANSPORT = new InjectionToken('23blocks.crm.transport');
13
- /** Transport for Content service */ export const CONTENT_TRANSPORT = new InjectionToken('23blocks.content.transport');
14
- /** Transport for Geolocation service */ export const GEOLOCATION_TRANSPORT = new InjectionToken('23blocks.geolocation.transport');
15
- /** Transport for Conversations service */ export const CONVERSATIONS_TRANSPORT = new InjectionToken('23blocks.conversations.transport');
16
- /** Transport for Files service */ export const FILES_TRANSPORT = new InjectionToken('23blocks.files.transport');
17
- /** Transport for Forms service */ export const FORMS_TRANSPORT = new InjectionToken('23blocks.forms.transport');
18
- /** Transport for Assets service */ export const ASSETS_TRANSPORT = new InjectionToken('23blocks.assets.transport');
19
- /** Transport for Campaigns service */ export const CAMPAIGNS_TRANSPORT = new InjectionToken('23blocks.campaigns.transport');
20
- /** Transport for Company service */ export const COMPANY_TRANSPORT = new InjectionToken('23blocks.company.transport');
21
- /** Transport for Rewards service */ export const REWARDS_TRANSPORT = new InjectionToken('23blocks.rewards.transport');
22
- /** Transport for Sales service */ export const SALES_TRANSPORT = new InjectionToken('23blocks.sales.transport');
23
- /** Transport for Wallet service */ export const WALLET_TRANSPORT = new InjectionToken('23blocks.wallet.transport');
24
- /** Transport for Jarvis service */ export const JARVIS_TRANSPORT = new InjectionToken('23blocks.jarvis.transport');
25
- /** Transport for Onboarding service */ export const ONBOARDING_TRANSPORT = new InjectionToken('23blocks.onboarding.transport');
26
- /** Transport for University service */ export const UNIVERSITY_TRANSPORT = new InjectionToken('23blocks.university.transport');
27
- // ─────────────────────────────────────────────────────────────────────────────
28
- // Config Tokens (per-service)
29
- // ─────────────────────────────────────────────────────────────────────────────
30
- /**
31
- * Injection token for Authentication block configuration
32
- */ export const AUTHENTICATION_CONFIG = new InjectionToken('23blocks.authentication.config');
33
- /**
34
- * Injection token for Search block configuration
35
- */ export const SEARCH_CONFIG = new InjectionToken('23blocks.search.config');
36
- /**
37
- * Injection token for Geolocation block configuration
38
- */ export const GEOLOCATION_CONFIG = new InjectionToken('23blocks.geolocation.config');
39
- /**
40
- * Injection token for Content block configuration
41
- */ export const CONTENT_CONFIG = new InjectionToken('23blocks.content.config');
42
- /**
43
- * Injection token for CRM block configuration
44
- */ export const CRM_CONFIG = new InjectionToken('23blocks.crm.config');
45
- /**
46
- * Injection token for Products block configuration
47
- */ export const PRODUCTS_CONFIG = new InjectionToken('23blocks.products.config');
48
- /**
49
- * Injection token for Conversations block configuration
50
- */ export const CONVERSATIONS_CONFIG = new InjectionToken('23blocks.conversations.config');
51
- /**
52
- * Injection token for Files block configuration
53
- */ export const FILES_CONFIG = new InjectionToken('23blocks.files.config');
54
- /**
55
- * Injection token for Assets block configuration
56
- */ export const ASSETS_CONFIG = new InjectionToken('23blocks.assets.config');
57
- /**
58
- * Injection token for Forms block configuration
59
- */ export const FORMS_CONFIG = new InjectionToken('23blocks.forms.config');
60
- /**
61
- * Injection token for Sales block configuration
62
- */ export const SALES_CONFIG = new InjectionToken('23blocks.sales.config');
63
- /**
64
- * Injection token for Campaigns block configuration
65
- */ export const CAMPAIGNS_CONFIG = new InjectionToken('23blocks.campaigns.config');
66
- /**
67
- * Injection token for Company block configuration
68
- */ export const COMPANY_CONFIG = new InjectionToken('23blocks.company.config');
69
- /**
70
- * Injection token for Rewards block configuration
71
- */ export const REWARDS_CONFIG = new InjectionToken('23blocks.rewards.config');
72
- /**
73
- * Injection token for Jarvis block configuration
74
- */ export const JARVIS_CONFIG = new InjectionToken('23blocks.jarvis.config');
75
- /**
76
- * Injection token for Onboarding block configuration
77
- */ export const ONBOARDING_CONFIG = new InjectionToken('23blocks.onboarding.config');
78
- /**
79
- * Injection token for University block configuration
80
- */ export const UNIVERSITY_CONFIG = new InjectionToken('23blocks.university.config');
81
- /**
82
- * Injection token for Wallet block configuration
83
- */ export const WALLET_CONFIG = new InjectionToken('23blocks.wallet.config');
84
-
85
- //# sourceMappingURL=tokens.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/lib/tokens.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport type { Transport } from '@23blocks/contracts';\nimport type { AuthenticationBlockConfig } from '@23blocks/block-authentication';\nimport type { SearchBlockConfig } from '@23blocks/block-search';\nimport type { GeolocationBlockConfig } from '@23blocks/block-geolocation';\nimport type { ContentBlockConfig } from '@23blocks/block-content';\nimport type { CrmBlockConfig } from '@23blocks/block-crm';\nimport type { ProductsBlockConfig } from '@23blocks/block-products';\nimport type { ConversationsBlockConfig } from '@23blocks/block-conversations';\nimport type { FilesBlockConfig } from '@23blocks/block-files';\nimport type { AssetsBlockConfig } from '@23blocks/block-assets';\nimport type { FormsBlockConfig } from '@23blocks/block-forms';\nimport type { SalesBlockConfig } from '@23blocks/block-sales';\nimport type { CampaignsBlockConfig } from '@23blocks/block-campaigns';\nimport type { CompanyBlockConfig } from '@23blocks/block-company';\nimport type { RewardsBlockConfig } from '@23blocks/block-rewards';\nimport type { JarvisBlockConfig } from '@23blocks/block-jarvis';\nimport type { OnboardingBlockConfig } from '@23blocks/block-onboarding';\nimport type { UniversityBlockConfig } from '@23blocks/block-university';\nimport type { WalletBlockConfig } from '@23blocks/block-wallet';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Transport Tokens (per-service)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * @deprecated Use per-service transport tokens (AUTHENTICATION_TRANSPORT, etc.)\n * Shared transport token - only for backward compatibility with advanced API\n */\nexport const TRANSPORT = new InjectionToken<Transport>('23blocks.transport');\n\n/** Transport for Authentication service */\nexport const AUTHENTICATION_TRANSPORT = new InjectionToken<Transport | null>('23blocks.authentication.transport');\n\n/** Transport for Search service */\nexport const SEARCH_TRANSPORT = new InjectionToken<Transport | null>('23blocks.search.transport');\n\n/** Transport for Products service */\nexport const PRODUCTS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.products.transport');\n\n/** Transport for CRM service */\nexport const CRM_TRANSPORT = new InjectionToken<Transport | null>('23blocks.crm.transport');\n\n/** Transport for Content service */\nexport const CONTENT_TRANSPORT = new InjectionToken<Transport | null>('23blocks.content.transport');\n\n/** Transport for Geolocation service */\nexport const GEOLOCATION_TRANSPORT = new InjectionToken<Transport | null>('23blocks.geolocation.transport');\n\n/** Transport for Conversations service */\nexport const CONVERSATIONS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.conversations.transport');\n\n/** Transport for Files service */\nexport const FILES_TRANSPORT = new InjectionToken<Transport | null>('23blocks.files.transport');\n\n/** Transport for Forms service */\nexport const FORMS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.forms.transport');\n\n/** Transport for Assets service */\nexport const ASSETS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.assets.transport');\n\n/** Transport for Campaigns service */\nexport const CAMPAIGNS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.campaigns.transport');\n\n/** Transport for Company service */\nexport const COMPANY_TRANSPORT = new InjectionToken<Transport | null>('23blocks.company.transport');\n\n/** Transport for Rewards service */\nexport const REWARDS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.rewards.transport');\n\n/** Transport for Sales service */\nexport const SALES_TRANSPORT = new InjectionToken<Transport | null>('23blocks.sales.transport');\n\n/** Transport for Wallet service */\nexport const WALLET_TRANSPORT = new InjectionToken<Transport | null>('23blocks.wallet.transport');\n\n/** Transport for Jarvis service */\nexport const JARVIS_TRANSPORT = new InjectionToken<Transport | null>('23blocks.jarvis.transport');\n\n/** Transport for Onboarding service */\nexport const ONBOARDING_TRANSPORT = new InjectionToken<Transport | null>('23blocks.onboarding.transport');\n\n/** Transport for University service */\nexport const UNIVERSITY_TRANSPORT = new InjectionToken<Transport | null>('23blocks.university.transport');\n\n// ─────────────────────────────────────────────────────────────────────────────\n// Config Tokens (per-service)\n// ─────────────────────────────────────────────────────────────────────────────\n\n/**\n * Injection token for Authentication block configuration\n */\nexport const AUTHENTICATION_CONFIG = new InjectionToken<AuthenticationBlockConfig>(\n '23blocks.authentication.config'\n);\n\n/**\n * Injection token for Search block configuration\n */\nexport const SEARCH_CONFIG = new InjectionToken<SearchBlockConfig>(\n '23blocks.search.config'\n);\n\n/**\n * Injection token for Geolocation block configuration\n */\nexport const GEOLOCATION_CONFIG = new InjectionToken<GeolocationBlockConfig>(\n '23blocks.geolocation.config'\n);\n\n/**\n * Injection token for Content block configuration\n */\nexport const CONTENT_CONFIG = new InjectionToken<ContentBlockConfig>(\n '23blocks.content.config'\n);\n\n/**\n * Injection token for CRM block configuration\n */\nexport const CRM_CONFIG = new InjectionToken<CrmBlockConfig>(\n '23blocks.crm.config'\n);\n\n/**\n * Injection token for Products block configuration\n */\nexport const PRODUCTS_CONFIG = new InjectionToken<ProductsBlockConfig>(\n '23blocks.products.config'\n);\n\n/**\n * Injection token for Conversations block configuration\n */\nexport const CONVERSATIONS_CONFIG = new InjectionToken<ConversationsBlockConfig>(\n '23blocks.conversations.config'\n);\n\n/**\n * Injection token for Files block configuration\n */\nexport const FILES_CONFIG = new InjectionToken<FilesBlockConfig>(\n '23blocks.files.config'\n);\n\n/**\n * Injection token for Assets block configuration\n */\nexport const ASSETS_CONFIG = new InjectionToken<AssetsBlockConfig>(\n '23blocks.assets.config'\n);\n\n/**\n * Injection token for Forms block configuration\n */\nexport const FORMS_CONFIG = new InjectionToken<FormsBlockConfig>(\n '23blocks.forms.config'\n);\n\n/**\n * Injection token for Sales block configuration\n */\nexport const SALES_CONFIG = new InjectionToken<SalesBlockConfig>(\n '23blocks.sales.config'\n);\n\n/**\n * Injection token for Campaigns block configuration\n */\nexport const CAMPAIGNS_CONFIG = new InjectionToken<CampaignsBlockConfig>(\n '23blocks.campaigns.config'\n);\n\n/**\n * Injection token for Company block configuration\n */\nexport const COMPANY_CONFIG = new InjectionToken<CompanyBlockConfig>(\n '23blocks.company.config'\n);\n\n/**\n * Injection token for Rewards block configuration\n */\nexport const REWARDS_CONFIG = new InjectionToken<RewardsBlockConfig>(\n '23blocks.rewards.config'\n);\n\n/**\n * Injection token for Jarvis block configuration\n */\nexport const JARVIS_CONFIG = new InjectionToken<JarvisBlockConfig>(\n '23blocks.jarvis.config'\n);\n\n/**\n * Injection token for Onboarding block configuration\n */\nexport const ONBOARDING_CONFIG = new InjectionToken<OnboardingBlockConfig>(\n '23blocks.onboarding.config'\n);\n\n/**\n * Injection token for University block configuration\n */\nexport const UNIVERSITY_CONFIG = new InjectionToken<UniversityBlockConfig>(\n '23blocks.university.config'\n);\n\n/**\n * Injection token for Wallet block configuration\n */\nexport const WALLET_CONFIG = new InjectionToken<WalletBlockConfig>(\n '23blocks.wallet.config'\n);\n"],"names":["InjectionToken","TRANSPORT","AUTHENTICATION_TRANSPORT","SEARCH_TRANSPORT","PRODUCTS_TRANSPORT","CRM_TRANSPORT","CONTENT_TRANSPORT","GEOLOCATION_TRANSPORT","CONVERSATIONS_TRANSPORT","FILES_TRANSPORT","FORMS_TRANSPORT","ASSETS_TRANSPORT","CAMPAIGNS_TRANSPORT","COMPANY_TRANSPORT","REWARDS_TRANSPORT","SALES_TRANSPORT","WALLET_TRANSPORT","JARVIS_TRANSPORT","ONBOARDING_TRANSPORT","UNIVERSITY_TRANSPORT","AUTHENTICATION_CONFIG","SEARCH_CONFIG","GEOLOCATION_CONFIG","CONTENT_CONFIG","CRM_CONFIG","PRODUCTS_CONFIG","CONVERSATIONS_CONFIG","FILES_CONFIG","ASSETS_CONFIG","FORMS_CONFIG","SALES_CONFIG","CAMPAIGNS_CONFIG","COMPANY_CONFIG","REWARDS_CONFIG","JARVIS_CONFIG","ONBOARDING_CONFIG","UNIVERSITY_CONFIG","WALLET_CONFIG"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/university/index.ts"],"sourcesContent":["export { UniversityService } from './university.service';\n"],"names":["UniversityService"],"rangeMappings":"","mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB"}
@@ -1,174 +0,0 @@
1
- import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
- import { _ as _ts_metadata } from "@swc/helpers/_/_ts_metadata";
3
- import { _ as _ts_param } from "@swc/helpers/_/_ts_param";
4
- import { Injectable, Inject, Optional } from '@angular/core';
5
- import { from } from 'rxjs';
6
- import { createUniversityBlock } from '@23blocks/block-university';
7
- import { TRANSPORT, UNIVERSITY_TRANSPORT, UNIVERSITY_CONFIG } from '../tokens.js';
8
- export class UniversityService {
9
- /**
10
- * Ensure the service is configured, throw helpful error if not
11
- */ ensureConfigured() {
12
- if (!this.block) {
13
- throw new Error('[23blocks] UniversityService is not configured. ' + "Add 'urls.university' to your provideBlocks23() configuration.");
14
- }
15
- return this.block;
16
- }
17
- // ─────────────────────────────────────────────────────────────────────────────
18
- // Courses Service
19
- // ─────────────────────────────────────────────────────────────────────────────
20
- listCourses(params) {
21
- return from(this.ensureConfigured().courses.list(params));
22
- }
23
- getCourse(uniqueId) {
24
- return from(this.ensureConfigured().courses.get(uniqueId));
25
- }
26
- createCourse(data) {
27
- return from(this.ensureConfigured().courses.create(data));
28
- }
29
- updateCourse(uniqueId, data) {
30
- return from(this.ensureConfigured().courses.update(uniqueId, data));
31
- }
32
- deleteCourse(uniqueId) {
33
- return from(this.ensureConfigured().courses.delete(uniqueId));
34
- }
35
- publishCourse(uniqueId) {
36
- return from(this.ensureConfigured().courses.publish(uniqueId));
37
- }
38
- unpublishCourse(uniqueId) {
39
- return from(this.ensureConfigured().courses.unpublish(uniqueId));
40
- }
41
- listCoursesByInstructor(instructorUniqueId, params) {
42
- return from(this.ensureConfigured().courses.listByInstructor(instructorUniqueId, params));
43
- }
44
- listCoursesByCategory(categoryUniqueId, params) {
45
- return from(this.ensureConfigured().courses.listByCategory(categoryUniqueId, params));
46
- }
47
- // ─────────────────────────────────────────────────────────────────────────────
48
- // Lessons Service
49
- // ─────────────────────────────────────────────────────────────────────────────
50
- listLessons(params) {
51
- return from(this.ensureConfigured().lessons.list(params));
52
- }
53
- getLesson(uniqueId) {
54
- return from(this.ensureConfigured().lessons.get(uniqueId));
55
- }
56
- createLesson(data) {
57
- return from(this.ensureConfigured().lessons.create(data));
58
- }
59
- updateLesson(uniqueId, data) {
60
- return from(this.ensureConfigured().lessons.update(uniqueId, data));
61
- }
62
- deleteLesson(uniqueId) {
63
- return from(this.ensureConfigured().lessons.delete(uniqueId));
64
- }
65
- reorderLessons(courseUniqueId, data) {
66
- return from(this.ensureConfigured().lessons.reorder(courseUniqueId, data));
67
- }
68
- listLessonsByCourse(courseUniqueId, params) {
69
- return from(this.ensureConfigured().lessons.listByCourse(courseUniqueId, params));
70
- }
71
- // ─────────────────────────────────────────────────────────────────────────────
72
- // Enrollments Service
73
- // ─────────────────────────────────────────────────────────────────────────────
74
- listEnrollments(params) {
75
- return from(this.ensureConfigured().enrollments.list(params));
76
- }
77
- getEnrollment(uniqueId) {
78
- return from(this.ensureConfigured().enrollments.get(uniqueId));
79
- }
80
- enroll(data) {
81
- return from(this.ensureConfigured().enrollments.enroll(data));
82
- }
83
- updateEnrollmentProgress(uniqueId, data) {
84
- return from(this.ensureConfigured().enrollments.updateProgress(uniqueId, data));
85
- }
86
- completeEnrollment(uniqueId) {
87
- return from(this.ensureConfigured().enrollments.complete(uniqueId));
88
- }
89
- dropEnrollment(uniqueId) {
90
- return from(this.ensureConfigured().enrollments.drop(uniqueId));
91
- }
92
- listEnrollmentsByCourse(courseUniqueId, params) {
93
- return from(this.ensureConfigured().enrollments.listByCourse(courseUniqueId, params));
94
- }
95
- listEnrollmentsByUser(userUniqueId, params) {
96
- return from(this.ensureConfigured().enrollments.listByUser(userUniqueId, params));
97
- }
98
- getCertificate(uniqueId) {
99
- return from(this.ensureConfigured().enrollments.getCertificate(uniqueId));
100
- }
101
- // ─────────────────────────────────────────────────────────────────────────────
102
- // Assignments Service
103
- // ─────────────────────────────────────────────────────────────────────────────
104
- listAssignments(params) {
105
- return from(this.ensureConfigured().assignments.list(params));
106
- }
107
- getAssignment(uniqueId) {
108
- return from(this.ensureConfigured().assignments.get(uniqueId));
109
- }
110
- createAssignment(data) {
111
- return from(this.ensureConfigured().assignments.create(data));
112
- }
113
- updateAssignment(uniqueId, data) {
114
- return from(this.ensureConfigured().assignments.update(uniqueId, data));
115
- }
116
- deleteAssignment(uniqueId) {
117
- return from(this.ensureConfigured().assignments.delete(uniqueId));
118
- }
119
- listAssignmentsByLesson(lessonUniqueId, params) {
120
- return from(this.ensureConfigured().assignments.listByLesson(lessonUniqueId, params));
121
- }
122
- // ─────────────────────────────────────────────────────────────────────────────
123
- // Submissions Service
124
- // ─────────────────────────────────────────────────────────────────────────────
125
- listSubmissions(params) {
126
- return from(this.ensureConfigured().submissions.list(params));
127
- }
128
- getSubmission(uniqueId) {
129
- return from(this.ensureConfigured().submissions.get(uniqueId));
130
- }
131
- submitAssignment(data) {
132
- return from(this.ensureConfigured().submissions.submit(data));
133
- }
134
- gradeSubmission(uniqueId, data) {
135
- return from(this.ensureConfigured().submissions.grade(uniqueId, data));
136
- }
137
- listSubmissionsByAssignment(assignmentUniqueId, params) {
138
- return from(this.ensureConfigured().submissions.listByAssignment(assignmentUniqueId, params));
139
- }
140
- listSubmissionsByUser(userUniqueId, params) {
141
- return from(this.ensureConfigured().submissions.listByUser(userUniqueId, params));
142
- }
143
- // ─────────────────────────────────────────────────────────────────────────────
144
- // Direct Block Access (for advanced usage)
145
- // ─────────────────────────────────────────────────────────────────────────────
146
- /**
147
- * Access the underlying block for advanced operations
148
- * Use this when you need access to services not wrapped by this Angular service
149
- */ get rawBlock() {
150
- return this.ensureConfigured();
151
- }
152
- constructor(serviceTransport, legacyTransport, config){
153
- const transport = serviceTransport != null ? serviceTransport : legacyTransport;
154
- this.block = transport ? createUniversityBlock(transport, config) : null;
155
- }
156
- }
157
- UniversityService = _ts_decorate([
158
- Injectable({
159
- providedIn: 'root'
160
- }),
161
- _ts_param(0, Optional()),
162
- _ts_param(0, Inject(UNIVERSITY_TRANSPORT)),
163
- _ts_param(1, Optional()),
164
- _ts_param(1, Inject(TRANSPORT)),
165
- _ts_param(2, Inject(UNIVERSITY_CONFIG)),
166
- _ts_metadata("design:type", Function),
167
- _ts_metadata("design:paramtypes", [
168
- Object,
169
- Object,
170
- typeof UniversityBlockConfig === "undefined" ? Object : UniversityBlockConfig
171
- ])
172
- ], UniversityService);
173
-
174
- //# sourceMappingURL=university.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/university/university.service.ts"],"sourcesContent":["import { Injectable, Inject, Optional } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport type { Transport, PageResult } from '@23blocks/contracts';\nimport {\n createUniversityBlock,\n type UniversityBlock,\n type UniversityBlockConfig,\n type Course,\n type CreateCourseRequest,\n type UpdateCourseRequest,\n type ListCoursesParams,\n type Lesson,\n type CreateLessonRequest,\n type UpdateLessonRequest,\n type ListLessonsParams,\n type ReorderLessonsRequest,\n type Enrollment,\n type EnrollRequest,\n type UpdateEnrollmentProgressRequest,\n type ListEnrollmentsParams,\n type Assignment,\n type CreateAssignmentRequest,\n type UpdateAssignmentRequest,\n type ListAssignmentsParams,\n type Submission,\n type SubmitAssignmentRequest,\n type GradeSubmissionRequest,\n type ListSubmissionsParams,\n} from '@23blocks/block-university';\nimport { TRANSPORT, UNIVERSITY_TRANSPORT, UNIVERSITY_CONFIG } from '../tokens.js';\n\n/**\n * Angular service wrapping the University block.\n * Converts Promise-based APIs to RxJS Observables.\n *\n * @example\n * ```typescript\n * @Component({...})\n * export class CourseListComponent {\n * constructor(private university: UniversityService) {}\n *\n * loadCourses() {\n * this.university.listCourses({ page: 1, perPage: 10 }).subscribe({\n * next: (result) => console.log('Courses:', result.data),\n * error: (err) => console.error('Failed:', err),\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class UniversityService {\n private readonly block: UniversityBlock | null;\n\n constructor(\n @Optional() @Inject(UNIVERSITY_TRANSPORT) serviceTransport: Transport | null,\n @Optional() @Inject(TRANSPORT) legacyTransport: Transport | null,\n @Inject(UNIVERSITY_CONFIG) config: UniversityBlockConfig\n ) {\n const transport = serviceTransport ?? legacyTransport;\n this.block = transport ? createUniversityBlock(transport, config) : null;\n }\n\n /**\n * Ensure the service is configured, throw helpful error if not\n */\n private ensureConfigured(): UniversityBlock {\n if (!this.block) {\n throw new Error(\n '[23blocks] UniversityService is not configured. ' +\n \"Add 'urls.university' to your provideBlocks23() configuration.\"\n );\n }\n return this.block;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Courses Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listCourses(params?: ListCoursesParams): Observable<PageResult<Course>> {\n return from(this.ensureConfigured().courses.list(params));\n }\n\n getCourse(uniqueId: string): Observable<Course> {\n return from(this.ensureConfigured().courses.get(uniqueId));\n }\n\n createCourse(data: CreateCourseRequest): Observable<Course> {\n return from(this.ensureConfigured().courses.create(data));\n }\n\n updateCourse(uniqueId: string, data: UpdateCourseRequest): Observable<Course> {\n return from(this.ensureConfigured().courses.update(uniqueId, data));\n }\n\n deleteCourse(uniqueId: string): Observable<void> {\n return from(this.ensureConfigured().courses.delete(uniqueId));\n }\n\n publishCourse(uniqueId: string): Observable<Course> {\n return from(this.ensureConfigured().courses.publish(uniqueId));\n }\n\n unpublishCourse(uniqueId: string): Observable<Course> {\n return from(this.ensureConfigured().courses.unpublish(uniqueId));\n }\n\n listCoursesByInstructor(instructorUniqueId: string, params?: ListCoursesParams): Observable<PageResult<Course>> {\n return from(this.ensureConfigured().courses.listByInstructor(instructorUniqueId, params));\n }\n\n listCoursesByCategory(categoryUniqueId: string, params?: ListCoursesParams): Observable<PageResult<Course>> {\n return from(this.ensureConfigured().courses.listByCategory(categoryUniqueId, params));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Lessons Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listLessons(params?: ListLessonsParams): Observable<PageResult<Lesson>> {\n return from(this.ensureConfigured().lessons.list(params));\n }\n\n getLesson(uniqueId: string): Observable<Lesson> {\n return from(this.ensureConfigured().lessons.get(uniqueId));\n }\n\n createLesson(data: CreateLessonRequest): Observable<Lesson> {\n return from(this.ensureConfigured().lessons.create(data));\n }\n\n updateLesson(uniqueId: string, data: UpdateLessonRequest): Observable<Lesson> {\n return from(this.ensureConfigured().lessons.update(uniqueId, data));\n }\n\n deleteLesson(uniqueId: string): Observable<void> {\n return from(this.ensureConfigured().lessons.delete(uniqueId));\n }\n\n reorderLessons(courseUniqueId: string, data: ReorderLessonsRequest): Observable<Lesson[]> {\n return from(this.ensureConfigured().lessons.reorder(courseUniqueId, data));\n }\n\n listLessonsByCourse(courseUniqueId: string, params?: ListLessonsParams): Observable<PageResult<Lesson>> {\n return from(this.ensureConfigured().lessons.listByCourse(courseUniqueId, params));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Enrollments Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listEnrollments(params?: ListEnrollmentsParams): Observable<PageResult<Enrollment>> {\n return from(this.ensureConfigured().enrollments.list(params));\n }\n\n getEnrollment(uniqueId: string): Observable<Enrollment> {\n return from(this.ensureConfigured().enrollments.get(uniqueId));\n }\n\n enroll(data: EnrollRequest): Observable<Enrollment> {\n return from(this.ensureConfigured().enrollments.enroll(data));\n }\n\n updateEnrollmentProgress(uniqueId: string, data: UpdateEnrollmentProgressRequest): Observable<Enrollment> {\n return from(this.ensureConfigured().enrollments.updateProgress(uniqueId, data));\n }\n\n completeEnrollment(uniqueId: string): Observable<Enrollment> {\n return from(this.ensureConfigured().enrollments.complete(uniqueId));\n }\n\n dropEnrollment(uniqueId: string): Observable<Enrollment> {\n return from(this.ensureConfigured().enrollments.drop(uniqueId));\n }\n\n listEnrollmentsByCourse(courseUniqueId: string, params?: ListEnrollmentsParams): Observable<PageResult<Enrollment>> {\n return from(this.ensureConfigured().enrollments.listByCourse(courseUniqueId, params));\n }\n\n listEnrollmentsByUser(userUniqueId: string, params?: ListEnrollmentsParams): Observable<PageResult<Enrollment>> {\n return from(this.ensureConfigured().enrollments.listByUser(userUniqueId, params));\n }\n\n getCertificate(uniqueId: string): Observable<{ certificateUrl: string }> {\n return from(this.ensureConfigured().enrollments.getCertificate(uniqueId));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Assignments Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listAssignments(params?: ListAssignmentsParams): Observable<PageResult<Assignment>> {\n return from(this.ensureConfigured().assignments.list(params));\n }\n\n getAssignment(uniqueId: string): Observable<Assignment> {\n return from(this.ensureConfigured().assignments.get(uniqueId));\n }\n\n createAssignment(data: CreateAssignmentRequest): Observable<Assignment> {\n return from(this.ensureConfigured().assignments.create(data));\n }\n\n updateAssignment(uniqueId: string, data: UpdateAssignmentRequest): Observable<Assignment> {\n return from(this.ensureConfigured().assignments.update(uniqueId, data));\n }\n\n deleteAssignment(uniqueId: string): Observable<void> {\n return from(this.ensureConfigured().assignments.delete(uniqueId));\n }\n\n listAssignmentsByLesson(lessonUniqueId: string, params?: ListAssignmentsParams): Observable<PageResult<Assignment>> {\n return from(this.ensureConfigured().assignments.listByLesson(lessonUniqueId, params));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Submissions Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listSubmissions(params?: ListSubmissionsParams): Observable<PageResult<Submission>> {\n return from(this.ensureConfigured().submissions.list(params));\n }\n\n getSubmission(uniqueId: string): Observable<Submission> {\n return from(this.ensureConfigured().submissions.get(uniqueId));\n }\n\n submitAssignment(data: SubmitAssignmentRequest): Observable<Submission> {\n return from(this.ensureConfigured().submissions.submit(data));\n }\n\n gradeSubmission(uniqueId: string, data: GradeSubmissionRequest): Observable<Submission> {\n return from(this.ensureConfigured().submissions.grade(uniqueId, data));\n }\n\n listSubmissionsByAssignment(assignmentUniqueId: string, params?: ListSubmissionsParams): Observable<PageResult<Submission>> {\n return from(this.ensureConfigured().submissions.listByAssignment(assignmentUniqueId, params));\n }\n\n listSubmissionsByUser(userUniqueId: string, params?: ListSubmissionsParams): Observable<PageResult<Submission>> {\n return from(this.ensureConfigured().submissions.listByUser(userUniqueId, params));\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(): UniversityBlock {\n return this.ensureConfigured();\n }\n}\n"],"names":["Injectable","Inject","Optional","from","createUniversityBlock","TRANSPORT","UNIVERSITY_TRANSPORT","UNIVERSITY_CONFIG","UniversityService","ensureConfigured","block","Error","listCourses","params","courses","list","getCourse","uniqueId","get","createCourse","data","create","updateCourse","update","deleteCourse","delete","publishCourse","publish","unpublishCourse","unpublish","listCoursesByInstructor","instructorUniqueId","listByInstructor","listCoursesByCategory","categoryUniqueId","listByCategory","listLessons","lessons","getLesson","createLesson","updateLesson","deleteLesson","reorderLessons","courseUniqueId","reorder","listLessonsByCourse","listByCourse","listEnrollments","enrollments","getEnrollment","enroll","updateEnrollmentProgress","updateProgress","completeEnrollment","complete","dropEnrollment","drop","listEnrollmentsByCourse","listEnrollmentsByUser","userUniqueId","listByUser","getCertificate","listAssignments","assignments","getAssignment","createAssignment","updateAssignment","deleteAssignment","listAssignmentsByLesson","lessonUniqueId","listByLesson","listSubmissions","submissions","getSubmission","submitAssignment","submit","gradeSubmission","grade","listSubmissionsByAssignment","assignmentUniqueId","listByAssignment","listSubmissionsByUser","rawBlock","constructor","serviceTransport","legacyTransport","config","transport","providedIn"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/wallet/index.ts"],"sourcesContent":["export { WalletService } from './wallet.service.js';\n"],"names":["WalletService"],"rangeMappings":"","mappings":"AAAA,SAASA,aAAa,QAAQ,sBAAsB"}
@@ -1,111 +0,0 @@
1
- import { _ as _ts_decorate } from "@swc/helpers/_/_ts_decorate";
2
- import { _ as _ts_metadata } from "@swc/helpers/_/_ts_metadata";
3
- import { _ as _ts_param } from "@swc/helpers/_/_ts_param";
4
- import { Injectable, Inject, Optional } from '@angular/core';
5
- import { from } from 'rxjs';
6
- import { createWalletBlock } from '@23blocks/block-wallet';
7
- import { TRANSPORT, WALLET_TRANSPORT, WALLET_CONFIG } from '../tokens.js';
8
- export class WalletService {
9
- /**
10
- * Ensure the service is configured, throw helpful error if not
11
- */ ensureConfigured() {
12
- if (!this.block) {
13
- throw new Error('[23blocks] WalletService is not configured. ' + "Add 'urls.wallet' to your provideBlocks23() configuration.");
14
- }
15
- return this.block;
16
- }
17
- // ─────────────────────────────────────────────────────────────────────────────
18
- // Wallets Service
19
- // ─────────────────────────────────────────────────────────────────────────────
20
- listWallets(params) {
21
- return from(this.ensureConfigured().wallets.list(params));
22
- }
23
- getWallet(uniqueId) {
24
- return from(this.ensureConfigured().wallets.get(uniqueId));
25
- }
26
- getWalletByUser(userUniqueId) {
27
- return from(this.ensureConfigured().wallets.getByUser(userUniqueId));
28
- }
29
- createWallet(data) {
30
- return from(this.ensureConfigured().wallets.create(data));
31
- }
32
- updateWallet(uniqueId, data) {
33
- return from(this.ensureConfigured().wallets.update(uniqueId, data));
34
- }
35
- creditWallet(uniqueId, data) {
36
- return from(this.ensureConfigured().wallets.credit(uniqueId, data));
37
- }
38
- debitWallet(uniqueId, data) {
39
- return from(this.ensureConfigured().wallets.debit(uniqueId, data));
40
- }
41
- getWalletBalance(uniqueId) {
42
- return from(this.ensureConfigured().wallets.getBalance(uniqueId));
43
- }
44
- // ─────────────────────────────────────────────────────────────────────────────
45
- // Transactions Service
46
- // ─────────────────────────────────────────────────────────────────────────────
47
- listTransactions(params) {
48
- return from(this.ensureConfigured().transactions.list(params));
49
- }
50
- getTransaction(uniqueId) {
51
- return from(this.ensureConfigured().transactions.get(uniqueId));
52
- }
53
- listTransactionsByWallet(walletUniqueId, params) {
54
- return from(this.ensureConfigured().transactions.listByWallet(walletUniqueId, params));
55
- }
56
- listTransactionsByReference(referenceType, referenceUniqueId, params) {
57
- return from(this.ensureConfigured().transactions.listByReference(referenceType, referenceUniqueId, params));
58
- }
59
- // ─────────────────────────────────────────────────────────────────────────────
60
- // Authorization Codes Service
61
- // ─────────────────────────────────────────────────────────────────────────────
62
- listAuthorizationCodes(params) {
63
- return from(this.ensureConfigured().authorizationCodes.list(params));
64
- }
65
- getAuthorizationCode(uniqueId) {
66
- return from(this.ensureConfigured().authorizationCodes.get(uniqueId));
67
- }
68
- createAuthorizationCode(data) {
69
- return from(this.ensureConfigured().authorizationCodes.create(data));
70
- }
71
- validateAuthorizationCode(data) {
72
- return from(this.ensureConfigured().authorizationCodes.validate(data));
73
- }
74
- useAuthorizationCode(data) {
75
- return from(this.ensureConfigured().authorizationCodes.use(data));
76
- }
77
- invalidateAuthorizationCode(uniqueId) {
78
- return from(this.ensureConfigured().authorizationCodes.invalidate(uniqueId));
79
- }
80
- // ─────────────────────────────────────────────────────────────────────────────
81
- // Direct Block Access (for advanced usage)
82
- // ─────────────────────────────────────────────────────────────────────────────
83
- /**
84
- * Access the underlying block for advanced operations
85
- * Use this when you need access to services not wrapped by this Angular service
86
- */ get rawBlock() {
87
- return this.ensureConfigured();
88
- }
89
- constructor(serviceTransport, legacyTransport, config){
90
- const transport = serviceTransport != null ? serviceTransport : legacyTransport;
91
- this.block = transport ? createWalletBlock(transport, config) : null;
92
- }
93
- }
94
- WalletService = _ts_decorate([
95
- Injectable({
96
- providedIn: 'root'
97
- }),
98
- _ts_param(0, Optional()),
99
- _ts_param(0, Inject(WALLET_TRANSPORT)),
100
- _ts_param(1, Optional()),
101
- _ts_param(1, Inject(TRANSPORT)),
102
- _ts_param(2, Inject(WALLET_CONFIG)),
103
- _ts_metadata("design:type", Function),
104
- _ts_metadata("design:paramtypes", [
105
- Object,
106
- Object,
107
- typeof WalletBlockConfig === "undefined" ? Object : WalletBlockConfig
108
- ])
109
- ], WalletService);
110
-
111
- //# sourceMappingURL=wallet.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/wallet/wallet.service.ts"],"sourcesContent":["import { Injectable, Inject, Optional } from '@angular/core';\nimport { Observable, from } from 'rxjs';\nimport type { Transport, PageResult } from '@23blocks/contracts';\nimport {\n createWalletBlock,\n type WalletBlock,\n type WalletBlockConfig,\n type Wallet,\n type CreateWalletRequest,\n type UpdateWalletRequest,\n type ListWalletsParams,\n type CreditWalletRequest,\n type DebitWalletRequest,\n type Transaction,\n type ListTransactionsParams,\n type AuthorizationCode,\n type CreateAuthorizationCodeRequest,\n type ValidateAuthorizationCodeRequest,\n type UseAuthorizationCodeRequest,\n type ListAuthorizationCodesParams,\n} from '@23blocks/block-wallet';\nimport { TRANSPORT, WALLET_TRANSPORT, WALLET_CONFIG } from '../tokens.js';\n\n/**\n * Angular service wrapping the Wallet block.\n * Converts Promise-based APIs to RxJS Observables.\n *\n * @example\n * ```typescript\n * @Component({...})\n * export class WalletComponent {\n * constructor(private wallet: WalletService) {}\n *\n * createWallet(userUniqueId: string) {\n * this.wallet.createWallet({ userUniqueId }).subscribe({\n * next: (wallet) => console.log('Created:', wallet),\n * error: (err) => console.error('Failed:', err),\n * });\n * }\n * }\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class WalletService {\n private readonly block: WalletBlock | null;\n\n constructor(\n @Optional() @Inject(WALLET_TRANSPORT) serviceTransport: Transport | null,\n @Optional() @Inject(TRANSPORT) legacyTransport: Transport | null,\n @Inject(WALLET_CONFIG) config: WalletBlockConfig\n ) {\n const transport = serviceTransport ?? legacyTransport;\n this.block = transport ? createWalletBlock(transport, config) : null;\n }\n\n /**\n * Ensure the service is configured, throw helpful error if not\n */\n private ensureConfigured(): WalletBlock {\n if (!this.block) {\n throw new Error(\n '[23blocks] WalletService is not configured. ' +\n \"Add 'urls.wallet' to your provideBlocks23() configuration.\"\n );\n }\n return this.block;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Wallets Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listWallets(params?: ListWalletsParams): Observable<PageResult<Wallet>> {\n return from(this.ensureConfigured().wallets.list(params));\n }\n\n getWallet(uniqueId: string): Observable<Wallet> {\n return from(this.ensureConfigured().wallets.get(uniqueId));\n }\n\n getWalletByUser(userUniqueId: string): Observable<Wallet> {\n return from(this.ensureConfigured().wallets.getByUser(userUniqueId));\n }\n\n createWallet(data: CreateWalletRequest): Observable<Wallet> {\n return from(this.ensureConfigured().wallets.create(data));\n }\n\n updateWallet(uniqueId: string, data: UpdateWalletRequest): Observable<Wallet> {\n return from(this.ensureConfigured().wallets.update(uniqueId, data));\n }\n\n creditWallet(uniqueId: string, data: CreditWalletRequest): Observable<Transaction> {\n return from(this.ensureConfigured().wallets.credit(uniqueId, data));\n }\n\n debitWallet(uniqueId: string, data: DebitWalletRequest): Observable<Transaction> {\n return from(this.ensureConfigured().wallets.debit(uniqueId, data));\n }\n\n getWalletBalance(uniqueId: string): Observable<{ balance: number; currency: string }> {\n return from(this.ensureConfigured().wallets.getBalance(uniqueId));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Transactions Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listTransactions(params?: ListTransactionsParams): Observable<PageResult<Transaction>> {\n return from(this.ensureConfigured().transactions.list(params));\n }\n\n getTransaction(uniqueId: string): Observable<Transaction> {\n return from(this.ensureConfigured().transactions.get(uniqueId));\n }\n\n listTransactionsByWallet(\n walletUniqueId: string,\n params?: ListTransactionsParams\n ): Observable<PageResult<Transaction>> {\n return from(this.ensureConfigured().transactions.listByWallet(walletUniqueId, params));\n }\n\n listTransactionsByReference(\n referenceType: string,\n referenceUniqueId: string,\n params?: ListTransactionsParams\n ): Observable<PageResult<Transaction>> {\n return from(this.ensureConfigured().transactions.listByReference(referenceType, referenceUniqueId, params));\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Authorization Codes Service\n // ─────────────────────────────────────────────────────────────────────────────\n\n listAuthorizationCodes(params?: ListAuthorizationCodesParams): Observable<PageResult<AuthorizationCode>> {\n return from(this.ensureConfigured().authorizationCodes.list(params));\n }\n\n getAuthorizationCode(uniqueId: string): Observable<AuthorizationCode> {\n return from(this.ensureConfigured().authorizationCodes.get(uniqueId));\n }\n\n createAuthorizationCode(data: CreateAuthorizationCodeRequest): Observable<AuthorizationCode> {\n return from(this.ensureConfigured().authorizationCodes.create(data));\n }\n\n validateAuthorizationCode(\n data: ValidateAuthorizationCodeRequest\n ): Observable<{ valid: boolean; authorizationCode?: AuthorizationCode }> {\n return from(this.ensureConfigured().authorizationCodes.validate(data));\n }\n\n useAuthorizationCode(data: UseAuthorizationCodeRequest): Observable<Transaction> {\n return from(this.ensureConfigured().authorizationCodes.use(data));\n }\n\n invalidateAuthorizationCode(uniqueId: string): Observable<AuthorizationCode> {\n return from(this.ensureConfigured().authorizationCodes.invalidate(uniqueId));\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(): WalletBlock {\n return this.ensureConfigured();\n }\n}\n"],"names":["Injectable","Inject","Optional","from","createWalletBlock","TRANSPORT","WALLET_TRANSPORT","WALLET_CONFIG","WalletService","ensureConfigured","block","Error","listWallets","params","wallets","list","getWallet","uniqueId","get","getWalletByUser","userUniqueId","getByUser","createWallet","data","create","updateWallet","update","creditWallet","credit","debitWallet","debit","getWalletBalance","getBalance","listTransactions","transactions","getTransaction","listTransactionsByWallet","walletUniqueId","listByWallet","listTransactionsByReference","referenceType","referenceUniqueId","listByReference","listAuthorizationCodes","authorizationCodes","getAuthorizationCode","createAuthorizationCode","validateAuthorizationCode","validate","useAuthorizationCode","use","invalidateAuthorizationCode","invalidate","rawBlock","constructor","serviceTransport","legacyTransport","config","transport","providedIn"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}