@burdenoff/microfe-assethandler 2026.703.12 → 2026.707.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -152,43 +152,50 @@ var m = t(null), h = l`
152
152
  relatedPO
153
153
  paidAt
154
154
  }
155
- securityEvents {
156
- id
157
- eventType
158
- severity
159
- title
160
- description
161
- source
162
- userId
163
- ipAddress
164
- occurredAt
165
- resolved
155
+ securityEvents: getVaultSecurityEvents {
156
+ items {
157
+ id
158
+ eventType
159
+ severity
160
+ title: message
161
+ description
162
+ source: resourceType
163
+ userId
164
+ ipAddress
165
+ occurredAt: timestamp
166
+ resolved: reviewed
167
+ }
166
168
  }
167
- complianceFrameworks {
168
- id
169
- name
170
- version
171
- status
172
- score
173
- totalControls
174
- passedControls
175
- failedControls
176
- lastAssessment
177
- nextAssessment
178
- lastAssessedAt
169
+ complianceFrameworks: securityComplianceFrameworks(
170
+ filter: { sourceProduct: "assethandler" }
171
+ ) {
172
+ items {
173
+ id
174
+ name
175
+ version
176
+ status
177
+ score
178
+ totalControls
179
+ passedControls
180
+ failedControls
181
+ lastAssessment
182
+ nextAssessment
183
+ lastAssessedAt
184
+ }
179
185
  }
180
- # Alias: field renamed to assetSecurityPolicies (Hive federation collision fix)
181
- securityPolicies: assetSecurityPolicies {
182
- id
183
- name
184
- description
185
- category
186
- status
187
- version
188
- effectiveDate
189
- reviewDate
190
- owner
191
- applicableTo
186
+ securityPolicies: securityGovernancePolicies(filter: { sourceProduct: "assethandler" }) {
187
+ items {
188
+ id
189
+ name
190
+ description
191
+ category
192
+ status
193
+ version
194
+ effectiveDate
195
+ reviewDate
196
+ owner
197
+ applicableTo
198
+ }
192
199
  }
193
200
  }
194
201
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetHandlerProvider.js","names":[],"sources":["../../../src/assethandler/providers/AssetHandlerProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo, useEffect } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\nimport { ApolloClient, HttpLink, InMemoryCache, gql } from '@apollo/client';\nimport { ApolloProvider, useQuery } from '@apollo/client/react';\nimport type { AssetHandlerRootProps } from '../types';\nimport type { AssetHandlerBootstrapPayload } from '../store/assethandlerStore';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\ntype AssetHandlerContextValue = AssetHandlerRootProps;\n\nconst AssetHandlerContext = createContext<AssetHandlerContextValue | null>(null);\n\nconst ASSETHANDLER_BOOTSTRAP_QUERY = gql`\n query AssetHandlerBootstrap {\n dashboardOverview {\n totalAssets\n openIncidents\n openWorkOrders\n totalTransactions\n }\n assets {\n id\n assetNumber\n name\n description\n category\n status\n condition\n serialNumber\n locationName\n assignedTo\n tags\n createdAt\n updatedAt\n purchaseValue\n purchaseDate\n usefulLifeMonths\n salvageValue\n depreciationMethod\n department\n warrantyExpiry\n supplier\n disposalDate\n disposalMethod\n disposalNotes\n currentValue\n accumulatedDepreciation\n totalCostOfOwnership\n }\n incidents {\n id\n title\n description\n category\n priority\n status\n assignedTo\n reportedBy\n reportedAt\n resolvedAt\n resolution\n slaBreached\n }\n workOrders {\n id\n title\n description\n type\n status\n priority\n assetId\n assignedTo\n createdAt\n updatedAt\n completedAt\n }\n maintenanceRecords {\n id\n assetId\n title\n description\n type\n status\n priority\n scheduledAt\n completedAt\n estimatedCost\n actualCost\n checklist\n createdAt\n updatedAt\n }\n transactions {\n id\n type\n status\n amount\n currency\n category\n description\n vendor\n department\n occurredAt\n }\n changeRequests {\n id\n title\n description\n type\n status\n risk\n requestedBy\n assignedTo\n affectedAssets\n scheduledStart\n scheduledEnd\n approvals\n createdAt\n updatedAt\n }\n problems {\n id\n title\n description\n status\n priority\n category\n assignedTo\n relatedIncidents\n rootCause\n workaround\n resolution\n createdAt\n updatedAt\n }\n budgets {\n id\n name\n category\n allocated\n spent\n remaining\n period\n department\n status\n }\n invoices {\n id\n number\n vendor\n amount\n currency\n issueDate\n dueDate\n status\n items\n relatedPO\n paidAt\n }\n securityEvents {\n id\n eventType\n severity\n title\n description\n source\n userId\n ipAddress\n occurredAt\n resolved\n }\n complianceFrameworks {\n id\n name\n version\n status\n score\n totalControls\n passedControls\n failedControls\n lastAssessment\n nextAssessment\n lastAssessedAt\n }\n # Alias: field renamed to assetSecurityPolicies (Hive federation collision fix)\n securityPolicies: assetSecurityPolicies {\n id\n name\n description\n category\n status\n version\n effectiveDate\n reviewDate\n owner\n applicableTo\n }\n }\n`;\n\nfunction AssetHandlerBootstrapHydrator() {\n const hydrateFromBootstrap = useAssetHandlerStore((s) => s.hydrateFromBootstrap);\n const setBootstrapRefetch = useAssetHandlerStore((s) => s.setBootstrapRefetch);\n const { data, refetch } = useQuery<AssetHandlerBootstrapPayload>(ASSETHANDLER_BOOTSTRAP_QUERY, {\n fetchPolicy: 'cache-and-network',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (data) {\n hydrateFromBootstrap(data);\n }\n }, [data, hydrateFromBootstrap]);\n\n useEffect(() => {\n setBootstrapRefetch(() => {\n void refetch();\n });\n return () => setBootstrapRefetch(null);\n }, [refetch, setBootstrapRefetch]);\n\n return null;\n}\n\nexport const useAssetHandler = () => {\n const context = useContext(AssetHandlerContext);\n if (!context) throw new Error('useAssetHandler must be used within AssetHandlerProvider');\n return context;\n};\n\nexport const AssetHandlerProvider: FC<PropsWithChildren<AssetHandlerRootProps>> = ({\n children,\n ...props\n}) => {\n const apolloClient = useMemo(\n () =>\n new ApolloClient({\n link: new HttpLink({\n uri: props.apiGatewayUrl\n ? `${props.apiGatewayUrl}/workspaces/graphql`\n : '/workspaces/graphql',\n headers: props.authToken\n ? {\n Authorization: `Bearer ${props.authToken}`,\n ...(props.workspaceToken\n ? { 'X-Workspace-Authorization': `Bearer ${props.workspaceToken}` }\n : {}),\n }\n : undefined,\n }),\n cache: new InMemoryCache(),\n }),\n [props.apiGatewayUrl, props.authToken, props.workspaceToken]\n );\n\n const isIntegrated = !!props.basePath;\n const content = (\n <AssetHandlerContext.Provider value={props}>\n <AssetHandlerBootstrapHydrator />\n {children}\n </AssetHandlerContext.Provider>\n );\n\n return isIntegrated ? (\n content\n ) : (\n <ApolloProvider client={apolloClient}>\n <MemoryRouter>{content}</MemoryRouter>\n </ApolloProvider>\n );\n};\n"],"mappings":";;;;;;;AAWA,IAAM,IAAsB,EAA+C,KAAK,EAE1E,IAA+B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4LxC,SAAS,IAAgC;CACvC,IAAM,IAAuB,GAAsB,MAAM,EAAE,qBAAqB,EAC1E,IAAsB,GAAsB,MAAM,EAAE,oBAAoB,EACxE,EAAE,SAAM,eAAY,EAAuC,GAA8B;EAC7F,aAAa;EACb,aAAa;EACd,CAAC;AAeF,QAbA,QAAgB;AACd,EAAI,KACF,EAAqB,EAAK;IAE3B,CAAC,GAAM,EAAqB,CAAC,EAEhC,SACE,QAA0B;AACnB,KAAS;GACd,QACW,EAAoB,KAAK,GACrC,CAAC,GAAS,EAAoB,CAAC,EAE3B;;AAGT,IAAa,UAAwB;CACnC,IAAM,IAAU,EAAW,EAAoB;AAC/C,KAAI,CAAC,EAAS,OAAU,MAAM,2DAA2D;AACzF,QAAO;GAGI,KAAsE,EACjF,aACA,GAAG,QACC;CACJ,IAAM,IAAe,QAEjB,IAAI,EAAa;EACf,MAAM,IAAI,EAAS;GACjB,KAAK,EAAM,gBACP,GAAG,EAAM,cAAc,uBACvB;GACJ,SAAS,EAAM,YACX;IACE,eAAe,UAAU,EAAM;IAC/B,GAAI,EAAM,iBACN,EAAE,6BAA6B,UAAU,EAAM,kBAAkB,GACjE,EAAE;IACP,GACD,KAAA;GACL,CAAC;EACF,OAAO,IAAI,GAAe;EAC3B,CAAC,EACJ;EAAC,EAAM;EAAe,EAAM;EAAW,EAAM;EAAe,CAC7D,EAEK,IAAe,CAAC,CAAC,EAAM,UACvB,IACJ,kBAAC,EAAoB,UAArB;EAA8B,OAAO;YAArC,CACE,kBAAC,GAAD,EAAiC,CAAA,EAChC,EAC4B;;AAGjC,QAAO,IACL,IAEA,kBAAC,GAAD;EAAgB,QAAQ;YACtB,kBAAC,GAAD,EAAA,UAAe,GAAuB,CAAA;EACvB,CAAA"}
1
+ {"version":3,"file":"AssetHandlerProvider.js","names":[],"sources":["../../../src/assethandler/providers/AssetHandlerProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from 'react';\nimport { createContext, useContext, useMemo, useEffect } from 'react';\nimport { MemoryRouter } from 'react-router-dom';\nimport { ApolloClient, HttpLink, InMemoryCache, gql } from '@apollo/client';\nimport { ApolloProvider, useQuery } from '@apollo/client/react';\nimport type { AssetHandlerRootProps } from '../types';\nimport type { AssetHandlerBootstrapPayload } from '../store/assethandlerStore';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\n\ntype AssetHandlerContextValue = AssetHandlerRootProps;\n\nconst AssetHandlerContext = createContext<AssetHandlerContextValue | null>(null);\n\nconst ASSETHANDLER_BOOTSTRAP_QUERY = gql`\n query AssetHandlerBootstrap {\n dashboardOverview {\n totalAssets\n openIncidents\n openWorkOrders\n totalTransactions\n }\n assets {\n id\n assetNumber\n name\n description\n category\n status\n condition\n serialNumber\n locationName\n assignedTo\n tags\n createdAt\n updatedAt\n purchaseValue\n purchaseDate\n usefulLifeMonths\n salvageValue\n depreciationMethod\n department\n warrantyExpiry\n supplier\n disposalDate\n disposalMethod\n disposalNotes\n currentValue\n accumulatedDepreciation\n totalCostOfOwnership\n }\n incidents {\n id\n title\n description\n category\n priority\n status\n assignedTo\n reportedBy\n reportedAt\n resolvedAt\n resolution\n slaBreached\n }\n workOrders {\n id\n title\n description\n type\n status\n priority\n assetId\n assignedTo\n createdAt\n updatedAt\n completedAt\n }\n maintenanceRecords {\n id\n assetId\n title\n description\n type\n status\n priority\n scheduledAt\n completedAt\n estimatedCost\n actualCost\n checklist\n createdAt\n updatedAt\n }\n transactions {\n id\n type\n status\n amount\n currency\n category\n description\n vendor\n department\n occurredAt\n }\n changeRequests {\n id\n title\n description\n type\n status\n risk\n requestedBy\n assignedTo\n affectedAssets\n scheduledStart\n scheduledEnd\n approvals\n createdAt\n updatedAt\n }\n problems {\n id\n title\n description\n status\n priority\n category\n assignedTo\n relatedIncidents\n rootCause\n workaround\n resolution\n createdAt\n updatedAt\n }\n budgets {\n id\n name\n category\n allocated\n spent\n remaining\n period\n department\n status\n }\n invoices {\n id\n number\n vendor\n amount\n currency\n issueDate\n dueDate\n status\n items\n relatedPO\n paidAt\n }\n securityEvents: getVaultSecurityEvents {\n items {\n id\n eventType\n severity\n title: message\n description\n source: resourceType\n userId\n ipAddress\n occurredAt: timestamp\n resolved: reviewed\n }\n }\n complianceFrameworks: securityComplianceFrameworks(\n filter: { sourceProduct: \"assethandler\" }\n ) {\n items {\n id\n name\n version\n status\n score\n totalControls\n passedControls\n failedControls\n lastAssessment\n nextAssessment\n lastAssessedAt\n }\n }\n securityPolicies: securityGovernancePolicies(filter: { sourceProduct: \"assethandler\" }) {\n items {\n id\n name\n description\n category\n status\n version\n effectiveDate\n reviewDate\n owner\n applicableTo\n }\n }\n }\n`;\n\nfunction AssetHandlerBootstrapHydrator() {\n const hydrateFromBootstrap = useAssetHandlerStore((s) => s.hydrateFromBootstrap);\n const setBootstrapRefetch = useAssetHandlerStore((s) => s.setBootstrapRefetch);\n const { data, refetch } = useQuery<AssetHandlerBootstrapPayload>(ASSETHANDLER_BOOTSTRAP_QUERY, {\n fetchPolicy: 'cache-and-network',\n errorPolicy: 'all',\n });\n\n useEffect(() => {\n if (data) {\n hydrateFromBootstrap(data);\n }\n }, [data, hydrateFromBootstrap]);\n\n useEffect(() => {\n setBootstrapRefetch(() => {\n void refetch();\n });\n return () => setBootstrapRefetch(null);\n }, [refetch, setBootstrapRefetch]);\n\n return null;\n}\n\nexport const useAssetHandler = () => {\n const context = useContext(AssetHandlerContext);\n if (!context) throw new Error('useAssetHandler must be used within AssetHandlerProvider');\n return context;\n};\n\nexport const AssetHandlerProvider: FC<PropsWithChildren<AssetHandlerRootProps>> = ({\n children,\n ...props\n}) => {\n const apolloClient = useMemo(\n () =>\n new ApolloClient({\n link: new HttpLink({\n uri: props.apiGatewayUrl\n ? `${props.apiGatewayUrl}/workspaces/graphql`\n : '/workspaces/graphql',\n headers: props.authToken\n ? {\n Authorization: `Bearer ${props.authToken}`,\n ...(props.workspaceToken\n ? { 'X-Workspace-Authorization': `Bearer ${props.workspaceToken}` }\n : {}),\n }\n : undefined,\n }),\n cache: new InMemoryCache(),\n }),\n [props.apiGatewayUrl, props.authToken, props.workspaceToken]\n );\n\n const isIntegrated = !!props.basePath;\n const content = (\n <AssetHandlerContext.Provider value={props}>\n <AssetHandlerBootstrapHydrator />\n {children}\n </AssetHandlerContext.Provider>\n );\n\n return isIntegrated ? (\n content\n ) : (\n <ApolloProvider client={apolloClient}>\n <MemoryRouter>{content}</MemoryRouter>\n </ApolloProvider>\n );\n};\n"],"mappings":";;;;;;;AAWA,IAAM,IAAsB,EAA+C,KAAK,EAE1E,IAA+B,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmMxC,SAAS,IAAgC;CACvC,IAAM,IAAuB,GAAsB,MAAM,EAAE,qBAAqB,EAC1E,IAAsB,GAAsB,MAAM,EAAE,oBAAoB,EACxE,EAAE,SAAM,eAAY,EAAuC,GAA8B;EAC7F,aAAa;EACb,aAAa;EACd,CAAC;AAeF,QAbA,QAAgB;AACd,EAAI,KACF,EAAqB,EAAK;IAE3B,CAAC,GAAM,EAAqB,CAAC,EAEhC,SACE,QAA0B;AACnB,KAAS;GACd,QACW,EAAoB,KAAK,GACrC,CAAC,GAAS,EAAoB,CAAC,EAE3B;;AAGT,IAAa,UAAwB;CACnC,IAAM,IAAU,EAAW,EAAoB;AAC/C,KAAI,CAAC,EAAS,OAAU,MAAM,2DAA2D;AACzF,QAAO;GAGI,KAAsE,EACjF,aACA,GAAG,QACC;CACJ,IAAM,IAAe,QAEjB,IAAI,EAAa;EACf,MAAM,IAAI,EAAS;GACjB,KAAK,EAAM,gBACP,GAAG,EAAM,cAAc,uBACvB;GACJ,SAAS,EAAM,YACX;IACE,eAAe,UAAU,EAAM;IAC/B,GAAI,EAAM,iBACN,EAAE,6BAA6B,UAAU,EAAM,kBAAkB,GACjE,EAAE;IACP,GACD,KAAA;GACL,CAAC;EACF,OAAO,IAAI,GAAe;EAC3B,CAAC,EACJ;EAAC,EAAM;EAAe,EAAM;EAAW,EAAM;EAAe,CAC7D,EAEK,IAAe,CAAC,CAAC,EAAM,UACvB,IACJ,kBAAC,EAAoB,UAArB;EAA8B,OAAO;YAArC,CACE,kBAAC,GAAD,EAAiC,CAAA,EAChC,EAC4B;;AAGjC,QAAO,IACL,IAEA,kBAAC,GAAD;EAAgB,QAAQ;YACtB,kBAAC,GAAD,EAAA,UAAe,GAAuB,CAAA;EACvB,CAAA"}
@@ -159,18 +159,18 @@ var t = e((e, t) => ({
159
159
  })),
160
160
  relatedPO: e.relatedPO ?? void 0,
161
161
  paidAt: e.paidAt ?? void 0
162
- })), u = (t.securityEvents ?? []).map((e) => ({
162
+ })), u = (t.securityEvents?.items ?? []).map((e) => ({
163
163
  id: e.id,
164
164
  type: e.eventType,
165
165
  severity: e.severity.toLowerCase(),
166
166
  title: e.title,
167
- description: e.description,
168
- source: e.source,
167
+ description: e.description ?? "",
168
+ source: e.source ?? "security",
169
169
  userId: e.userId ?? void 0,
170
170
  ipAddress: e.ipAddress ?? void 0,
171
171
  timestamp: e.occurredAt,
172
172
  resolved: e.resolved
173
- })), d = (t.complianceFrameworks ?? []).map((e) => ({
173
+ })), d = (t.complianceFrameworks?.items ?? []).map((e) => ({
174
174
  id: e.id,
175
175
  name: e.name,
176
176
  version: e.version,
@@ -182,10 +182,10 @@ var t = e((e, t) => ({
182
182
  lastAssessment: e.lastAssessment,
183
183
  nextAssessment: e.nextAssessment,
184
184
  lastAssessedAt: e.lastAssessedAt ?? void 0
185
- })), f = (t.securityPolicies ?? []).map((e) => ({
185
+ })), f = (t.securityPolicies?.items ?? []).map((e) => ({
186
186
  id: e.id,
187
187
  name: e.name,
188
- description: e.description,
188
+ description: e.description ?? "",
189
189
  category: e.category,
190
190
  status: e.status.toLowerCase(),
191
191
  version: e.version,
@@ -1 +1 @@
1
- {"version":3,"file":"assethandlerStore.js","names":[],"sources":["../../../src/assethandler/store/assethandlerStore.ts"],"sourcesContent":["import { create } from 'zustand';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// View-model types — aligned 1:1 with wspace-assethandler-svc GraphQL schema.\n// Backend enum values (UPPER_CASE) are lowercased once during hydration so the\n// UI can render them directly. No field in this store is invented client-side;\n// everything is hydrated from the bootstrap query in AssetHandlerProvider.\n// ─────────────────────────────────────────────────────────────────────────────\n\n// ─── Asset Types ──────────────────────────────────────────────────\nexport type AssetStatus = 'active' | 'inactive' | 'maintenance' | 'retired' | 'disposed';\nexport type AssetCondition = 'excellent' | 'good' | 'fair' | 'poor' | 'damaged';\nexport type DepreciationMethod = 'straight_line' | 'reducing_balance' | 'none';\n\nexport interface Asset {\n id: string;\n name: string;\n description: string;\n category: string;\n status: AssetStatus;\n condition: AssetCondition;\n serialNumber: string;\n assetTag: string;\n location: string;\n assignedTo: string;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n // ─── Financial / depreciation (backend-computed where noted) ───\n purchaseValue?: number;\n purchaseDate?: string;\n usefulLifeMonths?: number;\n salvageValue?: number;\n depreciationMethod?: DepreciationMethod;\n department?: string;\n warrantyExpiry?: string;\n supplier?: string;\n disposalDate?: string;\n disposalMethod?: string;\n disposalNotes?: string;\n /** Computed book value (floored at salvage); undefined if no purchaseValue. */\n currentValue?: number;\n /** Computed accumulated depreciation. */\n accumulatedDepreciation?: number;\n /** Computed = purchaseValue + maintenance actualCost + work-order cost. */\n totalCostOfOwnership?: number;\n}\n\n// ─── ITIL Types ───────────────────────────────────────────────────\nexport type IncidentPriority = 'critical' | 'high' | 'medium' | 'low';\nexport type IncidentStatus = 'open' | 'in_progress' | 'resolved' | 'closed';\nexport type ChangeStatus =\n | 'draft'\n | 'submitted'\n | 'approved'\n | 'in_progress'\n | 'completed'\n | 'rejected';\nexport type ChangeRisk = 'low' | 'medium' | 'high' | 'critical';\nexport type ProblemStatus = 'open' | 'investigating' | 'known_error' | 'resolved' | 'closed';\n\nexport interface Incident {\n id: string;\n title: string;\n description: string;\n category: string;\n priority: IncidentPriority;\n status: IncidentStatus;\n assignedTo: string;\n reportedBy: string;\n createdAt: string;\n resolvedAt?: string;\n resolution?: string;\n slaBreached: boolean;\n}\n\nexport interface ChangeRequest {\n id: string;\n title: string;\n description: string;\n type: string;\n status: ChangeStatus;\n risk: ChangeRisk;\n requestedBy: string;\n assignedTo: string;\n affectedAssets: string[];\n scheduledStart: string;\n scheduledEnd: string;\n createdAt: string;\n approvals: { name: string; status: string; date: string }[];\n}\n\nexport interface Problem {\n id: string;\n title: string;\n description: string;\n status: ProblemStatus;\n priority: IncidentPriority;\n category: string;\n assignedTo: string;\n relatedIncidents: string[];\n rootCause?: string;\n workaround?: string;\n resolution?: string;\n createdAt: string;\n updatedAt: string;\n}\n\n// ─── Finance Types ────────────────────────────────────────────────\nexport type TransactionType = 'purchase' | 'lease' | 'disposal' | 'transfer' | 'maintenance';\nexport type TransactionStatus = 'pending' | 'approved' | 'completed' | 'rejected';\n\nexport interface FinanceTransaction {\n id: string;\n type: TransactionType;\n amount: number;\n currency: string;\n description: string;\n category: string;\n date: string;\n status: TransactionStatus;\n vendor?: string;\n department: string;\n}\n\nexport interface Budget {\n id: string;\n name: string;\n category: string;\n allocated: number;\n spent: number;\n remaining: number;\n period: string;\n department: string;\n status: 'on_track' | 'over_budget' | 'under_budget';\n}\n\nexport interface Invoice {\n id: string;\n number: string;\n vendor: string;\n amount: number;\n currency: string;\n issueDate: string;\n dueDate: string;\n status: 'draft' | 'sent' | 'paid' | 'overdue' | 'cancelled';\n items: { description: string; qty: number; unitPrice: number; total: number }[];\n relatedPO?: string;\n paidAt?: string;\n}\n\n// ─── Maintenance Types ────────────────────────────────────────────\nexport type MaintenancePriority = 'critical' | 'high' | 'medium' | 'low';\n\nexport interface MaintenanceRecord {\n id: string;\n assetId: string;\n type: string;\n priority: MaintenancePriority;\n status: string;\n title: string;\n description: string;\n scheduledDate?: string;\n completedDate?: string;\n estimatedCost?: number;\n actualCost?: number;\n checklist: { task: string; completed: boolean }[];\n}\n\n// ─── Security Types ───────────────────────────────────────────────\nexport interface SecurityEvent {\n id: string;\n type: string;\n severity: 'critical' | 'high' | 'medium' | 'low' | 'info';\n title: string;\n description: string;\n source: string;\n userId?: string;\n ipAddress?: string;\n timestamp: string;\n resolved: boolean;\n}\n\nexport interface ComplianceFramework {\n id: string;\n name: string;\n version: string;\n status: 'compliant' | 'non_compliant' | 'partial' | 'under_review';\n score: number;\n totalControls: number;\n passedControls: number;\n failedControls: number;\n lastAssessment: string;\n nextAssessment: string;\n lastAssessedAt?: string;\n}\n\nexport interface SecurityPolicy {\n id: string;\n name: string;\n description: string;\n category: string;\n status: 'active' | 'draft' | 'deprecated' | 'under_review';\n version: string;\n effectiveDate: string;\n reviewDate: string;\n owner: string;\n applicableTo: string[];\n}\n\n// ─── Operations Types ─────────────────────────────────────────────\nexport interface WorkOrder {\n id: string;\n title: string;\n description: string;\n priority: 'critical' | 'high' | 'medium' | 'low';\n status: 'draft' | 'scheduled' | 'approved' | 'in_progress' | 'completed' | 'cancelled';\n assignedTo: string;\n assetId: string;\n type: string;\n createdAt: string;\n completedAt?: string;\n}\n\n// ─── Dashboard Types ──────────────────────────────────────────────\nexport interface DashboardOverview {\n totalAssets: number;\n openIncidents: number;\n openWorkOrders: number;\n totalTransactions: number;\n}\n\n// ─── Bootstrap payload (raw backend shapes) ───────────────────────\nexport interface AssetHandlerBootstrapPayload {\n dashboardOverview?: {\n totalAssets?: number;\n openIncidents?: number;\n openWorkOrders?: number;\n totalTransactions?: number;\n } | null;\n assets?: Array<{\n id: string;\n assetNumber: string;\n name: string;\n description?: string | null;\n category: string;\n status: string;\n condition: string;\n serialNumber?: string | null;\n locationName?: string | null;\n assignedTo?: string | null;\n tags?: string[];\n createdAt?: string;\n updatedAt?: string;\n purchaseValue?: number | null;\n purchaseDate?: string | null;\n usefulLifeMonths?: number | null;\n salvageValue?: number | null;\n depreciationMethod?: string | null;\n department?: string | null;\n warrantyExpiry?: string | null;\n supplier?: string | null;\n disposalDate?: string | null;\n disposalMethod?: string | null;\n disposalNotes?: string | null;\n currentValue?: number | null;\n accumulatedDepreciation?: number | null;\n totalCostOfOwnership?: number | null;\n }> | null;\n incidents?: Array<{\n id: string;\n title: string;\n description: string;\n category: string;\n priority: string;\n status: string;\n assignedTo?: string | null;\n reportedBy: string;\n reportedAt: string;\n resolvedAt?: string | null;\n resolution?: string | null;\n slaBreached: boolean;\n }> | null;\n workOrders?: Array<{\n id: string;\n title: string;\n description?: string | null;\n type: string;\n status: string;\n priority: string;\n assetId?: string | null;\n assignedTo?: string | null;\n createdAt: string;\n completedAt?: string | null;\n }> | null;\n maintenanceRecords?: Array<{\n id: string;\n assetId: string;\n title: string;\n description?: string | null;\n type: string;\n status: string;\n priority: string;\n scheduledAt?: string | null;\n completedAt?: string | null;\n estimatedCost?: number | null;\n actualCost?: number | null;\n checklist?: Array<Record<string, unknown>>;\n }> | null;\n transactions?: Array<{\n id: string;\n type: string;\n status: string;\n amount: number;\n currency: string;\n category: string;\n description: string;\n vendor?: string | null;\n department?: string | null;\n occurredAt: string;\n }> | null;\n changeRequests?: Array<{\n id: string;\n title: string;\n description: string;\n type: string;\n status: string;\n risk: string;\n requestedBy: string;\n assignedTo?: string | null;\n affectedAssets: string[];\n scheduledStart?: string | null;\n scheduledEnd?: string | null;\n approvals?: Array<{ name?: string; status?: string; date?: string }>;\n createdAt: string;\n }> | null;\n problems?: Array<{\n id: string;\n title: string;\n description: string;\n status: string;\n priority: string;\n category: string;\n assignedTo?: string | null;\n relatedIncidents: string[];\n rootCause?: string | null;\n workaround?: string | null;\n resolution?: string | null;\n createdAt: string;\n updatedAt: string;\n }> | null;\n budgets?: Array<{\n id: string;\n name: string;\n category: string;\n allocated: number;\n spent: number;\n remaining: number;\n period: string;\n department: string;\n status: string;\n }> | null;\n invoices?: Array<{\n id: string;\n number: string;\n vendor: string;\n amount: number;\n currency: string;\n issueDate: string;\n dueDate: string;\n status: string;\n items?: Array<{ description?: string; qty?: number; unitPrice?: number; total?: number }>;\n relatedPO?: string | null;\n paidAt?: string | null;\n }> | null;\n securityEvents?: Array<{\n id: string;\n eventType: string;\n severity: string;\n title: string;\n description: string;\n source: string;\n userId?: string | null;\n ipAddress?: string | null;\n occurredAt: string;\n resolved: boolean;\n }> | null;\n complianceFrameworks?: Array<{\n id: string;\n name: string;\n version: string;\n status: string;\n score: number;\n totalControls: number;\n passedControls: number;\n failedControls: number;\n lastAssessment: string;\n nextAssessment: string;\n lastAssessedAt?: string | null;\n }> | null;\n securityPolicies?: Array<{\n id: string;\n name: string;\n description: string;\n category: string;\n status: string;\n version: string;\n effectiveDate: string;\n reviewDate: string;\n owner: string;\n applicableTo: string[];\n }> | null;\n}\n\ninterface AssetHandlerState {\n /** True once the bootstrap query has hydrated the store at least once. */\n hydrated: boolean;\n\n // Domain data — always sourced from the backend, never seeded locally.\n overview: DashboardOverview | null;\n assets: Asset[];\n incidents: Incident[];\n changeRequests: ChangeRequest[];\n problems: Problem[];\n transactions: FinanceTransaction[];\n budgets: Budget[];\n invoices: Invoice[];\n maintenanceRecords: MaintenanceRecord[];\n securityEvents: SecurityEvent[];\n complianceFrameworks: ComplianceFramework[];\n securityPolicies: SecurityPolicy[];\n workOrders: WorkOrder[];\n\n hydrateFromBootstrap: (payload: AssetHandlerBootstrapPayload) => void;\n\n /**\n * Imperative refetch of the bootstrap query, registered by the provider's\n * hydrator. Pages that mutate domain data can call `refetchBootstrap()` to\n * pull fresh store data. Prefer Apollo `refetchQueries: ['AssetHandlerBootstrap']`\n * on the mutation itself; use this for cross-component imperative refresh.\n */\n bootstrapRefetch: (() => void) | null;\n setBootstrapRefetch: (refetch: (() => void) | null) => void;\n refetchBootstrap: () => void;\n}\n\nexport const useAssetHandlerStore = create<AssetHandlerState>((set, get) => ({\n hydrated: false,\n\n bootstrapRefetch: null,\n setBootstrapRefetch: (refetch) => set({ bootstrapRefetch: refetch }),\n refetchBootstrap: () => {\n get().bootstrapRefetch?.();\n },\n\n overview: null,\n assets: [],\n incidents: [],\n changeRequests: [],\n problems: [],\n transactions: [],\n budgets: [],\n invoices: [],\n maintenanceRecords: [],\n securityEvents: [],\n complianceFrameworks: [],\n securityPolicies: [],\n workOrders: [],\n\n hydrateFromBootstrap: (payload) =>\n set(() => {\n const assets: Asset[] = (payload.assets ?? []).map((asset) => ({\n id: asset.id,\n name: asset.name,\n description: asset.description ?? '',\n category: asset.category.toLowerCase(),\n status: asset.status.toLowerCase() as AssetStatus,\n condition: asset.condition.toLowerCase() as AssetCondition,\n serialNumber: asset.serialNumber ?? '',\n assetTag: asset.assetNumber,\n location: asset.locationName ?? '',\n assignedTo: asset.assignedTo ?? '',\n tags: asset.tags ?? [],\n createdAt: asset.createdAt ?? '',\n updatedAt: asset.updatedAt ?? '',\n purchaseValue: asset.purchaseValue ?? undefined,\n purchaseDate: asset.purchaseDate ?? undefined,\n usefulLifeMonths: asset.usefulLifeMonths ?? undefined,\n salvageValue: asset.salvageValue ?? undefined,\n depreciationMethod: asset.depreciationMethod\n ? (asset.depreciationMethod.toLowerCase() as DepreciationMethod)\n : undefined,\n department: asset.department ?? undefined,\n warrantyExpiry: asset.warrantyExpiry ?? undefined,\n supplier: asset.supplier ?? undefined,\n disposalDate: asset.disposalDate ?? undefined,\n disposalMethod: asset.disposalMethod ?? undefined,\n disposalNotes: asset.disposalNotes ?? undefined,\n currentValue: asset.currentValue ?? undefined,\n accumulatedDepreciation: asset.accumulatedDepreciation ?? undefined,\n totalCostOfOwnership: asset.totalCostOfOwnership ?? undefined,\n }));\n\n const incidents: Incident[] = (payload.incidents ?? []).map((incident) => ({\n id: incident.id,\n title: incident.title,\n description: incident.description,\n category: incident.category,\n priority: incident.priority.toLowerCase() as IncidentPriority,\n status: incident.status.toLowerCase() as IncidentStatus,\n assignedTo: incident.assignedTo ?? '',\n reportedBy: incident.reportedBy,\n createdAt: incident.reportedAt,\n resolvedAt: incident.resolvedAt ?? undefined,\n resolution: incident.resolution ?? undefined,\n slaBreached: incident.slaBreached,\n }));\n\n const workOrders: WorkOrder[] = (payload.workOrders ?? []).map((workOrder) => ({\n id: workOrder.id,\n title: workOrder.title,\n description: workOrder.description ?? '',\n assetId: workOrder.assetId ?? '',\n priority: workOrder.priority.toLowerCase() as WorkOrder['priority'],\n status: workOrder.status.toLowerCase() as WorkOrder['status'],\n assignedTo: workOrder.assignedTo ?? '',\n createdAt: workOrder.createdAt,\n completedAt: workOrder.completedAt ?? undefined,\n type: workOrder.type.toLowerCase(),\n }));\n\n const maintenanceRecords: MaintenanceRecord[] = (payload.maintenanceRecords ?? []).map(\n (record) => ({\n id: record.id,\n assetId: record.assetId,\n type: record.type.toLowerCase(),\n priority: record.priority.toLowerCase() as MaintenancePriority,\n status: record.status.toLowerCase(),\n title: record.title,\n description: record.description ?? '',\n scheduledDate: record.scheduledAt ?? undefined,\n completedDate: record.completedAt ?? undefined,\n estimatedCost: record.estimatedCost ?? undefined,\n actualCost: record.actualCost ?? undefined,\n checklist: (record.checklist ?? []).map((item) => ({\n task: String(item.task ?? 'Task'),\n completed: Boolean(item.completed ?? false),\n })),\n })\n );\n\n const transactions: FinanceTransaction[] = (payload.transactions ?? []).map((tx) => ({\n id: tx.id,\n type: tx.type.toLowerCase() as TransactionType,\n amount: tx.amount,\n currency: tx.currency,\n description: tx.description,\n category: tx.category,\n date: tx.occurredAt,\n status: tx.status.toLowerCase() as TransactionStatus,\n vendor: tx.vendor ?? undefined,\n department: tx.department ?? '',\n }));\n\n const changeRequests: ChangeRequest[] = (payload.changeRequests ?? []).map((change) => ({\n id: change.id,\n title: change.title,\n description: change.description,\n type: change.type.toLowerCase(),\n status: change.status.toLowerCase() as ChangeStatus,\n risk: change.risk.toLowerCase() as ChangeRisk,\n requestedBy: change.requestedBy,\n assignedTo: change.assignedTo ?? '',\n affectedAssets: change.affectedAssets,\n scheduledStart: change.scheduledStart ?? '',\n scheduledEnd: change.scheduledEnd ?? '',\n createdAt: change.createdAt,\n approvals: (change.approvals ?? []).map((approval) => ({\n name: approval.name ?? 'Approver',\n status: approval.status ?? 'pending',\n date: approval.date ?? change.createdAt,\n })),\n }));\n\n const problems: Problem[] = (payload.problems ?? []).map((problem) => ({\n id: problem.id,\n title: problem.title,\n description: problem.description,\n status: problem.status.toLowerCase() as ProblemStatus,\n priority: problem.priority.toLowerCase() as IncidentPriority,\n category: problem.category,\n assignedTo: problem.assignedTo ?? '',\n relatedIncidents: problem.relatedIncidents,\n rootCause: problem.rootCause ?? undefined,\n workaround: problem.workaround ?? undefined,\n resolution: problem.resolution ?? undefined,\n createdAt: problem.createdAt,\n updatedAt: problem.updatedAt,\n }));\n\n const budgets: Budget[] = (payload.budgets ?? []).map((budget) => ({\n id: budget.id,\n name: budget.name,\n category: budget.category,\n allocated: budget.allocated,\n spent: budget.spent,\n remaining: budget.remaining,\n period: budget.period,\n department: budget.department,\n status: budget.status.toLowerCase() as Budget['status'],\n }));\n\n const invoices: Invoice[] = (payload.invoices ?? []).map((invoice) => ({\n id: invoice.id,\n number: invoice.number,\n vendor: invoice.vendor,\n amount: invoice.amount,\n currency: invoice.currency,\n issueDate: invoice.issueDate,\n dueDate: invoice.dueDate,\n status: invoice.status.toLowerCase() as Invoice['status'],\n items: (invoice.items ?? []).map((item) => ({\n description: item.description ?? 'Line item',\n qty: item.qty ?? 1,\n unitPrice: item.unitPrice ?? item.total ?? 0,\n total: item.total ?? item.unitPrice ?? 0,\n })),\n relatedPO: invoice.relatedPO ?? undefined,\n paidAt: invoice.paidAt ?? undefined,\n }));\n\n const securityEvents: SecurityEvent[] = (payload.securityEvents ?? []).map((event) => ({\n id: event.id,\n type: event.eventType,\n severity: event.severity.toLowerCase() as SecurityEvent['severity'],\n title: event.title,\n description: event.description,\n source: event.source,\n userId: event.userId ?? undefined,\n ipAddress: event.ipAddress ?? undefined,\n timestamp: event.occurredAt,\n resolved: event.resolved,\n }));\n\n const complianceFrameworks: ComplianceFramework[] = (payload.complianceFrameworks ?? []).map(\n (framework) => ({\n id: framework.id,\n name: framework.name,\n version: framework.version,\n status: framework.status.toLowerCase() as ComplianceFramework['status'],\n score: framework.score,\n totalControls: framework.totalControls,\n passedControls: framework.passedControls,\n failedControls: framework.failedControls,\n lastAssessment: framework.lastAssessment,\n nextAssessment: framework.nextAssessment,\n lastAssessedAt: framework.lastAssessedAt ?? undefined,\n })\n );\n\n const securityPolicies: SecurityPolicy[] = (payload.securityPolicies ?? []).map((policy) => ({\n id: policy.id,\n name: policy.name,\n description: policy.description,\n category: policy.category,\n status: policy.status.toLowerCase() as SecurityPolicy['status'],\n version: policy.version,\n effectiveDate: policy.effectiveDate,\n reviewDate: policy.reviewDate,\n owner: policy.owner,\n applicableTo: policy.applicableTo,\n }));\n\n const overview: DashboardOverview | null = payload.dashboardOverview\n ? {\n totalAssets: payload.dashboardOverview.totalAssets ?? assets.length,\n openIncidents: payload.dashboardOverview.openIncidents ?? 0,\n openWorkOrders: payload.dashboardOverview.openWorkOrders ?? 0,\n totalTransactions: payload.dashboardOverview.totalTransactions ?? 0,\n }\n : null;\n\n return {\n hydrated: true,\n overview,\n assets,\n incidents,\n changeRequests,\n problems,\n workOrders,\n maintenanceRecords,\n transactions,\n budgets,\n invoices,\n securityEvents,\n complianceFrameworks,\n securityPolicies,\n };\n }),\n}));\n"],"mappings":";;AA8bA,IAAa,IAAuB,GAA2B,GAAK,OAAS;CAC3E,UAAU;CAEV,kBAAkB;CAClB,sBAAsB,MAAY,EAAI,EAAE,kBAAkB,GAAS,CAAC;CACpE,wBAAwB;AACtB,KAAK,CAAC,oBAAoB;;CAG5B,UAAU;CACV,QAAQ,EAAE;CACV,WAAW,EAAE;CACb,gBAAgB,EAAE;CAClB,UAAU,EAAE;CACZ,cAAc,EAAE;CAChB,SAAS,EAAE;CACX,UAAU,EAAE;CACZ,oBAAoB,EAAE;CACtB,gBAAgB,EAAE;CAClB,sBAAsB,EAAE;CACxB,kBAAkB,EAAE;CACpB,YAAY,EAAE;CAEd,uBAAuB,MACrB,QAAU;EACR,IAAM,KAAmB,EAAQ,UAAU,EAAE,EAAE,KAAK,OAAW;GAC7D,IAAI,EAAM;GACV,MAAM,EAAM;GACZ,aAAa,EAAM,eAAe;GAClC,UAAU,EAAM,SAAS,aAAa;GACtC,QAAQ,EAAM,OAAO,aAAa;GAClC,WAAW,EAAM,UAAU,aAAa;GACxC,cAAc,EAAM,gBAAgB;GACpC,UAAU,EAAM;GAChB,UAAU,EAAM,gBAAgB;GAChC,YAAY,EAAM,cAAc;GAChC,MAAM,EAAM,QAAQ,EAAE;GACtB,WAAW,EAAM,aAAa;GAC9B,WAAW,EAAM,aAAa;GAC9B,eAAe,EAAM,iBAAiB,KAAA;GACtC,cAAc,EAAM,gBAAgB,KAAA;GACpC,kBAAkB,EAAM,oBAAoB,KAAA;GAC5C,cAAc,EAAM,gBAAgB,KAAA;GACpC,oBAAoB,EAAM,qBACrB,EAAM,mBAAmB,aAAa,GACvC,KAAA;GACJ,YAAY,EAAM,cAAc,KAAA;GAChC,gBAAgB,EAAM,kBAAkB,KAAA;GACxC,UAAU,EAAM,YAAY,KAAA;GAC5B,cAAc,EAAM,gBAAgB,KAAA;GACpC,gBAAgB,EAAM,kBAAkB,KAAA;GACxC,eAAe,EAAM,iBAAiB,KAAA;GACtC,cAAc,EAAM,gBAAgB,KAAA;GACpC,yBAAyB,EAAM,2BAA2B,KAAA;GAC1D,sBAAsB,EAAM,wBAAwB,KAAA;GACrD,EAAE,EAEG,KAAyB,EAAQ,aAAa,EAAE,EAAE,KAAK,OAAc;GACzE,IAAI,EAAS;GACb,OAAO,EAAS;GAChB,aAAa,EAAS;GACtB,UAAU,EAAS;GACnB,UAAU,EAAS,SAAS,aAAa;GACzC,QAAQ,EAAS,OAAO,aAAa;GACrC,YAAY,EAAS,cAAc;GACnC,YAAY,EAAS;GACrB,WAAW,EAAS;GACpB,YAAY,EAAS,cAAc,KAAA;GACnC,YAAY,EAAS,cAAc,KAAA;GACnC,aAAa,EAAS;GACvB,EAAE,EAEG,KAA2B,EAAQ,cAAc,EAAE,EAAE,KAAK,OAAe;GAC7E,IAAI,EAAU;GACd,OAAO,EAAU;GACjB,aAAa,EAAU,eAAe;GACtC,SAAS,EAAU,WAAW;GAC9B,UAAU,EAAU,SAAS,aAAa;GAC1C,QAAQ,EAAU,OAAO,aAAa;GACtC,YAAY,EAAU,cAAc;GACpC,WAAW,EAAU;GACrB,aAAa,EAAU,eAAe,KAAA;GACtC,MAAM,EAAU,KAAK,aAAa;GACnC,EAAE,EAEG,KAA2C,EAAQ,sBAAsB,EAAE,EAAE,KAChF,OAAY;GACX,IAAI,EAAO;GACX,SAAS,EAAO;GAChB,MAAM,EAAO,KAAK,aAAa;GAC/B,UAAU,EAAO,SAAS,aAAa;GACvC,QAAQ,EAAO,OAAO,aAAa;GACnC,OAAO,EAAO;GACd,aAAa,EAAO,eAAe;GACnC,eAAe,EAAO,eAAe,KAAA;GACrC,eAAe,EAAO,eAAe,KAAA;GACrC,eAAe,EAAO,iBAAiB,KAAA;GACvC,YAAY,EAAO,cAAc,KAAA;GACjC,YAAY,EAAO,aAAa,EAAE,EAAE,KAAK,OAAU;IACjD,MAAM,OAAO,EAAK,QAAQ,OAAO;IACjC,WAAW,GAAQ,EAAK,aAAa;IACtC,EAAE;GACJ,EACF,EAEK,KAAsC,EAAQ,gBAAgB,EAAE,EAAE,KAAK,OAAQ;GACnF,IAAI,EAAG;GACP,MAAM,EAAG,KAAK,aAAa;GAC3B,QAAQ,EAAG;GACX,UAAU,EAAG;GACb,aAAa,EAAG;GAChB,UAAU,EAAG;GACb,MAAM,EAAG;GACT,QAAQ,EAAG,OAAO,aAAa;GAC/B,QAAQ,EAAG,UAAU,KAAA;GACrB,YAAY,EAAG,cAAc;GAC9B,EAAE,EAEG,KAAmC,EAAQ,kBAAkB,EAAE,EAAE,KAAK,OAAY;GACtF,IAAI,EAAO;GACX,OAAO,EAAO;GACd,aAAa,EAAO;GACpB,MAAM,EAAO,KAAK,aAAa;GAC/B,QAAQ,EAAO,OAAO,aAAa;GACnC,MAAM,EAAO,KAAK,aAAa;GAC/B,aAAa,EAAO;GACpB,YAAY,EAAO,cAAc;GACjC,gBAAgB,EAAO;GACvB,gBAAgB,EAAO,kBAAkB;GACzC,cAAc,EAAO,gBAAgB;GACrC,WAAW,EAAO;GAClB,YAAY,EAAO,aAAa,EAAE,EAAE,KAAK,OAAc;IACrD,MAAM,EAAS,QAAQ;IACvB,QAAQ,EAAS,UAAU;IAC3B,MAAM,EAAS,QAAQ,EAAO;IAC/B,EAAE;GACJ,EAAE,EAEG,KAAuB,EAAQ,YAAY,EAAE,EAAE,KAAK,OAAa;GACrE,IAAI,EAAQ;GACZ,OAAO,EAAQ;GACf,aAAa,EAAQ;GACrB,QAAQ,EAAQ,OAAO,aAAa;GACpC,UAAU,EAAQ,SAAS,aAAa;GACxC,UAAU,EAAQ;GAClB,YAAY,EAAQ,cAAc;GAClC,kBAAkB,EAAQ;GAC1B,WAAW,EAAQ,aAAa,KAAA;GAChC,YAAY,EAAQ,cAAc,KAAA;GAClC,YAAY,EAAQ,cAAc,KAAA;GAClC,WAAW,EAAQ;GACnB,WAAW,EAAQ;GACpB,EAAE,EAEG,KAAqB,EAAQ,WAAW,EAAE,EAAE,KAAK,OAAY;GACjE,IAAI,EAAO;GACX,MAAM,EAAO;GACb,UAAU,EAAO;GACjB,WAAW,EAAO;GAClB,OAAO,EAAO;GACd,WAAW,EAAO;GAClB,QAAQ,EAAO;GACf,YAAY,EAAO;GACnB,QAAQ,EAAO,OAAO,aAAa;GACpC,EAAE,EAEG,KAAuB,EAAQ,YAAY,EAAE,EAAE,KAAK,OAAa;GACrE,IAAI,EAAQ;GACZ,QAAQ,EAAQ;GAChB,QAAQ,EAAQ;GAChB,QAAQ,EAAQ;GAChB,UAAU,EAAQ;GAClB,WAAW,EAAQ;GACnB,SAAS,EAAQ;GACjB,QAAQ,EAAQ,OAAO,aAAa;GACpC,QAAQ,EAAQ,SAAS,EAAE,EAAE,KAAK,OAAU;IAC1C,aAAa,EAAK,eAAe;IACjC,KAAK,EAAK,OAAO;IACjB,WAAW,EAAK,aAAa,EAAK,SAAS;IAC3C,OAAO,EAAK,SAAS,EAAK,aAAa;IACxC,EAAE;GACH,WAAW,EAAQ,aAAa,KAAA;GAChC,QAAQ,EAAQ,UAAU,KAAA;GAC3B,EAAE,EAEG,KAAmC,EAAQ,kBAAkB,EAAE,EAAE,KAAK,OAAW;GACrF,IAAI,EAAM;GACV,MAAM,EAAM;GACZ,UAAU,EAAM,SAAS,aAAa;GACtC,OAAO,EAAM;GACb,aAAa,EAAM;GACnB,QAAQ,EAAM;GACd,QAAQ,EAAM,UAAU,KAAA;GACxB,WAAW,EAAM,aAAa,KAAA;GAC9B,WAAW,EAAM;GACjB,UAAU,EAAM;GACjB,EAAE,EAEG,KAA+C,EAAQ,wBAAwB,EAAE,EAAE,KACtF,OAAe;GACd,IAAI,EAAU;GACd,MAAM,EAAU;GAChB,SAAS,EAAU;GACnB,QAAQ,EAAU,OAAO,aAAa;GACtC,OAAO,EAAU;GACjB,eAAe,EAAU;GACzB,gBAAgB,EAAU;GAC1B,gBAAgB,EAAU;GAC1B,gBAAgB,EAAU;GAC1B,gBAAgB,EAAU;GAC1B,gBAAgB,EAAU,kBAAkB,KAAA;GAC7C,EACF,EAEK,KAAsC,EAAQ,oBAAoB,EAAE,EAAE,KAAK,OAAY;GAC3F,IAAI,EAAO;GACX,MAAM,EAAO;GACb,aAAa,EAAO;GACpB,UAAU,EAAO;GACjB,QAAQ,EAAO,OAAO,aAAa;GACnC,SAAS,EAAO;GAChB,eAAe,EAAO;GACtB,YAAY,EAAO;GACnB,OAAO,EAAO;GACd,cAAc,EAAO;GACtB,EAAE;AAWH,SAAO;GACL,UAAU;GACV,UAXyC,EAAQ,oBAC/C;IACE,aAAa,EAAQ,kBAAkB,eAAe,EAAO;IAC7D,eAAe,EAAQ,kBAAkB,iBAAiB;IAC1D,gBAAgB,EAAQ,kBAAkB,kBAAkB;IAC5D,mBAAmB,EAAQ,kBAAkB,qBAAqB;IACnE,GACD;GAKF;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;GACD;CACL,EAAE"}
1
+ {"version":3,"file":"assethandlerStore.js","names":[],"sources":["../../../src/assethandler/store/assethandlerStore.ts"],"sourcesContent":["import { create } from 'zustand';\n\n// ─────────────────────────────────────────────────────────────────────────────\n// View-model types — aligned 1:1 with wspace-assethandler-svc GraphQL schema.\n// Backend enum values (UPPER_CASE) are lowercased once during hydration so the\n// UI can render them directly. No field in this store is invented client-side;\n// everything is hydrated from the bootstrap query in AssetHandlerProvider.\n// ─────────────────────────────────────────────────────────────────────────────\n\n// ─── Asset Types ──────────────────────────────────────────────────\nexport type AssetStatus = 'active' | 'inactive' | 'maintenance' | 'retired' | 'disposed';\nexport type AssetCondition = 'excellent' | 'good' | 'fair' | 'poor' | 'damaged';\nexport type DepreciationMethod = 'straight_line' | 'reducing_balance' | 'none';\n\nexport interface Asset {\n id: string;\n name: string;\n description: string;\n category: string;\n status: AssetStatus;\n condition: AssetCondition;\n serialNumber: string;\n assetTag: string;\n location: string;\n assignedTo: string;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n // ─── Financial / depreciation (backend-computed where noted) ───\n purchaseValue?: number;\n purchaseDate?: string;\n usefulLifeMonths?: number;\n salvageValue?: number;\n depreciationMethod?: DepreciationMethod;\n department?: string;\n warrantyExpiry?: string;\n supplier?: string;\n disposalDate?: string;\n disposalMethod?: string;\n disposalNotes?: string;\n /** Computed book value (floored at salvage); undefined if no purchaseValue. */\n currentValue?: number;\n /** Computed accumulated depreciation. */\n accumulatedDepreciation?: number;\n /** Computed = purchaseValue + maintenance actualCost + work-order cost. */\n totalCostOfOwnership?: number;\n}\n\n// ─── ITIL Types ───────────────────────────────────────────────────\nexport type IncidentPriority = 'critical' | 'high' | 'medium' | 'low';\nexport type IncidentStatus = 'open' | 'in_progress' | 'resolved' | 'closed';\nexport type ChangeStatus =\n | 'draft'\n | 'submitted'\n | 'approved'\n | 'in_progress'\n | 'completed'\n | 'rejected';\nexport type ChangeRisk = 'low' | 'medium' | 'high' | 'critical';\nexport type ProblemStatus = 'open' | 'investigating' | 'known_error' | 'resolved' | 'closed';\n\nexport interface Incident {\n id: string;\n title: string;\n description: string;\n category: string;\n priority: IncidentPriority;\n status: IncidentStatus;\n assignedTo: string;\n reportedBy: string;\n createdAt: string;\n resolvedAt?: string;\n resolution?: string;\n slaBreached: boolean;\n}\n\nexport interface ChangeRequest {\n id: string;\n title: string;\n description: string;\n type: string;\n status: ChangeStatus;\n risk: ChangeRisk;\n requestedBy: string;\n assignedTo: string;\n affectedAssets: string[];\n scheduledStart: string;\n scheduledEnd: string;\n createdAt: string;\n approvals: { name: string; status: string; date: string }[];\n}\n\nexport interface Problem {\n id: string;\n title: string;\n description: string;\n status: ProblemStatus;\n priority: IncidentPriority;\n category: string;\n assignedTo: string;\n relatedIncidents: string[];\n rootCause?: string;\n workaround?: string;\n resolution?: string;\n createdAt: string;\n updatedAt: string;\n}\n\n// ─── Finance Types ────────────────────────────────────────────────\nexport type TransactionType = 'purchase' | 'lease' | 'disposal' | 'transfer' | 'maintenance';\nexport type TransactionStatus = 'pending' | 'approved' | 'completed' | 'rejected';\n\nexport interface FinanceTransaction {\n id: string;\n type: TransactionType;\n amount: number;\n currency: string;\n description: string;\n category: string;\n date: string;\n status: TransactionStatus;\n vendor?: string;\n department: string;\n}\n\nexport interface Budget {\n id: string;\n name: string;\n category: string;\n allocated: number;\n spent: number;\n remaining: number;\n period: string;\n department: string;\n status: 'on_track' | 'over_budget' | 'under_budget';\n}\n\nexport interface Invoice {\n id: string;\n number: string;\n vendor: string;\n amount: number;\n currency: string;\n issueDate: string;\n dueDate: string;\n status: 'draft' | 'sent' | 'paid' | 'overdue' | 'cancelled';\n items: { description: string; qty: number; unitPrice: number; total: number }[];\n relatedPO?: string;\n paidAt?: string;\n}\n\n// ─── Maintenance Types ────────────────────────────────────────────\nexport type MaintenancePriority = 'critical' | 'high' | 'medium' | 'low';\n\nexport interface MaintenanceRecord {\n id: string;\n assetId: string;\n type: string;\n priority: MaintenancePriority;\n status: string;\n title: string;\n description: string;\n scheduledDate?: string;\n completedDate?: string;\n estimatedCost?: number;\n actualCost?: number;\n checklist: { task: string; completed: boolean }[];\n}\n\n// ─── Security Types ───────────────────────────────────────────────\nexport interface SecurityEvent {\n id: string;\n type: string;\n severity: 'critical' | 'high' | 'medium' | 'low' | 'info';\n title: string;\n description: string;\n source: string;\n userId?: string;\n ipAddress?: string;\n timestamp: string;\n resolved: boolean;\n}\n\nexport interface ComplianceFramework {\n id: string;\n name: string;\n version: string;\n status: 'compliant' | 'non_compliant' | 'partial' | 'under_review';\n score: number;\n totalControls: number;\n passedControls: number;\n failedControls: number;\n lastAssessment: string;\n nextAssessment: string;\n lastAssessedAt?: string;\n}\n\nexport interface SecurityPolicy {\n id: string;\n name: string;\n description: string;\n category: string;\n status: 'active' | 'draft' | 'deprecated' | 'under_review';\n version: string;\n effectiveDate: string;\n reviewDate: string;\n owner: string;\n applicableTo: string[];\n}\n\n// ─── Operations Types ─────────────────────────────────────────────\nexport interface WorkOrder {\n id: string;\n title: string;\n description: string;\n priority: 'critical' | 'high' | 'medium' | 'low';\n status: 'draft' | 'scheduled' | 'approved' | 'in_progress' | 'completed' | 'cancelled';\n assignedTo: string;\n assetId: string;\n type: string;\n createdAt: string;\n completedAt?: string;\n}\n\n// ─── Dashboard Types ──────────────────────────────────────────────\nexport interface DashboardOverview {\n totalAssets: number;\n openIncidents: number;\n openWorkOrders: number;\n totalTransactions: number;\n}\n\n// ─── Bootstrap payload (raw backend shapes) ───────────────────────\nexport interface AssetHandlerBootstrapPayload {\n dashboardOverview?: {\n totalAssets?: number;\n openIncidents?: number;\n openWorkOrders?: number;\n totalTransactions?: number;\n } | null;\n assets?: Array<{\n id: string;\n assetNumber: string;\n name: string;\n description?: string | null;\n category: string;\n status: string;\n condition: string;\n serialNumber?: string | null;\n locationName?: string | null;\n assignedTo?: string | null;\n tags?: string[];\n createdAt?: string;\n updatedAt?: string;\n purchaseValue?: number | null;\n purchaseDate?: string | null;\n usefulLifeMonths?: number | null;\n salvageValue?: number | null;\n depreciationMethod?: string | null;\n department?: string | null;\n warrantyExpiry?: string | null;\n supplier?: string | null;\n disposalDate?: string | null;\n disposalMethod?: string | null;\n disposalNotes?: string | null;\n currentValue?: number | null;\n accumulatedDepreciation?: number | null;\n totalCostOfOwnership?: number | null;\n }> | null;\n incidents?: Array<{\n id: string;\n title: string;\n description: string;\n category: string;\n priority: string;\n status: string;\n assignedTo?: string | null;\n reportedBy: string;\n reportedAt: string;\n resolvedAt?: string | null;\n resolution?: string | null;\n slaBreached: boolean;\n }> | null;\n workOrders?: Array<{\n id: string;\n title: string;\n description?: string | null;\n type: string;\n status: string;\n priority: string;\n assetId?: string | null;\n assignedTo?: string | null;\n createdAt: string;\n completedAt?: string | null;\n }> | null;\n maintenanceRecords?: Array<{\n id: string;\n assetId: string;\n title: string;\n description?: string | null;\n type: string;\n status: string;\n priority: string;\n scheduledAt?: string | null;\n completedAt?: string | null;\n estimatedCost?: number | null;\n actualCost?: number | null;\n checklist?: Array<Record<string, unknown>>;\n }> | null;\n transactions?: Array<{\n id: string;\n type: string;\n status: string;\n amount: number;\n currency: string;\n category: string;\n description: string;\n vendor?: string | null;\n department?: string | null;\n occurredAt: string;\n }> | null;\n changeRequests?: Array<{\n id: string;\n title: string;\n description: string;\n type: string;\n status: string;\n risk: string;\n requestedBy: string;\n assignedTo?: string | null;\n affectedAssets: string[];\n scheduledStart?: string | null;\n scheduledEnd?: string | null;\n approvals?: Array<{ name?: string; status?: string; date?: string }>;\n createdAt: string;\n }> | null;\n problems?: Array<{\n id: string;\n title: string;\n description: string;\n status: string;\n priority: string;\n category: string;\n assignedTo?: string | null;\n relatedIncidents: string[];\n rootCause?: string | null;\n workaround?: string | null;\n resolution?: string | null;\n createdAt: string;\n updatedAt: string;\n }> | null;\n budgets?: Array<{\n id: string;\n name: string;\n category: string;\n allocated: number;\n spent: number;\n remaining: number;\n period: string;\n department: string;\n status: string;\n }> | null;\n invoices?: Array<{\n id: string;\n number: string;\n vendor: string;\n amount: number;\n currency: string;\n issueDate: string;\n dueDate: string;\n status: string;\n items?: Array<{ description?: string; qty?: number; unitPrice?: number; total?: number }>;\n relatedPO?: string | null;\n paidAt?: string | null;\n }> | null;\n securityEvents?: {\n items: Array<{\n id: string;\n eventType: string;\n severity: string;\n title: string;\n description?: string | null;\n source?: string | null;\n userId?: string | null;\n ipAddress?: string | null;\n occurredAt: string;\n resolved: boolean;\n }>;\n } | null;\n complianceFrameworks?: {\n items: Array<{\n id: string;\n name: string;\n version: string;\n status: string;\n score: number;\n totalControls: number;\n passedControls: number;\n failedControls: number;\n lastAssessment: string;\n nextAssessment: string;\n lastAssessedAt?: string | null;\n }>;\n } | null;\n securityPolicies?: {\n items: Array<{\n id: string;\n name: string;\n description?: string | null;\n category: string;\n status: string;\n version: string;\n effectiveDate: string;\n reviewDate: string;\n owner: string;\n applicableTo: string[];\n }>;\n } | null;\n}\n\ninterface AssetHandlerState {\n /** True once the bootstrap query has hydrated the store at least once. */\n hydrated: boolean;\n\n // Domain data — always sourced from the backend, never seeded locally.\n overview: DashboardOverview | null;\n assets: Asset[];\n incidents: Incident[];\n changeRequests: ChangeRequest[];\n problems: Problem[];\n transactions: FinanceTransaction[];\n budgets: Budget[];\n invoices: Invoice[];\n maintenanceRecords: MaintenanceRecord[];\n securityEvents: SecurityEvent[];\n complianceFrameworks: ComplianceFramework[];\n securityPolicies: SecurityPolicy[];\n workOrders: WorkOrder[];\n\n hydrateFromBootstrap: (payload: AssetHandlerBootstrapPayload) => void;\n\n /**\n * Imperative refetch of the bootstrap query, registered by the provider's\n * hydrator. Pages that mutate domain data can call `refetchBootstrap()` to\n * pull fresh store data. Prefer Apollo `refetchQueries: ['AssetHandlerBootstrap']`\n * on the mutation itself; use this for cross-component imperative refresh.\n */\n bootstrapRefetch: (() => void) | null;\n setBootstrapRefetch: (refetch: (() => void) | null) => void;\n refetchBootstrap: () => void;\n}\n\nexport const useAssetHandlerStore = create<AssetHandlerState>((set, get) => ({\n hydrated: false,\n\n bootstrapRefetch: null,\n setBootstrapRefetch: (refetch) => set({ bootstrapRefetch: refetch }),\n refetchBootstrap: () => {\n get().bootstrapRefetch?.();\n },\n\n overview: null,\n assets: [],\n incidents: [],\n changeRequests: [],\n problems: [],\n transactions: [],\n budgets: [],\n invoices: [],\n maintenanceRecords: [],\n securityEvents: [],\n complianceFrameworks: [],\n securityPolicies: [],\n workOrders: [],\n\n hydrateFromBootstrap: (payload) =>\n set(() => {\n const assets: Asset[] = (payload.assets ?? []).map((asset) => ({\n id: asset.id,\n name: asset.name,\n description: asset.description ?? '',\n category: asset.category.toLowerCase(),\n status: asset.status.toLowerCase() as AssetStatus,\n condition: asset.condition.toLowerCase() as AssetCondition,\n serialNumber: asset.serialNumber ?? '',\n assetTag: asset.assetNumber,\n location: asset.locationName ?? '',\n assignedTo: asset.assignedTo ?? '',\n tags: asset.tags ?? [],\n createdAt: asset.createdAt ?? '',\n updatedAt: asset.updatedAt ?? '',\n purchaseValue: asset.purchaseValue ?? undefined,\n purchaseDate: asset.purchaseDate ?? undefined,\n usefulLifeMonths: asset.usefulLifeMonths ?? undefined,\n salvageValue: asset.salvageValue ?? undefined,\n depreciationMethod: asset.depreciationMethod\n ? (asset.depreciationMethod.toLowerCase() as DepreciationMethod)\n : undefined,\n department: asset.department ?? undefined,\n warrantyExpiry: asset.warrantyExpiry ?? undefined,\n supplier: asset.supplier ?? undefined,\n disposalDate: asset.disposalDate ?? undefined,\n disposalMethod: asset.disposalMethod ?? undefined,\n disposalNotes: asset.disposalNotes ?? undefined,\n currentValue: asset.currentValue ?? undefined,\n accumulatedDepreciation: asset.accumulatedDepreciation ?? undefined,\n totalCostOfOwnership: asset.totalCostOfOwnership ?? undefined,\n }));\n\n const incidents: Incident[] = (payload.incidents ?? []).map((incident) => ({\n id: incident.id,\n title: incident.title,\n description: incident.description,\n category: incident.category,\n priority: incident.priority.toLowerCase() as IncidentPriority,\n status: incident.status.toLowerCase() as IncidentStatus,\n assignedTo: incident.assignedTo ?? '',\n reportedBy: incident.reportedBy,\n createdAt: incident.reportedAt,\n resolvedAt: incident.resolvedAt ?? undefined,\n resolution: incident.resolution ?? undefined,\n slaBreached: incident.slaBreached,\n }));\n\n const workOrders: WorkOrder[] = (payload.workOrders ?? []).map((workOrder) => ({\n id: workOrder.id,\n title: workOrder.title,\n description: workOrder.description ?? '',\n assetId: workOrder.assetId ?? '',\n priority: workOrder.priority.toLowerCase() as WorkOrder['priority'],\n status: workOrder.status.toLowerCase() as WorkOrder['status'],\n assignedTo: workOrder.assignedTo ?? '',\n createdAt: workOrder.createdAt,\n completedAt: workOrder.completedAt ?? undefined,\n type: workOrder.type.toLowerCase(),\n }));\n\n const maintenanceRecords: MaintenanceRecord[] = (payload.maintenanceRecords ?? []).map(\n (record) => ({\n id: record.id,\n assetId: record.assetId,\n type: record.type.toLowerCase(),\n priority: record.priority.toLowerCase() as MaintenancePriority,\n status: record.status.toLowerCase(),\n title: record.title,\n description: record.description ?? '',\n scheduledDate: record.scheduledAt ?? undefined,\n completedDate: record.completedAt ?? undefined,\n estimatedCost: record.estimatedCost ?? undefined,\n actualCost: record.actualCost ?? undefined,\n checklist: (record.checklist ?? []).map((item) => ({\n task: String(item.task ?? 'Task'),\n completed: Boolean(item.completed ?? false),\n })),\n })\n );\n\n const transactions: FinanceTransaction[] = (payload.transactions ?? []).map((tx) => ({\n id: tx.id,\n type: tx.type.toLowerCase() as TransactionType,\n amount: tx.amount,\n currency: tx.currency,\n description: tx.description,\n category: tx.category,\n date: tx.occurredAt,\n status: tx.status.toLowerCase() as TransactionStatus,\n vendor: tx.vendor ?? undefined,\n department: tx.department ?? '',\n }));\n\n const changeRequests: ChangeRequest[] = (payload.changeRequests ?? []).map((change) => ({\n id: change.id,\n title: change.title,\n description: change.description,\n type: change.type.toLowerCase(),\n status: change.status.toLowerCase() as ChangeStatus,\n risk: change.risk.toLowerCase() as ChangeRisk,\n requestedBy: change.requestedBy,\n assignedTo: change.assignedTo ?? '',\n affectedAssets: change.affectedAssets,\n scheduledStart: change.scheduledStart ?? '',\n scheduledEnd: change.scheduledEnd ?? '',\n createdAt: change.createdAt,\n approvals: (change.approvals ?? []).map((approval) => ({\n name: approval.name ?? 'Approver',\n status: approval.status ?? 'pending',\n date: approval.date ?? change.createdAt,\n })),\n }));\n\n const problems: Problem[] = (payload.problems ?? []).map((problem) => ({\n id: problem.id,\n title: problem.title,\n description: problem.description,\n status: problem.status.toLowerCase() as ProblemStatus,\n priority: problem.priority.toLowerCase() as IncidentPriority,\n category: problem.category,\n assignedTo: problem.assignedTo ?? '',\n relatedIncidents: problem.relatedIncidents,\n rootCause: problem.rootCause ?? undefined,\n workaround: problem.workaround ?? undefined,\n resolution: problem.resolution ?? undefined,\n createdAt: problem.createdAt,\n updatedAt: problem.updatedAt,\n }));\n\n const budgets: Budget[] = (payload.budgets ?? []).map((budget) => ({\n id: budget.id,\n name: budget.name,\n category: budget.category,\n allocated: budget.allocated,\n spent: budget.spent,\n remaining: budget.remaining,\n period: budget.period,\n department: budget.department,\n status: budget.status.toLowerCase() as Budget['status'],\n }));\n\n const invoices: Invoice[] = (payload.invoices ?? []).map((invoice) => ({\n id: invoice.id,\n number: invoice.number,\n vendor: invoice.vendor,\n amount: invoice.amount,\n currency: invoice.currency,\n issueDate: invoice.issueDate,\n dueDate: invoice.dueDate,\n status: invoice.status.toLowerCase() as Invoice['status'],\n items: (invoice.items ?? []).map((item) => ({\n description: item.description ?? 'Line item',\n qty: item.qty ?? 1,\n unitPrice: item.unitPrice ?? item.total ?? 0,\n total: item.total ?? item.unitPrice ?? 0,\n })),\n relatedPO: invoice.relatedPO ?? undefined,\n paidAt: invoice.paidAt ?? undefined,\n }));\n\n const securityEvents: SecurityEvent[] = (payload.securityEvents?.items ?? []).map((event) => ({\n id: event.id,\n type: event.eventType,\n severity: event.severity.toLowerCase() as SecurityEvent['severity'],\n title: event.title,\n description: event.description ?? '',\n source: event.source ?? 'security',\n userId: event.userId ?? undefined,\n ipAddress: event.ipAddress ?? undefined,\n timestamp: event.occurredAt,\n resolved: event.resolved,\n }));\n\n const complianceFrameworks: ComplianceFramework[] = (payload.complianceFrameworks?.items ?? []).map(\n (framework) => ({\n id: framework.id,\n name: framework.name,\n version: framework.version,\n status: framework.status.toLowerCase() as ComplianceFramework['status'],\n score: framework.score,\n totalControls: framework.totalControls,\n passedControls: framework.passedControls,\n failedControls: framework.failedControls,\n lastAssessment: framework.lastAssessment,\n nextAssessment: framework.nextAssessment,\n lastAssessedAt: framework.lastAssessedAt ?? undefined,\n })\n );\n\n const securityPolicies: SecurityPolicy[] = (payload.securityPolicies?.items ?? []).map((policy) => ({\n id: policy.id,\n name: policy.name,\n description: policy.description ?? '',\n category: policy.category,\n status: policy.status.toLowerCase() as SecurityPolicy['status'],\n version: policy.version,\n effectiveDate: policy.effectiveDate,\n reviewDate: policy.reviewDate,\n owner: policy.owner,\n applicableTo: policy.applicableTo,\n }));\n\n const overview: DashboardOverview | null = payload.dashboardOverview\n ? {\n totalAssets: payload.dashboardOverview.totalAssets ?? assets.length,\n openIncidents: payload.dashboardOverview.openIncidents ?? 0,\n openWorkOrders: payload.dashboardOverview.openWorkOrders ?? 0,\n totalTransactions: payload.dashboardOverview.totalTransactions ?? 0,\n }\n : null;\n\n return {\n hydrated: true,\n overview,\n assets,\n incidents,\n changeRequests,\n problems,\n workOrders,\n maintenanceRecords,\n transactions,\n budgets,\n invoices,\n securityEvents,\n complianceFrameworks,\n securityPolicies,\n };\n }),\n}));\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-assethandler",
3
- "version": "2026.703.12",
3
+ "version": "2026.707.1",
4
4
  "description": "Burdenoff AssetHandler Microfrontend",
5
5
  "type": "module",
6
6
  "files": [