@techextensor/tab-sdk 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"techextensor-tab-sdk.mjs","sources":["../../../projects/tab-sdk/src/lib/data/data.service.ts","../../../projects/tab-sdk/src/lib/ui/ui.service.ts","../../../projects/tab-sdk/src/lib/ui/form.service.ts","../../../projects/tab-sdk/src/lib/core/auth.service.ts","../../../projects/tab-sdk/src/lib/common/utils.service.ts","../../../projects/tab-sdk/src/lib/tab-sdk.service.ts","../../../projects/tab-sdk/src/public-api.ts","../../../projects/tab-sdk/src/techextensor-tab-sdk.ts"],"sourcesContent":["import { inject, Injectable } from \"@angular/core\";\nimport { TabDeleteService, TabInsertService, TabUpdateService } from '@techextensor/tab-core-utility';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataService {\n private readonly _tabInsertService: TabInsertService = inject(TabInsertService);\n private readonly _tabUpdateService: TabUpdateService = inject(TabUpdateService);\n private readonly _tabDeleteService: TabDeleteService = inject(TabDeleteService);\n\n /**\n * Insert a new record\n * \n * @example\n * const newRecord = await sdk.data.insert('123456', {\n * name: 'ACME Corp',\n * email: 'contact@acme.com'\n * });\n */\n insert(objectId: string, data: any): Promise<void> {\n return new Promise((resolve, reject) => {\n this._tabInsertService.insertByObjectId(objectId, { data })\n ?.subscribe((response: any) => {\n if (response?.StatusCode == 200 && response?.Result) {\n resolve(response.Result);\n } else {\n reject(new Error('Failed to insert record'));\n }\n });\n });\n }\n\n /**\n * Update an existing record\n * \n * @example\n * await sdk.data.update('12345', {\n * Id: '12345',\n * name: 'ACME Corporation',\n * status: 'active'\n * });\n */\n update(objectId: string, data: any): Promise<void> {\n return new Promise((resolve, reject) => {\n this._tabUpdateService.updateByObjectId(objectId, { data })\n ?.subscribe((response: any) => {\n if (response?.StatusCode == 200 && response?.Result) {\n resolve(response.Result);\n } else {\n reject(new Error('Failed to update record'));\n }\n });\n });\n }\n\n /**\n * Delete a record\n * \n * @example\n * await sdk.data.delete('12345', {Id: '12345'});\n */\n delete(objectId: string, data: any): Promise<void> {\n return new Promise((resolve, reject) => {\n this._tabDeleteService.deleteRecord('', {data}, objectId)\n ?.subscribe((response: any) => {\n if (response?.StatusCode == 200) {\n resolve();\n } else {\n reject(new Error('Failed to delete record'));\n }\n });\n });\n }\n}","import { Injectable } from \"@angular/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UiService {}","import { Injectable } from \"@angular/core\";\nimport { TabSdk } from \"../tab-sdk.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormService {\n private readonly _helperFunctionService: any = TabSdk.context?.HelperFunctionService;\n\n /**\n * Processes form components with individual actions in a single pass\n * \n * @example\n * // Process multiple components with different actions in one pass\n * sdk.form.processComponents(\n * screenParameters.rendererInstance.form.components,\n * [\n * { \n * keys: 'documentDetails', // Single key\n * action: (component) => component.hidden = true,\n * type: 'columns' // Optional type filter\n * },\n * { \n * keys: 'documentPreview,documentComments', // Multiple keys as comma-separated string\n * action: (component) => component.hidden = false \n * }\n * ]\n * );\n */\n processComponents(\n components: any[],\n processors: Array<{\n keys: string, // Required: Component key(s) to match (comma-separated for multiple)\n type?: string, // Optional: Component type to match\n action: (component: any) => void // Action to perform on matched component\n }>\n ): void {\n if (!components || !Array.isArray(components) || !processors?.length) {\n return;\n }\n\n this._helperFunctionService?.eachComponent(components, (component: any) => {\n processors.forEach(processor => {\n // Split the keys string into an array\n const keyList = processor.keys.split(',').map(k => k.trim());\n\n // Check if component key is in the list of keys to process\n if (!keyList.includes(component.key)) return;\n\n // Check type match if specified\n if (processor.type && component.type !== processor.type) return;\n\n // All criteria matched, execute the action\n processor.action(component);\n });\n });\n }\n\n /**\n * Updates visibility of multiple form components at once\n * \n * @example\n * sdk.form.setComponentsVisibility(\n * screenParameters.rendererInstance.form.components, \n * {\n * 'documentDetails': false,\n * 'documentComments': true\n * }\n * );\n */\n setComponentsVisibility(\n components: any[],\n visibilityMap: Record<string, boolean>\n ): void {\n const keys = Object.keys(visibilityMap);\n\n this.processComponents(components,\n keys.map(key => ({\n keys: key,\n action: (component) => {\n component.hidden = visibilityMap[key];\n }\n }))\n );\n }\n\n /**\n * Finds components by key and returns them in a structured object\n * \n * @example\n * const components = sdk.form.findComponentsByKeys(\n * form.components,\n * ['documentDetails', 'documentPreview', 'documentComments']\n * );\n */\n findComponentsByKeys(\n components: any[],\n keys: string[],\n options?: {\n type?: string\n }\n ): Record<string, any> {\n const result: Record<string, any> = {};\n\n if (!components || !Array.isArray(components) || !keys?.length) {\n return result;\n }\n\n // Use the existing eachComponent helper \n this._helperFunctionService.eachComponent(components, (component: any) => {\n if (!options?.type || component.type === options.type) {\n result[component.key] = component;\n }\n }, keys);\n\n return result;\n }\n}","import { inject, Injectable } from \"@angular/core\";\nimport { LocalStorageService, SessionStorageService, StorageConstants } from \"@techextensor/tab-core-utility\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n private readonly _sessionStorageService: SessionStorageService = inject(SessionStorageService);\n private readonly _localStorageService: LocalStorageService = inject(LocalStorageService);\n\n /**\n * Get the current application code/identifier\n * \n * @example\n * const appCode = sdk.config.getAppCode();\n */\n getAppCode(): string {\n return this._sessionStorageService.getSessionStorage(StorageConstants.applicationCode) ?? '';\n }\n\n /**\n * Get the current user ID\n * \n * @example\n * const userId = sdk.auth.getCurrentUserId();\n */\n getCurrentUserId(): string {\n const userInfo = this.getCurrentUser();\n return userInfo?.user?.Id ?? '';\n }\n\n /**\n * Get the current user information\n * \n * @example\n * const user = sdk.auth.getCurrentUser();\n */\n getCurrentUser(): any {\n const userInfoStr = this._localStorageService.getLocalStorage(StorageConstants.userInfo);\n if (userInfoStr) {\n return JSON.parse(userInfoStr);\n }\n\n return null;\n }\n}","import { inject, Injectable } from \"@angular/core\";\nimport { AuthService } from \"../core/auth.service\";\nimport { TabSdk } from \"../tab-sdk.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n private readonly _authService: AuthService = inject(AuthService);\n private readonly _helperFunctionService: any = TabSdk.context?.HelperFunctionService;\n \n\n /**\n * Extracts the event name from various event parameter structures\n * \n * @example\n * const eventName = sdk.utils.extractEventName(screenParameters.event);\n * if (eventName === 'deleteDocument') {\n * // Handle delete document event\n * }\n */\n extractEventName(event: any): string {\n if (!event) return '';\n\n // Check common patterns for event names\n return event.event?.component?.configuration?.configScreen?.componentValue?.eventName ??\n event.detail?.type ??\n event.type ??\n event.name ??\n '';\n }\n\n\n /**\n * Builds an application URL with the specified path and parameters\n * \n * @example\n * // Get full URL with protocol\n * const fullUrl = sdk.utils.buildAppUrl('screen/12345', { id: '12345' });\n */\n buildAppUrl(\n path: string,\n parameters?: Record<string, any>,\n includeProtocol: boolean = true\n ): string {\n const appCode = this._authService.getAppCode();\n const params = new URLSearchParams();\n\n // Add parameters to the URL\n if (parameters) {\n Object.entries(parameters).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n params.append(key, String(value));\n }\n });\n }\n\n // Build query string\n const queryString = params.toString() ? `?${params.toString()}` : '';\n\n // Build URL\n if (includeProtocol) {\n const host = window.location.host;\n return `http://${host}/${appCode}/${path}${queryString}`;\n\n } else {\n return `/${appCode}/${path}${queryString}`;\n }\n }\n\n /**\n * Generates and copies a screen URL to the clipboard\n * \n * @example\n * // Copy URL to clipboard\n * sdk.utils.copyScreenLink('12345', { id: '12345' });\n */\n copyScreenLinkToClipboard(\n screenId: string,\n parameters?: Record<string, any>\n ): any {\n const url = this.buildAppUrl(`screen/${screenId}`, parameters); \n return this._helperFunctionService.copyToClipboard(url);\n }\n\n /**\n * Downloads a blob as a file\n * \n * @example\n * // Download a blob as 'report.pdf'\n * const pdfBlob = new Blob([pdfContent], { type: 'application/pdf' });\n * sdk.utils.downloadBlob(pdfBlob, 'report.pdf');\n */\n downloadBlob(blob: Blob, filename: string): void {\n // Create object URL\n const url = URL.createObjectURL(blob);\n\n // Create download link\n const downloadLink = document.createElement('a');\n downloadLink.href = url;\n downloadLink.download = filename;\n\n // Append to body, click, and remove\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n\n // Release object URL after a short delay to ensure download starts\n setTimeout(() => URL.revokeObjectURL(url), 100);\n }\n\n /**\n * Exports HTML content as a Word document (.doc)\n * \n * @example\n * // Export editor content as Word document\n * sdk.utils.exportAsWord(editorContent, 'report');\n */\n exportAsWord(content: string, filename: string = 'document'): void {\n // Format content with Word-compatible namespaces\n const docContent = `\n <html xmlns:o=\"urn:schemas-microsoft-com:office:office\" \n xmlns:w=\"urn:schemas-microsoft-com:office:word\" \n xmlns=\"http://www.w3.org/TR/REC-html40\">\n <head>\n <meta charset=\"utf-8\">\n <title>${filename}</title>\n </head>\n <body>${content}</body>\n </html>`;\n\n // Create blob with BOM for Word compatibility\n const blob = new Blob(['\\ufeff', docContent], {\n type: 'application/msword'\n });\n\n // Use the downloadBlob utility\n this.downloadBlob(blob, `${filename}.doc`);\n }\n\n\n /**\n * Exports HTML content as PDF using browser print functionality\n * \n * @example\n * // Export content as PDF\n * sdk.utils.exportAsPdf(documentContent, 'Invoice');\n */\n exportAsPdf(content: string, title: string = 'Document'): void {\n // Open new window\n const printWindow: any = window.open('', '', 'width=800,height=600');\n\n // Add content with basic styling\n printWindow.document?.write(`\n <html>\n <head>\n <title>${title}</title>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; }\n @media print {\n body { margin: 0mm; }\n }\n </style>\n </head>\n <body>\n ${content}\n </body>\n </html>\n `);\n\n // Prepare for printing\n printWindow.document.close();\n printWindow.focus();\n\n // Use timeout to ensure content is rendered before printing\n setTimeout(() => {\n printWindow.print();\n // Close window after print dialog is closed or printing is complete\n printWindow.addEventListener('afterprint', () => {\n printWindow.close();\n });\n }, 300);\n }\n}","import { Injectable, Injector } from '@angular/core';\nimport { DataService } from './data/data.service';\nimport { UiService } from './ui/ui.service';\nimport { FormService } from './ui/form.service';\nimport { AuthService } from './core/auth.service';\nimport { UtilsService } from './common/utils.service';\nimport { MetadataHelper } from '@techextensor/tab-core-utility';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TabSdk {\n public static data: DataService;\n public static ui: UiService;\n public static form: FormService;\n public static auth: AuthService;\n public static utils: UtilsService;\n public static metadataUtils: MetadataHelper;\n public static context: any;\n\n /**\n * Initialize the SDK with necessary services\n */\n public static init(injector: Injector, context: any): void {\n // Expose to window for global access if needed\n (window as any).TabSdk = TabSdk;\n\n // external services\n this.context = context;\n\n // Initialize services\n this.data = injector.get(DataService);\n this.ui = injector.get(UiService);\n this.form = injector.get(FormService);\n this.auth = injector.get(AuthService);\n this.utils = injector.get(UtilsService);\n this.metadataUtils = injector.get(MetadataHelper);\n\n // Freeze the global object to prevent modifications\n Object.freeze(this);\n Object.freeze(this.context);\n Object.freeze(this.data);\n Object.freeze(this.ui);\n Object.freeze(this.form);\n Object.freeze(this.auth);\n Object.freeze(this.utils);\n }\n}\n","/*\n * Public API Surface of tab-sdk\n */\n\nexport * from './lib/tab-sdk.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"techextensor-tab-sdk.mjs","sources":["../../../projects/tab-sdk/src/lib/enums/ui.enum.ts","../../../projects/tab-sdk/src/lib/ui/ui.service.ts","../../../projects/tab-sdk/src/lib/auth/auth.service.ts","../../../projects/tab-sdk/src/lib/tab-sdk.service.ts","../../../projects/tab-sdk/src/public-api.ts","../../../projects/tab-sdk/src/techextensor-tab-sdk.ts"],"sourcesContent":["export enum ScreenDisplayMode {\n Sidebar = 'sidebar',\n Popup = 'popup',\n SameTab = 'sameTab',\n NewTab = 'newTab',\n NavigationInSameTab = 'navigationInSameTab',\n NavigationInNewTab = 'navigationInNewTab'\n}\n\nexport enum NotificationType {\n Success = 'success',\n Warning = 'warning',\n Error = 'error'\n}\n","import { Injectable } from '@angular/core';\nimport {\n ScreenOpenOptions,\n NotificationOptions,\n ConfirmationDialogOptions,\n NavigationOptions,\n BaseNotificationOptions,\n BaseScreenOptions,\n NavigateToSubdomainOptions\n} from '../interfaces/ui.interface';\nimport { NotificationType, ScreenDisplayMode } from '../enums/ui.enum';\nimport { TabSdk } from '../tab-sdk.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UiService {\n private readonly _eventActionService: any = TabSdk.context?.EventActionService;\n private readonly _tabUtilsService: any = TabSdk.context?.TabUtilsService;\n private readonly _confirmationDialogService: any = TabSdk.context?.ConfirmationDialogService;\n\n /**\n * Open a screen with the given options. The mode determines how the screen is\n * displayed.\n *\n * @param options The options for opening the screen.\n */\n openScreen(options: ScreenOpenOptions): void {\n const { mode, screenId, reqtokens, submission, title, width, height, customClass } = options;\n\n switch (mode) {\n case ScreenDisplayMode.Sidebar:\n this.showSidebar({ screenId, reqtokens, submission, title, width, height, customClass });\n break;\n\n case ScreenDisplayMode.Popup:\n this.showDialog({ screenId, reqtokens, submission, title, width, height, customClass });\n break;\n\n case ScreenDisplayMode.SameTab:\n case ScreenDisplayMode.NavigationInSameTab:\n this.navigateTo({ screenId, reqtokens });\n break;\n\n case ScreenDisplayMode.NewTab:\n case ScreenDisplayMode.NavigationInNewTab:\n this.openInNewTab({ screenId, reqtokens });\n break;\n }\n }\n\n /**\n * Opens a screen in a sidebar.\n *\n * @param options The options for opening the sidebar.\n */\n showSidebar(options: BaseScreenOptions): void {\n const otherConfiguration = {\n ...(options.title && { title: options.title }),\n ...(options.width && { width: options.width }),\n ...(options.height && { height: options.height }),\n ...(options.customClass && { customClass: options.customClass })\n };\n\n this._eventActionService.openScreen(\n ScreenDisplayMode.Sidebar,\n options.screenId,\n options.reqtokens || undefined,\n options.submission || undefined,\n Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined\n );\n }\n\n /**\n * Opens a screen in a popup dialog.\n *\n * @param options The options for opening the dialog.\n */\n showDialog(options: BaseScreenOptions): void {\n const otherConfiguration = {\n ...(options.title && { title: options.title }),\n ...(options.width && { width: options.width }),\n ...(options.height && { height: options.height }),\n ...(options.customClass && { customClass: options.customClass })\n };\n\n this._eventActionService.openScreen(\n ScreenDisplayMode.Popup,\n options.screenId,\n options.reqtokens || undefined,\n options.submission || undefined,\n Object.keys(otherConfiguration).length > 0 ? otherConfiguration : undefined\n );\n }\n\n /**\n * Navigates to a screen within the same tab.\n *\n * @param options - The options for navigation, including screenId and optional reqtokens.\n */\n navigateTo(options: NavigationOptions): void {\n this._eventActionService.openScreen(\n ScreenDisplayMode.NavigationInSameTab,\n options.screenId,\n options.reqtokens || undefined\n );\n }\n\n /**\n * Navigates to a screen in a new tab.\n *\n * @param options The options for navigation, including screenId and optional reqtokens.\n */\n openInNewTab(options: NavigationOptions): void {\n this._eventActionService.openScreen(\n ScreenDisplayMode.NavigationInNewTab,\n options.screenId,\n options.reqtokens || undefined\n );\n }\n\n /**\n * Navigates to the specified URL.\n *\n * @param url - The URL to navigate to.\n */\n navigateToUrl(url: string): void {\n this._tabUtilsService.navigateToUrl({ Url: url });\n }\n\n /**\n * Navigates to a specified subdomain using the provided options.\n *\n * @param options - The options for navigation, including subDomain, appCode, and url.\n */\n navigateToSubdomain(options: NavigateToSubdomainOptions): void {\n this._tabUtilsService.navigateToUrlWithSubdomain(options);\n }\n\n /**\n * Show a notification to the user.\n *\n * @param options The options for the notification.\n */\n notify(options: NotificationOptions): void {\n this._tabUtilsService.notify(options);\n }\n\n /**\n * Displays a success notification to the user.\n *\n * @param options - The options for the notification, including message, title, and configuration.\n */\n showSuccess(options: BaseNotificationOptions): void {\n this.notify({ ...options, type: NotificationType.Success });\n }\n\n /**\n * Displays a warning notification to the user.\n *\n * @param options - The options for the notification, including message, title, and configuration.\n */\n showWarning(options: BaseNotificationOptions): void {\n this.notify({ ...options, type: NotificationType.Warning });\n }\n\n /**\n * Displays an error notification to the user.\n *\n * @param options - The options for the notification, including message, title, and configuration.\n */\n showError(options: BaseNotificationOptions): void {\n this.notify({ ...options, type: NotificationType.Error });\n }\n\n /**\n * Displays a confirmation dialog to the user and returns a promise that resolves\n * to a boolean indicating whether the user confirmed the action.\n *\n * @param options - The options for the confirmation dialog, including title, message,\n * confirmText, cancelText, and visibility of buttons.\n * @returns A promise that resolves to true if the user confirms, false otherwise.\n */\n confirm(options: ConfirmationDialogOptions): Promise<boolean> {\n return new Promise((resolve) => {\n this._confirmationDialogService.confirm(options)\n ?.subscribe((isConfirmed: boolean) => {\n resolve(isConfirmed);\n });\n });\n }\n}","import { inject, Injectable } from '@angular/core';\nimport {\n LoginUserRequest,\n AuthService,\n CommonApiResponse,\n RegisterTenant,\n ResetPasswordUserRequest,\n RefreshTokenRequest,\n UserDetailsRequest,\n ChangePasswordUserRequest\n} from '@techextensor/tab-core-utility';\nimport { firstValueFrom } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthUtilService {\n private readonly _authService: AuthService = inject(AuthService);\n\n /**\n * Authenticates a user based on the provided login credentials.\n * \n * @param credentials The login credentials.\n * @returns The response from the server.\n */\n async login(credentials: LoginUserRequest): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.signIn(credentials)\n );\n return response;\n }\n\n /**\n * Registers a new tenant based on the provided details.\n * \n * @param tenantDetails The tenant details.\n * @returns The response from the server.\n */\n async registerTenant(tenantDetails: RegisterTenant): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.registerTenant(tenantDetails)\n );\n return response;\n }\n\n /**\n * Registers a new user based on the provided user details.\n * \n * @param userDetails The user details.\n * @param headers Optional headers to pass to the server.\n * @returns The response from the server.\n */\n async registerUser(userDetails: any, headers?: Record<string, string>): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.register(userDetails, headers)\n );\n return response;\n }\n\n /**\n * Resets a user's password based on the provided reset password credentials.\n * \n * @param credentials The reset password credentials.\n * @returns The response from the server.\n */\n async resetPassword(credentials: ResetPasswordUserRequest): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.resetPassword(credentials)\n );\n return response;\n }\n\n /**\n * Changes a user's password based on the provided credentials.\n * \n * @param credentials The credentials containing the user's current and new password.\n * @returns The response from the server.\n */\n async changePassword(credentials: ChangePasswordUserRequest): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.changePassword(credentials)\n );\n return response;\n }\n\n /**\n * Refreshes a user's token based on the provided refresh token details.\n * \n * @param tokenDetails The refresh token details.\n * @returns The response from the server.\n */\n async refreshToken(tokenDetails: RefreshTokenRequest): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.refreshToken(tokenDetails)\n );\n return response;\n }\n\n /**\n * Gets the user details for the provided user details request.\n * \n * @param userDetailsRequest The user details request.\n * @param headers Optional headers to pass to the server.\n * @returns The response from the server.\n */\n async getUserDetails(userDetailsRequest: UserDetailsRequest, headers?: Record<string, string>): Promise<CommonApiResponse> {\n // Use the firstValueFrom RxJs operator to wait for the observable to complete\n const response = await firstValueFrom(\n this._authService.getUserDetails(userDetailsRequest, headers)\n );\n return response;\n }\n}","import { Injectable, Injector } from '@angular/core';\nimport { MetadataHelper } from '@techextensor/tab-core-utility';\nimport { UiService } from './ui/ui.service';\nimport { AuthUtilService } from './auth/auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TabSdk {\n public static auth: AuthUtilService;\n public static ui: UiService;\n public static metadataUtils: MetadataHelper;\n public static context: any;\n\n /**\n * Initialize the SDK with necessary services\n */\n public static init(injector: Injector, context: any): void {\n // Expose to window for global access if needed\n (window as any).TabSdk = TabSdk;\n\n // external services\n this.context = context;\n\n // Initialize services\n this.auth = injector.get(AuthUtilService);\n this.ui = injector.get(UiService);\n this.metadataUtils = injector.get(MetadataHelper);\n\n // Freeze the global object to prevent modifications\n Object.freeze(this);\n Object.freeze(this.context);\n }\n}","/*\n * Public API Surface of tab-sdk\n */\n\nexport * from './lib/tab-sdk.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { LoginUserRequest, CommonApiResponse, RegisterTenant, ResetPasswordUserRequest, RefreshTokenRequest, UserDetailsRequest, ChangePasswordUserRequest } from '@techextensor/tab-core-utility';
2
+ import * as i0 from "@angular/core";
3
+ export declare class AuthUtilService {
4
+ private readonly _authService;
5
+ /**
6
+ * Authenticates a user based on the provided login credentials.
7
+ *
8
+ * @param credentials The login credentials.
9
+ * @returns The response from the server.
10
+ */
11
+ login(credentials: LoginUserRequest): Promise<CommonApiResponse>;
12
+ /**
13
+ * Registers a new tenant based on the provided details.
14
+ *
15
+ * @param tenantDetails The tenant details.
16
+ * @returns The response from the server.
17
+ */
18
+ registerTenant(tenantDetails: RegisterTenant): Promise<CommonApiResponse>;
19
+ /**
20
+ * Registers a new user based on the provided user details.
21
+ *
22
+ * @param userDetails The user details.
23
+ * @param headers Optional headers to pass to the server.
24
+ * @returns The response from the server.
25
+ */
26
+ registerUser(userDetails: any, headers?: Record<string, string>): Promise<CommonApiResponse>;
27
+ /**
28
+ * Resets a user's password based on the provided reset password credentials.
29
+ *
30
+ * @param credentials The reset password credentials.
31
+ * @returns The response from the server.
32
+ */
33
+ resetPassword(credentials: ResetPasswordUserRequest): Promise<CommonApiResponse>;
34
+ /**
35
+ * Changes a user's password based on the provided credentials.
36
+ *
37
+ * @param credentials The credentials containing the user's current and new password.
38
+ * @returns The response from the server.
39
+ */
40
+ changePassword(credentials: ChangePasswordUserRequest): Promise<CommonApiResponse>;
41
+ /**
42
+ * Refreshes a user's token based on the provided refresh token details.
43
+ *
44
+ * @param tokenDetails The refresh token details.
45
+ * @returns The response from the server.
46
+ */
47
+ refreshToken(tokenDetails: RefreshTokenRequest): Promise<CommonApiResponse>;
48
+ /**
49
+ * Gets the user details for the provided user details request.
50
+ *
51
+ * @param userDetailsRequest The user details request.
52
+ * @param headers Optional headers to pass to the server.
53
+ * @returns The response from the server.
54
+ */
55
+ getUserDetails(userDetailsRequest: UserDetailsRequest, headers?: Record<string, string>): Promise<CommonApiResponse>;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<AuthUtilService, never>;
57
+ static ɵprov: i0.ɵɵInjectableDeclaration<AuthUtilService>;
58
+ }
@@ -0,0 +1,13 @@
1
+ export declare enum ScreenDisplayMode {
2
+ Sidebar = "sidebar",
3
+ Popup = "popup",
4
+ SameTab = "sameTab",
5
+ NewTab = "newTab",
6
+ NavigationInSameTab = "navigationInSameTab",
7
+ NavigationInNewTab = "navigationInNewTab"
8
+ }
9
+ export declare enum NotificationType {
10
+ Success = "success",
11
+ Warning = "warning",
12
+ Error = "error"
13
+ }
@@ -0,0 +1,56 @@
1
+ import { NotificationType, ScreenDisplayMode } from "../enums/ui.enum";
2
+ export type NotificationPosition = 'topRight' | 'topLeft' | 'bottomRight' | 'bottomLeft' | 'topCenter' | 'bottomCenter';
3
+ export interface BaseScreenOptions {
4
+ screenId: string;
5
+ reqtokens?: any;
6
+ submission?: any;
7
+ title?: string;
8
+ width?: string | number;
9
+ height?: string | number;
10
+ customClass?: string;
11
+ refresher?: () => void;
12
+ closer?: () => void;
13
+ }
14
+ export interface ScreenOpenOptions extends BaseScreenOptions {
15
+ mode: ScreenDisplayMode;
16
+ }
17
+ export interface NavigationOptions {
18
+ screenId: string;
19
+ reqtokens?: Record<string, any>;
20
+ }
21
+ export interface NavigateToSubdomainOptions {
22
+ subDomain: string;
23
+ appCode: string;
24
+ url: string;
25
+ }
26
+ export interface BaseNotificationOptions {
27
+ message: string;
28
+ title?: string;
29
+ configuration?: Partial<{
30
+ timeOut: number;
31
+ closeButton: boolean;
32
+ progressBar: boolean;
33
+ positionClass: string;
34
+ enableHtml: boolean;
35
+ tapToDismiss: boolean;
36
+ }>;
37
+ }
38
+ export interface NotificationOptions extends BaseNotificationOptions {
39
+ type: NotificationType;
40
+ }
41
+ export interface ConfirmationDialogOptions {
42
+ title: string;
43
+ message: string;
44
+ primaryOption?: string;
45
+ secondaryOption?: string;
46
+ displayHeader?: boolean;
47
+ displayFooter?: boolean;
48
+ displayBody?: boolean;
49
+ displayPrimaryButton?: boolean;
50
+ displaySecondaryButton?: boolean;
51
+ displayCloseButton?: boolean;
52
+ }
53
+ export interface ConfirmOptions {
54
+ title: string;
55
+ message?: string;
56
+ }
@@ -1,17 +1,11 @@
1
1
  import { Injector } from '@angular/core';
2
- import { DataService } from './data/data.service';
3
- import { UiService } from './ui/ui.service';
4
- import { FormService } from './ui/form.service';
5
- import { AuthService } from './core/auth.service';
6
- import { UtilsService } from './common/utils.service';
7
2
  import { MetadataHelper } from '@techextensor/tab-core-utility';
3
+ import { UiService } from './ui/ui.service';
4
+ import { AuthUtilService } from './auth/auth.service';
8
5
  import * as i0 from "@angular/core";
9
6
  export declare class TabSdk {
10
- static data: DataService;
7
+ static auth: AuthUtilService;
11
8
  static ui: UiService;
12
- static form: FormService;
13
- static auth: AuthService;
14
- static utils: UtilsService;
15
9
  static metadataUtils: MetadataHelper;
16
10
  static context: any;
17
11
  /**
@@ -1,5 +1,85 @@
1
+ import { ScreenOpenOptions, NotificationOptions, ConfirmationDialogOptions, NavigationOptions, BaseNotificationOptions, BaseScreenOptions, NavigateToSubdomainOptions } from '../interfaces/ui.interface';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class UiService {
4
+ private readonly _eventActionService;
5
+ private readonly _tabUtilsService;
6
+ private readonly _confirmationDialogService;
7
+ /**
8
+ * Open a screen with the given options. The mode determines how the screen is
9
+ * displayed.
10
+ *
11
+ * @param options The options for opening the screen.
12
+ */
13
+ openScreen(options: ScreenOpenOptions): void;
14
+ /**
15
+ * Opens a screen in a sidebar.
16
+ *
17
+ * @param options The options for opening the sidebar.
18
+ */
19
+ showSidebar(options: BaseScreenOptions): void;
20
+ /**
21
+ * Opens a screen in a popup dialog.
22
+ *
23
+ * @param options The options for opening the dialog.
24
+ */
25
+ showDialog(options: BaseScreenOptions): void;
26
+ /**
27
+ * Navigates to a screen within the same tab.
28
+ *
29
+ * @param options - The options for navigation, including screenId and optional reqtokens.
30
+ */
31
+ navigateTo(options: NavigationOptions): void;
32
+ /**
33
+ * Navigates to a screen in a new tab.
34
+ *
35
+ * @param options The options for navigation, including screenId and optional reqtokens.
36
+ */
37
+ openInNewTab(options: NavigationOptions): void;
38
+ /**
39
+ * Navigates to the specified URL.
40
+ *
41
+ * @param url - The URL to navigate to.
42
+ */
43
+ navigateToUrl(url: string): void;
44
+ /**
45
+ * Navigates to a specified subdomain using the provided options.
46
+ *
47
+ * @param options - The options for navigation, including subDomain, appCode, and url.
48
+ */
49
+ navigateToSubdomain(options: NavigateToSubdomainOptions): void;
50
+ /**
51
+ * Show a notification to the user.
52
+ *
53
+ * @param options The options for the notification.
54
+ */
55
+ notify(options: NotificationOptions): void;
56
+ /**
57
+ * Displays a success notification to the user.
58
+ *
59
+ * @param options - The options for the notification, including message, title, and configuration.
60
+ */
61
+ showSuccess(options: BaseNotificationOptions): void;
62
+ /**
63
+ * Displays a warning notification to the user.
64
+ *
65
+ * @param options - The options for the notification, including message, title, and configuration.
66
+ */
67
+ showWarning(options: BaseNotificationOptions): void;
68
+ /**
69
+ * Displays an error notification to the user.
70
+ *
71
+ * @param options - The options for the notification, including message, title, and configuration.
72
+ */
73
+ showError(options: BaseNotificationOptions): void;
74
+ /**
75
+ * Displays a confirmation dialog to the user and returns a promise that resolves
76
+ * to a boolean indicating whether the user confirmed the action.
77
+ *
78
+ * @param options - The options for the confirmation dialog, including title, message,
79
+ * confirmText, cancelText, and visibility of buttons.
80
+ * @returns A promise that resolves to true if the user confirms, false otherwise.
81
+ */
82
+ confirm(options: ConfirmationDialogOptions): Promise<boolean>;
3
83
  static ɵfac: i0.ɵɵFactoryDeclaration<UiService, never>;
4
84
  static ɵprov: i0.ɵɵInjectableDeclaration<UiService>;
5
85
  }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@techextensor/tab-sdk",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",
7
- "@techextensor/tab-core-utility": "^2.2.135"
7
+ "@techextensor/tab-core-utility": "^2.2.139"
8
8
  },
