@en-solutions/tgm-client-sdk 1.6.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +788 -0
- package/esm2022/en-solutions-tgm-client-sdk.mjs +5 -0
- package/esm2022/lib/components/database-manager/database-manager/database-manager.component.mjs +308 -0
- package/esm2022/lib/components/database-manager/database-manager.module.mjs +66 -0
- package/esm2022/lib/components/database-manager/object-browser/object-browser.component.mjs +98 -0
- package/esm2022/lib/components/database-manager/query-editor/query-editor.component.mjs +196 -0
- package/esm2022/lib/components/database-manager/query-toolbar/query-toolbar.component.mjs +70 -0
- package/esm2022/lib/components/database-manager/record-detail/record-detail.component.mjs +112 -0
- package/esm2022/lib/components/database-manager/registry/entity-registry.mjs +512 -0
- package/esm2022/lib/components/database-manager/results-grid/results-grid.component.mjs +165 -0
- package/esm2022/lib/components/database-manager/services/entity-schema.service.mjs +91 -0
- package/esm2022/lib/components/database-manager/services/query-executor.service.mjs +204 -0
- package/esm2022/lib/components/database-manager/table-data-viewer/table-data-viewer.component.mjs +166 -0
- package/esm2022/lib/components/database-manager/table-structure/table-structure.component.mjs +42 -0
- package/esm2022/lib/components/database-manager/types/database-manager.types.mjs +6 -0
- package/esm2022/lib/components/reporting/export-button/export-button.component.mjs +203 -0
- package/esm2022/lib/components/reporting/generated-report-list/generated-report-list.component.mjs +285 -0
- package/esm2022/lib/components/reporting/report-definition-form/report-definition-form.component.mjs +206 -0
- package/esm2022/lib/components/reporting/report-definition-list/report-definition-list.component.mjs +252 -0
- package/esm2022/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.mjs +122 -0
- package/esm2022/lib/components/reporting/report-stats/report-stats.component.mjs +164 -0
- package/esm2022/lib/components/reporting/report-template-list/report-template-list.component.mjs +114 -0
- package/esm2022/lib/components/reporting/reporting.module.mjs +60 -0
- package/esm2022/lib/components/video-call/incoming-call/incoming-call.component.mjs +80 -0
- package/esm2022/lib/components/video-call/services/livekit-room.service.mjs +142 -0
- package/esm2022/lib/components/video-call/services/video-call-signaling.service.mjs +42 -0
- package/esm2022/lib/components/video-call/services/video-call-state.service.mjs +52 -0
- package/esm2022/lib/components/video-call/types/video-call.types.mjs +2 -0
- package/esm2022/lib/components/video-call/video-call.module.mjs +42 -0
- package/esm2022/lib/components/video-call/video-controls/video-controls.component.mjs +33 -0
- package/esm2022/lib/components/video-call/video-participant/video-participant.component.mjs +68 -0
- package/esm2022/lib/components/video-call/video-room/video-room.component.mjs +89 -0
- package/esm2022/lib/core/auth-interceptor.mjs +33 -0
- package/esm2022/lib/core/client-interceptor.mjs +34 -0
- package/esm2022/lib/core/error-handler.mjs +32 -0
- package/esm2022/lib/core/http-client.service.mjs +254 -0
- package/esm2022/lib/core/websocket.service.mjs +185 -0
- package/esm2022/lib/models/admin/audit.models.mjs +2 -0
- package/esm2022/lib/models/admin/backup.models.mjs +2 -0
- package/esm2022/lib/models/admin/client.models.mjs +2 -0
- package/esm2022/lib/models/admin/email-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/erp.models.mjs +2 -0
- package/esm2022/lib/models/admin/identity-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/index.mjs +14 -0
- package/esm2022/lib/models/admin/messaging-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/platform-admin.models.mjs +2 -0
- package/esm2022/lib/models/admin/queue.models.mjs +2 -0
- package/esm2022/lib/models/admin/role.models.mjs +2 -0
- package/esm2022/lib/models/admin/sandbox.models.mjs +2 -0
- package/esm2022/lib/models/admin/ticket.models.mjs +2 -0
- package/esm2022/lib/models/admin/webhook.models.mjs +2 -0
- package/esm2022/lib/models/api/ai.models.mjs +2 -0
- package/esm2022/lib/models/api/aip.models.mjs +2 -0
- package/esm2022/lib/models/api/cat.models.mjs +2 -0
- package/esm2022/lib/models/api/company.models.mjs +2 -0
- package/esm2022/lib/models/api/compliance.models.mjs +2 -0
- package/esm2022/lib/models/api/component.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-edge.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-event.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-insight.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-node.models.mjs +2 -0
- package/esm2022/lib/models/api/custom-field.models.mjs +2 -0
- package/esm2022/lib/models/api/deferral.models.mjs +2 -0
- package/esm2022/lib/models/api/diagnostic-report.models.mjs +2 -0
- package/esm2022/lib/models/api/document.models.mjs +2 -0
- package/esm2022/lib/models/api/energy.models.mjs +2 -0
- package/esm2022/lib/models/api/failure.models.mjs +2 -0
- package/esm2022/lib/models/api/fleet.models.mjs +2 -0
- package/esm2022/lib/models/api/inspection.models.mjs +2 -0
- package/esm2022/lib/models/api/intervention.models.mjs +2 -0
- package/esm2022/lib/models/api/iot.models.mjs +2 -0
- package/esm2022/lib/models/api/knowledge.models.mjs +2 -0
- package/esm2022/lib/models/api/loto.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance-record.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance.models.mjs +2 -0
- package/esm2022/lib/models/api/material.models.mjs +2 -0
- package/esm2022/lib/models/api/media.models.mjs +2 -0
- package/esm2022/lib/models/api/misc.models.mjs +2 -0
- package/esm2022/lib/models/api/project.models.mjs +2 -0
- package/esm2022/lib/models/api/quality.models.mjs +2 -0
- package/esm2022/lib/models/api/reporting.models.mjs +3 -0
- package/esm2022/lib/models/api/reservoir-websocket.models.mjs +17 -0
- package/esm2022/lib/models/api/reservoir.models.mjs +2 -0
- package/esm2022/lib/models/api/search.models.mjs +2 -0
- package/esm2022/lib/models/api/sensor.models.mjs +2 -0
- package/esm2022/lib/models/api/unit.models.mjs +2 -0
- package/esm2022/lib/models/api/user.models.mjs +2 -0
- package/esm2022/lib/models/api/warranty.models.mjs +2 -0
- package/esm2022/lib/models/api/work-permit.models.mjs +2 -0
- package/esm2022/lib/models/api/workflow.models.mjs +2 -0
- package/esm2022/lib/models/auth/index.mjs +4 -0
- package/esm2022/lib/models/auth/login.models.mjs +2 -0
- package/esm2022/lib/models/auth/sso.models.mjs +2 -0
- package/esm2022/lib/models/auth/totp.models.mjs +2 -0
- package/esm2022/lib/models/base.models.mjs +99 -0
- package/esm2022/lib/models/chat/chat.models.mjs +2 -0
- package/esm2022/lib/models/enums/cat.enums.mjs +17 -0
- package/esm2022/lib/models/enums/energy.enums.mjs +8 -0
- package/esm2022/lib/models/enums/erp.enums.mjs +5 -0
- package/esm2022/lib/models/enums/index.mjs +15 -0
- package/esm2022/lib/models/enums/inspection.enums.mjs +7 -0
- package/esm2022/lib/models/enums/loto.enums.mjs +25 -0
- package/esm2022/lib/models/enums/misc.enums.mjs +19 -0
- package/esm2022/lib/models/enums/quality.enums.mjs +22 -0
- package/esm2022/lib/models/enums/reservoir.enums.mjs +13 -0
- package/esm2022/lib/models/enums/sso.enums.mjs +3 -0
- package/esm2022/lib/models/enums/status.enums.mjs +41 -0
- package/esm2022/lib/models/enums/time.enums.mjs +5 -0
- package/esm2022/lib/models/enums/type.enums.mjs +45 -0
- package/esm2022/lib/models/enums/user.enums.mjs +6 -0
- package/esm2022/lib/models/enums/work-permit.enums.mjs +33 -0
- package/esm2022/lib/models/index.mjs +42 -0
- package/esm2022/lib/models/realtime/realtime-event.models.mjs +9 -0
- package/esm2022/lib/models/video/video-call.models.mjs +2 -0
- package/esm2022/lib/services/admin/activity-log.service.mjs +28 -0
- package/esm2022/lib/services/admin/announcement.service.mjs +37 -0
- package/esm2022/lib/services/admin/article-admin.service.mjs +37 -0
- package/esm2022/lib/services/admin/audit-log.service.mjs +53 -0
- package/esm2022/lib/services/admin/backup.service.mjs +28 -0
- package/esm2022/lib/services/admin/cache-admin.service.mjs +64 -0
- package/esm2022/lib/services/admin/client-admin.service.mjs +101 -0
- package/esm2022/lib/services/admin/client-api-key.service.mjs +31 -0
- package/esm2022/lib/services/admin/client-ocr.service.mjs +28 -0
- package/esm2022/lib/services/admin/client-usage.service.mjs +31 -0
- package/esm2022/lib/services/admin/data-export.service.mjs +19 -0
- package/esm2022/lib/services/admin/document-admin.service.mjs +40 -0
- package/esm2022/lib/services/admin/email-admin.service.mjs +28 -0
- package/esm2022/lib/services/admin/email-provider.service.mjs +58 -0
- package/esm2022/lib/services/admin/erp-admin.service.mjs +111 -0
- package/esm2022/lib/services/admin/identity-provider.service.mjs +46 -0
- package/esm2022/lib/services/admin/impersonation.service.mjs +19 -0
- package/esm2022/lib/services/admin/index.mjs +31 -0
- package/esm2022/lib/services/admin/messaging-provider.service.mjs +55 -0
- package/esm2022/lib/services/admin/notification.service.mjs +31 -0
- package/esm2022/lib/services/admin/platform-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/platform-webhook.service.mjs +34 -0
- package/esm2022/lib/services/admin/queue-admin.service.mjs +55 -0
- package/esm2022/lib/services/admin/role-admin.service.mjs +81 -0
- package/esm2022/lib/services/admin/sandbox-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/scheduler-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/subscription.service.mjs +28 -0
- package/esm2022/lib/services/admin/system-health.service.mjs +22 -0
- package/esm2022/lib/services/admin/user-admin.service.mjs +67 -0
- package/esm2022/lib/services/admin/user-permission.service.mjs +40 -0
- package/esm2022/lib/services/admin/webhook-admin.service.mjs +61 -0
- package/esm2022/lib/services/api/agent.service.mjs +29 -0
- package/esm2022/lib/services/api/ai-feedback.service.mjs +17 -0
- package/esm2022/lib/services/api/ai.service.mjs +66 -0
- package/esm2022/lib/services/api/aip-analysis.service.mjs +20 -0
- package/esm2022/lib/services/api/aip-financial.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-geographic.service.mjs +30 -0
- package/esm2022/lib/services/api/aip-network.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-performance.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-resource.service.mjs +23 -0
- package/esm2022/lib/services/api/aip-workflow.service.mjs +32 -0
- package/esm2022/lib/services/api/aip.service.mjs +158 -0
- package/esm2022/lib/services/api/alert.service.mjs +26 -0
- package/esm2022/lib/services/api/anomaly-detection.service.mjs +40 -0
- package/esm2022/lib/services/api/asset-lifecycle.service.mjs +78 -0
- package/esm2022/lib/services/api/audit-entry.service.mjs +22 -0
- package/esm2022/lib/services/api/base-crud.service.mjs +37 -0
- package/esm2022/lib/services/api/bid.service.mjs +17 -0
- package/esm2022/lib/services/api/budget.service.mjs +17 -0
- package/esm2022/lib/services/api/bulk-operation.service.mjs +65 -0
- package/esm2022/lib/services/api/capex-project.service.mjs +17 -0
- package/esm2022/lib/services/api/cat.service.mjs +77 -0
- package/esm2022/lib/services/api/client-article.service.mjs +23 -0
- package/esm2022/lib/services/api/community.service.mjs +41 -0
- package/esm2022/lib/services/api/company-material-type.service.mjs +17 -0
- package/esm2022/lib/services/api/company-material.service.mjs +17 -0
- package/esm2022/lib/services/api/company.service.mjs +30 -0
- package/esm2022/lib/services/api/compliance.service.mjs +74 -0
- package/esm2022/lib/services/api/component-info.service.mjs +17 -0
- package/esm2022/lib/services/api/component-location.service.mjs +17 -0
- package/esm2022/lib/services/api/component.service.mjs +53 -0
- package/esm2022/lib/services/api/cortex-event.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex-insight.service.mjs +23 -0
- package/esm2022/lib/services/api/cortex-node.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex.service.mjs +29 -0
- package/esm2022/lib/services/api/custom-field.service.mjs +70 -0
- package/esm2022/lib/services/api/custom.service.mjs +43 -0
- package/esm2022/lib/services/api/dashboard.service.mjs +44 -0
- package/esm2022/lib/services/api/deferral.service.mjs +54 -0
- package/esm2022/lib/services/api/department.service.mjs +17 -0
- package/esm2022/lib/services/api/device-gateway.service.mjs +33 -0
- package/esm2022/lib/services/api/diagnostic-report.service.mjs +23 -0
- package/esm2022/lib/services/api/digital-twin.service.mjs +56 -0
- package/esm2022/lib/services/api/document.service.mjs +53 -0
- package/esm2022/lib/services/api/dynamic-crud.service.mjs +67 -0
- package/esm2022/lib/services/api/energy-analytics.service.mjs +42 -0
- package/esm2022/lib/services/api/energy-production.service.mjs +17 -0
- package/esm2022/lib/services/api/energy.service.mjs +91 -0
- package/esm2022/lib/services/api/entity-comment.service.mjs +31 -0
- package/esm2022/lib/services/api/event.service.mjs +17 -0
- package/esm2022/lib/services/api/export.service.mjs +216 -0
- package/esm2022/lib/services/api/extension.service.mjs +56 -0
- package/esm2022/lib/services/api/failure.service.mjs +53 -0
- package/esm2022/lib/services/api/fleet.service.mjs +140 -0
- package/esm2022/lib/services/api/inactive-component.service.mjs +17 -0
- package/esm2022/lib/services/api/index.mjs +101 -0
- package/esm2022/lib/services/api/inspection.service.mjs +29 -0
- package/esm2022/lib/services/api/intervention-request.service.mjs +17 -0
- package/esm2022/lib/services/api/intervention.service.mjs +17 -0
- package/esm2022/lib/services/api/knowledge.service.mjs +209 -0
- package/esm2022/lib/services/api/license.service.mjs +25 -0
- package/esm2022/lib/services/api/location.service.mjs +17 -0
- package/esm2022/lib/services/api/log.service.mjs +17 -0
- package/esm2022/lib/services/api/login-history.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-plan.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-record.service.mjs +17 -0
- package/esm2022/lib/services/api/material-consumable.service.mjs +41 -0
- package/esm2022/lib/services/api/material-instrument.service.mjs +29 -0
- package/esm2022/lib/services/api/material-item.service.mjs +53 -0
- package/esm2022/lib/services/api/material-tooling.service.mjs +41 -0
- package/esm2022/lib/services/api/measurement-unit.service.mjs +17 -0
- package/esm2022/lib/services/api/misc-crud.service.mjs +329 -0
- package/esm2022/lib/services/api/note.service.mjs +37 -0
- package/esm2022/lib/services/api/outage-resource.service.mjs +28 -0
- package/esm2022/lib/services/api/plant-data.service.mjs +31 -0
- package/esm2022/lib/services/api/procurement.service.mjs +53 -0
- package/esm2022/lib/services/api/project.service.mjs +17 -0
- package/esm2022/lib/services/api/property-template.service.mjs +17 -0
- package/esm2022/lib/services/api/quality.service.mjs +29 -0
- package/esm2022/lib/services/api/recurring-event.service.mjs +17 -0
- package/esm2022/lib/services/api/reporting.service.mjs +117 -0
- package/esm2022/lib/services/api/reservoir-data.service.mjs +19 -0
- package/esm2022/lib/services/api/reservoir.service.mjs +209 -0
- package/esm2022/lib/services/api/room.service.mjs +17 -0
- package/esm2022/lib/services/api/sandbox.service.mjs +62 -0
- package/esm2022/lib/services/api/scheduled-report.service.mjs +17 -0
- package/esm2022/lib/services/api/search.service.mjs +77 -0
- package/esm2022/lib/services/api/sensor.service.mjs +36 -0
- package/esm2022/lib/services/api/sla-policy.service.mjs +17 -0
- package/esm2022/lib/services/api/sla.service.mjs +17 -0
- package/esm2022/lib/services/api/threshold-alert-rule.service.mjs +17 -0
- package/esm2022/lib/services/api/ticket.service.mjs +73 -0
- package/esm2022/lib/services/api/time-entry.service.mjs +17 -0
- package/esm2022/lib/services/api/todo.service.mjs +17 -0
- package/esm2022/lib/services/api/unit.service.mjs +17 -0
- package/esm2022/lib/services/api/upload.service.mjs +84 -0
- package/esm2022/lib/services/api/user.service.mjs +107 -0
- package/esm2022/lib/services/api/warehouse.service.mjs +29 -0
- package/esm2022/lib/services/api/warranty.service.mjs +29 -0
- package/esm2022/lib/services/api/work-order.service.mjs +28 -0
- package/esm2022/lib/services/api/work-permit.service.mjs +17 -0
- package/esm2022/lib/services/api/workflow.service.mjs +86 -0
- package/esm2022/lib/services/auth/auth.service.mjs +97 -0
- package/esm2022/lib/services/auth/index.mjs +5 -0
- package/esm2022/lib/services/auth/platform-auth.service.mjs +39 -0
- package/esm2022/lib/services/auth/sso-auth.service.mjs +46 -0
- package/esm2022/lib/services/auth/totp.service.mjs +34 -0
- package/esm2022/lib/services/chat/chat-rest.service.mjs +104 -0
- package/esm2022/lib/services/chat/chat-websocket.service.mjs +70 -0
- package/esm2022/lib/services/chat/index.mjs +3 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/realtime/index.mjs +2 -0
- package/esm2022/lib/services/realtime/realtime-event.service.mjs +187 -0
- package/esm2022/lib/services/reservoir/index.mjs +2 -0
- package/esm2022/lib/services/reservoir/reservoir-websocket.service.mjs +105 -0
- package/esm2022/lib/services/video/index.mjs +3 -0
- package/esm2022/lib/services/video/video-call-rest.service.mjs +42 -0
- package/esm2022/lib/services/video/video-call-websocket.service.mjs +55 -0
- package/esm2022/lib/tgm-sdk.config.mjs +32 -0
- package/esm2022/lib/tgm-sdk.module.mjs +38 -0
- package/esm2022/public-api.mjs +52 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs +11029 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/database-manager/database-manager/database-manager.component.d.ts +70 -0
- package/lib/components/database-manager/database-manager.module.d.ts +15 -0
- package/lib/components/database-manager/object-browser/object-browser.component.d.ts +35 -0
- package/lib/components/database-manager/query-editor/query-editor.component.d.ts +31 -0
- package/lib/components/database-manager/query-toolbar/query-toolbar.component.d.ts +23 -0
- package/lib/components/database-manager/record-detail/record-detail.component.d.ts +35 -0
- package/lib/components/database-manager/registry/entity-registry.d.ts +16 -0
- package/lib/components/database-manager/results-grid/results-grid.component.d.ts +62 -0
- package/lib/components/database-manager/services/entity-schema.service.d.ts +37 -0
- package/lib/components/database-manager/services/query-executor.service.d.ts +57 -0
- package/lib/components/database-manager/table-data-viewer/table-data-viewer.component.d.ts +54 -0
- package/lib/components/database-manager/table-structure/table-structure.component.d.ts +16 -0
- package/lib/components/database-manager/types/database-manager.types.d.ts +71 -0
- package/lib/components/reporting/export-button/export-button.component.d.ts +50 -0
- package/lib/components/reporting/generated-report-list/generated-report-list.component.d.ts +93 -0
- package/lib/components/reporting/report-definition-form/report-definition-form.component.d.ts +65 -0
- package/lib/components/reporting/report-definition-list/report-definition-list.component.d.ts +90 -0
- package/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.d.ts +46 -0
- package/lib/components/reporting/report-stats/report-stats.component.d.ts +47 -0
- package/lib/components/reporting/report-template-list/report-template-list.component.d.ts +39 -0
- package/lib/components/reporting/reporting.module.d.ts +14 -0
- package/lib/components/video-call/incoming-call/incoming-call.component.d.ts +20 -0
- package/lib/components/video-call/services/livekit-room.service.d.ts +28 -0
- package/lib/components/video-call/services/video-call-signaling.service.d.ts +21 -0
- package/lib/components/video-call/services/video-call-state.service.d.ts +25 -0
- package/lib/components/video-call/types/video-call.types.d.ts +49 -0
- package/lib/components/video-call/video-call.module.d.ts +11 -0
- package/lib/components/video-call/video-controls/video-controls.component.d.ts +13 -0
- package/lib/components/video-call/video-participant/video-participant.component.d.ts +17 -0
- package/lib/components/video-call/video-room/video-room.component.d.ts +30 -0
- package/lib/core/auth-interceptor.d.ts +13 -0
- package/lib/core/client-interceptor.d.ts +14 -0
- package/lib/core/error-handler.d.ts +13 -0
- package/lib/core/http-client.service.d.ts +61 -0
- package/lib/core/websocket.service.d.ts +37 -0
- package/lib/models/admin/audit.models.d.ts +73 -0
- package/lib/models/admin/backup.models.d.ts +101 -0
- package/lib/models/admin/client.models.d.ts +99 -0
- package/lib/models/admin/email-provider.models.d.ts +56 -0
- package/lib/models/admin/erp.models.d.ts +188 -0
- package/lib/models/admin/identity-provider.models.d.ts +1 -0
- package/lib/models/admin/index.d.ts +13 -0
- package/lib/models/admin/messaging-provider.models.d.ts +49 -0
- package/lib/models/admin/platform-admin.models.d.ts +33 -0
- package/lib/models/admin/queue.models.d.ts +54 -0
- package/lib/models/admin/role.models.d.ts +50 -0
- package/lib/models/admin/sandbox.models.d.ts +54 -0
- package/lib/models/admin/ticket.models.d.ts +48 -0
- package/lib/models/admin/webhook.models.d.ts +65 -0
- package/lib/models/api/ai.models.d.ts +75 -0
- package/lib/models/api/aip.models.d.ts +545 -0
- package/lib/models/api/cat.models.d.ts +260 -0
- package/lib/models/api/company.models.d.ts +125 -0
- package/lib/models/api/compliance.models.d.ts +74 -0
- package/lib/models/api/component.models.d.ts +294 -0
- package/lib/models/api/cortex-edge.models.d.ts +14 -0
- package/lib/models/api/cortex-event.models.d.ts +12 -0
- package/lib/models/api/cortex-insight.models.d.ts +25 -0
- package/lib/models/api/cortex-node.models.d.ts +10 -0
- package/lib/models/api/custom-field.models.d.ts +37 -0
- package/lib/models/api/deferral.models.d.ts +81 -0
- package/lib/models/api/diagnostic-report.models.d.ts +29 -0
- package/lib/models/api/document.models.d.ts +95 -0
- package/lib/models/api/energy.models.d.ts +210 -0
- package/lib/models/api/failure.models.d.ts +171 -0
- package/lib/models/api/fleet.models.d.ts +193 -0
- package/lib/models/api/inspection.models.d.ts +110 -0
- package/lib/models/api/intervention.models.d.ts +254 -0
- package/lib/models/api/iot.models.d.ts +15 -0
- package/lib/models/api/knowledge.models.d.ts +340 -0
- package/lib/models/api/loto.models.d.ts +51 -0
- package/lib/models/api/maintenance-record.models.d.ts +100 -0
- package/lib/models/api/maintenance.models.d.ts +188 -0
- package/lib/models/api/material.models.d.ts +261 -0
- package/lib/models/api/media.models.d.ts +106 -0
- package/lib/models/api/misc.models.d.ts +929 -0
- package/lib/models/api/project.models.d.ts +118 -0
- package/lib/models/api/quality.models.d.ts +153 -0
- package/lib/models/api/reporting.models.d.ts +76 -0
- package/lib/models/api/reservoir-websocket.models.d.ts +48 -0
- package/lib/models/api/reservoir.models.d.ts +274 -0
- package/lib/models/api/search.models.d.ts +30 -0
- package/lib/models/api/sensor.models.d.ts +117 -0
- package/lib/models/api/unit.models.d.ts +82 -0
- package/lib/models/api/user.models.d.ts +253 -0
- package/lib/models/api/warranty.models.d.ts +51 -0
- package/lib/models/api/work-permit.models.d.ts +70 -0
- package/lib/models/api/workflow.models.d.ts +52 -0
- package/lib/models/auth/index.d.ts +3 -0
- package/lib/models/auth/login.models.d.ts +134 -0
- package/lib/models/auth/sso.models.d.ts +136 -0
- package/lib/models/auth/totp.models.d.ts +19 -0
- package/lib/models/base.models.d.ts +90 -0
- package/lib/models/chat/chat.models.d.ts +171 -0
- package/lib/models/enums/cat.enums.d.ts +114 -0
- package/lib/models/enums/energy.enums.d.ts +50 -0
- package/lib/models/enums/erp.enums.d.ts +49 -0
- package/lib/models/enums/index.d.ts +14 -0
- package/lib/models/enums/inspection.enums.d.ts +61 -0
- package/lib/models/enums/loto.enums.d.ts +41 -0
- package/lib/models/enums/misc.enums.d.ts +151 -0
- package/lib/models/enums/quality.enums.d.ts +25 -0
- package/lib/models/enums/reservoir.enums.d.ts +80 -0
- package/lib/models/enums/sso.enums.d.ts +15 -0
- package/lib/models/enums/status.enums.d.ts +296 -0
- package/lib/models/enums/time.enums.d.ts +51 -0
- package/lib/models/enums/type.enums.d.ts +324 -0
- package/lib/models/enums/user.enums.d.ts +31 -0
- package/lib/models/enums/work-permit.enums.d.ts +56 -0
- package/lib/models/index.d.ts +41 -0
- package/lib/models/realtime/realtime-event.models.d.ts +95 -0
- package/lib/models/video/video-call.models.d.ts +65 -0
- package/lib/services/admin/activity-log.service.d.ts +13 -0
- package/lib/services/admin/announcement.service.d.ts +17 -0
- package/lib/services/admin/article-admin.service.d.ts +17 -0
- package/lib/services/admin/audit-log.service.d.ts +22 -0
- package/lib/services/admin/backup.service.d.ts +15 -0
- package/lib/services/admin/cache-admin.service.d.ts +26 -0
- package/lib/services/admin/client-admin.service.d.ts +38 -0
- package/lib/services/admin/client-api-key.service.d.ts +15 -0
- package/lib/services/admin/client-ocr.service.d.ts +14 -0
- package/lib/services/admin/client-usage.service.d.ts +15 -0
- package/lib/services/admin/data-export.service.d.ts +10 -0
- package/lib/services/admin/document-admin.service.d.ts +18 -0
- package/lib/services/admin/email-admin.service.d.ts +14 -0
- package/lib/services/admin/email-provider.service.d.ts +25 -0
- package/lib/services/admin/erp-admin.service.d.ts +41 -0
- package/lib/services/admin/identity-provider.service.d.ts +21 -0
- package/lib/services/admin/impersonation.service.d.ts +11 -0
- package/lib/services/admin/index.d.ts +30 -0
- package/lib/services/admin/messaging-provider.service.d.ts +24 -0
- package/lib/services/admin/notification.service.d.ts +15 -0
- package/lib/services/admin/platform-admin.service.d.ts +17 -0
- package/lib/services/admin/platform-webhook.service.d.ts +16 -0
- package/lib/services/admin/queue-admin.service.d.ts +24 -0
- package/lib/services/admin/role-admin.service.d.ts +37 -0
- package/lib/services/admin/sandbox-admin.service.d.ts +17 -0
- package/lib/services/admin/scheduler-admin.service.d.ts +61 -0
- package/lib/services/admin/subscription.service.d.ts +15 -0
- package/lib/services/admin/system-health.service.d.ts +11 -0
- package/lib/services/admin/user-admin.service.d.ts +27 -0
- package/lib/services/admin/user-permission.service.d.ts +18 -0
- package/lib/services/admin/webhook-admin.service.d.ts +26 -0
- package/lib/services/api/agent.service.d.ts +16 -0
- package/lib/services/api/ai-feedback.service.d.ts +9 -0
- package/lib/services/api/ai.service.d.ts +36 -0
- package/lib/services/api/aip-analysis.service.d.ts +13 -0
- package/lib/services/api/aip-financial.service.d.ts +16 -0
- package/lib/services/api/aip-geographic.service.d.ts +16 -0
- package/lib/services/api/aip-network.service.d.ts +16 -0
- package/lib/services/api/aip-performance.service.d.ts +16 -0
- package/lib/services/api/aip-resource.service.d.ts +14 -0
- package/lib/services/api/aip-workflow.service.d.ts +24 -0
- package/lib/services/api/aip.service.d.ts +73 -0
- package/lib/services/api/alert.service.d.ts +15 -0
- package/lib/services/api/anomaly-detection.service.d.ts +26 -0
- package/lib/services/api/asset-lifecycle.service.d.ts +29 -0
- package/lib/services/api/audit-entry.service.d.ts +13 -0
- package/lib/services/api/base-crud.service.d.ts +18 -0
- package/lib/services/api/bid.service.d.ts +10 -0
- package/lib/services/api/budget.service.d.ts +10 -0
- package/lib/services/api/bulk-operation.service.d.ts +26 -0
- package/lib/services/api/capex-project.service.d.ts +10 -0
- package/lib/services/api/cat.service.d.ts +40 -0
- package/lib/services/api/client-article.service.d.ts +14 -0
- package/lib/services/api/community.service.d.ts +21 -0
- package/lib/services/api/company-material-type.service.d.ts +10 -0
- package/lib/services/api/company-material.service.d.ts +9 -0
- package/lib/services/api/company.service.d.ts +15 -0
- package/lib/services/api/compliance.service.d.ts +35 -0
- package/lib/services/api/component-info.service.d.ts +10 -0
- package/lib/services/api/component-location.service.d.ts +10 -0
- package/lib/services/api/component.service.d.ts +32 -0
- package/lib/services/api/cortex-event.service.d.ts +10 -0
- package/lib/services/api/cortex-insight.service.d.ts +14 -0
- package/lib/services/api/cortex-node.service.d.ts +10 -0
- package/lib/services/api/cortex.service.d.ts +15 -0
- package/lib/services/api/custom-field.service.d.ts +33 -0
- package/lib/services/api/custom.service.d.ts +23 -0
- package/lib/services/api/dashboard.service.d.ts +18 -0
- package/lib/services/api/deferral.service.d.ts +29 -0
- package/lib/services/api/department.service.d.ts +9 -0
- package/lib/services/api/device-gateway.service.d.ts +16 -0
- package/lib/services/api/diagnostic-report.service.d.ts +14 -0
- package/lib/services/api/digital-twin.service.d.ts +29 -0
- package/lib/services/api/document.service.d.ts +28 -0
- package/lib/services/api/dynamic-crud.service.d.ts +41 -0
- package/lib/services/api/energy-analytics.service.d.ts +16 -0
- package/lib/services/api/energy-production.service.d.ts +10 -0
- package/lib/services/api/energy.service.d.ts +46 -0
- package/lib/services/api/entity-comment.service.d.ts +16 -0
- package/lib/services/api/event.service.d.ts +10 -0
- package/lib/services/api/export.service.d.ts +48 -0
- package/lib/services/api/extension.service.d.ts +24 -0
- package/lib/services/api/failure.service.d.ts +28 -0
- package/lib/services/api/fleet.service.d.ts +71 -0
- package/lib/services/api/inactive-component.service.d.ts +10 -0
- package/lib/services/api/index.d.ts +101 -0
- package/lib/services/api/inspection.service.d.ts +16 -0
- package/lib/services/api/intervention-request.service.d.ts +10 -0
- package/lib/services/api/intervention.service.d.ts +10 -0
- package/lib/services/api/knowledge.service.d.ts +106 -0
- package/lib/services/api/license.service.d.ts +14 -0
- package/lib/services/api/location.service.d.ts +9 -0
- package/lib/services/api/log.service.d.ts +9 -0
- package/lib/services/api/login-history.service.d.ts +10 -0
- package/lib/services/api/maintenance-plan.service.d.ts +10 -0
- package/lib/services/api/maintenance-record.service.d.ts +10 -0
- package/lib/services/api/material-consumable.service.d.ts +22 -0
- package/lib/services/api/material-instrument.service.d.ts +16 -0
- package/lib/services/api/material-item.service.d.ts +28 -0
- package/lib/services/api/material-tooling.service.d.ts +22 -0
- package/lib/services/api/measurement-unit.service.d.ts +10 -0
- package/lib/services/api/misc-crud.service.d.ts +167 -0
- package/lib/services/api/note.service.d.ts +14 -0
- package/lib/services/api/outage-resource.service.d.ts +15 -0
- package/lib/services/api/plant-data.service.d.ts +14 -0
- package/lib/services/api/procurement.service.d.ts +27 -0
- package/lib/services/api/project.service.d.ts +10 -0
- package/lib/services/api/property-template.service.d.ts +10 -0
- package/lib/services/api/quality.service.d.ts +16 -0
- package/lib/services/api/recurring-event.service.d.ts +10 -0
- package/lib/services/api/reporting.service.d.ts +38 -0
- package/lib/services/api/reservoir-data.service.d.ts +10 -0
- package/lib/services/api/reservoir.service.d.ts +109 -0
- package/lib/services/api/room.service.d.ts +10 -0
- package/lib/services/api/sandbox.service.d.ts +26 -0
- package/lib/services/api/scheduled-report.service.d.ts +10 -0
- package/lib/services/api/search.service.d.ts +54 -0
- package/lib/services/api/sensor.service.d.ts +17 -0
- package/lib/services/api/sla-policy.service.d.ts +10 -0
- package/lib/services/api/sla.service.d.ts +10 -0
- package/lib/services/api/threshold-alert-rule.service.d.ts +10 -0
- package/lib/services/api/ticket.service.d.ts +60 -0
- package/lib/services/api/time-entry.service.d.ts +10 -0
- package/lib/services/api/todo.service.d.ts +10 -0
- package/lib/services/api/unit.service.d.ts +10 -0
- package/lib/services/api/upload.service.d.ts +50 -0
- package/lib/services/api/user.service.d.ts +59 -0
- package/lib/services/api/warehouse.service.d.ts +15 -0
- package/lib/services/api/warranty.service.d.ts +16 -0
- package/lib/services/api/work-order.service.d.ts +17 -0
- package/lib/services/api/work-permit.service.d.ts +10 -0
- package/lib/services/api/workflow.service.d.ts +33 -0
- package/lib/services/auth/auth.service.d.ts +33 -0
- package/lib/services/auth/index.d.ts +4 -0
- package/lib/services/auth/platform-auth.service.d.ts +16 -0
- package/lib/services/auth/sso-auth.service.d.ts +21 -0
- package/lib/services/auth/totp.service.d.ts +18 -0
- package/lib/services/chat/chat-rest.service.d.ts +40 -0
- package/lib/services/chat/chat-websocket.service.d.ts +34 -0
- package/lib/services/chat/index.d.ts +2 -0
- package/lib/services/index.d.ts +7 -0
- package/lib/services/realtime/index.d.ts +1 -0
- package/lib/services/realtime/realtime-event.service.d.ts +137 -0
- package/lib/services/reservoir/index.d.ts +1 -0
- package/lib/services/reservoir/reservoir-websocket.service.d.ts +47 -0
- package/lib/services/video/index.d.ts +2 -0
- package/lib/services/video/video-call-rest.service.d.ts +19 -0
- package/lib/services/video/video-call-websocket.service.d.ts +31 -0
- package/lib/tgm-sdk.config.d.ts +36 -0
- package/lib/tgm-sdk.module.d.ts +13 -0
- package/package.json +40 -0
- package/public-api.d.ts +42 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { TGM_SDK_CONFIG, InMemoryTokenStorage } from '../tgm-sdk.config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AuthInterceptor {
|
|
5
|
+
config;
|
|
6
|
+
tokenStorage;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.tokenStorage = config.tokenStorage ?? new InMemoryTokenStorage();
|
|
10
|
+
}
|
|
11
|
+
intercept(req, next) {
|
|
12
|
+
const token = this.tokenStorage.getToken();
|
|
13
|
+
if (token && this.shouldAddToken(req)) {
|
|
14
|
+
req = req.clone({
|
|
15
|
+
setHeaders: { Authorization: `Bearer ${token}` },
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return next.handle(req);
|
|
19
|
+
}
|
|
20
|
+
shouldAddToken(req) {
|
|
21
|
+
const baseUrl = this.config.baseUrl.replace(/\/+$/, '');
|
|
22
|
+
return req.url.startsWith(baseUrl);
|
|
23
|
+
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthInterceptor, deps: [{ token: TGM_SDK_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
25
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthInterceptor });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
28
|
+
type: Injectable
|
|
29
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
30
|
+
type: Inject,
|
|
31
|
+
args: [TGM_SDK_CONFIG]
|
|
32
|
+
}] }] });
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9hdXRoLWludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxjQUFjLEVBQWdCLG9CQUFvQixFQUF3QixNQUFNLG1CQUFtQixDQUFDOztBQUc3RyxNQUFNLE9BQU8sZUFBZTtJQUdrQjtJQUZwQyxZQUFZLENBQXVCO0lBRTNDLFlBQTRDLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQXFCLEVBQUUsSUFBaUI7UUFDaEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsS0FBSyxFQUFFLEVBQUU7YUFDakQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYyxDQUFDLEdBQXFCO1FBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO3dHQXBCVSxlQUFlLGtCQUdOLGNBQWM7NEdBSHZCLGVBQWU7OzRGQUFmLGVBQWU7a0JBRDNCLFVBQVU7OzBCQUlJLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRHTV9TREtfQ09ORklHLCBUZ21TZGtDb25maWcsIEluTWVtb3J5VG9rZW5TdG9yYWdlLCBUb2tlblN0b3JhZ2VTdHJhdGVneSB9IGZyb20gJy4uL3RnbS1zZGsuY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEF1dGhJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIHByaXZhdGUgdG9rZW5TdG9yYWdlOiBUb2tlblN0b3JhZ2VTdHJhdGVneTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFRHTV9TREtfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVGdtU2RrQ29uZmlnKSB7XG4gICAgdGhpcy50b2tlblN0b3JhZ2UgPSBjb25maWcudG9rZW5TdG9yYWdlID8/IG5ldyBJbk1lbW9yeVRva2VuU3RvcmFnZSgpO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2VuU3RvcmFnZS5nZXRUb2tlbigpO1xuICAgIGlmICh0b2tlbiAmJiB0aGlzLnNob3VsZEFkZFRva2VuKHJlcSkpIHtcbiAgICAgIHJlcSA9IHJlcS5jbG9uZSh7XG4gICAgICAgIHNldEhlYWRlcnM6IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkQWRkVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnLmJhc2VVcmwucmVwbGFjZSgvXFwvKyQvLCAnJyk7XG4gICAgcmV0dXJuIHJlcS51cmwuc3RhcnRzV2l0aChiYXNlVXJsKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { TGM_SDK_CONFIG } from '../tgm-sdk.config';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./http-client.service";
|
|
5
|
+
export class ClientInterceptor {
|
|
6
|
+
config;
|
|
7
|
+
httpClient;
|
|
8
|
+
constructor(config, httpClient) {
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.httpClient = httpClient;
|
|
11
|
+
}
|
|
12
|
+
intercept(req, next) {
|
|
13
|
+
const clientId = this.httpClient.getClientId();
|
|
14
|
+
if (clientId && this.shouldAddClientId(req)) {
|
|
15
|
+
req = req.clone({
|
|
16
|
+
setHeaders: { 'X-Client-ID': clientId },
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return next.handle(req);
|
|
20
|
+
}
|
|
21
|
+
shouldAddClientId(req) {
|
|
22
|
+
const baseUrl = this.config.baseUrl.replace(/\/+$/, '');
|
|
23
|
+
return req.url.startsWith(baseUrl);
|
|
24
|
+
}
|
|
25
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClientInterceptor, deps: [{ token: TGM_SDK_CONFIG }, { token: i1.TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
26
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClientInterceptor });
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ClientInterceptor, decorators: [{
|
|
29
|
+
type: Injectable
|
|
30
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
31
|
+
type: Inject,
|
|
32
|
+
args: [TGM_SDK_CONFIG]
|
|
33
|
+
}] }, { type: i1.TgmHttpClient }] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL2NsaWVudC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQUUsY0FBYyxFQUFnQixNQUFNLG1CQUFtQixDQUFDOzs7QUFJakUsTUFBTSxPQUFPLGlCQUFpQjtJQUVNO0lBQ3hCO0lBRlYsWUFDa0MsTUFBb0IsRUFDNUMsVUFBeUI7UUFERCxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQzVDLGVBQVUsR0FBVixVQUFVLENBQWU7SUFDaEMsQ0FBQztJQUVKLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsVUFBVSxFQUFFLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRTthQUN4QyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxHQUFxQjtRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQzt3R0FuQlUsaUJBQWlCLGtCQUVsQixjQUFjOzRHQUZiLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVEdNX1NES19DT05GSUcsIFRnbVNka0NvbmZpZyB9IGZyb20gJy4uL3RnbS1zZGsuY29uZmlnJztcbmltcG9ydCB7IFRnbUh0dHBDbGllbnQgfSBmcm9tICcuL2h0dHAtY2xpZW50LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xpZW50SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFRHTV9TREtfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogVGdtU2RrQ29uZmlnLFxuICAgIHByaXZhdGUgaHR0cENsaWVudDogVGdtSHR0cENsaWVudFxuICApIHt9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmh0dHBDbGllbnQuZ2V0Q2xpZW50SWQoKTtcbiAgICBpZiAoY2xpZW50SWQgJiYgdGhpcy5zaG91bGRBZGRDbGllbnRJZChyZXEpKSB7XG4gICAgICByZXEgPSByZXEuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7ICdYLUNsaWVudC1JRCc6IGNsaWVudElkIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gIH1cblxuICBwcml2YXRlIHNob3VsZEFkZENsaWVudElkKHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgIHJldHVybiByZXEudXJsLnN0YXJ0c1dpdGgoYmFzZVVybCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export class TgmApiError extends Error {
|
|
2
|
+
status;
|
|
3
|
+
error;
|
|
4
|
+
originalError;
|
|
5
|
+
constructor(status, message, error, originalError) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.status = status;
|
|
8
|
+
this.error = error;
|
|
9
|
+
this.originalError = originalError;
|
|
10
|
+
this.name = 'TgmApiError';
|
|
11
|
+
}
|
|
12
|
+
get isUnauthorized() {
|
|
13
|
+
return this.status === 401;
|
|
14
|
+
}
|
|
15
|
+
get isForbidden() {
|
|
16
|
+
return this.status === 403;
|
|
17
|
+
}
|
|
18
|
+
get isNotFound() {
|
|
19
|
+
return this.status === 404;
|
|
20
|
+
}
|
|
21
|
+
get isValidationError() {
|
|
22
|
+
return this.status === 400 || this.status === 422;
|
|
23
|
+
}
|
|
24
|
+
get isServerError() {
|
|
25
|
+
return this.status >= 500;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function mapHttpError(error) {
|
|
29
|
+
const message = error.error?.message ?? error.message ?? 'An unknown error occurred';
|
|
30
|
+
return new TgmApiError(error.status, message, error.error, error);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9lcnJvci1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxXQUFZLFNBQVEsS0FBSztJQUVsQjtJQUVBO0lBQ0E7SUFKbEIsWUFDa0IsTUFBYyxFQUM5QixPQUFlLEVBQ0MsS0FBVyxFQUNYLGFBQWlDO1FBRWpELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUxDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFFZCxVQUFLLEdBQUwsS0FBSyxDQUFNO1FBQ1gsa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBR2pELElBQUksQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQXdCO0lBQ25ELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksMkJBQTJCLENBQUM7SUFDckYsT0FBTyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3BFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuZXhwb3J0IGNsYXNzIFRnbUFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzOiBudW1iZXIsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBlcnJvcj86IGFueSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3JpZ2luYWxFcnJvcj86IEh0dHBFcnJvclJlc3BvbnNlXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdUZ21BcGlFcnJvcic7XG4gIH1cblxuICBnZXQgaXNVbmF1dGhvcml6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSA0MDE7XG4gIH1cblxuICBnZXQgaXNGb3JiaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSA0MDM7XG4gIH1cblxuICBnZXQgaXNOb3RGb3VuZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IDQwNDtcbiAgfVxuXG4gIGdldCBpc1ZhbGlkYXRpb25FcnJvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IDQwMCB8fCB0aGlzLnN0YXR1cyA9PT0gNDIyO1xuICB9XG5cbiAgZ2V0IGlzU2VydmVyRXJyb3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID49IDUwMDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwSHR0cEVycm9yKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSk6IFRnbUFwaUVycm9yIHtcbiAgY29uc3QgbWVzc2FnZSA9IGVycm9yLmVycm9yPy5tZXNzYWdlID8/IGVycm9yLm1lc3NhZ2UgPz8gJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnO1xuICByZXR1cm4gbmV3IFRnbUFwaUVycm9yKGVycm9yLnN0YXR1cywgbWVzc2FnZSwgZXJyb3IuZXJyb3IsIGVycm9yKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { throwError, BehaviorSubject, Subject, take, switchMap, catchError } from 'rxjs';
|
|
3
|
+
import { InMemoryTokenStorage } from '../tgm-sdk.config';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
/**
|
|
7
|
+
* Core HTTP client for the TGM SDK.
|
|
8
|
+
* NOT providedIn root — must be provided by the consuming application
|
|
9
|
+
* via useFactory to avoid cross-bundle token mismatch in production builds.
|
|
10
|
+
*/
|
|
11
|
+
export class TgmHttpClient {
|
|
12
|
+
http;
|
|
13
|
+
baseUrl = '';
|
|
14
|
+
tokenStorage = new InMemoryTokenStorage();
|
|
15
|
+
clientId$ = new BehaviorSubject(undefined);
|
|
16
|
+
isRefreshing = false;
|
|
17
|
+
refreshTokenSubject = new Subject();
|
|
18
|
+
config;
|
|
19
|
+
constructor(http, config) {
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.config = config ?? { baseUrl: '', tokenStorage: new InMemoryTokenStorage(), autoRefresh: false };
|
|
22
|
+
if (config) {
|
|
23
|
+
this.baseUrl = (config.baseUrl || '').replace(/\/+$/, '');
|
|
24
|
+
this.tokenStorage = config.tokenStorage ?? new InMemoryTokenStorage();
|
|
25
|
+
if (config.clientId) {
|
|
26
|
+
this.clientId$.next(config.clientId);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// --- Token management ---
|
|
31
|
+
getToken() {
|
|
32
|
+
return this.tokenStorage.getToken();
|
|
33
|
+
}
|
|
34
|
+
setToken(token) {
|
|
35
|
+
this.tokenStorage.setToken(token);
|
|
36
|
+
}
|
|
37
|
+
removeToken() {
|
|
38
|
+
this.tokenStorage.removeToken();
|
|
39
|
+
}
|
|
40
|
+
getRefreshToken() {
|
|
41
|
+
return this.tokenStorage.getRefreshToken();
|
|
42
|
+
}
|
|
43
|
+
setRefreshToken(token) {
|
|
44
|
+
this.tokenStorage.setRefreshToken(token);
|
|
45
|
+
}
|
|
46
|
+
removeRefreshToken() {
|
|
47
|
+
this.tokenStorage.removeRefreshToken();
|
|
48
|
+
}
|
|
49
|
+
clearTokens() {
|
|
50
|
+
this.tokenStorage.removeToken();
|
|
51
|
+
this.tokenStorage.removeRefreshToken();
|
|
52
|
+
}
|
|
53
|
+
// --- Client ID management ---
|
|
54
|
+
setClientId(clientId) {
|
|
55
|
+
this.clientId$.next(clientId);
|
|
56
|
+
}
|
|
57
|
+
getClientId() {
|
|
58
|
+
return this.clientId$.value;
|
|
59
|
+
}
|
|
60
|
+
// --- HTTP Methods ---
|
|
61
|
+
get(path, options) {
|
|
62
|
+
return this.request('GET', path, undefined, options);
|
|
63
|
+
}
|
|
64
|
+
post(path, body, options) {
|
|
65
|
+
return this.request('POST', path, body, options);
|
|
66
|
+
}
|
|
67
|
+
put(path, body, options) {
|
|
68
|
+
return this.request('PUT', path, body, options);
|
|
69
|
+
}
|
|
70
|
+
patch(path, body, options) {
|
|
71
|
+
return this.request('PATCH', path, body, options);
|
|
72
|
+
}
|
|
73
|
+
delete(path, options) {
|
|
74
|
+
return this.request('DELETE', path, undefined, options);
|
|
75
|
+
}
|
|
76
|
+
upload(path, formData, options) {
|
|
77
|
+
return this.request('POST', path, formData, { ...options, headers: { ...(options?.headers || {}) } });
|
|
78
|
+
}
|
|
79
|
+
download(path, options) {
|
|
80
|
+
return this.request('GET', path, undefined, { ...options, responseType: 'blob' });
|
|
81
|
+
}
|
|
82
|
+
// --- Internal ---
|
|
83
|
+
request(method, path, body, options) {
|
|
84
|
+
const url = `${this.baseUrl}${path}`;
|
|
85
|
+
// Use plain objects for headers and params to avoid cross-bundle class mismatch
|
|
86
|
+
// (SDK's HttpHeaders/HttpParams class !== app's HttpHeaders/HttpParams class in prod builds)
|
|
87
|
+
const headerMap = {};
|
|
88
|
+
// Auth header
|
|
89
|
+
if (!options?.skipAuth) {
|
|
90
|
+
const token = this.tokenStorage.getToken();
|
|
91
|
+
if (token) {
|
|
92
|
+
headerMap['Authorization'] = `Bearer ${token}`;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Client ID header
|
|
96
|
+
if (!options?.skipClientId) {
|
|
97
|
+
const clientId = this.clientId$.value;
|
|
98
|
+
if (clientId) {
|
|
99
|
+
headerMap['X-Client-ID'] = clientId;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Custom headers
|
|
103
|
+
if (options?.headers) {
|
|
104
|
+
for (const [key, value] of Object.entries(options.headers)) {
|
|
105
|
+
headerMap[key] = value;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Query params — flatten nested objects/arrays for backend compatibility
|
|
109
|
+
const paramMap = {};
|
|
110
|
+
if (options?.params) {
|
|
111
|
+
const flatParams = this.flattenParams(options.params);
|
|
112
|
+
for (const [key, value] of Object.entries(flatParams)) {
|
|
113
|
+
if (value !== undefined && value !== null) {
|
|
114
|
+
paramMap[key] = String(value);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
const responseType = (options?.responseType ?? 'json');
|
|
119
|
+
const httpOptions = { headers: headerMap, params: paramMap, body, responseType };
|
|
120
|
+
return this.http.request(method, url, httpOptions).pipe(catchError((error) => {
|
|
121
|
+
if (error.status === 401 && !options?.skipAuth && this.config.autoRefresh !== false) {
|
|
122
|
+
return this.handle401(method, path, body, options);
|
|
123
|
+
}
|
|
124
|
+
return throwError(() => this.mapError(error));
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
handle401(method, path, body, options) {
|
|
128
|
+
if (this.isRefreshing) {
|
|
129
|
+
return this.refreshTokenSubject.pipe(take(1), switchMap(() => this.request(method, path, body, { ...options, skipAuth: false })));
|
|
130
|
+
}
|
|
131
|
+
this.isRefreshing = true;
|
|
132
|
+
const refreshToken = this.tokenStorage.getRefreshToken();
|
|
133
|
+
if (!refreshToken) {
|
|
134
|
+
this.isRefreshing = false;
|
|
135
|
+
return throwError(() => ({ status: 401, message: 'No refresh token available' }));
|
|
136
|
+
}
|
|
137
|
+
return this.http.post(`${this.baseUrl}/auth/refresh-token`, null, {
|
|
138
|
+
params: { refreshToken }
|
|
139
|
+
}).pipe(switchMap((response) => {
|
|
140
|
+
this.isRefreshing = false;
|
|
141
|
+
const tokenKey = this.config.tokenKey ?? 'jwt';
|
|
142
|
+
const refreshKey = this.config.refreshTokenKey ?? 'refreshToken';
|
|
143
|
+
const newToken = response[tokenKey] ?? response.data?.[tokenKey];
|
|
144
|
+
const newRefresh = response[refreshKey] ?? response.data?.[refreshKey];
|
|
145
|
+
if (newToken) {
|
|
146
|
+
this.tokenStorage.setToken(newToken);
|
|
147
|
+
}
|
|
148
|
+
if (newRefresh) {
|
|
149
|
+
this.tokenStorage.setRefreshToken(newRefresh);
|
|
150
|
+
}
|
|
151
|
+
this.refreshTokenSubject.next(newToken);
|
|
152
|
+
return this.request(method, path, body, options);
|
|
153
|
+
}), catchError((err) => {
|
|
154
|
+
this.isRefreshing = false;
|
|
155
|
+
this.clearTokens();
|
|
156
|
+
return throwError(() => this.mapError(err));
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Flattens nested param objects into flat key-value pairs.
|
|
161
|
+
* - `{ filters: { status: 'active' } }` → `{ status: 'active' }`
|
|
162
|
+
* - `{ populate: ['a', 'b'] }` → `{ populate: 'a,b' }`
|
|
163
|
+
* - `{ pagination: { page: 1, pageSize: 25 } }` → `{ page: 1, pageSize: 25 }`
|
|
164
|
+
*/
|
|
165
|
+
flattenParams(params) {
|
|
166
|
+
// Map Strapi pagination params to backend params
|
|
167
|
+
// Note: 'start' (offset) is converted to page number using limit as page size
|
|
168
|
+
const paramKeyMap = {
|
|
169
|
+
'limit': 'pageSize',
|
|
170
|
+
'page': 'page', 'pageSize': 'pageSize',
|
|
171
|
+
};
|
|
172
|
+
const result = {};
|
|
173
|
+
for (const [key, value] of Object.entries(params)) {
|
|
174
|
+
if (value === undefined || value === null)
|
|
175
|
+
continue;
|
|
176
|
+
if (Array.isArray(value)) {
|
|
177
|
+
result[key] = value.join(',');
|
|
178
|
+
}
|
|
179
|
+
else if (typeof value === 'object' && !(value instanceof Date)) {
|
|
180
|
+
// Flatten nested objects: merge their keys directly
|
|
181
|
+
for (const [nestedKey, nestedValue] of Object.entries(value)) {
|
|
182
|
+
if (nestedValue !== undefined && nestedValue !== null) {
|
|
183
|
+
if (typeof nestedValue === 'object' && !Array.isArray(nestedValue)) {
|
|
184
|
+
// Two levels deep: map Strapi operators to backend suffix operators
|
|
185
|
+
// e.g., { unit: { $eq: 5 } } → unit=5, { unit: { $notNull: true } } → unit_isnull=false
|
|
186
|
+
const strapiToBackend = {
|
|
187
|
+
'$eq': '', '$ne': '_ne', '$contains': '_contains',
|
|
188
|
+
'$startsWith': '_startsWith', '$endsWith': '_endsWith',
|
|
189
|
+
'$gt': '_gt', '$gte': '_gte', '$lt': '_lt', '$lte': '_lte',
|
|
190
|
+
'$in': '_in', '$notIn': '_notIn', '$null': '_isnull',
|
|
191
|
+
'$notNull': '_isnull', '$eqOrNull': '_eqOrNull',
|
|
192
|
+
};
|
|
193
|
+
for (const [deepKey, deepValue] of Object.entries(nestedValue)) {
|
|
194
|
+
if (deepValue !== undefined && deepValue !== null) {
|
|
195
|
+
if (deepKey.startsWith('$')) {
|
|
196
|
+
// Strapi operator: { $eq: 5 } → field=5, { $contains: 'x' } → field_contains=x
|
|
197
|
+
const suffix = strapiToBackend[deepKey] ?? '_' + deepKey.slice(1);
|
|
198
|
+
const finalValue = deepKey === '$notNull' ? !deepValue : deepValue;
|
|
199
|
+
result[`${nestedKey}${suffix}`] = finalValue;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
// Relation field: { id: 5 } → field.id=5
|
|
203
|
+
result[`${nestedKey}.${deepKey}`] = deepValue;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
const mappedKey = paramKeyMap[nestedKey] || nestedKey;
|
|
210
|
+
result[mappedKey] = Array.isArray(nestedValue) ? nestedValue.join(',') : nestedValue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
const mappedKey = paramKeyMap[key] || key;
|
|
217
|
+
result[mappedKey] = value;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Convert Strapi offset-based 'start' to page number
|
|
221
|
+
// Only convert if 'start' is a pure number (Strapi offset), NOT an ISO date string
|
|
222
|
+
if ('start' in result) {
|
|
223
|
+
const startVal = result['start'];
|
|
224
|
+
const isNumericOffset = typeof startVal === 'number' || /^\d+$/.test(String(startVal));
|
|
225
|
+
if (isNumericOffset) {
|
|
226
|
+
const start = Number(startVal) || 0;
|
|
227
|
+
if ('pageSize' in result) {
|
|
228
|
+
const pageSize = Number(result['pageSize']) || 25;
|
|
229
|
+
result['page'] = Math.floor(start / pageSize);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
result['page'] = start;
|
|
233
|
+
}
|
|
234
|
+
delete result['start'];
|
|
235
|
+
}
|
|
236
|
+
// If start is an ISO date string (e.g. "2026-01-01T00:00:00"), preserve it as-is
|
|
237
|
+
}
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
mapError(error) {
|
|
241
|
+
return {
|
|
242
|
+
status: error.status,
|
|
243
|
+
message: error.error?.message ?? error.message ?? 'Unknown error',
|
|
244
|
+
error: error.error,
|
|
245
|
+
originalError: error,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TgmHttpClient, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
249
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TgmHttpClient });
|
|
250
|
+
}
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TgmHttpClient, decorators: [{
|
|
252
|
+
type: Injectable
|
|
253
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined }] });
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9odHRwLWNsaWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFVLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdHLE9BQU8sRUFBZ0Isb0JBQW9CLEVBQXdCLE1BQU0sbUJBQW1CLENBQUM7OztBQVc3Rjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGFBQWE7SUFRSjtJQVBaLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixZQUFZLEdBQXlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQztJQUNoRSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQy9ELFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsbUJBQW1CLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztJQUM1QyxNQUFNLENBQWU7SUFFN0IsWUFBb0IsSUFBZ0IsRUFBRSxNQUE0QjtRQUE5QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxvQkFBb0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN0RyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLElBQUks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SztZQUNsQixhQUFhLEVBQUUsS0FBSztTQUNyQixDQUFDO0lBQ0osQ0FBQzt3R0FsUlUsYUFBYTs0R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZpbHRlciwgdGFrZSwgc3dpdGNoTWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUZ21TZGtDb25maWcsIEluTWVtb3J5VG9rZW5TdG9yYWdlLCBUb2tlblN0b3JhZ2VTdHJhdGVneSB9IGZyb20gJy4uL3RnbS1zZGsuY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgdW5kZWZpbmVkPjtcbiAgcmVzcG9uc2VUeXBlPzogJ2pzb24nIHwgJ2Jsb2InIHwgJ3RleHQnIHwgJ2FycmF5YnVmZmVyJztcbiAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICBza2lwQXV0aD86IGJvb2xlYW47XG4gIHNraXBDbGllbnRJZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29yZSBIVFRQIGNsaWVudCBmb3IgdGhlIFRHTSBTREsuXG4gKiBOT1QgcHJvdmlkZWRJbiByb290IOKAlCBtdXN0IGJlIHByb3ZpZGVkIGJ5IHRoZSBjb25zdW1pbmcgYXBwbGljYXRpb25cbiAqIHZpYSB1c2VGYWN0b3J5IHRvIGF2b2lkIGNyb3NzLWJ1bmRsZSB0b2tlbiBtaXNtYXRjaCBpbiBwcm9kdWN0aW9uIGJ1aWxkcy5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRnbUh0dHBDbGllbnQge1xuICBwcml2YXRlIGJhc2VVcmwgPSAnJztcbiAgcHJpdmF0ZSB0b2tlblN0b3JhZ2U6IFRva2VuU3RvcmFnZVN0cmF0ZWd5ID0gbmV3IEluTWVtb3J5VG9rZW5TdG9yYWdlKCk7XG4gIHByaXZhdGUgY2xpZW50SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gIHByaXZhdGUgcmVmcmVzaFRva2VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBjb25maWc6IFRnbVNka0NvbmZpZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIGNvbmZpZz86IFRnbVNka0NvbmZpZyB8IG51bGwpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyA/PyB7IGJhc2VVcmw6ICcnLCB0b2tlblN0b3JhZ2U6IG5ldyBJbk1lbW9yeVRva2VuU3RvcmFnZSgpLCBhdXRvUmVmcmVzaDogZmFsc2UgfTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmJhc2VVcmwgPSAoY29uZmlnLmJhc2VVcmwgfHwgJycpLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgICAgdGhpcy50b2tlblN0b3JhZ2UgPSBjb25maWcudG9rZW5TdG9yYWdlID8/IG5ldyBJbk1lbW9yeVRva2VuU3RvcmFnZSgpO1xuICAgICAgaWYgKGNvbmZpZy5jbGllbnRJZCkge1xuICAgICAgICB0aGlzLmNsaWVudElkJC5uZXh0KGNvbmZpZy5jbGllbnRJZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gLS0tIFRva2VuIG1hbmFnZW1lbnQgLS0tXG5cbiAgZ2V0VG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5TdG9yYWdlLmdldFRva2VuKCk7XG4gIH1cblxuICBzZXRUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblN0b3JhZ2Uuc2V0VG9rZW4odG9rZW4pO1xuICB9XG5cbiAgcmVtb3ZlVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblN0b3JhZ2UucmVtb3ZlVG9rZW4oKTtcbiAgfVxuXG4gIGdldFJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy50b2tlblN0b3JhZ2UuZ2V0UmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICBzZXRSZWZyZXNoVG9rZW4odG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5TdG9yYWdlLnNldFJlZnJlc2hUb2tlbih0b2tlbik7XG4gIH1cblxuICByZW1vdmVSZWZyZXNoVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblN0b3JhZ2UucmVtb3ZlUmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICBjbGVhclRva2VucygpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuU3RvcmFnZS5yZW1vdmVUb2tlbigpO1xuICAgIHRoaXMudG9rZW5TdG9yYWdlLnJlbW92ZVJlZnJlc2hUb2tlbigpO1xuICB9XG5cbiAgLy8gLS0tIENsaWVudCBJRCBtYW5hZ2VtZW50IC0tLVxuXG4gIHNldENsaWVudElkKGNsaWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNsaWVudElkJC5uZXh0KGNsaWVudElkKTtcbiAgfVxuXG4gIGdldENsaWVudElkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50SWQkLnZhbHVlO1xuICB9XG5cbiAgLy8gLS0tIEhUVFAgTWV0aG9kcyAtLS1cblxuICBnZXQ8VD4ocGF0aDogc3RyaW5nLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KCdHRVQnLCBwYXRoLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgcG9zdDxUPihwYXRoOiBzdHJpbmcsIGJvZHk/OiB1bmtub3duLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KCdQT1NUJywgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBwdXQ8VD4ocGF0aDogc3RyaW5nLCBib2R5PzogdW5rbm93biwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPignUFVUJywgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG4gIH1cblxuICBwYXRjaDxUPihwYXRoOiBzdHJpbmcsIGJvZHk/OiB1bmtub3duLCBvcHRpb25zPzogUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KCdQQVRDSCcsIHBhdGgsIGJvZHksIG9wdGlvbnMpO1xuICB9XG5cbiAgZGVsZXRlPFQ+KHBhdGg6IHN0cmluZywgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPignREVMRVRFJywgcGF0aCwgdW5kZWZpbmVkLCBvcHRpb25zKTtcbiAgfVxuXG4gIHVwbG9hZDxUPihwYXRoOiBzdHJpbmcsIGZvcm1EYXRhOiBGb3JtRGF0YSwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxUPignUE9TVCcsIHBhdGgsIGZvcm1EYXRhLCB7IC4uLm9wdGlvbnMsIGhlYWRlcnM6IHsgLi4uKG9wdGlvbnM/LmhlYWRlcnMgfHwge30pIH0gfSk7XG4gIH1cblxuICBkb3dubG9hZChwYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8QmxvYj4oJ0dFVCcsIHBhdGgsIHVuZGVmaW5lZCwgeyAuLi5vcHRpb25zLCByZXNwb25zZVR5cGU6ICdibG9iJyB9KTtcbiAgfVxuXG4gIC8vIC0tLSBJbnRlcm5hbCAtLS1cblxuICBwcml2YXRlIHJlcXVlc3Q8VD4obWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgYm9keT86IHVua25vd24sIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVybH0ke3BhdGh9YDtcblxuICAgIC8vIFVzZSBwbGFpbiBvYmplY3RzIGZvciBoZWFkZXJzIGFuZCBwYXJhbXMgdG8gYXZvaWQgY3Jvc3MtYnVuZGxlIGNsYXNzIG1pc21hdGNoXG4gICAgLy8gKFNESydzIEh0dHBIZWFkZXJzL0h0dHBQYXJhbXMgY2xhc3MgIT09IGFwcCdzIEh0dHBIZWFkZXJzL0h0dHBQYXJhbXMgY2xhc3MgaW4gcHJvZCBidWlsZHMpXG4gICAgY29uc3QgaGVhZGVyTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAvLyBBdXRoIGhlYWRlclxuICAgIGlmICghb3B0aW9ucz8uc2tpcEF1dGgpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlblN0b3JhZ2UuZ2V0VG9rZW4oKTtcbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICBoZWFkZXJNYXBbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENsaWVudCBJRCBoZWFkZXJcbiAgICBpZiAoIW9wdGlvbnM/LnNraXBDbGllbnRJZCkge1xuICAgICAgY29uc3QgY2xpZW50SWQgPSB0aGlzLmNsaWVudElkJC52YWx1ZTtcbiAgICAgIGlmIChjbGllbnRJZCkge1xuICAgICAgICBoZWFkZXJNYXBbJ1gtQ2xpZW50LUlEJ10gPSBjbGllbnRJZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDdXN0b20gaGVhZGVyc1xuICAgIGlmIChvcHRpb25zPy5oZWFkZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zLmhlYWRlcnMpKSB7XG4gICAgICAgIGhlYWRlck1hcFtrZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUXVlcnkgcGFyYW1zIOKAlCBmbGF0dGVuIG5lc3RlZCBvYmplY3RzL2FycmF5cyBmb3IgYmFja2VuZCBjb21wYXRpYmlsaXR5XG4gICAgY29uc3QgcGFyYW1NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICBpZiAob3B0aW9ucz8ucGFyYW1zKSB7XG4gICAgICBjb25zdCBmbGF0UGFyYW1zID0gdGhpcy5mbGF0dGVuUGFyYW1zKG9wdGlvbnMucGFyYW1zKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZsYXRQYXJhbXMpKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgcGFyYW1NYXBba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZVR5cGUgPSAob3B0aW9ucz8ucmVzcG9uc2VUeXBlID8/ICdqc29uJykgYXMgJ2pzb24nO1xuXG4gICAgY29uc3QgaHR0cE9wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0geyBoZWFkZXJzOiBoZWFkZXJNYXAsIHBhcmFtczogcGFyYW1NYXAsIGJvZHksIHJlc3BvbnNlVHlwZSB9O1xuXG4gICAgcmV0dXJuICh0aGlzLmh0dHAucmVxdWVzdChtZXRob2QsIHVybCwgaHR0cE9wdGlvbnMpIGFzIE9ic2VydmFibGU8VD4pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDAxICYmICFvcHRpb25zPy5za2lwQXV0aCAmJiB0aGlzLmNvbmZpZy5hdXRvUmVmcmVzaCAhPT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGU0MDE8VD4obWV0aG9kLCBwYXRoLCBib2R5LCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLm1hcEVycm9yKGVycm9yKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZTQwMTxUPihtZXRob2Q6IHN0cmluZywgcGF0aDogc3RyaW5nLCBib2R5PzogdW5rbm93biwgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgaWYgKHRoaXMuaXNSZWZyZXNoaW5nKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnJlcXVlc3Q8VD4obWV0aG9kLCBwYXRoLCBib2R5LCB7IC4uLm9wdGlvbnMsIHNraXBBdXRoOiBmYWxzZSB9KSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHRoaXMudG9rZW5TdG9yYWdlLmdldFJlZnJlc2hUb2tlbigpO1xuXG4gICAgaWYgKCFyZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAoeyBzdGF0dXM6IDQwMSwgbWVzc2FnZTogJ05vIHJlZnJlc2ggdG9rZW4gYXZhaWxhYmxlJyB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfS9hdXRoL3JlZnJlc2gtdG9rZW5gLCBudWxsLCB7XG4gICAgICBwYXJhbXM6IHsgcmVmcmVzaFRva2VuIH1cbiAgICB9KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHRva2VuS2V5ID0gdGhpcy5jb25maWcudG9rZW5LZXkgPz8gJ2p3dCc7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hLZXkgPSB0aGlzLmNvbmZpZy5yZWZyZXNoVG9rZW5LZXkgPz8gJ3JlZnJlc2hUb2tlbic7XG4gICAgICAgIGNvbnN0IG5ld1Rva2VuID0gcmVzcG9uc2VbdG9rZW5LZXldID8/IHJlc3BvbnNlLmRhdGE/Llt0b2tlbktleV07XG4gICAgICAgIGNvbnN0IG5ld1JlZnJlc2ggPSByZXNwb25zZVtyZWZyZXNoS2V5XSA/PyByZXNwb25zZS5kYXRhPy5bcmVmcmVzaEtleV07XG5cbiAgICAgICAgaWYgKG5ld1Rva2VuKSB7XG4gICAgICAgICAgdGhpcy50b2tlblN0b3JhZ2Uuc2V0VG9rZW4obmV3VG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdSZWZyZXNoKSB7XG4gICAgICAgICAgdGhpcy50b2tlblN0b3JhZ2Uuc2V0UmVmcmVzaFRva2VuKG5ld1JlZnJlc2gpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobmV3VG9rZW4pO1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PFQ+KG1ldGhvZCwgcGF0aCwgYm9keSwgb3B0aW9ucyk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLmlzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsZWFyVG9rZW5zKCk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMubWFwRXJyb3IoZXJyKSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRmxhdHRlbnMgbmVzdGVkIHBhcmFtIG9iamVjdHMgaW50byBmbGF0IGtleS12YWx1ZSBwYWlycy5cbiAgICogLSBgeyBmaWx0ZXJzOiB7IHN0YXR1czogJ2FjdGl2ZScgfSB9YCDihpIgYHsgc3RhdHVzOiAnYWN0aXZlJyB9YFxuICAgKiAtIGB7IHBvcHVsYXRlOiBbJ2EnLCAnYiddIH1gIOKGkiBgeyBwb3B1bGF0ZTogJ2EsYicgfWBcbiAgICogLSBgeyBwYWdpbmF0aW9uOiB7IHBhZ2U6IDEsIHBhZ2VTaXplOiAyNSB9IH1gIOKGkiBgeyBwYWdlOiAxLCBwYWdlU2l6ZTogMjUgfWBcbiAgICovXG4gIHByaXZhdGUgZmxhdHRlblBhcmFtcyhwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgLy8gTWFwIFN0cmFwaSBwYWdpbmF0aW9uIHBhcmFtcyB0byBiYWNrZW5kIHBhcmFtc1xuICAgIC8vIE5vdGU6ICdzdGFydCcgKG9mZnNldCkgaXMgY29udmVydGVkIHRvIHBhZ2UgbnVtYmVyIHVzaW5nIGxpbWl0IGFzIHBhZ2Ugc2l6ZVxuICAgIGNvbnN0IHBhcmFtS2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ2xpbWl0JzogJ3BhZ2VTaXplJyxcbiAgICAgICdwYWdlJzogJ3BhZ2UnLCAncGFnZVNpemUnOiAncGFnZVNpemUnLFxuICAgIH07XG4gICAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIGNvbnRpbnVlO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWUuam9pbignLCcpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAvLyBGbGF0dGVuIG5lc3RlZCBvYmplY3RzOiBtZXJnZSB0aGVpciBrZXlzIGRpcmVjdGx5XG4gICAgICAgIGZvciAoY29uc3QgW25lc3RlZEtleSwgbmVzdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChuZXN0ZWRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5lc3RlZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5lc3RlZFZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShuZXN0ZWRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgLy8gVHdvIGxldmVscyBkZWVwOiBtYXAgU3RyYXBpIG9wZXJhdG9ycyB0byBiYWNrZW5kIHN1ZmZpeCBvcGVyYXRvcnNcbiAgICAgICAgICAgICAgLy8gZS5nLiwgeyB1bml0OiB7ICRlcTogNSB9IH0g4oaSIHVuaXQ9NSwgeyB1bml0OiB7ICRub3ROdWxsOiB0cnVlIH0gfSDihpIgdW5pdF9pc251bGw9ZmFsc2VcbiAgICAgICAgICAgICAgY29uc3Qgc3RyYXBpVG9CYWNrZW5kOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgICAgICckZXEnOiAnJywgJyRuZSc6ICdfbmUnLCAnJGNvbnRhaW5zJzogJ19jb250YWlucycsXG4gICAgICAgICAgICAgICAgJyRzdGFydHNXaXRoJzogJ19zdGFydHNXaXRoJywgJyRlbmRzV2l0aCc6ICdfZW5kc1dpdGgnLFxuICAgICAgICAgICAgICAgICckZ3QnOiAnX2d0JywgJyRndGUnOiAnX2d0ZScsICckbHQnOiAnX2x0JywgJyRsdGUnOiAnX2x0ZScsXG4gICAgICAgICAgICAgICAgJyRpbic6ICdfaW4nLCAnJG5vdEluJzogJ19ub3RJbicsICckbnVsbCc6ICdfaXNudWxsJyxcbiAgICAgICAgICAgICAgICAnJG5vdE51bGwnOiAnX2lzbnVsbCcsICckZXFPck51bGwnOiAnX2VxT3JOdWxsJyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBbZGVlcEtleSwgZGVlcFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhuZXN0ZWRWYWx1ZSBhcyBhbnkpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRlZXBWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGRlZXBWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgaWYgKGRlZXBLZXkuc3RhcnRzV2l0aCgnJCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN0cmFwaSBvcGVyYXRvcjogeyAkZXE6IDUgfSDihpIgZmllbGQ9NSwgeyAkY29udGFpbnM6ICd4JyB9IOKGkiBmaWVsZF9jb250YWlucz14XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IHN0cmFwaVRvQmFja2VuZFtkZWVwS2V5XSA/PyAnXycgKyBkZWVwS2V5LnNsaWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5hbFZhbHVlID0gZGVlcEtleSA9PT0gJyRub3ROdWxsJyA/ICFkZWVwVmFsdWUgOiBkZWVwVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtgJHtuZXN0ZWRLZXl9JHtzdWZmaXh9YF0gPSBmaW5hbFZhbHVlO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVsYXRpb24gZmllbGQ6IHsgaWQ6IDUgfSDihpIgZmllbGQuaWQ9NVxuICAgICAgICAgICAgICAgICAgICByZXN1bHRbYCR7bmVzdGVkS2V5fS4ke2RlZXBLZXl9YF0gPSBkZWVwVmFsdWU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zdCBtYXBwZWRLZXkgPSBwYXJhbUtleU1hcFtuZXN0ZWRLZXldIHx8IG5lc3RlZEtleTtcbiAgICAgICAgICAgICAgcmVzdWx0W21hcHBlZEtleV0gPSBBcnJheS5pc0FycmF5KG5lc3RlZFZhbHVlKSA/IG5lc3RlZFZhbHVlLmpvaW4oJywnKSA6IG5lc3RlZFZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbWFwcGVkS2V5ID0gcGFyYW1LZXlNYXBba2V5XSB8fCBrZXk7XG4gICAgICAgIHJlc3VsdFttYXBwZWRLZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIENvbnZlcnQgU3RyYXBpIG9mZnNldC1iYXNlZCAnc3RhcnQnIHRvIHBhZ2UgbnVtYmVyXG4gICAgLy8gT25seSBjb252ZXJ0IGlmICdzdGFydCcgaXMgYSBwdXJlIG51bWJlciAoU3RyYXBpIG9mZnNldCksIE5PVCBhbiBJU08gZGF0ZSBzdHJpbmdcbiAgICBpZiAoJ3N0YXJ0JyBpbiByZXN1bHQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0VmFsID0gcmVzdWx0WydzdGFydCddO1xuICAgICAgY29uc3QgaXNOdW1lcmljT2Zmc2V0ID0gdHlwZW9mIHN0YXJ0VmFsID09PSAnbnVtYmVyJyB8fCAvXlxcZCskLy50ZXN0KFN0cmluZyhzdGFydFZhbCkpO1xuICAgICAgaWYgKGlzTnVtZXJpY09mZnNldCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IE51bWJlcihzdGFydFZhbCkgfHwgMDtcbiAgICAgICAgaWYgKCdwYWdlU2l6ZScgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgY29uc3QgcGFnZVNpemUgPSBOdW1iZXIocmVzdWx0WydwYWdlU2l6ZSddKSB8fCAyNTtcbiAgICAgICAgICByZXN1bHRbJ3BhZ2UnXSA9IE1hdGguZmxvb3Ioc3RhcnQgLyBwYWdlU2l6ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0WydwYWdlJ10gPSBzdGFydDtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgcmVzdWx0WydzdGFydCddO1xuICAgICAgfVxuICAgICAgLy8gSWYgc3RhcnQgaXMgYW4gSVNPIGRhdGUgc3RyaW5nIChlLmcuIFwiMjAyNi0wMS0wMVQwMDowMDowMFwiKSwgcHJlc2VydmUgaXQgYXMtaXNcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgbWFwRXJyb3IoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogVGdtU2RrRXJyb3Ige1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgIG1lc3NhZ2U6IGVycm9yLmVycm9yPy5tZXNzYWdlID8/IGVycm9yLm1lc3NhZ2UgPz8gJ1Vua25vd24gZXJyb3InLFxuICAgICAgZXJyb3I6IGVycm9yLmVycm9yLFxuICAgICAgb3JpZ2luYWxFcnJvcjogZXJyb3IsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRnbVNka0Vycm9yIHtcbiAgc3RhdHVzOiBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZXJyb3I/OiBhbnk7XG4gIG9yaWdpbmFsRXJyb3I/OiBIdHRwRXJyb3JSZXNwb25zZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { Subject, BehaviorSubject, share, takeUntil } from 'rxjs';
|
|
3
|
+
import { Client } from '@stomp/stompjs';
|
|
4
|
+
import * as SockJSModule from 'sockjs-client';
|
|
5
|
+
import { TGM_SDK_CONFIG } from '../tgm-sdk.config';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./http-client.service";
|
|
8
|
+
const SockJS = SockJSModule.default || SockJSModule;
|
|
9
|
+
export class WebSocketService {
|
|
10
|
+
config;
|
|
11
|
+
httpClient;
|
|
12
|
+
client = null;
|
|
13
|
+
subscriptions = new Map();
|
|
14
|
+
messageSubjects = new Map();
|
|
15
|
+
destroy$ = new Subject();
|
|
16
|
+
reconnectAttempts = 0;
|
|
17
|
+
maxReconnectAttempts = 10;
|
|
18
|
+
baseReconnectDelay = 1000;
|
|
19
|
+
connectionState$ = new BehaviorSubject('DISCONNECTED');
|
|
20
|
+
constructor(config, httpClient) {
|
|
21
|
+
this.config = config;
|
|
22
|
+
this.httpClient = httpClient;
|
|
23
|
+
}
|
|
24
|
+
connect(endpoint) {
|
|
25
|
+
if (this.client?.connected)
|
|
26
|
+
return;
|
|
27
|
+
const wsEndpoint = endpoint ?? this.config.wsEndpoint ?? '/ws';
|
|
28
|
+
const baseUrl = this.config.baseUrl.replace(/\/+$/, '');
|
|
29
|
+
const url = `${baseUrl}${wsEndpoint}`;
|
|
30
|
+
this.connectionState$.next('CONNECTING');
|
|
31
|
+
this.client = new Client({
|
|
32
|
+
webSocketFactory: () => new SockJS(url),
|
|
33
|
+
connectHeaders: this.getConnectHeaders(),
|
|
34
|
+
reconnectDelay: 0, // We handle reconnect manually
|
|
35
|
+
heartbeatIncoming: 10000,
|
|
36
|
+
heartbeatOutgoing: 10000,
|
|
37
|
+
onConnect: () => {
|
|
38
|
+
this.connectionState$.next('CONNECTED');
|
|
39
|
+
this.reconnectAttempts = 0;
|
|
40
|
+
this.resubscribeAll();
|
|
41
|
+
},
|
|
42
|
+
onStompError: (frame) => {
|
|
43
|
+
this.connectionState$.next('ERROR');
|
|
44
|
+
console.error('STOMP error:', frame.headers['message']);
|
|
45
|
+
this.scheduleReconnect(endpoint);
|
|
46
|
+
},
|
|
47
|
+
onWebSocketClose: () => {
|
|
48
|
+
if (this.connectionState$.value !== 'DISCONNECTED') {
|
|
49
|
+
this.connectionState$.next('ERROR');
|
|
50
|
+
this.scheduleReconnect(endpoint);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
this.client.activate();
|
|
55
|
+
}
|
|
56
|
+
disconnect() {
|
|
57
|
+
this.connectionState$.next('DISCONNECTED');
|
|
58
|
+
this.subscriptions.forEach((sub) => {
|
|
59
|
+
try {
|
|
60
|
+
sub.unsubscribe();
|
|
61
|
+
}
|
|
62
|
+
catch (_) { }
|
|
63
|
+
});
|
|
64
|
+
this.subscriptions.clear();
|
|
65
|
+
if (this.client) {
|
|
66
|
+
this.client.deactivate();
|
|
67
|
+
this.client = null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
subscribe(destination) {
|
|
71
|
+
const prefixed = this.getTenantPrefixedDestination(destination);
|
|
72
|
+
if (!this.messageSubjects.has(prefixed)) {
|
|
73
|
+
this.messageSubjects.set(prefixed, new Subject());
|
|
74
|
+
}
|
|
75
|
+
// Subscribe when connected
|
|
76
|
+
if (this.client?.connected && !this.subscriptions.has(prefixed)) {
|
|
77
|
+
this.doSubscribe(prefixed);
|
|
78
|
+
}
|
|
79
|
+
return this.messageSubjects.get(prefixed).asObservable().pipe(takeUntil(this.destroy$), share());
|
|
80
|
+
}
|
|
81
|
+
unsubscribe(destination) {
|
|
82
|
+
const prefixed = this.getTenantPrefixedDestination(destination);
|
|
83
|
+
const sub = this.subscriptions.get(prefixed);
|
|
84
|
+
if (sub) {
|
|
85
|
+
try {
|
|
86
|
+
sub.unsubscribe();
|
|
87
|
+
}
|
|
88
|
+
catch (_) { }
|
|
89
|
+
this.subscriptions.delete(prefixed);
|
|
90
|
+
}
|
|
91
|
+
this.messageSubjects.get(prefixed)?.complete();
|
|
92
|
+
this.messageSubjects.delete(prefixed);
|
|
93
|
+
}
|
|
94
|
+
send(destination, body, headers) {
|
|
95
|
+
if (!this.client?.connected) {
|
|
96
|
+
console.warn('WebSocket not connected, cannot send to', destination);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
this.client.publish({
|
|
100
|
+
destination,
|
|
101
|
+
body: typeof body === 'string' ? body : JSON.stringify(body),
|
|
102
|
+
headers,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
ngOnDestroy() {
|
|
106
|
+
this.destroy$.next();
|
|
107
|
+
this.destroy$.complete();
|
|
108
|
+
this.disconnect();
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Prefix /topic/ destinations with the client ID for tenant isolation.
|
|
112
|
+
* Matches server-side WebSocketService.getTenantPrefixedDestination().
|
|
113
|
+
* /user/queue/ destinations are user-scoped and not prefixed.
|
|
114
|
+
*/
|
|
115
|
+
getTenantPrefixedDestination(destination) {
|
|
116
|
+
const clientId = this.httpClient.getClientId();
|
|
117
|
+
if (clientId) {
|
|
118
|
+
if (destination.startsWith('/topic/')) {
|
|
119
|
+
return `/topic/${clientId}${destination.substring(6)}`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return destination;
|
|
123
|
+
}
|
|
124
|
+
getConnectHeaders() {
|
|
125
|
+
const headers = {};
|
|
126
|
+
const token = this.httpClient.getToken();
|
|
127
|
+
if (token) {
|
|
128
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
129
|
+
headers['token'] = token;
|
|
130
|
+
}
|
|
131
|
+
const clientId = this.httpClient.getClientId();
|
|
132
|
+
if (clientId) {
|
|
133
|
+
headers['X-Client-ID'] = clientId;
|
|
134
|
+
}
|
|
135
|
+
return headers;
|
|
136
|
+
}
|
|
137
|
+
doSubscribe(destination) {
|
|
138
|
+
if (!this.client?.connected)
|
|
139
|
+
return;
|
|
140
|
+
const sub = this.client.subscribe(destination, (message) => {
|
|
141
|
+
const subject = this.messageSubjects.get(destination);
|
|
142
|
+
if (subject) {
|
|
143
|
+
try {
|
|
144
|
+
subject.next(JSON.parse(message.body));
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
subject.next(message.body);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
this.subscriptions.set(destination, sub);
|
|
152
|
+
}
|
|
153
|
+
resubscribeAll() {
|
|
154
|
+
const destinations = Array.from(this.messageSubjects.keys());
|
|
155
|
+
this.subscriptions.clear();
|
|
156
|
+
for (const dest of destinations) {
|
|
157
|
+
this.doSubscribe(dest);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
scheduleReconnect(endpoint) {
|
|
161
|
+
if (this.connectionState$.value === 'DISCONNECTED')
|
|
162
|
+
return;
|
|
163
|
+
if (this.reconnectAttempts >= this.maxReconnectAttempts) {
|
|
164
|
+
console.error('Max WebSocket reconnect attempts reached');
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const delay = Math.min(this.baseReconnectDelay * Math.pow(2, this.reconnectAttempts), 30000);
|
|
168
|
+
this.reconnectAttempts++;
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
if (this.connectionState$.value !== 'DISCONNECTED') {
|
|
171
|
+
this.connect(endpoint);
|
|
172
|
+
}
|
|
173
|
+
}, delay);
|
|
174
|
+
}
|
|
175
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebSocketService, deps: [{ token: TGM_SDK_CONFIG }, { token: i1.TgmHttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
176
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebSocketService, providedIn: 'root' });
|
|
177
|
+
}
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WebSocketService, decorators: [{
|
|
179
|
+
type: Injectable,
|
|
180
|
+
args: [{ providedIn: 'root' }]
|
|
181
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
182
|
+
type: Inject,
|
|
183
|
+
args: [TGM_SDK_CONFIG]
|
|
184
|
+
}] }, { type: i1.TgmHttpClient }] });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvd2Vic29ja2V0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFjLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RixPQUFPLEVBQUUsTUFBTSxFQUErQixNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sS0FBSyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQWdCLE1BQU0sbUJBQW1CLENBQUM7OztBQURqRSxNQUFNLE1BQU0sR0FBSSxZQUFvQixDQUFDLE9BQU8sSUFBSSxZQUFZLENBQUM7QUFPN0QsTUFBTSxPQUFPLGdCQUFnQjtJQVlPO0lBQ3hCO0lBWkYsTUFBTSxHQUFrQixJQUFJLENBQUM7SUFDN0IsYUFBYSxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO0lBQ3JELGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUNsRCxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUMvQixpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDdEIsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0lBQzFCLGtCQUFrQixHQUFHLElBQUksQ0FBQztJQUVsQyxnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBa0IsY0FBYyxDQUFDLENBQUM7SUFFeEUsWUFDa0MsTUFBb0IsRUFDNUMsVUFBeUI7UUFERCxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQzVDLGVBQVUsR0FBVixVQUFVLENBQWU7SUFDaEMsQ0FBQztJQUVKLE9BQU8sQ0FBQyxRQUFpQjtRQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUztZQUFFLE9B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Q0FBQyxLQUFLLEtBQUssY0FBYztZQUFFLE9BQU87UUFDM0QsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDeEQsT0FBTyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzFELE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUM3RCxLQUFLLENBQ04sQ0FBQztRQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7d0dBbExVLGdCQUFnQixrQkFZakIsY0FBYzs0R0FaYixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYTdCLE1BQU07MkJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBCZWhhdmlvclN1YmplY3QsIHNoYXJlLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xpZW50LCBJTWVzc2FnZSwgU3RvbXBTdWJzY3JpcHRpb24gfSBmcm9tICdAc3RvbXAvc3RvbXBqcyc7XG5pbXBvcnQgKiBhcyBTb2NrSlNNb2R1bGUgZnJvbSAnc29ja2pzLWNsaWVudCc7XG5jb25zdCBTb2NrSlMgPSAoU29ja0pTTW9kdWxlIGFzIGFueSkuZGVmYXVsdCB8fCBTb2NrSlNNb2R1bGU7XG5pbXBvcnQgeyBUR01fU0RLX0NPTkZJRywgVGdtU2RrQ29uZmlnIH0gZnJvbSAnLi4vdGdtLXNkay5jb25maWcnO1xuaW1wb3J0IHsgVGdtSHR0cENsaWVudCB9IGZyb20gJy4vaHR0cC1jbGllbnQuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIENvbm5lY3Rpb25TdGF0ZSA9ICdESVNDT05ORUNURUQnIHwgJ0NPTk5FQ1RJTkcnIHwgJ0NPTk5FQ1RFRCcgfCAnRVJST1InO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGNsaWVudDogQ2xpZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBTdG9tcFN1YnNjcmlwdGlvbj4oKTtcbiAgcHJpdmF0ZSBtZXNzYWdlU3ViamVjdHMgPSBuZXcgTWFwPHN0cmluZywgU3ViamVjdDxhbnk+PigpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIHByaXZhdGUgbWF4UmVjb25uZWN0QXR0ZW1wdHMgPSAxMDtcbiAgcHJpdmF0ZSBiYXNlUmVjb25uZWN0RGVsYXkgPSAxMDAwO1xuXG4gIGNvbm5lY3Rpb25TdGF0ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbm5lY3Rpb25TdGF0ZT4oJ0RJU0NPTk5FQ1RFRCcpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVEdNX1NES19DT05GSUcpIHByaXZhdGUgY29uZmlnOiBUZ21TZGtDb25maWcsXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBUZ21IdHRwQ2xpZW50XG4gICkge31cblxuICBjb25uZWN0KGVuZHBvaW50Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2xpZW50Py5jb25uZWN0ZWQpIHJldHVybjtcblxuICAgIGNvbnN0IHdzRW5kcG9pbnQgPSBlbmRwb2ludCA/PyB0aGlzLmNvbmZpZy53c0VuZHBvaW50ID8/ICcvd3MnO1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZy5iYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9JHt3c0VuZHBvaW50fWA7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZSQubmV4dCgnQ09OTkVDVElORycpO1xuXG4gICAgdGhpcy5jbGllbnQgPSBuZXcgQ2xpZW50KHtcbiAgICAgIHdlYlNvY2tldEZhY3Rvcnk6ICgpID0+IG5ldyBTb2NrSlModXJsKSBhcyBhbnksXG4gICAgICBjb25uZWN0SGVhZGVyczogdGhpcy5nZXRDb25uZWN0SGVhZGVycygpLFxuICAgICAgcmVjb25uZWN0RGVsYXk6IDAsIC8vIFdlIGhhbmRsZSByZWNvbm5lY3QgbWFudWFsbHlcbiAgICAgIGhlYXJ0YmVhdEluY29taW5nOiAxMDAwMCxcbiAgICAgIGhlYXJ0YmVhdE91dGdvaW5nOiAxMDAwMCxcbiAgICAgIG9uQ29ubmVjdDogKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZSQubmV4dCgnQ09OTkVDVEVEJyk7XG4gICAgICAgIHRoaXMucmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICB0aGlzLnJlc3Vic2NyaWJlQWxsKCk7XG4gICAgICB9LFxuICAgICAgb25TdG9tcEVycm9yOiAoZnJhbWUpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uU3RhdGUkLm5leHQoJ0VSUk9SJyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NUT01QIGVycm9yOicsIGZyYW1lLmhlYWRlcnNbJ21lc3NhZ2UnXSk7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVSZWNvbm5lY3QoZW5kcG9pbnQpO1xuICAgICAgfSxcbiAgICAgIG9uV2ViU29ja2V0Q2xvc2U6ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlJC52YWx1ZSAhPT0gJ0RJU0NPTk5FQ1RFRCcpIHtcbiAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25TdGF0ZSQubmV4dCgnRVJST1InKTtcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlUmVjb25uZWN0KGVuZHBvaW50KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2xpZW50LmFjdGl2YXRlKCk7XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuY29ubmVjdGlvblN0YXRlJC5uZXh0KCdESVNDT05ORUNURUQnKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiB7XG4gICAgICB0cnkgeyBzdWIudW5zdWJzY3JpYmUoKTsgfSBjYXRjaCAoXykge31cbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuY2xlYXIoKTtcbiAgICBpZiAodGhpcy5jbGllbnQpIHtcbiAgICAgIHRoaXMuY2xpZW50LmRlYWN0aXZhdGUoKTtcbiAgICAgIHRoaXMuY2xpZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBzdWJzY3JpYmU8VCA9IGFueT4oZGVzdGluYXRpb246IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5nZXRUZW5hbnRQcmVmaXhlZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKTtcbiAgICBpZiAoIXRoaXMubWVzc2FnZVN1YmplY3RzLmhhcyhwcmVmaXhlZCkpIHtcbiAgICAgIHRoaXMubWVzc2FnZVN1YmplY3RzLnNldChwcmVmaXhlZCwgbmV3IFN1YmplY3Q8VD4oKSk7XG4gICAgfVxuXG4gICAgLy8gU3Vic2NyaWJlIHdoZW4gY29ubmVjdGVkXG4gICAgaWYgKHRoaXMuY2xpZW50Py5jb25uZWN0ZWQgJiYgIXRoaXMuc3Vic2NyaXB0aW9ucy5oYXMocHJlZml4ZWQpKSB7XG4gICAgICB0aGlzLmRvU3Vic2NyaWJlKHByZWZpeGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlU3ViamVjdHMuZ2V0KHByZWZpeGVkKSEuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIHNoYXJlKClcbiAgICApO1xuICB9XG5cbiAgdW5zdWJzY3JpYmUoZGVzdGluYXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByZWZpeGVkID0gdGhpcy5nZXRUZW5hbnRQcmVmaXhlZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKTtcbiAgICBjb25zdCBzdWIgPSB0aGlzLnN1YnNjcmlwdGlvbnMuZ2V0KHByZWZpeGVkKTtcbiAgICBpZiAoc3ViKSB7XG4gICAgICB0cnkgeyBzdWIudW5zdWJzY3JpYmUoKTsgfSBjYXRjaCAoXykge31cbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5kZWxldGUocHJlZml4ZWQpO1xuICAgIH1cbiAgICB0aGlzLm1lc3NhZ2VTdWJqZWN0cy5nZXQocHJlZml4ZWQpPy5jb21wbGV0ZSgpO1xuICAgIHRoaXMubWVzc2FnZVN1YmplY3RzLmRlbGV0ZShwcmVmaXhlZCk7XG4gIH1cblxuICBzZW5kKGRlc3RpbmF0aW9uOiBzdHJpbmcsIGJvZHk6IGFueSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2xpZW50Py5jb25uZWN0ZWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignV2ViU29ja2V0IG5vdCBjb25uZWN0ZWQsIGNhbm5vdCBzZW5kIHRvJywgZGVzdGluYXRpb24pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsaWVudC5wdWJsaXNoKHtcbiAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgYm9keTogdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnID8gYm9keSA6IEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmVmaXggL3RvcGljLyBkZXN0aW5hdGlvbnMgd2l0aCB0aGUgY2xpZW50IElEIGZvciB0ZW5hbnQgaXNvbGF0aW9uLlxuICAgKiBNYXRjaGVzIHNlcnZlci1zaWRlIFdlYlNvY2tldFNlcnZpY2UuZ2V0VGVuYW50UHJlZml4ZWREZXN0aW5hdGlvbigpLlxuICAgKiAvdXNlci9xdWV1ZS8gZGVzdGluYXRpb25zIGFyZSB1c2VyLXNjb3BlZCBhbmQgbm90IHByZWZpeGVkLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRUZW5hbnRQcmVmaXhlZERlc3RpbmF0aW9uKGRlc3RpbmF0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNsaWVudElkID0gdGhpcy5odHRwQ2xpZW50LmdldENsaWVudElkKCk7XG4gICAgaWYgKGNsaWVudElkKSB7XG4gICAgICBpZiAoZGVzdGluYXRpb24uc3RhcnRzV2l0aCgnL3RvcGljLycpKSB7XG4gICAgICAgIHJldHVybiBgL3RvcGljLyR7Y2xpZW50SWR9JHtkZXN0aW5hdGlvbi5zdWJzdHJpbmcoNil9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRlc3RpbmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb25uZWN0SGVhZGVycygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmh0dHBDbGllbnQuZ2V0VG9rZW4oKTtcbiAgICBpZiAodG9rZW4pIHtcbiAgICAgIGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgICAgaGVhZGVyc1sndG9rZW4nXSA9IHRva2VuO1xuICAgIH1cbiAgICBjb25zdCBjbGllbnRJZCA9IHRoaXMuaHR0cENsaWVudC5nZXRDbGllbnRJZCgpO1xuICAgIGlmIChjbGllbnRJZCkge1xuICAgICAgaGVhZGVyc1snWC1DbGllbnQtSUQnXSA9IGNsaWVudElkO1xuICAgIH1cbiAgICByZXR1cm4gaGVhZGVycztcbiAgfVxuXG4gIHByaXZhdGUgZG9TdWJzY3JpYmUoZGVzdGluYXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jbGllbnQ/LmNvbm5lY3RlZCkgcmV0dXJuO1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuY2xpZW50LnN1YnNjcmliZShkZXN0aW5hdGlvbiwgKG1lc3NhZ2U6IElNZXNzYWdlKSA9PiB7XG4gICAgICBjb25zdCBzdWJqZWN0ID0gdGhpcy5tZXNzYWdlU3ViamVjdHMuZ2V0KGRlc3RpbmF0aW9uKTtcbiAgICAgIGlmIChzdWJqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3ViamVjdC5uZXh0KEpTT04ucGFyc2UobWVzc2FnZS5ib2R5KSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHN1YmplY3QubmV4dChtZXNzYWdlLmJvZHkgYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5zZXQoZGVzdGluYXRpb24sIHN1Yik7XG4gIH1cblxuICBwcml2YXRlIHJlc3Vic2NyaWJlQWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGRlc3RpbmF0aW9ucyA9IEFycmF5LmZyb20odGhpcy5tZXNzYWdlU3ViamVjdHMua2V5cygpKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuY2xlYXIoKTtcbiAgICBmb3IgKGNvbnN0IGRlc3Qgb2YgZGVzdGluYXRpb25zKSB7XG4gICAgICB0aGlzLmRvU3Vic2NyaWJlKGRlc3QpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVSZWNvbm5lY3QoZW5kcG9pbnQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25uZWN0aW9uU3RhdGUkLnZhbHVlID09PSAnRElTQ09OTkVDVEVEJykgcmV0dXJuO1xuICAgIGlmICh0aGlzLnJlY29ubmVjdEF0dGVtcHRzID49IHRoaXMubWF4UmVjb25uZWN0QXR0ZW1wdHMpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01heCBXZWJTb2NrZXQgcmVjb25uZWN0IGF0dGVtcHRzIHJlYWNoZWQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZGVsYXkgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMuYmFzZVJlY29ubmVjdERlbGF5ICogTWF0aC5wb3coMiwgdGhpcy5yZWNvbm5lY3RBdHRlbXB0cyksXG4gICAgICAzMDAwMFxuICAgICk7XG4gICAgdGhpcy5yZWNvbm5lY3RBdHRlbXB0cysrO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29ubmVjdGlvblN0YXRlJC52YWx1ZSAhPT0gJ0RJU0NPTk5FQ1RFRCcpIHtcbiAgICAgICAgdGhpcy5jb25uZWN0KGVuZHBvaW50KTtcbiAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvYWRtaW4vYXVkaXQubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEF1ZGl0TG9nUmVzcG9uc2Uge1xuICBpZDogbnVtYmVyO1xuICBhY3Rpb246IHN0cmluZztcbiAgZW50aXR5VHlwZTogc3RyaW5nO1xuICBlbnRpdHlJZD86IG51bWJlcjtcbiAgZW50aXR5TmFtZT86IHN0cmluZztcbiAgdXNlcklkPzogbnVtYmVyO1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgdXNlckVtYWlsPzogc3RyaW5nO1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbiAgb2xkVmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbmV3VmFsdWVzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcbiAgZHVyYXRpb25Ncz86IG51bWJlcjtcbiAgY3JlYXRlZEF0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0TG9nRmlsdGVyUGFyYW1zIHtcbiAgYWN0aW9uPzogc3RyaW5nO1xuICBlbnRpdHlUeXBlPzogc3RyaW5nO1xuICBlbnRpdHlJZD86IG51bWJlcjtcbiAgdXNlcklkPzogbnVtYmVyO1xuICB1c2VybmFtZT86IHN0cmluZztcbiAgaXBBZGRyZXNzPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIHN0YXJ0RGF0ZT86IHN0cmluZztcbiAgZW5kRGF0ZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdWRpdExvZ1N0YXRzUmVzcG9uc2Uge1xuICB0b3RhbExvZ3M6IG51bWJlcjtcbiAgdG90YWxBY3Rpb25zOiBudW1iZXI7XG4gIHRvcEFjdGlvbnM/OiB7IGFjdGlvbjogc3RyaW5nOyBjb3VudDogbnVtYmVyIH1bXTtcbiAgdG9wVXNlcnM/OiB7IHVzZXJJZDogbnVtYmVyOyB1c2VybmFtZTogc3RyaW5nOyBjb3VudDogbnVtYmVyIH1bXTtcbiAgdG9wRW50aXR5VHlwZXM/OiB7IGVudGl0eVR5cGU6IHN0cmluZzsgY291bnQ6IG51bWJlciB9W107XG4gIGxvZ3NCeURheT86IHsgZGF0ZTogc3RyaW5nOyBjb3VudDogbnVtYmVyIH1bXTtcbiAgZmFpbGVkQWN0aW9ucz86IG51bWJlcjtcbiAgc3VjY2Vzc2Z1bEFjdGlvbnM/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRMb2dFeHBvcnRSZXF1ZXN0IHtcbiAgZm9ybWF0PzogJ0NTVicgfCAnSlNPTicgfCAnUERGJztcbiAgZmlsdGVycz86IEF1ZGl0TG9nRmlsdGVyUGFyYW1zO1xuICBpbmNsdWRlRGV0YWlscz86IGJvb2xlYW47XG4gIGRhdGVSYW5nZT86IHtcbiAgICBzdGFydERhdGU6IHN0cmluZztcbiAgICBlbmREYXRlOiBzdHJpbmc7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRMb2dFeHBvcnRSZXNwb25zZSB7XG4gIGlkOiBudW1iZXI7XG4gIGZpbGVOYW1lOiBzdHJpbmc7XG4gIGZvcm1hdDogc3RyaW5nO1xuICBmaWxlU2l6ZT86IG51bWJlcjtcbiAgZmlsZVNpemVGb3JtYXR0ZWQ/OiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBkb3dubG9hZFVybD86IHN0cmluZztcbiAgZXhwaXJlc0F0Pzogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG59XG4iXX0=
|