@powerhousedao/network-admin 0.0.64 → 1.0.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/document-models/document-models.d.ts.map +1 -1
- package/dist/document-models/document-models.js +0 -2
- package/dist/document-models/index.d.ts +0 -1
- package/dist/document-models/index.d.ts.map +1 -1
- package/dist/document-models/index.js +0 -1
- package/dist/document-models/network-profile/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/document-model.js +84 -84
- package/dist/document-models/network-profile/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/ph-factories.js +0 -2
- package/dist/document-models/network-profile/gen/reducer.d.ts +0 -1
- package/dist/document-models/network-profile/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/types.d.ts +2 -6
- package/dist/document-models/network-profile/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/zod.d.ts +2 -8
- package/dist/document-models/network-profile/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/schema/zod.js +2 -6
- package/dist/document-models/network-profile/gen/utils.d.ts.map +1 -1
- package/dist/document-models/network-profile/gen/utils.js +1 -3
- package/dist/document-models/network-profile/hooks.d.ts +2 -2
- package/dist/document-models/network-profile/hooks.d.ts.map +1 -1
- package/dist/document-models/network-profile/module.d.ts +1 -1
- package/dist/document-models/network-profile/module.d.ts.map +1 -1
- package/dist/document-models/network-profile/module.js +1 -1
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts +1 -0
- package/dist/document-models/network-profile/src/reducers/network-profile-management.d.ts.map +1 -1
- package/dist/document-models/network-profile/src/reducers/network-profile-management.js +18 -27
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/network-profile/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/network-profile/src/tests/document-model.test.js +6 -92
- package/dist/document-models/network-profile/src/tests/network-profile-management.test.js +115 -69
- package/dist/document-models/payment-terms/actions.d.ts +2 -1
- package/dist/document-models/payment-terms/actions.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts +40 -1
- package/dist/document-models/payment-terms/gen/clauses/error.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/clauses/error.js +32 -1
- package/dist/document-models/payment-terms/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/document-model.js +180 -89
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts +26 -1
- package/dist/document-models/payment-terms/gen/milestones/error.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/milestones/error.js +18 -1
- package/dist/document-models/payment-terms/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/ph-factories.js +2 -1
- package/dist/document-models/payment-terms/gen/reducer.d.ts +0 -1
- package/dist/document-models/payment-terms/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/reducer.js +9 -4
- package/dist/document-models/payment-terms/gen/schema/types.d.ts +29 -14
- package/dist/document-models/payment-terms/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts +12 -36
- package/dist/document-models/payment-terms/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/schema/zod.js +55 -29
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts +9 -5
- package/dist/document-models/payment-terms/gen/terms/actions.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts +4 -3
- package/dist/document-models/payment-terms/gen/terms/creators.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/terms/creators.js +3 -2
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts +3 -2
- package/dist/document-models/payment-terms/gen/terms/operations.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/utils.d.ts.map +1 -1
- package/dist/document-models/payment-terms/gen/utils.js +3 -2
- package/dist/document-models/payment-terms/hooks.d.ts +2 -2
- package/dist/document-models/payment-terms/hooks.d.ts.map +1 -1
- package/dist/document-models/payment-terms/module.d.ts +1 -1
- package/dist/document-models/payment-terms/module.d.ts.map +1 -1
- package/dist/document-models/payment-terms/module.js +1 -1
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/clauses.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/clauses.js +15 -13
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/milestones.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/milestones.js +12 -10
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts +1 -0
- package/dist/document-models/payment-terms/src/reducers/terms.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/reducers/terms.js +24 -14
- package/dist/document-models/payment-terms/src/tests/clauses.test.js +21 -26
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/payment-terms/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/payment-terms/src/tests/document-model.test.js +6 -92
- package/dist/document-models/payment-terms/src/tests/milestones.test.js +19 -22
- package/dist/document-models/payment-terms/src/tests/terms.test.js +29 -24
- package/dist/document-models/payment-terms/tests/terms.test.js +15 -5
- package/dist/document-models/request-for-proposals/gen/document-model.js +4 -4
- package/dist/document-models/request-for-proposals/gen/ph-factories.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/ph-factories.js +4 -6
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts +0 -1
- package/dist/document-models/request-for-proposals/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts +9 -64
- package/dist/document-models/request-for-proposals/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/utils.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/gen/utils.js +5 -7
- package/dist/document-models/request-for-proposals/hooks.d.ts +2 -2
- package/dist/document-models/request-for-proposals/hooks.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/module.d.ts +1 -1
- package/dist/document-models/request-for-proposals/module.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/module.js +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/contex-document.js +4 -3
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/proposals.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/proposals.js +5 -4
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts +1 -0
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/reducers/rfp-state.js +3 -2
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/contex-document.test.js +181 -24
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/document-model.test.js +6 -92
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/proposals.test.js +327 -33
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts +1 -2
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.d.ts.map +1 -1
- package/dist/document-models/request-for-proposals/src/tests/rfp-state.test.js +240 -15
- package/dist/document-models/workstream/gen/document-model.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/document-model.js +16 -16
- package/dist/document-models/workstream/gen/reducer.d.ts +0 -1
- package/dist/document-models/workstream/gen/reducer.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/schema/types.d.ts +1 -1
- package/dist/document-models/workstream/gen/schema/types.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/schema/zod.d.ts +5 -35
- package/dist/document-models/workstream/gen/schema/zod.d.ts.map +1 -1
- package/dist/document-models/workstream/gen/utils.js +1 -1
- package/dist/document-models/workstream/hooks.d.ts +2 -2
- package/dist/document-models/workstream/hooks.d.ts.map +1 -1
- package/dist/document-models/workstream/module.d.ts +1 -1
- package/dist/document-models/workstream/module.d.ts.map +1 -1
- package/dist/document-models/workstream/module.js +1 -1
- package/dist/document-models/workstream/src/reducers/proposals.d.ts +1 -0
- package/dist/document-models/workstream/src/reducers/proposals.d.ts.map +1 -1
- package/dist/document-models/workstream/src/reducers/proposals.js +6 -83
- package/dist/document-models/workstream/src/reducers/workstream.d.ts +1 -0
- package/dist/document-models/workstream/src/reducers/workstream.d.ts.map +1 -1
- package/dist/document-models/workstream/src/reducers/workstream.js +7 -6
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts +0 -4
- package/dist/document-models/workstream/src/tests/document-model.test.d.ts.map +1 -1
- package/dist/document-models/workstream/src/tests/document-model.test.js +3 -89
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts +5 -0
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/proposals-reducers.test.js +318 -0
- package/dist/document-models/workstream/src/tests/proposals.test.js +25 -26
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts +5 -0
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.d.ts.map +1 -0
- package/dist/document-models/workstream/src/tests/workstream-reducers.test.js +210 -0
- package/dist/document-models/workstream/src/tests/workstream.test.js +29 -34
- package/dist/editors/hooks/useNetworkProfileDocument.d.ts +4 -0
- package/dist/editors/hooks/useNetworkProfileDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useNetworkProfileDocument.js +8 -0
- package/dist/editors/hooks/usePaymentTermsDocument.d.ts +4 -0
- package/dist/editors/hooks/usePaymentTermsDocument.d.ts.map +1 -0
- package/dist/editors/hooks/usePaymentTermsDocument.js +8 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.d.ts +4 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useRequestForProposalsDocument.js +8 -0
- package/dist/editors/hooks/useWorkstreamDocument.d.ts +4 -0
- package/dist/editors/hooks/useWorkstreamDocument.d.ts.map +1 -0
- package/dist/editors/hooks/useWorkstreamDocument.js +8 -0
- package/dist/editors/index.d.ts +6 -6
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +6 -6
- package/dist/editors/network-admin/components/CreateDocument.d.ts.map +1 -1
- package/dist/editors/network-admin/components/CreateDocument.js +12 -8
- package/dist/editors/network-admin/components/DriveExplorer.d.ts +1 -1
- package/dist/editors/network-admin/components/DriveExplorer.d.ts.map +1 -1
- package/dist/editors/network-admin/components/DriveExplorer.js +230 -53
- package/dist/editors/network-admin/components/FolderTree.d.ts +1 -9
- package/dist/editors/network-admin/components/FolderTree.d.ts.map +1 -1
- package/dist/editors/network-admin/components/FolderTree.js +55 -216
- package/dist/editors/network-admin/components/icons/PaymentIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/RfpIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/SowIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/components/icons/WorkstreamIcon.d.ts.map +1 -1
- package/dist/editors/network-admin/config.d.ts +0 -1
- package/dist/editors/network-admin/config.d.ts.map +1 -1
- package/dist/editors/network-admin/config.js +1 -1
- package/dist/editors/network-admin/editor.d.ts +1 -2
- package/dist/editors/network-admin/editor.d.ts.map +1 -1
- package/dist/editors/network-admin/editor.js +1 -4
- package/dist/editors/network-admin/index.d.ts +3 -0
- package/dist/editors/network-admin/index.d.ts.map +1 -0
- package/dist/editors/network-admin/index.js +10 -0
- package/dist/editors/network-profile/editor.d.ts +1 -1
- package/dist/editors/network-profile/editor.d.ts.map +1 -1
- package/dist/editors/network-profile/editor.js +13 -45
- package/dist/editors/network-profile/index.d.ts +4 -0
- package/dist/editors/network-profile/index.d.ts.map +1 -0
- package/dist/editors/network-profile/index.js +10 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts +10 -0
- package/dist/editors/payment-terms/basic-terms-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/basic-terms-tab.js +89 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts +12 -0
- package/dist/editors/payment-terms/clauses-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/clauses-tab.js +213 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts +10 -0
- package/dist/editors/payment-terms/cost-materials-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/cost-materials-tab.js +63 -0
- package/dist/editors/payment-terms/editor.d.ts +2 -0
- package/dist/editors/payment-terms/editor.d.ts.map +1 -1
- package/dist/editors/payment-terms/editor.js +55 -39
- package/dist/editors/payment-terms/escrow-tab.d.ts +10 -0
- package/dist/editors/payment-terms/escrow-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/escrow-tab.js +57 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts +10 -0
- package/dist/editors/payment-terms/evaluation-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/evaluation-tab.js +63 -0
- package/dist/editors/payment-terms/index.d.ts +4 -0
- package/dist/editors/payment-terms/index.d.ts.map +1 -0
- package/dist/editors/payment-terms/index.js +10 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts +10 -0
- package/dist/editors/payment-terms/milestones-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/milestones-tab.js +205 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts +10 -0
- package/dist/editors/payment-terms/retainer-tab.d.ts.map +1 -0
- package/dist/editors/payment-terms/retainer-tab.js +91 -0
- package/dist/editors/request-for-proposals/editor.d.ts.map +1 -1
- package/dist/editors/request-for-proposals/editor.js +4 -4
- package/dist/editors/request-for-proposals/index.d.ts +4 -0
- package/dist/editors/request-for-proposals/index.d.ts.map +1 -0
- package/dist/editors/request-for-proposals/index.js +10 -0
- package/dist/editors/request-for-proposals/markdown-editor.d.ts.map +1 -1
- package/dist/editors/request-for-proposals/markdown-editor.js +3 -3
- package/dist/editors/workstream/editor.d.ts.map +1 -1
- package/dist/editors/workstream/editor.js +165 -290
- package/dist/editors/workstream/index.d.ts +4 -0
- package/dist/editors/workstream/index.d.ts.map +1 -0
- package/dist/editors/workstream/index.js +10 -0
- package/dist/editors/workstream/project-management-import.d.ts +3 -0
- package/dist/editors/workstream/project-management-import.d.ts.map +1 -0
- package/dist/editors/workstream/project-management-import.js +5 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/powerhouse.manifest.json +6 -27
- package/dist/processors/factory.d.ts +1 -1
- package/dist/processors/factory.d.ts.map +1 -1
- package/dist/processors/factory.js +1 -1
- package/dist/processors/index.d.ts +1 -1
- package/dist/processors/index.d.ts.map +1 -1
- package/dist/processors/index.js +1 -1
- package/dist/processors/workstreams/factory.d.ts.map +1 -1
- package/dist/processors/workstreams/factory.js +1 -4
- package/dist/processors/workstreams/index.d.ts +2 -4
- package/dist/processors/workstreams/index.d.ts.map +1 -1
- package/dist/processors/workstreams/index.js +43 -102
- package/dist/processors/workstreams/migrations.d.ts.map +1 -1
- package/dist/processors/workstreams/migrations.js +15 -12
- package/dist/scripts/sow-mirror/mirror_sow_state.js +114 -119
- package/dist/style.css +6885 -6085
- package/dist/subgraphs/index.d.ts +5 -1
- package/dist/subgraphs/index.d.ts.map +1 -1
- package/dist/subgraphs/index.js +5 -1
- package/dist/subgraphs/network-profile/index.d.ts +11 -0
- package/dist/subgraphs/network-profile/index.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/index.js +11 -0
- package/dist/subgraphs/network-profile/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/resolvers.js +205 -0
- package/dist/subgraphs/network-profile/schema.d.ts.map +1 -0
- package/dist/subgraphs/network-profile/schema.js +139 -0
- package/dist/subgraphs/networks/resolvers.d.ts +2 -2
- package/dist/subgraphs/networks/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/networks/resolvers.js +8 -138
- package/dist/subgraphs/networks/schema.d.ts.map +1 -1
- package/dist/subgraphs/networks/schema.js +1 -66
- package/dist/subgraphs/{builders-addon → payment-terms}/index.d.ts +1 -1
- package/dist/subgraphs/payment-terms/index.d.ts.map +1 -0
- package/dist/subgraphs/{builders-addon → payment-terms}/index.js +2 -2
- package/dist/subgraphs/payment-terms/resolvers.d.ts +3 -0
- package/dist/subgraphs/payment-terms/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/payment-terms/resolvers.js +277 -0
- package/dist/subgraphs/payment-terms/schema.d.ts +3 -0
- package/dist/subgraphs/payment-terms/schema.d.ts.map +1 -0
- package/dist/subgraphs/payment-terms/schema.js +324 -0
- package/dist/subgraphs/request-for-proposals/index.d.ts +11 -0
- package/dist/subgraphs/request-for-proposals/index.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/index.js +11 -0
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts +3 -0
- package/dist/subgraphs/request-for-proposals/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/resolvers.js +145 -0
- package/dist/subgraphs/request-for-proposals/schema.d.ts +3 -0
- package/dist/subgraphs/request-for-proposals/schema.d.ts.map +1 -0
- package/dist/subgraphs/request-for-proposals/schema.js +232 -0
- package/dist/subgraphs/workstream/index.d.ts +11 -0
- package/dist/subgraphs/workstream/index.d.ts.map +1 -0
- package/dist/subgraphs/workstream/index.js +11 -0
- package/dist/subgraphs/workstream/resolvers.d.ts +3 -0
- package/dist/subgraphs/workstream/resolvers.d.ts.map +1 -0
- package/dist/subgraphs/workstream/resolvers.js +181 -0
- package/dist/subgraphs/workstream/schema.d.ts +3 -0
- package/dist/subgraphs/workstream/schema.d.ts.map +1 -0
- package/dist/subgraphs/workstream/schema.js +206 -0
- package/dist/subgraphs/workstreams/index.d.ts +1 -4
- package/dist/subgraphs/workstreams/index.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/index.js +0 -6
- package/dist/subgraphs/workstreams/resolvers.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/resolvers.js +30 -495
- package/dist/subgraphs/workstreams/schema.d.ts.map +1 -1
- package/dist/subgraphs/workstreams/schema.js +35 -228
- package/dist/vite.config.d.ts.map +1 -1
- package/dist/vite.config.js +1 -6
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +8 -0
- package/package.json +90 -56
- package/dist/document-models/builders/actions.d.ts +0 -14
- package/dist/document-models/builders/actions.d.ts.map +0 -1
- package/dist/document-models/builders/actions.js +0 -4
- package/dist/document-models/builders/gen/actions.d.ts +0 -4
- package/dist/document-models/builders/gen/actions.d.ts.map +0 -1
- package/dist/document-models/builders/gen/actions.js +0 -1
- package/dist/document-models/builders/gen/builders/actions.d.ts +0 -12
- package/dist/document-models/builders/gen/builders/actions.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/actions.js +0 -1
- package/dist/document-models/builders/gen/builders/creators.d.ts +0 -5
- package/dist/document-models/builders/gen/builders/creators.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/creators.js +0 -4
- package/dist/document-models/builders/gen/builders/error.d.ts +0 -2
- package/dist/document-models/builders/gen/builders/error.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/error.js +0 -1
- package/dist/document-models/builders/gen/builders/operations.d.ts +0 -8
- package/dist/document-models/builders/gen/builders/operations.d.ts.map +0 -1
- package/dist/document-models/builders/gen/builders/operations.js +0 -1
- package/dist/document-models/builders/gen/creators.d.ts +0 -3
- package/dist/document-models/builders/gen/creators.d.ts.map +0 -1
- package/dist/document-models/builders/gen/creators.js +0 -2
- package/dist/document-models/builders/gen/document-model.d.ts +0 -3
- package/dist/document-models/builders/gen/document-model.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-model.js +0 -59
- package/dist/document-models/builders/gen/document-schema.d.ts +0 -44
- package/dist/document-models/builders/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-schema.js +0 -33
- package/dist/document-models/builders/gen/document-type.d.ts +0 -2
- package/dist/document-models/builders/gen/document-type.d.ts.map +0 -1
- package/dist/document-models/builders/gen/document-type.js +0 -1
- package/dist/document-models/builders/gen/index.d.ts +0 -12
- package/dist/document-models/builders/gen/index.d.ts.map +0 -1
- package/dist/document-models/builders/gen/index.js +0 -11
- package/dist/document-models/builders/gen/ph-factories.d.ts +0 -23
- package/dist/document-models/builders/gen/ph-factories.d.ts.map +0 -1
- package/dist/document-models/builders/gen/ph-factories.js +0 -47
- package/dist/document-models/builders/gen/reducer.d.ts +0 -3
- package/dist/document-models/builders/gen/reducer.d.ts.map +0 -1
- package/dist/document-models/builders/gen/reducer.js +0 -23
- package/dist/document-models/builders/gen/schema/index.d.ts +0 -3
- package/dist/document-models/builders/gen/schema/index.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/index.js +0 -2
- package/dist/document-models/builders/gen/schema/types.d.ts +0 -158
- package/dist/document-models/builders/gen/schema/types.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/types.js +0 -1
- package/dist/document-models/builders/gen/schema/zod.d.ts +0 -13
- package/dist/document-models/builders/gen/schema/zod.d.ts.map +0 -1
- package/dist/document-models/builders/gen/schema/zod.js +0 -21
- package/dist/document-models/builders/gen/types.d.ts +0 -12
- package/dist/document-models/builders/gen/types.d.ts.map +0 -1
- package/dist/document-models/builders/gen/types.js +0 -1
- package/dist/document-models/builders/gen/utils.d.ts +0 -15
- package/dist/document-models/builders/gen/utils.d.ts.map +0 -1
- package/dist/document-models/builders/gen/utils.js +0 -51
- package/dist/document-models/builders/hooks.d.ts +0 -14
- package/dist/document-models/builders/hooks.d.ts.map +0 -1
- package/dist/document-models/builders/hooks.js +0 -25
- package/dist/document-models/builders/index.d.ts +0 -6
- package/dist/document-models/builders/index.d.ts.map +0 -1
- package/dist/document-models/builders/index.js +0 -5
- package/dist/document-models/builders/module.d.ts +0 -5
- package/dist/document-models/builders/module.d.ts.map +0 -1
- package/dist/document-models/builders/module.js +0 -11
- package/dist/document-models/builders/src/index.d.ts +0 -2
- package/dist/document-models/builders/src/index.d.ts.map +0 -1
- package/dist/document-models/builders/src/index.js +0 -1
- package/dist/document-models/builders/src/reducers/builders.d.ts +0 -3
- package/dist/document-models/builders/src/reducers/builders.d.ts.map +0 -1
- package/dist/document-models/builders/src/reducers/builders.js +0 -8
- package/dist/document-models/builders/src/tests/builders.test.d.ts +0 -6
- package/dist/document-models/builders/src/tests/builders.test.d.ts.map +0 -1
- package/dist/document-models/builders/src/tests/builders.test.js +0 -29
- package/dist/document-models/builders/src/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/builders/src/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/builders/src/tests/document-model.test.js +0 -104
- package/dist/document-models/builders/src/utils.d.ts +0 -2
- package/dist/document-models/builders/src/utils.d.ts.map +0 -1
- package/dist/document-models/builders/src/utils.js +0 -1
- package/dist/document-models/builders/tests/builders.test.d.ts +0 -2
- package/dist/document-models/builders/tests/builders.test.d.ts.map +0 -1
- package/dist/document-models/builders/tests/builders.test.js +0 -25
- package/dist/document-models/builders/tests/document-model.test.d.ts +0 -10
- package/dist/document-models/builders/tests/document-model.test.d.ts.map +0 -1
- package/dist/document-models/builders/tests/document-model.test.js +0 -104
- package/dist/document-models/builders/utils.d.ts +0 -14
- package/dist/document-models/builders/utils.d.ts.map +0 -1
- package/dist/document-models/builders/utils.js +0 -7
- package/dist/document-models/network-profile/gen/document-schema.d.ts +0 -80
- package/dist/document-models/network-profile/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/payment-terms/gen/document-schema.d.ts +0 -95
- package/dist/document-models/payment-terms/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/request-for-proposals/gen/document-schema.d.ts +0 -83
- package/dist/document-models/request-for-proposals/gen/document-schema.d.ts.map +0 -1
- package/dist/document-models/workstream/gen/document-schema.d.ts +0 -71
- package/dist/document-models/workstream/gen/document-schema.d.ts.map +0 -1
- package/dist/editors/builders/editor.d.ts +0 -3
- package/dist/editors/builders/editor.d.ts.map +0 -1
- package/dist/editors/builders/editor.js +0 -285
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts +0 -20
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.d.ts.map +0 -1
- package/dist/editors/builders/hooks/useRemoteBuilderProfiles.js +0 -57
- package/dist/editors/builders/module.d.ts +0 -4
- package/dist/editors/builders/module.d.ts.map +0 -1
- package/dist/editors/builders/module.js +0 -10
- package/dist/editors/builders/utils/graphql-client.d.ts +0 -41
- package/dist/editors/builders/utils/graphql-client.d.ts.map +0 -1
- package/dist/editors/builders/utils/graphql-client.js +0 -189
- package/dist/editors/editors.d.ts +0 -3
- package/dist/editors/editors.d.ts.map +0 -1
- package/dist/editors/editors.js +0 -14
- package/dist/editors/network-admin/components/DriveContents.d.ts +0 -3
- package/dist/editors/network-admin/components/DriveContents.d.ts.map +0 -1
- package/dist/editors/network-admin/components/DriveContents.js +0 -10
- package/dist/editors/network-admin/components/EmptyState.d.ts +0 -3
- package/dist/editors/network-admin/components/EmptyState.d.ts.map +0 -1
- package/dist/editors/network-admin/components/EmptyState.js +0 -10
- package/dist/editors/network-admin/components/Files.d.ts +0 -3
- package/dist/editors/network-admin/components/Files.d.ts.map +0 -1
- package/dist/editors/network-admin/components/Files.js +0 -12
- package/dist/editors/network-admin/components/Folders.d.ts +0 -3
- package/dist/editors/network-admin/components/Folders.d.ts.map +0 -1
- package/dist/editors/network-admin/components/Folders.js +0 -12
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts +0 -3
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.d.ts.map +0 -1
- package/dist/editors/network-admin/components/NavigationBreadcrumbs.js +0 -6
- package/dist/editors/network-admin/module.d.ts +0 -4
- package/dist/editors/network-admin/module.d.ts.map +0 -1
- package/dist/editors/network-admin/module.js +0 -10
- package/dist/editors/network-profile/components/EditName.d.ts +0 -3
- package/dist/editors/network-profile/components/EditName.d.ts.map +0 -1
- package/dist/editors/network-profile/components/EditName.js +0 -31
- package/dist/editors/network-profile/module.d.ts +0 -4
- package/dist/editors/network-profile/module.d.ts.map +0 -1
- package/dist/editors/network-profile/module.js +0 -10
- package/dist/editors/payment-terms/components/clauses-section.d.ts +0 -12
- package/dist/editors/payment-terms/components/clauses-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/clauses-section.js +0 -269
- package/dist/editors/payment-terms/components/escrow-section.d.ts +0 -13
- package/dist/editors/payment-terms/components/escrow-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/escrow-section.js +0 -72
- package/dist/editors/payment-terms/components/evaluation-section.d.ts +0 -13
- package/dist/editors/payment-terms/components/evaluation-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/evaluation-section.js +0 -94
- package/dist/editors/payment-terms/components/header-section.d.ts +0 -16
- package/dist/editors/payment-terms/components/header-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/header-section.js +0 -67
- package/dist/editors/payment-terms/components/milestones-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/milestones-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/milestones-section.js +0 -236
- package/dist/editors/payment-terms/components/parties-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/parties-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/parties-section.js +0 -36
- package/dist/editors/payment-terms/components/payment-config-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/payment-config-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/payment-config-section.js +0 -68
- package/dist/editors/payment-terms/components/time-materials-section.d.ts +0 -11
- package/dist/editors/payment-terms/components/time-materials-section.d.ts.map +0 -1
- package/dist/editors/payment-terms/components/time-materials-section.js +0 -68
- package/dist/editors/payment-terms/module.d.ts +0 -4
- package/dist/editors/payment-terms/module.d.ts.map +0 -1
- package/dist/editors/payment-terms/module.js +0 -10
- package/dist/editors/request-for-proposals/components/EditName.d.ts +0 -3
- package/dist/editors/request-for-proposals/components/EditName.d.ts.map +0 -1
- package/dist/editors/request-for-proposals/components/EditName.js +0 -31
- package/dist/editors/request-for-proposals/module.d.ts +0 -4
- package/dist/editors/request-for-proposals/module.d.ts.map +0 -1
- package/dist/editors/request-for-proposals/module.js +0 -10
- package/dist/editors/workstream/module.d.ts +0 -4
- package/dist/editors/workstream/module.d.ts.map +0 -1
- package/dist/editors/workstream/module.js +0 -10
- package/dist/subgraphs/builders-addon/index.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/resolvers.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/resolvers.js +0 -376
- package/dist/subgraphs/builders-addon/schema.d.ts.map +0 -1
- package/dist/subgraphs/builders-addon/schema.js +0 -209
- /package/dist/subgraphs/{builders-addon → network-profile}/resolvers.d.ts +0 -0
- /package/dist/subgraphs/{builders-addon → network-profile}/schema.d.ts +0 -0
|
@@ -2,41 +2,15 @@ import {} from "@powerhousedao/reactor-api";
|
|
|
2
2
|
import { WorkstreamsProcessor } from "../../processors/workstreams/index.js";
|
|
3
3
|
import {} from "../../document-models/request-for-proposals/index.js";
|
|
4
4
|
import {} from "../../document-models/workstream/index.js";
|
|
5
|
-
import { sql } from "kysely";
|
|
6
5
|
export const getResolvers = (subgraph) => {
|
|
7
6
|
const reactor = subgraph.reactor;
|
|
8
7
|
const db = subgraph.relationalDb;
|
|
9
|
-
// Shared state for builder profile resolution (used by field resolvers)
|
|
10
|
-
let getBuilderProfileByPhid = null;
|
|
11
8
|
const deriveSlug = (name) => name.toLowerCase().trim().split(/\s+/).join("-");
|
|
12
|
-
const extractPhid = (value) => {
|
|
13
|
-
if (typeof value === "string") {
|
|
14
|
-
// Return null for empty strings, otherwise return the string
|
|
15
|
-
return value.trim() || null;
|
|
16
|
-
}
|
|
17
|
-
if (value &&
|
|
18
|
-
typeof value === "object" &&
|
|
19
|
-
"id" in value &&
|
|
20
|
-
typeof value.id === "string") {
|
|
21
|
-
const id = value.id;
|
|
22
|
-
// Return null for empty strings
|
|
23
|
-
return id.trim() || null;
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
};
|
|
27
|
-
// Normalize drive IDs to match the format used by the processor factory
|
|
28
|
-
// reactor.getDrives() returns base64-like IDs (with + and =)
|
|
29
|
-
// but driveHeader.id in the factory uses - instead of +
|
|
30
|
-
// TODO: Report this inconsistency to @powerhousedao packages
|
|
31
|
-
const normalizeDriveId = (driveId) => {
|
|
32
|
-
return driveId.replace(/\+/g, "-").replace(/=+$/, "");
|
|
33
|
-
};
|
|
34
9
|
const getCandidateDrives = async () => {
|
|
35
10
|
try {
|
|
36
11
|
const drives = await reactor.getDrives?.();
|
|
37
|
-
if (Array.isArray(drives) && drives.length > 0)
|
|
38
|
-
return drives
|
|
39
|
-
}
|
|
12
|
+
if (Array.isArray(drives) && drives.length > 0)
|
|
13
|
+
return drives;
|
|
40
14
|
}
|
|
41
15
|
catch { }
|
|
42
16
|
return [];
|
|
@@ -91,102 +65,6 @@ export const getResolvers = (subgraph) => {
|
|
|
91
65
|
};
|
|
92
66
|
}
|
|
93
67
|
};
|
|
94
|
-
const loadNetworkProfile = async (networkId) => {
|
|
95
|
-
if (!networkId) {
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
try {
|
|
99
|
-
const networkDoc = await reactor.getDocument(networkId);
|
|
100
|
-
const state = networkDoc.state.global;
|
|
101
|
-
return {
|
|
102
|
-
name: state.name ?? null,
|
|
103
|
-
slug: state.name
|
|
104
|
-
? state.name.toLowerCase().trim().split(/\s+/).join("-")
|
|
105
|
-
: null,
|
|
106
|
-
icon: state.icon ?? null,
|
|
107
|
-
darkThemeIcon: state.darkThemeIcon ?? null,
|
|
108
|
-
logo: state.logo ?? null,
|
|
109
|
-
darkThemeLogo: state.darkThemeLogo ?? null,
|
|
110
|
-
logoBig: state.logoBig ?? null,
|
|
111
|
-
website: state.website ?? null,
|
|
112
|
-
description: state.description ?? null,
|
|
113
|
-
category: Array.isArray(state.category) ? state.category : null,
|
|
114
|
-
x: state.x ?? null,
|
|
115
|
-
github: state.github ?? null,
|
|
116
|
-
discord: state.discord ?? null,
|
|
117
|
-
youtube: state.youtube ?? null,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
return null;
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
// Helper function to collect SOWs from hydrated workstreams
|
|
125
|
-
const collectSowsFromWorkstreams = (workstreams) => {
|
|
126
|
-
const sowDocs = [];
|
|
127
|
-
for (const workstream of workstreams) {
|
|
128
|
-
if (workstream.sow) {
|
|
129
|
-
sowDocs.push(workstream.sow);
|
|
130
|
-
}
|
|
131
|
-
if (workstream.initialProposal?.sow) {
|
|
132
|
-
sowDocs.push(workstream.initialProposal.sow);
|
|
133
|
-
}
|
|
134
|
-
for (const altProposal of workstream.alternativeProposals || []) {
|
|
135
|
-
if (altProposal.sow) {
|
|
136
|
-
sowDocs.push(altProposal.sow);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return sowDocs;
|
|
141
|
-
};
|
|
142
|
-
// Helper function to fetch builder profiles for contributors
|
|
143
|
-
const fetchBuilderProfilesForContributors = async (contributorPhids) => {
|
|
144
|
-
const builderProfileMap = new Map();
|
|
145
|
-
if (contributorPhids.size > 0) {
|
|
146
|
-
const builderProfileDocs = await Promise.all(Array.from(contributorPhids).map(async (phid) => {
|
|
147
|
-
try {
|
|
148
|
-
return await reactor.getDocument(phid);
|
|
149
|
-
}
|
|
150
|
-
catch (error) {
|
|
151
|
-
console.warn(`Failed to fetch builder profile ${phid}:`, error);
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
}));
|
|
155
|
-
builderProfileDocs.forEach((doc) => {
|
|
156
|
-
if (doc && doc.header.documentType === "powerhouse/builder-profile") {
|
|
157
|
-
builderProfileMap.set(doc.header.id, doc);
|
|
158
|
-
// Also collect contributor PHIDs from these builder profiles
|
|
159
|
-
const state = doc.state.global;
|
|
160
|
-
if (state?.contributors && Array.isArray(state.contributors)) {
|
|
161
|
-
state.contributors.forEach((phid) => {
|
|
162
|
-
if (phid && !builderProfileMap.has(phid)) {
|
|
163
|
-
contributorPhids.add(phid);
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
// Fetch nested contributors if any were found
|
|
170
|
-
const nestedContributorPhids = Array.from(contributorPhids).filter((phid) => !builderProfileMap.has(phid));
|
|
171
|
-
if (nestedContributorPhids.length > 0) {
|
|
172
|
-
const nestedContributorDocs = await Promise.all(nestedContributorPhids.map(async (phid) => {
|
|
173
|
-
try {
|
|
174
|
-
return await reactor.getDocument(phid);
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
console.warn(`Failed to fetch contributor builder profile ${phid}:`, error);
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
}));
|
|
181
|
-
nestedContributorDocs.forEach((doc) => {
|
|
182
|
-
if (doc && doc.header.documentType === "powerhouse/builder-profile") {
|
|
183
|
-
builderProfileMap.set(doc.header.id, doc);
|
|
184
|
-
}
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
return builderProfileMap;
|
|
189
|
-
};
|
|
190
68
|
const hydrateWorkstreamRow = async (row) => {
|
|
191
69
|
try {
|
|
192
70
|
const doc = await reactor.getDocument(row.workstream_phid);
|
|
@@ -203,16 +81,14 @@ export const getResolvers = (subgraph) => {
|
|
|
203
81
|
status: p.status,
|
|
204
82
|
author: p.author,
|
|
205
83
|
}));
|
|
206
|
-
const [topSowDoc, topPaymentTermsDoc, initialSowDoc, initialPaymentTermsDoc, altSowDocs, altPaymentDocs, rfpDetails,
|
|
207
|
-
|
|
208
|
-
loadLinkedDocument(state.sow || null),
|
|
84
|
+
const [topSowDoc, topPaymentTermsDoc, initialSowDoc, initialPaymentTermsDoc, altSowDocs, altPaymentDocs, rfpDetails,] = await Promise.all([
|
|
85
|
+
loadLinkedDocument(state.sow || row.sow_phid || null),
|
|
209
86
|
loadLinkedDocument(state.paymentTerms || null),
|
|
210
|
-
loadLinkedDocument(state.initialProposal?.sow || null),
|
|
87
|
+
loadLinkedDocument(state.initialProposal?.sow || row.sow_phid || null),
|
|
211
88
|
loadLinkedDocument(state.initialProposal?.paymentTerms || null),
|
|
212
89
|
Promise.all((state.alternativeProposals || []).map((p) => loadLinkedDocument(p.sow || null))),
|
|
213
90
|
Promise.all((state.alternativeProposals || []).map((p) => loadLinkedDocument(p.paymentTerms || null))),
|
|
214
91
|
loadRfpDetails(state.rfp || null),
|
|
215
|
-
loadNetworkProfile(state.client?.id || row.network_phid || null),
|
|
216
92
|
]);
|
|
217
93
|
const client = state.client ??
|
|
218
94
|
(row.network_phid
|
|
@@ -221,12 +97,8 @@ export const getResolvers = (subgraph) => {
|
|
|
221
97
|
return {
|
|
222
98
|
code: state.code || null,
|
|
223
99
|
title: state.title || row.workstream_title || null,
|
|
224
|
-
slug: state.title
|
|
225
|
-
? state.title.toLowerCase().trim().split(/\s+/).join("-")
|
|
226
|
-
: null,
|
|
227
100
|
status: state.status || row.workstream_status || null,
|
|
228
101
|
client,
|
|
229
|
-
network: networkInfo,
|
|
230
102
|
rfp: rfpDetails,
|
|
231
103
|
initialProposal: initialProposalBase
|
|
232
104
|
? {
|
|
@@ -246,16 +118,13 @@ export const getResolvers = (subgraph) => {
|
|
|
246
118
|
};
|
|
247
119
|
}
|
|
248
120
|
catch {
|
|
249
|
-
const networkInfo = await loadNetworkProfile(row.network_phid || null);
|
|
250
121
|
return {
|
|
251
122
|
code: row.workstream_title || null,
|
|
252
123
|
title: row.workstream_title || null,
|
|
253
|
-
slug: row.workstream_slug || null,
|
|
254
124
|
status: row.workstream_status || null,
|
|
255
125
|
client: row.network_phid
|
|
256
126
|
? { id: row.network_phid, name: row.network_slug, icon: null }
|
|
257
127
|
: null,
|
|
258
|
-
network: networkInfo,
|
|
259
128
|
rfp: null,
|
|
260
129
|
initialProposal: null,
|
|
261
130
|
alternativeProposals: [],
|
|
@@ -266,22 +135,12 @@ export const getResolvers = (subgraph) => {
|
|
|
266
135
|
}
|
|
267
136
|
};
|
|
268
137
|
const applyWorkstreamFilters = (qb, filters, wantedSlug) => {
|
|
269
|
-
|
|
270
|
-
if ("workstreamId" in filters && filters.workstreamId) {
|
|
138
|
+
if (filters.workstreamId) {
|
|
271
139
|
qb = qb.where("workstream_phid", "=", filters.workstreamId);
|
|
272
140
|
}
|
|
273
|
-
else if (
|
|
141
|
+
else if (filters.workstreamSlug) {
|
|
274
142
|
qb = qb.where("workstream_slug", "=", filters.workstreamSlug);
|
|
275
143
|
}
|
|
276
|
-
// Handle workstreamTitle filter (from WorkstreamsFilter)
|
|
277
|
-
if ("workstreamTitle" in filters && filters.workstreamTitle) {
|
|
278
|
-
// Use case-insensitive partial match for workstream title
|
|
279
|
-
// Filter out NULL values and do case-insensitive search
|
|
280
|
-
const searchPattern = `%${filters.workstreamTitle.toLowerCase()}%`;
|
|
281
|
-
qb = qb
|
|
282
|
-
.where("workstream_title", "is not", null)
|
|
283
|
-
.where((eb) => eb(sql `LOWER(workstream_title)`, "like", searchPattern));
|
|
284
|
-
}
|
|
285
144
|
if (filters.networkId) {
|
|
286
145
|
qb = qb.where("network_phid", "=", filters.networkId);
|
|
287
146
|
}
|
|
@@ -291,15 +150,6 @@ export const getResolvers = (subgraph) => {
|
|
|
291
150
|
else if (filters.networkName && wantedSlug) {
|
|
292
151
|
qb = qb.where("network_slug", "=", wantedSlug);
|
|
293
152
|
}
|
|
294
|
-
else if ("networkNames" in filters && filters.networkNames) {
|
|
295
|
-
// Handle networkNames filter (from WorkstreamsFilter)
|
|
296
|
-
const networkSlugs = filters.networkNames
|
|
297
|
-
.filter((name) => Boolean(name))
|
|
298
|
-
.map((name) => deriveSlug(name));
|
|
299
|
-
if (networkSlugs.length > 0) {
|
|
300
|
-
qb = qb.where("network_slug", "in", networkSlugs);
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
153
|
const statuses = (filters.workstreamStatuses || []).filter((status) => Boolean(status));
|
|
304
154
|
if (statuses.length > 0) {
|
|
305
155
|
qb = qb.where("workstream_status", "in", statuses);
|
|
@@ -332,21 +182,13 @@ export const getResolvers = (subgraph) => {
|
|
|
332
182
|
};
|
|
333
183
|
return {
|
|
334
184
|
Query: {
|
|
335
|
-
processorWorkstreams: async () => {
|
|
185
|
+
processorWorkstreams: async (parent, args) => {
|
|
336
186
|
const drives = await getCandidateDrives();
|
|
337
187
|
const allProcessorWorkstreams = await Promise.all(drives.map(async (driveId) => {
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
.selectFrom("workstreams")
|
|
343
|
-
.selectAll()
|
|
344
|
-
.execute();
|
|
345
|
-
}
|
|
346
|
-
catch (error) {
|
|
347
|
-
console.warn(`[WorkstreamsProcessor] Failed to query namespace ${namespace}:`, error);
|
|
348
|
-
return []; // Return empty array if table doesn't exist for this drive
|
|
349
|
-
}
|
|
188
|
+
return WorkstreamsProcessor.query(driveId, db)
|
|
189
|
+
.selectFrom("workstreams")
|
|
190
|
+
.selectAll()
|
|
191
|
+
.execute();
|
|
350
192
|
}));
|
|
351
193
|
// Flatten the array of arrays into a single array
|
|
352
194
|
const flattenedWorkstreams = allProcessorWorkstreams.flat();
|
|
@@ -369,100 +211,18 @@ export const getResolvers = (subgraph) => {
|
|
|
369
211
|
const candidateDrives = await getCandidateDrives();
|
|
370
212
|
const wantedSlug = filters.networkSlug ||
|
|
371
213
|
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
372
|
-
|
|
373
|
-
const contributorPhids = new Set();
|
|
214
|
+
let resolved = null;
|
|
374
215
|
for (const driveId of candidateDrives) {
|
|
375
216
|
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
376
217
|
.selectFrom("workstreams")
|
|
377
218
|
.selectAll();
|
|
378
219
|
qb = applyWorkstreamFilters(qb, filters, wantedSlug);
|
|
379
|
-
const
|
|
380
|
-
if (
|
|
220
|
+
const row = await qb.executeTakeFirst();
|
|
221
|
+
if (!row)
|
|
381
222
|
continue;
|
|
382
|
-
|
|
383
|
-
for (const row of rows) {
|
|
384
|
-
const hydrated = await hydrateWorkstreamRow(row);
|
|
385
|
-
resolved.push(hydrated);
|
|
386
|
-
}
|
|
223
|
+
resolved = await hydrateWorkstreamRow(row);
|
|
387
224
|
break;
|
|
388
225
|
}
|
|
389
|
-
// Collect SOWs and their contributors
|
|
390
|
-
const sowDocs = collectSowsFromWorkstreams(resolved);
|
|
391
|
-
for (const sow of sowDocs) {
|
|
392
|
-
if (!sow || typeof sow !== "object")
|
|
393
|
-
continue;
|
|
394
|
-
if (Array.isArray(sow.contributors)) {
|
|
395
|
-
sow.contributors.forEach((contributor) => {
|
|
396
|
-
const phid = extractPhid(contributor);
|
|
397
|
-
if (phid)
|
|
398
|
-
contributorPhids.add(phid);
|
|
399
|
-
});
|
|
400
|
-
}
|
|
401
|
-
// Collect deliverable owners too so `SOW_Deliverable.owner` can resolve
|
|
402
|
-
if (Array.isArray(sow.deliverables)) {
|
|
403
|
-
sow.deliverables.forEach((deliverable) => {
|
|
404
|
-
if (!deliverable || typeof deliverable !== "object")
|
|
405
|
-
return;
|
|
406
|
-
const phid = extractPhid(deliverable.owner);
|
|
407
|
-
if (phid)
|
|
408
|
-
contributorPhids.add(phid);
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
// Collect project owners too so `SOW_Project.projectOwner` can resolve
|
|
412
|
-
if (Array.isArray(sow.projects)) {
|
|
413
|
-
sow.projects.forEach((project) => {
|
|
414
|
-
if (!project || typeof project !== "object")
|
|
415
|
-
return;
|
|
416
|
-
const phid = extractPhid(project.projectOwner);
|
|
417
|
-
if (phid)
|
|
418
|
-
contributorPhids.add(phid);
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
// Fetch all builder profile documents for contributors
|
|
423
|
-
const builderProfileMap = await fetchBuilderProfilesForContributors(contributorPhids);
|
|
424
|
-
// Create helper function to get builder profile data by PHID
|
|
425
|
-
getBuilderProfileByPhid = (phid) => {
|
|
426
|
-
const doc = builderProfileMap.get(phid);
|
|
427
|
-
if (!doc)
|
|
428
|
-
return null;
|
|
429
|
-
const state = doc.state.global;
|
|
430
|
-
// Store contributor PHIDs separately - they'll be resolved by the field resolver
|
|
431
|
-
const contributorPhids = state?.contributors ?? [];
|
|
432
|
-
// Ensure all non-nullable Builder fields are properly handled
|
|
433
|
-
// name: String! - non-nullable
|
|
434
|
-
const name = String(state?.name ?? doc.header?.name ?? "");
|
|
435
|
-
// icon: String! - non-nullable
|
|
436
|
-
const icon = String(state?.icon ?? "");
|
|
437
|
-
// description: String! - non-nullable
|
|
438
|
-
const description = String(state?.description ?? state?.slug ?? "");
|
|
439
|
-
// isOperator: Boolean! - non-nullable, default to false
|
|
440
|
-
const isOperator = state?.isOperator ?? false;
|
|
441
|
-
// operationalHubMember: OpHubMember! - non-nullable
|
|
442
|
-
const operationalHubMember = state?.operationalHubMember ?? { name: null, phid: null };
|
|
443
|
-
// skills: [BuilderSkill!]! - non-nullable array (document model uses 'skils' typo)
|
|
444
|
-
const skills = Array.isArray(state?.skils) ? state.skils : Array.isArray(state?.skills) ? state.skills : [];
|
|
445
|
-
// scopes: [BuilderScope!]! - non-nullable array
|
|
446
|
-
const scopes = Array.isArray(state?.scopes) ? state.scopes : [];
|
|
447
|
-
// links: [BuilderLink!]! - non-nullable array
|
|
448
|
-
const links = Array.isArray(state?.links) ? state.links : [];
|
|
449
|
-
return {
|
|
450
|
-
id: doc.header.id,
|
|
451
|
-
code: state?.code ?? null,
|
|
452
|
-
slug: state?.slug ?? null,
|
|
453
|
-
name,
|
|
454
|
-
icon,
|
|
455
|
-
description,
|
|
456
|
-
lastModified: state?.lastModified ?? null,
|
|
457
|
-
isOperator,
|
|
458
|
-
operationalHubMember,
|
|
459
|
-
_contributorPhids: contributorPhids, // Internal field for resolver
|
|
460
|
-
status: state?.status ?? null,
|
|
461
|
-
skills,
|
|
462
|
-
scopes,
|
|
463
|
-
links,
|
|
464
|
-
};
|
|
465
|
-
};
|
|
466
226
|
return resolved;
|
|
467
227
|
},
|
|
468
228
|
workstreams: async (parent, args) => {
|
|
@@ -472,21 +232,26 @@ export const getResolvers = (subgraph) => {
|
|
|
472
232
|
const hasFilters = filters.networkId ||
|
|
473
233
|
filters.networkSlug ||
|
|
474
234
|
filters.networkName ||
|
|
475
|
-
(filters.networkNames && filters.networkNames.length > 0) ||
|
|
476
|
-
filters.workstreamTitle ||
|
|
477
235
|
filters.workstreamStatus ||
|
|
478
|
-
(filters.workstreamStatuses &&
|
|
236
|
+
(filters.workstreamStatuses &&
|
|
237
|
+
filters.workstreamStatuses.length > 0);
|
|
479
238
|
const wantedSlug = filters.networkSlug ||
|
|
480
239
|
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
481
240
|
const results = [];
|
|
482
|
-
const contributorPhids = new Set();
|
|
483
241
|
for (const driveId of candidateDrives) {
|
|
484
242
|
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
485
243
|
.selectFrom("workstreams")
|
|
486
244
|
.selectAll();
|
|
487
245
|
// Only apply filters if any are provided
|
|
488
246
|
if (hasFilters) {
|
|
489
|
-
|
|
247
|
+
const filterArgs = {
|
|
248
|
+
networkId: filters.networkId,
|
|
249
|
+
networkSlug: filters.networkSlug,
|
|
250
|
+
networkName: filters.networkName,
|
|
251
|
+
workstreamStatus: filters.workstreamStatus,
|
|
252
|
+
workstreamStatuses: filters.workstreamStatuses,
|
|
253
|
+
};
|
|
254
|
+
qb = applyWorkstreamFilters(qb, filterArgs, wantedSlug);
|
|
490
255
|
}
|
|
491
256
|
const rows = await qb.execute();
|
|
492
257
|
if (rows.length === 0) {
|
|
@@ -497,83 +262,6 @@ export const getResolvers = (subgraph) => {
|
|
|
497
262
|
results.push(hydrated);
|
|
498
263
|
}
|
|
499
264
|
}
|
|
500
|
-
// Collect SOWs and their contributors
|
|
501
|
-
const sowDocs = collectSowsFromWorkstreams(results);
|
|
502
|
-
for (const sow of sowDocs) {
|
|
503
|
-
if (!sow || typeof sow !== "object")
|
|
504
|
-
continue;
|
|
505
|
-
if (Array.isArray(sow.contributors)) {
|
|
506
|
-
sow.contributors.forEach((contributor) => {
|
|
507
|
-
const phid = extractPhid(contributor);
|
|
508
|
-
if (phid)
|
|
509
|
-
contributorPhids.add(phid);
|
|
510
|
-
});
|
|
511
|
-
}
|
|
512
|
-
// Collect deliverable owners too so `SOW_Deliverable.owner` can resolve
|
|
513
|
-
if (Array.isArray(sow.deliverables)) {
|
|
514
|
-
sow.deliverables.forEach((deliverable) => {
|
|
515
|
-
if (!deliverable || typeof deliverable !== "object")
|
|
516
|
-
return;
|
|
517
|
-
const phid = extractPhid(deliverable.owner);
|
|
518
|
-
if (phid)
|
|
519
|
-
contributorPhids.add(phid);
|
|
520
|
-
});
|
|
521
|
-
}
|
|
522
|
-
// Collect project owners too so `SOW_Project.projectOwner` can resolve
|
|
523
|
-
if (Array.isArray(sow.projects)) {
|
|
524
|
-
sow.projects.forEach((project) => {
|
|
525
|
-
if (!project || typeof project !== "object")
|
|
526
|
-
return;
|
|
527
|
-
const phid = extractPhid(project.projectOwner);
|
|
528
|
-
if (phid)
|
|
529
|
-
contributorPhids.add(phid);
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
// Fetch all builder profile documents for contributors
|
|
534
|
-
const builderProfileMap = await fetchBuilderProfilesForContributors(contributorPhids);
|
|
535
|
-
// Create helper function to get builder profile data by PHID
|
|
536
|
-
getBuilderProfileByPhid = (phid) => {
|
|
537
|
-
const doc = builderProfileMap.get(phid);
|
|
538
|
-
if (!doc)
|
|
539
|
-
return null;
|
|
540
|
-
const state = doc.state.global;
|
|
541
|
-
// Store contributor PHIDs separately - they'll be resolved by the field resolver
|
|
542
|
-
const contributorPhids = state?.contributors ?? [];
|
|
543
|
-
// Ensure all non-nullable Builder fields are properly handled
|
|
544
|
-
// name: String! - non-nullable
|
|
545
|
-
const name = String(state?.name ?? doc.header?.name ?? "");
|
|
546
|
-
// icon: String! - non-nullable
|
|
547
|
-
const icon = String(state?.icon ?? "");
|
|
548
|
-
// description: String! - non-nullable
|
|
549
|
-
const description = String(state?.description ?? state?.slug ?? "");
|
|
550
|
-
// isOperator: Boolean! - non-nullable, default to false
|
|
551
|
-
const isOperator = state?.isOperator ?? false;
|
|
552
|
-
// operationalHubMember: OpHubMember! - non-nullable
|
|
553
|
-
const operationalHubMember = state?.operationalHubMember ?? { name: null, phid: null };
|
|
554
|
-
// skills: [BuilderSkill!]! - non-nullable array (document model uses 'skils' typo)
|
|
555
|
-
const skills = Array.isArray(state?.skils) ? state.skils : Array.isArray(state?.skills) ? state.skills : [];
|
|
556
|
-
// scopes: [BuilderScope!]! - non-nullable array
|
|
557
|
-
const scopes = Array.isArray(state?.scopes) ? state.scopes : [];
|
|
558
|
-
// links: [BuilderLink!]! - non-nullable array
|
|
559
|
-
const links = Array.isArray(state?.links) ? state.links : [];
|
|
560
|
-
return {
|
|
561
|
-
id: doc.header.id,
|
|
562
|
-
code: state?.code ?? null,
|
|
563
|
-
slug: state?.slug ?? null,
|
|
564
|
-
name,
|
|
565
|
-
icon,
|
|
566
|
-
description,
|
|
567
|
-
lastModified: state?.lastModified ?? null,
|
|
568
|
-
isOperator,
|
|
569
|
-
operationalHubMember,
|
|
570
|
-
_contributorPhids: contributorPhids, // Internal field for resolver
|
|
571
|
-
status: state?.status ?? null,
|
|
572
|
-
skills,
|
|
573
|
-
scopes,
|
|
574
|
-
links,
|
|
575
|
-
};
|
|
576
|
-
};
|
|
577
265
|
return results;
|
|
578
266
|
},
|
|
579
267
|
rfpByWorkstream: async (parent, args) => {
|
|
@@ -612,7 +300,6 @@ export const getResolvers = (subgraph) => {
|
|
|
612
300
|
const wantedSlug = filters.networkSlug ||
|
|
613
301
|
(filters.networkName ? deriveSlug(filters.networkName) : undefined);
|
|
614
302
|
const results = [];
|
|
615
|
-
const contributorPhids = new Set();
|
|
616
303
|
for (const driveId of candidateDrives) {
|
|
617
304
|
let qb = WorkstreamsProcessor.query(driveId, db)
|
|
618
305
|
.selectFrom("workstreams")
|
|
@@ -655,43 +342,10 @@ export const getResolvers = (subgraph) => {
|
|
|
655
342
|
else if (filters.proposalRole === "AWARDED") {
|
|
656
343
|
// For AWARDED, we check if the workstream status is AWARDED
|
|
657
344
|
// and return the initial proposal's SOW (as it's typically the awarded one)
|
|
658
|
-
if (hydrated.status === "AWARDED" &&
|
|
659
|
-
hydrated.initialProposal?.sow) {
|
|
345
|
+
if (hydrated.status === "AWARDED" && hydrated.initialProposal?.sow) {
|
|
660
346
|
sowDocs.push(hydrated.initialProposal.sow);
|
|
661
347
|
}
|
|
662
348
|
}
|
|
663
|
-
// Collect contributor PHIDs from all SOWs
|
|
664
|
-
for (const sow of sowDocs) {
|
|
665
|
-
if (!sow || typeof sow !== "object")
|
|
666
|
-
continue;
|
|
667
|
-
if (Array.isArray(sow.contributors)) {
|
|
668
|
-
sow.contributors.forEach((contributor) => {
|
|
669
|
-
const phid = extractPhid(contributor);
|
|
670
|
-
if (phid)
|
|
671
|
-
contributorPhids.add(phid);
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
|
-
// Collect deliverable owners too so `SOW_Deliverable.owner` can resolve
|
|
675
|
-
if (Array.isArray(sow.deliverables)) {
|
|
676
|
-
sow.deliverables.forEach((deliverable) => {
|
|
677
|
-
if (!deliverable || typeof deliverable !== "object")
|
|
678
|
-
return;
|
|
679
|
-
const phid = extractPhid(deliverable.owner);
|
|
680
|
-
if (phid)
|
|
681
|
-
contributorPhids.add(phid);
|
|
682
|
-
});
|
|
683
|
-
}
|
|
684
|
-
// Collect project owners too so `SOW_Project.projectOwner` can resolve
|
|
685
|
-
if (Array.isArray(sow.projects)) {
|
|
686
|
-
sow.projects.forEach((project) => {
|
|
687
|
-
if (!project || typeof project !== "object")
|
|
688
|
-
return;
|
|
689
|
-
const phid = extractPhid(project.projectOwner);
|
|
690
|
-
if (phid)
|
|
691
|
-
contributorPhids.add(phid);
|
|
692
|
-
});
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
349
|
// Filter out null/undefined SOWs and add to results
|
|
696
350
|
for (const sow of sowDocs) {
|
|
697
351
|
if (sow) {
|
|
@@ -703,58 +357,13 @@ export const getResolvers = (subgraph) => {
|
|
|
703
357
|
break;
|
|
704
358
|
}
|
|
705
359
|
}
|
|
706
|
-
// Fetch all builder profile documents for contributors
|
|
707
|
-
const builderProfileMap = await fetchBuilderProfilesForContributors(contributorPhids);
|
|
708
|
-
// Create helper function to get builder profile data by PHID
|
|
709
|
-
getBuilderProfileByPhid = (phid) => {
|
|
710
|
-
const doc = builderProfileMap.get(phid);
|
|
711
|
-
if (!doc)
|
|
712
|
-
return null;
|
|
713
|
-
const state = doc.state.global;
|
|
714
|
-
// Store contributor PHIDs separately - they'll be resolved by the field resolver
|
|
715
|
-
const contributorPhids = state?.contributors ?? [];
|
|
716
|
-
// Ensure all non-nullable Builder fields are properly handled
|
|
717
|
-
// name: String! - non-nullable
|
|
718
|
-
const name = String(state?.name ?? doc.header?.name ?? "");
|
|
719
|
-
// icon: String! - non-nullable
|
|
720
|
-
const icon = String(state?.icon ?? "");
|
|
721
|
-
// description: String! - non-nullable
|
|
722
|
-
const description = String(state?.description ?? state?.slug ?? "");
|
|
723
|
-
// isOperator: Boolean! - non-nullable, default to false
|
|
724
|
-
const isOperator = state?.isOperator ?? false;
|
|
725
|
-
// operationalHubMember: OpHubMember! - non-nullable
|
|
726
|
-
const operationalHubMember = state?.operationalHubMember ?? { name: null, phid: null };
|
|
727
|
-
// skills: [BuilderSkill!]! - non-nullable array (document model uses 'skils' typo)
|
|
728
|
-
const skills = Array.isArray(state?.skils) ? state.skils : Array.isArray(state?.skills) ? state.skills : [];
|
|
729
|
-
// scopes: [BuilderScope!]! - non-nullable array
|
|
730
|
-
const scopes = Array.isArray(state?.scopes) ? state.scopes : [];
|
|
731
|
-
// links: [BuilderLink!]! - non-nullable array
|
|
732
|
-
const links = Array.isArray(state?.links) ? state.links : [];
|
|
733
|
-
return {
|
|
734
|
-
id: doc.header.id,
|
|
735
|
-
code: state?.code ?? null,
|
|
736
|
-
slug: state?.slug ?? null,
|
|
737
|
-
name,
|
|
738
|
-
icon,
|
|
739
|
-
description,
|
|
740
|
-
lastModified: state?.lastModified ?? null,
|
|
741
|
-
isOperator,
|
|
742
|
-
operationalHubMember,
|
|
743
|
-
_contributorPhids: contributorPhids, // Internal field for resolver
|
|
744
|
-
status: state?.status ?? null,
|
|
745
|
-
skills,
|
|
746
|
-
scopes,
|
|
747
|
-
links,
|
|
748
|
-
};
|
|
749
|
-
};
|
|
750
360
|
return results;
|
|
751
361
|
},
|
|
752
362
|
},
|
|
753
363
|
SOW_Progress: {
|
|
754
364
|
__resolveType(obj) {
|
|
755
365
|
if (obj && typeof obj === "object") {
|
|
756
|
-
if (Object.prototype.hasOwnProperty.call(obj, "total") &&
|
|
757
|
-
Object.prototype.hasOwnProperty.call(obj, "completed")) {
|
|
366
|
+
if (Object.prototype.hasOwnProperty.call(obj, "total") && Object.prototype.hasOwnProperty.call(obj, "completed")) {
|
|
758
367
|
return "SOW_StoryPoint";
|
|
759
368
|
}
|
|
760
369
|
if (Object.prototype.hasOwnProperty.call(obj, "value")) {
|
|
@@ -765,81 +374,7 @@ export const getResolvers = (subgraph) => {
|
|
|
765
374
|
}
|
|
766
375
|
}
|
|
767
376
|
return null;
|
|
768
|
-
}
|
|
769
|
-
}
|
|
770
|
-
SOW_ScopeOfWorkState: {
|
|
771
|
-
contributors: (parent) => {
|
|
772
|
-
// Resolve contributor PHIDs to Builder objects
|
|
773
|
-
if (!parent.contributors || parent.contributors.length === 0) {
|
|
774
|
-
return [];
|
|
775
|
-
}
|
|
776
|
-
if (!getBuilderProfileByPhid) {
|
|
777
|
-
return [];
|
|
778
|
-
}
|
|
779
|
-
return parent.contributors
|
|
780
|
-
.map((contributor) => {
|
|
781
|
-
// Handle both string PHIDs and objects with id property
|
|
782
|
-
const phid = typeof contributor === "string" ? contributor : contributor?.id;
|
|
783
|
-
if (!phid || typeof phid !== "string") {
|
|
784
|
-
return null;
|
|
785
|
-
}
|
|
786
|
-
return getBuilderProfileByPhid(phid);
|
|
787
|
-
})
|
|
788
|
-
.filter((builder) => builder !== null);
|
|
789
|
-
},
|
|
790
|
-
},
|
|
791
|
-
SOW_Deliverable: {
|
|
792
|
-
owner: (parent) => {
|
|
793
|
-
// Handle null, undefined, or empty string cases
|
|
794
|
-
if (parent?.owner === null || parent?.owner === undefined) {
|
|
795
|
-
return null;
|
|
796
|
-
}
|
|
797
|
-
// Check if it's an empty string
|
|
798
|
-
if (typeof parent.owner === "string" && parent.owner.trim() === "") {
|
|
799
|
-
return null;
|
|
800
|
-
}
|
|
801
|
-
if (!getBuilderProfileByPhid)
|
|
802
|
-
return null;
|
|
803
|
-
const phid = extractPhid(parent.owner);
|
|
804
|
-
if (!phid)
|
|
805
|
-
return null;
|
|
806
|
-
return getBuilderProfileByPhid(phid);
|
|
807
|
-
},
|
|
808
|
-
},
|
|
809
|
-
SOW_Project: {
|
|
810
|
-
projectOwner: (parent) => {
|
|
811
|
-
// Handle null, undefined, or empty string cases
|
|
812
|
-
if (parent?.projectOwner === null ||
|
|
813
|
-
parent?.projectOwner === undefined) {
|
|
814
|
-
return null;
|
|
815
|
-
}
|
|
816
|
-
// Check if it's an empty string
|
|
817
|
-
if (typeof parent.projectOwner === "string" &&
|
|
818
|
-
parent.projectOwner.trim() === "") {
|
|
819
|
-
return null;
|
|
820
|
-
}
|
|
821
|
-
if (!getBuilderProfileByPhid)
|
|
822
|
-
return null;
|
|
823
|
-
const phid = extractPhid(parent.projectOwner);
|
|
824
|
-
if (!phid)
|
|
825
|
-
return null;
|
|
826
|
-
return getBuilderProfileByPhid(phid);
|
|
827
|
-
},
|
|
828
|
-
},
|
|
829
|
-
Builder: {
|
|
830
|
-
contributors: (parent) => {
|
|
831
|
-
// Resolve contributor PHIDs to Builder objects
|
|
832
|
-
if (!parent._contributorPhids ||
|
|
833
|
-
parent._contributorPhids.length === 0) {
|
|
834
|
-
return [];
|
|
835
|
-
}
|
|
836
|
-
if (!getBuilderProfileByPhid) {
|
|
837
|
-
return [];
|
|
838
|
-
}
|
|
839
|
-
return parent._contributorPhids
|
|
840
|
-
.map((phid) => getBuilderProfileByPhid(phid))
|
|
841
|
-
.filter((builder) => builder !== null);
|
|
842
|
-
},
|
|
843
|
-
},
|
|
377
|
+
}
|
|
378
|
+
}
|
|
844
379
|
};
|
|
845
380
|
};
|