9
9
  "dependencies": {
10
10
  "tslib": "^2.3.0"
@@ -1,163 +0,0 @@
1
- import { inject, Injectable } from "@angular/core";
2
- import { AuthService } from "../core/auth.service";
3
- import { TabSdk } from "../tab-sdk.service";
4
- import * as i0 from "@angular/core";
5
- export class UtilsService {
6
- _authService = inject(AuthService);
7
- _helperFunctionService = TabSdk.context?.HelperFunctionService;
8
- /**
9
- * Extracts the event name from various event parameter structures
10
- *
11
- * @example
12
- * const eventName = sdk.utils.extractEventName(screenParameters.event);
13
- * if (eventName === 'deleteDocument') {
14
- * // Handle delete document event
15
- * }
16
- */
17
- extractEventName(event) {
18
- if (!event)
19
- return '';
20
- // Check common patterns for event names
21
- return event.event?.component?.configuration?.configScreen?.componentValue?.eventName ??
22
- event.detail?.type ??
23
- event.type ??
24
- event.name ??
25
- '';
26
- }
27
- /**
28
- * Builds an application URL with the specified path and parameters
29
- *
30
- * @example
31
- * // Get full URL with protocol
32
- * const fullUrl = sdk.utils.buildAppUrl('screen/12345', { id: '12345' });
33
- */
34
- buildAppUrl(path, parameters, includeProtocol = true) {
35
- const appCode = this._authService.getAppCode();
36
- const params = new URLSearchParams();
37
- // Add parameters to the URL
38
- if (parameters) {
39
- Object.entries(parameters).forEach(([key, value]) => {
40
- if (value !== undefined && value !== null) {
41
- params.append(key, String(value));
42
- }
43
- });
44
- }
45
- // Build query string
46
- const queryString = params.toString() ? `?${params.toString()}` : '';
47
- // Build URL
48
- if (includeProtocol) {
49
- const host = window.location.host;
50
- return `http://${host}/${appCode}/${path}${queryString}`;
51
- }
52
- else {
53
- return `/${appCode}/${path}${queryString}`;
54
- }
55
- }
56
- /**
57
- * Generates and copies a screen URL to the clipboard
58
- *
59
- * @example
60
- * // Copy URL to clipboard
61
- * sdk.utils.copyScreenLink('12345', { id: '12345' });
62
- */
63
- copyScreenLinkToClipboard(screenId, parameters) {
64
- const url = this.buildAppUrl(`screen/${screenId}`, parameters);
65
- return this._helperFunctionService.copyToClipboard(url);
66
- }
67
- /**
68
- * Downloads a blob as a file
69
- *
70
- * @example
71
- * // Download a blob as 'report.pdf'
72
- * const pdfBlob = new Blob([pdfContent], { type: 'application/pdf' });
73
- * sdk.utils.downloadBlob(pdfBlob, 'report.pdf');
74
- */
75
- downloadBlob(blob, filename) {
76
- // Create object URL
77
- const url = URL.createObjectURL(blob);
78
- // Create download link
79
- const downloadLink = document.createElement('a');
80
- downloadLink.href = url;
81
- downloadLink.download = filename;
82
- // Append to body, click, and remove
83
- document.body.appendChild(downloadLink);
84
- downloadLink.click();
85
- document.body.removeChild(downloadLink);
86
- // Release object URL after a short delay to ensure download starts
87
- setTimeout(() => URL.revokeObjectURL(url), 100);
88
- }
89
- /**
90
- * Exports HTML content as a Word document (.doc)
91
- *
92
- * @example
93
- * // Export editor content as Word document
94
- * sdk.utils.exportAsWord(editorContent, 'report');
95
- */
96
- exportAsWord(content, filename = 'document') {
97
- // Format content with Word-compatible namespaces
98
- const docContent = `
99
- <html xmlns:o="urn:schemas-microsoft-com:office:office"
100
- xmlns:w="urn:schemas-microsoft-com:office:word"
101
- xmlns="http://www.w3.org/TR/REC-html40">
102
- <head>
103
- <meta charset="utf-8">
104
- <title>${filename}</title>
105
- </head>
106
- <body>${content}</body>
107
- </html>`;
108
- // Create blob with BOM for Word compatibility
109
- const blob = new Blob(['\ufeff', docContent], {
110
- type: 'application/msword'
111
- });
112
- // Use the downloadBlob utility
113
- this.downloadBlob(blob, `${filename}.doc`);
114
- }
115
- /**
116
- * Exports HTML content as PDF using browser print functionality
117
- *
118
- * @example
119
- * // Export content as PDF
120
- * sdk.utils.exportAsPdf(documentContent, 'Invoice');
121
- */
122
- exportAsPdf(content, title = 'Document') {
123
- // Open new window
124
- const printWindow = window.open('', '', 'width=800,height=600');
125
- // Add content with basic styling
126
- printWindow.document?.write(`
127
- <html>
128
- <head>
129
- <title>${title}</title>
130
- <style>
131
- body { font-family: Arial, sans-serif; margin: 20px; }
132
- @media print {
133
- body { margin: 0mm; }
134
- }
135
- </style>
136
- </head>
137
- <body>
138
- ${content}
139
- </body>
140
- </html>
141
- `);
142
- // Prepare for printing
143
- printWindow.document.close();
144
- printWindow.focus();
145
- // Use timeout to ensure content is rendered before printing
146
- setTimeout(() => {
147
- printWindow.print();
148
- // Close window after print dialog is closed or printing is complete
149
- printWindow.addEventListener('afterprint', () => {
150
- printWindow.close();
151
- });
152
- }, 300);
153
- }
154
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
155
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, providedIn: 'root' });
156
- }
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilsService, decorators: [{
158
- type: Injectable,
159
- args: [{
160
- providedIn: 'root'
161
- }]
162
- }] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhYi1zZGsvc3JjL2xpYi9jb21tb24vdXRpbHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUs1QyxNQUFNLE9BQU8sWUFBWTtJQUNKLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELHNCQUFzQixHQUFRLE1BQU0sQ0FBQyxPQUFPLEVBQUUscUJBQXFCLENBQUM7SUFHckY7Ozs7Ozs7O09BUUc7SUFDSCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEIsd0NBQXdDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsU0FBUztZQUNqRixLQUFLLENBQUMsTUFBTSxFQUFFLElBQUk7WUFDbEIsS0FBSyxDQUFDLElBQUk7WUFDVixLQUFLLENBQUMsSUFBSTtZQUNWLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFHRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQ1AsSUFBWSxFQUNaLFVBQWdDLEVBQ2hDLGtCQUEyQixJQUFJO1FBRS9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUVyQyw0QkFBNEI7UUFDNUIsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNiLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFB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LEtBQUssQ0FBQzs7O3lCQUdYLEtBQUs7Ozs7Ozs7OztrQkFTWixPQUFPOzs7U0FHaEIsQ0FBQyxDQUFDO1FBRUgsdUJBQXVCO1FBQ3ZCLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRXBCLDREQUE0RDtRQUM1RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLG9FQUFvRTtZQUNwRSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTtnQkFDNUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQzt3R0EvS1EsWUFBWTs0R0FBWixZQUFZLGNBRlQsTUFBTTs7NEZBRVQsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tIFwiLi4vY29yZS9hdXRoLnNlcnZpY2VcIjtcbmltcG9ydCB7IFRhYlNkayB9IGZyb20gXCIuLi90YWItc2RrLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVdGlsc1NlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfaGVscGVyRnVuY3Rpb25TZXJ2aWNlOiBhbnkgPSBUYWJTZGsuY29udGV4dD8uSGVscGVyRnVuY3Rpb25TZXJ2aWNlO1xuICAgIFxuXG4gICAgLyoqXG4gICAgICogRXh0cmFjdHMgdGhlIGV2ZW50IG5hbWUgZnJvbSB2YXJpb3VzIGV2ZW50IHBhcmFtZXRlciBzdHJ1Y3R1cmVzXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBldmVudE5hbWUgPSBzZGsudXRpbHMuZXh0cmFjdEV2ZW50TmFtZShzY3JlZW5QYXJhbWV0ZXJzLmV2ZW50KTtcbiAgICAgKiBpZiAoZXZlbnROYW1lID09PSAnZGVsZXRlRG9jdW1lbnQnKSB7XG4gICAgICogICAvLyBIYW5kbGUgZGVsZXRlIGRvY3VtZW50IGV2ZW50XG4gICAgICogfVxuICAgICAqL1xuICAgIGV4dHJhY3RFdmVudE5hbWUoZXZlbnQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZXZlbnQpIHJldHVybiAnJztcblxuICAgICAgICAvLyBDaGVjayBjb21tb24gcGF0dGVybnMgZm9yIGV2ZW50IG5hbWVzXG4gICAgICAgIHJldHVybiBldmVudC5ldmVudD8uY29tcG9uZW50Py5jb25maWd1cmF0aW9uPy5jb25maWdTY3JlZW4/LmNvbXBvbmVudFZhbHVlPy5ldmVudE5hbWUgPz9cbiAgICAgICAgICAgIGV2ZW50LmRldGFpbD8udHlwZSA/P1xuICAgICAgICAgICAgZXZlbnQudHlwZSA/P1xuICAgICAgICAgICAgZXZlbnQubmFtZSA/P1xuICAgICAgICAgICAgJyc7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgYW4gYXBwbGljYXRpb24gVVJMIHdpdGggdGhlIHNwZWNpZmllZCBwYXRoIGFuZCBwYXJhbWV0ZXJzXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiAvLyBHZXQgZnVsbCBVUkwgd2l0aCBwcm90b2NvbFxuICAgICAqIGNvbnN0IGZ1bGxVcmwgPSBzZGsudXRpbHMuYnVpbGRBcHBVcmwoJ3NjcmVlbi8xMjM0NScsIHsgaWQ6ICcxMjM0NScgfSk7XG4gICAgICovXG4gICAgYnVpbGRBcHBVcmwoXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgcGFyYW1ldGVycz86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICAgIGluY2x1ZGVQcm90b2NvbDogYm9vbGVhbiA9IHRydWVcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBhcHBDb2RlID0gdGhpcy5fYXV0aFNlcnZpY2UuZ2V0QXBwQ29kZSgpO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG5cbiAgICAgICAgLy8gQWRkIHBhcmFtZXRlcnMgdG8gdGhlIFVSTFxuICAgICAgICBpZiAocGFyYW1ldGVycykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFyYW1ldGVycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZChrZXksIFN0cmluZyh2YWx1ZSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQnVpbGQgcXVlcnkgc3RyaW5nXG4gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcGFyYW1zLnRvU3RyaW5nKCkgPyBgPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCA6ICcnO1xuXG4gICAgICAgIC8vIEJ1aWxkIFVSTFxuICAgICAgICBpZiAoaW5jbHVkZVByb3RvY29sKSB7XG4gICAgICAgICAgICBjb25zdCBob3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgICAgICAgICByZXR1cm4gYGh0dHA6Ly8ke2hvc3R9LyR7YXBwQ29kZX0vJHtwYXRofSR7cXVlcnlTdHJpbmd9YDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGAvJHthcHBDb2RlfS8ke3BhdGh9JHtxdWVyeVN0cmluZ31gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2VuZXJhdGVzIGFuZCBjb3BpZXMgYSBzY3JlZW4gVVJMIHRvIHRoZSBjbGlwYm9hcmRcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIENvcHkgVVJMIHRvIGNsaXBib2FyZFxuICAgICAqIHNkay51dGlscy5jb3B5U2NyZWVuTGluaygnMTIzNDUnLCB7IGlkOiAnMTIzNDUnIH0pO1xuICAgICAqL1xuICAgIGNvcHlTY3JlZW5MaW5rVG9DbGlwYm9hcmQoXG4gICAgICAgIHNjcmVlbklkOiBzdHJpbmcsXG4gICAgICAgIHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgKTogYW55IHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5idWlsZEFwcFVybChgc2NyZWVuLyR7c2NyZWVuSWR9YCwgcGFyYW1ldGVycyk7ICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlbHBlckZ1bmN0aW9uU2VydmljZS5jb3B5VG9DbGlwYm9hcmQodXJsKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3dubG9hZHMgYSBibG9iIGFzIGEgZmlsZVxuICAgICAqIFxuICAgICAqIEBleGFtcGxlXG4gICAgICogLy8gRG93bmxvYWQgYSBibG9iIGFzICdyZXBvcnQucGRmJ1xuICAgICAqIGNvbnN0IHBkZkJsb2IgPSBuZXcgQmxvYihbcGRmQ29udGVudF0sIHsgdHlwZTogJ2FwcGxpY2F0aW9uL3BkZicgfSk7XG4gICAgICogc2RrLnV0aWxzLmRvd25sb2FkQmxvYihwZGZCbG9iLCAncmVwb3J0LnBkZicpO1xuICAgICAqL1xuICAgIGRvd25sb2FkQmxvYihibG9iOiBCbG9iLCBmaWxlbmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIENyZWF0ZSBvYmplY3QgVVJMXG4gICAgICAgIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgICAgICAgLy8gQ3JlYXRlIGRvd25sb2FkIGxpbmtcbiAgICAgICAgY29uc3QgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBkb3dubG9hZExpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgZG93bmxvYWRMaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG5cbiAgICAgICAgLy8gQXBwZW5kIHRvIGJvZHksIGNsaWNrLCBhbmQgcmVtb3ZlXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRMaW5rKTtcbiAgICAgICAgZG93bmxvYWRMaW5rLmNsaWNrKCk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG93bmxvYWRMaW5rKTtcblxuICAgICAgICAvLyBSZWxlYXNlIG9iamVjdCBVUkwgYWZ0ZXIgYSBzaG9ydCBkZWxheSB0byBlbnN1cmUgZG93bmxvYWQgc3RhcnRzXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpLCAxMDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgSFRNTCBjb250ZW50IGFzIGEgV29yZCBkb2N1bWVudCAoLmRvYylcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIEV4cG9ydCBlZGl0b3IgY29udGVudCBhcyBXb3JkIGRvY3VtZW50XG4gICAgICogc2RrLnV0aWxzLmV4cG9ydEFzV29yZChlZGl0b3JDb250ZW50LCAncmVwb3J0Jyk7XG4gICAgICovXG4gICAgZXhwb3J0QXNXb3JkKGNvbnRlbnQ6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyA9ICdkb2N1bWVudCcpOiB2b2lkIHtcbiAgICAgICAgLy8gRm9ybWF0IGNvbnRlbnQgd2l0aCBXb3JkLWNvbXBhdGlibGUgbmFtZXNwYWNlc1xuICAgICAgICBjb25zdCBkb2NDb250ZW50ID0gYFxuICAgICAgICA8aHRtbCB4bWxuczpvPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlXCIgXG4gICAgICAgICAgICB4bWxuczp3PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZFwiIFxuICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwXCI+XG4gICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG4gICAgICAgICAgICA8dGl0bGU+JHtmaWxlbmFtZX08L3RpdGxlPlxuICAgICAgICA8L2hlYWQ+XG4gICAgICAgIDxib2R5PiR7Y29udGVudH08L2JvZHk+XG4gICAgICAgIDwvaHRtbD5gO1xuXG4gICAgICAgIC8vIENyZWF0ZSBibG9iIHdpdGggQk9NIGZvciBXb3JkIGNvbXBhdGliaWxpdHlcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFsnXFx1ZmVmZicsIGRvY0NvbnRlbnRdLCB7XG4gICAgICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vbXN3b3JkJ1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBVc2UgdGhlIGRvd25sb2FkQmxvYiB1dGlsaXR5XG4gICAgICAgIHRoaXMuZG93bmxvYWRCbG9iKGJsb2IsIGAke2ZpbGVuYW1lfS5kb2NgKTtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEV4cG9ydHMgSFRNTCBjb250ZW50IGFzIFBERiB1c2luZyBicm93c2VyIHByaW50IGZ1bmN0aW9uYWxpdHlcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIC8vIEV4cG9ydCBjb250ZW50IGFzIFBERlxuICAgICAqIHNkay51dGlscy5leHBvcnRBc1BkZihkb2N1bWVudENvbnRlbnQsICdJbnZvaWNlJyk7XG4gICAgICovXG4gICAgZXhwb3J0QXNQZGYoY29udGVudDogc3RyaW5nLCB0aXRsZTogc3RyaW5nID0gJ0RvY3VtZW50Jyk6IHZvaWQge1xuICAgICAgICAvLyBPcGVuIG5ldyB3aW5kb3dcbiAgICAgICAgY29uc3QgcHJpbnRXaW5kb3c6IGFueSA9IHdpbmRvdy5vcGVuKCcnLCAnJywgJ3dpZHRoPTgwMCxoZWlnaHQ9NjAwJyk7XG5cbiAgICAgICAgLy8gQWRkIGNvbnRlbnQgd2l0aCBiYXNpYyBzdHlsaW5nXG4gICAgICAgIHByaW50V2luZG93LmRvY3VtZW50Py53cml0ZShgXG4gICAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPlxuICAgICAgICAgICAgICAgIDx0aXRsZT4ke3RpdGxlfTwvdGl0bGU+XG4gICAgICAgICAgICAgICAgPHN0eWxlPlxuICAgICAgICAgICAgICAgIGJvZHkgeyBmb250LWZhbWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IG1hcmdpbjogMjBweDsgfVxuICAgICAgICAgICAgICAgIEBtZWRpYSBwcmludCB7XG4gICAgICAgICAgICAgICAgICAgIGJvZHkgeyBtYXJnaW46IDBtbTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgICAgPGJvZHk+XG4gICAgICAgICAgICAgICAgJHtjb250ZW50fVxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICAgICAgPC9odG1sPlxuICAgICAgICBgKTtcblxuICAgICAgICAvLyBQcmVwYXJlIGZvciBwcmludGluZ1xuICAgICAgICBwcmludFdpbmRvdy5kb2N1bWVudC5jbG9zZSgpO1xuICAgICAgICBwcmludFdpbmRvdy5mb2N1cygpO1xuXG4gICAgICAgIC8vIFVzZSB0aW1lb3V0IHRvIGVuc3VyZSBjb250ZW50IGlzIHJlbmRlcmVkIGJlZm9yZSBwcmludGluZ1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHByaW50V2luZG93LnByaW50KCk7XG4gICAgICAgICAgICAvLyBDbG9zZSB3aW5kb3cgYWZ0ZXIgcHJpbnQgZGlhbG9nIGlzIGNsb3NlZCBvciBwcmludGluZyBpcyBjb21wbGV0ZVxuICAgICAgICAgICAgcHJpbnRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYWZ0ZXJwcmludCcsICgpID0+IHtcbiAgICAgICAgICAgICAgICBwcmludFdpbmRvdy5jbG9zZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgfVxufSJdfQ==
@@ -1,48 +0,0 @@
1
- import { inject, Injectable } from "@angular/core";
2
- import { LocalStorageService, SessionStorageService, StorageConstants } from "@techextensor/tab-core-utility";
3
- import * as i0 from "@angular/core";
4
- export class AuthService {
5
- _sessionStorageService = inject(SessionStorageService);
6
- _localStorageService = inject(LocalStorageService);
7
- /**
8
- * Get the current application code/identifier
9
- *
10
- * @example
11
- * const appCode = sdk.config.getAppCode();
12
- */
13
- getAppCode() {
14
- return this._sessionStorageService.getSessionStorage(StorageConstants.applicationCode) ?? '';
15
- }
16
- /**
17
- * Get the current user ID
18
- *
19
- * @example
20
- * const userId = sdk.auth.getCurrentUserId();
21
- */
22
- getCurrentUserId() {
23
- const userInfo = this.getCurrentUser();
24
- return userInfo?.user?.Id ?? '';
25
- }
26
- /**
27
- * Get the current user information
28
- *
29
- * @example
30
- * const user = sdk.auth.getCurrentUser();
31
- */
32
- getCurrentUser() {
33
- const userInfoStr = this._localStorageService.getLocalStorage(StorageConstants.userInfo);
34
- if (userInfoStr) {
35
- return JSON.parse(userInfoStr);
36
- }
37
- return null;
38
- }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, providedIn: 'root' });
41
- }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuthService, decorators: [{
43
- type: Injectable,
44
- args: [{
45
- providedIn: 'root'
46
- }]
47
- }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGFiLXNkay9zcmMvbGliL2NvcmUvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUs5RyxNQUFNLE9BQU8sV0FBVztJQUNILHNCQUFzQixHQUEwQixNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM5RSxvQkFBb0IsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFekY7Ozs7O09BS0c7SUFDSCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQjtRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QyxPQUFPLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxjQUFjO1FBQ1YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO3dHQXRDUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBTZXNzaW9uU3RvcmFnZVNlcnZpY2UsIFN0b3JhZ2VDb25zdGFudHMgfSBmcm9tIFwiQHRlY2hleHRlbnNvci90YWItY29yZS11dGlsaXR5XCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25TdG9yYWdlU2VydmljZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KFNlc3Npb25TdG9yYWdlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxTdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCBhcHBsaWNhdGlvbiBjb2RlL2lkZW50aWZpZXJcbiAgICAgKiBcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGFwcENvZGUgPSBzZGsuY29uZmlnLmdldEFwcENvZGUoKTtcbiAgICAgKi9cbiAgICBnZXRBcHBDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0U2Vzc2lvblN0b3JhZ2UoU3RvcmFnZUNvbnN0YW50cy5hcHBsaWNhdGlvbkNvZGUpID8/ICcnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY3VycmVudCB1c2VyIElEXG4gICAgICogXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCB1c2VySWQgPSBzZGsuYXV0aC5nZXRDdXJyZW50VXNlcklkKCk7XG4gICAgICovXG4gICAgZ2V0Q3VycmVudFVzZXJJZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1c2VySW5mbyA9IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgICAgcmV0dXJuIHVzZXJJbmZvPy51c2VyPy5JZCA/PyAnJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGN1cnJlbnQgdXNlciBpbmZvcm1hdGlvblxuICAgICAqIFxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgdXNlciA9IHNkay5hdXRoLmdldEN1cnJlbnRVc2VyKCk7XG4gICAgICovXG4gICAgZ2V0Q3VycmVudFVzZXIoKTogYW55IHtcbiAgICAgICAgY29uc3QgdXNlckluZm9TdHIgPSB0aGlzLl9sb2NhbFN0b3JhZ2VTZXJ2aWNlLmdldExvY2FsU3RvcmFnZShTdG9yYWdlQ29uc3RhbnRzLnVzZXJJbmZvKTtcbiAgICAgICAgaWYgKHVzZXJJbmZvU3RyKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZSh1c2VySW5mb1N0cik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG59Il19