zudoku 0.65.3 → 0.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/sentry.js +1 -1
- package/dist/config/validators/BuildSchema.js +18 -3
- package/dist/config/validators/BuildSchema.js.map +1 -1
- package/dist/config/validators/validate.d.ts +45 -3
- package/dist/config/validators/validate.js +7 -1
- package/dist/config/validators/validate.js.map +1 -1
- package/dist/flat-config.d.ts +9 -2
- package/dist/lib/components/Mermaid.d.ts +7 -0
- package/dist/lib/components/Mermaid.js +42 -0
- package/dist/lib/components/Mermaid.js.map +1 -0
- package/dist/lib/components/PagefindSearchMeta.d.ts +8 -0
- package/dist/lib/components/PagefindSearchMeta.js +7 -0
- package/dist/lib/components/PagefindSearchMeta.js.map +1 -0
- package/dist/lib/components/Zudoku.js +2 -5
- package/dist/lib/components/Zudoku.js.map +1 -1
- package/dist/lib/core/RouteGuard.js +1 -1
- package/dist/lib/core/RouteGuard.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +3 -3
- package/dist/lib/oas/parser/index.d.ts +1 -0
- package/dist/lib/oas/parser/index.js.map +1 -1
- package/dist/lib/plugins/openapi/DownloadSchemaButton.d.ts +3 -0
- package/dist/lib/plugins/openapi/DownloadSchemaButton.js +47 -0
- package/dist/lib/plugins/openapi/DownloadSchemaButton.js.map +1 -0
- package/dist/lib/plugins/openapi/Endpoint.js +3 -6
- package/dist/lib/plugins/openapi/Endpoint.js.map +1 -1
- package/dist/lib/plugins/openapi/OasProvider.js +22 -13
- package/dist/lib/plugins/openapi/OasProvider.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationList.js +12 -6
- package/dist/lib/plugins/openapi/OperationList.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +2 -2
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/SchemaList.js +2 -1
- package/dist/lib/plugins/openapi/SchemaList.js.map +1 -1
- package/dist/lib/plugins/openapi/index.js +11 -5
- package/dist/lib/plugins/openapi/index.js.map +1 -1
- package/dist/lib/plugins/openapi/interfaces.d.ts +16 -13
- package/dist/lib/plugins/openapi/playground/Playground.js +1 -1
- package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.d.ts +1 -1
- package/dist/lib/plugins/openapi/schema/SchemaView.js +14 -6
- package/dist/lib/plugins/openapi/schema/SchemaView.js.map +1 -1
- package/dist/lib/plugins/openapi/schema/utils.d.ts +2 -2
- package/dist/lib/plugins/openapi/schema/utils.js.map +1 -1
- package/dist/lib/plugins/openapi/util/getRoutes.d.ts +6 -1
- package/dist/lib/plugins/openapi/util/getRoutes.js +29 -2
- package/dist/lib/plugins/openapi/util/getRoutes.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/IndexingDialog.d.ts +3 -0
- package/dist/lib/plugins/search-pagefind/IndexingDialog.js +64 -0
- package/dist/lib/plugins/search-pagefind/IndexingDialog.js.map +1 -0
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js +22 -5
- package/dist/lib/plugins/search-pagefind/PagefindSearch.js.map +1 -1
- package/dist/lib/plugins/search-pagefind/ResultList.js +5 -4
- package/dist/lib/plugins/search-pagefind/ResultList.js.map +1 -1
- package/dist/lib/shiki.d.ts +1 -1
- package/dist/lib/shiki.js +18 -12
- package/dist/lib/shiki.js.map +1 -1
- package/dist/lib/ui/Button.d.ts +2 -2
- package/dist/lib/ui/Button.js +9 -8
- package/dist/lib/ui/Button.js.map +1 -1
- package/dist/lib/ui/ButtonGroup.d.ts +11 -0
- package/dist/lib/ui/ButtonGroup.js +28 -0
- package/dist/lib/ui/ButtonGroup.js.map +1 -0
- package/dist/lib/ui/Command.js +2 -2
- package/dist/lib/ui/Command.js.map +1 -1
- package/dist/lib/ui/DropdownMenu.d.ts +21 -23
- package/dist/lib/ui/DropdownMenu.js +47 -32
- package/dist/lib/ui/DropdownMenu.js.map +1 -1
- package/dist/lib/ui/Kbd.d.ts +3 -0
- package/dist/lib/ui/Kbd.js +10 -0
- package/dist/lib/ui/Kbd.js.map +1 -0
- package/dist/lib/util/MdxComponents.d.ts +1 -0
- package/dist/lib/util/MdxComponents.js +2 -0
- package/dist/lib/util/MdxComponents.js.map +1 -1
- package/dist/lib/util/flattenAllOf.js +27 -4
- package/dist/lib/util/flattenAllOf.js.map +1 -1
- package/dist/lib/util/flattenAllOf.test.js +67 -12
- package/dist/lib/util/flattenAllOf.test.js.map +1 -1
- package/dist/vite/api/SchemaManager.d.ts +5 -0
- package/dist/vite/api/SchemaManager.js +24 -0
- package/dist/vite/api/SchemaManager.js.map +1 -1
- package/dist/vite/api/SchemaManager.test.js +67 -0
- package/dist/vite/api/SchemaManager.test.js.map +1 -1
- package/dist/vite/config.js +8 -2
- package/dist/vite/config.js.map +1 -1
- package/dist/vite/dev-server.js +25 -0
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/pagefind-dev-index.d.ts +16 -0
- package/dist/vite/pagefind-dev-index.js +68 -0
- package/dist/vite/pagefind-dev-index.js.map +1 -0
- package/dist/vite/plugin-api.js +41 -3
- package/dist/vite/plugin-api.js.map +1 -1
- package/dist/vite/prerender/prerender.js +1 -19
- package/dist/vite/prerender/prerender.js.map +1 -1
- package/dist/vite/prerender/utils.d.ts +2 -0
- package/dist/vite/prerender/utils.js +24 -0
- package/dist/vite/prerender/utils.js.map +1 -0
- package/lib/Button-CynVW1JV.js +53 -0
- package/lib/Button-CynVW1JV.js.map +1 -0
- package/lib/ClaudeLogo-PxFjou9w.js +69 -0
- package/lib/ClaudeLogo-PxFjou9w.js.map +1 -0
- package/lib/{Command-CUcrW3qs.js → Command-BpT1iBE6.js} +25 -25
- package/lib/Command-BpT1iBE6.js.map +1 -0
- package/lib/Drawer-Ci7XwhqT.js.map +1 -1
- package/lib/DropdownMenu-C8SX_-S_.js +104 -0
- package/lib/DropdownMenu-C8SX_-S_.js.map +1 -0
- package/lib/{ErrorAlert-D5LKLFOd.js → ErrorAlert-BqjbNHIn.js} +1017 -1015
- package/lib/{ErrorAlert-D5LKLFOd.js.map → ErrorAlert-BqjbNHIn.js.map} +1 -1
- package/lib/IndexingDialog-B5zCiUKr.js +100 -0
- package/lib/IndexingDialog-B5zCiUKr.js.map +1 -0
- package/lib/MdxPage-CVFatbHw.js +210 -0
- package/lib/MdxPage-CVFatbHw.js.map +1 -0
- package/lib/Mermaid-CIFixY6C.js +102 -0
- package/lib/Mermaid-CIFixY6C.js.map +1 -0
- package/lib/{OAuthErrorPage-oXnxcJg4.js → OAuthErrorPage-Dup79DJk.js} +7 -7
- package/lib/{OAuthErrorPage-oXnxcJg4.js.map → OAuthErrorPage-Dup79DJk.js.map} +1 -1
- package/lib/OasProvider-BJeMq29o.js +40 -0
- package/lib/OasProvider-BJeMq29o.js.map +1 -0
- package/lib/{OperationList-CmMoKpGu.js → OperationList-ff3ZvQsO.js} +1701 -1585
- package/lib/OperationList-ff3ZvQsO.js.map +1 -0
- package/lib/{RouteGuard-Brz95MSt.js → RouteGuard-BXy13JSz.js} +19 -19
- package/lib/{RouteGuard-Brz95MSt.js.map → RouteGuard-BXy13JSz.js.map} +1 -1
- package/lib/{RouterError-VGZB_wg4.js → RouterError-CKOZTsDD.js} +3 -3
- package/lib/{RouterError-VGZB_wg4.js.map → RouterError-CKOZTsDD.js.map} +1 -1
- package/lib/{SchemaList-BykD27ga.js → SchemaList-BSC1KM3v.js} +28 -27
- package/lib/SchemaList-BSC1KM3v.js.map +1 -0
- package/lib/{SchemaView-Dt6hbCAt.js → SchemaView-CgwJ9gtb.js} +198 -187
- package/lib/SchemaView-CgwJ9gtb.js.map +1 -0
- package/lib/Select-VmDZ-nKe.js +337 -0
- package/lib/Select-VmDZ-nKe.js.map +1 -0
- package/lib/{SignUp-D2mmQOkg.js → SignUp-Pm_LGm6T.js} +13 -13
- package/lib/{SignUp-D2mmQOkg.js.map → SignUp-Pm_LGm6T.js.map} +1 -1
- package/lib/{SyntaxHighlight-C19vH0V_.js → SyntaxHighlight-bkmst3oV.js} +654 -622
- package/lib/SyntaxHighlight-bkmst3oV.js.map +1 -0
- package/lib/{Toc-CBWfFCVf.js → Toc-TUXNFbKl.js} +2 -2
- package/lib/{Toc-CBWfFCVf.js.map → Toc-TUXNFbKl.js.map} +1 -1
- package/lib/{ZudokuContext-BUZ5hkWB.js → ZudokuContext-np1wheDl.js} +8 -8
- package/lib/{ZudokuContext-BUZ5hkWB.js.map → ZudokuContext-np1wheDl.js.map} +1 -1
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js +9 -0
- package/lib/___vite-browser-external_commonjs-proxy-Cga3HsWk.js.map +1 -0
- package/lib/{chunk-PVWAREVJ-BMhpCH5D.js → chunk-PVWAREVJ-dLIqswPy.js} +5 -5
- package/lib/{chunk-PVWAREVJ-BMhpCH5D.js.map → chunk-PVWAREVJ-dLIqswPy.js.map} +1 -1
- package/lib/{circular-CNHs4gAz.js → circular-XPj_dwqA.js} +2 -2
- package/lib/{circular-CNHs4gAz.js.map → circular-XPj_dwqA.js.map} +1 -1
- package/lib/createServer-D01nCTNp.js +16693 -0
- package/lib/createServer-D01nCTNp.js.map +1 -0
- package/lib/{errors-D7xzOd8X.js → errors-B0hNTPFO.js} +3 -3
- package/lib/{errors-D7xzOd8X.js.map → errors-B0hNTPFO.js.map} +1 -1
- package/lib/{hook-CMeoxziF.js → hook-CvSwcbk6.js} +3 -3
- package/lib/{hook-CMeoxziF.js.map → hook-CvSwcbk6.js.map} +1 -1
- package/lib/{index-unv8c40u.js → index-Bjc_QsUR.js} +754 -738
- package/lib/{index-unv8c40u.js.map → index-Bjc_QsUR.js.map} +1 -1
- package/lib/index-CrcNWbel.js.map +1 -1
- package/lib/index-DnMgJWrI.js +133 -0
- package/lib/index-DnMgJWrI.js.map +1 -0
- package/lib/{index-CF7_erXq.js → index-DscsS121.js} +2 -2
- package/lib/{index-CF7_erXq.js.map → index-DscsS121.js.map} +1 -1
- package/lib/{index-CPws05Tb.js → index-mfkNWYG-.js} +10 -10
- package/lib/{index-CPws05Tb.js.map → index-mfkNWYG-.js.map} +1 -1
- package/lib/{index.esm-BnYHxCYC.js → index.esm-DtzT_KoE.js} +20 -20
- package/lib/{index.esm-BnYHxCYC.js.map → index.esm-DtzT_KoE.js.map} +1 -1
- package/lib/{invariant-Bm-FVUQE.js → invariant-CGOLuIIz.js} +3 -3
- package/lib/{invariant-Bm-FVUQE.js.map → invariant-CGOLuIIz.js.map} +1 -1
- package/lib/{mutation-BSU0xu4m.js → mutation-BlmnL5qL.js} +2 -2
- package/lib/{mutation-BSU0xu4m.js.map → mutation-BlmnL5qL.js.map} +1 -1
- package/lib/ui/ActionButton.js +1 -1
- package/lib/ui/Button.js +25 -24
- package/lib/ui/Button.js.map +1 -1
- package/lib/ui/ButtonGroup.js +77 -0
- package/lib/ui/ButtonGroup.js.map +1 -0
- package/lib/ui/Command.js +3 -3
- package/lib/ui/Command.js.map +1 -1
- package/lib/ui/DropdownMenu.js +227 -140
- package/lib/ui/DropdownMenu.js.map +1 -1
- package/lib/ui/Kbd.js +32 -0
- package/lib/ui/Kbd.js.map +1 -0
- package/lib/ui/SyntaxHighlight.js +3 -3
- package/lib/zudoku.__internal.js +8 -8
- package/lib/zudoku.auth-auth0.js +1 -1
- package/lib/zudoku.auth-azureb2c.js +4 -4
- package/lib/zudoku.auth-clerk.js +2 -2
- package/lib/zudoku.auth-openid.js +5 -5
- package/lib/zudoku.auth-supabase.js +5 -5
- package/lib/zudoku.components.js +7 -7
- package/lib/zudoku.hooks.js +11 -24
- package/lib/zudoku.hooks.js.map +1 -1
- package/lib/zudoku.mermaid.js +10 -0
- package/lib/zudoku.mermaid.js.map +1 -0
- package/lib/zudoku.plugin-api-catalog.js +6 -6
- package/lib/zudoku.plugin-api-keys.js +223 -198
- package/lib/zudoku.plugin-api-keys.js.map +1 -1
- package/lib/zudoku.plugin-custom-pages.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +3 -3
- package/lib/zudoku.plugin-redirect.js +1 -1
- package/lib/zudoku.plugin-search-pagefind.js +184 -226
- package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
- package/lib/zudoku.plugins.js.map +1 -1
- package/lib/zudoku.router.js +2 -2
- package/package.json +29 -21
- package/src/app/sentry.ts +1 -1
- package/src/lib/components/Mermaid.tsx +68 -0
- package/src/lib/components/PagefindSearchMeta.tsx +14 -0
- package/src/lib/components/Zudoku.tsx +4 -7
- package/src/lib/core/RouteGuard.tsx +1 -1
- package/src/lib/core/plugins.ts +2 -2
- package/src/lib/oas/parser/index.ts +2 -0
- package/src/lib/plugins/openapi/DownloadSchemaButton.tsx +115 -0
- package/src/lib/plugins/openapi/Endpoint.tsx +20 -27
- package/src/lib/plugins/openapi/OasProvider.tsx +30 -17
- package/src/lib/plugins/openapi/OperationList.tsx +39 -21
- package/src/lib/plugins/openapi/OperationListItem.tsx +5 -5
- package/src/lib/plugins/openapi/SchemaList.tsx +4 -0
- package/src/lib/plugins/openapi/index.tsx +16 -7
- package/src/lib/plugins/openapi/interfaces.ts +16 -7
- package/src/lib/plugins/openapi/playground/Playground.tsx +1 -1
- package/src/lib/plugins/openapi/schema/SchemaView.tsx +36 -27
- package/src/lib/plugins/openapi/schema/utils.ts +5 -2
- package/src/lib/plugins/openapi/util/getRoutes.tsx +35 -3
- package/src/lib/plugins/search-pagefind/IndexingDialog.tsx +163 -0
- package/src/lib/plugins/search-pagefind/PagefindSearch.tsx +61 -22
- package/src/lib/plugins/search-pagefind/ResultList.tsx +8 -3
- package/src/lib/shiki.ts +21 -12
- package/src/lib/ui/Button.tsx +10 -10
- package/src/lib/ui/ButtonGroup.tsx +82 -0
- package/src/lib/ui/Command.tsx +3 -3
- package/src/lib/ui/DropdownMenu.tsx +226 -170
- package/src/lib/ui/Kbd.tsx +28 -0
- package/src/lib/util/MdxComponents.tsx +2 -0
- package/src/lib/util/flattenAllOf.test.ts +71 -19
- package/src/lib/util/flattenAllOf.ts +29 -8
- package/src/shiki/langs/markdown-nix.js +1 -0
- package/src/shiki/langs/openscad.js +1 -0
- package/dist/vite/create-pagefind-index.d.ts +0 -4
- package/dist/vite/create-pagefind-index.js +0 -12
- package/dist/vite/create-pagefind-index.js.map +0 -1
- package/lib/Button-B3ucvvQw.js +0 -52
- package/lib/Button-B3ucvvQw.js.map +0 -1
- package/lib/Command-CUcrW3qs.js.map +0 -1
- package/lib/DropdownMenu-BZ2NKQ3K.js +0 -126
- package/lib/DropdownMenu-BZ2NKQ3K.js.map +0 -1
- package/lib/MdxPage-hOCN-u-L.js +0 -240
- package/lib/MdxPage-hOCN-u-L.js.map +0 -1
- package/lib/OasProvider-CpniNNrW.js +0 -36
- package/lib/OasProvider-CpniNNrW.js.map +0 -1
- package/lib/OperationList-CmMoKpGu.js.map +0 -1
- package/lib/Pagination-lLSoHnxa.js +0 -37
- package/lib/Pagination-lLSoHnxa.js.map +0 -1
- package/lib/SchemaList-BykD27ga.js.map +0 -1
- package/lib/SchemaView-Dt6hbCAt.js.map +0 -1
- package/lib/Select-DFRCS31-.js +0 -399
- package/lib/Select-DFRCS31-.js.map +0 -1
- package/lib/SyntaxHighlight-C19vH0V_.js.map +0 -1
- package/lib/createServer-BmcVQAOQ.js +0 -13018
- package/lib/createServer-BmcVQAOQ.js.map +0 -1
- package/lib/useExposedProps-U3pmsHaG.js +0 -113
- package/lib/useExposedProps-U3pmsHaG.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createServer-D01nCTNp.js","sources":["../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/version.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/isPromise.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/language/directiveLocation.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/language/parser.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/typeComparators.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/type/scalars.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/type/directives.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/isIterableObject.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/astFromValue.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/type/introspection.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/type/schema.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/type/validate.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/typeFromAST.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/TypeInfo.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/language/predicates.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/KnownDirectivesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/sortValueNode.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/ScalarLeafsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/printPathArray.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/Path.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/coerceInputValue.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/valueFromAST.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/execution/values.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/execution/collectFields.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/groupBy.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/specifiedRules.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/ValidationContext.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/validation/validate.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/jsutils/toError.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/error/locatedError.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/execution/execute.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/getOperationAST.mjs","../../../node_modules/.pnpm/graphql@16.12.0/node_modules/graphql/utilities/lexicographicSortSchema.mjs","../../../node_modules/.pnpm/@whatwg-node+promise-helpers@1.3.2/node_modules/@whatwg-node/promise-helpers/esm/index.js","../../../node_modules/.pnpm/@envelop+instrumentation@1.0.0/node_modules/@envelop/instrumentation/esm/instrumentation.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/document-string-map.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/utils.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/orchestrator.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/create.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/plugins/use-logger.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/plugins/use-masked-errors.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/plugins/use-extend-context.js","../../../node_modules/.pnpm/@envelop+core@5.3.2/node_modules/@envelop/core/esm/plugins/use-engine.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/errors.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/types/type-params.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/base.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/input-list.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/list.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/utils/context-cache.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/utils/enums.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/utils/params.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/utils/index.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/plugins/plugin.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/plugins/merge-plugins.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/scalar.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/builtin-scalar.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/build-cache.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/input-object.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/base-with-fields.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/interface.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/object.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/mutation.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/query.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/subscription.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/config-store.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/arg.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/input-field.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/input.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/field.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/base.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/root.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/builder.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/interface.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/mutation.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/object.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/query.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/fieldUtils/subscription.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/enum.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/refs/union.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/builder.js","../../../node_modules/.pnpm/@pothos+core@4.10.0_graphql@16.12.0/node_modules/@pothos/core/esm/index.js","../../../node_modules/.pnpm/@graphql-yoga+logger@2.0.1/node_modules/@graphql-yoga/logger/esm/index.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/graphiql-html.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-graphiql.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-schema.js","../../../node_modules/.pnpm/cross-inspect@1.0.1/node_modules/cross-inspect/esm/index.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/errors.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/jsutils.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/getArgumentValues.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/memoize.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/rootTypes.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/AccumulatorMap.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/directives.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/collectFields.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/isAsyncIterable.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.11.0_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/Path.js","../../../node_modules/.pnpm/@whatwg-node+disposablestack@0.0.6/node_modules/@whatwg-node/disposablestack/esm/SupressedError.js","../../../node_modules/.pnpm/@whatwg-node+disposablestack@0.0.6/node_modules/@whatwg-node/disposablestack/esm/symbols.js","../../../node_modules/.pnpm/@whatwg-node+disposablestack@0.0.6/node_modules/@whatwg-node/disposablestack/esm/utils.js","../../../node_modules/.pnpm/@whatwg-node+disposablestack@0.0.6/node_modules/@whatwg-node/disposablestack/esm/AsyncDisposableStack.js","../../../node_modules/.pnpm/@whatwg-node+disposablestack@0.0.6/node_modules/@whatwg-node/disposablestack/esm/index.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/coerceError.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/flattenAsyncIterable.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/invariant.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/promiseForObject.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/values.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/execute.js","../../../node_modules/.pnpm/@graphql-tools+executor@1.4.9_graphql@16.12.0/node_modules/@graphql-tools/executor/esm/execution/normalizedExecutor.js","../../../node_modules/.pnpm/@whatwg-node+fetch@0.10.11/node_modules/@whatwg-node/fetch/dist/global-ponyfill.js","../../../node_modules/.pnpm/@whatwg-node+fetch@0.10.13/node_modules/@whatwg-node/fetch/dist/global-ponyfill.js","../../../node_modules/.pnpm/@whatwg-node+server@0.10.13/node_modules/@whatwg-node/server/esm/utils.js","../../../node_modules/.pnpm/@whatwg-node+server@0.10.13/node_modules/@whatwg-node/server/esm/uwebsockets.js","../../../node_modules/.pnpm/@whatwg-node+server@0.10.13/node_modules/@whatwg-node/server/esm/createServerAdapter.js","../../../node_modules/.pnpm/@whatwg-node+server@0.10.13/node_modules/@whatwg-node/server/esm/plugins/useCors.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.9.1_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/errors.js","../../../node_modules/.pnpm/@graphql-tools+utils@10.9.1_graphql@16.12.0/node_modules/@graphql-tools/utils/esm/isAsyncIterable.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/error.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/allowed-headers.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/utils.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/get.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/post-form-url-encoded.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/post-graphql-string.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/post-json.js","../../../node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.mjs","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-parser/post-multipart.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-validation/use-check-graphql-query-params.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-validation/use-check-method-for-graphql.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-validation/use-http-validation-error.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-validation/use-limit-batching.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/request-validation/use-prevent-mutation-via-get.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-health-check.js","../../../node_modules/.pnpm/lru-cache@10.4.3/node_modules/lru-cache/dist/esm/index.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/utils/create-lru-cache.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-parser-and-validation-cache.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-request-parser.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/result-processor/accept.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/result-processor/stringify.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/result-processor/multipart.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/result-processor/regular.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/result-processor/sse.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-result-processor.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/landing-page-html.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/plugins/use-unhandled-route.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/process-request.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/utils/mask-error.js","../../../node_modules/.pnpm/graphql-yoga@5.16.0_graphql@16.12.0/node_modules/graphql-yoga/esm/server.js","../../../node_modules/.pnpm/openapi-types@12.1.3/node_modules/openapi-types/dist/index.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/convert-path-to-posix.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/is-windows.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/errors.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/pointer.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/ref.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/refs.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/plugins.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parse.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/json.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/common.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/exception.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/snippet.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/str.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/seq.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/map.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/failsafe.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/null.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/bool.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/int.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/float.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/json.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/core.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/timestamp.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/merge.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/binary.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/omap.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/pairs.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/type/set.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/schema/default.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/loader.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/lib/dumper.js","../../../node_modules/.pnpm/js-yaml@4.1.1/node_modules/js-yaml/index.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/yaml.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/text.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/binary.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/file.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/http.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/options.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/normalize-args.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolve-external.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/bundle.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/dereference.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/next.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/maybe.js","../../../node_modules/.pnpm/@apidevtools+json-schema-ref-parser@14.1.1/node_modules/@apidevtools/json-schema-ref-parser/dist/lib/index.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/object.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/json-schema/json-schema.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/ord.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/array.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/memoize.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/json-schema/compare/compare.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/function.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/math.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/json-schema/merge/patterns.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/json-schema/merge/merge.js","../../../node_modules/.pnpm/@x0k+json-schema-merge@1.0.2/node_modules/@x0k/json-schema-merge/dist/lib/json-schema/merge/all-of-merge.js","../src/lib/util/flattenAllOf.ts","../src/lib/oas/parser/dereference/resolveRef.ts","../src/lib/oas/parser/dereference/index.ts","../src/lib/oas/parser/upgrade/index.ts","../src/lib/oas/parser/index.ts","../src/lib/oas/graphql/index.ts","../src/lib/plugins/openapi/client/createServer.ts"],"sourcesContent":["// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nexport const version = '16.12.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexport const versionInfo = Object.freeze({\n major: 16,\n minor: 12,\n patch: 0,\n preReleaseTag: null,\n});\n","/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nexport function isPromise(value) {\n return (\n typeof (value === null || value === void 0 ? void 0 : value.then) ===\n 'function'\n );\n}\n","/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\n\n(function (DirectiveLocation) {\n DirectiveLocation['QUERY'] = 'QUERY';\n DirectiveLocation['MUTATION'] = 'MUTATION';\n DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n DirectiveLocation['FIELD'] = 'FIELD';\n DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n DirectiveLocation['SCHEMA'] = 'SCHEMA';\n DirectiveLocation['SCALAR'] = 'SCALAR';\n DirectiveLocation['OBJECT'] = 'OBJECT';\n DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n DirectiveLocation['INTERFACE'] = 'INTERFACE';\n DirectiveLocation['UNION'] = 'UNION';\n DirectiveLocation['ENUM'] = 'ENUM';\n DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (DirectiveLocation = {}));\n\nexport { DirectiveLocation };\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n","import { syntaxError } from '../error/syntaxError.mjs';\nimport { Location, OperationTypeNode } from './ast.mjs';\nimport { DirectiveLocation } from './directiveLocation.mjs';\nimport { Kind } from './kinds.mjs';\nimport { isPunctuatorTokenKind, Lexer } from './lexer.mjs';\nimport { SchemaCoordinateLexer } from './schemaCoordinateLexer.mjs';\nimport { isSource, Source } from './source.mjs';\nimport { TokenKind } from './tokenKind.mjs';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n const parser = new Parser(source, options);\n const document = parser.parseDocument();\n Object.defineProperty(document, 'tokenCount', {\n enumerable: false,\n value: parser.tokenCount,\n });\n return document;\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nexport function parseConstValue(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const value = parser.parseConstValueLiteral();\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n const parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n const type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * Given a string containing a GraphQL Schema Coordinate (ex. `Type.field`),\n * parse the AST for that schema coordinate.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * Consider providing the results to the utility function:\n * resolveASTSchemaCoordinate(). Or calling resolveSchemaCoordinate() directly\n * with an unparsed source.\n */\n\nexport function parseSchemaCoordinate(source) {\n const sourceObj = isSource(source) ? source : new Source(source);\n const lexer = new SchemaCoordinateLexer(sourceObj);\n const parser = new Parser(source, {\n lexer,\n });\n parser.expectToken(TokenKind.SOF);\n const coordinate = parser.parseSchemaCoordinate();\n parser.expectToken(TokenKind.EOF);\n return coordinate;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport class Parser {\n constructor(source, options = {}) {\n const { lexer, ..._options } = options;\n\n if (lexer) {\n this._lexer = lexer;\n } else {\n const sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n }\n\n this._options = _options;\n this._tokenCounter = 0;\n }\n\n get tokenCount() {\n return this._tokenCounter;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n parseName() {\n const token = this.expectToken(TokenKind.NAME);\n return this.node(token, {\n kind: Kind.NAME,\n value: token.value,\n });\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n\n parseDocument() {\n return this.node(this._lexer.token, {\n kind: Kind.DOCUMENT,\n definitions: this.many(\n TokenKind.SOF,\n this.parseDefinition,\n TokenKind.EOF,\n ),\n });\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n *\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\n parseDefinition() {\n if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } // Many definitions begin with a description and require a lookahead.\n\n const hasDescription = this.peekDescription();\n const keywordToken = hasDescription\n ? this._lexer.lookahead()\n : this._lexer.token;\n\n if (hasDescription && keywordToken.kind === TokenKind.BRACE_L) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, descriptions are not supported on shorthand queries.',\n );\n }\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n\n switch (keywordToken.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n }\n\n if (hasDescription) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n 'Unexpected description, only GraphQL definitions support descriptions.',\n );\n }\n\n switch (keywordToken.value) {\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n parseOperationDefinition() {\n const start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation: OperationTypeNode.QUERY,\n description: undefined,\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n const description = this.parseDescription();\n const operation = this.parseOperationType();\n let name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return this.node(start, {\n kind: Kind.OPERATION_DEFINITION,\n operation,\n description,\n name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * OperationType : one of query mutation subscription\n */\n\n parseOperationType() {\n const operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return OperationTypeNode.QUERY;\n\n case 'mutation':\n return OperationTypeNode.MUTATION;\n\n case 'subscription':\n return OperationTypeNode.SUBSCRIPTION;\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n parseVariableDefinitions() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseVariableDefinition,\n TokenKind.PAREN_R,\n );\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n parseVariableDefinition() {\n return this.node(this._lexer.token, {\n kind: Kind.VARIABLE_DEFINITION,\n description: this.parseDescription(),\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS)\n ? this.parseConstValueLiteral()\n : undefined,\n directives: this.parseConstDirectives(),\n });\n }\n /**\n * Variable : $ Name\n */\n\n parseVariable() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return this.node(start, {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n });\n }\n /**\n * ```\n * SelectionSet : { Selection+ }\n * ```\n */\n\n parseSelectionSet() {\n return this.node(this._lexer.token, {\n kind: Kind.SELECTION_SET,\n selections: this.many(\n TokenKind.BRACE_L,\n this.parseSelection,\n TokenKind.BRACE_R,\n ),\n });\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n parseSelection() {\n return this.peek(TokenKind.SPREAD)\n ? this.parseFragment()\n : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n parseField() {\n const start = this._lexer.token;\n const nameOrAlias = this.parseName();\n let alias;\n let name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return this.node(start, {\n kind: Kind.FIELD,\n alias,\n name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L)\n ? this.parseSelectionSet()\n : undefined,\n });\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n parseArguments(isConst) {\n const item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n\n parseArgument(isConst = false) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.ARGUMENT,\n name,\n value: this.parseValueLiteral(isConst),\n });\n }\n\n parseConstArgument() {\n return this.parseArgument(true);\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n parseFragment() {\n const start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n const hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return this.node(start, {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n });\n }\n\n return this.node(start, {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n parseFragmentDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (this._options.allowLegacyFragmentVariables === true) {\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n\n return this.node(start, {\n kind: Kind.FRAGMENT_DEFINITION,\n description,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n });\n }\n /**\n * FragmentName : Name but not `on`\n */\n\n parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseValueLiteral(isConst) {\n const token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.INT,\n value: token.value,\n });\n\n case TokenKind.FLOAT:\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.FLOAT,\n value: token.value,\n });\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this.advanceLexer();\n\n switch (token.value) {\n case 'true':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: true,\n });\n\n case 'false':\n return this.node(token, {\n kind: Kind.BOOLEAN,\n value: false,\n });\n\n case 'null':\n return this.node(token, {\n kind: Kind.NULL,\n });\n\n default:\n return this.node(token, {\n kind: Kind.ENUM,\n value: token.value,\n });\n }\n\n case TokenKind.DOLLAR:\n if (isConst) {\n this.expectToken(TokenKind.DOLLAR);\n\n if (this._lexer.token.kind === TokenKind.NAME) {\n const varName = this._lexer.token.value;\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected variable \"$${varName}\" in constant value.`,\n );\n } else {\n throw this.unexpected(token);\n }\n }\n\n return this.parseVariable();\n\n default:\n throw this.unexpected();\n }\n }\n\n parseConstValueLiteral() {\n return this.parseValueLiteral(true);\n }\n\n parseStringLiteral() {\n const token = this._lexer.token;\n this.advanceLexer();\n return this.node(token, {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n });\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n parseList(isConst) {\n const item = () => this.parseValueLiteral(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n });\n }\n /**\n * ```\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n * ```\n */\n\n parseObject(isConst) {\n const item = () => this.parseObjectField(isConst);\n\n return this.node(this._lexer.token, {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n });\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n parseObjectField(isConst) {\n const start = this._lexer.token;\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return this.node(start, {\n kind: Kind.OBJECT_FIELD,\n name,\n value: this.parseValueLiteral(isConst),\n });\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n\n parseDirectives(isConst) {\n const directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n\n parseConstDirectives() {\n return this.parseDirectives(true);\n }\n /**\n * ```\n * Directive[Const] : @ Name Arguments[?Const]?\n * ```\n */\n\n parseDirective(isConst) {\n const start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return this.node(start, {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n });\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n parseTypeReference() {\n const start = this._lexer.token;\n let type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n const innerType = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = this.node(start, {\n kind: Kind.LIST_TYPE,\n type: innerType,\n });\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return this.node(start, {\n kind: Kind.NON_NULL_TYPE,\n type,\n });\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n\n parseNamedType() {\n return this.node(this._lexer.token, {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n });\n } // Implements the parsing rules in the Type Definition section.\n\n peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n\n parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * ```\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n * ```\n */\n\n parseSchemaDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.many(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n return this.node(start, {\n kind: Kind.SCHEMA_DEFINITION,\n description,\n directives,\n operationTypes,\n });\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n parseOperationTypeDefinition() {\n const start = this._lexer.token;\n const operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n const type = this.parseNamedType();\n return this.node(start, {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation,\n type,\n });\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n parseScalarTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n parseObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n parseImplementsInterfaces() {\n return this.expectOptionalKeyword('implements')\n ? this.delimitedMany(TokenKind.AMP, this.parseNamedType)\n : [];\n }\n /**\n * ```\n * FieldsDefinition : { FieldDefinition+ }\n * ```\n */\n\n parseFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseFieldDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n parseFieldDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.FIELD_DEFINITION,\n description,\n name,\n arguments: args,\n type,\n directives,\n });\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n parseArgumentDefs() {\n return this.optionalMany(\n TokenKind.PAREN_L,\n this.parseInputValueDef,\n TokenKind.PAREN_R,\n );\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n parseInputValueDef() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseName();\n this.expectToken(TokenKind.COLON);\n const type = this.parseTypeReference();\n let defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseConstValueLiteral();\n }\n\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description,\n name,\n type,\n defaultValue,\n directives,\n });\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n parseInterfaceTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n parseUnionTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n return this.node(start, {\n kind: Kind.UNION_TYPE_DEFINITION,\n description,\n name,\n directives,\n types,\n });\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS)\n ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType)\n : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n parseEnumTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n return this.node(start, {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description,\n name,\n directives,\n values,\n });\n }\n /**\n * ```\n * EnumValuesDefinition : { EnumValueDefinition+ }\n * ```\n */\n\n parseEnumValuesDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseEnumValueDefinition,\n TokenKind.BRACE_R,\n );\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n */\n\n parseEnumValueDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n const name = this.parseEnumValueName();\n const directives = this.parseConstDirectives();\n return this.node(start, {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description,\n name,\n directives,\n });\n }\n /**\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n parseEnumValueName() {\n if (\n this._lexer.token.value === 'true' ||\n this._lexer.token.value === 'false' ||\n this._lexer.token.value === 'null'\n ) {\n throw syntaxError(\n this._lexer.source,\n this._lexer.token.start,\n `${getTokenDesc(\n this._lexer.token,\n )} is reserved and cannot be used for an enum value.`,\n );\n }\n\n return this.parseName();\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n parseInputObjectTypeDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * InputFieldsDefinition : { InputValueDefinition+ }\n * ```\n */\n\n parseInputFieldsDefinition() {\n return this.optionalMany(\n TokenKind.BRACE_L,\n this.parseInputValueDef,\n TokenKind.BRACE_R,\n );\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n parseTypeSystemExtension() {\n const keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * ```\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n * ```\n */\n\n parseSchemaExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n const directives = this.parseConstDirectives();\n const operationTypes = this.optionalMany(\n TokenKind.BRACE_L,\n this.parseOperationTypeDefinition,\n TokenKind.BRACE_R,\n );\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCHEMA_EXTENSION,\n directives,\n operationTypes,\n });\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n parseScalarTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name,\n directives,\n });\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n parseObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n\n parseInterfaceTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n const name = this.parseName();\n const interfaces = this.parseImplementsInterfaces();\n const directives = this.parseConstDirectives();\n const fields = this.parseFieldsDefinition();\n\n if (\n interfaces.length === 0 &&\n directives.length === 0 &&\n fields.length === 0\n ) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name,\n interfaces,\n directives,\n fields,\n });\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n parseUnionTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.UNION_TYPE_EXTENSION,\n name,\n directives,\n types,\n });\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n parseEnumTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name,\n directives,\n values,\n });\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n parseInputObjectTypeExtension() {\n const start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n const name = this.parseName();\n const directives = this.parseConstDirectives();\n const fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return this.node(start, {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name,\n directives,\n fields,\n });\n }\n /**\n * ```\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n * ```\n */\n\n parseDirectiveDefinition() {\n const start = this._lexer.token;\n const description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n const name = this.parseName();\n const args = this.parseArgumentDefs();\n const repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n const locations = this.parseDirectiveLocations();\n return this.node(start, {\n kind: Kind.DIRECTIVE_DEFINITION,\n description,\n name,\n arguments: args,\n repeatable,\n locations,\n });\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n parseDirectiveLocation() {\n const start = this._lexer.token;\n const name = this.parseName();\n\n if (Object.prototype.hasOwnProperty.call(DirectiveLocation, name.value)) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Schema Coordinates\n\n /**\n * SchemaCoordinate :\n * - Name\n * - Name . Name\n * - Name . Name ( Name : )\n * - \\@ Name\n * - \\@ Name ( Name : )\n */\n\n parseSchemaCoordinate() {\n const start = this._lexer.token;\n const ofDirective = this.expectOptionalToken(TokenKind.AT);\n const name = this.parseName();\n let memberName;\n\n if (!ofDirective && this.expectOptionalToken(TokenKind.DOT)) {\n memberName = this.parseName();\n }\n\n let argumentName;\n\n if (\n (ofDirective || memberName) &&\n this.expectOptionalToken(TokenKind.PAREN_L)\n ) {\n argumentName = this.parseName();\n this.expectToken(TokenKind.COLON);\n this.expectToken(TokenKind.PAREN_R);\n }\n\n if (ofDirective) {\n if (argumentName) {\n return this.node(start, {\n kind: Kind.DIRECTIVE_ARGUMENT_COORDINATE,\n name,\n argumentName,\n });\n }\n\n return this.node(start, {\n kind: Kind.DIRECTIVE_COORDINATE,\n name,\n });\n } else if (memberName) {\n if (argumentName) {\n return this.node(start, {\n kind: Kind.ARGUMENT_COORDINATE,\n name,\n fieldName: memberName,\n argumentName,\n });\n }\n\n return this.node(start, {\n kind: Kind.MEMBER_COORDINATE,\n name,\n memberName,\n });\n }\n\n return this.node(start, {\n kind: Kind.TYPE_COORDINATE,\n name,\n });\n } // Core parsing utility functions\n\n /**\n * Returns a node that, if configured to do so, sets a \"loc\" field as a\n * location object, used to identify the place in the source that created a\n * given parsed object.\n */\n\n node(startToken, node) {\n if (this._options.noLocation !== true) {\n node.loc = new Location(\n startToken,\n this._lexer.lastToken,\n this._lexer.source,\n );\n }\n\n return node;\n }\n /**\n * Determines if the next token is of a given kind\n */\n\n peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return token;\n }\n\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n );\n }\n /**\n * If the next token is of the given kind, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalToken(kind) {\n const token = this._lexer.token;\n\n if (token.kind === kind) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n\n expectKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n } else {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n );\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n\n expectOptionalKeyword(value) {\n const token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this.advanceLexer();\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n\n unexpected(atToken) {\n const token =\n atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(\n this._lexer.source,\n token.start,\n `Unexpected ${getTokenDesc(token)}.`,\n );\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n\n many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n\n delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n const nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n }\n\n advanceLexer() {\n const { maxTokens } = this._options;\n\n const token = this._lexer.advance();\n\n if (token.kind !== TokenKind.EOF) {\n ++this._tokenCounter;\n\n if (maxTokens !== undefined && this._tokenCounter > maxTokens) {\n throw syntaxError(\n this._lexer.source,\n token.start,\n `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n );\n }\n }\n }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n const value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? `\"${kind}\"` : kind;\n}\n","import {\n isAbstractType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.mjs';\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nexport function isEqualType(typeA, typeB) {\n // Equivalent types are equal.\n if (typeA === typeB) {\n return true;\n } // If either type is non-null, the other must also be non-null.\n\n if (isNonNullType(typeA) && isNonNullType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // If either type is a list, the other must also be a list.\n\n if (isListType(typeA) && isListType(typeB)) {\n return isEqualType(typeA.ofType, typeB.ofType);\n } // Otherwise the types are not equal.\n\n return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nexport function isTypeSubTypeOf(schema, maybeSubType, superType) {\n // Equivalent type is a valid subtype\n if (maybeSubType === superType) {\n return true;\n } // If superType is non-null, maybeSubType must also be non-null.\n\n if (isNonNullType(superType)) {\n if (isNonNullType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isNonNullType(maybeSubType)) {\n // If superType is nullable, maybeSubType may be non-null or nullable.\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n } // If superType type is a list, maybeSubType type must also be a list.\n\n if (isListType(superType)) {\n if (isListType(maybeSubType)) {\n return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n }\n\n return false;\n }\n\n if (isListType(maybeSubType)) {\n // If superType is not a list, maybeSubType must also be not a list.\n return false;\n } // If superType type is an abstract type, check if it is super type of maybeSubType.\n // Otherwise, the child type is not a valid subtype of the parent type.\n\n return (\n isAbstractType(superType) &&\n (isInterfaceType(maybeSubType) || isObjectType(maybeSubType)) &&\n schema.isSubType(superType, maybeSubType)\n );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nexport function doTypesOverlap(schema, typeA, typeB) {\n // Equivalent types overlap\n if (typeA === typeB) {\n return true;\n }\n\n if (isAbstractType(typeA)) {\n if (isAbstractType(typeB)) {\n // If both types are abstract, then determine if there is any intersection\n // between possible concrete types of each.\n return schema\n .getPossibleTypes(typeA)\n .some((type) => schema.isSubType(typeB, type));\n } // Determine if the latter type is a possible concrete type of the former.\n\n return schema.isSubType(typeA, typeB);\n }\n\n if (isAbstractType(typeB)) {\n // Determine if the former type is a possible concrete type of the latter.\n return schema.isSubType(typeB, typeA);\n } // Otherwise the types do not overlap.\n\n return false;\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { print } from '../language/printer.mjs';\nimport { GraphQLScalarType } from './definition.mjs';\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\n\nexport const GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nexport const GRAPHQL_MIN_INT = -2147483648;\nexport const GraphQLInt = new GraphQLScalarType({\n name: 'Int',\n description:\n 'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isInteger(num)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect(coercedValue)}`,\n );\n }\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n 'Int cannot represent non 32-bit signed integer value: ' +\n inspect(coercedValue),\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${inspect(inputValue)}`,\n );\n }\n\n if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Int cannot represent non-integer value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n const num = parseInt(valueNode.value, 10);\n\n if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n throw new GraphQLError(\n `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return num;\n },\n});\nexport const GraphQLFloat = new GraphQLScalarType({\n name: 'Float',\n description:\n 'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 1 : 0;\n }\n\n let num = coercedValue;\n\n if (typeof coercedValue === 'string' && coercedValue !== '') {\n num = Number(coercedValue);\n }\n\n if (typeof num !== 'number' || !Number.isFinite(num)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect(coercedValue)}`,\n );\n }\n\n return num;\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.FLOAT && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n `Float cannot represent non numeric value: ${print(valueNode)}`,\n valueNode,\n );\n }\n\n return parseFloat(valueNode.value);\n },\n});\nexport const GraphQLString = new GraphQLScalarType({\n name: 'String',\n description:\n 'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n // attempt to coerce object, function, symbol, or other types as strings.\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue ? 'true' : 'false';\n }\n\n if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n return coercedValue.toString();\n }\n\n throw new GraphQLError(\n `String cannot represent value: ${inspect(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'string') {\n throw new GraphQLError(\n `String cannot represent a non string value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING) {\n throw new GraphQLError(\n `String cannot represent a non string value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const GraphQLBoolean = new GraphQLScalarType({\n name: 'Boolean',\n description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'boolean') {\n return coercedValue;\n }\n\n if (Number.isFinite(coercedValue)) {\n return coercedValue !== 0;\n }\n\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect(coercedValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue !== 'boolean') {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${inspect(inputValue)}`,\n );\n }\n\n return inputValue;\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.BOOLEAN) {\n throw new GraphQLError(\n `Boolean cannot represent a non boolean value: ${print(valueNode)}`,\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const GraphQLID = new GraphQLScalarType({\n name: 'ID',\n description:\n 'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n serialize(outputValue) {\n const coercedValue = serializeObject(outputValue);\n\n if (typeof coercedValue === 'string') {\n return coercedValue;\n }\n\n if (Number.isInteger(coercedValue)) {\n return String(coercedValue);\n }\n\n throw new GraphQLError(\n `ID cannot represent value: ${inspect(outputValue)}`,\n );\n },\n\n parseValue(inputValue) {\n if (typeof inputValue === 'string') {\n return inputValue;\n }\n\n if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n return inputValue.toString();\n }\n\n throw new GraphQLError(`ID cannot represent value: ${inspect(inputValue)}`);\n },\n\n parseLiteral(valueNode) {\n if (valueNode.kind !== Kind.STRING && valueNode.kind !== Kind.INT) {\n throw new GraphQLError(\n 'ID cannot represent a non-string and non-integer value: ' +\n print(valueNode),\n {\n nodes: valueNode,\n },\n );\n }\n\n return valueNode.value;\n },\n});\nexport const specifiedScalarTypes = Object.freeze([\n GraphQLString,\n GraphQLInt,\n GraphQLFloat,\n GraphQLBoolean,\n GraphQLID,\n]);\nexport function isSpecifiedScalarType(type) {\n return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n if (isObjectLike(outputValue)) {\n if (typeof outputValue.valueOf === 'function') {\n const valueOfResult = outputValue.valueOf();\n\n if (!isObjectLike(valueOfResult)) {\n return valueOfResult;\n }\n }\n\n if (typeof outputValue.toJSON === 'function') {\n return outputValue.toJSON();\n }\n }\n\n return outputValue;\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { toObjMap } from '../jsutils/toObjMap.mjs';\nimport { DirectiveLocation } from '../language/directiveLocation.mjs';\nimport { assertName } from './assertName.mjs';\nimport {\n argsToArgsConfig,\n defineArguments,\n GraphQLNonNull,\n} from './definition.mjs';\nimport { GraphQLBoolean, GraphQLString } from './scalars.mjs';\n/**\n * Test if the given value is a GraphQL directive.\n */\n\nexport function isDirective(directive) {\n return instanceOf(directive, GraphQLDirective);\n}\nexport function assertDirective(directive) {\n if (!isDirective(directive)) {\n throw new Error(\n `Expected ${inspect(directive)} to be a GraphQL directive.`,\n );\n }\n\n return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nexport class GraphQLDirective {\n constructor(config) {\n var _config$isRepeatable, _config$args;\n\n this.name = assertName(config.name);\n this.description = config.description;\n this.locations = config.locations;\n this.isRepeatable =\n (_config$isRepeatable = config.isRepeatable) !== null &&\n _config$isRepeatable !== void 0\n ? _config$isRepeatable\n : false;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n Array.isArray(config.locations) ||\n devAssert(false, `@${config.name} locations must be an Array.`);\n const args =\n (_config$args = config.args) !== null && _config$args !== void 0\n ? _config$args\n : {};\n (isObjectLike(args) && !Array.isArray(args)) ||\n devAssert(\n false,\n `@${config.name} args must be an object with argument names as keys.`,\n );\n this.args = defineArguments(args);\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLDirective';\n }\n\n toConfig() {\n return {\n name: this.name,\n description: this.description,\n locations: this.locations,\n args: argsToArgsConfig(this.args),\n isRepeatable: this.isRepeatable,\n extensions: this.extensions,\n astNode: this.astNode,\n };\n }\n\n toString() {\n return '@' + this.name;\n }\n\n toJSON() {\n return this.toString();\n }\n}\n\n/**\n * Used to conditionally include fields or fragments.\n */\nexport const GraphQLIncludeDirective = new GraphQLDirective({\n name: 'include',\n description:\n 'Directs the executor to include this field or fragment only when the `if` argument is true.',\n locations: [\n DirectiveLocation.FIELD,\n DirectiveLocation.FRAGMENT_SPREAD,\n DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Included when true.',\n },\n },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexport const GraphQLSkipDirective = new GraphQLDirective({\n name: 'skip',\n description:\n 'Directs the executor to skip this field or fragment when the `if` argument is true.',\n locations: [\n DirectiveLocation.FIELD,\n DirectiveLocation.FRAGMENT_SPREAD,\n DirectiveLocation.INLINE_FRAGMENT,\n ],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Skipped when true.',\n },\n },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexport const DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexport const GraphQLDeprecatedDirective = new GraphQLDirective({\n name: 'deprecated',\n description: 'Marks an element of a GraphQL schema as no longer supported.',\n locations: [\n DirectiveLocation.FIELD_DEFINITION,\n DirectiveLocation.ARGUMENT_DEFINITION,\n DirectiveLocation.INPUT_FIELD_DEFINITION,\n DirectiveLocation.ENUM_VALUE,\n ],\n args: {\n reason: {\n type: GraphQLString,\n description:\n 'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n defaultValue: DEFAULT_DEPRECATION_REASON,\n },\n },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nexport const GraphQLSpecifiedByDirective = new GraphQLDirective({\n name: 'specifiedBy',\n description: 'Exposes a URL that specifies the behavior of this scalar.',\n locations: [DirectiveLocation.SCALAR],\n args: {\n url: {\n type: new GraphQLNonNull(GraphQLString),\n description: 'The URL that specifies the behavior of this scalar.',\n },\n },\n});\n/**\n * Used to indicate an Input Object is a OneOf Input Object.\n */\n\nexport const GraphQLOneOfDirective = new GraphQLDirective({\n name: 'oneOf',\n description:\n 'Indicates exactly one field must be supplied and this field must not be `null`.',\n locations: [DirectiveLocation.INPUT_OBJECT],\n args: {},\n});\n/**\n * The full list of specified directives.\n */\n\nexport const specifiedDirectives = Object.freeze([\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n GraphQLDeprecatedDirective,\n GraphQLSpecifiedByDirective,\n GraphQLOneOfDirective,\n]);\nexport function isSpecifiedDirective(directive) {\n return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n","/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nexport function isIterableObject(maybeIterable) {\n return (\n typeof maybeIterable === 'object' &&\n typeof (maybeIterable === null || maybeIterable === void 0\n ? void 0\n : maybeIterable[Symbol.iterator]) === 'function'\n );\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isEnumType,\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\nimport { GraphQLID } from '../type/scalars.mjs';\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n * astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value | GraphQL Value |\n * | ------------- | -------------------- |\n * | Object | Input Object |\n * | Array | List |\n * | Boolean | Boolean |\n * | String | String / Enum Value |\n * | Number | Int / Float |\n * | Unknown | Enum Value |\n * | null | NullValue |\n *\n */\n\nexport function astFromValue(value, type) {\n if (isNonNullType(type)) {\n const astValue = astFromValue(value, type.ofType);\n\n if (\n (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n Kind.NULL\n ) {\n return null;\n }\n\n return astValue;\n } // only explicit null, not undefined, NaN\n\n if (value === null) {\n return {\n kind: Kind.NULL,\n };\n } // undefined\n\n if (value === undefined) {\n return null;\n } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n // the value is not an array, convert the value using the list's item type.\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(value)) {\n const valuesNodes = [];\n\n for (const item of value) {\n const itemNode = astFromValue(item, itemType);\n\n if (itemNode != null) {\n valuesNodes.push(itemNode);\n }\n }\n\n return {\n kind: Kind.LIST,\n values: valuesNodes,\n };\n }\n\n return astFromValue(value, itemType);\n } // Populate the fields of the input object by creating ASTs from each value\n // in the JavaScript object according to the fields in the input type.\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(value)) {\n return null;\n }\n\n const fieldNodes = [];\n\n for (const field of Object.values(type.getFields())) {\n const fieldValue = astFromValue(value[field.name], field.type);\n\n if (fieldValue) {\n fieldNodes.push({\n kind: Kind.OBJECT_FIELD,\n name: {\n kind: Kind.NAME,\n value: field.name,\n },\n value: fieldValue,\n });\n }\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fieldNodes,\n };\n }\n\n if (isLeafType(type)) {\n // Since value is an internally represented value, it must be serialized\n // to an externally represented value before converting into an AST.\n const serialized = type.serialize(value);\n\n if (serialized == null) {\n return null;\n } // Others serialize based on their corresponding JavaScript scalar types.\n\n if (typeof serialized === 'boolean') {\n return {\n kind: Kind.BOOLEAN,\n value: serialized,\n };\n } // JavaScript numbers can be Int or Float values.\n\n if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n const stringNum = String(serialized);\n return integerStringRegExp.test(stringNum)\n ? {\n kind: Kind.INT,\n value: stringNum,\n }\n : {\n kind: Kind.FLOAT,\n value: stringNum,\n };\n }\n\n if (typeof serialized === 'string') {\n // Enum types use Enum literals.\n if (isEnumType(type)) {\n return {\n kind: Kind.ENUM,\n value: serialized,\n };\n } // ID types can use Int literals.\n\n if (type === GraphQLID && integerStringRegExp.test(serialized)) {\n return {\n kind: Kind.INT,\n value: serialized,\n };\n }\n\n return {\n kind: Kind.STRING,\n value: serialized,\n };\n }\n\n throw new TypeError(`Cannot convert value to AST: ${inspect(serialized)}.`);\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n/**\n * IntValue:\n * - NegativeSign? 0\n * - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { DirectiveLocation } from '../language/directiveLocation.mjs';\nimport { print } from '../language/printer.mjs';\nimport { astFromValue } from '../utilities/astFromValue.mjs';\nimport {\n GraphQLEnumType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n isAbstractType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from './definition.mjs';\nimport { GraphQLBoolean, GraphQLString } from './scalars.mjs';\nexport const __Schema = new GraphQLObjectType({\n name: '__Schema',\n description:\n 'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n fields: () => ({\n description: {\n type: GraphQLString,\n resolve: (schema) => schema.description,\n },\n types: {\n description: 'A list of all types supported by this server.',\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(__Type))),\n\n resolve(schema) {\n return Object.values(schema.getTypeMap());\n },\n },\n queryType: {\n description: 'The type that query operations will be rooted at.',\n type: new GraphQLNonNull(__Type),\n resolve: (schema) => schema.getQueryType(),\n },\n mutationType: {\n description:\n 'If this server supports mutation, the type that mutation operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getMutationType(),\n },\n subscriptionType: {\n description:\n 'If this server support subscription, the type that subscription operations will be rooted at.',\n type: __Type,\n resolve: (schema) => schema.getSubscriptionType(),\n },\n directives: {\n description: 'A list of all directives supported by this server.',\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__Directive)),\n ),\n resolve: (schema) => schema.getDirectives(),\n },\n }),\n});\nexport const __Directive = new GraphQLObjectType({\n name: '__Directive',\n description:\n \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (directive) => directive.name,\n },\n description: {\n type: GraphQLString,\n resolve: (directive) => directive.description,\n },\n isRepeatable: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (directive) => directive.isRepeatable,\n },\n locations: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__DirectiveLocation)),\n ),\n resolve: (directive) => directive.locations,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n }),\n});\nexport const __DirectiveLocation = new GraphQLEnumType({\n name: '__DirectiveLocation',\n description:\n 'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n values: {\n QUERY: {\n value: DirectiveLocation.QUERY,\n description: 'Location adjacent to a query operation.',\n },\n MUTATION: {\n value: DirectiveLocation.MUTATION,\n description: 'Location adjacent to a mutation operation.',\n },\n SUBSCRIPTION: {\n value: DirectiveLocation.SUBSCRIPTION,\n description: 'Location adjacent to a subscription operation.',\n },\n FIELD: {\n value: DirectiveLocation.FIELD,\n description: 'Location adjacent to a field.',\n },\n FRAGMENT_DEFINITION: {\n value: DirectiveLocation.FRAGMENT_DEFINITION,\n description: 'Location adjacent to a fragment definition.',\n },\n FRAGMENT_SPREAD: {\n value: DirectiveLocation.FRAGMENT_SPREAD,\n description: 'Location adjacent to a fragment spread.',\n },\n INLINE_FRAGMENT: {\n value: DirectiveLocation.INLINE_FRAGMENT,\n description: 'Location adjacent to an inline fragment.',\n },\n VARIABLE_DEFINITION: {\n value: DirectiveLocation.VARIABLE_DEFINITION,\n description: 'Location adjacent to a variable definition.',\n },\n SCHEMA: {\n value: DirectiveLocation.SCHEMA,\n description: 'Location adjacent to a schema definition.',\n },\n SCALAR: {\n value: DirectiveLocation.SCALAR,\n description: 'Location adjacent to a scalar definition.',\n },\n OBJECT: {\n value: DirectiveLocation.OBJECT,\n description: 'Location adjacent to an object type definition.',\n },\n FIELD_DEFINITION: {\n value: DirectiveLocation.FIELD_DEFINITION,\n description: 'Location adjacent to a field definition.',\n },\n ARGUMENT_DEFINITION: {\n value: DirectiveLocation.ARGUMENT_DEFINITION,\n description: 'Location adjacent to an argument definition.',\n },\n INTERFACE: {\n value: DirectiveLocation.INTERFACE,\n description: 'Location adjacent to an interface definition.',\n },\n UNION: {\n value: DirectiveLocation.UNION,\n description: 'Location adjacent to a union definition.',\n },\n ENUM: {\n value: DirectiveLocation.ENUM,\n description: 'Location adjacent to an enum definition.',\n },\n ENUM_VALUE: {\n value: DirectiveLocation.ENUM_VALUE,\n description: 'Location adjacent to an enum value definition.',\n },\n INPUT_OBJECT: {\n value: DirectiveLocation.INPUT_OBJECT,\n description: 'Location adjacent to an input object type definition.',\n },\n INPUT_FIELD_DEFINITION: {\n value: DirectiveLocation.INPUT_FIELD_DEFINITION,\n description: 'Location adjacent to an input object field definition.',\n },\n },\n});\nexport const __Type = new GraphQLObjectType({\n name: '__Type',\n description:\n 'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n fields: () => ({\n kind: {\n type: new GraphQLNonNull(__TypeKind),\n\n resolve(type) {\n if (isScalarType(type)) {\n return TypeKind.SCALAR;\n }\n\n if (isObjectType(type)) {\n return TypeKind.OBJECT;\n }\n\n if (isInterfaceType(type)) {\n return TypeKind.INTERFACE;\n }\n\n if (isUnionType(type)) {\n return TypeKind.UNION;\n }\n\n if (isEnumType(type)) {\n return TypeKind.ENUM;\n }\n\n if (isInputObjectType(type)) {\n return TypeKind.INPUT_OBJECT;\n }\n\n if (isListType(type)) {\n return TypeKind.LIST;\n }\n\n if (isNonNullType(type)) {\n return TypeKind.NON_NULL;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered)\n\n false || invariant(false, `Unexpected type: \"${inspect(type)}\".`);\n },\n },\n name: {\n type: GraphQLString,\n resolve: (type) => ('name' in type ? type.name : undefined),\n },\n description: {\n type: GraphQLString,\n resolve: (\n type, // FIXME: add test case\n ) =>\n /* c8 ignore next */\n 'description' in type ? type.description : undefined,\n },\n specifiedByURL: {\n type: GraphQLString,\n resolve: (obj) =>\n 'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n },\n fields: {\n type: new GraphQLList(new GraphQLNonNull(__Field)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const fields = Object.values(type.getFields());\n return includeDeprecated\n ? fields\n : fields.filter((field) => field.deprecationReason == null);\n }\n },\n },\n interfaces: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type) {\n if (isObjectType(type) || isInterfaceType(type)) {\n return type.getInterfaces();\n }\n },\n },\n possibleTypes: {\n type: new GraphQLList(new GraphQLNonNull(__Type)),\n\n resolve(type, _args, _context, { schema }) {\n if (isAbstractType(type)) {\n return schema.getPossibleTypes(type);\n }\n },\n },\n enumValues: {\n type: new GraphQLList(new GraphQLNonNull(__EnumValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isEnumType(type)) {\n const values = type.getValues();\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n inputFields: {\n type: new GraphQLList(new GraphQLNonNull(__InputValue)),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(type, { includeDeprecated }) {\n if (isInputObjectType(type)) {\n const values = Object.values(type.getFields());\n return includeDeprecated\n ? values\n : values.filter((field) => field.deprecationReason == null);\n }\n },\n },\n ofType: {\n type: __Type,\n resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n },\n isOneOf: {\n type: GraphQLBoolean,\n resolve: (type) => {\n if (isInputObjectType(type)) {\n return type.isOneOf;\n }\n },\n },\n }),\n});\nexport const __Field = new GraphQLObjectType({\n name: '__Field',\n description:\n 'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (field) => field.name,\n },\n description: {\n type: GraphQLString,\n resolve: (field) => field.description,\n },\n args: {\n type: new GraphQLNonNull(\n new GraphQLList(new GraphQLNonNull(__InputValue)),\n ),\n args: {\n includeDeprecated: {\n type: GraphQLBoolean,\n defaultValue: false,\n },\n },\n\n resolve(field, { includeDeprecated }) {\n return includeDeprecated\n ? field.args\n : field.args.filter((arg) => arg.deprecationReason == null);\n },\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (field) => field.type,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (field) => field.deprecationReason,\n },\n }),\n});\nexport const __InputValue = new GraphQLObjectType({\n name: '__InputValue',\n description:\n 'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (inputValue) => inputValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (inputValue) => inputValue.description,\n },\n type: {\n type: new GraphQLNonNull(__Type),\n resolve: (inputValue) => inputValue.type,\n },\n defaultValue: {\n type: GraphQLString,\n description:\n 'A GraphQL-formatted string representing the default value for this input value.',\n\n resolve(inputValue) {\n const { type, defaultValue } = inputValue;\n const valueAST = astFromValue(defaultValue, type);\n return valueAST ? print(valueAST) : null;\n },\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (field) => field.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (obj) => obj.deprecationReason,\n },\n }),\n});\nexport const __EnumValue = new GraphQLObjectType({\n name: '__EnumValue',\n description:\n 'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n fields: () => ({\n name: {\n type: new GraphQLNonNull(GraphQLString),\n resolve: (enumValue) => enumValue.name,\n },\n description: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.description,\n },\n isDeprecated: {\n type: new GraphQLNonNull(GraphQLBoolean),\n resolve: (enumValue) => enumValue.deprecationReason != null,\n },\n deprecationReason: {\n type: GraphQLString,\n resolve: (enumValue) => enumValue.deprecationReason,\n },\n }),\n});\nvar TypeKind;\n\n(function (TypeKind) {\n TypeKind['SCALAR'] = 'SCALAR';\n TypeKind['OBJECT'] = 'OBJECT';\n TypeKind['INTERFACE'] = 'INTERFACE';\n TypeKind['UNION'] = 'UNION';\n TypeKind['ENUM'] = 'ENUM';\n TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n TypeKind['LIST'] = 'LIST';\n TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (TypeKind = {}));\n\nexport { TypeKind };\nexport const __TypeKind = new GraphQLEnumType({\n name: '__TypeKind',\n description: 'An enum describing what kind of type a given `__Type` is.',\n values: {\n SCALAR: {\n value: TypeKind.SCALAR,\n description: 'Indicates this type is a scalar.',\n },\n OBJECT: {\n value: TypeKind.OBJECT,\n description:\n 'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n },\n INTERFACE: {\n value: TypeKind.INTERFACE,\n description:\n 'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n },\n UNION: {\n value: TypeKind.UNION,\n description:\n 'Indicates this type is a union. `possibleTypes` is a valid field.',\n },\n ENUM: {\n value: TypeKind.ENUM,\n description:\n 'Indicates this type is an enum. `enumValues` is a valid field.',\n },\n INPUT_OBJECT: {\n value: TypeKind.INPUT_OBJECT,\n description:\n 'Indicates this type is an input object. `inputFields` is a valid field.',\n },\n LIST: {\n value: TypeKind.LIST,\n description: 'Indicates this type is a list. `ofType` is a valid field.',\n },\n NON_NULL: {\n value: TypeKind.NON_NULL,\n description:\n 'Indicates this type is a non-null. `ofType` is a valid field.',\n },\n },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexport const SchemaMetaFieldDef = {\n name: '__schema',\n type: new GraphQLNonNull(__Schema),\n description: 'Access the current type schema of this server.',\n args: [],\n resolve: (_source, _args, _context, { schema }) => schema,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const TypeMetaFieldDef = {\n name: '__type',\n type: __Type,\n description: 'Request the type information of a single type.',\n args: [\n {\n name: 'name',\n description: undefined,\n type: new GraphQLNonNull(GraphQLString),\n defaultValue: undefined,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n },\n ],\n resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const TypeNameMetaFieldDef = {\n name: '__typename',\n type: new GraphQLNonNull(GraphQLString),\n description: 'The name of the current Object type at runtime.',\n args: [],\n resolve: (_source, _args, _context, { parentType }) => parentType.name,\n deprecationReason: undefined,\n extensions: Object.create(null),\n astNode: undefined,\n};\nexport const introspectionTypes = Object.freeze([\n __Schema,\n __Directive,\n __DirectiveLocation,\n __Type,\n __Field,\n __InputValue,\n __EnumValue,\n __TypeKind,\n]);\nexport function isIntrospectionType(type) {\n return introspectionTypes.some(({ name }) => type.name === name);\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { instanceOf } from '../jsutils/instanceOf.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { toObjMap } from '../jsutils/toObjMap.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport {\n getNamedType,\n isInputObjectType,\n isInterfaceType,\n isObjectType,\n isUnionType,\n} from './definition.mjs';\nimport { isDirective, specifiedDirectives } from './directives.mjs';\nimport { __Schema } from './introspection.mjs';\n/**\n * Test if the given value is a GraphQL schema.\n */\n\nexport function isSchema(schema) {\n return instanceOf(schema, GraphQLSchema);\n}\nexport function assertSchema(schema) {\n if (!isSchema(schema)) {\n throw new Error(`Expected ${inspect(schema)} to be a GraphQL schema.`);\n }\n\n return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * query: MyAppQueryRootType,\n * mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n * name: 'Character',\n * ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n * name: 'Human',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n * name: 'Droid',\n * interfaces: [characterInterface],\n * ...\n * });\n *\n * const schema = new GraphQLSchema({\n * query: new GraphQLObjectType({\n * name: 'Query',\n * fields: {\n * hero: { type: characterInterface, ... },\n * }\n * }),\n * ...\n * // Since this schema references only the `Character` interface it's\n * // necessary to explicitly list the types that implement it if\n * // you want them to be included in the final schema.\n * types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n * ...\n * directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nexport class GraphQLSchema {\n // Used as a cache for validateSchema().\n constructor(config) {\n var _config$extensionASTN, _config$directives;\n\n // If this schema was built from a source known to be valid, then it may be\n // marked with assumeValid to avoid an additional type system validation.\n this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n isObjectLike(config) ||\n devAssert(false, 'Must provide configuration object.');\n !config.types ||\n Array.isArray(config.types) ||\n devAssert(\n false,\n `\"types\" must be Array if provided but got: ${inspect(config.types)}.`,\n );\n !config.directives ||\n Array.isArray(config.directives) ||\n devAssert(\n false,\n '\"directives\" must be Array if provided but got: ' +\n `${inspect(config.directives)}.`,\n );\n this.description = config.description;\n this.extensions = toObjMap(config.extensions);\n this.astNode = config.astNode;\n this.extensionASTNodes =\n (_config$extensionASTN = config.extensionASTNodes) !== null &&\n _config$extensionASTN !== void 0\n ? _config$extensionASTN\n : [];\n this._queryType = config.query;\n this._mutationType = config.mutation;\n this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n this._directives =\n (_config$directives = config.directives) !== null &&\n _config$directives !== void 0\n ? _config$directives\n : specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n const allReferencedTypes = new Set(config.types);\n\n if (config.types != null) {\n for (const type of config.types) {\n // When we ready to process this type, we remove it from \"collected\" types\n // and then add it together with all dependent types in the correct position.\n allReferencedTypes.delete(type);\n collectReferencedTypes(type, allReferencedTypes);\n }\n }\n\n if (this._queryType != null) {\n collectReferencedTypes(this._queryType, allReferencedTypes);\n }\n\n if (this._mutationType != null) {\n collectReferencedTypes(this._mutationType, allReferencedTypes);\n }\n\n if (this._subscriptionType != null) {\n collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n }\n\n for (const directive of this._directives) {\n // Directives are not validated until validateSchema() is called.\n if (isDirective(directive)) {\n for (const arg of directive.args) {\n collectReferencedTypes(arg.type, allReferencedTypes);\n }\n }\n }\n\n collectReferencedTypes(__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n this._typeMap = Object.create(null);\n this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n this._implementationsMap = Object.create(null);\n\n for (const namedType of allReferencedTypes) {\n if (namedType == null) {\n continue;\n }\n\n const typeName = namedType.name;\n typeName ||\n devAssert(\n false,\n 'One of the provided types for building the Schema is missing a name.',\n );\n\n if (this._typeMap[typeName] !== undefined) {\n throw new Error(\n `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n );\n }\n\n this._typeMap[typeName] = namedType;\n\n if (isInterfaceType(namedType)) {\n // Store implementations by interface.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.interfaces.push(namedType);\n }\n }\n } else if (isObjectType(namedType)) {\n // Store implementations by objects.\n for (const iface of namedType.getInterfaces()) {\n if (isInterfaceType(iface)) {\n let implementations = this._implementationsMap[iface.name];\n\n if (implementations === undefined) {\n implementations = this._implementationsMap[iface.name] = {\n objects: [],\n interfaces: [],\n };\n }\n\n implementations.objects.push(namedType);\n }\n }\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'GraphQLSchema';\n }\n\n getQueryType() {\n return this._queryType;\n }\n\n getMutationType() {\n return this._mutationType;\n }\n\n getSubscriptionType() {\n return this._subscriptionType;\n }\n\n getRootType(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return this.getQueryType();\n\n case OperationTypeNode.MUTATION:\n return this.getMutationType();\n\n case OperationTypeNode.SUBSCRIPTION:\n return this.getSubscriptionType();\n }\n }\n\n getTypeMap() {\n return this._typeMap;\n }\n\n getType(name) {\n return this.getTypeMap()[name];\n }\n\n getPossibleTypes(abstractType) {\n return isUnionType(abstractType)\n ? abstractType.getTypes()\n : this.getImplementations(abstractType).objects;\n }\n\n getImplementations(interfaceType) {\n const implementations = this._implementationsMap[interfaceType.name];\n return implementations !== null && implementations !== void 0\n ? implementations\n : {\n objects: [],\n interfaces: [],\n };\n }\n\n isSubType(abstractType, maybeSubType) {\n let map = this._subTypeMap[abstractType.name];\n\n if (map === undefined) {\n map = Object.create(null);\n\n if (isUnionType(abstractType)) {\n for (const type of abstractType.getTypes()) {\n map[type.name] = true;\n }\n } else {\n const implementations = this.getImplementations(abstractType);\n\n for (const type of implementations.objects) {\n map[type.name] = true;\n }\n\n for (const type of implementations.interfaces) {\n map[type.name] = true;\n }\n }\n\n this._subTypeMap[abstractType.name] = map;\n }\n\n return map[maybeSubType.name] !== undefined;\n }\n\n getDirectives() {\n return this._directives;\n }\n\n getDirective(name) {\n return this.getDirectives().find((directive) => directive.name === name);\n }\n\n toConfig() {\n return {\n description: this.description,\n query: this.getQueryType(),\n mutation: this.getMutationType(),\n subscription: this.getSubscriptionType(),\n types: Object.values(this.getTypeMap()),\n directives: this.getDirectives(),\n extensions: this.extensions,\n astNode: this.astNode,\n extensionASTNodes: this.extensionASTNodes,\n assumeValid: this.__validationErrors !== undefined,\n };\n }\n}\n\nfunction collectReferencedTypes(type, typeSet) {\n const namedType = getNamedType(type);\n\n if (!typeSet.has(namedType)) {\n typeSet.add(namedType);\n\n if (isUnionType(namedType)) {\n for (const memberType of namedType.getTypes()) {\n collectReferencedTypes(memberType, typeSet);\n }\n } else if (isObjectType(namedType) || isInterfaceType(namedType)) {\n for (const interfaceType of namedType.getInterfaces()) {\n collectReferencedTypes(interfaceType, typeSet);\n }\n\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n\n for (const arg of field.args) {\n collectReferencedTypes(arg.type, typeSet);\n }\n }\n } else if (isInputObjectType(namedType)) {\n for (const field of Object.values(namedType.getFields())) {\n collectReferencedTypes(field.type, typeSet);\n }\n }\n }\n\n return typeSet;\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.mjs';\nimport {\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isOutputType,\n isRequiredArgument,\n isRequiredInputField,\n isUnionType,\n} from './definition.mjs';\nimport { GraphQLDeprecatedDirective, isDirective } from './directives.mjs';\nimport { isIntrospectionType } from './introspection.mjs';\nimport { assertSchema } from './schema.mjs';\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\n\nexport function validateSchema(schema) {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema); // If this Schema has already been validated, return the previous results.\n\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n } // Validate the schema, producing a list of errors.\n\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context); // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nexport function assertValidSchema(schema) {\n const errors = validateSchema(schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n constructor(schema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(message, nodes) {\n const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n this._errors.push(\n new GraphQLError(message, {\n nodes: _nodes,\n }),\n );\n }\n\n getErrors() {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context) {\n const schema = context.schema;\n const queryType = schema.getQueryType();\n\n if (!queryType) {\n context.reportError('Query root type must be provided.', schema.astNode);\n } else if (!isObjectType(queryType)) {\n var _getOperationTypeNode;\n\n context.reportError(\n `Query root type must be Object type, it cannot be ${inspect(\n queryType,\n )}.`,\n (_getOperationTypeNode = getOperationTypeNode(\n schema,\n OperationTypeNode.QUERY,\n )) !== null && _getOperationTypeNode !== void 0\n ? _getOperationTypeNode\n : queryType.astNode,\n );\n }\n\n const mutationType = schema.getMutationType();\n\n if (mutationType && !isObjectType(mutationType)) {\n var _getOperationTypeNode2;\n\n context.reportError(\n 'Mutation root type must be Object type if provided, it cannot be ' +\n `${inspect(mutationType)}.`,\n (_getOperationTypeNode2 = getOperationTypeNode(\n schema,\n OperationTypeNode.MUTATION,\n )) !== null && _getOperationTypeNode2 !== void 0\n ? _getOperationTypeNode2\n : mutationType.astNode,\n );\n }\n\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType && !isObjectType(subscriptionType)) {\n var _getOperationTypeNode3;\n\n context.reportError(\n 'Subscription root type must be Object type if provided, it cannot be ' +\n `${inspect(subscriptionType)}.`,\n (_getOperationTypeNode3 = getOperationTypeNode(\n schema,\n OperationTypeNode.SUBSCRIPTION,\n )) !== null && _getOperationTypeNode3 !== void 0\n ? _getOperationTypeNode3\n : subscriptionType.astNode,\n );\n }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n var _flatMap$find;\n\n return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n .flatMap(\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n (schemaNode) => {\n var _schemaNode$operation;\n\n return (\n /* c8 ignore next */\n (_schemaNode$operation =\n schemaNode === null || schemaNode === void 0\n ? void 0\n : schemaNode.operationTypes) !== null &&\n _schemaNode$operation !== void 0\n ? _schemaNode$operation\n : []\n );\n },\n )\n .find((operationNode) => operationNode.operation === operation)) === null ||\n _flatMap$find === void 0\n ? void 0\n : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect(directive)}.`,\n directive === null || directive === void 0 ? void 0 : directive.astNode,\n );\n continue;\n } // Ensure they are named correctly.\n\n validateName(context, directive);\n\n if (directive.locations.length === 0) {\n context.reportError(\n `Directive @${directive.name} must include 1 or more locations.`,\n directive.astNode,\n );\n } // Ensure the arguments are valid.\n\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg); // Ensure the type is an input type.\n\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n `but got: ${inspect(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode;\n\n context.reportError(\n `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n ? void 0\n : _arg$astNode.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateName(context, node) {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context) {\n const validateInputObjectCircularRefs =\n createInputObjectCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect(type)}.`,\n type.astNode,\n );\n continue;\n } // Ensure it is named correctly (excluding introspection types).\n\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n validateInputObjectCircularRefs(type);\n }\n }\n}\n\nfunction validateFields(context, type) {\n const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n if (fields.length === 0) {\n context.reportError(`Type ${type.name} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an output type\n\n if (!isOutputType(field.type)) {\n var _field$astNode;\n\n context.reportError(\n `The type of ${type.name}.${field.name} must be Output Type ` +\n `but got: ${inspect(field.type)}.`,\n (_field$astNode = field.astNode) === null || _field$astNode === void 0\n ? void 0\n : _field$astNode.type,\n );\n } // Ensure the arguments are valid\n\n for (const arg of field.args) {\n const argName = arg.name; // Ensure they are named correctly.\n\n validateName(context, arg); // Ensure the type is an input type\n\n if (!isInputType(arg.type)) {\n var _arg$astNode2;\n\n context.reportError(\n `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n `Type but got: ${inspect(arg.type)}.`,\n (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n ? void 0\n : _arg$astNode2.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n var _arg$astNode3;\n\n context.reportError(\n `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(arg.astNode),\n (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n ? void 0\n : _arg$astNode3.type,\n ],\n );\n }\n }\n }\n}\n\nfunction validateInterfaces(context, type) {\n const ifaceTypeNames = Object.create(null);\n\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${inspect(type)} must only implement Interface types, ` +\n `it cannot implement ${inspect(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames[iface.name]) {\n context.reportError(\n `Type ${type.name} can only implement ${iface.name} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames[iface.name] = true;\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n for (const ifaceField of Object.values(iface.getFields())) {\n const fieldName = ifaceField.name;\n const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n if (!typeField) {\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n } // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n var _ifaceField$astNode, _typeField$astNode;\n\n context.reportError(\n `Interface field ${iface.name}.${fieldName} expects type ` +\n `${inspect(ifaceField.type)} but ${type.name}.${fieldName} ` +\n `is type ${inspect(typeField.type)}.`,\n [\n (_ifaceField$astNode = ifaceField.astNode) === null ||\n _ifaceField$astNode === void 0\n ? void 0\n : _ifaceField$astNode.type,\n (_typeField$astNode = typeField.astNode) === null ||\n _typeField$astNode === void 0\n ? void 0\n : _typeField$astNode.type,\n ],\n );\n } // Assert each interface field arg is implemented.\n\n for (const ifaceArg of ifaceField.args) {\n const argName = ifaceArg.name;\n const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n } // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n var _ifaceArg$astNode, _typeArg$astNode;\n\n context.reportError(\n `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n `expects type ${inspect(ifaceArg.type)} but ` +\n `${type.name}.${fieldName}(${argName}:) is type ` +\n `${inspect(typeArg.type)}.`,\n [\n (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n _ifaceArg$astNode === void 0\n ? void 0\n : _ifaceArg$astNode.type,\n (_typeArg$astNode = typeArg.astNode) === null ||\n _typeArg$astNode === void 0\n ? void 0\n : _typeArg$astNode.type,\n ],\n );\n } // TODO: validate default values?\n } // Assert additional arguments must not be required.\n\n for (const typeArg of typeField.args) {\n const argName = typeArg.name;\n const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n if (!ifaceArg && isRequiredArgument(typeArg)) {\n context.reportError(\n `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n const ifaceInterfaces = type.getInterfaces();\n\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(context, union) {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union.name} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = Object.create(null);\n\n for (const memberType of memberTypes) {\n if (includedTypeNames[memberType.name]) {\n context.reportError(\n `Union type ${union.name} can only include type ${memberType.name} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n\n includedTypeNames[memberType.name] = true;\n\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union.name} can only include Object types, ` +\n `it cannot include ${inspect(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(context, enumType) {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType.name} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(context, inputObj) {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj.name} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n } // Ensure the arguments are valid\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field); // Ensure the type is an input type\n\n if (!isInputType(field.type)) {\n var _field$astNode2;\n\n context.reportError(\n `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n `but got: ${inspect(field.type)}.`,\n (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n ? void 0\n : _field$astNode2.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n var _field$astNode3;\n\n context.reportError(\n `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n [\n getDeprecatedDirectiveNode(field.astNode),\n (_field$astNode3 = field.astNode) === null ||\n _field$astNode3 === void 0\n ? void 0\n : _field$astNode3.type,\n ],\n );\n }\n\n if (inputObj.isOneOf) {\n validateOneOfInputObjectField(inputObj, field, context);\n }\n }\n}\n\nfunction validateOneOfInputObjectField(type, field, context) {\n if (isNonNullType(field.type)) {\n var _field$astNode4;\n\n context.reportError(\n `OneOf input field ${type.name}.${field.name} must be nullable.`,\n (_field$astNode4 = field.astNode) === null || _field$astNode4 === void 0\n ? void 0\n : _field$astNode4.type,\n );\n }\n\n if (field.defaultValue !== undefined) {\n context.reportError(\n `OneOf input field ${type.name}.${field.name} cannot have a default value.`,\n field.astNode,\n );\n }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n // Tracks already visited types to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n const fieldPath = []; // Position in the type path\n\n const fieldPathIndexByTypeName = Object.create(null);\n return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(inputObj) {\n if (visitedTypes[inputObj.name]) {\n return;\n }\n\n visitedTypes[inputObj.name] = true;\n fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n if (isNonNullType(field.type) && isInputObjectType(field.type.ofType)) {\n const fieldType = field.type.ofType;\n const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n fieldPath.push(field);\n\n if (cycleIndex === undefined) {\n detectCycleRecursive(fieldType);\n } else {\n const cyclePath = fieldPath.slice(cycleIndex);\n const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n context.reportError(\n `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n cyclePath.map((fieldObj) => fieldObj.astNode),\n );\n }\n\n fieldPath.pop();\n }\n }\n\n fieldPathIndexByTypeName[inputObj.name] = undefined;\n }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n const { astNode, extensionASTNodes } = type;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((typeNode) => {\n var _typeNode$interfaces;\n\n return (\n /* c8 ignore next */\n (_typeNode$interfaces = typeNode.interfaces) !== null &&\n _typeNode$interfaces !== void 0\n ? _typeNode$interfaces\n : []\n );\n })\n .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n const { astNode, extensionASTNodes } = union;\n const nodes =\n astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n return nodes\n .flatMap((unionNode) => {\n var _unionNode$types;\n\n return (\n /* c8 ignore next */\n (_unionNode$types = unionNode.types) !== null &&\n _unionNode$types !== void 0\n ? _unionNode$types\n : []\n );\n })\n .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n var _definitionNode$direc;\n\n return definitionNode === null || definitionNode === void 0\n ? void 0\n : (_definitionNode$direc = definitionNode.directives) === null ||\n _definitionNode$direc === void 0\n ? void 0\n : _definitionNode$direc.find(\n (node) => node.name.value === GraphQLDeprecatedDirective.name,\n );\n}\n","import { Kind } from '../language/kinds.mjs';\nimport { GraphQLList, GraphQLNonNull } from '../type/definition.mjs';\nexport function typeFromAST(schema, typeNode) {\n switch (typeNode.kind) {\n case Kind.LIST_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLList(innerType);\n }\n\n case Kind.NON_NULL_TYPE: {\n const innerType = typeFromAST(schema, typeNode.type);\n return innerType && new GraphQLNonNull(innerType);\n }\n\n case Kind.NAMED_TYPE:\n return schema.getType(typeNode.name.value);\n }\n}\n","import { isNode } from '../language/ast.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { getEnterLeaveForKind } from '../language/visitor.mjs';\nimport {\n getNamedType,\n getNullableType,\n isCompositeType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isListType,\n isObjectType,\n isOutputType,\n} from '../type/definition.mjs';\nimport {\n SchemaMetaFieldDef,\n TypeMetaFieldDef,\n TypeNameMetaFieldDef,\n} from '../type/introspection.mjs';\nimport { typeFromAST } from './typeFromAST.mjs';\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\n\nexport class TypeInfo {\n constructor(\n schema,\n /**\n * Initial type may be provided in rare cases to facilitate traversals\n * beginning somewhere other than documents.\n */\n initialType,\n /** @deprecated will be removed in 17.0.0 */\n getFieldDefFn,\n ) {\n this._schema = schema;\n this._typeStack = [];\n this._parentTypeStack = [];\n this._inputTypeStack = [];\n this._fieldDefStack = [];\n this._defaultValueStack = [];\n this._directive = null;\n this._argument = null;\n this._enumValue = null;\n this._getFieldDef =\n getFieldDefFn !== null && getFieldDefFn !== void 0\n ? getFieldDefFn\n : getFieldDef;\n\n if (initialType) {\n if (isInputType(initialType)) {\n this._inputTypeStack.push(initialType);\n }\n\n if (isCompositeType(initialType)) {\n this._parentTypeStack.push(initialType);\n }\n\n if (isOutputType(initialType)) {\n this._typeStack.push(initialType);\n }\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'TypeInfo';\n }\n\n getType() {\n if (this._typeStack.length > 0) {\n return this._typeStack[this._typeStack.length - 1];\n }\n }\n\n getParentType() {\n if (this._parentTypeStack.length > 0) {\n return this._parentTypeStack[this._parentTypeStack.length - 1];\n }\n }\n\n getInputType() {\n if (this._inputTypeStack.length > 0) {\n return this._inputTypeStack[this._inputTypeStack.length - 1];\n }\n }\n\n getParentInputType() {\n if (this._inputTypeStack.length > 1) {\n return this._inputTypeStack[this._inputTypeStack.length - 2];\n }\n }\n\n getFieldDef() {\n if (this._fieldDefStack.length > 0) {\n return this._fieldDefStack[this._fieldDefStack.length - 1];\n }\n }\n\n getDefaultValue() {\n if (this._defaultValueStack.length > 0) {\n return this._defaultValueStack[this._defaultValueStack.length - 1];\n }\n }\n\n getDirective() {\n return this._directive;\n }\n\n getArgument() {\n return this._argument;\n }\n\n getEnumValue() {\n return this._enumValue;\n }\n\n enter(node) {\n const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n // any assumptions of a valid schema to ensure runtime types are properly\n // checked before continuing since TypeInfo is used as part of validation\n // which occurs before guarantees of schema and document validity.\n\n switch (node.kind) {\n case Kind.SELECTION_SET: {\n const namedType = getNamedType(this.getType());\n\n this._parentTypeStack.push(\n isCompositeType(namedType) ? namedType : undefined,\n );\n\n break;\n }\n\n case Kind.FIELD: {\n const parentType = this.getParentType();\n let fieldDef;\n let fieldType;\n\n if (parentType) {\n fieldDef = this._getFieldDef(schema, parentType, node);\n\n if (fieldDef) {\n fieldType = fieldDef.type;\n }\n }\n\n this._fieldDefStack.push(fieldDef);\n\n this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);\n\n break;\n }\n\n case Kind.DIRECTIVE:\n this._directive = schema.getDirective(node.name.value);\n break;\n\n case Kind.OPERATION_DEFINITION: {\n const rootType = schema.getRootType(node.operation);\n\n this._typeStack.push(isObjectType(rootType) ? rootType : undefined);\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION: {\n const typeConditionAST = node.typeCondition;\n const outputType = typeConditionAST\n ? typeFromAST(schema, typeConditionAST)\n : getNamedType(this.getType());\n\n this._typeStack.push(isOutputType(outputType) ? outputType : undefined);\n\n break;\n }\n\n case Kind.VARIABLE_DEFINITION: {\n const inputType = typeFromAST(schema, node.type);\n\n this._inputTypeStack.push(\n isInputType(inputType) ? inputType : undefined,\n );\n\n break;\n }\n\n case Kind.ARGUMENT: {\n var _this$getDirective;\n\n let argDef;\n let argType;\n const fieldOrDirective =\n (_this$getDirective = this.getDirective()) !== null &&\n _this$getDirective !== void 0\n ? _this$getDirective\n : this.getFieldDef();\n\n if (fieldOrDirective) {\n argDef = fieldOrDirective.args.find(\n (arg) => arg.name === node.name.value,\n );\n\n if (argDef) {\n argType = argDef.type;\n }\n }\n\n this._argument = argDef;\n\n this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n this._inputTypeStack.push(isInputType(argType) ? argType : undefined);\n\n break;\n }\n\n case Kind.LIST: {\n const listType = getNullableType(this.getInputType());\n const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.\n\n this._defaultValueStack.push(undefined);\n\n this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);\n\n break;\n }\n\n case Kind.OBJECT_FIELD: {\n const objectType = getNamedType(this.getInputType());\n let inputFieldType;\n let inputField;\n\n if (isInputObjectType(objectType)) {\n inputField = objectType.getFields()[node.name.value];\n\n if (inputField) {\n inputFieldType = inputField.type;\n }\n }\n\n this._defaultValueStack.push(\n inputField ? inputField.defaultValue : undefined,\n );\n\n this._inputTypeStack.push(\n isInputType(inputFieldType) ? inputFieldType : undefined,\n );\n\n break;\n }\n\n case Kind.ENUM: {\n const enumType = getNamedType(this.getInputType());\n let enumValue;\n\n if (isEnumType(enumType)) {\n enumValue = enumType.getValue(node.value);\n }\n\n this._enumValue = enumValue;\n break;\n }\n\n default: // Ignore other nodes\n }\n }\n\n leave(node) {\n switch (node.kind) {\n case Kind.SELECTION_SET:\n this._parentTypeStack.pop();\n\n break;\n\n case Kind.FIELD:\n this._fieldDefStack.pop();\n\n this._typeStack.pop();\n\n break;\n\n case Kind.DIRECTIVE:\n this._directive = null;\n break;\n\n case Kind.OPERATION_DEFINITION:\n case Kind.INLINE_FRAGMENT:\n case Kind.FRAGMENT_DEFINITION:\n this._typeStack.pop();\n\n break;\n\n case Kind.VARIABLE_DEFINITION:\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ARGUMENT:\n this._argument = null;\n\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.LIST:\n case Kind.OBJECT_FIELD:\n this._defaultValueStack.pop();\n\n this._inputTypeStack.pop();\n\n break;\n\n case Kind.ENUM:\n this._enumValue = null;\n break;\n\n default: // Ignore other nodes\n }\n }\n}\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n const name = fieldNode.name.value;\n\n if (\n name === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n }\n\n if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n\n if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {\n return TypeNameMetaFieldDef;\n }\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n return parentType.getFields()[name];\n }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter(...args) {\n const node = args[0];\n typeInfo.enter(node);\n const fn = getEnterLeaveForKind(visitor, node.kind).enter;\n\n if (fn) {\n const result = fn.apply(visitor, args);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n\n leave(...args) {\n const node = args[0];\n const fn = getEnterLeaveForKind(visitor, node.kind).leave;\n let result;\n\n if (fn) {\n result = fn.apply(visitor, args);\n }\n\n typeInfo.leave(node);\n return result;\n },\n };\n}\n","import { Kind } from './kinds.mjs';\nexport function isDefinitionNode(node) {\n return (\n isExecutableDefinitionNode(node) ||\n isTypeSystemDefinitionNode(node) ||\n isTypeSystemExtensionNode(node)\n );\n}\nexport function isExecutableDefinitionNode(node) {\n return (\n node.kind === Kind.OPERATION_DEFINITION ||\n node.kind === Kind.FRAGMENT_DEFINITION\n );\n}\nexport function isSelectionNode(node) {\n return (\n node.kind === Kind.FIELD ||\n node.kind === Kind.FRAGMENT_SPREAD ||\n node.kind === Kind.INLINE_FRAGMENT\n );\n}\nexport function isValueNode(node) {\n return (\n node.kind === Kind.VARIABLE ||\n node.kind === Kind.INT ||\n node.kind === Kind.FLOAT ||\n node.kind === Kind.STRING ||\n node.kind === Kind.BOOLEAN ||\n node.kind === Kind.NULL ||\n node.kind === Kind.ENUM ||\n node.kind === Kind.LIST ||\n node.kind === Kind.OBJECT\n );\n}\nexport function isConstValueNode(node) {\n return (\n isValueNode(node) &&\n (node.kind === Kind.LIST\n ? node.values.some(isConstValueNode)\n : node.kind === Kind.OBJECT\n ? node.fields.some((field) => isConstValueNode(field.value))\n : node.kind !== Kind.VARIABLE)\n );\n}\nexport function isTypeNode(node) {\n return (\n node.kind === Kind.NAMED_TYPE ||\n node.kind === Kind.LIST_TYPE ||\n node.kind === Kind.NON_NULL_TYPE\n );\n}\nexport function isTypeSystemDefinitionNode(node) {\n return (\n node.kind === Kind.SCHEMA_DEFINITION ||\n isTypeDefinitionNode(node) ||\n node.kind === Kind.DIRECTIVE_DEFINITION\n );\n}\nexport function isTypeDefinitionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.ENUM_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n );\n}\nexport function isTypeSystemExtensionNode(node) {\n return node.kind === Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node);\n}\nexport function isTypeExtensionNode(node) {\n return (\n node.kind === Kind.SCALAR_TYPE_EXTENSION ||\n node.kind === Kind.OBJECT_TYPE_EXTENSION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION ||\n node.kind === Kind.UNION_TYPE_EXTENSION ||\n node.kind === Kind.ENUM_TYPE_EXTENSION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n );\n}\nexport function isSchemaCoordinateNode(node) {\n return (\n node.kind === Kind.TYPE_COORDINATE ||\n node.kind === Kind.MEMBER_COORDINATE ||\n node.kind === Kind.ARGUMENT_COORDINATE ||\n node.kind === Kind.DIRECTIVE_COORDINATE ||\n node.kind === Kind.DIRECTIVE_ARGUMENT_COORDINATE\n );\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { isExecutableDefinitionNode } from '../../language/predicates.mjs';\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nexport function ExecutableDefinitionsRule(context) {\n return {\n Document(node) {\n for (const definition of node.definitions) {\n if (!isExecutableDefinitionNode(definition)) {\n const defName =\n definition.kind === Kind.SCHEMA_DEFINITION ||\n definition.kind === Kind.SCHEMA_EXTENSION\n ? 'schema'\n : '\"' + definition.name.value + '\"';\n context.reportError(\n new GraphQLError(`The ${defName} definition is not executable.`, {\n nodes: definition,\n }),\n );\n }\n }\n\n return false;\n },\n };\n}\n","import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { naturalCompare } from '../../jsutils/naturalCompare.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport {\n isAbstractType,\n isInterfaceType,\n isObjectType,\n} from '../../type/definition.mjs';\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nexport function FieldsOnCorrectTypeRule(context) {\n return {\n Field(node) {\n const type = context.getParentType();\n\n if (type) {\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n // This field doesn't exist, lets look for suggestions.\n const schema = context.getSchema();\n const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n let suggestion = didYouMean(\n 'to use an inline fragment on',\n getSuggestedTypeNames(schema, type, fieldName),\n ); // If there are no suggested types, then perhaps this was a typo?\n\n if (suggestion === '') {\n suggestion = didYouMean(getSuggestedFieldNames(type, fieldName));\n } // Report an error, including helpful suggestions.\n\n context.reportError(\n new GraphQLError(\n `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n suggestion,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n if (!isAbstractType(type)) {\n // Must be an Object type, which does not have possible fields.\n return [];\n }\n\n const suggestedTypes = new Set();\n const usageCount = Object.create(null);\n\n for (const possibleType of schema.getPossibleTypes(type)) {\n if (!possibleType.getFields()[fieldName]) {\n continue;\n } // This object type defines this field.\n\n suggestedTypes.add(possibleType);\n usageCount[possibleType.name] = 1;\n\n for (const possibleInterface of possibleType.getInterfaces()) {\n var _usageCount$possibleI;\n\n if (!possibleInterface.getFields()[fieldName]) {\n continue;\n } // This interface type defines this field.\n\n suggestedTypes.add(possibleInterface);\n usageCount[possibleInterface.name] =\n ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n null && _usageCount$possibleI !== void 0\n ? _usageCount$possibleI\n : 0) + 1;\n }\n }\n\n return [...suggestedTypes]\n .sort((typeA, typeB) => {\n // Suggest both interface and object types based on how common they are.\n const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n if (usageCountDiff !== 0) {\n return usageCountDiff;\n } // Suggest super types first followed by subtypes\n\n if (isInterfaceType(typeA) && schema.isSubType(typeA, typeB)) {\n return -1;\n }\n\n if (isInterfaceType(typeB) && schema.isSubType(typeB, typeA)) {\n return 1;\n }\n\n return naturalCompare(typeA.name, typeB.name);\n })\n .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n if (isObjectType(type) || isInterfaceType(type)) {\n const possibleFieldNames = Object.keys(type.getFields());\n return suggestionList(fieldName, possibleFieldNames);\n } // Otherwise, must be a Union type, which does not define fields.\n\n return [];\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isCompositeType } from '../../type/definition.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nexport function FragmentsOnCompositeTypesRule(context) {\n return {\n InlineFragment(node) {\n const typeCondition = node.typeCondition;\n\n if (typeCondition) {\n const type = typeFromAST(context.getSchema(), typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: typeCondition,\n },\n ),\n );\n }\n }\n },\n\n FragmentDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.typeCondition);\n\n if (type && !isCompositeType(type)) {\n const typeStr = print(node.typeCondition);\n context.reportError(\n new GraphQLError(\n `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n {\n nodes: node.typeCondition,\n },\n ),\n );\n }\n },\n };\n}\n","import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nexport function KnownArgumentNamesRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...KnownArgumentNamesOnDirectivesRule(context),\n\n Argument(argNode) {\n const argDef = context.getArgument();\n const fieldDef = context.getFieldDef();\n const parentType = context.getParentType();\n\n if (!argDef && fieldDef && parentType) {\n const argName = argNode.name.value;\n const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n const suggestions = suggestionList(argName, knownArgsNames);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n },\n };\n}\n/**\n * @internal\n */\n\nexport function KnownArgumentNamesOnDirectivesRule(context) {\n const directiveArgs = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argsNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n }\n }\n\n return {\n Directive(directiveNode) {\n const directiveName = directiveNode.name.value;\n const knownArgs = directiveArgs[directiveName];\n\n if (directiveNode.arguments && knownArgs) {\n for (const argNode of directiveNode.arguments) {\n const argName = argNode.name.value;\n\n if (!knownArgs.includes(argName)) {\n const suggestions = suggestionList(argName, knownArgs);\n context.reportError(\n new GraphQLError(\n `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n didYouMean(suggestions),\n {\n nodes: argNode,\n },\n ),\n );\n }\n }\n }\n\n return false;\n },\n };\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { invariant } from '../../jsutils/invariant.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { OperationTypeNode } from '../../language/ast.mjs';\nimport { DirectiveLocation } from '../../language/directiveLocation.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nexport function KnownDirectivesRule(context) {\n const locationsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n locationsMap[directive.name] = directive.locations;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n locationsMap[def.name.value] = def.locations.map((name) => name.value);\n }\n }\n\n return {\n Directive(node, _key, _parent, _path, ancestors) {\n const name = node.name.value;\n const locations = locationsMap[name];\n\n if (!locations) {\n context.reportError(\n new GraphQLError(`Unknown directive \"@${name}\".`, {\n nodes: node,\n }),\n );\n return;\n }\n\n const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n if (candidateLocation && !locations.includes(candidateLocation)) {\n context.reportError(\n new GraphQLError(\n `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n const appliedTo = ancestors[ancestors.length - 1];\n 'kind' in appliedTo || invariant(false);\n\n switch (appliedTo.kind) {\n case Kind.OPERATION_DEFINITION:\n return getDirectiveLocationForOperation(appliedTo.operation);\n\n case Kind.FIELD:\n return DirectiveLocation.FIELD;\n\n case Kind.FRAGMENT_SPREAD:\n return DirectiveLocation.FRAGMENT_SPREAD;\n\n case Kind.INLINE_FRAGMENT:\n return DirectiveLocation.INLINE_FRAGMENT;\n\n case Kind.FRAGMENT_DEFINITION:\n return DirectiveLocation.FRAGMENT_DEFINITION;\n\n case Kind.VARIABLE_DEFINITION:\n return DirectiveLocation.VARIABLE_DEFINITION;\n\n case Kind.SCHEMA_DEFINITION:\n case Kind.SCHEMA_EXTENSION:\n return DirectiveLocation.SCHEMA;\n\n case Kind.SCALAR_TYPE_DEFINITION:\n case Kind.SCALAR_TYPE_EXTENSION:\n return DirectiveLocation.SCALAR;\n\n case Kind.OBJECT_TYPE_DEFINITION:\n case Kind.OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.OBJECT;\n\n case Kind.FIELD_DEFINITION:\n return DirectiveLocation.FIELD_DEFINITION;\n\n case Kind.INTERFACE_TYPE_DEFINITION:\n case Kind.INTERFACE_TYPE_EXTENSION:\n return DirectiveLocation.INTERFACE;\n\n case Kind.UNION_TYPE_DEFINITION:\n case Kind.UNION_TYPE_EXTENSION:\n return DirectiveLocation.UNION;\n\n case Kind.ENUM_TYPE_DEFINITION:\n case Kind.ENUM_TYPE_EXTENSION:\n return DirectiveLocation.ENUM;\n\n case Kind.ENUM_VALUE_DEFINITION:\n return DirectiveLocation.ENUM_VALUE;\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n return DirectiveLocation.INPUT_OBJECT;\n\n case Kind.INPUT_VALUE_DEFINITION: {\n const parentNode = ancestors[ancestors.length - 3];\n 'kind' in parentNode || invariant(false);\n return parentNode.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION\n ? DirectiveLocation.INPUT_FIELD_DEFINITION\n : DirectiveLocation.ARGUMENT_DEFINITION;\n }\n // Not reachable, all possible types have been considered.\n\n /* c8 ignore next */\n\n default:\n false || invariant(false, 'Unexpected kind: ' + inspect(appliedTo.kind));\n }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n switch (operation) {\n case OperationTypeNode.QUERY:\n return DirectiveLocation.QUERY;\n\n case OperationTypeNode.MUTATION:\n return DirectiveLocation.MUTATION;\n\n case OperationTypeNode.SUBSCRIPTION:\n return DirectiveLocation.SUBSCRIPTION;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nexport function KnownFragmentNamesRule(context) {\n return {\n FragmentSpread(node) {\n const fragmentName = node.name.value;\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n context.reportError(\n new GraphQLError(`Unknown fragment \"${fragmentName}\".`, {\n nodes: node.name,\n }),\n );\n }\n },\n };\n}\n","import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport {\n isTypeDefinitionNode,\n isTypeSystemDefinitionNode,\n isTypeSystemExtensionNode,\n} from '../../language/predicates.mjs';\nimport { introspectionTypes } from '../../type/introspection.mjs';\nimport { specifiedScalarTypes } from '../../type/scalars.mjs';\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nexport function KnownTypeNamesRule(context) {\n const schema = context.getSchema();\n const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n const definedTypes = Object.create(null);\n\n for (const def of context.getDocument().definitions) {\n if (isTypeDefinitionNode(def)) {\n definedTypes[def.name.value] = true;\n }\n }\n\n const typeNames = [\n ...Object.keys(existingTypesMap),\n ...Object.keys(definedTypes),\n ];\n return {\n NamedType(node, _1, parent, _2, ancestors) {\n const typeName = node.name.value;\n\n if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n var _ancestors$;\n\n const definitionNode =\n (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n ? _ancestors$\n : parent;\n const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n if (isSDL && standardTypeNames.includes(typeName)) {\n return;\n }\n\n const suggestedTypes = suggestionList(\n typeName,\n isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n );\n context.reportError(\n new GraphQLError(\n `Unknown type \"${typeName}\".` + didYouMean(suggestedTypes),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\nconst standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(\n (type) => type.name,\n);\n\nfunction isSDLNode(value) {\n return (\n 'kind' in value &&\n (isTypeSystemDefinitionNode(value) || isTypeSystemExtensionNode(value))\n );\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nexport function LoneAnonymousOperationRule(context) {\n let operationCount = 0;\n return {\n Document(node) {\n operationCount = node.definitions.filter(\n (definition) => definition.kind === Kind.OPERATION_DEFINITION,\n ).length;\n },\n\n OperationDefinition(node) {\n if (!node.name && operationCount > 1) {\n context.reportError(\n new GraphQLError(\n 'This anonymous operation must be the only defined operation.',\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nconst MAX_LISTS_DEPTH = 3;\nexport function MaxIntrospectionDepthRule(context) {\n /**\n * Counts the depth of list fields in \"__Type\" recursively and\n * returns `true` if the limit has been reached.\n */\n function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {\n if (node.kind === Kind.FRAGMENT_SPREAD) {\n const fragmentName = node.name.value;\n\n if (visitedFragments[fragmentName] === true) {\n // Fragment cycles are handled by `NoFragmentCyclesRule`.\n return false;\n }\n\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n // Missing fragments checks are handled by `KnownFragmentNamesRule`.\n return false;\n } // Rather than following an immutable programming pattern which has\n // significant memory and garbage collection overhead, we've opted to\n // take a mutable approach for efficiency's sake. Importantly visiting a\n // fragment twice is fine, so long as you don't do one visit inside the\n // other.\n\n try {\n visitedFragments[fragmentName] = true;\n return checkDepth(fragment, visitedFragments, depth);\n } finally {\n visitedFragments[fragmentName] = undefined;\n }\n }\n\n if (\n node.kind === Kind.FIELD && // check all introspection lists\n (node.name.value === 'fields' ||\n node.name.value === 'interfaces' ||\n node.name.value === 'possibleTypes' ||\n node.name.value === 'inputFields')\n ) {\n // eslint-disable-next-line no-param-reassign\n depth++;\n\n if (depth >= MAX_LISTS_DEPTH) {\n return true;\n }\n } // handles fields and inline fragments\n\n if ('selectionSet' in node && node.selectionSet) {\n for (const child of node.selectionSet.selections) {\n if (checkDepth(child, visitedFragments, depth)) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n return {\n Field(node) {\n if (node.name.value === '__schema' || node.name.value === '__type') {\n if (checkDepth(node)) {\n context.reportError(\n new GraphQLError('Maximum introspection depth exceeded', {\n nodes: [node],\n }),\n );\n return false;\n }\n }\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nexport function NoFragmentCyclesRule(context) {\n // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n // are not redundantly reported.\n const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n const spreadPath = []; // Position in the spread path\n\n const spreadPathIndexByName = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n detectCycleRecursive(node);\n return false;\n },\n }; // This does a straight-forward DFS to find cycles.\n // It does not terminate when a cycle was found but continues to explore\n // the graph to find all possible cycles.\n\n function detectCycleRecursive(fragment) {\n if (visitedFrags[fragment.name.value]) {\n return;\n }\n\n const fragmentName = fragment.name.value;\n visitedFrags[fragmentName] = true;\n const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n if (spreadNodes.length === 0) {\n return;\n }\n\n spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n for (const spreadNode of spreadNodes) {\n const spreadName = spreadNode.name.value;\n const cycleIndex = spreadPathIndexByName[spreadName];\n spreadPath.push(spreadNode);\n\n if (cycleIndex === undefined) {\n const spreadFragment = context.getFragment(spreadName);\n\n if (spreadFragment) {\n detectCycleRecursive(spreadFragment);\n }\n } else {\n const cyclePath = spreadPath.slice(cycleIndex);\n const viaPath = cyclePath\n .slice(0, -1)\n .map((s) => '\"' + s.name.value + '\"')\n .join(', ');\n context.reportError(\n new GraphQLError(\n `Cannot spread fragment \"${spreadName}\" within itself` +\n (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n {\n nodes: cyclePath,\n },\n ),\n );\n }\n\n spreadPath.pop();\n }\n\n spreadPathIndexByName[fragmentName] = undefined;\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nexport function NoUndefinedVariablesRule(context) {\n let variableNameDefined = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n variableNameDefined = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n const varName = node.name.value;\n\n if (variableNameDefined[varName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n : `Variable \"$${varName}\" is not defined.`,\n {\n nodes: [node, operation],\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(node) {\n variableNameDefined[node.variable.name.value] = true;\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nexport function NoUnusedFragmentsRule(context) {\n const operationDefs = [];\n const fragmentDefs = [];\n return {\n OperationDefinition(node) {\n operationDefs.push(node);\n return false;\n },\n\n FragmentDefinition(node) {\n fragmentDefs.push(node);\n return false;\n },\n\n Document: {\n leave() {\n const fragmentNameUsed = Object.create(null);\n\n for (const operation of operationDefs) {\n for (const fragment of context.getRecursivelyReferencedFragments(\n operation,\n )) {\n fragmentNameUsed[fragment.name.value] = true;\n }\n }\n\n for (const fragmentDef of fragmentDefs) {\n const fragName = fragmentDef.name.value;\n\n if (fragmentNameUsed[fragName] !== true) {\n context.reportError(\n new GraphQLError(`Fragment \"${fragName}\" is never used.`, {\n nodes: fragmentDef,\n }),\n );\n }\n }\n },\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nexport function NoUnusedVariablesRule(context) {\n let variableDefs = [];\n return {\n OperationDefinition: {\n enter() {\n variableDefs = [];\n },\n\n leave(operation) {\n const variableNameUsed = Object.create(null);\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node } of usages) {\n variableNameUsed[node.name.value] = true;\n }\n\n for (const variableDef of variableDefs) {\n const variableName = variableDef.variable.name.value;\n\n if (variableNameUsed[variableName] !== true) {\n context.reportError(\n new GraphQLError(\n operation.name\n ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n : `Variable \"$${variableName}\" is never used.`,\n {\n nodes: variableDef,\n },\n ),\n );\n }\n }\n },\n },\n\n VariableDefinition(def) {\n variableDefs.push(def);\n },\n };\n}\n","import { naturalCompare } from '../jsutils/naturalCompare.mjs';\nimport { Kind } from '../language/kinds.mjs';\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\n\nexport function sortValueNode(valueNode) {\n switch (valueNode.kind) {\n case Kind.OBJECT:\n return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n case Kind.LIST:\n return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n case Kind.INT:\n case Kind.FLOAT:\n case Kind.STRING:\n case Kind.BOOLEAN:\n case Kind.NULL:\n case Kind.ENUM:\n case Kind.VARIABLE:\n return valueNode;\n }\n}\n\nfunction sortFields(fields) {\n return fields\n .map((fieldNode) => ({\n ...fieldNode,\n value: sortValueNode(fieldNode.value),\n }))\n .sort((fieldA, fieldB) =>\n naturalCompare(fieldA.name.value, fieldB.name.value),\n );\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { print } from '../../language/printer.mjs';\nimport {\n getNamedType,\n isInterfaceType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../../type/definition.mjs';\nimport { sortValueNode } from '../../utilities/sortValueNode.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\nfunction reasonMessage(reason) {\n if (Array.isArray(reason)) {\n return reason\n .map(\n ([responseName, subReason]) =>\n `subfields \"${responseName}\" conflict because ` +\n reasonMessage(subReason),\n )\n .join(' and ');\n }\n\n return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nexport function OverlappingFieldsCanBeMergedRule(context) {\n // A memoization for when fields and a fragment or two fragments are compared\n // \"between\" each other for conflicts. Comparisons made be made many times,\n // so memoizing this can dramatically improve the performance of this validator.\n const comparedFieldsAndFragmentPairs = new OrderedPairSet();\n const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n // selection set. Selection sets may be asked for this information multiple\n // times, so this improves the performance of this validator.\n\n const cachedFieldsAndFragmentNames = new Map();\n return {\n SelectionSet(selectionSet) {\n const conflicts = findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n context.getParentType(),\n selectionSet,\n );\n\n for (const [[responseName, reason], fields1, fields2] of conflicts) {\n const reasonMsg = reasonMessage(reason);\n context.reportError(\n new GraphQLError(\n `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n {\n nodes: fields1.concat(fields2),\n },\n ),\n );\n }\n },\n };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n parentType,\n selectionSet,\n) {\n const conflicts = [];\n const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n // Note: this is the *only place* `collectConflictsWithin` is called.\n\n collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n fieldMap,\n );\n\n if (fragmentNames.length !== 0) {\n // (B) Then collect conflicts between these fields and those represented by\n // each spread fragment name found.\n for (let i = 0; i < fragmentNames.length; i++) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n false,\n fieldMap,\n fragmentNames[i],\n ); // (C) Then compare this fragment with all other fragments found in this\n // selection set to collect conflicts between fragments spread together.\n // This compares each item in the list of fragment names to every other\n // item in that same list (except for itself).\n\n for (let j = i + 1; j < fragmentNames.length; j++) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n false,\n fragmentNames[i],\n fragmentNames[j],\n );\n }\n }\n }\n\n return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fragmentName,\n) {\n // Memoize so the fields and fragments are not compared for conflicts more\n // than once.\n if (\n comparedFieldsAndFragmentPairs.has(\n fieldMap,\n fragmentName,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFieldsAndFragmentPairs.add(\n fieldMap,\n fragmentName,\n areMutuallyExclusive,\n );\n const fragment = context.getFragment(fragmentName);\n\n if (!fragment) {\n return;\n }\n\n const [fieldMap2, referencedFragmentNames] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n ); // Do not compare a fragment's fieldMap to itself.\n\n if (fieldMap === fieldMap2) {\n return;\n } // (D) First collect any conflicts between the provided collection of fields\n // and the collection of fields represented by the given fragment.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n fieldMap2,\n ); // (E) Then collect any conflicts between the provided collection of fields\n // and any fragment names found in the given fragment.\n\n for (const referencedFragmentName of referencedFragmentNames) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap,\n referencedFragmentName,\n );\n }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n) {\n // No need to compare a fragment to itself.\n if (fragmentName1 === fragmentName2) {\n return;\n } // Memoize so two fragments are not compared for conflicts more than once.\n\n if (\n comparedFragmentPairs.has(\n fragmentName1,\n fragmentName2,\n areMutuallyExclusive,\n )\n ) {\n return;\n }\n\n comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n const fragment1 = context.getFragment(fragmentName1);\n const fragment2 = context.getFragment(fragmentName2);\n\n if (!fragment1 || !fragment2) {\n return;\n }\n\n const [fieldMap1, referencedFragmentNames1] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment1,\n );\n const [fieldMap2, referencedFragmentNames2] =\n getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment2,\n ); // (F) First, collect all conflicts between these two collections of fields\n // (not including any nested fragments).\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (G) Then collect conflicts between the first fragment and any nested\n // fragments spread in the second fragment.\n\n for (const referencedFragmentName2 of referencedFragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n referencedFragmentName2,\n );\n } // (G) Then collect conflicts between the second fragment and any nested\n // fragments spread in the first fragment.\n\n for (const referencedFragmentName1 of referencedFragmentNames1) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n referencedFragmentName1,\n fragmentName2,\n );\n }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n parentType1,\n selectionSet1,\n parentType2,\n selectionSet2,\n) {\n const conflicts = [];\n const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType1,\n selectionSet1,\n );\n const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType2,\n selectionSet2,\n ); // (H) First, collect all conflicts between these two collections of field.\n\n collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n ); // (I) Then collect conflicts between the first collection of fields and\n // those referenced by each fragment name associated with the second.\n\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap1,\n fragmentName2,\n );\n } // (I) Then collect conflicts between the second collection of fields and\n // those referenced by each fragment name associated with the first.\n\n for (const fragmentName1 of fragmentNames1) {\n collectConflictsBetweenFieldsAndFragment(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fieldMap2,\n fragmentName1,\n );\n } // (J) Also collect conflicts between any fragment names by the first and\n // fragment names by the second. This compares each item in the first set of\n // names to each item in the second set of names.\n\n for (const fragmentName1 of fragmentNames1) {\n for (const fragmentName2 of fragmentNames2) {\n collectConflictsBetweenFragments(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n fragmentName1,\n fragmentName2,\n );\n }\n }\n\n return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n fieldMap,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For every response name, if there are multiple fields, they\n // must be compared to find a potential conflict.\n for (const [responseName, fields] of Object.entries(fieldMap)) {\n // This compares every field in the list to every other field in this list\n // (except to itself). If the list only has one item, nothing needs to\n // be compared.\n if (fields.length > 1) {\n for (let i = 0; i < fields.length; i++) {\n for (let j = i + 1; j < fields.length; j++) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n false, // within one collection is never mutually exclusive\n responseName,\n fields[i],\n fields[j],\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n context,\n conflicts,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n fieldMap1,\n fieldMap2,\n) {\n // A field map is a keyed collection, where each key represents a response\n // name and the value at that key is a list of all fields which provide that\n // response name. For any response name which appears in both provided field\n // maps, each field from the first field map must be compared to every field\n // in the second field map to find potential conflicts.\n for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n const fields2 = fieldMap2[responseName];\n\n if (fields2) {\n for (const field1 of fields1) {\n for (const field2 of fields2) {\n const conflict = findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n );\n\n if (conflict) {\n conflicts.push(conflict);\n }\n }\n }\n }\n }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n parentFieldsAreMutuallyExclusive,\n responseName,\n field1,\n field2,\n) {\n const [parentType1, node1, def1] = field1;\n const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n // time, due to the parent types, then it is safe to permit them to diverge\n // in aliased field or arguments used as they will not present any ambiguity\n // by differing.\n // It is known that two parent types could never overlap if they are\n // different Object types. Interface or Union types might overlap - if not\n // in the current state of the schema, then perhaps in some future version,\n // thus may not safely diverge.\n\n const areMutuallyExclusive =\n parentFieldsAreMutuallyExclusive ||\n (parentType1 !== parentType2 &&\n isObjectType(parentType1) &&\n isObjectType(parentType2));\n\n if (!areMutuallyExclusive) {\n // Two aliases must refer to the same field.\n const name1 = node1.name.value;\n const name2 = node2.name.value;\n\n if (name1 !== name2) {\n return [\n [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n [node1],\n [node2],\n ];\n } // Two field calls must have the same arguments.\n\n if (!sameArguments(node1, node2)) {\n return [\n [responseName, 'they have differing arguments'],\n [node1],\n [node2],\n ];\n }\n } // The return type for each field.\n\n const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n if (type1 && type2 && doTypesConflict(type1, type2)) {\n return [\n [\n responseName,\n `they return conflicting types \"${inspect(type1)}\" and \"${inspect(\n type2,\n )}\"`,\n ],\n [node1],\n [node2],\n ];\n } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n // for both collections so fields in a fragment reference are never\n // compared to themselves.\n\n const selectionSet1 = node1.selectionSet;\n const selectionSet2 = node2.selectionSet;\n\n if (selectionSet1 && selectionSet2) {\n const conflicts = findConflictsBetweenSubSelectionSets(\n context,\n cachedFieldsAndFragmentNames,\n comparedFieldsAndFragmentPairs,\n comparedFragmentPairs,\n areMutuallyExclusive,\n getNamedType(type1),\n selectionSet1,\n getNamedType(type2),\n selectionSet2,\n );\n return subfieldConflicts(conflicts, responseName, node1, node2);\n }\n}\n\nfunction sameArguments(node1, node2) {\n const args1 = node1.arguments;\n const args2 = node2.arguments;\n\n if (args1 === undefined || args1.length === 0) {\n return args2 === undefined || args2.length === 0;\n }\n\n if (args2 === undefined || args2.length === 0) {\n return false;\n }\n /* c8 ignore next */\n\n if (args1.length !== args2.length) {\n /* c8 ignore next */\n return false;\n /* c8 ignore next */\n }\n\n const values2 = new Map(args2.map(({ name, value }) => [name.value, value]));\n return args1.every((arg1) => {\n const value1 = arg1.value;\n const value2 = values2.get(arg1.name.value);\n\n if (value2 === undefined) {\n return false;\n }\n\n return stringifyValue(value1) === stringifyValue(value2);\n });\n}\n\nfunction stringifyValue(value) {\n return print(sortValueNode(value));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n if (isListType(type1)) {\n return isListType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isListType(type2)) {\n return true;\n }\n\n if (isNonNullType(type1)) {\n return isNonNullType(type2)\n ? doTypesConflict(type1.ofType, type2.ofType)\n : true;\n }\n\n if (isNonNullType(type2)) {\n return true;\n }\n\n if (isLeafType(type1) || isLeafType(type2)) {\n return type1 !== type2;\n }\n\n return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n parentType,\n selectionSet,\n) {\n const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const nodeAndDefs = Object.create(null);\n const fragmentNames = Object.create(null);\n\n _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n const result = [nodeAndDefs, Object.keys(fragmentNames)];\n cachedFieldsAndFragmentNames.set(selectionSet, result);\n return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragment,\n) {\n // Short-circuit building a type from the node if possible.\n const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n if (cached) {\n return cached;\n }\n\n const fragmentType = typeFromAST(context.getSchema(), fragment.typeCondition);\n return getFieldsAndFragmentNames(\n context,\n cachedFieldsAndFragmentNames,\n fragmentType,\n fragment.selectionSet,\n );\n}\n\nfunction _collectFieldsAndFragmentNames(\n context,\n parentType,\n selectionSet,\n nodeAndDefs,\n fragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n const fieldName = selection.name.value;\n let fieldDef;\n\n if (isObjectType(parentType) || isInterfaceType(parentType)) {\n fieldDef = parentType.getFields()[fieldName];\n }\n\n const responseName = selection.alias\n ? selection.alias.value\n : fieldName;\n\n if (!nodeAndDefs[responseName]) {\n nodeAndDefs[responseName] = [];\n }\n\n nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n break;\n }\n\n case Kind.FRAGMENT_SPREAD:\n fragmentNames[selection.name.value] = true;\n break;\n\n case Kind.INLINE_FRAGMENT: {\n const typeCondition = selection.typeCondition;\n const inlineFragmentType = typeCondition\n ? typeFromAST(context.getSchema(), typeCondition)\n : parentType;\n\n _collectFieldsAndFragmentNames(\n context,\n inlineFragmentType,\n selection.selectionSet,\n nodeAndDefs,\n fragmentNames,\n );\n\n break;\n }\n }\n }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n if (conflicts.length > 0) {\n return [\n [responseName, conflicts.map(([reason]) => reason)],\n [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n ];\n }\n}\n/**\n * A way to keep track of pairs of things where the ordering of the pair\n * matters.\n *\n * Provides a third argument for has/set to allow flagging the pair as\n * weakly or strongly present within the collection.\n */\n\nclass OrderedPairSet {\n constructor() {\n this._data = new Map();\n }\n\n has(a, b, weaklyPresent) {\n var _this$_data$get;\n\n const result =\n (_this$_data$get = this._data.get(a)) === null ||\n _this$_data$get === void 0\n ? void 0\n : _this$_data$get.get(b);\n\n if (result === undefined) {\n return false;\n }\n\n return weaklyPresent ? true : weaklyPresent === result;\n }\n\n add(a, b, weaklyPresent) {\n const map = this._data.get(a);\n\n if (map === undefined) {\n this._data.set(a, new Map([[b, weaklyPresent]]));\n } else {\n map.set(b, weaklyPresent);\n }\n }\n}\n/**\n * A way to keep track of pairs of similar things when the ordering of the pair\n * does not matter.\n */\n\nclass PairSet {\n constructor() {\n this._orderedPairSet = new OrderedPairSet();\n }\n\n has(a, b, weaklyPresent) {\n return a < b\n ? this._orderedPairSet.has(a, b, weaklyPresent)\n : this._orderedPairSet.has(b, a, weaklyPresent);\n }\n\n add(a, b, weaklyPresent) {\n if (a < b) {\n this._orderedPairSet.add(a, b, weaklyPresent);\n } else {\n this._orderedPairSet.add(b, a, weaklyPresent);\n }\n }\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { isCompositeType } from '../../type/definition.mjs';\nimport { doTypesOverlap } from '../../utilities/typeComparators.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nexport function PossibleFragmentSpreadsRule(context) {\n return {\n InlineFragment(node) {\n const fragType = context.getType();\n const parentType = context.getParentType();\n\n if (\n isCompositeType(fragType) &&\n isCompositeType(parentType) &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect(parentType);\n const fragTypeStr = inspect(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n FragmentSpread(node) {\n const fragName = node.name.value;\n const fragType = getFragmentType(context, fragName);\n const parentType = context.getParentType();\n\n if (\n fragType &&\n parentType &&\n !doTypesOverlap(context.getSchema(), fragType, parentType)\n ) {\n const parentTypeStr = inspect(parentType);\n const fragTypeStr = inspect(fragType);\n context.reportError(\n new GraphQLError(\n `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n };\n}\n\nfunction getFragmentType(context, name) {\n const frag = context.getFragment(name);\n\n if (frag) {\n const type = typeFromAST(context.getSchema(), frag.typeCondition);\n\n if (isCompositeType(type)) {\n return type;\n }\n }\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { keyMap } from '../../jsutils/keyMap.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isRequiredArgument, isType } from '../../type/definition.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nexport function ProvidedRequiredArgumentsRule(context) {\n return {\n // eslint-disable-next-line new-cap\n ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n Field: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(fieldNode) {\n var _fieldNode$arguments;\n\n const fieldDef = context.getFieldDef();\n\n if (!fieldDef) {\n return false;\n }\n\n const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n (_fieldNode$arguments = fieldNode.arguments) === null ||\n _fieldNode$arguments === void 0\n ? void 0\n : _fieldNode$arguments.map((arg) => arg.name.value),\n );\n\n for (const argDef of fieldDef.args) {\n if (!providedArgs.has(argDef.name) && isRequiredArgument(argDef)) {\n const argTypeStr = inspect(argDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n {\n nodes: fieldNode,\n },\n ),\n );\n }\n }\n },\n },\n };\n}\n/**\n * @internal\n */\n\nexport function ProvidedRequiredArgumentsOnDirectivesRule(context) {\n var _schema$getDirectives;\n\n const requiredArgsMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives =\n (_schema$getDirectives =\n schema === null || schema === void 0\n ? void 0\n : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n ? _schema$getDirectives\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n requiredArgsMap[directive.name] = keyMap(\n directive.args.filter(isRequiredArgument),\n (arg) => arg.name,\n );\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n var _def$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n ? _def$arguments\n : [];\n requiredArgsMap[def.name.value] = keyMap(\n argNodes.filter(isRequiredArgumentNode),\n (arg) => arg.name.value,\n );\n }\n }\n\n return {\n Directive: {\n // Validate on leave to allow for deeper errors to appear first.\n leave(directiveNode) {\n const directiveName = directiveNode.name.value;\n const requiredArgs = requiredArgsMap[directiveName];\n\n if (requiredArgs) {\n var _directiveNode$argume;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argNodes =\n (_directiveNode$argume = directiveNode.arguments) !== null &&\n _directiveNode$argume !== void 0\n ? _directiveNode$argume\n : [];\n const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n for (const [argName, argDef] of Object.entries(requiredArgs)) {\n if (!argNodeMap.has(argName)) {\n const argType = isType(argDef.type)\n ? inspect(argDef.type)\n : print(argDef.type);\n context.reportError(\n new GraphQLError(\n `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n {\n nodes: directiveNode,\n },\n ),\n );\n }\n }\n }\n },\n },\n };\n}\n\nfunction isRequiredArgumentNode(arg) {\n return arg.type.kind === Kind.NON_NULL_TYPE && arg.defaultValue == null;\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { getNamedType, isLeafType } from '../../type/definition.mjs';\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nexport function ScalarLeafsRule(context) {\n return {\n Field(node) {\n const type = context.getType();\n const selectionSet = node.selectionSet;\n\n if (type) {\n if (isLeafType(getNamedType(type))) {\n if (selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n {\n nodes: selectionSet,\n },\n ),\n );\n }\n } else if (!selectionSet) {\n const fieldName = node.name.value;\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n {\n nodes: node,\n },\n ),\n );\n } else if (selectionSet.selections.length === 0) {\n const fieldName = node.name.value;\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Field \"${fieldName}\" of type \"${typeStr}\" must have at least one field selected.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n },\n };\n}\n","/**\n * Build a string describing the path.\n */\nexport function printPathArray(path) {\n return path\n .map((key) =>\n typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n )\n .join('');\n}\n","/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nexport function addPath(prev, key, typename) {\n return {\n prev,\n key,\n typename,\n };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nexport function pathToArray(path) {\n const flattened = [];\n let curr = path;\n\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n\n return flattened.reverse();\n}\n","import { didYouMean } from '../jsutils/didYouMean.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { addPath, pathToArray } from '../jsutils/Path.mjs';\nimport { printPathArray } from '../jsutils/printPathArray.mjs';\nimport { suggestionList } from '../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport {\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nexport function coerceInputValue(inputValue, type, onError = defaultOnError) {\n return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n let errorPrefix = 'Invalid value ' + inspect(invalidValue);\n\n if (path.length > 0) {\n errorPrefix += ` at \"value${printPathArray(path)}\"`;\n }\n\n error.message = errorPrefix + ': ' + error.message;\n throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n if (isNonNullType(type)) {\n if (inputValue != null) {\n return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n }\n\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Expected non-nullable type \"${inspect(type)}\" not to be null.`,\n ),\n );\n return;\n }\n\n if (inputValue == null) {\n // Explicitly return the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (isIterableObject(inputValue)) {\n return Array.from(inputValue, (itemValue, index) => {\n const itemPath = addPath(path, index, undefined);\n return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n });\n } // Lists accept a non-list value as a list of one.\n\n return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n }\n\n if (isInputObjectType(type)) {\n if (!isObjectLike(inputValue) || Array.isArray(inputValue)) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\" to be an object.`),\n );\n return;\n }\n\n const coercedValue = {};\n const fieldDefs = type.getFields();\n\n for (const field of Object.values(fieldDefs)) {\n const fieldValue = inputValue[field.name];\n\n if (fieldValue === undefined) {\n if (field.defaultValue !== undefined) {\n coercedValue[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n const typeStr = inspect(field.type);\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n ),\n );\n }\n\n continue;\n }\n\n coercedValue[field.name] = coerceInputValueImpl(\n fieldValue,\n field.type,\n onError,\n addPath(path, field.name, type.name),\n );\n } // Ensure every provided field is defined.\n\n for (const fieldName of Object.keys(inputValue)) {\n if (!fieldDefs[fieldName]) {\n const suggestions = suggestionList(\n fieldName,\n Object.keys(type.getFields()),\n );\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n didYouMean(suggestions),\n ),\n );\n }\n }\n\n if (type.isOneOf) {\n const keys = Object.keys(coercedValue);\n\n if (keys.length !== 1) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(\n `Exactly one key must be specified for OneOf type \"${type.name}\".`,\n ),\n );\n }\n\n const key = keys[0];\n const value = coercedValue[key];\n\n if (value === null) {\n onError(\n pathToArray(path).concat(key),\n value,\n new GraphQLError(`Field \"${key}\" must be non-null.`),\n );\n }\n }\n\n return coercedValue;\n }\n\n if (isLeafType(type)) {\n let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n // which can throw to indicate failure. If it throws, maintain a reference\n // to the original error.\n\n try {\n parseResult = type.parseValue(inputValue);\n } catch (error) {\n if (error instanceof GraphQLError) {\n onError(pathToArray(path), inputValue, error);\n } else {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\". ` + error.message, {\n originalError: error,\n }),\n );\n }\n\n return;\n }\n\n if (parseResult === undefined) {\n onError(\n pathToArray(path),\n inputValue,\n new GraphQLError(`Expected type \"${type.name}\".`),\n );\n }\n\n return parseResult;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n} from '../type/definition.mjs';\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value | JSON Value |\n * | -------------------- | ------------- |\n * | Input Object | Object |\n * | List | Array |\n * | Boolean | Boolean |\n * | String | String |\n * | Int / Float | Number |\n * | Enum Value | Unknown |\n * | NullValue | null |\n *\n */\n\nexport function valueFromAST(valueNode, type, variables) {\n if (!valueNode) {\n // When there is no node, then there is also no value.\n // Importantly, this is different from returning the value null.\n return;\n }\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (variables == null || variables[variableName] === undefined) {\n // No valid return value.\n return;\n }\n\n const variableValue = variables[variableName];\n\n if (variableValue === null && isNonNullType(type)) {\n return; // Invalid: intentionally return no value.\n } // Note: This does no further checking that this variable is correct.\n // This assumes that this query has been validated and the variable\n // usage here is of the correct type.\n\n return variableValue;\n }\n\n if (isNonNullType(type)) {\n if (valueNode.kind === Kind.NULL) {\n return; // Invalid: intentionally return no value.\n }\n\n return valueFromAST(valueNode, type.ofType, variables);\n }\n\n if (valueNode.kind === Kind.NULL) {\n // This is explicitly returning the value null.\n return null;\n }\n\n if (isListType(type)) {\n const itemType = type.ofType;\n\n if (valueNode.kind === Kind.LIST) {\n const coercedValues = [];\n\n for (const itemNode of valueNode.values) {\n if (isMissingVariable(itemNode, variables)) {\n // If an array contains a missing variable, it is either coerced to\n // null or if the item type is non-null, it considered invalid.\n if (isNonNullType(itemType)) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(null);\n } else {\n const itemValue = valueFromAST(itemNode, itemType, variables);\n\n if (itemValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedValues.push(itemValue);\n }\n }\n\n return coercedValues;\n }\n\n const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n if (coercedValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return [coercedValue];\n }\n\n if (isInputObjectType(type)) {\n if (valueNode.kind !== Kind.OBJECT) {\n return; // Invalid: intentionally return no value.\n }\n\n const coercedObj = Object.create(null);\n const fieldNodes = keyMap(valueNode.fields, (field) => field.name.value);\n\n for (const field of Object.values(type.getFields())) {\n const fieldNode = fieldNodes[field.name];\n\n if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n if (field.defaultValue !== undefined) {\n coercedObj[field.name] = field.defaultValue;\n } else if (isNonNullType(field.type)) {\n return; // Invalid: intentionally return no value.\n }\n\n continue;\n }\n\n const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n if (fieldValue === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n coercedObj[field.name] = fieldValue;\n }\n\n if (type.isOneOf) {\n const keys = Object.keys(coercedObj);\n\n if (keys.length !== 1) {\n return; // Invalid: not exactly one key, intentionally return no value.\n }\n\n if (coercedObj[keys[0]] === null) {\n return; // Invalid: value not non-null, intentionally return no value.\n }\n }\n\n return coercedObj;\n }\n\n if (isLeafType(type)) {\n // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n // Invalid values represent a failure to parse correctly, in which case\n // no value is returned.\n let result;\n\n try {\n result = type.parseLiteral(valueNode, variables);\n } catch (_error) {\n return; // Invalid: intentionally return no value.\n }\n\n if (result === undefined) {\n return; // Invalid: intentionally return no value.\n }\n\n return result;\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible input types have been considered.\n\n false || invariant(false, 'Unexpected input type: ' + inspect(type));\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n return (\n valueNode.kind === Kind.VARIABLE &&\n (variables == null || variables[valueNode.name.value] === undefined)\n );\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { keyMap } from '../jsutils/keyMap.mjs';\nimport { printPathArray } from '../jsutils/printPathArray.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport { print } from '../language/printer.mjs';\nimport { isInputType, isNonNullType } from '../type/definition.mjs';\nimport { coerceInputValue } from '../utilities/coerceInputValue.mjs';\nimport { typeFromAST } from '../utilities/typeFromAST.mjs';\nimport { valueFromAST } from '../utilities/valueFromAST.mjs';\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors;\n\n try {\n const coerced = coerceVariableValues(\n schema,\n varDefNodes,\n inputs,\n (error) => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw new GraphQLError(\n 'Too many errors processing variables, error limit reached. Execution aborted.',\n );\n }\n\n errors.push(error);\n },\n );\n\n if (errors.length === 0) {\n return {\n coerced,\n };\n }\n } catch (error) {\n errors.push(error);\n }\n\n return {\n errors,\n };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = typeFromAST(schema, varDefNode.type);\n\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = print(varDefNode.type);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n {\n nodes: varDefNode.type,\n },\n ),\n );\n continue;\n }\n\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n } else if (isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n }\n\n continue;\n }\n\n const value = inputs[varName];\n\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(\n new GraphQLError(\n `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n {\n nodes: varDefNode,\n },\n ),\n );\n continue;\n }\n\n coercedValues[varName] = coerceInputValue(\n value,\n varType,\n (path, invalidValue, error) => {\n let prefix =\n `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n\n onError(\n new GraphQLError(prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error,\n }),\n );\n },\n );\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getArgumentValues(def, node, variableValues) {\n var _node$arguments;\n\n const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const argumentNodes =\n (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n ? _node$arguments\n : [];\n const argNodeMap = keyMap(argumentNodes, (arg) => arg.name.value);\n\n for (const argDef of def.args) {\n const name = argDef.name;\n const argType = argDef.type;\n const argumentNode = argNodeMap[name];\n\n if (!argumentNode) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n 'was not provided.',\n {\n nodes: node,\n },\n );\n }\n\n continue;\n }\n\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n\n if (\n variableValues == null ||\n !hasOwnProperty(variableValues, variableName)\n ) {\n if (argDef.defaultValue !== undefined) {\n coercedValues[name] = argDef.defaultValue;\n } else if (isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n continue;\n }\n\n isNull = variableValues[variableName] == null;\n }\n\n if (isNull && isNonNullType(argType)) {\n throw new GraphQLError(\n `Argument \"${name}\" of non-null type \"${inspect(argType)}\" ` +\n 'must not be null.',\n {\n nodes: valueNode,\n },\n );\n }\n\n const coercedValue = valueFromAST(valueNode, argType, variableValues);\n\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw new GraphQLError(\n `Argument \"${name}\" has invalid value ${print(valueNode)}.`,\n {\n nodes: valueNode,\n },\n );\n }\n\n coercedValues[name] = coercedValue;\n }\n\n return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nexport function getDirectiveValues(directiveDef, node, variableValues) {\n var _node$directives;\n\n const directiveNode =\n (_node$directives = node.directives) === null || _node$directives === void 0\n ? void 0\n : _node$directives.find(\n (directive) => directive.name.value === directiveDef.name,\n );\n\n if (directiveNode) {\n return getArgumentValues(directiveDef, directiveNode, variableValues);\n }\n}\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { Kind } from '../language/kinds.mjs';\nimport { isAbstractType } from '../type/definition.mjs';\nimport {\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.mjs';\nimport { typeFromAST } from '../utilities/typeFromAST.mjs';\nimport { getDirectiveValues } from './values.mjs';\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nexport function collectFields(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n) {\n const fields = new Map();\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n new Set(),\n );\n return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nexport function collectSubfields(\n schema,\n fragments,\n variableValues,\n returnType,\n fieldNodes,\n) {\n const subFieldNodes = new Map();\n const visitedFragmentNames = new Set();\n\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n returnType,\n node.selectionSet,\n subFieldNodes,\n visitedFragmentNames,\n );\n }\n }\n\n return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selectionSet,\n fields,\n visitedFragmentNames,\n) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n\n const name = getFieldEntryKey(selection);\n const fieldList = fields.get(name);\n\n if (fieldList !== undefined) {\n fieldList.push(selection);\n } else {\n fields.set(name, [selection]);\n }\n\n break;\n }\n\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n selection.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n visitedFragmentNames.has(fragName) ||\n !shouldIncludeNode(variableValues, selection)\n ) {\n continue;\n }\n\n visitedFragmentNames.add(fragName);\n const fragment = fragments[fragName];\n\n if (\n !fragment ||\n !doesFragmentConditionMatch(schema, fragment, runtimeType)\n ) {\n continue;\n }\n\n collectFieldsImpl(\n schema,\n fragments,\n variableValues,\n runtimeType,\n fragment.selectionSet,\n fields,\n visitedFragmentNames,\n );\n break;\n }\n }\n }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues);\n\n if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n return false;\n }\n\n const include = getDirectiveValues(\n GraphQLIncludeDirective,\n node,\n variableValues,\n );\n\n if (\n (include === null || include === void 0 ? void 0 : include.if) === false\n ) {\n return false;\n }\n\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n\n if (!typeConditionNode) {\n return true;\n }\n\n const conditionalType = typeFromAST(schema, typeConditionNode);\n\n if (conditionalType === type) {\n return true;\n }\n\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { collectFields } from '../../execution/collectFields.mjs';\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nexport function SingleFieldSubscriptionsRule(context) {\n return {\n OperationDefinition(node) {\n if (node.operation === 'subscription') {\n const schema = context.getSchema();\n const subscriptionType = schema.getSubscriptionType();\n\n if (subscriptionType) {\n const operationName = node.name ? node.name.value : null;\n const variableValues = Object.create(null);\n const document = context.getDocument();\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n if (definition.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n\n const fields = collectFields(\n schema,\n fragments,\n variableValues,\n subscriptionType,\n node.selectionSet,\n );\n\n if (fields.size > 1) {\n const fieldSelectionLists = [...fields.values()];\n const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n const extraFieldSelections = extraFieldSelectionLists.flat();\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must select only one top level field.`\n : 'Anonymous Subscription must select only one top level field.',\n {\n nodes: extraFieldSelections,\n },\n ),\n );\n }\n\n for (const fieldNodes of fields.values()) {\n const field = fieldNodes[0];\n const fieldName = field.name.value;\n\n if (fieldName.startsWith('__')) {\n context.reportError(\n new GraphQLError(\n operationName != null\n ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n : 'Anonymous Subscription must not select an introspection top level field.',\n {\n nodes: fieldNodes,\n },\n ),\n );\n }\n }\n }\n }\n },\n };\n}\n","/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nexport function groupBy(list, keyFn) {\n const result = new Map();\n\n for (const item of list) {\n const key = keyFn(item);\n const group = result.get(key);\n\n if (group === undefined) {\n result.set(key, [item]);\n } else {\n group.push(item);\n }\n }\n\n return result;\n}\n","import { groupBy } from '../../jsutils/groupBy.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nexport function UniqueArgumentNamesRule(context) {\n return {\n Field: checkArgUniqueness,\n Directive: checkArgUniqueness,\n };\n\n function checkArgUniqueness(parentNode) {\n var _parentNode$arguments;\n\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const argumentNodes =\n (_parentNode$arguments = parentNode.arguments) !== null &&\n _parentNode$arguments !== void 0\n ? _parentNode$arguments\n : [];\n const seenArgs = groupBy(argumentNodes, (arg) => arg.name.value);\n\n for (const [argName, argNodes] of seenArgs) {\n if (argNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one argument named \"${argName}\".`,\n {\n nodes: argNodes.map((node) => node.name),\n },\n ),\n );\n }\n }\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport {\n isTypeDefinitionNode,\n isTypeExtensionNode,\n} from '../../language/predicates.mjs';\nimport { specifiedDirectives } from '../../type/directives.mjs';\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nexport function UniqueDirectivesPerLocationRule(context) {\n const uniqueDirectiveMap = Object.create(null);\n const schema = context.getSchema();\n const definedDirectives = schema\n ? schema.getDirectives()\n : specifiedDirectives;\n\n for (const directive of definedDirectives) {\n uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n }\n\n const astDefinitions = context.getDocument().definitions;\n\n for (const def of astDefinitions) {\n if (def.kind === Kind.DIRECTIVE_DEFINITION) {\n uniqueDirectiveMap[def.name.value] = !def.repeatable;\n }\n }\n\n const schemaDirectives = Object.create(null);\n const typeDirectivesMap = Object.create(null);\n return {\n // Many different AST nodes may contain directives. Rather than listing\n // them all, just listen for entering any node, and check to see if it\n // defines any directives.\n enter(node) {\n if (!('directives' in node) || !node.directives) {\n return;\n }\n\n let seenDirectives;\n\n if (\n node.kind === Kind.SCHEMA_DEFINITION ||\n node.kind === Kind.SCHEMA_EXTENSION\n ) {\n seenDirectives = schemaDirectives;\n } else if (isTypeDefinitionNode(node) || isTypeExtensionNode(node)) {\n const typeName = node.name.value;\n seenDirectives = typeDirectivesMap[typeName];\n\n if (seenDirectives === undefined) {\n typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n }\n } else {\n seenDirectives = Object.create(null);\n }\n\n for (const directive of node.directives) {\n const directiveName = directive.name.value;\n\n if (uniqueDirectiveMap[directiveName]) {\n if (seenDirectives[directiveName]) {\n context.reportError(\n new GraphQLError(\n `The directive \"@${directiveName}\" can only be used once at this location.`,\n {\n nodes: [seenDirectives[directiveName], directive],\n },\n ),\n );\n } else {\n seenDirectives[directiveName] = directive;\n }\n }\n }\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nexport function UniqueFragmentNamesRule(context) {\n const knownFragmentNames = Object.create(null);\n return {\n OperationDefinition: () => false,\n\n FragmentDefinition(node) {\n const fragmentName = node.name.value;\n\n if (knownFragmentNames[fragmentName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one fragment named \"${fragmentName}\".`,\n {\n nodes: [knownFragmentNames[fragmentName], node.name],\n },\n ),\n );\n } else {\n knownFragmentNames[fragmentName] = node.name;\n }\n\n return false;\n },\n };\n}\n","import { invariant } from '../../jsutils/invariant.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nexport function UniqueInputFieldNamesRule(context) {\n const knownNameStack = [];\n let knownNames = Object.create(null);\n return {\n ObjectValue: {\n enter() {\n knownNameStack.push(knownNames);\n knownNames = Object.create(null);\n },\n\n leave() {\n const prevKnownNames = knownNameStack.pop();\n prevKnownNames || invariant(false);\n knownNames = prevKnownNames;\n },\n },\n\n ObjectField(node) {\n const fieldName = node.name.value;\n\n if (knownNames[fieldName]) {\n context.reportError(\n new GraphQLError(\n `There can be only one input field named \"${fieldName}\".`,\n {\n nodes: [knownNames[fieldName], node.name],\n },\n ),\n );\n } else {\n knownNames[fieldName] = node.name;\n }\n },\n };\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nexport function UniqueOperationNamesRule(context) {\n const knownOperationNames = Object.create(null);\n return {\n OperationDefinition(node) {\n const operationName = node.name;\n\n if (operationName) {\n if (knownOperationNames[operationName.value]) {\n context.reportError(\n new GraphQLError(\n `There can be only one operation named \"${operationName.value}\".`,\n {\n nodes: [\n knownOperationNames[operationName.value],\n operationName,\n ],\n },\n ),\n );\n } else {\n knownOperationNames[operationName.value] = operationName;\n }\n }\n\n return false;\n },\n\n FragmentDefinition: () => false,\n };\n}\n","import { groupBy } from '../../jsutils/groupBy.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nexport function UniqueVariableNamesRule(context) {\n return {\n OperationDefinition(operationNode) {\n var _operationNode$variab;\n\n // See: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n const variableDefinitions =\n (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n _operationNode$variab !== void 0\n ? _operationNode$variab\n : [];\n const seenVariableDefinitions = groupBy(\n variableDefinitions,\n (node) => node.variable.name.value,\n );\n\n for (const [variableName, variableNodes] of seenVariableDefinitions) {\n if (variableNodes.length > 1) {\n context.reportError(\n new GraphQLError(\n `There can be only one variable named \"$${variableName}\".`,\n {\n nodes: variableNodes.map((node) => node.variable.name),\n },\n ),\n );\n }\n }\n },\n };\n}\n","import { didYouMean } from '../../jsutils/didYouMean.mjs';\nimport { inspect } from '../../jsutils/inspect.mjs';\nimport { keyMap } from '../../jsutils/keyMap.mjs';\nimport { suggestionList } from '../../jsutils/suggestionList.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport { print } from '../../language/printer.mjs';\nimport {\n getNamedType,\n getNullableType,\n isInputObjectType,\n isLeafType,\n isListType,\n isNonNullType,\n isRequiredInputField,\n} from '../../type/definition.mjs';\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nexport function ValuesOfCorrectTypeRule(context) {\n let variableDefinitions = {};\n return {\n OperationDefinition: {\n enter() {\n variableDefinitions = {};\n },\n },\n\n VariableDefinition(definition) {\n variableDefinitions[definition.variable.name.value] = definition;\n },\n\n ListValue(node) {\n // Note: TypeInfo will traverse into a list's item type, so look to the\n // parent input type to check if it is a list.\n const type = getNullableType(context.getParentInputType());\n\n if (!isListType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n }\n },\n\n ObjectValue(node) {\n const type = getNamedType(context.getInputType());\n\n if (!isInputObjectType(type)) {\n isValidValueNode(context, node);\n return false; // Don't traverse further.\n } // Ensure every required field exists.\n\n const fieldNodeMap = keyMap(node.fields, (field) => field.name.value);\n\n for (const fieldDef of Object.values(type.getFields())) {\n const fieldNode = fieldNodeMap[fieldDef.name];\n\n if (!fieldNode && isRequiredInputField(fieldDef)) {\n const typeStr = inspect(fieldDef.type);\n context.reportError(\n new GraphQLError(\n `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n {\n nodes: node,\n },\n ),\n );\n }\n }\n\n if (type.isOneOf) {\n validateOneOfInputObject(context, node, type, fieldNodeMap);\n }\n },\n\n ObjectField(node) {\n const parentType = getNamedType(context.getParentInputType());\n const fieldType = context.getInputType();\n\n if (!fieldType && isInputObjectType(parentType)) {\n const suggestions = suggestionList(\n node.name.value,\n Object.keys(parentType.getFields()),\n );\n context.reportError(\n new GraphQLError(\n `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n didYouMean(suggestions),\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n NullValue(node) {\n const type = context.getInputType();\n\n if (isNonNullType(type)) {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${inspect(type)}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n },\n\n EnumValue: (node) => isValidValueNode(context, node),\n IntValue: (node) => isValidValueNode(context, node),\n FloatValue: (node) => isValidValueNode(context, node),\n StringValue: (node) => isValidValueNode(context, node),\n BooleanValue: (node) => isValidValueNode(context, node),\n };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n // Report any error at the full type expected by the location.\n const locationType = context.getInputType();\n\n if (!locationType) {\n return;\n }\n\n const type = getNamedType(locationType);\n\n if (!isLeafType(type)) {\n const typeStr = inspect(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n return;\n } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n // which may throw or return an invalid value to indicate failure.\n\n try {\n const parseResult = type.parseLiteral(\n node,\n undefined,\n /* variables */\n );\n\n if (parseResult === undefined) {\n const typeStr = inspect(locationType);\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}.`,\n {\n nodes: node,\n },\n ),\n );\n }\n } catch (error) {\n const typeStr = inspect(locationType);\n\n if (error instanceof GraphQLError) {\n context.reportError(error);\n } else {\n context.reportError(\n new GraphQLError(\n `Expected value of type \"${typeStr}\", found ${print(node)}; ` +\n error.message,\n {\n nodes: node,\n originalError: error,\n },\n ),\n );\n }\n }\n}\n\nfunction validateOneOfInputObject(context, node, type, fieldNodeMap) {\n var _fieldNodeMap$keys$;\n\n const keys = Object.keys(fieldNodeMap);\n const isNotExactlyOneField = keys.length !== 1;\n\n if (isNotExactlyOneField) {\n context.reportError(\n new GraphQLError(\n `OneOf Input Object \"${type.name}\" must specify exactly one key.`,\n {\n nodes: [node],\n },\n ),\n );\n return;\n }\n\n const value =\n (_fieldNodeMap$keys$ = fieldNodeMap[keys[0]]) === null ||\n _fieldNodeMap$keys$ === void 0\n ? void 0\n : _fieldNodeMap$keys$.value;\n const isNullLiteral = !value || value.kind === Kind.NULL;\n\n if (isNullLiteral) {\n context.reportError(\n new GraphQLError(`Field \"${type.name}.${keys[0]}\" must be non-null.`, {\n nodes: [node],\n }),\n );\n }\n}\n","import { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { print } from '../../language/printer.mjs';\nimport { isInputType } from '../../type/definition.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nexport function VariablesAreInputTypesRule(context) {\n return {\n VariableDefinition(node) {\n const type = typeFromAST(context.getSchema(), node.type);\n\n if (type !== undefined && !isInputType(type)) {\n const variableName = node.variable.name.value;\n const typeName = print(node.type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n {\n nodes: node.type,\n },\n ),\n );\n }\n },\n };\n}\n","import { inspect } from '../../jsutils/inspect.mjs';\nimport { GraphQLError } from '../../error/GraphQLError.mjs';\nimport { Kind } from '../../language/kinds.mjs';\nimport {\n isInputObjectType,\n isNonNullType,\n isNullableType,\n} from '../../type/definition.mjs';\nimport { isTypeSubTypeOf } from '../../utilities/typeComparators.mjs';\nimport { typeFromAST } from '../../utilities/typeFromAST.mjs';\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nexport function VariablesInAllowedPositionRule(context) {\n let varDefMap = Object.create(null);\n return {\n OperationDefinition: {\n enter() {\n varDefMap = Object.create(null);\n },\n\n leave(operation) {\n const usages = context.getRecursiveVariableUsages(operation);\n\n for (const { node, type, defaultValue, parentType } of usages) {\n const varName = node.name.value;\n const varDef = varDefMap[varName];\n\n if (varDef && type) {\n // A var type is allowed if it is the same or more strict (e.g. is\n // a subtype of) than the expected type. It can be more strict if\n // the variable type is non-null when the expected type is nullable.\n // If both are list types, the variable item type can be more strict\n // than the expected item type (contravariant).\n const schema = context.getSchema();\n const varType = typeFromAST(schema, varDef.type);\n\n if (\n varType &&\n !allowedVariableUsage(\n schema,\n varType,\n varDef.defaultValue,\n type,\n defaultValue,\n )\n ) {\n const varTypeStr = inspect(varType);\n const typeStr = inspect(type);\n context.reportError(\n new GraphQLError(\n `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n\n if (\n isInputObjectType(parentType) &&\n parentType.isOneOf &&\n isNullableType(varType)\n ) {\n context.reportError(\n new GraphQLError(\n `Variable \"$${varName}\" is of type \"${varType}\" but must be non-nullable to be used for OneOf Input Object \"${parentType}\".`,\n {\n nodes: [varDef, node],\n },\n ),\n );\n }\n }\n }\n },\n },\n\n VariableDefinition(node) {\n varDefMap[node.variable.name.value] = node;\n },\n };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n schema,\n varType,\n varDefaultValue,\n locationType,\n locationDefaultValue,\n) {\n if (isNonNullType(locationType) && !isNonNullType(varType)) {\n const hasNonNullVariableDefaultValue =\n varDefaultValue != null && varDefaultValue.kind !== Kind.NULL;\n const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n return false;\n }\n\n const nullableLocationType = locationType.ofType;\n return isTypeSubTypeOf(schema, varType, nullableLocationType);\n }\n\n return isTypeSubTypeOf(schema, varType, locationType);\n}\n","// Spec Section: \"Executable Definitions\"\nimport { ExecutableDefinitionsRule } from './rules/ExecutableDefinitionsRule.mjs'; // Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n\nimport { FieldsOnCorrectTypeRule } from './rules/FieldsOnCorrectTypeRule.mjs'; // Spec Section: \"Fragments on Composite Types\"\n\nimport { FragmentsOnCompositeTypesRule } from './rules/FragmentsOnCompositeTypesRule.mjs'; // Spec Section: \"Argument Names\"\n\nimport {\n KnownArgumentNamesOnDirectivesRule,\n KnownArgumentNamesRule,\n} from './rules/KnownArgumentNamesRule.mjs'; // Spec Section: \"Directives Are Defined\"\n\nimport { KnownDirectivesRule } from './rules/KnownDirectivesRule.mjs'; // Spec Section: \"Fragment spread target defined\"\n\nimport { KnownFragmentNamesRule } from './rules/KnownFragmentNamesRule.mjs'; // Spec Section: \"Fragment Spread Type Existence\"\n\nimport { KnownTypeNamesRule } from './rules/KnownTypeNamesRule.mjs'; // Spec Section: \"Lone Anonymous Operation\"\n\nimport { LoneAnonymousOperationRule } from './rules/LoneAnonymousOperationRule.mjs'; // SDL-specific validation rules\n\nimport { LoneSchemaDefinitionRule } from './rules/LoneSchemaDefinitionRule.mjs'; // TODO: Spec Section\n\nimport { MaxIntrospectionDepthRule } from './rules/MaxIntrospectionDepthRule.mjs'; // Spec Section: \"Fragments must not form cycles\"\n\nimport { NoFragmentCyclesRule } from './rules/NoFragmentCyclesRule.mjs'; // Spec Section: \"All Variable Used Defined\"\n\nimport { NoUndefinedVariablesRule } from './rules/NoUndefinedVariablesRule.mjs'; // Spec Section: \"Fragments must be used\"\n\nimport { NoUnusedFragmentsRule } from './rules/NoUnusedFragmentsRule.mjs'; // Spec Section: \"All Variables Used\"\n\nimport { NoUnusedVariablesRule } from './rules/NoUnusedVariablesRule.mjs'; // Spec Section: \"Field Selection Merging\"\n\nimport { OverlappingFieldsCanBeMergedRule } from './rules/OverlappingFieldsCanBeMergedRule.mjs'; // Spec Section: \"Fragment spread is possible\"\n\nimport { PossibleFragmentSpreadsRule } from './rules/PossibleFragmentSpreadsRule.mjs';\nimport { PossibleTypeExtensionsRule } from './rules/PossibleTypeExtensionsRule.mjs'; // Spec Section: \"Argument Optionality\"\n\nimport {\n ProvidedRequiredArgumentsOnDirectivesRule,\n ProvidedRequiredArgumentsRule,\n} from './rules/ProvidedRequiredArgumentsRule.mjs'; // Spec Section: \"Leaf Field Selections\"\n\nimport { ScalarLeafsRule } from './rules/ScalarLeafsRule.mjs'; // Spec Section: \"Subscriptions with Single Root Field\"\n\nimport { SingleFieldSubscriptionsRule } from './rules/SingleFieldSubscriptionsRule.mjs';\nimport { UniqueArgumentDefinitionNamesRule } from './rules/UniqueArgumentDefinitionNamesRule.mjs'; // Spec Section: \"Argument Uniqueness\"\n\nimport { UniqueArgumentNamesRule } from './rules/UniqueArgumentNamesRule.mjs';\nimport { UniqueDirectiveNamesRule } from './rules/UniqueDirectiveNamesRule.mjs'; // Spec Section: \"Directives Are Unique Per Location\"\n\nimport { UniqueDirectivesPerLocationRule } from './rules/UniqueDirectivesPerLocationRule.mjs';\nimport { UniqueEnumValueNamesRule } from './rules/UniqueEnumValueNamesRule.mjs';\nimport { UniqueFieldDefinitionNamesRule } from './rules/UniqueFieldDefinitionNamesRule.mjs'; // Spec Section: \"Fragment Name Uniqueness\"\n\nimport { UniqueFragmentNamesRule } from './rules/UniqueFragmentNamesRule.mjs'; // Spec Section: \"Input Object Field Uniqueness\"\n\nimport { UniqueInputFieldNamesRule } from './rules/UniqueInputFieldNamesRule.mjs'; // Spec Section: \"Operation Name Uniqueness\"\n\nimport { UniqueOperationNamesRule } from './rules/UniqueOperationNamesRule.mjs';\nimport { UniqueOperationTypesRule } from './rules/UniqueOperationTypesRule.mjs';\nimport { UniqueTypeNamesRule } from './rules/UniqueTypeNamesRule.mjs'; // Spec Section: \"Variable Uniqueness\"\n\nimport { UniqueVariableNamesRule } from './rules/UniqueVariableNamesRule.mjs'; // Spec Section: \"Value Type Correctness\"\n\nimport { ValuesOfCorrectTypeRule } from './rules/ValuesOfCorrectTypeRule.mjs'; // Spec Section: \"Variables are Input Types\"\n\nimport { VariablesAreInputTypesRule } from './rules/VariablesAreInputTypesRule.mjs'; // Spec Section: \"All Variable Usages Are Allowed\"\n\nimport { VariablesInAllowedPositionRule } from './rules/VariablesInAllowedPositionRule.mjs';\n\n/**\n * Technically these aren't part of the spec but they are strongly encouraged\n * validation rules.\n */\nexport const recommendedRules = Object.freeze([MaxIntrospectionDepthRule]);\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\n\nexport const specifiedRules = Object.freeze([\n ExecutableDefinitionsRule,\n UniqueOperationNamesRule,\n LoneAnonymousOperationRule,\n SingleFieldSubscriptionsRule,\n KnownTypeNamesRule,\n FragmentsOnCompositeTypesRule,\n VariablesAreInputTypesRule,\n ScalarLeafsRule,\n FieldsOnCorrectTypeRule,\n UniqueFragmentNamesRule,\n KnownFragmentNamesRule,\n NoUnusedFragmentsRule,\n PossibleFragmentSpreadsRule,\n NoFragmentCyclesRule,\n UniqueVariableNamesRule,\n NoUndefinedVariablesRule,\n NoUnusedVariablesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n KnownArgumentNamesRule,\n UniqueArgumentNamesRule,\n ValuesOfCorrectTypeRule,\n ProvidedRequiredArgumentsRule,\n VariablesInAllowedPositionRule,\n OverlappingFieldsCanBeMergedRule,\n UniqueInputFieldNamesRule,\n ...recommendedRules,\n]);\n/**\n * @internal\n */\n\nexport const specifiedSDLRules = Object.freeze([\n LoneSchemaDefinitionRule,\n UniqueOperationTypesRule,\n UniqueTypeNamesRule,\n UniqueEnumValueNamesRule,\n UniqueFieldDefinitionNamesRule,\n UniqueArgumentDefinitionNamesRule,\n UniqueDirectiveNamesRule,\n KnownTypeNamesRule,\n KnownDirectivesRule,\n UniqueDirectivesPerLocationRule,\n PossibleTypeExtensionsRule,\n KnownArgumentNamesOnDirectivesRule,\n UniqueArgumentNamesRule,\n UniqueInputFieldNamesRule,\n ProvidedRequiredArgumentsOnDirectivesRule,\n]);\n","import { Kind } from '../language/kinds.mjs';\nimport { visit } from '../language/visitor.mjs';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nexport class ASTValidationContext {\n constructor(ast, onError) {\n this._ast = ast;\n this._fragments = undefined;\n this._fragmentSpreads = new Map();\n this._recursivelyReferencedFragments = new Map();\n this._onError = onError;\n }\n\n get [Symbol.toStringTag]() {\n return 'ASTValidationContext';\n }\n\n reportError(error) {\n this._onError(error);\n }\n\n getDocument() {\n return this._ast;\n }\n\n getFragment(name) {\n let fragments;\n\n if (this._fragments) {\n fragments = this._fragments;\n } else {\n fragments = Object.create(null);\n\n for (const defNode of this.getDocument().definitions) {\n if (defNode.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[defNode.name.value] = defNode;\n }\n }\n\n this._fragments = fragments;\n }\n\n return fragments[name];\n }\n\n getFragmentSpreads(node) {\n let spreads = this._fragmentSpreads.get(node);\n\n if (!spreads) {\n spreads = [];\n const setsToVisit = [node];\n let set;\n\n while ((set = setsToVisit.pop())) {\n for (const selection of set.selections) {\n if (selection.kind === Kind.FRAGMENT_SPREAD) {\n spreads.push(selection);\n } else if (selection.selectionSet) {\n setsToVisit.push(selection.selectionSet);\n }\n }\n }\n\n this._fragmentSpreads.set(node, spreads);\n }\n\n return spreads;\n }\n\n getRecursivelyReferencedFragments(operation) {\n let fragments = this._recursivelyReferencedFragments.get(operation);\n\n if (!fragments) {\n fragments = [];\n const collectedNames = Object.create(null);\n const nodesToVisit = [operation.selectionSet];\n let node;\n\n while ((node = nodesToVisit.pop())) {\n for (const spread of this.getFragmentSpreads(node)) {\n const fragName = spread.name.value;\n\n if (collectedNames[fragName] !== true) {\n collectedNames[fragName] = true;\n const fragment = this.getFragment(fragName);\n\n if (fragment) {\n fragments.push(fragment);\n nodesToVisit.push(fragment.selectionSet);\n }\n }\n }\n }\n\n this._recursivelyReferencedFragments.set(operation, fragments);\n }\n\n return fragments;\n }\n}\nexport class SDLValidationContext extends ASTValidationContext {\n constructor(ast, schema, onError) {\n super(ast, onError);\n this._schema = schema;\n }\n\n get [Symbol.toStringTag]() {\n return 'SDLValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n}\nexport class ValidationContext extends ASTValidationContext {\n constructor(schema, ast, typeInfo, onError) {\n super(ast, onError);\n this._schema = schema;\n this._typeInfo = typeInfo;\n this._variableUsages = new Map();\n this._recursiveVariableUsages = new Map();\n }\n\n get [Symbol.toStringTag]() {\n return 'ValidationContext';\n }\n\n getSchema() {\n return this._schema;\n }\n\n getVariableUsages(node) {\n let usages = this._variableUsages.get(node);\n\n if (!usages) {\n const newUsages = [];\n const typeInfo = new TypeInfo(this._schema);\n visit(\n node,\n visitWithTypeInfo(typeInfo, {\n VariableDefinition: () => false,\n\n Variable(variable) {\n newUsages.push({\n node: variable,\n type: typeInfo.getInputType(),\n defaultValue: typeInfo.getDefaultValue(),\n parentType: typeInfo.getParentInputType(),\n });\n },\n }),\n );\n usages = newUsages;\n\n this._variableUsages.set(node, usages);\n }\n\n return usages;\n }\n\n getRecursiveVariableUsages(operation) {\n let usages = this._recursiveVariableUsages.get(operation);\n\n if (!usages) {\n usages = this.getVariableUsages(operation);\n\n for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n usages = usages.concat(this.getVariableUsages(frag));\n }\n\n this._recursiveVariableUsages.set(operation, usages);\n }\n\n return usages;\n }\n\n getType() {\n return this._typeInfo.getType();\n }\n\n getParentType() {\n return this._typeInfo.getParentType();\n }\n\n getInputType() {\n return this._typeInfo.getInputType();\n }\n\n getParentInputType() {\n return this._typeInfo.getParentInputType();\n }\n\n getFieldDef() {\n return this._typeInfo.getFieldDef();\n }\n\n getDirective() {\n return this._typeInfo.getDirective();\n }\n\n getArgument() {\n return this._typeInfo.getArgument();\n }\n\n getEnumValue() {\n return this._typeInfo.getEnumValue();\n }\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { visit, visitInParallel } from '../language/visitor.mjs';\nimport { assertValidSchema } from '../type/validate.mjs';\nimport { TypeInfo, visitWithTypeInfo } from '../utilities/TypeInfo.mjs';\nimport { specifiedRules, specifiedSDLRules } from './specifiedRules.mjs';\nimport {\n SDLValidationContext,\n ValidationContext,\n} from './ValidationContext.mjs';\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\n\nexport function validate(\n schema,\n documentAST,\n rules = specifiedRules,\n options,\n /** @deprecated will be removed in 17.0.0 */\n typeInfo = new TypeInfo(schema),\n) {\n var _options$maxErrors;\n\n const maxErrors =\n (_options$maxErrors =\n options === null || options === void 0 ? void 0 : options.maxErrors) !==\n null && _options$maxErrors !== void 0\n ? _options$maxErrors\n : 100;\n documentAST || devAssert(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n assertValidSchema(schema);\n const abortObj = Object.freeze({});\n const errors = [];\n const context = new ValidationContext(\n schema,\n documentAST,\n typeInfo,\n (error) => {\n if (errors.length >= maxErrors) {\n errors.push(\n new GraphQLError(\n 'Too many validation errors, error limit reached. Validation aborted.',\n ),\n ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n throw abortObj;\n }\n\n errors.push(error);\n },\n ); // This uses a specialized visitor which runs multiple visitors in parallel,\n // while maintaining the visitor skip and break API.\n\n const visitor = visitInParallel(rules.map((rule) => rule(context))); // Visit the whole document with each instance of all provided rules.\n\n try {\n visit(documentAST, visitWithTypeInfo(typeInfo, visitor));\n } catch (e) {\n if (e !== abortObj) {\n throw e;\n }\n }\n\n return errors;\n}\n/**\n * @internal\n */\n\nexport function validateSDL(\n documentAST,\n schemaToExtend,\n rules = specifiedSDLRules,\n) {\n const errors = [];\n const context = new SDLValidationContext(\n documentAST,\n schemaToExtend,\n (error) => {\n errors.push(error);\n },\n );\n const visitors = rules.map((rule) => rule(context));\n visit(documentAST, visitInParallel(visitors));\n return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDL(documentAST) {\n const errors = validateSDL(documentAST);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nexport function assertValidSDLExtension(documentAST, schema) {\n const errors = validateSDL(documentAST, schema);\n\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n","import { inspect } from './inspect.mjs';\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\n\nexport function toError(thrownValue) {\n return thrownValue instanceof Error\n ? thrownValue\n : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n constructor(thrownValue) {\n super('Unexpected error value: ' + inspect(thrownValue));\n this.name = 'NonErrorThrown';\n this.thrownValue = thrownValue;\n }\n}\n","import { toError } from '../jsutils/toError.mjs';\nimport { GraphQLError } from './GraphQLError.mjs';\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\n\nexport function locatedError(rawOriginalError, nodes, path) {\n var _nodes;\n\n const originalError = toError(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n if (isLocatedGraphQLError(originalError)) {\n return originalError;\n }\n\n return new GraphQLError(originalError.message, {\n nodes:\n (_nodes = originalError.nodes) !== null && _nodes !== void 0\n ? _nodes\n : nodes,\n source: originalError.source,\n positions: originalError.positions,\n path,\n originalError,\n });\n}\n\nfunction isLocatedGraphQLError(error) {\n return Array.isArray(error.path);\n}\n","import { devAssert } from '../jsutils/devAssert.mjs';\nimport { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { isIterableObject } from '../jsutils/isIterableObject.mjs';\nimport { isObjectLike } from '../jsutils/isObjectLike.mjs';\nimport { isPromise } from '../jsutils/isPromise.mjs';\nimport { memoize3 } from '../jsutils/memoize3.mjs';\nimport { addPath, pathToArray } from '../jsutils/Path.mjs';\nimport { promiseForObject } from '../jsutils/promiseForObject.mjs';\nimport { promiseReduce } from '../jsutils/promiseReduce.mjs';\nimport { GraphQLError } from '../error/GraphQLError.mjs';\nimport { locatedError } from '../error/locatedError.mjs';\nimport { OperationTypeNode } from '../language/ast.mjs';\nimport { Kind } from '../language/kinds.mjs';\nimport {\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n} from '../type/definition.mjs';\nimport {\n SchemaMetaFieldDef,\n TypeMetaFieldDef,\n TypeNameMetaFieldDef,\n} from '../type/introspection.mjs';\nimport { assertValidSchema } from '../type/validate.mjs';\nimport {\n collectFields,\n collectSubfields as _collectSubfields,\n} from './collectFields.mjs';\nimport { getArgumentValues, getVariableValues } from './values.mjs';\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\n\nconst collectSubfields = memoize3((exeContext, returnType, fieldNodes) =>\n _collectSubfields(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n returnType,\n fieldNodes,\n ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nexport function execute(args) {\n // Temporary for v15 to v16 migration. Remove in v17\n arguments.length < 2 ||\n devAssert(\n false,\n 'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n );\n const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n\n const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext,\n };\n } // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n\n try {\n const { operation } = exeContext;\n const result = executeOperation(exeContext, operation, rootValue);\n\n if (isPromise(result)) {\n return result.then(\n (data) => buildResponse(data, exeContext.errors),\n (error) => {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n },\n );\n }\n\n return buildResponse(result, exeContext.errors);\n } catch (error) {\n exeContext.errors.push(error);\n return buildResponse(null, exeContext.errors);\n }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nexport function executeSync(args) {\n const result = execute(args); // Assert that the execution was synchronous.\n\n if (isPromise(result)) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n\n return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n return errors.length === 0\n ? {\n data,\n }\n : {\n errors,\n data,\n };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nexport function assertValidExecutionArguments(\n schema,\n document,\n rawVariableValues,\n) {\n document || devAssert(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n assertValidSchema(schema); // Variables, if provided, must be an object.\n\n rawVariableValues == null ||\n isObjectLike(rawVariableValues) ||\n devAssert(\n false,\n 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nexport function buildExecutionContext(args) {\n var _definition$name, _operation$variableDe, _options$maxCoercionE;\n\n const {\n schema,\n document,\n rootValue,\n contextValue,\n variableValues: rawVariableValues,\n operationName,\n fieldResolver,\n typeResolver,\n subscribeFieldResolver,\n options,\n } = args;\n let operation;\n const fragments = Object.create(null);\n\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n new GraphQLError(\n 'Must provide operation name if query contains multiple operations.',\n ),\n ];\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n operation = definition;\n }\n\n break;\n\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n\n default: // ignore non-executable definitions\n }\n }\n\n if (!operation) {\n if (operationName != null) {\n return [new GraphQLError(`Unknown operation named \"${operationName}\".`)];\n }\n\n return [new GraphQLError('Must provide an operation.')];\n } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n /* c8 ignore next */\n\n const variableDefinitions =\n (_operation$variableDe = operation.variableDefinitions) !== null &&\n _operation$variableDe !== void 0\n ? _operation$variableDe\n : [];\n const coercedVariableValues = getVariableValues(\n schema,\n variableDefinitions,\n rawVariableValues !== null && rawVariableValues !== void 0\n ? rawVariableValues\n : {},\n {\n maxErrors:\n (_options$maxCoercionE =\n options === null || options === void 0\n ? void 0\n : options.maxCoercionErrors) !== null &&\n _options$maxCoercionE !== void 0\n ? _options$maxCoercionE\n : 50,\n },\n );\n\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver:\n fieldResolver !== null && fieldResolver !== void 0\n ? fieldResolver\n : defaultFieldResolver,\n typeResolver:\n typeResolver !== null && typeResolver !== void 0\n ? typeResolver\n : defaultTypeResolver,\n subscribeFieldResolver:\n subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n ? subscribeFieldResolver\n : defaultFieldResolver,\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n const rootType = exeContext.schema.getRootType(operation.operation);\n\n if (rootType == null) {\n throw new GraphQLError(\n `Schema is not configured to execute ${operation.operation} operation.`,\n {\n nodes: operation,\n },\n );\n }\n\n const rootFields = collectFields(\n exeContext.schema,\n exeContext.fragments,\n exeContext.variableValues,\n rootType,\n operation.selectionSet,\n );\n const path = undefined;\n\n switch (operation.operation) {\n case OperationTypeNode.QUERY:\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n case OperationTypeNode.MUTATION:\n return executeFieldsSerially(\n exeContext,\n rootType,\n rootValue,\n path,\n rootFields,\n );\n\n case OperationTypeNode.SUBSCRIPTION:\n // TODO: deprecate `subscribe` and move all logic here\n // Temporary solution until we finish merging execute and subscribe together\n return executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n exeContext,\n parentType,\n sourceValue,\n path,\n fields,\n) {\n return promiseReduce(\n fields.entries(),\n (results, [responseName, fieldNodes]) => {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result === undefined) {\n return results;\n }\n\n if (isPromise(result)) {\n return result.then((resolvedResult) => {\n results[responseName] = resolvedResult;\n return results;\n });\n }\n\n results[responseName] = result;\n return results;\n },\n Object.create(null),\n );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n const results = Object.create(null);\n let containsPromise = false;\n\n try {\n for (const [responseName, fieldNodes] of fields.entries()) {\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(\n exeContext,\n parentType,\n sourceValue,\n fieldNodes,\n fieldPath,\n );\n\n if (result !== undefined) {\n results[responseName] = result;\n\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n }\n } catch (error) {\n if (containsPromise) {\n // Ensure that any promises returned by other fields are handled, as they may also reject.\n return promiseForObject(results).finally(() => {\n throw error;\n });\n }\n\n throw error;\n } // If there are no promises, we can just return the object\n\n if (!containsPromise) {\n return results;\n } // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n\n return promiseForObject(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n var _fieldDef$resolve;\n\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n if (!fieldDef) {\n return;\n }\n\n const returnType = fieldDef.type;\n const resolveFn =\n (_fieldDef$resolve = fieldDef.resolve) !== null &&\n _fieldDef$resolve !== void 0\n ? _fieldDef$resolve\n : exeContext.fieldResolver;\n const info = buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n try {\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(\n fieldDef,\n fieldNodes[0],\n exeContext.variableValues,\n ); // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n\n if (isPromise(result)) {\n completed = result.then((resolved) =>\n completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n );\n } else {\n completed = completeValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, (rawError) => {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n });\n }\n\n return completed;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n return handleFieldError(error, returnType, exeContext);\n }\n}\n/**\n * @internal\n */\n\nexport function buildResolveInfo(\n exeContext,\n fieldDef,\n fieldNodes,\n parentType,\n path,\n) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (isNonNullType(returnType)) {\n throw error;\n } // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n\n exeContext.errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n } // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n\n if (isNonNullType(returnType)) {\n const completed = completeValue(\n exeContext,\n returnType.ofType,\n fieldNodes,\n info,\n path,\n result,\n );\n\n if (completed === null) {\n throw new Error(\n `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n );\n }\n\n return completed;\n } // If result value is null or undefined then return null.\n\n if (result == null) {\n return null;\n } // If field type is List, complete each item in the list with the inner type\n\n if (isListType(returnType)) {\n return completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n } // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n\n if (isAbstractType(returnType)) {\n return completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n } // If field type is Object, execute and complete all sub-selections.\n\n if (isObjectType(returnType)) {\n return completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n );\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n\n false ||\n invariant(\n false,\n 'Cannot complete value of unexpected output type: ' + inspect(returnType),\n );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n if (!isIterableObject(result)) {\n throw new GraphQLError(\n `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n );\n } // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n\n const itemType = returnType.ofType;\n let containsPromise = false;\n const completedResults = Array.from(result, (item, index) => {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n\n try {\n let completedItem;\n\n if (isPromise(item)) {\n completedItem = item.then((resolved) =>\n completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n resolved,\n ),\n );\n } else {\n completedItem = completeValue(\n exeContext,\n itemType,\n fieldNodes,\n info,\n itemPath,\n item,\n );\n }\n\n if (isPromise(completedItem)) {\n containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n\n return completedItem.then(undefined, (rawError) => {\n const error = locatedError(\n rawError,\n fieldNodes,\n pathToArray(itemPath),\n );\n return handleFieldError(error, itemType, exeContext);\n });\n }\n\n return completedItem;\n } catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n return handleFieldError(error, itemType, exeContext);\n }\n });\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n const serializedResult = returnType.serialize(result);\n\n if (serializedResult == null) {\n throw new Error(\n `Expected \\`${inspect(returnType)}.serialize(${inspect(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect(serializedResult)}`,\n );\n }\n\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n var _returnType$resolveTy;\n\n const resolveTypeFn =\n (_returnType$resolveTy = returnType.resolveType) !== null &&\n _returnType$resolveTy !== void 0\n ? _returnType$resolveTy\n : exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n if (isPromise(runtimeType)) {\n return runtimeType.then((resolvedRuntimeType) =>\n completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n resolvedRuntimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n ),\n );\n }\n\n return completeObjectValue(\n exeContext,\n ensureValidRuntimeType(\n runtimeType,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n ),\n fieldNodes,\n info,\n path,\n result,\n );\n}\n\nfunction ensureValidRuntimeType(\n runtimeTypeName,\n exeContext,\n returnType,\n fieldNodes,\n info,\n result,\n) {\n if (runtimeTypeName == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n fieldNodes,\n );\n } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n\n if (isObjectType(runtimeTypeName)) {\n throw new GraphQLError(\n 'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n );\n }\n\n if (typeof runtimeTypeName !== 'string') {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${inspect(result)}, received \"${inspect(runtimeTypeName)}\".`,\n );\n }\n\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n if (runtimeType == null) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!isObjectType(runtimeType)) {\n throw new GraphQLError(\n `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw new GraphQLError(\n `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n {\n nodes: fieldNodes,\n },\n );\n }\n\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n exeContext,\n returnType,\n fieldNodes,\n info,\n path,\n result,\n) {\n // Collect sub-fields to execute to complete this value.\n const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n if (isPromise(isTypeOf)) {\n return isTypeOf.then((resolvedIsTypeOf) => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n\n return executeFields(\n exeContext,\n returnType,\n result,\n path,\n subFieldNodes,\n );\n });\n }\n\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n\n return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return new GraphQLError(\n `Expected value of type \"${returnType.name}\" but got: ${inspect(result)}.`,\n {\n nodes: fieldNodes,\n },\n );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nexport const defaultTypeResolver = function (\n value,\n contextValue,\n info,\n abstractType,\n) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value.__typename === 'string') {\n return value.__typename;\n } // Otherwise, test each possible type.\n\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n } else if (isTypeOfResult) {\n if (promisedIsTypeOfResults.length) {\n // Explicitly ignore any promise rejections\n Promise.allSettled(promisedIsTypeOfResults)\n /* c8 ignore next 3 */\n .catch(() => {\n // Do nothing\n });\n }\n\n return type.name;\n }\n }\n }\n\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexport const defaultFieldResolver = function (\n source,\n args,\n contextValue,\n info,\n) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n\n return property;\n }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nexport function getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n\n if (\n fieldName === SchemaMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return SchemaMetaFieldDef;\n } else if (\n fieldName === TypeMetaFieldDef.name &&\n schema.getQueryType() === parentType\n ) {\n return TypeMetaFieldDef;\n } else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n\n return parentType.getFields()[fieldName];\n}\n","import { Kind } from '../language/kinds.mjs';\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\n\nexport function getOperationAST(documentAST, operationName) {\n let operation = null;\n\n for (const definition of documentAST.definitions) {\n if (definition.kind === Kind.OPERATION_DEFINITION) {\n var _definition$name;\n\n if (operationName == null) {\n // If no operation name was provided, only return an Operation if there\n // is one defined in the document. Upon encountering the second, return\n // null.\n if (operation) {\n return null;\n }\n\n operation = definition;\n } else if (\n ((_definition$name = definition.name) === null ||\n _definition$name === void 0\n ? void 0\n : _definition$name.value) === operationName\n ) {\n return definition;\n }\n }\n }\n\n return operation;\n}\n","import { inspect } from '../jsutils/inspect.mjs';\nimport { invariant } from '../jsutils/invariant.mjs';\nimport { keyValMap } from '../jsutils/keyValMap.mjs';\nimport { naturalCompare } from '../jsutils/naturalCompare.mjs';\nimport {\n GraphQLEnumType,\n GraphQLInputObjectType,\n GraphQLInterfaceType,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLUnionType,\n isEnumType,\n isInputObjectType,\n isInterfaceType,\n isListType,\n isNonNullType,\n isObjectType,\n isScalarType,\n isUnionType,\n} from '../type/definition.mjs';\nimport { GraphQLDirective } from '../type/directives.mjs';\nimport { isIntrospectionType } from '../type/introspection.mjs';\nimport { GraphQLSchema } from '../type/schema.mjs';\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\n\nexport function lexicographicSortSchema(schema) {\n const schemaConfig = schema.toConfig();\n const typeMap = keyValMap(\n sortByName(schemaConfig.types),\n (type) => type.name,\n sortNamedType,\n );\n return new GraphQLSchema({\n ...schemaConfig,\n types: Object.values(typeMap),\n directives: sortByName(schemaConfig.directives).map(sortDirective),\n query: replaceMaybeType(schemaConfig.query),\n mutation: replaceMaybeType(schemaConfig.mutation),\n subscription: replaceMaybeType(schemaConfig.subscription),\n });\n\n function replaceType(type) {\n if (isListType(type)) {\n // @ts-expect-error\n return new GraphQLList(replaceType(type.ofType));\n } else if (isNonNullType(type)) {\n // @ts-expect-error\n return new GraphQLNonNull(replaceType(type.ofType));\n } // @ts-expect-error FIXME: TS Conversion\n\n return replaceNamedType(type);\n }\n\n function replaceNamedType(type) {\n return typeMap[type.name];\n }\n\n function replaceMaybeType(maybeType) {\n return maybeType && replaceNamedType(maybeType);\n }\n\n function sortDirective(directive) {\n const config = directive.toConfig();\n return new GraphQLDirective({\n ...config,\n locations: sortBy(config.locations, (x) => x),\n args: sortArgs(config.args),\n });\n }\n\n function sortArgs(args) {\n return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n }\n\n function sortFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n args: field.args && sortArgs(field.args),\n }));\n }\n\n function sortInputFields(fieldsMap) {\n return sortObjMap(fieldsMap, (field) => ({\n ...field,\n type: replaceType(field.type),\n }));\n }\n\n function sortTypes(array) {\n return sortByName(array).map(replaceNamedType);\n }\n\n function sortNamedType(type) {\n if (isScalarType(type) || isIntrospectionType(type)) {\n return type;\n }\n\n if (isObjectType(type)) {\n const config = type.toConfig();\n return new GraphQLObjectType({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if (isInterfaceType(type)) {\n const config = type.toConfig();\n return new GraphQLInterfaceType({\n ...config,\n interfaces: () => sortTypes(config.interfaces),\n fields: () => sortFields(config.fields),\n });\n }\n\n if (isUnionType(type)) {\n const config = type.toConfig();\n return new GraphQLUnionType({\n ...config,\n types: () => sortTypes(config.types),\n });\n }\n\n if (isEnumType(type)) {\n const config = type.toConfig();\n return new GraphQLEnumType({\n ...config,\n values: sortObjMap(config.values, (value) => value),\n });\n }\n\n if (isInputObjectType(type)) {\n const config = type.toConfig();\n return new GraphQLInputObjectType({\n ...config,\n fields: () => sortInputFields(config.fields),\n });\n }\n /* c8 ignore next 3 */\n // Not reachable, all possible types have been considered.\n\n false || invariant(false, 'Unexpected type: ' + inspect(type));\n }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n const sortedMap = Object.create(null);\n\n for (const key of Object.keys(map).sort(naturalCompare)) {\n sortedMap[key] = sortValueFn(map[key]);\n }\n\n return sortedMap;\n}\n\nfunction sortByName(array) {\n return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n return array.slice().sort((obj1, obj2) => {\n const key1 = mapToKey(obj1);\n const key2 = mapToKey(obj2);\n return naturalCompare(key1, key2);\n });\n}\n","const kFakePromise = Symbol.for('@whatwg-node/promise-helpers/FakePromise');\nexport function isPromise(value) {\n return value?.then != null;\n}\nexport function isActualPromise(value) {\n const maybePromise = value;\n return maybePromise && maybePromise.then && maybePromise.catch && maybePromise.finally;\n}\nexport function handleMaybePromise(inputFactory, outputSuccessFactory, outputErrorFactory, finallyFactory) {\n let result$ = fakePromise().then(inputFactory).then(outputSuccessFactory, outputErrorFactory);\n if (finallyFactory) {\n result$ = result$.finally(finallyFactory);\n }\n return unfakePromise(result$);\n}\nexport function fakePromise(value) {\n if (value && isActualPromise(value)) {\n return value;\n }\n if (isPromise(value)) {\n return {\n then: (resolve, reject) => fakePromise(value.then(resolve, reject)),\n catch: reject => fakePromise(value.then(res => res, reject)),\n finally: cb => fakePromise(cb ? promiseLikeFinally(value, cb) : value),\n [Symbol.toStringTag]: 'Promise',\n };\n }\n // Write a fake promise to avoid the promise constructor\n // being called with `new Promise` in the browser.\n return {\n then(resolve) {\n if (resolve) {\n try {\n return fakePromise(resolve(value));\n }\n catch (err) {\n return fakeRejectPromise(err);\n }\n }\n return this;\n },\n catch() {\n return this;\n },\n finally(cb) {\n if (cb) {\n try {\n return fakePromise(cb()).then(() => value, () => value);\n }\n catch (err) {\n return fakeRejectPromise(err);\n }\n }\n return this;\n },\n [Symbol.toStringTag]: 'Promise',\n __fakePromiseValue: value,\n [kFakePromise]: 'resolved',\n };\n}\nexport function createDeferredPromise() {\n if (Promise.withResolvers) {\n return Promise.withResolvers();\n }\n let resolveFn;\n let rejectFn;\n const promise = new Promise(function deferredPromiseExecutor(resolve, reject) {\n resolveFn = resolve;\n rejectFn = reject;\n });\n return {\n promise,\n get resolve() {\n return resolveFn;\n },\n get reject() {\n return rejectFn;\n },\n };\n}\nexport { iterateAsync as iterateAsyncVoid };\nexport function iterateAsync(iterable, callback, results) {\n if (iterable?.length === 0) {\n return;\n }\n const iterator = iterable[Symbol.iterator]();\n let index = 0;\n function iterate() {\n const { done: endOfIterator, value } = iterator.next();\n if (endOfIterator) {\n return;\n }\n let endedEarly = false;\n function endEarly() {\n endedEarly = true;\n }\n return handleMaybePromise(function handleCallback() {\n return callback(value, endEarly, index++);\n }, function handleCallbackResult(result) {\n if (result) {\n results?.push(result);\n }\n if (endedEarly) {\n return;\n }\n return iterate();\n });\n }\n return iterate();\n}\nexport function fakeRejectPromise(error) {\n return {\n then(_resolve, reject) {\n if (reject) {\n try {\n return fakePromise(reject(error));\n }\n catch (err) {\n return fakeRejectPromise(err);\n }\n }\n return this;\n },\n catch(reject) {\n if (reject) {\n try {\n return fakePromise(reject(error));\n }\n catch (err) {\n return fakeRejectPromise(err);\n }\n }\n return this;\n },\n finally(cb) {\n if (cb) {\n try {\n cb();\n }\n catch (err) {\n return fakeRejectPromise(err);\n }\n }\n return this;\n },\n __fakeRejectError: error,\n [Symbol.toStringTag]: 'Promise',\n [kFakePromise]: 'rejected',\n };\n}\nexport function mapMaybePromise(input, onSuccess, onError) {\n return handleMaybePromise(() => input, onSuccess, onError);\n}\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nexport function mapAsyncIterator(iterator, onNext, onError, onEnd) {\n if (Symbol.asyncIterator in iterator) {\n iterator = iterator[Symbol.asyncIterator]();\n }\n let $return;\n let abruptClose;\n let onEndWithValue;\n if (onEnd) {\n let onEndWithValueResult /** R in onEndWithValue */;\n onEndWithValue = value => {\n onEndWithValueResult ||= handleMaybePromise(onEnd, () => value, () => value);\n return onEndWithValueResult;\n };\n }\n if (typeof iterator.return === 'function') {\n $return = iterator.return;\n abruptClose = (error) => {\n const rethrow = () => {\n throw error;\n };\n return $return.call(iterator).then(rethrow, rethrow);\n };\n }\n function mapResult(result) {\n if (result.done) {\n return onEndWithValue ? onEndWithValue(result) : result;\n }\n return handleMaybePromise(() => result.value, value => handleMaybePromise(() => onNext(value), iteratorResult, abruptClose));\n }\n let mapReject;\n if (onError) {\n let onErrorResult;\n // Capture rejectCallback to ensure it cannot be null.\n const reject = onError;\n mapReject = (error) => {\n onErrorResult ||= handleMaybePromise(() => error, error => handleMaybePromise(() => reject(error), iteratorResult, abruptClose));\n return onErrorResult;\n };\n }\n return {\n next() {\n return iterator.next().then(mapResult, mapReject);\n },\n return() {\n const res$ = $return\n ? $return.call(iterator).then(mapResult, mapReject)\n : fakePromise({ value: undefined, done: true });\n return onEndWithValue ? res$.then(onEndWithValue) : res$;\n },\n throw(error) {\n if (typeof iterator.throw === 'function') {\n return iterator.throw(error).then(mapResult, mapReject);\n }\n if (abruptClose) {\n return abruptClose(error);\n }\n return fakeRejectPromise(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\nfunction iteratorResult(value) {\n return { value, done: false };\n}\nfunction isFakePromise(value) {\n return value?.[kFakePromise] === 'resolved';\n}\nfunction isFakeRejectPromise(value) {\n return value?.[kFakePromise] === 'rejected';\n}\nexport function promiseLikeFinally(value, onFinally) {\n if ('finally' in value) {\n return value.finally(onFinally);\n }\n return value.then(res => {\n const finallyRes = onFinally();\n return isPromise(finallyRes) ? finallyRes.then(() => res) : res;\n }, err => {\n const finallyRes = onFinally();\n if (isPromise(finallyRes)) {\n return finallyRes.then(() => {\n throw err;\n });\n }\n else {\n throw err;\n }\n });\n}\nexport function unfakePromise(promise) {\n if (isFakePromise(promise)) {\n return promise.__fakePromiseValue;\n }\n if (isFakeRejectPromise(promise)) {\n throw promise.__fakeRejectError;\n }\n return promise;\n}\n","import { handleMaybePromise, isPromise } from '@whatwg-node/promise-helpers';\n/**\n * Composes 2 instrumentations together into one instrumentation.\n * The first one will be the outer call, the second one the inner call.\n */\nexport function chain(first, next) {\n const merged = { ...next, ...first };\n for (const key of Object.keys(merged)) {\n if (key in first && key in next) {\n merged[key] = (payload, wrapped) => first[key](payload, () => next[key](payload, wrapped));\n }\n }\n return merged;\n}\n/**\n * Composes a list of instrumentation together into one instrumentation object.\n * The order of execution will respect the order of the array,\n * the first one being the outter most call, the last one the inner most call.\n */\nexport function composeInstrumentation(instrumentation) {\n return instrumentation.length > 0 ? instrumentation.reduce(chain) : undefined;\n}\n/**\n * Extract instrumentation from a list of plugins.\n * It returns instrumentation found, and the list of plugins without their instrumentation.\n *\n * You can use this to easily customize the composition of the instrumentation if the default one\n * doesn't suits your needs.\n */\nexport function getInstrumentationAndPlugin(plugins) {\n const pluginInstrumentation = [];\n const newPlugins = [];\n for (const { instrumentation, ...plugin } of plugins) {\n if (instrumentation) {\n pluginInstrumentation.push(instrumentation);\n }\n newPlugins.push(plugin);\n }\n return { pluginInstrumentation, plugins: newPlugins };\n}\n/**\n * A helper to instrument a function.\n *\n * @param payload: The first argument that will be passed to the instrumentation on each function call\n * @returns Function and Async Functions factories allowing to wrap a function with a given instrument.\n */\nexport const getInstrumented = (payload) => ({\n /**\n * Wraps the `wrapped` function with the given `instrument` wrapper.\n * @returns The wrapped function, or `undefined` if the instrument is `undefined`.\n */\n fn(instrument, wrapped) {\n if (!instrument) {\n return wrapped;\n }\n return (...args) => {\n let result;\n instrument(payload, () => {\n result = wrapped(...args);\n });\n return result;\n };\n },\n /**\n * Wraps the `wrapped` function with the given `instrument` wrapper.\n * @returns The wrapped function, or `undefined` if the instrument is `undefined`.\n */\n asyncFn(instrument, wrapped) {\n if (!instrument) {\n return wrapped;\n }\n return (...args) => {\n let result;\n return handleMaybePromise(() => instrument(payload, () => {\n result = wrapped(...args);\n return isPromise(result) ? result.then(() => undefined) : undefined;\n }), () => {\n return result;\n });\n };\n },\n});\n","export const documentStringMap = new WeakMap();\nfunction getDocumentString(document, print) {\n let documentSource = documentStringMap.get(document);\n if (!documentSource && print) {\n documentSource = print(document);\n documentStringMap.set(document, documentSource);\n }\n return documentSource;\n}\nexport { getDocumentString };\n","import { fakePromise } from '@whatwg-node/promise-helpers';\nexport const envelopIsIntrospectionSymbol = Symbol('ENVELOP_IS_INTROSPECTION');\nexport function isIntrospectionOperationString(operation) {\n return (typeof operation === 'string' ? operation : operation.body).indexOf('__schema') !== -1;\n}\nfunction getSubscribeArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n subscribeFieldResolver: args[7],\n };\n}\n/**\n * Utility function for making a subscribe function that handles polymorphic arguments.\n */\nexport const makeSubscribe = (subscribeFn) => ((...polyArgs) => subscribeFn(getSubscribeArgs(polyArgs)));\nexport { mapAsyncIterator } from '@whatwg-node/promise-helpers';\nfunction getExecuteArgs(args) {\n return args.length === 1\n ? args[0]\n : {\n schema: args[0],\n document: args[1],\n rootValue: args[2],\n contextValue: args[3],\n variableValues: args[4],\n operationName: args[5],\n fieldResolver: args[6],\n typeResolver: args[7],\n };\n}\n/**\n * Utility function for making a execute function that handles polymorphic arguments.\n */\nexport const makeExecute = (executeFn) => ((...polyArgs) => executeFn(getExecuteArgs(polyArgs)));\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n *\n * Source: https://github.com/graphql/graphql-js/blob/main/src/jsutils/isAsyncIterable.ts\n */\nexport function isAsyncIterable(maybeAsyncIterable) {\n return (typeof maybeAsyncIterable === 'object' &&\n maybeAsyncIterable != null &&\n typeof maybeAsyncIterable[Symbol.asyncIterator] === 'function');\n}\n/**\n * A utility function for handling `onExecuteDone` hook result, for simplifying the handling of AsyncIterable returned from `execute`.\n *\n * @param payload The payload send to `onExecuteDone` hook function\n * @param fn The handler to be executed on each result\n * @returns a subscription for streamed results, or undefined in case of an non-async\n */\nexport function handleStreamOrSingleExecutionResult(payload, fn) {\n if (isAsyncIterable(payload.result)) {\n return { onNext: fn };\n }\n fn({\n args: payload.args,\n result: payload.result,\n setResult: payload.setResult,\n });\n return undefined;\n}\nexport function finalAsyncIterator(source, onFinal) {\n let iterator;\n function ensureIterator() {\n if (!iterator) {\n iterator = source[Symbol.asyncIterator]();\n }\n return iterator;\n }\n let isDone = false;\n return {\n [Symbol.asyncIterator]() {\n return this;\n },\n next() {\n return ensureIterator()\n .next()\n .then(result => {\n if (result.done && isDone === false) {\n isDone = true;\n onFinal();\n }\n return result;\n });\n },\n return() {\n const promise = ensureIterator().return?.();\n if (isDone === false) {\n isDone = true;\n onFinal();\n }\n return promise || fakePromise({ done: true, value: undefined });\n },\n throw(error) {\n const promise = ensureIterator().throw?.();\n if (promise) {\n return promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n [Symbol.asyncDispose || Symbol.for('Symbol.asyncDispose')]() {\n // This is a no-op, but we need to implement it to ensure that the AsyncGenerator\n // is properly cleaned up when the subscription is disposed.\n return fakePromise();\n },\n };\n}\nexport function errorAsyncIterator(source, onError) {\n let iterator;\n function ensureIterator() {\n if (!iterator) {\n iterator = source[Symbol.asyncIterator]();\n }\n return iterator;\n }\n return {\n [Symbol.asyncIterator]() {\n return this;\n },\n next() {\n return ensureIterator()\n .next()\n .catch(error => {\n onError(error);\n return { done: true, value: undefined };\n });\n },\n return() {\n const promise = ensureIterator().return?.();\n return promise || fakePromise({ done: true, value: undefined });\n },\n throw(error) {\n const promise = ensureIterator().throw?.();\n if (promise) {\n return promise;\n }\n // if the source has no throw method we just re-throw error\n // usually throw is not called anyways\n throw error;\n },\n [Symbol.asyncDispose || Symbol.for('Symbol.asyncDispose')]() {\n // This is a no-op, but we need to implement it to ensure that the AsyncGenerator\n // is properly cleaned up when the subscription is disposed.\n return fakePromise();\n },\n };\n}\nexport { mapMaybePromise, isPromise } from '@whatwg-node/promise-helpers';\n","import { chain } from '@envelop/instrumentation';\nimport { handleMaybePromise, iterateAsync, iterateAsyncVoid } from '@whatwg-node/promise-helpers';\nimport { documentStringMap } from './document-string-map.js';\nimport { errorAsyncIterator, finalAsyncIterator, isAsyncIterable, makeExecute, makeSubscribe, mapAsyncIterator, } from './utils.js';\nfunction throwEngineFunctionError(name) {\n throw Error(`No \\`${name}\\` function found! Register it using \"useEngine\" plugin.`);\n}\nexport function createEnvelopOrchestrator({ plugins, }) {\n let schema = null;\n let initDone = false;\n const parse = () => throwEngineFunctionError('parse');\n const validate = () => throwEngineFunctionError('validate');\n const execute = () => throwEngineFunctionError('execute');\n const subscribe = () => throwEngineFunctionError('subscribe');\n let instrumentation;\n // Define the initial method for replacing the GraphQL schema, this is needed in order\n // to allow setting the schema from the onPluginInit callback. We also need to make sure\n // here not to call the same plugin that initiated the schema switch.\n const replaceSchema = (newSchema, ignorePluginIndex = -1) => {\n if (schema === newSchema) {\n return;\n }\n schema = newSchema;\n if (initDone) {\n for (const [i, plugin] of plugins.entries()) {\n if (i !== ignorePluginIndex) {\n plugin.onSchemaChange &&\n plugin.onSchemaChange({\n schema,\n replaceSchema: schemaToSet => {\n replaceSchema(schemaToSet, i);\n },\n });\n }\n }\n }\n };\n const contextErrorHandlers = [];\n // Iterate all plugins and trigger onPluginInit\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const pluginsToAdd = [];\n plugin.onPluginInit?.({\n plugins,\n addPlugin: newPlugin => {\n pluginsToAdd.push(newPlugin);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n registerContextErrorHandler: handler => contextErrorHandlers.push(handler),\n });\n pluginsToAdd.length && plugins.splice(i + 1, 0, ...pluginsToAdd);\n }\n // A set of before callbacks defined here in order to allow it to be used later\n const beforeCallbacks = {\n init: [],\n parse: [],\n validate: [],\n subscribe: [],\n execute: [],\n context: [],\n };\n for (const { onContextBuilding, onExecute, onParse, onSubscribe, onValidate, onEnveloped, instrumentation: pluginInstrumentation, } of plugins) {\n onEnveloped && beforeCallbacks.init.push(onEnveloped);\n onContextBuilding && beforeCallbacks.context.push(onContextBuilding);\n onExecute && beforeCallbacks.execute.push(onExecute);\n onParse && beforeCallbacks.parse.push(onParse);\n onSubscribe && beforeCallbacks.subscribe.push(onSubscribe);\n onValidate && beforeCallbacks.validate.push(onValidate);\n if (pluginInstrumentation) {\n instrumentation = instrumentation\n ? chain(instrumentation, pluginInstrumentation)\n : pluginInstrumentation;\n }\n }\n const init = initialContext => {\n for (const [i, onEnveloped] of beforeCallbacks.init.entries()) {\n onEnveloped({\n context: initialContext,\n extendContext: extension => {\n if (!initialContext) {\n return;\n }\n Object.assign(initialContext, extension);\n },\n setSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n };\n const customParse = beforeCallbacks.parse.length\n ? initialContext => (source, parseOptions) => {\n let result = null;\n let parseFn = parse;\n const context = initialContext;\n const afterCalls = [];\n for (const onParse of beforeCallbacks.parse) {\n const afterFn = onParse({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: { source, options: parseOptions },\n parseFn,\n setParseFn: newFn => {\n parseFn = newFn;\n },\n setParsedDocument: newDoc => {\n result = newDoc;\n },\n });\n if (afterFn) {\n afterCalls.push(afterFn);\n }\n }\n if (result === null) {\n try {\n result = parseFn(source, parseOptions);\n }\n catch (e) {\n result = e;\n }\n }\n for (const afterCb of afterCalls) {\n afterCb({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n replaceParseResult: newResult => {\n result = newResult;\n },\n result,\n });\n }\n if (result === null) {\n throw new Error(`Failed to parse document.`);\n }\n if (result instanceof Error) {\n throw result;\n }\n documentStringMap.set(result, source.toString());\n return result;\n }\n : () => parse;\n const customValidate = beforeCallbacks.validate\n .length\n ? initialContext => (schema, documentAST, rules, typeInfo, validationOptions) => {\n let actualRules = rules ? [...rules] : undefined;\n let validateFn = validate;\n let result = null;\n const context = initialContext;\n const afterCalls = [];\n for (const onValidate of beforeCallbacks.validate) {\n const afterFn = onValidate({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n params: {\n schema,\n documentAST,\n rules: actualRules,\n typeInfo,\n options: validationOptions,\n },\n validateFn,\n addValidationRule: rule => {\n if (!actualRules) {\n actualRules = [];\n }\n actualRules.push(rule);\n },\n setValidationFn: newFn => {\n validateFn = newFn;\n },\n setResult: newResults => {\n result = newResults;\n },\n });\n afterFn && afterCalls.push(afterFn);\n }\n if (!result) {\n result = validateFn(schema, documentAST, actualRules, typeInfo, validationOptions);\n }\n if (!result) {\n return;\n }\n const valid = result.length === 0;\n for (const afterCb of afterCalls) {\n afterCb({\n valid,\n result,\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n setResult: newResult => {\n result = newResult;\n },\n });\n }\n return result;\n }\n : () => validate;\n const customContextFactory = beforeCallbacks.context.length\n ? initialContext => orchestratorCtx => {\n const afterCalls = [];\n // In order to have access to the \"last working\" context object we keep this outside of the try block:\n const context = initialContext;\n if (orchestratorCtx) {\n Object.assign(context, orchestratorCtx);\n }\n let isBreakingContextBuilding = false;\n return handleMaybePromise(() => iterateAsync(beforeCallbacks.context, (onContext, stopEarly) => onContext({\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n breakContextBuilding: () => {\n isBreakingContextBuilding = true;\n stopEarly();\n },\n }), afterCalls), () => {\n if (!isBreakingContextBuilding) {\n return handleMaybePromise(() => iterateAsync(afterCalls, afterCb => afterCb({\n context,\n extendContext(extension) {\n Object.assign(context, extension);\n },\n })), () => context);\n }\n return context;\n }, err => {\n let error = err;\n for (const errorCb of contextErrorHandlers) {\n errorCb({\n context,\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n });\n }\n : initialContext => orchestratorCtx => {\n if (orchestratorCtx) {\n Object.assign(initialContext, orchestratorCtx);\n }\n return initialContext;\n };\n const useCustomSubscribe = beforeCallbacks.subscribe.length;\n const customSubscribe = useCustomSubscribe\n ? makeSubscribe(args => {\n let subscribeFn = subscribe;\n const afterCallbacks = [];\n const context = args.contextValue || {};\n let result;\n return handleMaybePromise(() => iterateAsync(beforeCallbacks.subscribe, (onSubscribe, endEarly) => onSubscribe({\n subscribeFn,\n setSubscribeFn: newSubscribeFn => {\n subscribeFn = newSubscribeFn;\n },\n context,\n extendContext: extension => {\n Object.assign(context, extension);\n },\n args: args,\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n endEarly();\n },\n }), afterCallbacks), () => {\n const afterCalls = [];\n const subscribeErrorHandlers = [];\n for (const { onSubscribeResult, onSubscribeError } of afterCallbacks) {\n if (onSubscribeResult) {\n afterCalls.push(onSubscribeResult);\n }\n if (onSubscribeError) {\n subscribeErrorHandlers.push(onSubscribeError);\n }\n }\n return handleMaybePromise(() => result || subscribeFn(args), result => {\n const onNextHandler = [];\n const onEndHandler = [];\n for (const afterCb of afterCalls) {\n const hookResult = afterCb({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n });\n if (hookResult) {\n if (hookResult.onNext) {\n onNextHandler.push(hookResult.onNext);\n }\n if (hookResult.onEnd) {\n onEndHandler.push(hookResult.onEnd);\n }\n }\n }\n if (onNextHandler.length && isAsyncIterable(result)) {\n result = mapAsyncIterator(result, (result) => handleMaybePromise(() => iterateAsync(onNextHandler, onNext => onNext({\n args: args,\n result,\n setResult: newResult => (result = newResult),\n })), () => result));\n }\n if (onEndHandler.length && isAsyncIterable(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n if (subscribeErrorHandlers.length && isAsyncIterable(result)) {\n result = errorAsyncIterator(result, err => {\n let error = err;\n for (const handler of subscribeErrorHandlers) {\n handler({\n error,\n setError: err => {\n error = err;\n },\n });\n }\n throw error;\n });\n }\n return result;\n });\n });\n })\n : makeSubscribe(subscribe);\n const useCustomExecute = beforeCallbacks.execute.length;\n const customExecute = useCustomExecute\n ? makeExecute(args => {\n let executeFn = execute;\n let result;\n const afterCalls = [];\n const afterDoneCalls = [];\n const context = args.contextValue || {};\n return handleMaybePromise(() => iterateAsync(beforeCallbacks.execute, (onExecute, endEarly) => onExecute({\n executeFn,\n setExecuteFn: newExecuteFn => {\n executeFn = newExecuteFn;\n },\n setResultAndStopExecution: stopResult => {\n result = stopResult;\n endEarly();\n },\n context,\n extendContext: extension => {\n if (typeof extension === 'object') {\n Object.assign(context, extension);\n }\n else {\n throw new Error(`Invalid context extension provided! Expected \"object\", got: \"${JSON.stringify(extension)}\" (${typeof extension})`);\n }\n },\n args: args,\n }), afterCalls), () => handleMaybePromise(() => result ||\n executeFn({\n ...args,\n contextValue: context,\n }), result => handleMaybePromise(() => iterateAsync(afterCalls, afterCb => afterCb.onExecuteDone?.({\n args: args,\n result,\n setResult: newResult => {\n result = newResult;\n },\n }), afterDoneCalls), () => {\n const onNextHandler = [];\n const onEndHandler = [];\n for (const { onNext, onEnd } of afterDoneCalls) {\n if (onNext) {\n onNextHandler.push(onNext);\n }\n if (onEnd) {\n onEndHandler.push(onEnd);\n }\n }\n if (onNextHandler.length && isAsyncIterable(result)) {\n result = mapAsyncIterator(result, result => handleMaybePromise(() => iterateAsyncVoid(onNextHandler, onNext => onNext({\n args: args,\n result: result,\n setResult: newResult => {\n result = newResult;\n },\n })), () => result));\n }\n if (onEndHandler.length && isAsyncIterable(result)) {\n result = finalAsyncIterator(result, () => {\n for (const onEnd of onEndHandler) {\n onEnd();\n }\n });\n }\n return result;\n })));\n })\n : makeExecute(execute);\n initDone = true;\n // This is done in order to trigger the first schema available, to allow plugins that needs the schema\n // eagerly to have it.\n if (schema) {\n for (const [i, plugin] of plugins.entries()) {\n plugin.onSchemaChange?.({\n schema,\n replaceSchema: modifiedSchema => replaceSchema(modifiedSchema, i),\n });\n }\n }\n return {\n getCurrentSchema() {\n return schema;\n },\n init,\n parse: customParse,\n validate: customValidate,\n execute: customExecute,\n subscribe: customSubscribe,\n contextFactory: customContextFactory,\n instrumentation,\n };\n}\n","import { getInstrumented } from '@envelop/instrumentation';\nimport { createEnvelopOrchestrator } from './orchestrator.js';\nfunction notEmpty(value) {\n return value != null;\n}\nexport function envelop(options) {\n const plugins = options.plugins.filter(notEmpty);\n const orchestrator = createEnvelopOrchestrator({\n plugins,\n });\n const instrumentation = orchestrator.instrumentation;\n const getEnveloped = (context = {}) => {\n const instrumented = getInstrumented({ context });\n const typedOrchestrator = orchestrator;\n instrumented.fn(instrumentation?.init, orchestrator.init)(context);\n return {\n parse: instrumented.fn(instrumentation?.parse, typedOrchestrator.parse(context)),\n validate: instrumented.fn(instrumentation?.validate, typedOrchestrator.validate(context)),\n contextFactory: instrumented.fn(instrumentation?.context, typedOrchestrator.contextFactory(context)),\n execute: instrumented.asyncFn(instrumentation?.execute, typedOrchestrator.execute),\n subscribe: instrumented.asyncFn(instrumentation?.subscribe, typedOrchestrator.subscribe),\n schema: typedOrchestrator.getCurrentSchema(),\n };\n };\n getEnveloped._plugins = plugins;\n return getEnveloped;\n}\n","import { envelopIsIntrospectionSymbol, isIntrospectionOperationString } from '../utils.js';\nconst DEFAULT_OPTIONS = {\n logFn: console.log,\n};\nexport const useLogger = (rawOptions = DEFAULT_OPTIONS) => {\n const options = {\n DEFAULT_OPTIONS,\n ...rawOptions,\n };\n return {\n onParse({ extendContext, params }) {\n if (options.skipIntrospection && isIntrospectionOperationString(params.source)) {\n extendContext({\n [envelopIsIntrospectionSymbol]: true,\n });\n }\n },\n onExecute({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('execute-start', { args });\n return {\n onExecuteDone: ({ result }) => {\n options.logFn('execute-end', { args, result });\n },\n };\n },\n onSubscribe({ args }) {\n if (args.contextValue[envelopIsIntrospectionSymbol]) {\n return;\n }\n options.logFn('subscribe-start', { args });\n return {\n onSubscribeResult: ({ result }) => {\n options.logFn('subscribe-end', { args, result });\n },\n };\n },\n };\n};\n","import { handleStreamOrSingleExecutionResult } from '../utils.js';\nexport const DEFAULT_ERROR_MESSAGE = 'Unexpected error.';\nexport function isGraphQLError(error) {\n return error instanceof Error && error.name === 'GraphQLError';\n}\nexport function isOriginalGraphQLError(error) {\n if (isGraphQLError(error)) {\n if (error.originalError != null) {\n return isOriginalGraphQLError(error.originalError);\n }\n return true;\n }\n return false;\n}\nfunction createSerializableGraphQLError(message, originalError, isDev) {\n const error = new Error(message);\n error.name = 'GraphQLError';\n if (isDev) {\n const extensions = originalError instanceof Error\n ? { message: originalError.message, stack: originalError.stack }\n : { message: String(originalError) };\n Object.defineProperty(error, 'extensions', {\n get() {\n return extensions;\n },\n });\n }\n Object.defineProperty(error, 'toJSON', {\n value() {\n return {\n message: error.message,\n extensions: error.extensions,\n };\n },\n });\n return error;\n}\nexport const createDefaultMaskError = (isDev) => (error, message) => {\n if (isOriginalGraphQLError(error)) {\n return error;\n }\n return createSerializableGraphQLError(message, error, isDev);\n};\nconst isDev = globalThis.process?.env?.NODE_ENV === 'development';\nexport const defaultMaskError = createDefaultMaskError(isDev);\nconst makeHandleResult = (maskError, message) => ({ result, setResult, }) => {\n if (result.errors != null) {\n setResult({ ...result, errors: result.errors.map(error => maskError(error, message)) });\n }\n};\nexport function useMaskedErrors(opts) {\n const maskError = opts?.maskError ?? defaultMaskError;\n const message = opts?.errorMessage || DEFAULT_ERROR_MESSAGE;\n const handleResult = makeHandleResult(maskError, message);\n return {\n onPluginInit(context) {\n context.registerContextErrorHandler(({ error, setError }) => {\n setError(maskError(error, message));\n });\n },\n onExecute() {\n return {\n onExecuteDone(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n };\n },\n onSubscribe() {\n return {\n onSubscribeResult(payload) {\n return handleStreamOrSingleExecutionResult(payload, handleResult);\n },\n onSubscribeError({ error, setError }) {\n setError(maskError(error, message));\n },\n };\n },\n };\n}\n","import { handleMaybePromise } from '@whatwg-node/promise-helpers';\nexport const useExtendContext = (contextFactory) => ({\n onContextBuilding({ context, extendContext }) {\n return handleMaybePromise(() => contextFactory(context), result => extendContext(result));\n },\n});\n","export const useEngine = (engine) => {\n return {\n onExecute: ({ setExecuteFn }) => {\n if (engine.execute) {\n setExecuteFn(engine.execute);\n }\n },\n onParse: ({ setParseFn }) => {\n if (engine.parse) {\n setParseFn(engine.parse);\n }\n },\n onValidate: ({ setValidationFn, addValidationRule }) => {\n if (engine.validate) {\n setValidationFn(engine.validate);\n }\n engine.specifiedRules?.map(addValidationRule);\n },\n onSubscribe: ({ setSubscribeFn }) => {\n if (engine.subscribe) {\n setSubscribeFn(engine.subscribe);\n }\n },\n };\n};\n","import { GraphQLError } from 'graphql';\nexport class PothosError extends GraphQLError {\n constructor(message, options) {\n super(message, options);\n this.name = \"PothosError\";\n }\n}\nexport class PothosSchemaError extends PothosError {\n constructor(message, options) {\n super(message, options);\n this.name = \"PothosSchemaError\";\n }\n}\nexport class PothosValidationError extends PothosError {\n constructor(message, options) {\n super(message, options);\n this.name = \"PothosValidationError\";\n }\n}\n//# sourceMappingURL=errors.js.map\n","export const outputShapeKey = Symbol.for(\"Pothos.outputShapeKey\");\nexport const parentShapeKey = Symbol.for(\"Pothos.parentShapeKey\");\nexport const abstractReturnShapeKey = Symbol.for(\"Pothos.abstractReturnShapeKey\");\nexport const inputShapeKey = Symbol.for(\"Pothos.inputShapeKey\");\nexport const inputFieldShapeKey = Symbol.for(\"Pothos.inputFieldShapeKey\");\nexport const outputFieldShapeKey = Symbol.for(\"Pothos.outputFieldShapeKey\");\nexport const typeBrandKey = Symbol.for(\"Pothos.typeBrandKey\");\n//# sourceMappingURL=type-params.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { PothosSchemaError } from '../errors.js';\nexport class BaseTypeRef {\n toString() {\n return `${this.kind}Ref<${this.name}>`;\n }\n associate(ref) {\n if (this.association && typeof this.associate !== \"string\") {\n throw new PothosSchemaError(`${this} is already associated with ${this.association}`);\n }\n this.association = ref;\n }\n onConfig(cb) {\n this.configCallbacks.add(cb);\n if (this.currentConfig) {\n cb(this.currentConfig);\n }\n }\n updateConfig(config) {\n if (typeof config === \"function\") {\n this.onceOnConfig((oldConfig) => {\n this.updateConfig(config(oldConfig));\n });\n return;\n }\n this.currentConfig = config;\n for (const cb of this.configCallbacks) {\n if (this.currentConfig !== config) {\n break;\n }\n cb(config);\n }\n }\n prepareForBuild() {\n this.preparedForBuild = true;\n }\n onceOnConfig(cb) {\n const callback = (config) => {\n this.configCallbacks.delete(callback);\n cb(config);\n };\n this.onConfig(callback);\n }\n constructor(kind, name, config) {\n _define_property(this, \"kind\", void 0);\n _define_property(this, \"name\", void 0);\n _define_property(this, \"association\", null);\n _define_property(this, \"configCallbacks\", new Set());\n _define_property(this, \"preparedForBuild\", false);\n _define_property(this, \"currentConfig\", void 0);\n this.kind = kind;\n this.name = name;\n this.currentConfig = config !== null && config !== void 0 ? config : null;\n }\n}\n//# sourceMappingURL=base.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputShapeKey } from '../types/index.js';\nimport { BaseTypeRef } from './base.js';\nlet _inputShapeKey = inputShapeKey;\nexport class InputListRef extends BaseTypeRef {\n constructor(listType, required) {\n super(\"InputList\", `InputList<${String(listType)}>`), _define_property(this, \"kind\", \"InputList\"), _define_property(this, _inputShapeKey, void 0), _define_property(this, \"$inferInput\", void 0), _define_property(this, \"listType\", void 0), _define_property(this, \"required\", void 0);\n this.listType = listType;\n this.required = required;\n }\n}\n//# sourceMappingURL=input-list.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { outputShapeKey, parentShapeKey } from '../types/index.js';\nimport { BaseTypeRef } from './base.js';\nlet _outputShapeKey = outputShapeKey, _parentShapeKey = parentShapeKey;\nexport class ListRef extends BaseTypeRef {\n constructor(listType, nullable) {\n super(\"List\", `List<${String(listType)}>`), _define_property(this, \"kind\", \"List\"), _define_property(this, \"$inferType\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _parentShapeKey, void 0), _define_property(this, \"listType\", void 0), _define_property(this, \"nullable\", void 0);\n this.listType = listType;\n this.nullable = nullable;\n }\n}\n//# sourceMappingURL=list.js.map\n","export const contextCacheSymbol = Symbol.for(\"Pothos.contextCache\");\nexport function initContextCache() {\n return {\n [contextCacheSymbol]: {}\n };\n}\nexport function createContextCache(create) {\n const cache = new WeakMap();\n const getOrCreate = (context, ...args) => {\n const cacheKey = context[contextCacheSymbol] || context;\n if (cache.has(cacheKey)) {\n return cache.get(cacheKey);\n }\n const entry = create(context, ...args);\n cache.set(cacheKey, entry);\n return entry;\n };\n getOrCreate.delete = (context) => {\n const cacheKey = context[contextCacheSymbol] || context;\n cache.delete(cacheKey);\n };\n return getOrCreate;\n}\n//# sourceMappingURL=context-cache.js.map\n","export function normalizeEnumValues(values) {\n const result = {};\n if (Array.isArray(values)) {\n for (const key of values) {\n result[String(key)] = {\n pothosOptions: {}\n };\n }\n }\n else {\n for (const [key, value] of Object.entries(values)) {\n if (value && typeof value === \"object\") {\n result[key] = {\n ...value,\n pothosOptions: value\n };\n }\n else if (typeof value === \"string\") {\n result[value] = {\n pothosOptions: {}\n };\n }\n }\n }\n return result;\n}\nexport function valuesFromEnum(Enum, values) {\n const result = {};\n for (const key of Object.keys(Enum).filter((key) => typeof Enum[Enum[key]] !== \"number\")) {\n result[key] = {\n value: Enum[key],\n pothosOptions: {},\n ...values === null || values === void 0 ? void 0 : values[key]\n };\n }\n return result;\n}\n//# sourceMappingURL=enums.js.map\n","import { PothosSchemaError } from '../errors.js';\nimport { BaseTypeRef } from '../refs/base.js';\nimport { InputListRef } from '../refs/input-list.js';\nimport { ListRef } from '../refs/list.js';\nexport function unwrapOutputFieldType(type) {\n if (type.kind === \"List\") {\n return unwrapOutputFieldType(type.type);\n }\n return type.ref;\n}\nexport function typeFromParam(param, configStore, nullableOption) {\n const itemNullable = typeof nullableOption === \"object\" ? nullableOption.items : false;\n const nullable = typeof nullableOption === \"object\" ? nullableOption.list : !!nullableOption;\n if (Array.isArray(param)) {\n return {\n kind: \"List\",\n type: typeFromParam(param[0], configStore, itemNullable),\n nullable\n };\n }\n if (param instanceof ListRef) {\n return {\n kind: \"List\",\n type: typeFromParam(param.listType, configStore, param.nullable),\n nullable\n };\n }\n const ref = configStore.getOutputTypeRef(param);\n const kind = ref instanceof BaseTypeRef ? ref.kind : configStore.getTypeConfig(ref).graphqlKind;\n const name = ref instanceof BaseTypeRef ? ref.name : configStore.getTypeConfig(ref).name;\n if (kind !== \"InputObject\" && kind !== \"List\" && kind !== \"InputList\") {\n return {\n kind,\n ref,\n nullable\n };\n }\n throw new PothosSchemaError(`Expected input param ${name} to be an output type but got ${kind}`);\n}\nexport function unwrapInputFieldType(type) {\n if (type.kind === \"List\") {\n return unwrapInputFieldType(type.type);\n }\n return type.ref;\n}\nexport function inputTypeFromParam(param, configStore, requiredOption) {\n const itemRequired = typeof requiredOption === \"object\" ? requiredOption.items : true;\n const required = typeof requiredOption === \"object\" ? requiredOption.list : !!requiredOption;\n if (Array.isArray(param)) {\n return {\n kind: \"List\",\n type: inputTypeFromParam(param[0], configStore, itemRequired),\n required\n };\n }\n if (param instanceof InputListRef) {\n return {\n kind: \"List\",\n type: inputTypeFromParam(param.listType, configStore, param.required),\n required\n };\n }\n const ref = configStore.getInputTypeRef(param);\n const kind = ref instanceof BaseTypeRef ? ref.kind : configStore.getTypeConfig(ref).graphqlKind;\n const name = ref instanceof BaseTypeRef ? ref.name : configStore.getTypeConfig(ref).name;\n if (kind === \"InputObject\" || kind === \"Enum\" || kind === \"Scalar\") {\n return {\n kind,\n ref,\n required\n };\n }\n throw new PothosSchemaError(`Expected input param ${name} to be an InputObject, Enum, or Scalar but got ${kind}`);\n}\n//# sourceMappingURL=params.js.map\n","import { getArgumentValues } from 'graphql';\nimport { PothosSchemaError, PothosValidationError } from '../errors.js';\nimport { InputListRef } from '../refs/input-list.js';\nimport { ListRef } from '../refs/list.js';\nimport { typeBrandKey } from '../types/index.js';\nexport * from './base64.js';\nexport * from './context-cache.js';\nexport * from './enums.js';\nexport * from './input.js';\nexport * from './params.js';\nexport * from './sort-classes.js';\nexport function assertNever(value) {\n throw new TypeError(`Unexpected value: ${value}`);\n}\nexport function assertArray(value) {\n if (!Array.isArray(value)) {\n throw new PothosValidationError(\"List resolvers must return arrays\");\n }\n return true;\n}\nexport function isThenable(value) {\n return !!(value && (typeof value === \"object\" || typeof value === \"function\") && typeof value.then === \"function\");\n}\nexport function verifyRef(ref) {\n if (ref === undefined) {\n throw new PothosSchemaError(`Received undefined as a type ref.\n\nThis is often caused by a circular import\nIf this ref is imported from a file that re-exports it (like index.ts)\nyou may be able to resolve this by importing it directly from the file that defines it.\n`);\n }\n}\nexport function verifyInterfaces(interfaces) {\n if (!interfaces || typeof interfaces === \"function\") {\n return;\n }\n if (!Array.isArray(interfaces)) {\n throw new PothosSchemaError(\"interfaces must be an array or function\");\n }\n for (const iface of interfaces) {\n if (iface === undefined) {\n throw new PothosSchemaError(`Received undefined in list of interfaces.\n\nThis is often caused by a circular import\nIf this ref is imported from a file that re-exports it (like index.ts)\nyou may be able to resolve this by importing it directly from the file that defines it.\n\nAlternatively you can define interfaces with a function that will be lazily evaluated,\nwhich may resolver issues with circular dependencies:\n\nExample:\nbuilder.objectType('MyObject', {\n interface: () => [Interface1, Interface2],\n ...\n});\n`);\n }\n }\n}\nexport function brandWithType(val, type) {\n if (typeof val !== \"object\" || val === null) {\n return;\n }\n Object.defineProperty(val, typeBrandKey, {\n enumerable: false,\n value: type\n });\n}\nexport function getTypeBrand(val) {\n if (typeof val === \"object\" && val !== null && typeBrandKey in val) {\n return val[typeBrandKey];\n }\n return null;\n}\nexport function unwrapListParam(param) {\n if (Array.isArray(param)) {\n return unwrapListParam(param[0]);\n }\n if (param instanceof ListRef || param instanceof InputListRef) {\n return unwrapListParam(param.listType);\n }\n return param;\n}\nexport function unwrapOutputListParam(param) {\n if (Array.isArray(param)) {\n return unwrapOutputListParam(param[0]);\n }\n if (param instanceof ListRef) {\n return unwrapOutputListParam(param.listType);\n }\n return param;\n}\nexport function unwrapInputListParam(param) {\n if (Array.isArray(param)) {\n return unwrapInputListParam(param[0]);\n }\n if (param instanceof InputListRef) {\n return unwrapInputListParam(param.listType);\n }\n return param;\n}\n/**\n * Helper for allowing plugins to fulfill the return of the `next` resolver, without paying the cost of the\n * Promise if not required.\n */ export function completeValue(valOrPromise, onSuccess, onError) {\n if (isThenable(valOrPromise)) {\n return Promise.resolve(valOrPromise).then(onSuccess, onError);\n }\n // No need to handle onError, this should just be a try/catch inside the `onSuccess` block\n const result = onSuccess(valOrPromise);\n // If the result of the synchronous call is a promise like, convert to a promise\n // for consistency\n if (isThenable(result)) {\n return Promise.resolve(result);\n }\n return result;\n}\nexport function getMappedArgumentValues(def, node, context, info) {\n var _def_extensions;\n const args = getArgumentValues(def, node, info.variableValues);\n const mappers = (_def_extensions = def.extensions) === null || _def_extensions === void 0 ? void 0 : _def_extensions.pothosArgMappers;\n if (mappers && mappers.length > 0) {\n return reduceMaybeAsync(mappers, args, (acc, argMapper) => argMapper(acc, context, info));\n }\n return args;\n}\nexport function reduceMaybeAsync(items, initialValue, fn) {\n function next(value, i) {\n if (i === items.length) {\n return value;\n }\n return completeValue(fn(value, items[i], i), (result) => {\n return result === null ? null : next(result, i + 1);\n });\n }\n return next(initialValue, 0);\n}\n//# sourceMappingURL=index.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { PothosError } from '../errors.js';\nimport { createContextCache } from '../utils/context-cache.js';\nconst runCache = new WeakMap();\nexport class BasePlugin {\n /**\n * Called for each type defined with the SchemaBuilder\n * @param {PothosTypeConfig} typeConfig - Config object describing the added type\n * @return {PothosTypeConfig} Original or updated `typeConfig`\n */ onTypeConfig(typeConfig) {\n return typeConfig;\n }\n /**\n * Called for each field on an Object or Interface type\n * @param {PothosOutputFieldConfig} fieldConfig - Config object describing the added field\n * @return {PothosOutputFieldConfig} Original or updated `fieldConfig`\n */ onOutputFieldConfig(fieldConfig) {\n return fieldConfig;\n }\n /**\n * Called for each argument or field on an Input object defined in your schema\n * @param {PothosInputFieldConfig} fieldConfig - Config object describing the added field\n * @return {PothosInputFieldConfig} Original or updated `fieldConfig`\n */ onInputFieldConfig(fieldConfig) {\n return fieldConfig;\n }\n /**\n * Called for each Enum value defined in your schema\n * @param {PothosEnumValueConfig} valueConfig - Config object describing the enum value\n * @return {PothosEnumValueConfig} Original or updated `valueConfig`\n */ onEnumValueConfig(valueConfig) {\n return valueConfig;\n }\n /**\n * Called before builder.toSchema() schema is called\n */ beforeBuild() { }\n /**\n * Called after all fields and types have been built during `builder.toSchema()`\n * @param {GraphQLSchema} schema - the generated schema\n * @return {PothosEnumValueConfig} Original or updated `schema`\n */ afterBuild(schema) {\n return schema;\n }\n /**\n * Called with the resolver for each field in the schema\n * @param {GraphQLFieldResolver} resolve - the resolve function\n * @param {PothosOutputFieldConfig} fieldConfig - the config object for the field associated with this resolve function\n * @return {GraphQLFieldResolver} - Either the original, or a new resolver function to use for this field\n */ wrapResolve(resolver, _fieldConfig) {\n return resolver;\n }\n /**\n * Called with the subscribe for each field on the Subscription type\n * @param {GraphQLFieldResolver} subscribe - the subscribe function\n * @param {PothosOutputFieldConfig} fieldConfig - the config object for the field associated with this subscribe function\n * @return {GraphQLFieldResolver} - Either the original, or a new subscribe function to use for this field\n */ wrapSubscribe(subscribe, _fieldConfig) {\n return subscribe;\n }\n /**\n * Called with resolve or subscribe functions, but wraps outside of argMappers so arg mapping errors can be handled\n * @param {GraphQLFieldResolver} resolve - the resolve function\n * @param {PothosOutputFieldConfig} fieldConfig - the config object for the field associated with this resolve function\n * @return {GraphQLFieldResolver} - Either the original, or a new resolver function to use for this field\n */ wrapArgMappers(resolver, _fieldConfig) {\n return resolver;\n }\n /**\n * Called with the resolveType for each Interface or Union type\n * @param {GraphQLTypeResolver} resolveType - the resolveType function\n * @param {PothosInterfaceTypeConfig | PothosUnionTypeConfig} typeConfig - the config object for the Interface or Union type\n * @return {GraphQLTypeResolver} - Either the original, or a new resolveType function to use for this field\n */ wrapResolveType(resolveType, _typeConfig) {\n return resolveType;\n }\n /**\n * Called with the isTypeOf for each Object type\n * @param {GraphQLTypeResolver} resolveType - the resolveType function\n * @param {PothosObjectTypeConfig} typeConfig - the config object for the Interface or Union type\n * @return {GraphQLTypeResolver} - Either the original, or a new resolveType function to use for this field\n */ wrapIsTypeOf(isTypeOf, _typeConfig) {\n return isTypeOf;\n }\n runUnique(key, cb) {\n if (!runCache.has(this.builder)) {\n runCache.set(this.builder, new Map());\n }\n if (!runCache.get(this.builder).has(key)) {\n const result = cb();\n runCache.get(this.builder).set(key, result);\n return result;\n }\n return runCache.get(this.builder).get(key);\n }\n /**\n * Creates a data object unique to the current request for use by this plugin\n * @param {Types['Context']} context - the context object for the current request\n * @return {object} - The data object for the current request\n */ createRequestData(_context) {\n throw new PothosError(\"createRequestData not implemented\");\n }\n /**\n * Returns a data object for the current request. requires `createRequestData` to be implemented\n * @param {Types['Context']} context - the context object for the current request\n * @return {object} - The data object for the current request\n */ requestData(context) {\n return this.requestDataMap(context);\n }\n constructor(buildCache, name) {\n _define_property(this, \"name\", void 0);\n _define_property(this, \"builder\", void 0);\n _define_property(this, \"buildCache\", void 0);\n _define_property(this, \"options\", void 0);\n _define_property(this, \"requestDataMap\", createContextCache((ctx) => this.createRequestData(ctx)));\n this.name = name;\n this.builder = buildCache.builder;\n this.buildCache = buildCache;\n this.options = buildCache.options;\n }\n}\n//# sourceMappingURL=plugin.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { completeValue, reduceMaybeAsync } from '../utils/index.js';\nimport { BasePlugin } from './plugin.js';\nexport class MergedPlugins extends BasePlugin {\n onTypeConfig(typeConfig) {\n return this.plugins.reduceRight((config, plugin) => config === null ? config : plugin.onTypeConfig(config), typeConfig);\n }\n onInputFieldConfig(fieldConfig) {\n return this.plugins.reduceRight((config, plugin) => config === null ? config : plugin.onInputFieldConfig(config), fieldConfig);\n }\n onOutputFieldConfig(fieldConfig) {\n return this.plugins.reduceRight((config, plugin) => config === null ? config : plugin.onOutputFieldConfig(config), fieldConfig);\n }\n onEnumValueConfig(valueConfig) {\n return this.plugins.reduceRight((config, plugin) => config === null ? config : plugin.onEnumValueConfig(config), valueConfig);\n }\n beforeBuild() {\n for (const plugin of this.plugins) {\n plugin.beforeBuild();\n }\n }\n afterBuild(schema) {\n return this.plugins.reduceRight((nextSchema, plugin) => plugin.afterBuild(nextSchema), schema);\n }\n wrapResolve(resolve, fieldConfig) {\n const wrapped = this.plugins.reduceRight((nextResolve, plugin) => plugin.wrapResolve(nextResolve, fieldConfig), resolve);\n if (!fieldConfig.argMappers.length) {\n return this.wrapArgMappers(wrapped, fieldConfig);\n }\n const argMappers = fieldConfig.argMappers;\n return this.wrapArgMappers((parent, args, context, info) => {\n const mappedArgs = reduceMaybeAsync(argMappers, args, (acc, argMapper) => {\n return argMapper(acc, context, info);\n });\n return completeValue(mappedArgs, (mappedArgs) => wrapped(parent, mappedArgs, context, info));\n }, fieldConfig);\n }\n wrapSubscribe(subscribe, fieldConfig) {\n const wrapped = this.plugins.reduceRight((nextSubscribe, plugin) => plugin.wrapSubscribe(nextSubscribe, fieldConfig), subscribe);\n if (!wrapped || !fieldConfig.argMappers.length) {\n return this.wrapArgMappers(wrapped, fieldConfig);\n }\n const argMappers = fieldConfig.argMappers;\n return this.wrapArgMappers((parent, args, context, info) => {\n const mappedArgs = reduceMaybeAsync(argMappers, args, (acc, argMapper) => {\n return argMapper(acc, context, info);\n });\n return completeValue(mappedArgs, (mappedArgs) => wrapped(parent, mappedArgs, context, info));\n }, fieldConfig);\n }\n wrapArgMappers(resolver, fieldConfig) {\n return this.plugins.reduceRight((nextResolveType, plugin) => plugin.wrapArgMappers(nextResolveType, fieldConfig), resolver);\n }\n wrapResolveType(resolveType, typeConfig) {\n return this.plugins.reduceRight((nextResolveType, plugin) => plugin.wrapResolveType(nextResolveType, typeConfig), resolveType);\n }\n wrapIsTypeOf(isTypeOf, typeConfig) {\n return this.plugins.reduceRight((nextResolveType, plugin) => plugin.wrapIsTypeOf(nextResolveType, typeConfig), isTypeOf);\n }\n constructor(buildCache, plugins) {\n super(buildCache, \"PothosMergedPlugin\"), _define_property(this, \"plugins\", void 0);\n this.plugins = plugins;\n }\n}\n//# sourceMappingURL=merge-plugins.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputShapeKey, outputShapeKey, parentShapeKey } from '../types/index.js';\nimport { BaseTypeRef } from './base.js';\nlet _outputShapeKey = outputShapeKey, _parentShapeKey = parentShapeKey, _inputShapeKey = inputShapeKey;\nexport class ScalarRef extends BaseTypeRef {\n constructor(name, config) {\n super(\"Scalar\", name, config), _define_property(this, \"kind\", \"Scalar\"), _define_property(this, \"$inferType\", void 0), _define_property(this, \"$inferInput\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _parentShapeKey, void 0), _define_property(this, _inputShapeKey, void 0);\n }\n}\n//# sourceMappingURL=scalar.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { ScalarRef } from './scalar.js';\nexport class BuiltinScalarRef extends ScalarRef {\n constructor(type) {\n super(type.name), _define_property(this, \"type\", void 0);\n this.type = type;\n }\n}\n//# sourceMappingURL=builtin-scalar.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { defaultFieldResolver, defaultTypeResolver, GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLID, GraphQLInputObjectType, GraphQLInt, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLScalarType, GraphQLString, GraphQLUnionType } from 'graphql';\nimport { PothosError, PothosSchemaError } from './errors.js';\nimport { MergedPlugins } from './plugins/index.js';\nimport { BuiltinScalarRef } from './refs/builtin-scalar.js';\nimport { typeBrandKey } from './types/index.js';\nimport { assertNever, getTypeBrand, isThenable } from './utils/index.js';\nexport class BuildCache {\n getTypeConfig(ref, kind) {\n const baseConfig = this.configStore.getTypeConfig(ref, kind);\n if (!this.typeConfigs.has(baseConfig.name)) {\n this.typeConfigs.set(baseConfig.name, this.plugin.onTypeConfig(baseConfig));\n }\n const typeConfig = this.typeConfigs.get(baseConfig.name);\n return typeConfig;\n }\n getInputTypeFieldConfigs(ref) {\n const typeConfig = this.getTypeConfig(ref, \"InputObject\");\n const builtType = this.types.get(typeConfig.name);\n if (!builtType) {\n throw new PothosSchemaError(`Input type ${typeConfig.name} has not been built yet`);\n }\n const fields = builtType.getFields();\n const fieldConfigs = {};\n for (const fieldName of Object.keys(fields)) {\n var _fields_fieldName_extensions;\n fieldConfigs[fieldName] = (_fields_fieldName_extensions = fields[fieldName].extensions) === null || _fields_fieldName_extensions === void 0 ? void 0 : _fields_fieldName_extensions.pothosConfig;\n }\n return fieldConfigs;\n }\n getImplementers(iface) {\n if (this.implementers.has(iface.name)) {\n return this.implementers.get(iface.name);\n }\n const implementers = [\n ...this.configStore.typeConfigs.values()\n ].filter((config) => config.kind === \"Object\" && config.interfaces.find((i) => this.configStore.getTypeConfig(i).name === iface.name));\n this.implementers.set(iface.name, implementers);\n return implementers;\n }\n buildAll() {\n this.configStore.prepareForBuild();\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"Enum\" || config.kind === \"Scalar\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"InputObject\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const type of this.types.values()) {\n if (type instanceof GraphQLInputObjectType) {\n type.getFields();\n }\n }\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"Interface\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"Object\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"Union\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const config of this.configStore.typeConfigs.values()) {\n if (config.kind === \"Query\" || config.kind === \"Mutation\" || config.kind === \"Subscription\") {\n this.buildTypeFromConfig(config);\n }\n }\n for (const type of this.types.values()) {\n if (type instanceof GraphQLObjectType || type instanceof GraphQLInterfaceType) {\n type.getFields();\n }\n else if (type instanceof GraphQLUnionType) {\n type.getTypes();\n }\n }\n }\n buildTypeFromConfig(baseConfig) {\n const config = this.getTypeConfig(baseConfig.name);\n const { name } = config;\n this.typeConfigs.set(name, config);\n switch (config.kind) {\n case \"Enum\":\n this.addType(name, this.buildEnum(config));\n break;\n case \"InputObject\":\n this.addType(name, this.buildInputObject(config));\n break;\n case \"Interface\":\n this.addType(name, this.buildInterface(config));\n break;\n case \"Scalar\":\n this.addType(name, this.buildScalar(config));\n break;\n case \"Union\":\n this.addType(name, this.buildUnion(config));\n break;\n case \"Object\":\n case \"Query\":\n case \"Mutation\":\n case \"Subscription\":\n this.addType(name, this.buildObject(config));\n break;\n default:\n assertNever(config);\n }\n }\n addType(ref, type) {\n if (this.types.has(ref)) {\n throw new PothosSchemaError(`reference or name has already been used to create another type (${type.name})`);\n }\n this.types.set(ref, type);\n }\n buildOutputTypeParam(type) {\n if (type.kind === \"List\") {\n if (type.nullable) {\n return new GraphQLList(this.buildOutputTypeParam(type.type));\n }\n return new GraphQLNonNull(new GraphQLList(this.buildOutputTypeParam(type.type)));\n }\n if (type.nullable) {\n return this.getOutputType(type.ref);\n }\n return new GraphQLNonNull(this.getOutputType(type.ref));\n }\n buildInputTypeParam(type) {\n if (type.kind === \"List\") {\n if (type.required) {\n return new GraphQLNonNull(new GraphQLList(this.buildInputTypeParam(type.type)));\n }\n return new GraphQLList(this.buildInputTypeParam(type.type));\n }\n if (type.required) {\n return new GraphQLNonNull(this.getInputType(type.ref));\n }\n return this.getInputType(type.ref);\n }\n buildFields(fields) {\n const built = {};\n for (const [fieldName, originalConfig] of fields) {\n if (!this.outputFieldConfigs.has(originalConfig)) {\n this.outputFieldConfigs.set(originalConfig, this.plugin.onOutputFieldConfig(originalConfig));\n }\n const updatedConfig = this.outputFieldConfigs.get(originalConfig);\n if (!updatedConfig) {\n continue;\n }\n const config = {\n ...updatedConfig\n };\n const argMap = new Map();\n for (const argName of Object.keys(config.args)) {\n argMap.set(argName, config.args[argName]);\n }\n const args = this.buildInputFields(argMap);\n const argConfigs = {};\n for (const argName of Object.keys(config.args)) {\n argConfigs[argName] = this.inputFieldConfigs.get(config.args[argName]);\n }\n config.args = argConfigs;\n var _config_resolve;\n const resolve = this.plugin.wrapResolve((_config_resolve = config.resolve) !== null && _config_resolve !== void 0 ? _config_resolve : defaultFieldResolver, config);\n const subscribe = this.plugin.wrapSubscribe(config.subscribe, config);\n var _config_resolve1;\n built[fieldName] = {\n ...config,\n type: this.buildOutputTypeParam(config.type),\n args,\n extensions: {\n ...config.extensions,\n pothosResolveWrapped: resolve !== ((_config_resolve1 = config.resolve) !== null && _config_resolve1 !== void 0 ? _config_resolve1 : defaultFieldResolver),\n pothosSubscribeWrapped: subscribe !== config.subscribe,\n pothosOptions: config.pothosOptions,\n pothosConfig: config,\n pothosArgMappers: config.argMappers\n },\n resolve: resolve === defaultFieldResolver ? undefined : resolve,\n subscribe\n };\n }\n return built;\n }\n buildInputFields(fields) {\n const built = {};\n for (const [fieldName, originalConfig] of fields) {\n if (!this.inputFieldConfigs.has(originalConfig)) {\n this.inputFieldConfigs.set(originalConfig, this.plugin.onInputFieldConfig(originalConfig));\n }\n const config = this.inputFieldConfigs.get(originalConfig);\n if (config) {\n built[fieldName] = {\n ...config,\n type: this.buildInputTypeParam(config.type),\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n }\n };\n }\n }\n return built;\n }\n getInterfaceFields(type) {\n const interfaceFields = type.getInterfaces() // biome-ignore lint/performance/noAccumulatingSpread: this is fine\n .reduce((all, iface) => Object.assign(all, this.getFields(iface)), {});\n const configs = this.configStore.getFields(type.name, \"Interface\");\n const fields = this.buildFields(configs);\n return {\n ...interfaceFields,\n ...fields\n };\n }\n getObjectFields(type) {\n const interfaceFields = type.getInterfaces() // biome-ignore lint/performance/noAccumulatingSpread: this is fine\n .reduce((all, iface) => Object.assign(all, this.getFields(iface)), {});\n const objectFields = this.buildFields(this.configStore.getFields(type.name, \"Object\"));\n return {\n ...interfaceFields,\n ...objectFields\n };\n }\n getRootFields(type) {\n return this.buildFields(this.configStore.getFields(type.name, \"Object\"));\n }\n getFields(type) {\n if (type instanceof GraphQLObjectType) {\n const config = this.configStore.getTypeConfig(type.name);\n if (config.kind === \"Query\" || config.kind === \"Mutation\" || config.kind === \"Subscription\") {\n return this.getRootFields(type);\n }\n return this.getObjectFields(type);\n }\n if (type instanceof GraphQLInterfaceType) {\n return this.getInterfaceFields(type);\n }\n throw new PothosSchemaError(`Type ${type.name} does not have fields to resolve`);\n }\n getInputFields(type) {\n return this.buildInputFields(this.configStore.getFields(type.name, \"InputObject\"));\n }\n getType(ref) {\n if (ref instanceof BuiltinScalarRef) {\n return ref.type;\n }\n const typeConfig = this.configStore.getTypeConfig(ref);\n const type = this.types.get(typeConfig.name);\n if (!type) {\n this.buildTypeFromConfig(typeConfig);\n return this.types.get(typeConfig.name);\n }\n return type;\n }\n getOutputType(ref) {\n const type = this.getType(ref);\n if (type instanceof GraphQLInputObjectType) {\n throw new PothosSchemaError(`Expected ${String(ref)} to be an output type but it was defined as an InputObject`);\n }\n return type;\n }\n getInputType(ref) {\n const type = this.getType(ref);\n if (!type) {\n throw new PothosSchemaError(`Missing implementation of for type ${String(ref)}`);\n }\n if (type instanceof GraphQLObjectType) {\n throw new PothosSchemaError(`Expected ${type.name} to be an input type but it was defined as a GraphQLObjectType`);\n }\n if (type instanceof GraphQLInterfaceType) {\n throw new PothosSchemaError(`Expected ${type.name} to be an input type but it was defined as a GraphQLInterfaceType`);\n }\n if (type instanceof GraphQLUnionType) {\n throw new PothosSchemaError(`Expected ${String(ref)} to be an input type but it was defined as an GraphQLUnionType`);\n }\n return type;\n }\n getTypeOfKind(ref, kind) {\n const type = this.getType(ref);\n switch (kind) {\n case \"Object\":\n case \"Query\":\n case \"Mutation\":\n case \"Subscription\":\n if (type instanceof GraphQLObjectType) {\n return type;\n }\n break;\n case \"Interface\":\n if (type instanceof GraphQLInterfaceType) {\n return type;\n }\n break;\n case \"Union\":\n if (type instanceof GraphQLUnionType) {\n return type;\n }\n break;\n case \"Enum\":\n if (type instanceof GraphQLEnumType) {\n return type;\n }\n break;\n case \"Scalar\":\n if (type instanceof GraphQLScalarType) {\n return type;\n }\n break;\n case \"InputObject\":\n if (type instanceof GraphQLScalarType) {\n return type;\n }\n break;\n default:\n break;\n }\n throw new PothosSchemaError(`Expected ${String(ref)} to be of type ${kind}`);\n }\n buildObject(config) {\n var _config_isTypeOf;\n const type = new GraphQLObjectType({\n ...config,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n },\n fields: () => this.getFields(type),\n isTypeOf: config.kind === \"Object\" ? this.plugin.wrapIsTypeOf((_config_isTypeOf = config.isTypeOf) !== null && _config_isTypeOf !== void 0 ? _config_isTypeOf : undefined, config) : undefined,\n interfaces: config.kind === \"Object\" ? () => config.interfaces.map((iface) => this.getTypeOfKind(iface, \"Interface\")) : undefined\n });\n return type;\n }\n buildInterface(config) {\n const resolveType = (parent, context, info) => {\n const typeBrand = getTypeBrand(parent);\n if (typeBrand) {\n if (typeof typeBrand === \"string\") {\n return typeBrand;\n }\n return this.getTypeConfig(typeBrand).name;\n }\n var _config_resolveType;\n const resolver = (_config_resolveType = config.resolveType) !== null && _config_resolveType !== void 0 ? _config_resolveType : defaultTypeResolver;\n return resolver(parent, context, info, type);\n };\n const type = new GraphQLInterfaceType({\n ...config,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n },\n interfaces: () => config.interfaces.map((iface) => this.getTypeOfKind(iface, \"Interface\")),\n fields: () => this.getFields(type),\n resolveType: this.plugin.wrapResolveType(resolveType, config)\n });\n return type;\n }\n buildUnion(config) {\n const resolveType = (parent, context, info, type) => {\n if (typeof parent === \"object\" && parent !== null && typeBrandKey in parent) {\n const typeBrand = parent[typeBrandKey];\n if (typeof typeBrand === \"string\") {\n return typeBrand;\n }\n return this.getTypeConfig(typeBrand).name;\n }\n if (!config.resolveType) {\n return defaultTypeResolver(parent, context, info, type);\n }\n const resultOrPromise = config.resolveType(parent, context, info, type);\n const getResult = (result) => {\n if (typeof result === \"string\" || !result) {\n return result;\n }\n if (result instanceof GraphQLObjectType) {\n return result.name;\n }\n try {\n const typeConfig = this.configStore.getTypeConfig(result);\n return typeConfig.name;\n }\n catch {\n // ignore\n }\n return result;\n };\n return isThenable(resultOrPromise) ? resultOrPromise.then(getResult) : getResult(resultOrPromise);\n };\n return new GraphQLUnionType({\n ...config,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n },\n types: () => config.types.map((member) => this.getTypeOfKind(member, \"Object\")),\n resolveType: this.plugin.wrapResolveType(resolveType, config)\n });\n }\n buildInputObject(config) {\n const type = new GraphQLInputObjectType({\n ...config,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n },\n fields: () => this.getInputFields(type)\n });\n return type;\n }\n buildScalar(config) {\n if (config.name === \"ID\") {\n return GraphQLID;\n }\n if (config.name === \"Int\") {\n return GraphQLInt;\n }\n if (config.name === \"Float\") {\n return GraphQLFloat;\n }\n if (config.name === \"Boolean\") {\n return GraphQLBoolean;\n }\n if (config.name === \"String\") {\n return GraphQLString;\n }\n return new GraphQLScalarType({\n ...config,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n }\n });\n }\n buildEnum(config) {\n const values = {};\n const configValues = typeof config.values === \"function\" ? config.values() : config.values;\n for (const key of Object.keys(config.values)) {\n const original = configValues[key];\n if (!this.enumValueConfigs.has(original)) {\n this.enumValueConfigs.set(original, this.plugin.onEnumValueConfig(original));\n }\n const valueConfig = this.enumValueConfigs.get(original);\n if (valueConfig) {\n values[key] = this.enumValueConfigs.get(original);\n }\n }\n return new GraphQLEnumType({\n ...config,\n values,\n extensions: {\n ...config.extensions,\n pothosOptions: config.pothosOptions,\n pothosConfig: config\n }\n });\n }\n constructor(builder, options) {\n _define_property(this, \"types\", new Map());\n _define_property(this, \"builder\", void 0);\n _define_property(this, \"plugin\", void 0);\n _define_property(this, \"options\", void 0);\n _define_property(this, \"configStore\", void 0);\n _define_property(this, \"pluginList\", void 0);\n _define_property(this, \"implementers\", new Map());\n _define_property(this, \"typeConfigs\", new Map());\n _define_property(this, \"enumValueConfigs\", new Map());\n _define_property(this, \"outputFieldConfigs\", new Map());\n _define_property(this, \"inputFieldConfigs\", new Map());\n this.builder = builder;\n this.configStore = builder.configStore;\n this.options = options;\n const plugins = {};\n var _builder_options_plugins;\n this.pluginList = ((_builder_options_plugins = builder.options.plugins) !== null && _builder_options_plugins !== void 0 ? _builder_options_plugins : []).map((pluginName) => {\n const Plugin = this.builder.constructor.plugins[pluginName];\n if (!Plugin) {\n throw new PothosError(`No plugin named ${pluginName} was registered`);\n }\n plugins[pluginName] = new Plugin(this, pluginName);\n return plugins[pluginName];\n });\n this.plugin = new MergedPlugins(this, this.pluginList);\n }\n}\n//# sourceMappingURL=build-cache.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputShapeKey } from '../types/index.js';\nimport { BaseTypeRef } from './base.js';\nlet _inputShapeKey = inputShapeKey;\nexport class InputObjectRef extends BaseTypeRef {\n addFields(fields) {\n this.fields.add(fields);\n for (const cb of this.fieldCbs) {\n for (const [name, ref] of Object.entries(fields())) {\n if (ref) {\n cb(name, ref);\n }\n }\n }\n }\n onField(cb) {\n this.fieldCbs.add(cb);\n for (const fieldMap of this.fields) {\n for (const [name, ref] of Object.entries(fieldMap())) {\n if (ref) {\n cb(name, ref);\n }\n }\n }\n }\n constructor(name) {\n super(\"InputObject\", name), _define_property(this, \"kind\", \"InputObject\"), _define_property(this, \"$inferInput\", void 0), _define_property(this, _inputShapeKey, void 0), _define_property(this, \"fields\", new Set()), _define_property(this, \"fieldCbs\", new Set());\n }\n}\nexport class ImplementableInputObjectRef extends InputObjectRef {\n implement(options) {\n this.builder.inputType(this, options);\n return this;\n }\n constructor(builder, name) {\n super(name), _define_property(this, \"builder\", void 0);\n this.builder = builder;\n }\n}\n//# sourceMappingURL=input-object.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { BaseTypeRef } from './base.js';\nexport class TypeRefWithFields extends BaseTypeRef {\n addFields(fields) {\n for (const cb of this.fieldCbs) {\n for (const [name, ref] of Object.entries(fields())) {\n if (ref) {\n cb(name, ref);\n }\n }\n }\n this.fields.add(fields);\n }\n addInterfaces(interfaces) {\n if (Array.isArray(interfaces) && interfaces.length === 0) {\n return;\n }\n if (this.preparedForBuild) {\n this.updateConfig((cfg) => ({\n ...cfg,\n interfaces: [\n ...cfg.interfaces,\n ...typeof interfaces === \"function\" ? interfaces() : interfaces\n ]\n }));\n }\n else {\n this.interfaces.push(() => Array.isArray(interfaces) ? interfaces : interfaces());\n }\n }\n onField(cb) {\n this.fieldCbs.add(cb);\n for (const fieldMap of this.fields) {\n for (const [name, ref] of Object.entries(fieldMap())) {\n if (ref) {\n cb(name, ref);\n }\n }\n }\n }\n prepareForBuild() {\n if (this.preparedForBuild) {\n return;\n }\n super.prepareForBuild();\n if (this.interfaces.length > 0) {\n this.updateConfig((cfg) => {\n var _cfg_interfaces;\n return {\n ...cfg,\n interfaces: [\n ...(_cfg_interfaces = cfg.interfaces) !== null && _cfg_interfaces !== void 0 ? _cfg_interfaces : [],\n ...this.interfaces.flatMap((interfaces) => interfaces())\n ]\n };\n });\n }\n }\n constructor(...args) {\n super(...args), _define_property(this, \"fields\", new Set()), _define_property(this, \"fieldCbs\", new Set()), _define_property(this, \"interfaces\", []);\n }\n}\n//# sourceMappingURL=base-with-fields.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { outputShapeKey, parentShapeKey } from '../types/index.js';\nimport { TypeRefWithFields } from './base-with-fields.js';\nlet _outputShapeKey = outputShapeKey, _parentShapeKey = parentShapeKey;\nexport class InterfaceRef extends TypeRefWithFields {\n constructor(name, config) {\n super(\"Interface\", name, config), _define_property(this, \"kind\", \"Interface\"), _define_property(this, \"$inferType\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _parentShapeKey, void 0);\n }\n}\nexport class ImplementableInterfaceRef extends InterfaceRef {\n implement(options) {\n return this.builder.interfaceType(this, options);\n }\n constructor(builder, name) {\n super(name), _define_property(this, \"builder\", void 0);\n this.builder = builder;\n }\n}\n//# sourceMappingURL=interface.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { outputShapeKey, parentShapeKey } from '../types/index.js';\nimport { TypeRefWithFields } from './base-with-fields.js';\nlet _outputShapeKey = outputShapeKey, _parentShapeKey = parentShapeKey;\nexport class ObjectRef extends TypeRefWithFields {\n constructor(name, config) {\n super(\"Object\", name, config), _define_property(this, \"kind\", \"Object\"), _define_property(this, \"$inferType\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _parentShapeKey, void 0);\n }\n}\nexport class ImplementableObjectRef extends ObjectRef {\n implement(options) {\n return this.builder.objectType(this, options);\n }\n constructor(builder, name) {\n super(name), _define_property(this, \"builder\", void 0);\n this.builder = builder;\n }\n}\n//# sourceMappingURL=object.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { ObjectRef } from './object.js';\nexport class MutationRef extends ObjectRef {\n constructor(...args) {\n super(...args), _define_property(this, \"kind\", \"Object\");\n }\n}\n//# sourceMappingURL=mutation.js.map\n","import { ObjectRef } from './object.js';\nexport class QueryRef extends ObjectRef {\n}\n//# sourceMappingURL=query.js.map\n","import { ObjectRef } from './object.js';\nexport class SubscriptionRef extends ObjectRef {\n}\n//# sourceMappingURL=subscription.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { PothosSchemaError } from './errors.js';\nimport { BaseTypeRef } from './refs/base.js';\nimport { InputObjectRef } from './refs/input-object.js';\nimport { InterfaceRef } from './refs/interface.js';\nimport { MutationRef } from './refs/mutation.js';\nimport { ObjectRef } from './refs/object.js';\nimport { QueryRef } from './refs/query.js';\nimport { SubscriptionRef } from './refs/subscription.js';\nexport class ConfigStore {\n addFields(param, fields) {\n this.onTypeConfig(param, (_config, ref) => {\n if (!(ref instanceof InterfaceRef || ref instanceof ObjectRef || ref instanceof QueryRef || ref instanceof MutationRef || ref instanceof SubscriptionRef)) {\n throw new PothosSchemaError(`Can not add fields to ${ref} because it is not an object`);\n }\n ref.addFields(fields);\n });\n }\n addInputFields(param, fields) {\n this.onTypeConfig(param, (_config, ref) => {\n if (!(ref instanceof InputObjectRef)) {\n throw new PothosSchemaError(`Can not add fields to ${ref} because it is not an input object`);\n }\n ref.addFields(fields);\n });\n }\n associateParamWithRef(param, ref) {\n const resolved = this.resolveParamAssociations(ref);\n this.paramAssociations.set(param, resolved);\n var _this_pendingTypeConfigResolutions_get;\n const pendingResolutions = (_this_pendingTypeConfigResolutions_get = this.pendingTypeConfigResolutions.get(param)) !== null && _this_pendingTypeConfigResolutions_get !== void 0 ? _this_pendingTypeConfigResolutions_get : [];\n if (pendingResolutions.length > 0) {\n if (typeof resolved === \"string\" && this.typeConfigs.has(resolved)) {\n for (const cb of pendingResolutions) {\n const config = this.typeConfigs.get(resolved);\n cb(config, this.implementors.get(config.name));\n }\n }\n else {\n for (const cb of pendingResolutions) {\n this.onTypeConfig(resolved, cb);\n }\n }\n }\n this.pendingTypeConfigResolutions.delete(param);\n }\n onTypeConfig(param, onConfig) {\n const resolved = this.resolveParamAssociations(param);\n if (typeof resolved === \"string\" && this.typeConfigs.has(resolved)) {\n const config = this.typeConfigs.get(resolved);\n onConfig(config, this.implementors.get(config.name));\n }\n else {\n if (!this.pendingTypeConfigResolutions.has(resolved)) {\n this.pendingTypeConfigResolutions.set(resolved, []);\n }\n this.pendingTypeConfigResolutions.get(resolved).push(onConfig);\n }\n }\n onTypeConfigOfKind(param, kind, onConfig) {\n this.onTypeConfig(param, (config) => {\n if (config.kind !== kind) {\n throw new PothosSchemaError(`Expected ${this.describeRef(param)} to be of kind ${kind} but it is of kind ${config.kind}`);\n }\n onConfig(config);\n });\n }\n addTypeRef(ref) {\n if (this.refs.has(ref)) {\n return;\n }\n if (!this.pending) {\n ref.prepareForBuild();\n }\n this.refs.add(ref);\n ref.onConfig((config) => {\n const implementor = this.implementors.get(config.name);\n if (implementor && implementor !== ref) {\n throw new PothosSchemaError(`Duplicate typename: Another type with name ${config.name} already exists.`);\n }\n if (!implementor) {\n this.implementors.set(config.name, ref);\n this.associateParamWithRef(ref, config.name);\n if (ref instanceof ObjectRef || ref instanceof InterfaceRef || ref instanceof InputObjectRef) {\n if (!this.fields.has(config.name)) {\n this.fields.set(config.name, new Map());\n }\n this.onPrepare(() => {\n ref.onField((fieldName, field) => {\n const fields = this.fields.get(config.name);\n if (fields.has(fieldName)) {\n throw new PothosSchemaError(`Duplicate field ${fieldName} on ${config.name}`);\n }\n var _this_typeConfigs_get;\n fields.set(fieldName, field.getConfig(fieldName, (_this_typeConfigs_get = this.typeConfigs.get(config.name)) !== null && _this_typeConfigs_get !== void 0 ? _this_typeConfigs_get : config));\n });\n });\n }\n }\n this.typeConfigs.set(config.name, config);\n if (this.pendingTypeConfigResolutions.has(config.name)) {\n const cbs = this.pendingTypeConfigResolutions.get(config.name);\n for (const cb of cbs) {\n cb(config, ref);\n }\n }\n this.pendingTypeConfigResolutions.delete(config.name);\n });\n }\n subscribeToFields(_ref) { }\n hasImplementation(typeName) {\n return this.typeConfigs.has(typeName);\n }\n hasConfig(ref) {\n const resolved = this.resolveParamAssociations(ref);\n if (typeof resolved !== \"string\" || !this.typeConfigs.has(resolved)) {\n return false;\n }\n return true;\n }\n getTypeConfig(ref, kind) {\n const resolved = this.resolveParamAssociations(ref);\n if (typeof resolved !== \"string\" || !this.typeConfigs.has(resolved)) {\n throw new PothosSchemaError(`${this.describeRef(ref)} has not been implemented`);\n }\n const config = this.typeConfigs.get(resolved);\n if (kind && config.graphqlKind !== kind) {\n throw new PothosSchemaError(`Expected ref to resolve to a ${kind} type, but got ${config.kind}`);\n }\n return config;\n }\n getInputTypeRef(param) {\n const resolved = this.resolveParamAssociations(param);\n if (param instanceof BaseTypeRef) {\n if (param.kind !== \"InputObject\" && param.kind !== \"Enum\" && param.kind !== \"Scalar\") {\n throw new PothosSchemaError(`Expected ${this.describeRef(param)} to be an input type but got ${param.kind}`);\n }\n return param;\n }\n if (typeof resolved === \"string\" && this.typeConfigs.has(resolved)) {\n const ref = this.implementors.get(resolved);\n if (ref instanceof BaseTypeRef) {\n if (ref.kind !== \"InputObject\" && ref.kind !== \"Enum\" && ref.kind !== \"Scalar\") {\n throw new PothosSchemaError(`Expected ${this.describeRef(ref)} to be an input type but got ${ref.kind}`);\n }\n return ref;\n }\n }\n throw new PothosSchemaError(`${this.describeRef(param)} has not been implemented`);\n }\n getOutputTypeRef(param) {\n const resolved = this.resolveParamAssociations(param);\n if (param instanceof BaseTypeRef) {\n if (param.kind === \"InputObject\" || param.kind === \"InputList\") {\n throw new PothosSchemaError(`Expected ${param.name} to be an output type but got ${param.kind}`);\n }\n return param;\n }\n if (typeof resolved === \"string\" && this.typeConfigs.has(resolved)) {\n const ref = this.implementors.get(resolved);\n if (ref instanceof BaseTypeRef) {\n if (ref.kind === \"InputObject\" || ref.kind === \"InputList\") {\n throw new PothosSchemaError(`Expected ${ref.name} to be an output type but got ${ref.kind}`);\n }\n return ref;\n }\n }\n throw new PothosSchemaError(`${this.describeRef(param)} has not been implemented`);\n }\n getFields(name, kind) {\n const typeConfig = this.getTypeConfig(name);\n if (!this.fields.has(name)) {\n this.fields.set(name, new Map());\n }\n const fields = this.fields.get(name);\n if (kind && typeConfig.graphqlKind !== kind) {\n throw new PothosSchemaError(`Expected ${name} to be a ${kind} type, but found ${typeConfig.graphqlKind}`);\n }\n return fields;\n }\n prepareForBuild() {\n this.pending = false;\n for (const ref of this.refs) {\n ref.prepareForBuild();\n }\n const { pendingActions } = this;\n this.pendingActions = [];\n for (const fn of pendingActions) {\n fn();\n }\n if (this.pendingTypeConfigResolutions.size > 0) {\n throw new PothosSchemaError(`Missing implementations for some references (${[\n ...this.pendingTypeConfigResolutions.keys()\n ].map((ref) => this.describeRef(ref)).join(\", \")}).`);\n }\n }\n onPrepare(cb) {\n if (this.pending) {\n this.pendingActions.push(cb);\n }\n else {\n cb();\n }\n }\n resolveParamAssociations(param) {\n let current = this.paramAssociations.get(param);\n while (current && this.paramAssociations.has(current)) {\n current = this.paramAssociations.get(current);\n }\n return current !== null && current !== void 0 ? current : param;\n }\n describeRef(ref) {\n if (typeof ref === \"string\") {\n return ref;\n }\n if (ref && ref.toString !== ({}).toString) {\n return String(ref);\n }\n if (typeof ref === \"function\" && ref.name !== (() => { }).name) {\n return `function ${ref.name}`;\n }\n return \"<unnamed ref or enum>\";\n }\n constructor(builder) {\n _define_property(this, \"typeConfigs\", new Map());\n _define_property(this, \"fields\", new Map());\n _define_property(this, \"refs\", new Set());\n _define_property(this, \"implementors\", new Map());\n _define_property(this, \"pendingActions\", []);\n _define_property(this, \"paramAssociations\", new Map());\n _define_property(this, \"pendingTypeConfigResolutions\", new Map());\n _define_property(this, \"pending\", true);\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: backwards compatibility\n _define_property(this, \"builder\", void 0);\n this.builder = builder;\n }\n}\n//# sourceMappingURL=config-store.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputFieldShapeKey } from '../types/index.js';\nlet _inputFieldShapeKey = inputFieldShapeKey;\nexport class ArgumentRef {\n onConfig(cb) {\n this.pendingActions.push(cb);\n }\n updateConfig(cb) {\n this.pendingActions.push(cb);\n }\n getConfig(name, field, typeConfig) {\n const config = this.pendingActions.reduce((config, cb) => {\n var _cb;\n return (_cb = cb(config)) !== null && _cb !== void 0 ? _cb : config;\n }, this.initConfig(name, field, typeConfig));\n for (const cb of this.onUseCallbacks) {\n this.onUseCallbacks.delete(cb);\n cb(config);\n }\n return config;\n }\n onFirstUse(cb) {\n this.onUseCallbacks.add(cb);\n }\n constructor(initConfig) {\n _define_property(this, \"kind\", \"Arg\");\n _define_property(this, \"fieldName\", void 0);\n _define_property(this, \"$inferInput\", void 0);\n _define_property(this, _inputFieldShapeKey, void 0);\n _define_property(this, \"pendingActions\", []);\n _define_property(this, \"initConfig\", void 0);\n _define_property(this, \"onUseCallbacks\", new Set());\n this.initConfig = initConfig;\n }\n}\n//# sourceMappingURL=arg.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputFieldShapeKey } from '../types/index.js';\nlet _inputFieldShapeKey = inputFieldShapeKey;\nexport class InputFieldRef {\n updateConfig(cb) {\n this.pendingActions.push(cb);\n }\n getConfig(name, typeConfig) {\n const config = this.pendingActions.reduce((config, cb) => {\n var _cb;\n return (_cb = cb(config)) !== null && _cb !== void 0 ? _cb : config;\n }, this.initConfig(name, typeConfig));\n for (const cb of this.onUseCallbacks) {\n this.onUseCallbacks.delete(cb);\n cb(config);\n }\n return config;\n }\n onFirstUse(cb) {\n this.onUseCallbacks.add(cb);\n }\n constructor(initConfig) {\n _define_property(this, \"kind\", \"InputObject\");\n _define_property(this, \"fieldName\", void 0);\n _define_property(this, \"$inferInput\", void 0);\n _define_property(this, _inputFieldShapeKey, void 0);\n _define_property(this, \"pendingActions\", []);\n _define_property(this, \"initConfig\", void 0);\n _define_property(this, \"onUseCallbacks\", new Set());\n this.initConfig = initConfig;\n }\n}\n//# sourceMappingURL=input-field.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { ArgumentRef } from '../refs/arg.js';\nimport { InputFieldRef } from '../refs/input-field.js';\nimport { InputListRef } from '../refs/input-list.js';\nimport { inputTypeFromParam } from '../utils/index.js';\nexport class InputFieldBuilder {\n argBuilder() {\n const builder = this.field.bind(this);\n const protoKeys = Object.keys(Object.getPrototypeOf(this)).filter((key) => typeof this[key] === \"function\" && Function.prototype[key] === undefined);\n for (const key of [\n ...Object.keys(this),\n ...protoKeys\n ]) {\n builder[key] = typeof this[key] === \"function\" ? this[key].bind(this) : this[key];\n }\n return builder;\n }\n /**\n * Create in input field or argument for the current type\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ field(options) {\n const ref = this.kind === \"Arg\" ? new ArgumentRef((name, field, typeConfig) => {\n const opts = options;\n var _opts_required, _opts_extensions;\n return {\n name,\n parentField: field,\n kind: this.kind,\n graphqlKind: this.kind,\n parentType: typeConfig.name,\n type: inputTypeFromParam(opts.type, this.builder.configStore, (_opts_required = opts.required) !== null && _opts_required !== void 0 ? _opts_required : this.builder.defaultInputFieldRequiredness),\n pothosOptions: opts,\n description: opts.description,\n deprecationReason: opts.deprecationReason,\n defaultValue: opts.defaultValue,\n extensions: (_opts_extensions = opts.extensions) !== null && _opts_extensions !== void 0 ? _opts_extensions : {}\n };\n }) : new InputFieldRef((name, typeConfig) => {\n const opts = options;\n var _opts_required, _opts_extensions;\n return {\n name,\n parentField: undefined,\n kind: this.kind,\n graphqlKind: this.kind,\n parentType: typeConfig.name,\n type: inputTypeFromParam(opts.type, this.builder.configStore, (_opts_required = opts.required) !== null && _opts_required !== void 0 ? _opts_required : this.builder.defaultInputFieldRequiredness),\n pothosOptions: opts,\n description: opts.description,\n deprecationReason: opts.deprecationReason,\n defaultValue: opts.defaultValue,\n extensions: (_opts_extensions = opts.extensions) !== null && _opts_extensions !== void 0 ? _opts_extensions : {}\n };\n });\n return ref;\n }\n helper(type) {\n return (...args) => {\n const [options = {}] = args;\n return this.field({\n ...options,\n type\n });\n };\n }\n constructor(builder, kind) {\n _define_property(this, \"kind\", void 0);\n _define_property(this, \"builder\", void 0);\n /**\n * Create a Boolean input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"boolean\", this.helper(\"Boolean\"));\n /**\n * Create a Float input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"float\", this.helper(\"Float\"));\n /**\n * Create a ID input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"id\", this.helper(\"ID\"));\n /**\n * Create a Int input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"int\", this.helper(\"Int\"));\n /**\n * Create a String input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"string\", this.helper(\"String\"));\n /**\n * Create a Boolean list input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"booleanList\", this.helper([\n \"Boolean\"\n ]));\n /**\n * Create a Float list input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"floatList\", this.helper([\n \"Float\"\n ]));\n /**\n * Create a ID list input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"idList\", this.helper([\n \"ID\"\n ]));\n /**\n * Create a Int list input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"intList\", this.helper([\n \"Int\"\n ]));\n /**\n * Create a String list input field\n * @param {PothosSchemaTypes.InputFieldOptions} [options={}] - Options for this field\n */ _define_property(this, \"stringList\", this.helper([\n \"String\"\n ]));\n _define_property(this, \"listRef\", (type, options) => {\n var _options_required;\n return new InputListRef(type, (_options_required = options === null || options === void 0 ? void 0 : options.required) !== null && _options_required !== void 0 ? _options_required : true);\n });\n this.builder = builder;\n this.kind = kind;\n }\n}\n//# sourceMappingURL=input.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { outputFieldShapeKey } from '../types/index.js';\nlet _outputFieldShapeKey = outputFieldShapeKey;\nexport class FieldRef {\n updateConfig(cb) {\n this.pendingActions.push(cb);\n }\n getConfig(name, typeConfig) {\n const config = this.pendingActions.reduce((cfg, cb) => {\n var _cb;\n return (_cb = cb(cfg)) !== null && _cb !== void 0 ? _cb : cfg;\n }, this.initConfig(name, typeConfig));\n for (const cb of this.onUseCallbacks) {\n this.onUseCallbacks.delete(cb);\n cb(config);\n }\n return config;\n }\n onFirstUse(cb) {\n this.onUseCallbacks.add(cb);\n }\n constructor(kind, initConfig) {\n _define_property(this, \"kind\", void 0);\n _define_property(this, \"fieldName\", void 0);\n _define_property(this, \"$inferType\", void 0);\n _define_property(this, _outputFieldShapeKey, void 0);\n _define_property(this, \"pendingActions\", []);\n _define_property(this, \"initConfig\", void 0);\n _define_property(this, \"onUseCallbacks\", new Set());\n this.kind = kind;\n this.initConfig = initConfig;\n }\n}\n//# sourceMappingURL=field.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { defaultFieldResolver } from 'graphql';\nimport { FieldRef } from '../refs/field.js';\nimport { typeFromParam } from '../utils/index.js';\nexport class BaseFieldUtil {\n createField(// biome-ignore lint/suspicious/noExplicitAny: this is fine\n options) {\n const ref = new FieldRef(this.kind, (name, typeConfig) => {\n var _options_extensions;\n const args = {};\n if (options.args) {\n for (const [argName, arg] of Object.entries(options.args)) {\n args[argName] = arg.getConfig(argName, name, typeConfig);\n }\n }\n let { resolve } = options;\n if (((_options_extensions = options.extensions) === null || _options_extensions === void 0 ? void 0 : _options_extensions.pothosExposedField) === name) {\n resolve = defaultFieldResolver;\n }\n const { subscribe } = options;\n var _options_nullable;\n return {\n kind: this.kind,\n graphqlKind: typeConfig.graphqlKind,\n parentType: typeConfig.name,\n name,\n args,\n argMappers: [],\n type: typeFromParam(options.type, this.builder.configStore, (_options_nullable = options.nullable) !== null && _options_nullable !== void 0 ? _options_nullable : this.builder.defaultFieldNullability),\n pothosOptions: options,\n extensions: {\n pothosOriginalResolve: resolve,\n pothosOriginalSubscribe: subscribe,\n ...options.extensions\n },\n description: options.description,\n deprecationReason: options.deprecationReason,\n resolve,\n subscribe\n };\n });\n return ref;\n }\n exposeField(name, { extensions, ...options }) {\n return this.createField({\n ...options,\n extensions: {\n pothosExposedField: name,\n ...extensions\n },\n resolve: (parent) => parent[name]\n });\n }\n constructor(builder, kind, graphqlKind) {\n _define_property(this, \"kind\", void 0);\n _define_property(this, \"graphqlKind\", void 0);\n _define_property(this, \"builder\", void 0);\n this.builder = builder;\n this.kind = kind;\n this.graphqlKind = graphqlKind;\n }\n}\n//# sourceMappingURL=base.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { ListRef } from '../refs/list.js';\nimport { BaseFieldUtil } from './base.js';\nimport { InputFieldBuilder } from './input.js';\nexport class RootFieldBuilder extends BaseFieldUtil {\n /**\n * Create a Boolean field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ boolean(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: \"Boolean\"\n });\n }\n /**\n * Create a Float field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ float(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: \"Float\"\n });\n }\n /**\n * Create a ID field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ id(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: \"ID\"\n });\n }\n /**\n * Create a Int field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ int(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: \"Int\"\n });\n }\n /**\n * Create a String field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ string(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: \"String\"\n });\n }\n /**\n * Create a Boolean list field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ booleanList(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: [\n \"Boolean\"\n ]\n });\n }\n /**\n * Create a Float list field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ floatList(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: [\n \"Float\"\n ]\n });\n }\n /**\n * Create a ID list field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ idList(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: [\n \"ID\"\n ]\n });\n }\n /**\n * Create a Int list field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ intList(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: [\n \"Int\"\n ]\n });\n }\n /**\n * Create a String list field\n * @param {PothosSchemaTypes.FieldOptions} options - Options for this field\n */ stringList(...args) {\n const [options = {}] = args;\n return this.createField({\n ...options,\n type: [\n \"String\"\n ]\n });\n }\n /**\n * create a new field for the current type\n * @param {PothosSchemaTypes.FieldOptions} options - options for this field\n */ field(options) {\n return this.createField(options);\n }\n listRef(type, options) {\n var _options_nullable;\n return new ListRef(type, (_options_nullable = options === null || options === void 0 ? void 0 : options.nullable) !== null && _options_nullable !== void 0 ? _options_nullable : false);\n }\n constructor(...args) {\n super(...args), _define_property(this, \"arg\", new InputFieldBuilder(this.builder, \"Arg\").argBuilder());\n }\n}\n//# sourceMappingURL=root.js.map\n","import { RootFieldBuilder } from './root.js';\nexport class FieldBuilder extends RootFieldBuilder {\n /**\n * Create a Boolean field from a boolean property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeBoolean(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: \"Boolean\"\n });\n }\n /**\n * Create a Float field from a numeric property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeFloat(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: \"Float\"\n });\n }\n /**\n * Create an ID field from a property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeID(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: \"ID\"\n });\n }\n /**\n * Create an Int field from a numeric property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeInt(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: \"Int\"\n });\n }\n /**\n * Create a String field from a string property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeString(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: \"String\"\n });\n }\n /**\n * Create a Boolean list field from a boolean[] property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeBooleanList(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: [\n \"Boolean\"\n ]\n });\n }\n /**\n * Create a Float list field from a number[] property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeFloatList(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: [\n \"Float\"\n ]\n });\n }\n /**\n * Create an ID list field from an id[] property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeIDList(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: [\n \"ID\"\n ]\n });\n }\n /**\n * Create a Int list field from a number[] property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeIntList(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: [\n \"Int\"\n ]\n });\n }\n /**\n * Create a String list field from a string[] property on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ exposeStringList(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, {\n ...options,\n type: [\n \"String\"\n ]\n });\n }\n /**\n * Create a field that resolves to a property of the corresponding type on the parent object\n * @param {string} name - the name of the property on the source object (does not need to match the field name).\n * @param {object} [options={}] - Options for this field\n */ expose(name, ...args) {\n const [options = {}] = args;\n return this.exposeField(name, options);\n }\n}\n//# sourceMappingURL=builder.js.map\n","import { FieldBuilder } from './builder.js';\nexport class InterfaceFieldBuilder extends FieldBuilder {\n constructor(builder) {\n super(builder, \"Interface\", \"Interface\");\n }\n}\n//# sourceMappingURL=interface.js.map\n","import { RootFieldBuilder } from './root.js';\nexport class MutationFieldBuilder extends RootFieldBuilder {\n constructor(builder) {\n super(builder, \"Mutation\", \"Object\");\n }\n}\n//# sourceMappingURL=mutation.js.map\n","import { FieldBuilder } from './builder.js';\nexport class ObjectFieldBuilder extends FieldBuilder {\n constructor(builder) {\n super(builder, \"Object\", \"Object\");\n }\n}\n//# sourceMappingURL=object.js.map\n","import { RootFieldBuilder } from './root.js';\nexport class QueryFieldBuilder extends RootFieldBuilder {\n constructor(builder) {\n super(builder, \"Query\", \"Object\");\n }\n}\n//# sourceMappingURL=query.js.map\n","import { RootFieldBuilder } from './root.js';\nexport class SubscriptionFieldBuilder extends RootFieldBuilder {\n constructor(builder) {\n super(builder, \"Subscription\", \"Object\");\n }\n}\n//# sourceMappingURL=subscription.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { inputShapeKey, outputShapeKey } from '../types/index.js';\nimport { BaseTypeRef } from './base.js';\nlet _outputShapeKey = outputShapeKey, _inputShapeKey = inputShapeKey;\nexport class EnumRef extends BaseTypeRef {\n constructor(name, config) {\n super(\"Enum\", name, config), _define_property(this, \"kind\", \"Enum\"), _define_property(this, \"$inferType\", void 0), _define_property(this, \"$inferInput\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _inputShapeKey, void 0);\n }\n}\n//# sourceMappingURL=enum.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { outputShapeKey, parentShapeKey } from '../types/type-params.js';\nimport { BaseTypeRef } from './base.js';\nlet _outputShapeKey = outputShapeKey, _parentShapeKey = parentShapeKey;\nexport class UnionRef extends BaseTypeRef {\n addTypes(types) {\n if (Array.isArray(types) && types.length === 0) {\n return;\n }\n if (this.preparedForBuild) {\n this.updateConfig((cfg) => ({\n ...cfg,\n types: [\n ...cfg.types,\n ...typeof types === \"function\" ? types() : types\n ]\n }));\n }\n else {\n this.types.push(() => Array.isArray(types) ? types : types());\n }\n }\n prepareForBuild() {\n if (this.preparedForBuild) {\n return;\n }\n super.prepareForBuild();\n if (this.types.length > 0) {\n this.updateConfig((cfg) => ({\n ...cfg,\n types: [\n ...cfg.types,\n ...this.types.flatMap((types) => types())\n ]\n }));\n }\n }\n constructor(name, config) {\n super(\"Union\", name, config), _define_property(this, \"kind\", \"Union\"), _define_property(this, \"$inferType\", void 0), _define_property(this, _outputShapeKey, void 0), _define_property(this, _parentShapeKey, void 0), _define_property(this, \"types\", []);\n }\n}\n//# sourceMappingURL=union.js.map\n","function _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n else {\n obj[key] = value;\n }\n return obj;\n}\nimport { GraphQLBoolean, GraphQLFloat, GraphQLID, GraphQLInt, GraphQLSchema, GraphQLString, lexicographicSortSchema } from 'graphql';\nimport { BuildCache } from './build-cache.js';\nimport { ConfigStore } from './config-store.js';\nimport { PothosError } from './errors.js';\nimport { InputFieldBuilder } from './fieldUtils/input.js';\nimport { InterfaceFieldBuilder } from './fieldUtils/interface.js';\nimport { MutationFieldBuilder } from './fieldUtils/mutation.js';\nimport { ObjectFieldBuilder } from './fieldUtils/object.js';\nimport { QueryFieldBuilder } from './fieldUtils/query.js';\nimport { SubscriptionFieldBuilder } from './fieldUtils/subscription.js';\nimport { BaseTypeRef } from './refs/base.js';\nimport { EnumRef } from './refs/enum.js';\nimport { ImplementableInputObjectRef, InputObjectRef } from './refs/input-object.js';\nimport { ImplementableInterfaceRef, InterfaceRef } from './refs/interface.js';\nimport { MutationRef } from './refs/mutation.js';\nimport { ImplementableObjectRef, ObjectRef } from './refs/object.js';\nimport { QueryRef } from './refs/query.js';\nimport { ScalarRef } from './refs/scalar.js';\nimport { SubscriptionRef } from './refs/subscription.js';\nimport { UnionRef } from './refs/union.js';\nimport { normalizeEnumValues, valuesFromEnum, verifyInterfaces, verifyRef } from './utils/index.js';\nexport class SchemaBuilder {\n static registerPlugin(name, plugin, normalizeOptions) {\n if (!SchemaBuilder.allowPluginReRegistration && SchemaBuilder.plugins[name]) {\n throw new PothosError(`Received multiple implementations for plugin ${name}`);\n }\n SchemaBuilder.plugins[name] = plugin;\n if (normalizeOptions) {\n SchemaBuilder.optionNormalizers.set(name, normalizeOptions);\n }\n }\n objectType(param, options, fields) {\n verifyRef(param);\n verifyInterfaces(options.interfaces);\n var _options_name;\n const name = typeof param === \"string\" ? param : (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : param.name;\n const ref = param instanceof BaseTypeRef ? param : new ObjectRef(name);\n ref.updateConfig({\n kind: \"Object\",\n graphqlKind: \"Object\",\n name,\n interfaces: [],\n description: options.description,\n extensions: options.extensions,\n isTypeOf: options.isTypeOf,\n pothosOptions: options\n });\n if (options.interfaces) {\n ref.addInterfaces(options.interfaces);\n }\n if (ref !== param && typeof param !== \"string\") {\n this.configStore.associateParamWithRef(param, ref);\n }\n if (fields) {\n ref.addFields(() => fields(new ObjectFieldBuilder(this)));\n }\n if (options.fields) {\n ref.addFields(() => {\n const t = new ObjectFieldBuilder(this);\n return options.fields(t);\n });\n }\n this.configStore.addTypeRef(ref);\n return ref;\n }\n objectFields(param, fields) {\n verifyRef(param);\n this.configStore.addFields(param, () => fields(new ObjectFieldBuilder(this)));\n }\n objectField(param, fieldName, field) {\n verifyRef(param);\n this.configStore.addFields(param, () => ({\n [fieldName]: field(new ObjectFieldBuilder(this))\n }));\n }\n queryType(...args) {\n const [options = {}, fields] = args;\n var _options_name;\n this.queryRef.updateConfig({\n kind: \"Query\",\n graphqlKind: \"Object\",\n name: (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : \"Query\",\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions\n });\n if (options.name) {\n this.queryRef.name = options.name;\n }\n this.configStore.addTypeRef(this.queryRef);\n if (fields) {\n this.queryRef.addFields(() => fields(new QueryFieldBuilder(this)));\n }\n if (options.fields) {\n this.queryRef.addFields(() => options.fields(new QueryFieldBuilder(this)));\n }\n return this.queryRef;\n }\n queryFields(fields) {\n this.configStore.addFields(this.queryRef, () => fields(new QueryFieldBuilder(this)));\n }\n queryField(name, field) {\n this.configStore.addFields(this.queryRef, () => ({\n [name]: field(new QueryFieldBuilder(this))\n }));\n }\n mutationType(...args) {\n const [options = {}, fields] = args;\n var _options_name;\n this.mutationRef.updateConfig({\n kind: \"Mutation\",\n graphqlKind: \"Object\",\n name: (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : \"Mutation\",\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions\n });\n this.configStore.addTypeRef(this.mutationRef);\n if (options.name) {\n this.mutationRef.name = options.name;\n }\n if (fields) {\n this.configStore.addFields(this.mutationRef, () => fields(new MutationFieldBuilder(this)));\n }\n if (options.fields) {\n this.configStore.addFields(this.mutationRef, () => options.fields(new MutationFieldBuilder(this)));\n }\n return this.mutationRef;\n }\n mutationFields(fields) {\n this.configStore.addFields(this.mutationRef, () => fields(new MutationFieldBuilder(this)));\n }\n mutationField(name, field) {\n this.configStore.addFields(this.mutationRef, () => ({\n [name]: field(new MutationFieldBuilder(this))\n }));\n }\n subscriptionType(...args) {\n const [options = {}, fields] = args;\n var _options_name;\n this.subscriptionRef.updateConfig({\n kind: \"Subscription\",\n graphqlKind: \"Object\",\n name: (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : \"Subscription\",\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions\n });\n this.configStore.addTypeRef(this.subscriptionRef);\n if (options.name) {\n this.subscriptionRef.name = options.name;\n }\n if (fields) {\n this.configStore.addFields(this.subscriptionRef, () => fields(new SubscriptionFieldBuilder(this)));\n }\n if (options.fields) {\n this.configStore.addFields(this.subscriptionRef, () => options.fields(new SubscriptionFieldBuilder(this)));\n }\n return this.subscriptionRef;\n }\n subscriptionFields(fields) {\n this.configStore.addFields(this.subscriptionRef, () => fields(new SubscriptionFieldBuilder(this)));\n }\n subscriptionField(name, field) {\n this.configStore.addFields(this.subscriptionRef, () => ({\n [name]: field(new SubscriptionFieldBuilder(this))\n }));\n }\n args(fields) {\n return fields(new InputFieldBuilder(this, \"Arg\"));\n }\n interfaceType(param, options, fields) {\n verifyRef(param);\n verifyInterfaces(options.interfaces);\n var _options_name;\n const name = typeof param === \"string\" ? param : (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : param.name;\n const ref = param instanceof BaseTypeRef ? param : new InterfaceRef(name);\n const typename = ref.name;\n ref.updateConfig({\n kind: \"Interface\",\n graphqlKind: \"Interface\",\n name: typename,\n interfaces: [],\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions,\n resolveType: options.resolveType\n });\n this.configStore.addTypeRef(ref);\n if (options.interfaces) {\n ref.addInterfaces(options.interfaces);\n }\n if (ref !== param && typeof param !== \"string\") {\n this.configStore.associateParamWithRef(param, ref);\n }\n if (fields) {\n this.configStore.addFields(ref, () => fields(new InterfaceFieldBuilder(this)));\n }\n if (options.fields) {\n this.configStore.addFields(ref, () => options.fields(new InterfaceFieldBuilder(this)));\n }\n return ref;\n }\n interfaceFields(ref, fields) {\n verifyRef(ref);\n this.configStore.addFields(ref, () => fields(new InterfaceFieldBuilder(this)));\n }\n interfaceField(ref, fieldName, field) {\n verifyRef(ref);\n this.configStore.addFields(ref, () => ({\n [fieldName]: field(new InterfaceFieldBuilder(this))\n }));\n }\n unionType(name, options) {\n const ref = new UnionRef(name, {\n kind: \"Union\",\n graphqlKind: \"Union\",\n name,\n types: [],\n description: options.description,\n resolveType: options.resolveType,\n pothosOptions: options,\n extensions: options.extensions\n });\n if (Array.isArray(options.types)) {\n for (const type of options.types) {\n verifyRef(type);\n }\n }\n this.configStore.addTypeRef(ref);\n ref.addTypes(options.types);\n return ref;\n }\n enumType(param, options) {\n verifyRef(param);\n const name = typeof param === \"string\" ? param : options.name;\n const values = typeof param === \"object\" ? valuesFromEnum(param, options === null || options === void 0 ? void 0 : options.values) : normalizeEnumValues(options.values);\n const ref = new EnumRef(name, {\n kind: \"Enum\",\n graphqlKind: \"Enum\",\n name,\n values,\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions\n });\n this.configStore.addTypeRef(ref);\n if (typeof param !== \"string\") {\n this.configStore.associateParamWithRef(param, ref);\n }\n return ref;\n }\n scalarType(name, options) {\n const ref = new ScalarRef(name, {\n kind: \"Scalar\",\n graphqlKind: \"Scalar\",\n name,\n description: options.description,\n parseLiteral: options.parseLiteral,\n parseValue: options.parseValue,\n serialize: options.serialize,\n pothosOptions: options,\n extensions: options.extensions\n });\n this.configStore.addTypeRef(ref);\n return ref;\n }\n addScalarType(name, scalar, ...args) {\n const [options = {}] = args;\n const config = scalar.toConfig();\n return this.scalarType(name, {\n ...config,\n ...options,\n extensions: {\n ...config.extensions,\n ...options.extensions\n }\n });\n }\n inputType(param, options) {\n verifyRef(param);\n const name = typeof param === \"string\" ? param : param.name;\n const ref = typeof param === \"string\" ? new InputObjectRef(name) : param;\n ref.updateConfig({\n kind: \"InputObject\",\n graphqlKind: \"InputObject\",\n name,\n isOneOf: options.isOneOf,\n description: options.description,\n pothosOptions: options,\n extensions: options.extensions\n });\n this.configStore.addTypeRef(ref);\n if (param !== ref && typeof param !== \"string\") {\n this.configStore.associateParamWithRef(param, ref);\n }\n this.configStore.addInputFields(ref, () => options.fields(new InputFieldBuilder(this, \"InputObject\")));\n return ref;\n }\n inputRef(name) {\n return new ImplementableInputObjectRef(this, name);\n }\n objectRef(name) {\n return new ImplementableObjectRef(this, name);\n }\n interfaceRef(name) {\n return new ImplementableInterfaceRef(this, name);\n }\n toSchema(...args) {\n const [options = {}] = args;\n const { directives, extensions } = options;\n const scalars = [\n GraphQLID,\n GraphQLInt,\n GraphQLFloat,\n GraphQLString,\n GraphQLBoolean\n ];\n for (const scalar of scalars) {\n if (!this.configStore.hasImplementation(scalar.name)) {\n this.addScalarType(scalar.name, scalar);\n }\n }\n const buildCache = new BuildCache(this, options);\n buildCache.plugin.beforeBuild();\n buildCache.buildAll();\n const builtTypes = [\n ...buildCache.types.values()\n ];\n const queryName = this.configStore.hasConfig(this.queryRef) ? this.configStore.getTypeConfig(this.queryRef).name : \"Query\";\n const mutationName = this.configStore.hasConfig(this.mutationRef) ? this.configStore.getTypeConfig(this.mutationRef).name : \"Mutation\";\n const subscriptionName = this.configStore.hasConfig(this.subscriptionRef) ? this.configStore.getTypeConfig(this.subscriptionRef).name : \"Subscription\";\n const schema = new GraphQLSchema({\n query: buildCache.types.get(queryName),\n mutation: buildCache.types.get(mutationName),\n subscription: buildCache.types.get(subscriptionName),\n extensions: extensions !== null && extensions !== void 0 ? extensions : {},\n directives: directives,\n types: builtTypes\n });\n const processedSchema = buildCache.plugin.afterBuild(schema);\n return options.sortSchema === false ? processedSchema : lexicographicSortSchema(processedSchema);\n }\n constructor(options) {\n _define_property(this, \"$inferSchemaTypes\", void 0);\n _define_property(this, \"queryRef\", new QueryRef(\"Query\"));\n _define_property(this, \"mutationRef\", new MutationRef(\"Mutation\"));\n _define_property(this, \"subscriptionRef\", new SubscriptionRef(\"Subscription\"));\n _define_property(this, \"configStore\", void 0);\n _define_property(this, \"options\", void 0);\n _define_property(this, \"defaultFieldNullability\", void 0);\n _define_property(this, \"defaultInputFieldRequiredness\", void 0);\n this.options = [\n ...SchemaBuilder.optionNormalizers.values()\n ].reduce((opts, normalize) => {\n if (options.defaults && typeof normalize[options.defaults] === \"function\") {\n // biome-ignore lint/performance/noAccumulatingSpread: this is fine\n return Object.assign(opts, normalize[options.defaults](opts));\n }\n return opts;\n }, options);\n this.configStore = new ConfigStore(this);\n var _options_defaultFieldNullability;\n this.defaultFieldNullability = (_options_defaultFieldNullability = options.defaultFieldNullability) !== null && _options_defaultFieldNullability !== void 0 ? _options_defaultFieldNullability : options.defaults !== \"v3\";\n var _options_defaultInputFieldRequiredness;\n this.defaultInputFieldRequiredness = (_options_defaultInputFieldRequiredness = options.defaultInputFieldRequiredness) !== null && _options_defaultInputFieldRequiredness !== void 0 ? _options_defaultInputFieldRequiredness : false;\n }\n}\n_define_property(SchemaBuilder, \"plugins\", {});\n_define_property(SchemaBuilder, \"optionNormalizers\", new Map());\n_define_property(SchemaBuilder, \"allowPluginReRegistration\", false);\n//# sourceMappingURL=builder.js.map\n","import { SchemaBuilder as SchemaBuilderClass } from './builder.js';\nimport { FieldBuilder as InternalFieldBuilder } from './fieldUtils/builder.js';\nimport { InputFieldBuilder as InternalInputFieldBuilder } from './fieldUtils/input.js';\nimport { InterfaceFieldBuilder as InternalInterfaceFieldBuilder } from './fieldUtils/interface.js';\nimport { MutationFieldBuilder as InternalMutationFieldBuilder } from './fieldUtils/mutation.js';\nimport { ObjectFieldBuilder as InternalObjectFieldBuilder } from './fieldUtils/object.js';\nimport { QueryFieldBuilder as InternalQueryFieldBuilder } from './fieldUtils/query.js';\nimport { RootFieldBuilder as InternalRootFieldBuilder } from './fieldUtils/root.js';\nimport { SubscriptionFieldBuilder as InternalSubscriptionFieldBuilder } from './fieldUtils/subscription.js';\nimport { ArgumentRef as InternalArgumentRef } from './refs/arg.js';\nimport { BaseTypeRef as InternalBaseTypeRef } from './refs/base.js';\nimport { EnumRef as InternalEnumRef } from './refs/enum.js';\nimport { FieldRef as InternalFieldRef } from './refs/field.js';\nimport { InputFieldRef as InternalInputFieldRef } from './refs/input-field.js';\nimport { InputListRef as InternalInputListRef } from './refs/input-list.js';\nimport { ImplementableInputObjectRef as InternalImplementableInputObjectRef, InputObjectRef as InternalInputObjectRef } from './refs/input-object.js';\nimport { ImplementableInterfaceRef as InternalImplementableInterfaceRef, InterfaceRef as InternalInterfaceRef } from './refs/interface.js';\nimport { ListRef as InternalListRef } from './refs/list.js';\nimport { ImplementableObjectRef as InternalImplementableObjectRef, ObjectRef as InternalObjectRef } from './refs/object.js';\nimport { ScalarRef as InternalScalarRef } from './refs/scalar.js';\nimport { UnionRef as InternalUnionRef } from './refs/union.js';\nimport './types/global/index.js';\nexport * from './errors.js';\nexport * from './plugins/index.js';\nexport * from './types/index.js';\nexport * from './utils/index.js';\nconst SchemaBuilder = SchemaBuilderClass;\nexport default SchemaBuilder;\nexport const FieldBuilder = InternalFieldBuilder;\nexport const RootFieldBuilder = InternalRootFieldBuilder;\nexport const QueryFieldBuilder = InternalQueryFieldBuilder;\nexport const MutationFieldBuilder = InternalMutationFieldBuilder;\nexport const SubscriptionFieldBuilder = InternalSubscriptionFieldBuilder;\nexport const ObjectFieldBuilder = InternalObjectFieldBuilder;\nexport const InterfaceFieldBuilder = InternalInterfaceFieldBuilder;\nexport const InputFieldBuilder = InternalInputFieldBuilder;\nexport const BaseTypeRef = InternalBaseTypeRef;\nexport const EnumRef = InternalEnumRef;\nexport const InputObjectRef = InternalInputObjectRef;\nexport const ImplementableInputObjectRef = InternalImplementableInputObjectRef;\nexport const InputListRef = InternalInputListRef;\nexport const InterfaceRef = InternalInterfaceRef;\nexport const ImplementableInterfaceRef = InternalImplementableInterfaceRef;\nexport const ObjectRef = InternalObjectRef;\nexport const ImplementableObjectRef = InternalImplementableObjectRef;\nexport const ScalarRef = InternalScalarRef;\nexport const UnionRef = InternalUnionRef;\nexport const ListRef = InternalListRef;\nexport const FieldRef = InternalFieldRef;\nexport const InputFieldRef = InternalInputFieldRef;\nexport const ArgumentRef = InternalArgumentRef;\nexport { BuildCache } from './build-cache.js';\nexport { BuiltinScalarRef } from './refs/builtin-scalar.js';\nexport { InputTypeRef } from './refs/input.js';\nexport { MutationRef } from './refs/mutation.js';\nexport { OutputTypeRef } from './refs/output.js';\nexport { QueryRef } from './refs/query.js';\nexport { SubscriptionRef } from './refs/subscription.js';\n//# sourceMappingURL=index.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\nconst ansiCodes = {\n red: '\\x1b[31m',\n yellow: '\\x1b[33m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n reset: '\\x1b[0m',\n};\nexport const warnPrefix = ansiCodes.yellow + 'WARN' + ansiCodes.reset;\nexport const infoPrefix = ansiCodes.cyan + 'INFO' + ansiCodes.reset;\nexport const errorPrefix = ansiCodes.red + 'ERR' + ansiCodes.reset;\nexport const debugPrefix = ansiCodes.magenta + 'DEBUG' + ansiCodes.reset;\nconst logLevelScores = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n silent: 4,\n};\nconst noop = () => { };\nconst consoleLog = (prefix) => (...args) => console.log(prefix, ...args);\nconst debugLog = console.debug\n ? (...args) => console.debug(debugPrefix, ...args)\n : consoleLog(debugPrefix);\nconst infoLog = console.info\n ? (...args) => console.info(infoPrefix, ...args)\n : consoleLog(infoPrefix);\nconst warnLog = console.warn\n ? (...args) => console.warn(warnPrefix, ...args)\n : consoleLog(warnPrefix);\nconst errorLog = console.error\n ? (...args) => console.error(errorPrefix, ...args)\n : consoleLog(errorPrefix);\nexport const createLogger = (logLevel = globalThis.process?.env['DEBUG'] === '1' ? 'debug' : 'info') => {\n const score = logLevelScores[logLevel];\n return {\n debug: score > logLevelScores.debug ? noop : debugLog,\n info: score > logLevelScores.info ? noop : infoLog,\n warn: score > logLevelScores.warn ? noop : warnLog,\n error: score > logLevelScores.error ? noop : errorLog,\n };\n};\n","export default \"<!doctype html><html lang=en><head><meta charset=utf-8><title>__TITLE__</title><link rel=icon href=https://raw.githubusercontent.com/graphql-hive/graphql-yoga/refs/heads/main/website/src/app/favicon.ico><link crossorigin rel=stylesheet href=https://unpkg.com/@graphql-yoga/graphiql@4.4.1/dist/graphiql.css></head><body id=body class=no-focus-outline><noscript>You need to enable JavaScript to run this app.</noscript><div id=root>Loading __TITLE__...</div><script>function prepareBlob(r){const o=new Blob([r],{type:\\\"application/javascript\\\"});return URL.createObjectURL(o)}const workers={},workerUrls={editorWorkerService:\\\"https://unpkg.com/@graphql-yoga/graphiql@4.4.1/dist/monacoeditorwork/editor.worker.bundle.js\\\",json:\\\"https://unpkg.com/@graphql-yoga/graphiql@4.4.1/dist/monacoeditorwork/json.worker.bundle.js\\\",graphql:\\\"https://unpkg.com/@graphql-yoga/graphiql@4.4.1/dist/monacoeditorwork/graphql.worker..bundle.js\\\"};function prepareWorkers(){return Promise.all(Object.entries(workerUrls).map(async([r,o])=>{const e=await fetch(o),t=await e.text();workers[r]=prepareBlob(t)}))}self.MonacoEnvironment={globalAPI:!1,getWorkerUrl:function(r,o){return workers[o]}}</script><script src=https://unpkg.com/@graphql-yoga/graphiql@4.4.1/dist/yoga-graphiql.umd.js></script><script>prepareWorkers().finally(()=>{YogaGraphiQL.renderYogaGraphiQL(root,__OPTS__)})</script></body></html>\";\n","import { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport graphiqlHTML from '../graphiql-html.js';\nexport function shouldRenderGraphiQL({ headers, method }) {\n return method === 'GET' && !!headers?.get('accept')?.includes('text/html');\n}\nexport const renderGraphiQL = (opts) => graphiqlHTML\n .replace('__TITLE__', opts?.title || 'Yoga GraphiQL')\n .replace('__OPTS__', JSON.stringify(opts ?? {}));\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useGraphiQL(config) {\n const logger = config.logger ?? console;\n let graphiqlOptionsFactory;\n if (typeof config?.options === 'function') {\n graphiqlOptionsFactory = config?.options;\n }\n else if (typeof config?.options === 'object') {\n graphiqlOptionsFactory = () => config?.options;\n }\n else if (config?.options === false) {\n graphiqlOptionsFactory = () => false;\n }\n else {\n graphiqlOptionsFactory = () => ({});\n }\n const renderer = config?.render ?? renderGraphiQL;\n let urlPattern;\n const getUrlPattern = ({ URLPattern }) => {\n urlPattern ||= new URLPattern({\n pathname: config.graphqlEndpoint,\n });\n return urlPattern;\n };\n return {\n onRequest({ request, serverContext, fetchAPI, endResponse, url }) {\n if (shouldRenderGraphiQL(request) &&\n (request.url.endsWith(config.graphqlEndpoint) ||\n request.url.endsWith(`${config.graphqlEndpoint}/`) ||\n url.pathname === config.graphqlEndpoint ||\n url.pathname === `${config.graphqlEndpoint}/` ||\n getUrlPattern(fetchAPI).test(url))) {\n logger.debug(`Rendering GraphiQL`);\n return handleMaybePromise(() => graphiqlOptionsFactory(request, serverContext), graphiqlOptions => {\n if (graphiqlOptions) {\n return handleMaybePromise(() => renderer({\n ...(graphiqlOptions === true ? {} : graphiqlOptions),\n }), graphiqlBody => {\n const response = new fetchAPI.Response(graphiqlBody, {\n headers: {\n 'Content-Type': 'text/html',\n },\n status: 200,\n });\n endResponse(response);\n });\n }\n });\n }\n },\n };\n}\n","import { isSchema } from 'graphql';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nexport const useSchema = (schemaDef) => {\n if (schemaDef == null) {\n return {};\n }\n if (isSchema(schemaDef)) {\n return {\n onPluginInit({ setSchema }) {\n setSchema(schemaDef);\n },\n };\n }\n if ('then' in schemaDef) {\n let schema;\n return {\n onRequestParse() {\n return {\n onRequestParseDone() {\n if (!schema) {\n return handleMaybePromise(() => schemaDef, schemaDef => {\n schema = schemaDef;\n });\n }\n },\n };\n },\n onEnveloped({ setSchema }) {\n if (!schema) {\n throw new Error(`You provide a promise of a schema but it hasn't been resolved yet. Make sure you use this plugin with GraphQL Yoga.`);\n }\n setSchema(schema);\n },\n };\n }\n const schemaByRequest = new WeakMap();\n return {\n onRequestParse({ request, serverContext }) {\n return {\n onRequestParseDone() {\n return handleMaybePromise(() => schemaDef({\n ...serverContext,\n request,\n }), schemaDef => {\n schemaByRequest.set(request, schemaDef);\n });\n },\n };\n },\n onEnveloped({ setSchema, context }) {\n if (context?.request == null) {\n throw new Error('Request object is not available in the context. Make sure you use this plugin with GraphQL Yoga.');\n }\n const schema = schemaByRequest.get(context.request);\n if (schema == null) {\n throw new Error(`No schema found for this request. Make sure you use this plugin with GraphQL Yoga.`);\n }\n setSchema(schema);\n },\n };\n};\n","// Taken from graphql-js\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/inspect.ts\nconst MAX_RECURSIVE_DEPTH = 3;\n/**\n * Used to print values in error messages.\n */\nexport function inspect(value) {\n return formatValue(value, []);\n}\nfunction formatValue(value, seenValues) {\n switch (typeof value) {\n case 'string':\n return JSON.stringify(value);\n case 'function':\n return value.name ? `[function ${value.name}]` : '[function]';\n case 'object':\n return formatObjectValue(value, seenValues);\n default:\n return String(value);\n }\n}\nfunction formatError(value) {\n // eslint-disable-next-line no-constant-condition\n if ((value.name = 'GraphQLError')) {\n return value.toString();\n }\n return `${value.name}: ${value.message};\\n ${value.stack}`;\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n if (value === null) {\n return 'null';\n }\n if (value instanceof Error) {\n if (value.name === 'AggregateError') {\n return (formatError(value) +\n '\\n' +\n formatArray(value.errors, previouslySeenValues));\n }\n return formatError(value);\n }\n if (previouslySeenValues.includes(value)) {\n return '[Circular]';\n }\n const seenValues = [...previouslySeenValues, value];\n if (isJSONable(value)) {\n const jsonValue = value.toJSON();\n // check for infinite recursion\n if (jsonValue !== value) {\n return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n }\n }\n else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n return formatObject(value, seenValues);\n}\nfunction isJSONable(value) {\n return typeof value.toJSON === 'function';\n}\nfunction formatObject(object, seenValues) {\n const entries = Object.entries(object);\n if (entries.length === 0) {\n return '{}';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues));\n return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n const len = array.length;\n const items = [];\n for (let i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n return '[' + items.join(', ') + ']';\n}\nfunction getObjectTag(object) {\n const tag = Object.prototype.toString\n .call(object)\n .replace(/^\\[object /, '')\n .replace(/]$/, '');\n if (tag === 'Object' && typeof object.constructor === 'function') {\n const name = object.constructor.name;\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n return tag;\n}\n","import { locatedError as _locatedError, GraphQLError, versionInfo } from 'graphql';\nconst possibleGraphQLErrorProperties = [\n 'message',\n 'locations',\n 'path',\n 'nodes',\n 'source',\n 'positions',\n 'originalError',\n 'name',\n 'stack',\n 'extensions',\n 'coordinate',\n];\nexport function isGraphQLErrorLike(error) {\n return (error != null &&\n typeof error === 'object' &&\n Object.keys(error).every(key => possibleGraphQLErrorProperties.includes(key)));\n}\nexport function createGraphQLError(message, options) {\n if (options?.originalError &&\n !(options.originalError instanceof Error) &&\n isGraphQLErrorLike(options.originalError)) {\n options.originalError = createGraphQLError(options.originalError.message, options.originalError);\n }\n // To avoid type error on graphql <16, we have to use an any type here\n const Constructor = GraphQLError;\n const error = versionInfo.major >= 16\n ? new Constructor(message, options)\n : new Constructor(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);\n if (options?.coordinate && error.coordinate == null) {\n Object.defineProperties(error, {\n coordinate: { value: options.coordinate, enumerable: true, configurable: true },\n });\n }\n return error;\n}\nexport function getSchemaCoordinate(error) {\n return error.coordinate;\n}\nexport function locatedError(rawError, nodes, path, info) {\n const error = _locatedError(rawError, nodes, path);\n // `graphql` locatedError is only changing path and nodes if it is not already defined\n if (!error.coordinate && info && error.coordinate == null) {\n const coordinate = `${info.parentType.name}.${info.fieldName}`;\n Object.defineProperties(error, {\n coordinate: { value: coordinate, enumerable: true, configurable: true },\n });\n }\n return error;\n}\nexport function relocatedError(originalError, path, info) {\n return createGraphQLError(originalError.message, {\n nodes: originalError.nodes,\n source: originalError.source,\n positions: originalError.positions,\n path: path == null ? originalError.path : path,\n originalError,\n extensions: originalError.extensions,\n coordinate: info ? `${info.parentType.name}.${info.fieldName}` : undefined,\n });\n}\n","import { handleMaybePromise, isPromise } from '@whatwg-node/promise-helpers';\nexport function isIterableObject(value) {\n return value != null && typeof value === 'object' && Symbol.iterator in value;\n}\nexport function isObjectLike(value) {\n return typeof value === 'object' && value !== null;\n}\nexport { isPromise };\nexport function promiseReduce(values, callbackFn, initialValue) {\n let accumulator = initialValue;\n for (const value of values) {\n accumulator = handleMaybePromise(() => accumulator, resolved => callbackFn(resolved, value));\n }\n return accumulator;\n}\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","import { inspect } from 'cross-inspect';\nimport { isNonNullType, Kind, print, valueFromAST, } from 'graphql';\nimport { createGraphQLError } from './errors.js';\nimport { hasOwnProperty } from './jsutils.js';\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getArgumentValues(def, node, variableValues = {}) {\n const coercedValues = {};\n const argumentNodes = node.arguments ?? [];\n const argNodeMap = argumentNodes.reduce((prev, arg) => ({\n ...prev,\n [arg.name.value]: arg,\n }), {});\n for (const { name, type: argType, defaultValue } of def.args) {\n const argumentNode = argNodeMap[name];\n if (!argumentNode) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n }\n else if (isNonNullType(argType)) {\n throw createGraphQLError(`Argument \"${name}\" of required type \"${inspect(argType)}\" ` + 'was not provided.', {\n nodes: [node],\n });\n }\n continue;\n }\n const valueNode = argumentNode.value;\n let isNull = valueNode.kind === Kind.NULL;\n if (valueNode.kind === Kind.VARIABLE) {\n const variableName = valueNode.name.value;\n if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n if (defaultValue !== undefined) {\n coercedValues[name] = defaultValue;\n }\n else if (isNonNullType(argType)) {\n throw createGraphQLError(`Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n `was provided the variable \"$${variableName}\" which was not provided a runtime value.`, {\n nodes: [valueNode],\n });\n }\n continue;\n }\n isNull = variableValues[variableName] == null;\n }\n if (isNull && isNonNullType(argType)) {\n throw createGraphQLError(`Argument \"${name}\" of non-null type \"${inspect(argType)}\" ` + 'must not be null.', {\n nodes: [valueNode],\n });\n }\n const coercedValue = valueFromAST(valueNode, argType, variableValues);\n if (coercedValue === undefined) {\n // Note: ValuesOfCorrectTypeRule validation should catch this before\n // execution. This is a runtime check to ensure execution does not\n // continue with an invalid argument value.\n throw createGraphQLError(`Argument \"${name}\" has invalid value ${print(valueNode)}.`, {\n nodes: [valueNode],\n });\n }\n coercedValues[name] = coercedValue;\n }\n return coercedValues;\n}\n","export function memoize1(fn) {\n const memoize1cache = new WeakMap();\n return function memoized(a1) {\n const cachedValue = memoize1cache.get(a1);\n if (cachedValue === undefined) {\n const newValue = fn(a1);\n memoize1cache.set(a1, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize2(fn) {\n const memoize2cache = new WeakMap();\n return function memoized(a1, a2) {\n let cache2 = memoize2cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize2cache.set(a1, cache2);\n const newValue = fn(a1, a2);\n cache2.set(a2, newValue);\n return newValue;\n }\n const cachedValue = cache2.get(a2);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2);\n cache2.set(a2, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize3(fn) {\n const memoize3Cache = new WeakMap();\n return function memoized(a1, a2, a3) {\n let cache2 = memoize3Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize3Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n const cachedValue = cache3.get(a3);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3);\n cache3.set(a3, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize4(fn) {\n const memoize4Cache = new WeakMap();\n return function memoized(a1, a2, a3, a4) {\n let cache2 = memoize4Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize4Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n const cache4 = cache3.get(a3);\n if (!cache4) {\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n const cachedValue = cache4.get(a4);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4);\n cache4.set(a4, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize5(fn) {\n const memoize5Cache = new WeakMap();\n return function memoized(a1, a2, a3, a4, a5) {\n let cache2 = memoize5Cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize5Cache.set(a1, cache2);\n const cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache3 = cache2.get(a2);\n if (!cache3) {\n cache3 = new WeakMap();\n cache2.set(a2, cache3);\n const cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache4 = cache3.get(a3);\n if (!cache4) {\n cache4 = new WeakMap();\n cache3.set(a3, cache4);\n const cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n let cache5 = cache4.get(a4);\n if (!cache5) {\n cache5 = new WeakMap();\n cache4.set(a4, cache5);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n const cachedValue = cache5.get(a5);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4, a5);\n cache5.set(a5, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize2of4(fn) {\n const memoize2of4cache = new WeakMap();\n return function memoized(a1, a2, a3, a4) {\n let cache2 = memoize2of4cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize2of4cache.set(a1, cache2);\n const newValue = fn(a1, a2, a3, a4);\n cache2.set(a2, newValue);\n return newValue;\n }\n const cachedValue = cache2.get(a2);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4);\n cache2.set(a2, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\nexport function memoize2of5(fn) {\n const memoize2of4cache = new WeakMap();\n return function memoized(a1, a2, a3, a4, a5) {\n let cache2 = memoize2of4cache.get(a1);\n if (!cache2) {\n cache2 = new WeakMap();\n memoize2of4cache.set(a1, cache2);\n const newValue = fn(a1, a2, a3, a4, a5);\n cache2.set(a2, newValue);\n return newValue;\n }\n const cachedValue = cache2.get(a2);\n if (cachedValue === undefined) {\n const newValue = fn(a1, a2, a3, a4, a5);\n cache2.set(a2, newValue);\n return newValue;\n }\n return cachedValue;\n };\n}\n","import { createGraphQLError } from './errors.js';\nimport { memoize1 } from './memoize.js';\nexport function getDefinedRootType(schema, operation, nodes) {\n const rootTypeMap = getRootTypeMap(schema);\n const rootType = rootTypeMap.get(operation);\n if (rootType == null) {\n throw createGraphQLError(`Schema is not configured to execute ${operation} operation.`, {\n nodes,\n });\n }\n return rootType;\n}\nexport const getRootTypeNames = memoize1(function getRootTypeNames(schema) {\n const rootTypes = getRootTypes(schema);\n return new Set([...rootTypes].map(type => type.name));\n});\nexport const getRootTypes = memoize1(function getRootTypes(schema) {\n const rootTypeMap = getRootTypeMap(schema);\n return new Set(rootTypeMap.values());\n});\nexport const getRootTypeMap = memoize1(function getRootTypeMap(schema) {\n const rootTypeMap = new Map();\n const queryType = schema.getQueryType();\n if (queryType) {\n rootTypeMap.set('query', queryType);\n }\n const mutationType = schema.getMutationType();\n if (mutationType) {\n rootTypeMap.set('mutation', mutationType);\n }\n const subscriptionType = schema.getSubscriptionType();\n if (subscriptionType) {\n rootTypeMap.set('subscription', subscriptionType);\n }\n return rootTypeMap;\n});\n","/**\n * ES6 Map with additional `add` method to accumulate items.\n */\nexport class AccumulatorMap extends Map {\n get [Symbol.toStringTag]() {\n return 'AccumulatorMap';\n }\n add(key, item) {\n const group = this.get(key);\n if (group === undefined) {\n this.set(key, [item]);\n }\n else {\n group.push(item);\n }\n }\n}\n","import { DirectiveLocation, GraphQLBoolean, GraphQLDirective, GraphQLInt, GraphQLNonNull, GraphQLString, } from 'graphql';\n/**\n * Used to conditionally defer fragments.\n */\nexport const GraphQLDeferDirective = new GraphQLDirective({\n name: 'defer',\n description: 'Directs the executor to defer this fragment when the `if` argument is true or undefined.',\n locations: [DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Deferred when true or undefined.',\n defaultValue: true,\n },\n label: {\n type: GraphQLString,\n description: 'Unique name',\n },\n },\n});\n/**\n * Used to conditionally stream list fields.\n */\nexport const GraphQLStreamDirective = new GraphQLDirective({\n name: 'stream',\n description: 'Directs the executor to stream plural fields when the `if` argument is true or undefined.',\n locations: [DirectiveLocation.FIELD],\n args: {\n if: {\n type: new GraphQLNonNull(GraphQLBoolean),\n description: 'Stream when true or undefined.',\n defaultValue: true,\n },\n label: {\n type: GraphQLString,\n description: 'Unique name',\n },\n initialCount: {\n defaultValue: 0,\n type: GraphQLInt,\n description: 'Number of items to return immediately',\n },\n },\n});\n","import { getDirectiveValues, GraphQLIncludeDirective, GraphQLSkipDirective, isAbstractType, Kind, typeFromAST, } from 'graphql';\nimport { AccumulatorMap } from './AccumulatorMap.js';\nimport { GraphQLDeferDirective } from './directives.js';\nimport { memoize5 } from './memoize.js';\nfunction collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, patches, visitedFragmentNames) {\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n fields.add(getFieldEntryKey(selection), selection);\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (!shouldIncludeNode(variableValues, selection) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)) {\n continue;\n }\n const defer = getDeferValues(variableValues, selection);\n if (defer) {\n const patchFields = new AccumulatorMap();\n collectFieldsImpl(schema, fragments, variableValues, runtimeType, selection.selectionSet, patchFields, patches, visitedFragmentNames);\n patches.push({\n label: defer.label,\n fields: patchFields,\n });\n }\n else {\n collectFieldsImpl(schema, fragments, variableValues, runtimeType, selection.selectionSet, fields, patches, visitedFragmentNames);\n }\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n if (!shouldIncludeNode(variableValues, selection)) {\n continue;\n }\n const defer = getDeferValues(variableValues, selection);\n if (visitedFragmentNames.has(fragName) && !defer) {\n continue;\n }\n const fragment = fragments[fragName];\n if (!fragment || !doesFragmentConditionMatch(schema, fragment, runtimeType)) {\n continue;\n }\n if (!defer) {\n visitedFragmentNames.add(fragName);\n }\n if (defer) {\n const patchFields = new AccumulatorMap();\n collectFieldsImpl(schema, fragments, variableValues, runtimeType, fragment.selectionSet, patchFields, patches, visitedFragmentNames);\n patches.push({\n label: defer.label,\n fields: patchFields,\n });\n }\n else {\n collectFieldsImpl(schema, fragments, variableValues, runtimeType, fragment.selectionSet, fields, patches, visitedFragmentNames);\n }\n break;\n }\n }\n }\n}\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n */\nexport function collectFields(schema, fragments, variableValues, runtimeType, selectionSet) {\n const fields = new AccumulatorMap();\n const patches = [];\n collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, patches, new Set());\n return { fields, patches };\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\nexport function shouldIncludeNode(variableValues, node) {\n const skip = getDirectiveValues(GraphQLSkipDirective, node, variableValues);\n if (skip?.['if'] === true) {\n return false;\n }\n const include = getDirectiveValues(GraphQLIncludeDirective, node, variableValues);\n if (include?.['if'] === false) {\n return false;\n }\n return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\nexport function doesFragmentConditionMatch(schema, fragment, type) {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n const conditionalType = typeFromAST(schema, typeConditionNode);\n if (conditionalType === type) {\n return true;\n }\n if (isAbstractType(conditionalType)) {\n const possibleTypes = schema.getPossibleTypes(conditionalType);\n return possibleTypes.includes(type);\n }\n return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\nexport function getFieldEntryKey(node) {\n return node.alias ? node.alias.value : node.name.value;\n}\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\nexport function getDeferValues(variableValues, node) {\n const defer = getDirectiveValues(GraphQLDeferDirective, node, variableValues);\n if (!defer) {\n return;\n }\n if (defer['if'] === false) {\n return;\n }\n return {\n label: typeof defer['label'] === 'string' ? defer['label'] : undefined,\n };\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n */\nexport const collectSubFields = memoize5(function collectSubfields(schema, fragments, variableValues, returnType, fieldNodes) {\n const subFieldNodes = new AccumulatorMap();\n const visitedFragmentNames = new Set();\n const subPatches = [];\n const subFieldsAndPatches = {\n fields: subFieldNodes,\n patches: subPatches,\n };\n for (const node of fieldNodes) {\n if (node.selectionSet) {\n collectFieldsImpl(schema, fragments, variableValues, returnType, node.selectionSet, subFieldNodes, subPatches, visitedFragmentNames);\n }\n }\n return subFieldsAndPatches;\n});\n","export function isAsyncIterable(value) {\n return value?.[Symbol.asyncIterator] != null;\n}\n","/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nexport function addPath(prev, key, typename) {\n return { prev, key, typename };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\nexport function pathToArray(path) {\n const flattened = [];\n let curr = path;\n while (curr) {\n flattened.push(curr.key);\n curr = curr.prev;\n }\n return flattened.reverse();\n}\n/**\n * Build a string describing the path.\n */\nexport function printPathArray(path) {\n return path\n .map(key => (typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key))\n .join('');\n}\n","export class PonyfillSuppressedError extends Error {\n error;\n suppressed;\n // eslint-disable-next-line n/handle-callback-err\n constructor(error, suppressed, message) {\n super(message);\n this.error = error;\n this.suppressed = suppressed;\n this.name = 'SuppressedError';\n Error.captureStackTrace(this, this.constructor);\n }\n}\n","export const DisposableSymbols = {\n get dispose() {\n return Symbol.dispose || Symbol.for('dispose');\n },\n get asyncDispose() {\n return Symbol.asyncDispose || Symbol.for('asyncDispose');\n },\n};\nexport function patchSymbols() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - we ponyfill these symbols\n Symbol.dispose ||= Symbol.for('dispose');\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - we ponyfill these symbols\n Symbol.asyncDispose ||= Symbol.for('asyncDispose');\n}\n","import { DisposableSymbols } from './symbols.js';\nexport function isSyncDisposable(obj) {\n return obj?.[DisposableSymbols.dispose] != null;\n}\nexport function isAsyncDisposable(obj) {\n return obj?.[DisposableSymbols.asyncDispose] != null;\n}\n","import { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { PonyfillSuppressedError } from './SupressedError.js';\nimport { DisposableSymbols } from './symbols.js';\nimport { isAsyncDisposable, isSyncDisposable } from './utils.js';\nconst SuppressedError = globalThis.SuppressedError || PonyfillSuppressedError;\nexport class PonyfillAsyncDisposableStack {\n callbacks = [];\n get disposed() {\n return this.callbacks.length === 0;\n }\n use(value) {\n if (isAsyncDisposable(value)) {\n this.callbacks.push(() => value[DisposableSymbols.asyncDispose]());\n }\n else if (isSyncDisposable(value)) {\n this.callbacks.push(() => value[DisposableSymbols.dispose]());\n }\n return value;\n }\n adopt(value, onDisposeAsync) {\n if (onDisposeAsync) {\n this.callbacks.push(() => onDisposeAsync(value));\n }\n return value;\n }\n defer(onDisposeAsync) {\n if (onDisposeAsync) {\n this.callbacks.push(onDisposeAsync);\n }\n }\n move() {\n const stack = new PonyfillAsyncDisposableStack();\n stack.callbacks = this.callbacks;\n this.callbacks = [];\n return stack;\n }\n disposeAsync() {\n return this[DisposableSymbols.asyncDispose]();\n }\n _error;\n _iterateCallbacks() {\n const cb = this.callbacks.pop();\n if (cb) {\n return handleMaybePromise(cb, () => this._iterateCallbacks(), error => {\n this._error = this._error ? new SuppressedError(error, this._error) : error;\n return this._iterateCallbacks();\n });\n }\n }\n [DisposableSymbols.asyncDispose]() {\n const res$ = this._iterateCallbacks();\n if (res$?.then) {\n return res$.then(() => {\n if (this._error) {\n const error = this._error;\n this._error = undefined;\n throw error;\n }\n });\n }\n if (this._error) {\n const error = this._error;\n this._error = undefined;\n throw error;\n }\n return undefined;\n }\n [Symbol.toStringTag] = 'AsyncDisposableStack';\n}\n","import { PonyfillAsyncDisposableStack } from './AsyncDisposableStack.js';\nimport { PonyfillDisposableStack } from './DisposableStack.js';\nimport { PonyfillSuppressedError } from './SupressedError.js';\nexport const DisposableStack = globalThis.DisposableStack || PonyfillDisposableStack;\nexport const AsyncDisposableStack = globalThis.AsyncDisposableStack || PonyfillAsyncDisposableStack;\nexport const SuppressedError = globalThis.SuppressedError || PonyfillSuppressedError;\nexport * from './symbols.js';\n","export function coerceError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === 'object' && error != null) {\n if ('message' in error && typeof error.message === 'string') {\n let errorOptions;\n if ('cause' in error) {\n errorOptions = { cause: error.cause };\n }\n const coercedError = new Error(error.message, errorOptions);\n if ('stack' in error && typeof error.stack === 'string') {\n coercedError.stack = error.stack;\n }\n if ('name' in error && typeof error.name === 'string') {\n coercedError.name = error.name;\n }\n return coercedError;\n }\n }\n return new Error(String(error));\n}\n","import { DisposableSymbols } from '@whatwg-node/disposablestack';\n/**\n * Given an AsyncIterable of AsyncIterables, flatten all yielded results into a\n * single AsyncIterable.\n */\nexport function flattenAsyncIterable(iterable) {\n // You might think this whole function could be replaced with\n //\n // async function* flattenAsyncIterable(iterable) {\n // for await (const subIterator of iterable) {\n // yield* subIterator;\n // }\n // }\n //\n // but calling `.return()` on the iterator it returns won't interrupt the `for await`.\n const topIterator = iterable[Symbol.asyncIterator]();\n let currentNestedIterator;\n let waitForCurrentNestedIterator;\n let done = false;\n async function next() {\n if (done) {\n return { value: undefined, done: true };\n }\n try {\n if (!currentNestedIterator) {\n // Somebody else is getting it already.\n if (waitForCurrentNestedIterator) {\n await waitForCurrentNestedIterator;\n return await next();\n }\n // Nobody else is getting it. We should!\n let resolve;\n waitForCurrentNestedIterator = new Promise(r => {\n resolve = r;\n });\n const topIteratorResult = await topIterator.next();\n if (topIteratorResult.done) {\n // Given that done only ever transitions from false to true,\n // require-atomic-updates is being unnecessarily cautious.\n done = true;\n return await next();\n }\n // eslint is making a reasonable point here, but we've explicitly protected\n // ourself from the race condition by ensuring that only the single call\n // that assigns to waitForCurrentNestedIterator is allowed to assign to\n // currentNestedIterator or waitForCurrentNestedIterator.\n currentNestedIterator = topIteratorResult.value[Symbol.asyncIterator]();\n waitForCurrentNestedIterator = undefined;\n resolve();\n return await next();\n }\n const rememberCurrentNestedIterator = currentNestedIterator;\n const nestedIteratorResult = await currentNestedIterator.next();\n if (!nestedIteratorResult.done) {\n return nestedIteratorResult;\n }\n // The nested iterator is done. If it's still the current one, make it not\n // current. (If it's not the current one, somebody else has made us move on.)\n if (currentNestedIterator === rememberCurrentNestedIterator) {\n currentNestedIterator = undefined;\n }\n return await next();\n }\n catch (err) {\n done = true;\n throw err;\n }\n }\n return {\n next,\n async return() {\n done = true;\n await Promise.all([currentNestedIterator?.return?.(), topIterator.return?.()]);\n return { value: undefined, done: true };\n },\n async throw(error) {\n done = true;\n await Promise.all([currentNestedIterator?.throw?.(error), topIterator.throw?.(error)]);\n /* c8 ignore next */\n throw error;\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n async [DisposableSymbols.asyncDispose]() {\n done = true;\n await Promise.all([\n currentNestedIterator?.[DisposableSymbols.asyncDispose]?.(),\n topIterator?.[DisposableSymbols.asyncDispose]?.(),\n ]);\n },\n };\n}\n","export function invariant(condition, message) {\n if (!condition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import { handleMaybePromise, isPromise } from '@whatwg-node/promise-helpers';\n/**\n * This function transforms a JS object `Record<string, Promise<T>>` into\n * a `Promise<Record<string, T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nexport function promiseForObject(object, signal, signalPromise) {\n signal?.throwIfAborted();\n const resolvedObject = Object.create(null);\n const promises = [];\n for (const key in object) {\n const valueSet$ = handleMaybePromise(() => object[key], resolvedValue => {\n resolvedObject[key] = resolvedValue;\n });\n if (isPromise(valueSet$)) {\n promises.push(valueSet$);\n }\n }\n if (!promises.length) {\n return resolvedObject;\n }\n const promiseAll = promises.length === 1 ? promises[0] : Promise.all(promises);\n if (signalPromise) {\n return Promise.race([signalPromise, promiseAll]).then(() => resolvedObject);\n }\n return promiseAll.then(() => resolvedObject);\n}\n","import { coerceInputValue, isInputType, isNonNullType, print, typeFromAST, valueFromAST, } from 'graphql';\nimport { createGraphQLError, hasOwnProperty, inspect, printPathArray } from '@graphql-tools/utils';\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getVariableValues(schema, varDefNodes, inputs, options) {\n const errors = [];\n const maxErrors = options?.maxErrors;\n try {\n const coerced = coerceVariableValues(schema, varDefNodes, inputs, error => {\n if (maxErrors != null && errors.length >= maxErrors) {\n throw createGraphQLError('Too many errors processing variables, error limit reached. Execution aborted.');\n }\n errors.push(error);\n });\n if (errors.length === 0) {\n return { coerced };\n }\n }\n catch (error) {\n errors.push(error);\n }\n return { errors };\n}\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n const coercedValues = {};\n for (const varDefNode of varDefNodes) {\n const varName = varDefNode.variable.name.value;\n const varType = typeFromAST(schema, varDefNode.type);\n if (!isInputType(varType)) {\n // Must use input types for variables. This should be caught during\n // validation, however is checked again here for safety.\n const varTypeStr = print(varDefNode.type);\n onError(createGraphQLError(`Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`, { nodes: varDefNode.type }));\n continue;\n }\n if (!hasOwnProperty(inputs, varName)) {\n if (varDefNode.defaultValue) {\n coercedValues[varName] = valueFromAST(varDefNode.defaultValue, varType);\n }\n else if (isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(createGraphQLError(`Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`, {\n nodes: varDefNode,\n }));\n }\n continue;\n }\n const value = inputs[varName];\n if (value === null && isNonNullType(varType)) {\n const varTypeStr = inspect(varType);\n onError(createGraphQLError(`Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`, {\n nodes: varDefNode,\n }));\n continue;\n }\n coercedValues[varName] = coerceInputValue(value, varType, (path, invalidValue, error) => {\n let prefix = `Variable \"$${varName}\" got invalid value ` + inspect(invalidValue);\n if (path.length > 0) {\n prefix += ` at \"${varName}${printPathArray(path)}\"`;\n }\n onError(createGraphQLError(prefix + '; ' + error.message, {\n nodes: varDefNode,\n originalError: error,\n }));\n });\n }\n return coercedValues;\n}\n","import { assertValidSchema, getDirectiveValues, GraphQLError, isAbstractType, isLeafType, isListType, isNonNullType, isObjectType, Kind, locatedError, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, versionInfo, } from 'graphql';\nimport { collectSubFields as _collectSubfields, addPath, collectFields, createGraphQLError, fakePromise, getArgumentValues, getDefinedRootType, GraphQLStreamDirective, inspect, isAsyncIterable, isIterableObject, isObjectLike, isPromise, mapAsyncIterator, memoize1, memoize3, pathToArray, promiseReduce, } from '@graphql-tools/utils';\nimport { DisposableSymbols } from '@whatwg-node/disposablestack';\nimport { createDeferredPromise, handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { coerceError } from './coerceError.js';\nimport { flattenAsyncIterable } from './flattenAsyncIterable.js';\nimport { invariant } from './invariant.js';\nimport { promiseForObject } from './promiseForObject.js';\nimport { getVariableValues } from './values.js';\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\nconst collectSubfields = memoize3((exeContext, returnType, fieldNodes) => _collectSubfields(exeContext.schema, exeContext.fragments, exeContext.variableValues, returnType, fieldNodes));\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification,\n * including `@defer` and `@stream` as proposed in\n * https://github.com/graphql/graphql-spec/pull/742\n *\n * This function returns a Promise of an IncrementalExecutionResults\n * object. This object either consists of a single ExecutionResult, or an\n * object containing an `initialResult` and a stream of `subsequentResults`.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nexport function execute(args) {\n // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n const exeContext = buildExecutionContext(args);\n // Return early errors if execution context failed.\n if (!('schema' in exeContext)) {\n return {\n errors: exeContext.map(e => {\n Object.defineProperty(e, 'extensions', {\n value: {\n ...e.extensions,\n http: {\n ...(e.extensions?.['http'] || {}),\n status: 400,\n },\n },\n });\n return e;\n }),\n };\n }\n return executeImpl(exeContext);\n}\nfunction executeImpl(exeContext) {\n exeContext.signal?.throwIfAborted();\n // Return a Promise that will eventually resolve to the data described by\n // The \"Response\" section of the GraphQL specification.\n //\n // If errors are encountered while executing a GraphQL field, only that\n // field and its descendants will be omitted, and sibling fields will still\n // be executed. An execution which encounters errors will still result in a\n // resolved Promise.\n //\n // Errors from sub-fields of a NonNull type may propagate to the top level,\n // at which point we still log the error and null the parent field, which\n // in this case is the entire response.\n return handleMaybePromise(() => executeOperation(exeContext), data => {\n const initialResult = buildResponse(data, exeContext.errors);\n if (exeContext.subsequentPayloads.size > 0) {\n return {\n initialResult: {\n ...initialResult,\n hasNext: true,\n },\n subsequentResults: yieldSubsequentPayloads(exeContext),\n };\n }\n return initialResult;\n }, (error) => {\n exeContext.signal?.throwIfAborted();\n if (error.errors) {\n exeContext.errors.push(...error.errors);\n }\n else {\n exeContext.errors.push(error);\n }\n return buildResponse(null, exeContext.errors);\n });\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\nexport function executeSync(args) {\n const result = execute(args);\n // Assert that the execution was synchronous.\n if (isPromise(result) || 'initialResult' in result) {\n throw new Error('GraphQL execution failed to complete synchronously.');\n }\n return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\nfunction buildResponse(data, errors) {\n return errors.length === 0 ? { data } : { errors, data };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\nexport function assertValidExecutionArguments(schema, document, rawVariableValues) {\n console.assert(!!document, 'Must provide document.');\n // If the schema used for execution is invalid, throw an error.\n assertValidSchema(schema);\n // Variables, if provided, must be an object.\n console.assert(rawVariableValues == null || isObjectLike(rawVariableValues), 'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.');\n}\nexport const getFragmentsFromDocument = memoize1(function getFragmentsFromDocument(document) {\n const fragments = Object.create(null);\n for (const definition of document.definitions) {\n if (definition.kind === Kind.FRAGMENT_DEFINITION) {\n fragments[definition.name.value] = definition;\n }\n }\n return fragments;\n});\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * TODO: consider no longer exporting this function\n * @internal\n */\nexport function buildExecutionContext(args) {\n const { schema, document, rootValue, contextValue, variableValues: rawVariableValues, operationName, fieldResolver, typeResolver, subscribeFieldResolver, signal, } = args;\n signal?.throwIfAborted();\n // If the schema used for execution is invalid, throw an error.\n assertValidSchema(schema);\n const fragments = getFragmentsFromDocument(document);\n let operation;\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (operationName == null) {\n if (operation !== undefined) {\n return [\n createGraphQLError('Must provide operation name if query contains multiple operations.', {\n extensions: {\n code: 'OPERATION_RESOLUTION_FAILURE',\n },\n }),\n ];\n }\n operation = definition;\n }\n else if (definition.name?.value === operationName) {\n operation = definition;\n }\n break;\n default:\n // ignore non-executable definitions\n }\n }\n if (operation == null) {\n if (operationName != null) {\n return [\n createGraphQLError(`Unknown operation named \"${operationName}\".`, {\n extensions: {\n code: 'OPERATION_RESOLUTION_FAILURE',\n },\n }),\n ];\n }\n return [\n createGraphQLError('Must provide an operation.', {\n extensions: {\n code: 'OPERATION_RESOLUTION_FAILURE',\n },\n }),\n ];\n }\n // FIXME: https://github.com/graphql/graphql-js/issues/2203\n /* c8 ignore next */\n const variableDefinitions = operation.variableDefinitions ?? [];\n const coercedVariableValues = getVariableValues(schema, variableDefinitions, rawVariableValues ?? {}, {\n maxErrors: 50,\n });\n if (coercedVariableValues.errors) {\n return coercedVariableValues.errors;\n }\n signal?.throwIfAborted();\n let onSignalAbort;\n let signalPromise;\n if (signal) {\n const listeners = new Set();\n const signalDeferred = createDeferredPromise();\n signalPromise = signalDeferred.promise;\n const sharedListener = () => {\n signalDeferred.reject(signal.reason);\n signal.removeEventListener('abort', sharedListener);\n };\n signal.addEventListener('abort', sharedListener, { once: true });\n signalPromise.catch(() => {\n for (const listener of listeners) {\n listener();\n }\n listeners.clear();\n });\n onSignalAbort = handler => {\n listeners.add(handler);\n };\n }\n return {\n schema,\n fragments,\n rootValue,\n contextValue,\n operation,\n variableValues: coercedVariableValues.coerced,\n fieldResolver: fieldResolver ?? defaultFieldResolver,\n typeResolver: typeResolver ?? defaultTypeResolver,\n subscribeFieldResolver: subscribeFieldResolver ?? defaultFieldResolver,\n subsequentPayloads: new Set(),\n errors: [],\n signal,\n onSignalAbort,\n signalPromise,\n };\n}\nfunction buildPerEventExecutionContext(exeContext, payload) {\n return {\n ...exeContext,\n rootValue: payload,\n subsequentPayloads: new Set(),\n errors: [],\n };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\nfunction executeOperation(exeContext) {\n const { operation, schema, fragments, variableValues, rootValue } = exeContext;\n const rootType = getDefinedRootType(schema, operation.operation, [operation]);\n if (rootType == null) {\n createGraphQLError(`Schema is not configured to execute ${operation.operation} operation.`, {\n nodes: operation,\n });\n }\n const { fields: rootFields, patches } = collectFields(schema, fragments, variableValues, rootType, operation.selectionSet);\n const path = undefined;\n let result;\n if (operation.operation === 'mutation') {\n result = executeFieldsSerially(exeContext, rootType, rootValue, path, rootFields);\n }\n else {\n result = executeFields(exeContext, rootType, rootValue, path, rootFields);\n }\n for (const patch of patches) {\n const { label, fields: patchFields } = patch;\n executeDeferredFragment(exeContext, rootType, rootValue, patchFields, label, path);\n }\n return result;\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\nfunction executeFieldsSerially(exeContext, parentType, sourceValue, path, fields) {\n return promiseReduce(fields, (results, [responseName, fieldNodes]) => {\n const fieldPath = addPath(path, responseName, parentType.name);\n exeContext.signal?.throwIfAborted();\n return handleMaybePromise(() => executeField(exeContext, parentType, sourceValue, fieldNodes, fieldPath), result => {\n if (result === undefined) {\n return results;\n }\n results[responseName] = result;\n return results;\n });\n }, Object.create(null));\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\nfunction executeFields(exeContext, parentType, sourceValue, path, fields, asyncPayloadRecord) {\n const results = Object.create(null);\n let containsPromise = false;\n try {\n for (const [responseName, fieldNodes] of fields) {\n exeContext.signal?.throwIfAborted();\n const fieldPath = addPath(path, responseName, parentType.name);\n const result = executeField(exeContext, parentType, sourceValue, fieldNodes, fieldPath, asyncPayloadRecord);\n if (result !== undefined) {\n results[responseName] = result;\n if (isPromise(result)) {\n containsPromise = true;\n }\n }\n }\n }\n catch (error) {\n if (error !== exeContext.signal?.reason && containsPromise) {\n // Ensure that any promises returned by other fields are handled, as they may also reject.\n return handleMaybePromise(() => promiseForObject(results, exeContext.signal), () => {\n throw error;\n }, () => {\n throw error;\n });\n }\n throw error;\n }\n // If there are no promises, we can just return the object\n if (!containsPromise) {\n return results;\n }\n // Otherwise, results is a map from field name to the result of resolving that\n // field, which is possibly a promise. Return a promise that will return this\n // same map, but with any promises replaced with the values they resolved to.\n return promiseForObject(results, exeContext.signal, exeContext.signalPromise);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\nfunction executeField(exeContext, parentType, source, fieldNodes, path, asyncPayloadRecord) {\n const errors = asyncPayloadRecord?.errors ?? exeContext.errors;\n const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n if (!fieldDef) {\n return;\n }\n const returnType = fieldDef.type;\n const resolveFn = fieldDef.resolve ?? exeContext.fieldResolver;\n const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path);\n // Get the resolve function, regardless of if its result is normal or abrupt (error).\n try {\n exeContext.signal?.throwIfAborted();\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n // TODO: find a way to memoize, in case this field is within a List type.\n const args = getArgumentValues(fieldDef, fieldNodes[0], exeContext.variableValues);\n // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n const contextValue = exeContext.contextValue;\n const result = resolveFn(source, args, contextValue, info);\n let completed;\n if (isPromise(result)) {\n completed = result.then(resolved => completeValue(exeContext, returnType, fieldNodes, info, path, resolved, asyncPayloadRecord));\n }\n else {\n completed = completeValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord);\n }\n if (isPromise(completed)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n return completed.then(undefined, rawError => {\n if (rawError instanceof AggregateError) {\n let result;\n for (let rawErrorItem of rawError.errors) {\n rawErrorItem = coerceError(rawErrorItem);\n const error = locatedError(rawErrorItem, fieldNodes, pathToArray(path));\n result = handleFieldError(error, returnType, errors);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n }\n return result;\n }\n rawError = coerceError(rawError);\n const error = locatedError(rawError, fieldNodes, pathToArray(path));\n const handledError = handleFieldError(error, returnType, errors);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n return handledError;\n });\n }\n return completed;\n }\n catch (rawError) {\n if (rawError instanceof AggregateError) {\n let result;\n for (let rawErrorItem of rawError.errors) {\n rawErrorItem = coerceError(rawErrorItem);\n const error = locatedError(rawErrorItem, fieldNodes, pathToArray(path));\n result = handleFieldError(error, returnType, errors);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n }\n return result;\n }\n const coercedError = coerceError(rawError);\n const error = locatedError(coercedError, fieldNodes, pathToArray(path));\n const handledError = handleFieldError(error, returnType, errors);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n return handledError;\n }\n}\n/**\n * TODO: consider no longer exporting this function\n * @internal\n */\nexport function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n // The resolve function's optional fourth argument is a collection of\n // information about the current execution state.\n return {\n fieldName: fieldDef.name,\n fieldNodes,\n returnType: fieldDef.type,\n parentType,\n path,\n schema: exeContext.schema,\n fragments: exeContext.fragments,\n rootValue: exeContext.rootValue,\n operation: exeContext.operation,\n variableValues: exeContext.variableValues,\n signal: exeContext.signal,\n };\n}\nexport const CRITICAL_ERROR = 'CRITICAL_ERROR';\nfunction handleFieldError(error, returnType, errors) {\n // If the field type is non-nullable, then it is resolved without any\n // protection from errors, however it still properly locates the error.\n if (isNonNullType(returnType)) {\n throw error;\n }\n if (error.extensions?.[CRITICAL_ERROR]) {\n throw error;\n }\n // Otherwise, error protection is applied, logging the error and resolving\n // a null value for this field if one is encountered.\n errors.push(error);\n return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord) {\n // If result is an Error, throw a located error.\n if (result instanceof Error) {\n throw result;\n }\n // If field type is NonNull, complete for inner type, and throw field error\n // if result is null.\n if (isNonNullType(returnType)) {\n const completed = completeValue(exeContext, returnType.ofType, fieldNodes, info, path, result, asyncPayloadRecord);\n if (completed === null) {\n throw new Error(`Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`);\n }\n return completed;\n }\n // If result value is null or undefined then return null.\n if (result == null) {\n return null;\n }\n // If field type is List, complete each item in the list with the inner type\n if (isListType(returnType)) {\n return completeListValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord);\n }\n // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n // returning null if serialization is not possible.\n if (isLeafType(returnType)) {\n return completeLeafValue(returnType, result);\n }\n // If field type is an abstract type, Interface or Union, determine the\n // runtime Object type and complete for that type.\n if (isAbstractType(returnType)) {\n return completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord);\n }\n // If field type is Object, execute and complete all sub-selections.\n if (isObjectType(returnType)) {\n return completeObjectValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord);\n }\n /* c8 ignore next 6 */\n // Not reachable, all possible output types have been considered.\n console.assert(false, 'Cannot complete value of unexpected output type: ' + inspect(returnType));\n}\n/**\n * Returns an object containing the `@stream` arguments if a field should be\n * streamed based on the experimental flag, stream directive present and\n * not disabled by the \"if\" argument.\n */\nfunction getStreamValues(exeContext, fieldNodes, path) {\n // do not stream inner lists of multi-dimensional lists\n if (typeof path.key === 'number') {\n return;\n }\n // validation only allows equivalent streams on multiple fields, so it is\n // safe to only check the first fieldNode for the stream directive\n const stream = getDirectiveValues(GraphQLStreamDirective, fieldNodes[0], exeContext.variableValues);\n if (!stream) {\n return;\n }\n if (stream.if === false) {\n return;\n }\n invariant(typeof stream['initialCount'] === 'number', 'initialCount must be a number');\n invariant(stream['initialCount'] >= 0, 'initialCount must be a positive integer');\n return {\n initialCount: stream['initialCount'],\n label: typeof stream['label'] === 'string' ? stream['label'] : undefined,\n };\n}\n/**\n * Complete a async iterator value by completing the result and calling\n * recursively until all the results are completed.\n */\nasync function completeAsyncIteratorValue(exeContext, itemType, fieldNodes, info, path, iterator, asyncPayloadRecord) {\n exeContext.signal?.throwIfAborted();\n if (iterator.return) {\n exeContext.onSignalAbort?.(() => {\n iterator.return?.();\n });\n }\n const errors = asyncPayloadRecord?.errors ?? exeContext.errors;\n const stream = getStreamValues(exeContext, fieldNodes, path);\n let containsPromise = false;\n const completedResults = [];\n let index = 0;\n while (true) {\n if (stream && typeof stream.initialCount === 'number' && index >= stream.initialCount) {\n executeStreamIterator(index, iterator, exeContext, fieldNodes, info, itemType, path, stream.label, asyncPayloadRecord);\n break;\n }\n const itemPath = addPath(path, index, undefined);\n let iteration;\n try {\n iteration = await iterator.next();\n if (iteration.done) {\n break;\n }\n }\n catch (rawError) {\n const coercedError = coerceError(rawError);\n const error = locatedError(coercedError, fieldNodes, pathToArray(itemPath));\n completedResults.push(handleFieldError(error, itemType, errors));\n break;\n }\n if (completeListItemValue(iteration.value, completedResults, errors, exeContext, itemType, fieldNodes, info, itemPath, asyncPayloadRecord)) {\n containsPromise = true;\n }\n index += 1;\n }\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\nfunction completeListValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord) {\n const itemType = returnType.ofType;\n const errors = asyncPayloadRecord?.errors ?? exeContext.errors;\n if (isAsyncIterable(result)) {\n const iterator = result[Symbol.asyncIterator]();\n return completeAsyncIteratorValue(exeContext, itemType, fieldNodes, info, path, iterator, asyncPayloadRecord);\n }\n if (!isIterableObject(result)) {\n throw createGraphQLError(`Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`);\n }\n const stream = getStreamValues(exeContext, fieldNodes, path);\n // This is specified as a simple map, however we're optimizing the path\n // where the list contains no Promises by avoiding creating another Promise.\n let containsPromise = false;\n let previousAsyncPayloadRecord = asyncPayloadRecord;\n const completedResults = [];\n let index = 0;\n for (const item of result) {\n // No need to modify the info object containing the path,\n // since from here on it is not ever accessed by resolver functions.\n const itemPath = addPath(path, index, undefined);\n if (stream && typeof stream.initialCount === 'number' && index >= stream.initialCount) {\n previousAsyncPayloadRecord = executeStreamField(path, itemPath, item, exeContext, fieldNodes, info, itemType, stream.label, previousAsyncPayloadRecord);\n index++;\n continue;\n }\n if (completeListItemValue(item, completedResults, errors, exeContext, itemType, fieldNodes, info, itemPath, asyncPayloadRecord)) {\n containsPromise = true;\n }\n index++;\n }\n return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a list item value by adding it to the completed results.\n *\n * Returns true if the value is a Promise.\n */\nfunction completeListItemValue(item, completedResults, errors, exeContext, itemType, fieldNodes, info, itemPath, asyncPayloadRecord) {\n try {\n let completedItem;\n if (isPromise(item)) {\n completedItem = item.then(resolved => completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved, asyncPayloadRecord));\n }\n else {\n completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item, asyncPayloadRecord);\n }\n if (isPromise(completedItem)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n completedResults.push(completedItem.then(undefined, rawError => {\n rawError = coerceError(rawError);\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n const handledError = handleFieldError(error, itemType, errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n return handledError;\n }));\n return true;\n }\n completedResults.push(completedItem);\n }\n catch (rawError) {\n const coercedError = coerceError(rawError);\n const error = locatedError(coercedError, fieldNodes, pathToArray(itemPath));\n const handledError = handleFieldError(error, itemType, errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n completedResults.push(handledError);\n }\n return false;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\nfunction completeLeafValue(returnType, result) {\n let serializedResult;\n // Note: We transform GraphQLError to Error in order to be consistent with\n // how non-null checks work later on.\n // See https://github.com/kamilkisiela/graphql-hive/pull/2299\n // See https://github.com/n1ru4l/envelop/issues/1808\n try {\n serializedResult = returnType.serialize(result);\n }\n catch (err) {\n if (err instanceof GraphQLError) {\n throw new Error(err.message);\n }\n throw err;\n }\n if (serializedResult == null) {\n throw new Error(`Expected \\`${inspect(returnType)}.serialize(${inspect(result)})\\` to ` +\n `return non-nullable value, returned: ${inspect(serializedResult)}`);\n }\n return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\nfunction completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord) {\n const resolveTypeFn = returnType.resolveType ?? exeContext.typeResolver;\n const contextValue = exeContext.contextValue;\n const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n if (isPromise(runtimeType)) {\n return runtimeType.then(resolvedRuntimeType => completeObjectValue(exeContext, ensureValidRuntimeType(resolvedRuntimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result, asyncPayloadRecord));\n }\n return completeObjectValue(exeContext, ensureValidRuntimeType(runtimeType, exeContext, returnType, fieldNodes, info, result), fieldNodes, info, path, result, asyncPayloadRecord);\n}\nfunction ensureValidRuntimeType(runtimeTypeName, exeContext, returnType, fieldNodes, info, result) {\n if (runtimeTypeName == null) {\n throw createGraphQLError(`Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`, { nodes: fieldNodes });\n }\n // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n // TODO: remove in 17.0.0 release\n if (isObjectType(runtimeTypeName)) {\n if (versionInfo.major >= 16) {\n throw createGraphQLError('Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.');\n }\n runtimeTypeName = runtimeTypeName.name;\n }\n if (typeof runtimeTypeName !== 'string') {\n throw createGraphQLError(`Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n `value ${inspect(result)}, received \"${inspect(runtimeTypeName)}\".`);\n }\n const runtimeType = exeContext.schema.getType(runtimeTypeName);\n if (runtimeType == null) {\n throw createGraphQLError(`Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`, { nodes: fieldNodes });\n }\n if (!isObjectType(runtimeType)) {\n throw createGraphQLError(`Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`, { nodes: fieldNodes });\n }\n if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n throw createGraphQLError(`Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`, { nodes: fieldNodes });\n }\n return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\nfunction completeObjectValue(exeContext, returnType, fieldNodes, info, path, result, asyncPayloadRecord) {\n // If there is an isTypeOf predicate function, call it with the\n // current result. If isTypeOf returns false, then raise an error rather\n // than continuing execution.\n if (returnType.isTypeOf) {\n const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n if (isPromise(isTypeOf)) {\n return isTypeOf.then(resolvedIsTypeOf => {\n if (!resolvedIsTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, asyncPayloadRecord);\n });\n }\n if (!isTypeOf) {\n throw invalidReturnTypeError(returnType, result, fieldNodes);\n }\n }\n return collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, asyncPayloadRecord);\n}\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n return createGraphQLError(`Expected value of type \"${returnType.name}\" but got: ${inspect(result)}.`, {\n nodes: fieldNodes,\n });\n}\nfunction collectAndExecuteSubfields(exeContext, returnType, fieldNodes, path, result, asyncPayloadRecord) {\n // Collect sub-fields to execute to complete this value.\n const { fields: subFieldNodes, patches: subPatches } = collectSubfields(exeContext, returnType, fieldNodes);\n const subFields = executeFields(exeContext, returnType, result, path, subFieldNodes, asyncPayloadRecord);\n for (const subPatch of subPatches) {\n const { label, fields: subPatchFieldNodes } = subPatch;\n executeDeferredFragment(exeContext, returnType, result, subPatchFieldNodes, label, path, asyncPayloadRecord);\n }\n return subFields;\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\nexport const defaultTypeResolver = function (value, contextValue, info, abstractType) {\n // First, look for `__typename`.\n if (isObjectLike(value) && typeof value['__typename'] === 'string') {\n return value['__typename'];\n }\n // Otherwise, test each possible type.\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n const promisedIsTypeOfResults = [];\n for (let i = 0; i < possibleTypes.length; i++) {\n const type = possibleTypes[i];\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n if (isPromise(isTypeOfResult)) {\n promisedIsTypeOfResults[i] = isTypeOfResult;\n }\n else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n if (promisedIsTypeOfResults.length) {\n return Promise.all(promisedIsTypeOfResults).then(isTypeOfResults => {\n for (let i = 0; i < isTypeOfResults.length; i++) {\n if (isTypeOfResults[i]) {\n return possibleTypes[i].name;\n }\n }\n });\n }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\nexport const defaultFieldResolver = function (source, args, contextValue, info) {\n // ensure source is a value for which property access is acceptable.\n if (isObjectLike(source) || typeof source === 'function') {\n const property = source[info.fieldName];\n if (typeof property === 'function') {\n return source[info.fieldName](args, contextValue, info);\n }\n return property;\n }\n};\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification,\n * including `@defer` and `@stream` as proposed in\n * https://github.com/graphql/graphql-spec/pull/742\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with descriptive\n * errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription resolver\n * logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of result representing the response stream.\n *\n * Each result may be an ExecutionResult with no `hasNext` (if executing the\n * event did not use `@defer` or `@stream`), or an\n * `InitialIncrementalExecutionResult` or `SubsequentIncrementalExecutionResult`\n * (if executing the event used `@defer` or `@stream`). In the case of\n * incremental execution results, each event produces a single\n * `InitialIncrementalExecutionResult` followed by one or more\n * `SubsequentIncrementalExecutionResult`s; all but the last have `hasNext: true`,\n * and the last has `hasNext: false`. There is no interleaving between results\n * generated from the same original event.\n *\n * Accepts an object with named arguments.\n */\nexport function subscribe(args) {\n // If a valid execution context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n const exeContext = buildExecutionContext(args);\n // Return early errors if execution context failed.\n if (!('schema' in exeContext)) {\n for (const error of exeContext) {\n // @ts-expect-error - We are intentionally modifying the errors\n const extensions = (error.extensions ||= {});\n const httpExtensions = (extensions['http'] ||= {});\n httpExtensions.status = 400;\n error.extensions['code'] = 'BAD_USER_INPUT';\n }\n return {\n errors: exeContext,\n };\n }\n const resultOrStream = createSourceEventStreamImpl(exeContext);\n if (isPromise(resultOrStream)) {\n return resultOrStream.then(resolvedResultOrStream => mapSourceToResponse(exeContext, resolvedResultOrStream));\n }\n return mapSourceToResponse(exeContext, resultOrStream);\n}\nexport function isIncrementalResults(results) {\n return results?.initialResult;\n}\nexport function flattenIncrementalResults(incrementalResults) {\n const subsequentIterator = incrementalResults.subsequentResults;\n let initialResultSent = false;\n let done = false;\n return {\n [Symbol.asyncIterator]() {\n return this;\n },\n next() {\n if (done) {\n return fakePromise({ value: undefined, done });\n }\n if (initialResultSent) {\n return subsequentIterator.next();\n }\n initialResultSent = true;\n return fakePromise({\n value: incrementalResults.initialResult,\n done,\n });\n },\n return() {\n done = true;\n return subsequentIterator.return();\n },\n throw(error) {\n done = true;\n return subsequentIterator.throw(error);\n },\n [DisposableSymbols.asyncDispose]() {\n done = true;\n return subsequentIterator?.[DisposableSymbols.asyncDispose]?.();\n },\n };\n}\nasync function* ensureAsyncIterable(someExecutionResult) {\n if ('initialResult' in someExecutionResult) {\n yield* flattenIncrementalResults(someExecutionResult);\n }\n else {\n yield someExecutionResult;\n }\n}\nfunction mapSourceToResponse(exeContext, resultOrStream) {\n if (!isAsyncIterable(resultOrStream)) {\n return resultOrStream;\n }\n // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n return flattenAsyncIterable(mapAsyncIterator(resultOrStream, (payload) => handleMaybePromise(() => executeImpl(buildPerEventExecutionContext(exeContext, payload)), ensureAsyncIterable), (error) => {\n if (error instanceof AggregateError) {\n throw new AggregateError(error.errors.map(e => wrapError(e, exeContext.operation)), error.message);\n }\n throw wrapError(error, exeContext.operation);\n }));\n}\nfunction wrapError(error, operation) {\n return createGraphQLError(error.message, {\n originalError: error,\n nodes: [operation],\n });\n}\nfunction createSourceEventStreamImpl(exeContext) {\n try {\n const eventStream = executeSubscription(exeContext);\n if (isPromise(eventStream)) {\n return eventStream.then(undefined, error => ({ errors: [error] }));\n }\n return eventStream;\n }\n catch (error) {\n return { errors: [error] };\n }\n}\nfunction executeSubscription(exeContext) {\n const { schema, fragments, operation, variableValues, rootValue } = exeContext;\n const rootType = schema.getSubscriptionType();\n if (rootType == null) {\n throw createGraphQLError('Schema is not configured to execute subscription operation.', {\n nodes: operation,\n });\n }\n const { fields: rootFields } = collectFields(schema, fragments, variableValues, rootType, operation.selectionSet);\n const [responseName, fieldNodes] = [...rootFields.entries()][0];\n const fieldName = fieldNodes[0].name.value;\n const fieldDef = getFieldDef(schema, rootType, fieldNodes[0]);\n if (!fieldDef) {\n throw createGraphQLError(`The subscription field \"${fieldName}\" is not defined.`, {\n nodes: fieldNodes,\n });\n }\n const path = addPath(undefined, responseName, rootType.name);\n const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, rootType, path);\n try {\n // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n // Build a JS object of arguments from the field.arguments AST, using the\n // variables scope to fulfill any variable references.\n const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues);\n // The resolve function's optional third argument is a context value that\n // is provided to every resolve function within an execution. It is commonly\n // used to represent an authenticated user, or request-specific caches.\n const contextValue = exeContext.contextValue;\n // Call the `subscribe()` resolver or the default resolver to produce an\n // AsyncIterable yielding raw payloads.\n const resolveFn = fieldDef.subscribe ?? exeContext.subscribeFieldResolver;\n const result = resolveFn(rootValue, args, contextValue, info);\n if (isPromise(result)) {\n return result\n .then(result => assertEventStream(result, exeContext.signal, exeContext.onSignalAbort))\n .then(undefined, error => {\n throw locatedError(error, fieldNodes, pathToArray(path));\n });\n }\n return assertEventStream(result, exeContext.signal, exeContext.onSignalAbort);\n }\n catch (error) {\n throw locatedError(error, fieldNodes, pathToArray(path));\n }\n}\nfunction assertEventStream(result, signal, onSignalAbort) {\n signal?.throwIfAborted();\n if (result instanceof Error) {\n throw result;\n }\n // Assert field returned an event stream, otherwise yield an error.\n if (!isAsyncIterable(result)) {\n throw createGraphQLError('Subscription field must return Async Iterable. ' + `Received: ${inspect(result)}.`);\n }\n if (onSignalAbort) {\n return {\n [Symbol.asyncIterator]() {\n const asyncIterator = result[Symbol.asyncIterator]();\n if (asyncIterator.return) {\n onSignalAbort?.(() => {\n asyncIterator.return?.();\n });\n }\n return asyncIterator;\n },\n };\n }\n return result;\n}\nfunction executeDeferredFragment(exeContext, parentType, sourceValue, fields, label, path, parentContext) {\n const asyncPayloadRecord = new DeferredFragmentRecord({\n label,\n path,\n parentContext,\n exeContext,\n });\n let promiseOrData;\n try {\n promiseOrData = executeFields(exeContext, parentType, sourceValue, path, fields, asyncPayloadRecord);\n if (isPromise(promiseOrData)) {\n promiseOrData = promiseOrData.then(null, e => {\n asyncPayloadRecord.errors.push(e);\n return null;\n });\n }\n }\n catch (e) {\n asyncPayloadRecord.errors.push(e);\n promiseOrData = null;\n }\n asyncPayloadRecord.addData(promiseOrData);\n}\nfunction executeStreamField(path, itemPath, item, exeContext, fieldNodes, info, itemType, label, parentContext) {\n const asyncPayloadRecord = new StreamRecord({\n label,\n path: itemPath,\n parentContext,\n exeContext,\n });\n let completedItem;\n try {\n try {\n if (isPromise(item)) {\n completedItem = item.then(resolved => completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved, asyncPayloadRecord));\n }\n else {\n completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item, asyncPayloadRecord);\n }\n if (isPromise(completedItem)) {\n // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n // to take a second callback for the error case.\n completedItem = completedItem.then(undefined, rawError => {\n rawError = coerceError(rawError);\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n const handledError = handleFieldError(error, itemType, asyncPayloadRecord.errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n return handledError;\n });\n }\n }\n catch (rawError) {\n const coercedError = coerceError(rawError);\n const error = locatedError(coercedError, fieldNodes, pathToArray(itemPath));\n completedItem = handleFieldError(error, itemType, asyncPayloadRecord.errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n }\n }\n catch (error) {\n asyncPayloadRecord.errors.push(error);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n asyncPayloadRecord.addItems(null);\n return asyncPayloadRecord;\n }\n let completedItems;\n if (isPromise(completedItem)) {\n completedItems = completedItem.then(value => [value], error => {\n asyncPayloadRecord.errors.push(error);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n return null;\n });\n }\n else {\n completedItems = [completedItem];\n }\n asyncPayloadRecord.addItems(completedItems);\n return asyncPayloadRecord;\n}\nasync function executeStreamIteratorItem(iterator, exeContext, fieldNodes, info, itemType, asyncPayloadRecord, itemPath) {\n let item;\n try {\n const { value, done } = await iterator.next();\n if (done) {\n asyncPayloadRecord.setIsCompletedIterator();\n return { done, value: undefined };\n }\n item = value;\n }\n catch (rawError) {\n const coercedError = coerceError(rawError);\n const error = locatedError(coercedError, fieldNodes, pathToArray(itemPath));\n const value = handleFieldError(error, itemType, asyncPayloadRecord.errors);\n // don't continue if iterator throws\n return { done: true, value };\n }\n let completedItem;\n try {\n completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item, asyncPayloadRecord);\n if (isPromise(completedItem)) {\n completedItem = completedItem.then(undefined, rawError => {\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n const handledError = handleFieldError(error, itemType, asyncPayloadRecord.errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n return handledError;\n });\n }\n return { done: false, value: completedItem };\n }\n catch (rawError) {\n const error = locatedError(rawError, fieldNodes, pathToArray(itemPath));\n const value = handleFieldError(error, itemType, asyncPayloadRecord.errors);\n filterSubsequentPayloads(exeContext, itemPath, asyncPayloadRecord);\n return { done: false, value };\n }\n}\nasync function executeStreamIterator(initialIndex, iterator, exeContext, fieldNodes, info, itemType, path, label, parentContext) {\n let index = initialIndex;\n let previousAsyncPayloadRecord = parentContext ?? undefined;\n while (true) {\n const itemPath = addPath(path, index, undefined);\n const asyncPayloadRecord = new StreamRecord({\n label,\n path: itemPath,\n parentContext: previousAsyncPayloadRecord,\n iterator,\n exeContext,\n });\n let iteration;\n try {\n iteration = await executeStreamIteratorItem(iterator, exeContext, fieldNodes, info, itemType, asyncPayloadRecord, itemPath);\n }\n catch (error) {\n asyncPayloadRecord.errors.push(error);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n asyncPayloadRecord.addItems(null);\n // entire stream has errored and bubbled upwards\n if (iterator?.return) {\n iterator.return().catch(() => {\n // ignore errors\n });\n }\n return;\n }\n const { done, value: completedItem } = iteration;\n let completedItems;\n if (isPromise(completedItem)) {\n completedItems = completedItem.then(value => [value], error => {\n asyncPayloadRecord.errors.push(error);\n filterSubsequentPayloads(exeContext, path, asyncPayloadRecord);\n return null;\n });\n }\n else {\n completedItems = [completedItem];\n }\n asyncPayloadRecord.addItems(completedItems);\n if (done) {\n break;\n }\n previousAsyncPayloadRecord = asyncPayloadRecord;\n index++;\n }\n}\nfunction filterSubsequentPayloads(exeContext, nullPath, currentAsyncRecord) {\n const nullPathArray = pathToArray(nullPath);\n exeContext.subsequentPayloads.forEach(asyncRecord => {\n if (asyncRecord === currentAsyncRecord) {\n // don't remove payload from where error originates\n return;\n }\n for (let i = 0; i < nullPathArray.length; i++) {\n if (asyncRecord.path[i] !== nullPathArray[i]) {\n // asyncRecord points to a path unaffected by this payload\n return;\n }\n }\n // asyncRecord path points to nulled error field\n if (isStreamPayload(asyncRecord) && asyncRecord.iterator?.return) {\n asyncRecord.iterator.return().catch(() => {\n // ignore error\n });\n }\n exeContext.subsequentPayloads.delete(asyncRecord);\n });\n}\nfunction getCompletedIncrementalResults(exeContext) {\n const incrementalResults = [];\n for (const asyncPayloadRecord of exeContext.subsequentPayloads) {\n const incrementalResult = {};\n if (!asyncPayloadRecord.isCompleted) {\n continue;\n }\n exeContext.subsequentPayloads.delete(asyncPayloadRecord);\n if (isStreamPayload(asyncPayloadRecord)) {\n const items = asyncPayloadRecord.items;\n if (asyncPayloadRecord.isCompletedIterator) {\n // async iterable resolver just finished but there may be pending payloads\n continue;\n }\n incrementalResult.items = items;\n }\n else {\n const data = asyncPayloadRecord.data;\n incrementalResult.data = data ?? null;\n }\n incrementalResult.path = asyncPayloadRecord.path;\n if (asyncPayloadRecord.label) {\n incrementalResult.label = asyncPayloadRecord.label;\n }\n if (asyncPayloadRecord.errors.length > 0) {\n incrementalResult.errors = asyncPayloadRecord.errors;\n }\n incrementalResults.push(incrementalResult);\n }\n return incrementalResults;\n}\nfunction yieldSubsequentPayloads(exeContext) {\n let isDone = false;\n async function next() {\n if (isDone) {\n return { value: undefined, done: true };\n }\n const subSequentPayloadPromises = Array.from(exeContext.subsequentPayloads).map(record => record.promise);\n if (exeContext.signalPromise) {\n await Promise.race([exeContext.signalPromise, ...subSequentPayloadPromises]);\n }\n else {\n await Promise.race(subSequentPayloadPromises);\n }\n if (isDone) {\n // a different call to next has exhausted all payloads\n return { value: undefined, done: true };\n }\n const incremental = getCompletedIncrementalResults(exeContext);\n const hasNext = exeContext.subsequentPayloads.size > 0;\n if (!incremental.length && hasNext) {\n return next();\n }\n if (!hasNext) {\n isDone = true;\n }\n return {\n value: incremental.length ? { incremental, hasNext } : { hasNext },\n done: false,\n };\n }\n function returnStreamIterators() {\n const promises = [];\n exeContext.subsequentPayloads.forEach(asyncPayloadRecord => {\n if (isStreamPayload(asyncPayloadRecord) && asyncPayloadRecord.iterator?.return) {\n promises.push(asyncPayloadRecord.iterator.return());\n }\n });\n return Promise.all(promises);\n }\n return {\n [Symbol.asyncIterator]() {\n return this;\n },\n next,\n async return() {\n await returnStreamIterators();\n isDone = true;\n return { value: undefined, done: true };\n },\n async throw(error) {\n await returnStreamIterators();\n isDone = true;\n throw error;\n },\n async [DisposableSymbols.asyncDispose]() {\n await returnStreamIterators();\n isDone = true;\n },\n };\n}\nclass DeferredFragmentRecord {\n type;\n errors;\n label;\n path;\n promise;\n data;\n parentContext;\n isCompleted;\n _exeContext;\n _resolve;\n constructor(opts) {\n this.type = 'defer';\n this.label = opts.label;\n this.path = pathToArray(opts.path);\n this.parentContext = opts.parentContext;\n this.errors = [];\n this._exeContext = opts.exeContext;\n this._exeContext.subsequentPayloads.add(this);\n this.isCompleted = false;\n this.data = null;\n this.promise = new Promise(resolve => {\n this._resolve = MaybePromise => {\n resolve(MaybePromise);\n };\n }).then(data => {\n this.data = data;\n this.isCompleted = true;\n });\n }\n addData(data) {\n const parentData = this.parentContext?.promise;\n if (parentData) {\n this._resolve?.(parentData.then(() => data));\n return;\n }\n this._resolve?.(data);\n }\n}\nclass StreamRecord {\n type;\n errors;\n label;\n path;\n items;\n promise;\n parentContext;\n iterator;\n isCompletedIterator;\n isCompleted;\n _exeContext;\n _resolve;\n constructor(opts) {\n this.type = 'stream';\n this.items = null;\n this.label = opts.label;\n this.path = pathToArray(opts.path);\n this.parentContext = opts.parentContext;\n this.iterator = opts.iterator;\n this.errors = [];\n this._exeContext = opts.exeContext;\n this._exeContext.subsequentPayloads.add(this);\n this.isCompleted = false;\n this.items = null;\n this.promise = new Promise(resolve => {\n this._resolve = MaybePromise => {\n resolve(MaybePromise);\n };\n }).then(items => {\n this.items = items;\n this.isCompleted = true;\n });\n }\n addItems(items) {\n const parentData = this.parentContext?.promise;\n if (parentData) {\n this._resolve?.(parentData.then(() => items));\n return;\n }\n this._resolve?.(items);\n }\n setIsCompletedIterator() {\n this.isCompletedIterator = true;\n }\n}\nfunction isStreamPayload(asyncPayload) {\n return asyncPayload.type === 'stream';\n}\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\nexport function getFieldDef(schema, parentType, fieldNode) {\n const fieldName = fieldNode.name.value;\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === parentType) {\n return SchemaMetaFieldDef;\n }\n else if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {\n return TypeMetaFieldDef;\n }\n else if (fieldName === TypeNameMetaFieldDef.name) {\n return TypeNameMetaFieldDef;\n }\n return parentType.getFields()[fieldName];\n}\nexport function isIncrementalResult(result) {\n return 'incremental' in result;\n}\n","import { getOperationAST } from 'graphql';\nimport { memoize1, } from '@graphql-tools/utils';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { execute, flattenIncrementalResults, isIncrementalResults, subscribe, } from './execute.js';\nexport function normalizedExecutor(args) {\n const operationAST = getOperationAST(args.document, args.operationName);\n if (operationAST == null) {\n throw new Error('Must provide an operation.');\n }\n if (operationAST.operation === 'subscription') {\n return subscribe(args);\n }\n return handleMaybePromise(() => execute(args), result => {\n if (isIncrementalResults(result)) {\n return flattenIncrementalResults(result);\n }\n return result;\n });\n}\nexport const executorFromSchema = memoize1(function executorFromSchema(schema) {\n return function schemaExecutor(request) {\n return normalizedExecutor({\n schema,\n document: request.document,\n variableValues: request.variables,\n operationName: request.operationName,\n rootValue: request.rootValue,\n contextValue: request.context,\n signal: request.signal || request.info?.signal,\n });\n };\n});\n","module.exports.fetch = globalThis.fetch;\nmodule.exports.Headers = globalThis.Headers;\nmodule.exports.Request = globalThis.Request;\nmodule.exports.Response = globalThis.Response;\nmodule.exports.FormData = globalThis.FormData;\nmodule.exports.ReadableStream = globalThis.ReadableStream;\nmodule.exports.WritableStream = globalThis.WritableStream;\nmodule.exports.TransformStream = globalThis.TransformStream;\nmodule.exports.CompressionStream = globalThis.CompressionStream;\nmodule.exports.DecompressionStream = globalThis.DecompressionStream;\nmodule.exports.TextDecoderStream = globalThis.TextDecoderStream;\nmodule.exports.TextEncoderStream = globalThis.TextEncoderStream;\nmodule.exports.Blob = globalThis.Blob;\nmodule.exports.File = globalThis.File;\nmodule.exports.crypto = globalThis.crypto;\nmodule.exports.btoa = globalThis.btoa;\nmodule.exports.TextEncoder = globalThis.TextEncoder;\nmodule.exports.TextDecoder = globalThis.TextDecoder;\nmodule.exports.URLPattern = globalThis.URLPattern;\nmodule.exports.URL = globalThis.URL;\nmodule.exports.URLSearchParams = globalThis.URLSearchParams;\nmodule.exports.createFetch = () => globalThis;\n","module.exports.fetch = globalThis.fetch;\nmodule.exports.Headers = globalThis.Headers;\nmodule.exports.Request = globalThis.Request;\nmodule.exports.Response = globalThis.Response;\nmodule.exports.FormData = globalThis.FormData;\nmodule.exports.ReadableStream = globalThis.ReadableStream;\nmodule.exports.WritableStream = globalThis.WritableStream;\nmodule.exports.TransformStream = globalThis.TransformStream;\nmodule.exports.CompressionStream = globalThis.CompressionStream;\nmodule.exports.DecompressionStream = globalThis.DecompressionStream;\nmodule.exports.TextDecoderStream = globalThis.TextDecoderStream;\nmodule.exports.TextEncoderStream = globalThis.TextEncoderStream;\nmodule.exports.Blob = globalThis.Blob;\nmodule.exports.File = globalThis.File;\nmodule.exports.crypto = globalThis.crypto;\nmodule.exports.btoa = globalThis.btoa;\nmodule.exports.TextEncoder = globalThis.TextEncoder;\nmodule.exports.TextDecoder = globalThis.TextDecoder;\nmodule.exports.URLPattern = globalThis.URLPattern;\nmodule.exports.URL = globalThis.URL;\nmodule.exports.URLSearchParams = globalThis.URLSearchParams;\nmodule.exports.createFetch = () => globalThis;\n","import { createDeferredPromise, fakePromise, handleMaybePromise, isPromise, } from '@whatwg-node/promise-helpers';\nexport { isPromise, createDeferredPromise };\nexport function isAsyncIterable(body) {\n return (body != null && typeof body === 'object' && typeof body[Symbol.asyncIterator] === 'function');\n}\nfunction getPort(nodeRequest) {\n if (nodeRequest.socket?.localPort) {\n return nodeRequest.socket?.localPort;\n }\n const hostInHeader = nodeRequest.headers?.[':authority'] || nodeRequest.headers?.host;\n const portInHeader = hostInHeader?.split(':')?.[1];\n if (portInHeader) {\n return portInHeader;\n }\n return 80;\n}\nfunction getHostnameWithPort(nodeRequest) {\n if (nodeRequest.headers?.[':authority']) {\n return nodeRequest.headers?.[':authority'];\n }\n if (nodeRequest.headers?.host) {\n return nodeRequest.headers?.host;\n }\n const port = getPort(nodeRequest);\n if (nodeRequest.hostname) {\n return nodeRequest.hostname + ':' + port;\n }\n const localIp = nodeRequest.socket?.localAddress;\n if (localIp && !localIp?.includes('::') && !localIp?.includes('ffff')) {\n return `${localIp}:${port}`;\n }\n return 'localhost';\n}\nfunction buildFullUrl(nodeRequest) {\n const hostnameWithPort = getHostnameWithPort(nodeRequest);\n const protocol = nodeRequest.protocol || (nodeRequest.socket?.encrypted ? 'https' : 'http');\n const endpoint = nodeRequest.originalUrl || nodeRequest.url || '/graphql';\n return `${protocol}://${hostnameWithPort}${endpoint}`;\n}\nfunction isRequestBody(body) {\n const stringTag = body[Symbol.toStringTag];\n if (typeof body === 'string' ||\n stringTag === 'Uint8Array' ||\n stringTag === 'Blob' ||\n stringTag === 'FormData' ||\n stringTag === 'URLSearchParams' ||\n isAsyncIterable(body)) {\n return true;\n }\n return false;\n}\nexport function normalizeNodeRequest(nodeRequest, fetchAPI, nodeResponse, __useCustomAbortCtrl) {\n const rawRequest = nodeRequest.raw || nodeRequest.req || nodeRequest;\n let fullUrl = buildFullUrl(rawRequest);\n if (nodeRequest.query) {\n const url = new fetchAPI.URL(fullUrl);\n for (const key in nodeRequest.query) {\n url.searchParams.set(key, nodeRequest.query[key]);\n }\n fullUrl = url.toString();\n }\n let normalizedHeaders = nodeRequest.headers;\n if (nodeRequest.headers?.[':method']) {\n normalizedHeaders = {};\n for (const key in nodeRequest.headers) {\n if (!key.startsWith(':')) {\n normalizedHeaders[key] = nodeRequest.headers[key];\n }\n }\n }\n const controller = __useCustomAbortCtrl\n ? createCustomAbortControllerSignal()\n : new AbortController();\n if (nodeResponse?.once) {\n const closeEventListener = () => {\n if (!controller.signal.aborted) {\n Object.defineProperty(rawRequest, 'aborted', { value: true });\n controller.abort(nodeResponse.errored ?? undefined);\n }\n };\n nodeResponse.once('error', closeEventListener);\n nodeResponse.once('close', closeEventListener);\n nodeResponse.once('finish', () => {\n nodeResponse.removeListener('close', closeEventListener);\n });\n }\n if (nodeRequest.method === 'GET' || nodeRequest.method === 'HEAD') {\n return new fetchAPI.Request(fullUrl, {\n method: nodeRequest.method,\n headers: normalizedHeaders,\n signal: controller.signal,\n });\n }\n /**\n * Some Node server frameworks like Serverless Express sends a dummy object with body but as a Buffer not string\n * so we do those checks to see is there something we can use directly as BodyInit\n * because the presence of body means the request stream is already consumed and,\n * rawRequest cannot be used as BodyInit/ReadableStream by Fetch API in this case.\n */\n const maybeParsedBody = nodeRequest.body;\n if (maybeParsedBody != null && Object.keys(maybeParsedBody).length > 0) {\n if (isRequestBody(maybeParsedBody)) {\n return new fetchAPI.Request(fullUrl, {\n method: nodeRequest.method || 'GET',\n headers: normalizedHeaders,\n body: maybeParsedBody,\n signal: controller.signal,\n });\n }\n const request = new fetchAPI.Request(fullUrl, {\n method: nodeRequest.method || 'GET',\n headers: normalizedHeaders,\n signal: controller.signal,\n });\n if (!request.headers.get('content-type')?.includes('json')) {\n request.headers.set('content-type', 'application/json; charset=utf-8');\n }\n return new Proxy(request, {\n get: (target, prop, receiver) => {\n switch (prop) {\n case 'json':\n return () => fakePromise(maybeParsedBody);\n case 'text':\n return () => fakePromise(JSON.stringify(maybeParsedBody));\n default:\n if (globalThis.Bun) {\n // workaround for https://github.com/oven-sh/bun/issues/12368\n // Proxy.get doesn't seem to get `receiver` correctly\n return Reflect.get(target, prop);\n }\n return Reflect.get(target, prop, receiver);\n }\n },\n });\n }\n // perf: instead of spreading the object, we can just pass it as is and it performs better\n return new fetchAPI.Request(fullUrl, {\n method: nodeRequest.method,\n headers: normalizedHeaders,\n signal: controller.signal,\n // @ts-expect-error - AsyncIterable is supported as body\n body: rawRequest,\n duplex: 'half',\n });\n}\nexport function isReadable(stream) {\n return stream.read != null;\n}\nexport function isNodeRequest(request) {\n return isReadable(request);\n}\nexport function isServerResponse(stream) {\n // Check all used functions are defined\n return (stream != null &&\n stream.setHeader != null &&\n stream.end != null &&\n stream.once != null &&\n stream.write != null);\n}\nexport function isReadableStream(stream) {\n return stream != null && stream.getReader != null;\n}\nexport function isFetchEvent(event) {\n return event != null && event.request != null && event.respondWith != null;\n}\nfunction configureSocket(rawRequest) {\n rawRequest?.socket?.setTimeout?.(0);\n rawRequest?.socket?.setNoDelay?.(true);\n rawRequest?.socket?.setKeepAlive?.(true);\n}\nfunction endResponse(serverResponse) {\n // @ts-expect-error Avoid arguments adaptor trampoline https://v8.dev/blog/adaptor-frame\n serverResponse.end(null, null, null);\n}\nfunction sendAsyncIterable(serverResponse, asyncIterable) {\n let closed = false;\n const closeEventListener = () => {\n closed = true;\n };\n serverResponse.once('error', closeEventListener);\n serverResponse.once('close', closeEventListener);\n serverResponse.once('finish', () => {\n serverResponse.removeListener('close', closeEventListener);\n serverResponse.removeListener('error', closeEventListener);\n });\n const iterator = asyncIterable[Symbol.asyncIterator]();\n const pump = () => iterator.next().then(({ done, value }) => {\n if (closed || done) {\n return;\n }\n return handleMaybePromise(() => safeWrite(value, serverResponse), () => (closed ? endResponse(serverResponse) : pump()));\n });\n return pump();\n}\nfunction safeWrite(chunk, serverResponse) {\n // @ts-expect-error http and http2 writes are actually compatible\n const result = serverResponse.write(chunk);\n if (!result) {\n return new Promise(resolve => serverResponse.once('drain', resolve));\n }\n}\nconst isNode1x = globalThis.process?.versions?.node?.startsWith('1');\nexport function sendNodeResponse(fetchResponse, serverResponse, nodeRequest, __useSingleWriteHead) {\n if (serverResponse.closed || serverResponse.destroyed || serverResponse.writableEnded) {\n return;\n }\n if (!fetchResponse) {\n serverResponse.statusCode = 404;\n endResponse(serverResponse);\n return;\n }\n if (__useSingleWriteHead &&\n // @ts-expect-error - headersInit is a private property\n fetchResponse.headers?.headersInit &&\n // @ts-expect-error - headersInit is a private property\n !Array.isArray(fetchResponse.headers.headersInit) &&\n // @ts-expect-error - headersInit is a private property\n !fetchResponse.headers.headersInit.get &&\n // @ts-expect-error - map is a private property\n !fetchResponse.headers._map &&\n // @ts-expect-error - _setCookies is a private property\n !fetchResponse.headers._setCookies?.length) {\n serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText, \n // @ts-expect-error - headersInit is a private property\n fetchResponse.headers.headersInit);\n }\n else {\n // Avoid using `setHeaders` on Node.js 18 as it is broken with multiple headers with the same name\n // @ts-expect-error - setHeaders exist\n if (serverResponse.setHeaders && !isNode1x) {\n // @ts-expect-error - setHeaders exist\n serverResponse.setHeaders(fetchResponse.headers);\n }\n else {\n let setCookiesSet = false;\n fetchResponse.headers.forEach((value, key) => {\n if (key === 'set-cookie') {\n if (setCookiesSet) {\n return;\n }\n setCookiesSet = true;\n const setCookies = fetchResponse.headers.getSetCookie?.();\n if (setCookies) {\n serverResponse.setHeader('set-cookie', setCookies);\n return;\n }\n }\n serverResponse.setHeader(key, value);\n });\n }\n serverResponse.writeHead(fetchResponse.status, fetchResponse.statusText);\n }\n // @ts-expect-error - Handle the case where the response is a string\n if (fetchResponse['bodyType'] === 'String') {\n return handleMaybePromise(\n // @ts-expect-error - bodyInit is a private property\n () => safeWrite(fetchResponse.bodyInit, serverResponse), () => endResponse(serverResponse));\n }\n // Optimizations for node-fetch\n const bufOfRes = \n // @ts-expect-error - _buffer is a private property\n fetchResponse._buffer;\n if (bufOfRes) {\n return handleMaybePromise(() => safeWrite(bufOfRes, serverResponse), () => endResponse(serverResponse));\n }\n // Other fetch implementations\n const fetchBody = fetchResponse.body;\n if (fetchBody == null) {\n endResponse(serverResponse);\n return;\n }\n if (\n // @ts-expect-error - Uint8Array is a valid body type\n fetchBody[Symbol.toStringTag] === 'Uint8Array') {\n return handleMaybePromise(() => safeWrite(fetchBody, serverResponse), () => endResponse(serverResponse));\n }\n configureSocket(nodeRequest);\n if (isReadable(fetchBody)) {\n serverResponse.once('close', () => {\n fetchBody.destroy();\n });\n fetchBody.pipe(serverResponse, {\n end: true,\n });\n return;\n }\n if (isReadableStream(fetchBody)) {\n return sendReadableStream(nodeRequest, serverResponse, fetchBody);\n }\n if (isAsyncIterable(fetchBody)) {\n return sendAsyncIterable(serverResponse, fetchBody);\n }\n}\nfunction sendReadableStream(nodeRequest, serverResponse, readableStream) {\n const reader = readableStream.getReader();\n nodeRequest?.once?.('error', err => {\n reader.cancel(err);\n });\n function pump() {\n return reader\n .read()\n .then(({ done, value }) => done\n ? endResponse(serverResponse)\n : handleMaybePromise(() => safeWrite(value, serverResponse), pump));\n }\n return pump();\n}\nexport function isRequestInit(val) {\n return (val != null &&\n typeof val === 'object' &&\n ('body' in val ||\n 'cache' in val ||\n 'credentials' in val ||\n 'headers' in val ||\n 'integrity' in val ||\n 'keepalive' in val ||\n 'method' in val ||\n 'mode' in val ||\n 'redirect' in val ||\n 'referrer' in val ||\n 'referrerPolicy' in val ||\n 'signal' in val ||\n 'window' in val));\n}\n// from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copying_accessors\nexport function completeAssign(...args) {\n const [target, ...sources] = args.filter(arg => arg != null && typeof arg === 'object');\n sources.forEach(source => {\n // modified Object.keys to Object.getOwnPropertyNames\n // because Object.keys only returns enumerable properties\n const descriptors = Object.getOwnPropertyNames(source).reduce((descriptors, key) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor) {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n }\n return descriptors;\n }, {});\n // By default, Object.assign copies enumerable Symbols, too\n Object.getOwnPropertySymbols(source).forEach(sym => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor?.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(target, descriptors);\n });\n return target;\n}\nexport { iterateAsyncVoid } from '@whatwg-node/promise-helpers';\nexport function handleErrorFromRequestHandler(error, ResponseCtor) {\n return new ResponseCtor(error.stack || error.message || error.toString(), {\n status: error.status || 500,\n });\n}\nexport function isolateObject(originalCtx, waitUntilFn) {\n if (originalCtx == null) {\n if (waitUntilFn == null) {\n return {};\n }\n return {\n waitUntil: waitUntilFn,\n };\n }\n return completeAssign(Object.create(originalCtx), {\n waitUntil: waitUntilFn,\n }, originalCtx);\n}\nexport function handleAbortSignalAndPromiseResponse(response$, abortSignal) {\n if (abortSignal?.aborted) {\n throw abortSignal.reason;\n }\n if (isPromise(response$) && abortSignal) {\n const deferred$ = createDeferredPromise();\n function abortSignalFetchErrorHandler() {\n deferred$.reject(abortSignal.reason);\n }\n abortSignal.addEventListener('abort', abortSignalFetchErrorHandler, { once: true });\n response$\n .then(function fetchSuccessHandler(res) {\n deferred$.resolve(res);\n })\n .catch(function fetchErrorHandler(err) {\n deferred$.reject(err);\n })\n .finally(() => {\n abortSignal.removeEventListener('abort', abortSignalFetchErrorHandler);\n });\n return deferred$.promise;\n }\n return response$;\n}\nexport const decompressedResponseMap = new WeakMap();\nconst supportedEncodingsByFetchAPI = new WeakMap();\nexport function getSupportedEncodings(fetchAPI) {\n let supportedEncodings = supportedEncodingsByFetchAPI.get(fetchAPI);\n if (!supportedEncodings) {\n const possibleEncodings = ['deflate', 'gzip', 'deflate-raw', 'br'];\n if (fetchAPI.DecompressionStream?.['supportedFormats']) {\n supportedEncodings = fetchAPI.DecompressionStream['supportedFormats'];\n }\n else {\n supportedEncodings = possibleEncodings.filter(encoding => {\n // deflate-raw is not supported in Node.js >v20\n if (globalThis.process?.version?.startsWith('v2') &&\n fetchAPI.DecompressionStream === globalThis.DecompressionStream &&\n encoding === 'deflate-raw') {\n return false;\n }\n try {\n // eslint-disable-next-line no-new\n new fetchAPI.DecompressionStream(encoding);\n return true;\n }\n catch {\n return false;\n }\n });\n }\n supportedEncodingsByFetchAPI.set(fetchAPI, supportedEncodings);\n }\n return supportedEncodings;\n}\nexport function handleResponseDecompression(response, fetchAPI) {\n const contentEncodingHeader = response?.headers.get('content-encoding');\n if (!contentEncodingHeader || contentEncodingHeader === 'none') {\n return response;\n }\n if (!response?.body) {\n return response;\n }\n let decompressedResponse = decompressedResponseMap.get(response);\n if (!decompressedResponse || decompressedResponse.bodyUsed) {\n let decompressedBody = response.body;\n const contentEncodings = contentEncodingHeader.split(',');\n if (!contentEncodings.every(encoding => getSupportedEncodings(fetchAPI).includes(encoding))) {\n return new fetchAPI.Response(`Unsupported 'Content-Encoding': ${contentEncodingHeader}`, {\n status: 415,\n statusText: 'Unsupported Media Type',\n });\n }\n for (const contentEncoding of contentEncodings) {\n decompressedBody = decompressedBody.pipeThrough(new fetchAPI.DecompressionStream(contentEncoding));\n }\n decompressedResponse = new fetchAPI.Response(decompressedBody, response);\n decompressedResponseMap.set(response, decompressedResponse);\n }\n return decompressedResponse;\n}\nconst terminateEvents = ['SIGINT', 'exit', 'SIGTERM'];\nconst disposableStacks = new Set();\nlet eventListenerRegistered = false;\nfunction ensureEventListenerForDisposableStacks() {\n if (eventListenerRegistered) {\n return;\n }\n eventListenerRegistered = true;\n for (const event of terminateEvents) {\n globalThis.process.once(event, function terminateHandler() {\n return Promise.allSettled([...disposableStacks].map(stack => !stack.disposed && stack.disposeAsync()));\n });\n }\n}\nexport function ensureDisposableStackRegisteredForTerminateEvents(disposableStack) {\n if (globalThis.process) {\n ensureEventListenerForDisposableStacks();\n if (!disposableStacks.has(disposableStack)) {\n disposableStacks.add(disposableStack);\n disposableStack.defer(() => {\n disposableStacks.delete(disposableStack);\n });\n }\n }\n}\nclass CustomAbortControllerSignal extends EventTarget {\n aborted = false;\n _onabort = null;\n _reason;\n constructor() {\n super();\n const nodeEvents = globalThis.process?.getBuiltinModule?.('node:events');\n // @ts-expect-error - We know kMaxEventTargetListeners is available in node:events\n if (nodeEvents?.kMaxEventTargetListeners) {\n // @ts-expect-error - See https://github.com/nodejs/node/pull/55816/files#diff-03bd4f07a1006cb0daaddced702858751b20f5ab7681cb0719c1b1d80d6ca05cR31\n this[nodeEvents.kMaxEventTargetListeners] = 0;\n }\n }\n throwIfAborted() {\n if (this._nativeCtrl?.signal?.throwIfAborted) {\n return this._nativeCtrl.signal.throwIfAborted();\n }\n if (this.aborted) {\n throw this._reason;\n }\n }\n _nativeCtrl;\n ensureNativeCtrl() {\n if (!this._nativeCtrl) {\n const isAborted = this.aborted;\n this._nativeCtrl = new AbortController();\n if (isAborted) {\n this._nativeCtrl.abort(this._reason);\n }\n }\n return this._nativeCtrl;\n }\n abort(reason) {\n if (this._nativeCtrl?.abort) {\n return this._nativeCtrl?.abort(reason);\n }\n this._reason = reason || new DOMException('This operation was aborted', 'AbortError');\n this.aborted = true;\n this.dispatchEvent(new Event('abort'));\n }\n get signal() {\n if (this._nativeCtrl?.signal) {\n return this._nativeCtrl.signal;\n }\n return this;\n }\n get reason() {\n if (this._nativeCtrl?.signal) {\n return this._nativeCtrl.signal.reason;\n }\n return this._reason;\n }\n get onabort() {\n if (this._onabort) {\n return this._onabort;\n }\n return this._onabort;\n }\n set onabort(value) {\n if (this._nativeCtrl?.signal) {\n this._nativeCtrl.signal.onabort = value;\n return;\n }\n if (this._onabort) {\n this.removeEventListener('abort', this._onabort);\n }\n this._onabort = value;\n if (value) {\n this.addEventListener('abort', value);\n }\n }\n}\nexport function createCustomAbortControllerSignal() {\n if (globalThis.Bun || globalThis.Deno) {\n return new AbortController();\n }\n return new Proxy(new CustomAbortControllerSignal(), {\n get(target, prop, receiver) {\n if (prop.toString().includes('kDependantSignals')) {\n const nativeCtrl = target.ensureNativeCtrl();\n return Reflect.get(nativeCtrl.signal, prop, nativeCtrl.signal);\n }\n return Reflect.get(target, prop, receiver);\n },\n set(target, prop, value, receiver) {\n if (prop.toString().includes('kDependantSignals')) {\n const nativeCtrl = target.ensureNativeCtrl();\n return Reflect.set(nativeCtrl.signal, prop, value, nativeCtrl.signal);\n }\n return Reflect.set(target, prop, value, receiver);\n },\n getPrototypeOf() {\n return AbortSignal.prototype;\n },\n });\n}\n","import { fakePromise } from '@whatwg-node/promise-helpers';\nexport function isUWSResponse(res) {\n return !!res.onData;\n}\nexport function getRequestFromUWSRequest({ req, res, fetchAPI, controller, }) {\n const method = req.getMethod();\n let duplex;\n const chunks = [];\n const pushFns = [\n (chunk) => {\n chunks.push(chunk);\n },\n ];\n const push = (chunk) => {\n for (const pushFn of pushFns) {\n pushFn(chunk);\n }\n };\n let stopped = false;\n const stopFns = [\n () => {\n stopped = true;\n },\n ];\n const stop = () => {\n for (const stopFn of stopFns) {\n stopFn();\n }\n };\n res.onData(function (ab, isLast) {\n push(Buffer.from(Buffer.from(ab, 0, ab.byteLength)));\n if (isLast) {\n stop();\n }\n });\n let getReadableStream;\n if (method !== 'get' && method !== 'head') {\n duplex = 'half';\n controller.signal.addEventListener('abort', () => {\n stop();\n }, { once: true });\n let readableStream;\n getReadableStream = () => {\n if (!readableStream) {\n readableStream = new fetchAPI.ReadableStream({\n start(streamCtrl) {\n for (const chunk of chunks) {\n streamCtrl.enqueue(chunk);\n }\n if (stopped) {\n streamCtrl.close();\n return;\n }\n pushFns.push((chunk) => {\n streamCtrl.enqueue(chunk);\n });\n stopFns.push(() => {\n if (controller.signal.reason) {\n streamCtrl.error(controller.signal.reason);\n return;\n }\n if (streamCtrl.desiredSize) {\n streamCtrl.close();\n }\n });\n },\n });\n }\n return readableStream;\n };\n }\n const headers = new fetchAPI.Headers();\n req.forEach((key, value) => {\n headers.append(key, value);\n });\n let url = `http://localhost${req.getUrl()}`;\n const query = req.getQuery();\n if (query) {\n url += `?${query}`;\n }\n let buffer;\n function getBody() {\n if (!getReadableStream) {\n return null;\n }\n if (stopped) {\n return getBufferFromChunks();\n }\n return getReadableStream();\n }\n const request = new fetchAPI.Request(url, {\n method,\n headers,\n get body() {\n return getBody();\n },\n signal: controller.signal,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - not in the TS types yet\n duplex,\n });\n function getBufferFromChunks() {\n if (!buffer) {\n buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks);\n }\n return buffer;\n }\n function collectBuffer() {\n if (stopped) {\n return fakePromise(getBufferFromChunks());\n }\n return new Promise((resolve, reject) => {\n try {\n stopFns.push(() => {\n resolve(getBufferFromChunks());\n });\n }\n catch (e) {\n reject(e);\n }\n });\n }\n Object.defineProperties(request, {\n body: {\n get() {\n return getBody();\n },\n configurable: true,\n enumerable: true,\n },\n json: {\n value() {\n return collectBuffer()\n .then(b => b.toString('utf8'))\n .then(t => JSON.parse(t));\n },\n configurable: true,\n enumerable: true,\n },\n text: {\n value() {\n return collectBuffer().then(b => b.toString('utf8'));\n },\n configurable: true,\n enumerable: true,\n },\n arrayBuffer: {\n value() {\n return collectBuffer();\n },\n configurable: true,\n enumerable: true,\n },\n });\n return request;\n}\nexport function createWritableFromUWS(uwsResponse, fetchAPI) {\n return new fetchAPI.WritableStream({\n write(chunk) {\n uwsResponse.cork(() => {\n uwsResponse.write(chunk);\n });\n },\n close() {\n uwsResponse.cork(() => {\n uwsResponse.end();\n });\n },\n });\n}\nexport function sendResponseToUwsOpts(uwsResponse, fetchResponse, controller, fetchAPI) {\n if (!fetchResponse) {\n uwsResponse.writeStatus('404 Not Found');\n uwsResponse.end();\n return;\n }\n const bufferOfRes = fetchResponse._buffer;\n // @ts-expect-error - Handle the case where the response is a string\n const strBody = fetchResponse['bodyType'] === 'String' ? fetchResponse.bodyInit : undefined;\n if (controller.signal.aborted) {\n return;\n }\n uwsResponse.cork(() => {\n uwsResponse.writeStatus(`${fetchResponse.status} ${fetchResponse.statusText}`);\n let isSetCookieHandled = false;\n for (const [key, value] of fetchResponse.headers) {\n // content-length causes an error with Node.js's fetch\n if (key !== 'content-length') {\n if (key === 'set-cookie') {\n if (isSetCookieHandled) {\n continue;\n }\n isSetCookieHandled = true;\n const setCookies = fetchResponse.headers.getSetCookie?.();\n if (setCookies) {\n for (const setCookie of setCookies) {\n uwsResponse.writeHeader(key, setCookie);\n }\n continue;\n }\n }\n uwsResponse.writeHeader(key, value);\n }\n }\n if (strBody) {\n uwsResponse.end(strBody);\n }\n else if (bufferOfRes) {\n uwsResponse.end(bufferOfRes);\n }\n else if (!fetchResponse.body) {\n uwsResponse.end();\n }\n });\n if (strBody || bufferOfRes || !fetchResponse.body) {\n return;\n }\n controller.signal.addEventListener('abort', () => {\n if (!fetchResponse.body?.locked) {\n fetchResponse.body?.cancel(controller.signal.reason);\n }\n }, { once: true });\n return fetchResponse.body\n .pipeTo(createWritableFromUWS(uwsResponse, fetchAPI), {\n signal: controller.signal,\n })\n .catch(err => {\n if (controller.signal.aborted) {\n return;\n }\n throw err;\n });\n}\nexport { fakePromise };\n","import { chain, getInstrumented } from '@envelop/instrumentation';\nimport { AsyncDisposableStack, DisposableSymbols } from '@whatwg-node/disposablestack';\nimport * as DefaultFetchAPI from '@whatwg-node/fetch';\nimport { handleMaybePromise, unfakePromise } from '@whatwg-node/promise-helpers';\nimport { completeAssign, createCustomAbortControllerSignal, ensureDisposableStackRegisteredForTerminateEvents, handleAbortSignalAndPromiseResponse, handleErrorFromRequestHandler, isFetchEvent, isNodeRequest, isolateObject, isPromise, isRequestInit, isServerResponse, iterateAsyncVoid, normalizeNodeRequest, sendNodeResponse, } from './utils.js';\nimport { fakePromise, getRequestFromUWSRequest, isUWSResponse, sendResponseToUwsOpts, } from './uwebsockets.js';\n// Required for envs like nextjs edge runtime\nfunction isRequestAccessible(serverContext) {\n try {\n return !!serverContext?.request;\n }\n catch {\n return false;\n }\n}\nconst EMPTY_OBJECT = {};\nfunction createServerAdapter(serverAdapterBaseObject, options) {\n const useSingleWriteHead = options?.__useSingleWriteHead == null ? true : options.__useSingleWriteHead;\n const fetchAPI = {\n ...DefaultFetchAPI,\n ...options?.fetchAPI,\n };\n const useCustomAbortCtrl = options?.__useCustomAbortCtrl == null\n ? fetchAPI.Request !== globalThis.Request\n : options.__useCustomAbortCtrl;\n const givenHandleRequest = typeof serverAdapterBaseObject === 'function'\n ? serverAdapterBaseObject\n : serverAdapterBaseObject.handle;\n const onRequestHooks = [];\n const onResponseHooks = [];\n let instrumentation;\n const waitUntilPromises = new Set();\n let _disposableStack;\n function ensureDisposableStack() {\n if (!_disposableStack) {\n _disposableStack = new AsyncDisposableStack();\n if (options?.disposeOnProcessTerminate) {\n ensureDisposableStackRegisteredForTerminateEvents(_disposableStack);\n }\n _disposableStack.defer(() => {\n if (waitUntilPromises.size > 0) {\n return Promise.allSettled(waitUntilPromises).then(() => {\n waitUntilPromises.clear();\n }, () => {\n waitUntilPromises.clear();\n });\n }\n });\n }\n return _disposableStack;\n }\n function waitUntil(maybePromise) {\n // Ensure that the disposable stack is created\n if (isPromise(maybePromise)) {\n ensureDisposableStack();\n waitUntilPromises.add(maybePromise);\n maybePromise.then(() => {\n waitUntilPromises.delete(maybePromise);\n }, err => {\n console.error(`Unexpected error while waiting: ${err.message || err}`);\n waitUntilPromises.delete(maybePromise);\n });\n }\n }\n if (options?.plugins != null) {\n for (const plugin of options.plugins) {\n if (plugin.instrumentation) {\n instrumentation = instrumentation\n ? chain(instrumentation, plugin.instrumentation)\n : plugin.instrumentation;\n }\n if (plugin.onRequest) {\n onRequestHooks.push(plugin.onRequest);\n }\n if (plugin.onResponse) {\n onResponseHooks.push(plugin.onResponse);\n }\n const disposeFn = plugin[DisposableSymbols.dispose];\n if (disposeFn) {\n ensureDisposableStack().defer(disposeFn);\n }\n const asyncDisposeFn = plugin[DisposableSymbols.asyncDispose];\n if (asyncDisposeFn) {\n ensureDisposableStack().defer(asyncDisposeFn);\n }\n if (plugin.onDispose) {\n ensureDisposableStack().defer(plugin.onDispose);\n }\n }\n }\n let handleRequest = onRequestHooks.length > 0 || onResponseHooks.length > 0\n ? function handleRequest(request, serverContext) {\n let requestHandler = givenHandleRequest;\n let response;\n if (onRequestHooks.length === 0) {\n return handleEarlyResponse();\n }\n let url = request['parsedUrl'] ||\n new Proxy(EMPTY_OBJECT, {\n get(_target, prop, _receiver) {\n url = new fetchAPI.URL(request.url, 'http://localhost');\n return Reflect.get(url, prop, url);\n },\n });\n function handleResponse(response) {\n if (onResponseHooks.length === 0) {\n return response;\n }\n return handleMaybePromise(() => iterateAsyncVoid(onResponseHooks, onResponseHook => onResponseHook({\n request,\n response,\n serverContext,\n setResponse(newResponse) {\n response = newResponse;\n },\n fetchAPI,\n })), () => response);\n }\n function handleEarlyResponse() {\n if (!response) {\n return handleMaybePromise(() => requestHandler(request, serverContext), handleResponse);\n }\n return handleResponse(response);\n }\n return handleMaybePromise(() => iterateAsyncVoid(onRequestHooks, (onRequestHook, stopEarly) => onRequestHook({\n request,\n setRequest(newRequest) {\n request = newRequest;\n },\n serverContext,\n fetchAPI,\n url,\n requestHandler,\n setRequestHandler(newRequestHandler) {\n requestHandler = newRequestHandler;\n },\n endResponse(newResponse) {\n response = newResponse;\n if (newResponse) {\n stopEarly();\n }\n },\n })), handleEarlyResponse);\n }\n : givenHandleRequest;\n if (instrumentation?.request) {\n const originalRequestHandler = handleRequest;\n handleRequest = (request, initialContext) => {\n return getInstrumented({ request }).asyncFn(instrumentation.request, originalRequestHandler)(request, initialContext);\n };\n }\n // TODO: Remove this on the next major version\n function handleNodeRequest(nodeRequest, ...ctx) {\n const serverContext = ctx.length > 1 ? completeAssign(...ctx) : ctx[0] || {};\n // Ensure `waitUntil` is available in the server context\n if (!serverContext.waitUntil) {\n serverContext.waitUntil = waitUntil;\n }\n const request = normalizeNodeRequest(nodeRequest, fetchAPI, undefined, useCustomAbortCtrl);\n return handleRequest(request, serverContext);\n }\n function handleNodeRequestAndResponse(nodeRequest, nodeResponseOrContainer, ...ctx) {\n const nodeResponse = nodeResponseOrContainer.raw || nodeResponseOrContainer;\n const serverContext = ctx.length > 1 ? completeAssign(...ctx) : ctx[0] || {};\n // Ensure `waitUntil` is available in the server context\n if (!serverContext.waitUntil) {\n serverContext.waitUntil = waitUntil;\n }\n const request = normalizeNodeRequest(nodeRequest, fetchAPI, nodeResponse, useCustomAbortCtrl);\n return handleRequest(request, serverContext);\n }\n function requestListener(nodeRequest, nodeResponse, ...ctx) {\n const defaultServerContext = {\n req: nodeRequest,\n res: nodeResponse,\n waitUntil,\n };\n return unfakePromise(fakePromise()\n .then(() => handleNodeRequestAndResponse(nodeRequest, nodeResponse, defaultServerContext, ...ctx))\n .catch(err => handleErrorFromRequestHandler(err, fetchAPI.Response))\n .then(response => sendNodeResponse(response, nodeResponse, nodeRequest, useSingleWriteHead))\n .catch(err => console.error(`Unexpected error while handling request: ${err.message || err}`)));\n }\n function handleUWS(res, req, ...ctx) {\n const defaultServerContext = {\n res,\n req,\n waitUntil,\n };\n const filteredCtxParts = ctx.filter(partCtx => partCtx != null);\n const serverContext = filteredCtxParts.length > 0\n ? completeAssign(defaultServerContext, ...ctx)\n : defaultServerContext;\n const controller = useCustomAbortCtrl\n ? createCustomAbortControllerSignal()\n : new AbortController();\n const originalResEnd = res.end.bind(res);\n let resEnded = false;\n res.end = function (data) {\n resEnded = true;\n return originalResEnd(data);\n };\n const originalOnAborted = res.onAborted.bind(res);\n originalOnAborted(function () {\n controller.abort();\n });\n res.onAborted = function (cb) {\n controller.signal.addEventListener('abort', cb, { once: true });\n };\n const request = getRequestFromUWSRequest({\n req,\n res,\n fetchAPI,\n controller,\n });\n return handleMaybePromise(() => handleMaybePromise(() => handleRequest(request, serverContext), response => response, err => handleErrorFromRequestHandler(err, fetchAPI.Response)), response => {\n if (!controller.signal.aborted && !resEnded) {\n return handleMaybePromise(() => sendResponseToUwsOpts(res, response, controller, fetchAPI), r => r, err => {\n console.error(`Unexpected error while handling request: ${err.message || err}`);\n });\n }\n });\n }\n function handleEvent(event, ...ctx) {\n if (!event.respondWith || !event.request) {\n throw new TypeError(`Expected FetchEvent, got ${event}`);\n }\n const filteredCtxParts = ctx.filter(partCtx => partCtx != null);\n const serverContext = filteredCtxParts.length > 0\n ? completeAssign({}, event, ...filteredCtxParts)\n : isolateObject(event);\n const response$ = handleRequest(event.request, serverContext);\n event.respondWith(response$);\n }\n function handleRequestWithWaitUntil(request, ...ctx) {\n const filteredCtxParts = ctx.filter(partCtx => partCtx != null);\n const serverContext = filteredCtxParts.length > 1\n ? completeAssign({}, ...filteredCtxParts)\n : isolateObject(filteredCtxParts[0], filteredCtxParts[0] == null || filteredCtxParts[0].waitUntil == null\n ? waitUntil\n : undefined);\n return handleRequest(request, serverContext);\n }\n const fetchFn = (input, ...maybeCtx) => {\n if (typeof input === 'string' || 'href' in input) {\n const [initOrCtx, ...restOfCtx] = maybeCtx;\n if (isRequestInit(initOrCtx)) {\n const request = new fetchAPI.Request(input, initOrCtx);\n const res$ = handleRequestWithWaitUntil(request, ...restOfCtx);\n const signal = initOrCtx.signal;\n if (signal) {\n return handleAbortSignalAndPromiseResponse(res$, signal);\n }\n return res$;\n }\n const request = new fetchAPI.Request(input);\n return handleRequestWithWaitUntil(request, ...maybeCtx);\n }\n const res$ = handleRequestWithWaitUntil(input, ...maybeCtx);\n return handleAbortSignalAndPromiseResponse(res$, input.signal);\n };\n const genericRequestHandler = (input, ...maybeCtx) => {\n // If it is a Node request\n const [initOrCtxOrRes, ...restOfCtx] = maybeCtx;\n if (isNodeRequest(input)) {\n if (!isServerResponse(initOrCtxOrRes)) {\n throw new TypeError(`Expected ServerResponse, got ${initOrCtxOrRes}`);\n }\n return requestListener(input, initOrCtxOrRes, ...restOfCtx);\n }\n if (isUWSResponse(input)) {\n return handleUWS(input, initOrCtxOrRes, ...restOfCtx);\n }\n if (isServerResponse(initOrCtxOrRes)) {\n throw new TypeError('Got Node response without Node request');\n }\n // Is input a container object over Request?\n if (isRequestAccessible(input)) {\n // Is it FetchEvent?\n if (isFetchEvent(input)) {\n return handleEvent(input, ...maybeCtx);\n }\n // In this input is also the context\n return handleRequestWithWaitUntil(input.request, input, ...maybeCtx);\n }\n // Or is it Request itself?\n // Then ctx is present and it is the context\n return fetchFn(input, ...maybeCtx);\n };\n const adapterObj = {\n handleRequest: handleRequestWithWaitUntil,\n fetch: fetchFn,\n handleNodeRequest,\n handleNodeRequestAndResponse,\n requestListener,\n handleEvent,\n handleUWS,\n handle: genericRequestHandler,\n get disposableStack() {\n return ensureDisposableStack();\n },\n [DisposableSymbols.asyncDispose]() {\n if (_disposableStack && !_disposableStack.disposed) {\n return _disposableStack.disposeAsync();\n }\n return fakePromise();\n },\n dispose() {\n if (_disposableStack && !_disposableStack.disposed) {\n return _disposableStack.disposeAsync();\n }\n return fakePromise();\n },\n waitUntil,\n };\n const serverAdapter = new Proxy(genericRequestHandler, {\n // It should have all the attributes of the handler function and the server instance\n has: (_, prop) => {\n return (prop in adapterObj ||\n prop in genericRequestHandler ||\n (serverAdapterBaseObject && prop in serverAdapterBaseObject));\n },\n get: (_, prop) => {\n // Somehow Deno and Node 24 don't like bound dispose functions\n if (globalThis.Deno || prop === Symbol.asyncDispose || prop === Symbol.dispose) {\n const adapterProp = Reflect.get(adapterObj, prop, adapterObj);\n if (adapterProp) {\n return adapterProp;\n }\n }\n const adapterProp = adapterObj[prop];\n if (adapterProp) {\n if (adapterProp.bind) {\n return adapterProp.bind(adapterObj);\n }\n return adapterProp;\n }\n const handleProp = genericRequestHandler[prop];\n if (handleProp) {\n if (handleProp.bind) {\n return handleProp.bind(genericRequestHandler);\n }\n return handleProp;\n }\n if (serverAdapterBaseObject) {\n const serverAdapterBaseObjectProp = serverAdapterBaseObject[prop];\n if (serverAdapterBaseObjectProp) {\n if (serverAdapterBaseObjectProp.bind) {\n return function (...args) {\n const returnedVal = serverAdapterBaseObject[prop](...args);\n if (returnedVal === serverAdapterBaseObject) {\n return serverAdapter;\n }\n return returnedVal;\n };\n }\n return serverAdapterBaseObjectProp;\n }\n }\n },\n apply(_, __, args) {\n return genericRequestHandler(...args);\n },\n });\n return serverAdapter;\n}\nexport { createServerAdapter };\n","import { handleMaybePromise } from '@whatwg-node/promise-helpers';\nexport function getCORSHeadersByRequestAndOptions(request, corsOptions) {\n const currentOrigin = request.headers.get('origin');\n if (corsOptions === false || currentOrigin == null) {\n return null;\n }\n const headers = {};\n // If defined origins have '*' or undefined by any means, we should allow all origins\n if (corsOptions.origin == null ||\n corsOptions.origin.length === 0 ||\n corsOptions.origin.includes('*')) {\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else if (typeof corsOptions.origin === 'string') {\n // If there is one specific origin is specified, use it directly\n headers['Access-Control-Allow-Origin'] = corsOptions.origin;\n }\n else if (Array.isArray(corsOptions.origin)) {\n // If there is only one origin defined in the array, consider it as a single one\n if (corsOptions.origin.length === 1) {\n headers['Access-Control-Allow-Origin'] = corsOptions.origin[0];\n }\n else if (corsOptions.origin.includes(currentOrigin)) {\n // If origin is available in the headers, use it\n headers['Access-Control-Allow-Origin'] = currentOrigin;\n // Vary by origin because there are multiple origins\n headers['Vary'] = 'Origin';\n }\n else {\n // There is no origin found in the headers, so we should return null\n headers['Access-Control-Allow-Origin'] = 'null';\n }\n }\n if (corsOptions.methods?.length) {\n headers['Access-Control-Allow-Methods'] = corsOptions.methods.join(', ');\n }\n else {\n const requestMethod = request.headers.get('access-control-request-method');\n if (requestMethod) {\n headers['Access-Control-Allow-Methods'] = requestMethod;\n }\n }\n if (corsOptions.allowedHeaders?.length) {\n headers['Access-Control-Allow-Headers'] = corsOptions.allowedHeaders.join(', ');\n }\n else {\n const requestHeaders = request.headers.get('access-control-request-headers');\n if (requestHeaders) {\n headers['Access-Control-Allow-Headers'] = requestHeaders;\n if (headers['Vary']) {\n headers['Vary'] += ', Access-Control-Request-Headers';\n }\n else {\n headers['Vary'] = 'Access-Control-Request-Headers';\n }\n }\n }\n if (corsOptions.credentials != null) {\n if (corsOptions.credentials === true) {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n }\n else if (headers['Access-Control-Allow-Origin'] !== '*') {\n headers['Access-Control-Allow-Credentials'] = 'true';\n }\n if (corsOptions.exposedHeaders) {\n headers['Access-Control-Expose-Headers'] = corsOptions.exposedHeaders.join(', ');\n }\n if (corsOptions.maxAge) {\n headers['Access-Control-Max-Age'] = corsOptions.maxAge.toString();\n }\n return headers;\n}\nfunction getCORSResponseHeaders(request, corsOptionsFactory, serverContext) {\n return handleMaybePromise(() => corsOptionsFactory(request, serverContext), corsOptions => getCORSHeadersByRequestAndOptions(request, corsOptions));\n}\nexport function useCORS(options) {\n let corsOptionsFactory = () => ({});\n if (options != null) {\n if (typeof options === 'function') {\n corsOptionsFactory = options;\n }\n else if (typeof options === 'object') {\n const corsOptions = {\n ...options,\n };\n corsOptionsFactory = () => corsOptions;\n }\n else if (options === false) {\n corsOptionsFactory = () => false;\n }\n }\n return {\n onRequest({ request, fetchAPI, endResponse }) {\n if (request.method.toUpperCase() === 'OPTIONS') {\n const response = new fetchAPI.Response(null, {\n status: 204,\n // Safari (and potentially other browsers) need content-length 0,\n // for 204 or they just hang waiting for a body\n // see: https://github.com/expressjs/cors/blob/master/lib/index.js#L176\n headers: {\n 'Content-Length': '0',\n },\n });\n endResponse(response);\n }\n },\n onResponse({ request, serverContext, response }) {\n return handleMaybePromise(() => getCORSResponseHeaders(request, corsOptionsFactory, serverContext), headers => {\n if (headers != null) {\n for (const headerName in headers) {\n response.headers.set(headerName, headers[headerName]);\n }\n }\n });\n },\n };\n}\n","import { GraphQLError, versionInfo } from 'graphql';\nconst possibleGraphQLErrorProperties = [\n 'message',\n 'locations',\n 'path',\n 'nodes',\n 'source',\n 'positions',\n 'originalError',\n 'name',\n 'stack',\n 'extensions',\n];\nfunction isGraphQLErrorLike(error) {\n return (error != null &&\n typeof error === 'object' &&\n Object.keys(error).every(key => possibleGraphQLErrorProperties.includes(key)));\n}\nexport function createGraphQLError(message, options) {\n if (options?.originalError &&\n !(options.originalError instanceof Error) &&\n isGraphQLErrorLike(options.originalError)) {\n options.originalError = createGraphQLError(options.originalError.message, options.originalError);\n }\n if (versionInfo.major >= 17) {\n return new GraphQLError(message, options);\n }\n return new GraphQLError(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);\n}\nexport function relocatedError(originalError, path) {\n return createGraphQLError(originalError.message, {\n nodes: originalError.nodes,\n source: originalError.source,\n positions: originalError.positions,\n path: path == null ? originalError.path : path,\n originalError,\n extensions: originalError.extensions,\n });\n}\n","export function isAsyncIterable(value) {\n return value?.[Symbol.asyncIterator] != null;\n}\n","import { GraphQLError } from 'graphql';\nimport { createGraphQLError } from '@graphql-tools/utils';\nfunction isAggregateError(obj) {\n return obj != null && typeof obj === 'object' && 'errors' in obj;\n}\nfunction hasToString(obj) {\n return obj != null && typeof obj.toString === 'function';\n}\nexport function isGraphQLError(val) {\n return val instanceof GraphQLError;\n}\nexport function isOriginalGraphQLError(val) {\n if (val instanceof GraphQLError) {\n if (val.originalError != null) {\n return isOriginalGraphQLError(val.originalError);\n }\n return true;\n }\n return false;\n}\nexport function isAbortError(error) {\n return (typeof error === 'object' &&\n error?.constructor?.name === 'DOMException' &&\n (error.name === 'AbortError' ||\n error.name === 'TimeoutError'));\n}\nexport function handleError(error, maskedErrorsOpts, logger) {\n const errors = new Set();\n if (isAggregateError(error)) {\n for (const singleError of error.errors) {\n const handledErrors = handleError(singleError, maskedErrorsOpts, logger);\n for (const handledError of handledErrors) {\n errors.add(handledError);\n }\n }\n }\n else if (isAbortError(error)) {\n logger.debug('Request aborted');\n }\n else if (maskedErrorsOpts) {\n const maskedError = maskedErrorsOpts.maskError(error, maskedErrorsOpts.errorMessage, maskedErrorsOpts.isDev);\n if (maskedError !== error) {\n logger.error(error);\n }\n errors.add(isGraphQLError(maskedError)\n ? maskedError\n : createGraphQLError(maskedError.message, {\n originalError: maskedError,\n }));\n }\n else if (isGraphQLError(error)) {\n errors.add(error);\n }\n else if (error instanceof Error) {\n errors.add(createGraphQLError(error.message, {\n originalError: error,\n }));\n }\n else if (typeof error === 'string') {\n errors.add(createGraphQLError(error, {\n extensions: {\n code: 'INTERNAL_SERVER_ERROR',\n unexpected: true,\n },\n }));\n }\n else if (hasToString(error)) {\n errors.add(createGraphQLError(error.toString(), {\n extensions: {\n code: 'INTERNAL_SERVER_ERROR',\n unexpected: true,\n },\n }));\n }\n else {\n logger.error(error);\n errors.add(createGraphQLError('Unexpected error.', {\n extensions: {\n http: {\n unexpected: true,\n },\n },\n }));\n }\n return Array.from(errors);\n}\nexport function getResponseInitByRespectingErrors(result, headers = {}, isApplicationJson = false) {\n let status;\n let unexpectedErrorExists = false;\n if ('extensions' in result && result.extensions?.http) {\n if (result.extensions.http.headers) {\n Object.assign(headers, result.extensions.http.headers);\n }\n if (result.extensions.http.status) {\n status = result.extensions.http.status;\n }\n }\n if ('errors' in result && result.errors?.length) {\n for (const error of result.errors) {\n if (error.extensions?.['http']) {\n if (error.extensions['http'].headers) {\n Object.assign(headers, error.extensions['http'].headers);\n }\n if (isApplicationJson && error.extensions['http'].spec) {\n continue;\n }\n if (error.extensions['http'].status &&\n (!status || error.extensions['http'].status > status)) {\n status = error.extensions['http'].status;\n }\n }\n else if (!isOriginalGraphQLError(error) || error.extensions?.['unexpected']) {\n unexpectedErrorExists = true;\n }\n }\n }\n else {\n status ||= 200;\n }\n if (!status) {\n if (unexpectedErrorExists && !('data' in result)) {\n status = 500;\n }\n else {\n status = 200;\n }\n }\n return {\n status,\n headers,\n };\n}\nexport function areGraphQLErrors(obj) {\n return (Array.isArray(obj) &&\n obj.length > 0 &&\n // if one item in the array is a GraphQLError, we're good\n obj.some(isGraphQLError));\n}\n","export function useAllowedResponseHeaders(allowedHeaders) {\n return {\n onResponse({ response }) {\n removeDisallowedHeaders(response.headers, allowedHeaders);\n },\n };\n}\nexport function useAllowedRequestHeaders(allowedHeaders) {\n return {\n onRequest({ request }) {\n removeDisallowedHeaders(request.headers, allowedHeaders);\n },\n };\n}\nfunction removeDisallowedHeaders(headers, allowedHeaders) {\n for (const headerName of headers.keys()) {\n if (!allowedHeaders.includes(headerName)) {\n headers.delete(headerName);\n }\n }\n}\n","import { URLSearchParams } from '@whatwg-node/fetch';\nexport function handleURLSearchParams(searchParams) {\n const operationName = searchParams.get('operationName') || undefined;\n const query = searchParams.get('query') || undefined;\n const variablesStr = searchParams.get('variables') || undefined;\n const extensionsStr = searchParams.get('extensions') || undefined;\n return {\n operationName,\n query,\n variables: variablesStr ? JSON.parse(variablesStr) : undefined,\n extensions: extensionsStr ? JSON.parse(extensionsStr) : undefined,\n };\n}\nexport function parseURLSearchParams(requestBody) {\n const searchParams = new URLSearchParams(requestBody);\n return handleURLSearchParams(searchParams);\n}\nexport function isContentTypeMatch(request, expectedContentType) {\n let contentType = request.headers.get('content-type');\n // a list of content-types is not valid as per HTTP spec, but some clients dont care\n contentType = contentType?.split(',')[0] || null;\n return (contentType === expectedContentType || !!contentType?.startsWith(`${expectedContentType};`));\n}\n","import { URLSearchParams } from '@whatwg-node/fetch';\nimport { handleURLSearchParams } from './utils.js';\nexport function isGETRequest(request) {\n return request.method === 'GET';\n}\nexport function parseGETRequest(request) {\n const queryString = request.url.substring(request.url.indexOf('?') + 1);\n const searchParams = new URLSearchParams(queryString);\n return handleURLSearchParams(searchParams);\n}\n","import { isContentTypeMatch, parseURLSearchParams } from './utils.js';\nexport function isPOSTFormUrlEncodedRequest(request) {\n return (request.method === 'POST' && isContentTypeMatch(request, 'application/x-www-form-urlencoded'));\n}\nexport function parsePOSTFormUrlEncodedRequest(request) {\n return request.text().then(parseURLSearchParams);\n}\n","import { isContentTypeMatch } from './utils.js';\nexport function isPOSTGraphQLStringRequest(request) {\n return request.method === 'POST' && isContentTypeMatch(request, 'application/graphql');\n}\nexport function parsePOSTGraphQLStringRequest(request) {\n return request.text().then(query => ({ query }));\n}\n","import { GraphQLError } from 'graphql';\nimport { createGraphQLError } from '@graphql-tools/utils';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { isContentTypeMatch } from './utils.js';\nexport function isPOSTJsonRequest(request) {\n return (request.method === 'POST' &&\n (isContentTypeMatch(request, 'application/json') ||\n isContentTypeMatch(request, 'application/graphql+json')));\n}\nexport function parsePOSTJsonRequest(request) {\n return handleMaybePromise(() => request.json(), (requestBody) => {\n if (requestBody == null) {\n throw createGraphQLError(`POST body is expected to be object but received ${requestBody}`, {\n extensions: {\n http: {\n status: 400,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n const requestBodyTypeof = typeof requestBody;\n if (requestBodyTypeof !== 'object') {\n throw createGraphQLError(`POST body is expected to be object but received ${requestBodyTypeof}`, {\n extensions: {\n http: {\n status: 400,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n return requestBody;\n }, err => {\n if (err instanceof GraphQLError) {\n throw err;\n }\n const extensions = {\n http: {\n spec: true,\n status: 400,\n },\n code: 'BAD_REQUEST',\n };\n if (err instanceof Error) {\n extensions['originalError'] = {\n name: err.name,\n message: err.message,\n };\n }\n throw createGraphQLError('POST body sent invalid JSON.', {\n extensions,\n });\n });\n}\n","export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","import { dset } from 'dset';\nimport { createGraphQLError } from '@graphql-tools/utils';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { isContentTypeMatch } from './utils.js';\nexport function isPOSTMultipartRequest(request) {\n return request.method === 'POST' && isContentTypeMatch(request, 'multipart/form-data');\n}\nexport function parsePOSTMultipartRequest(request) {\n return handleMaybePromise(() => request.formData(), (requestBody) => {\n const operationsStr = requestBody.get('operations');\n if (!operationsStr) {\n throw createGraphQLError('Missing multipart form field \"operations\"');\n }\n if (typeof operationsStr !== 'string') {\n throw createGraphQLError('Multipart form field \"operations\" must be a string');\n }\n let operations;\n try {\n operations = JSON.parse(operationsStr);\n }\n catch {\n throw createGraphQLError('Multipart form field \"operations\" must be a valid JSON string');\n }\n const mapStr = requestBody.get('map');\n if (mapStr != null) {\n if (typeof mapStr !== 'string') {\n throw createGraphQLError('Multipart form field \"map\" must be a string');\n }\n let map;\n try {\n map = JSON.parse(mapStr);\n }\n catch {\n throw createGraphQLError('Multipart form field \"map\" must be a valid JSON string');\n }\n for (const fileIndex in map) {\n const file = requestBody.get(fileIndex);\n const keys = map[fileIndex];\n for (const key of keys) {\n dset(operations, key, file);\n }\n }\n }\n return operations;\n }, e => {\n if (e instanceof Error && e.message.startsWith('File size limit exceeded: ')) {\n throw createGraphQLError(e.message, {\n extensions: {\n http: {\n status: 413,\n },\n },\n });\n }\n throw e;\n });\n}\n","import { createGraphQLError } from '@graphql-tools/utils';\nconst expectedParameters = new Set(['query', 'variables', 'operationName', 'extensions']);\nexport function assertInvalidParams(params, extraParamNames) {\n if (params == null || typeof params !== 'object') {\n throw createGraphQLError('Invalid \"params\" in the request body', {\n extensions: {\n http: {\n spec: true,\n status: 400,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n for (const paramKey in params) {\n if (params[paramKey] == null) {\n continue;\n }\n if (!expectedParameters.has(paramKey)) {\n if (extraParamNames?.includes(paramKey)) {\n continue;\n }\n throw createGraphQLError(`Unexpected parameter \"${paramKey}\" in the request body.`, {\n extensions: {\n http: {\n status: 400,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n }\n}\nexport function checkGraphQLQueryParams(params, extraParamNames) {\n if (!isObject(params)) {\n throw createGraphQLError(`Expected params to be an object but given ${extendedTypeof(params)}.`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n assertInvalidParams(params, extraParamNames);\n if (params['query'] == null) {\n throw createGraphQLError('Must provide query string.', {\n extensions: {\n http: {\n spec: true,\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n const queryType = extendedTypeof(params['query']);\n if (queryType !== 'string') {\n throw createGraphQLError(`Expected \"query\" param to be a string, but given ${queryType}.`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n const variablesParamType = extendedTypeof(params['variables']);\n if (!['object', 'null', 'undefined'].includes(variablesParamType)) {\n throw createGraphQLError(`Expected \"variables\" param to be empty or an object, but given ${variablesParamType}.`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n const extensionsParamType = extendedTypeof(params['extensions']);\n if (!['object', 'null', 'undefined'].includes(extensionsParamType)) {\n throw createGraphQLError(`Expected \"extensions\" param to be empty or an object, but given ${extensionsParamType}.`, {\n extensions: {\n http: {\n status: 400,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n return params;\n}\nexport function isValidGraphQLParams(params) {\n try {\n checkGraphQLQueryParams(params);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function useCheckGraphQLQueryParams(extraParamNames) {\n return {\n onParams({ params }) {\n checkGraphQLQueryParams(params, extraParamNames);\n },\n };\n}\nfunction extendedTypeof(val) {\n if (val === null) {\n return 'null';\n }\n if (Array.isArray(val)) {\n return 'array';\n }\n return typeof val;\n}\nfunction isObject(val) {\n return extendedTypeof(val) === 'object';\n}\n","import { createGraphQLError } from '@graphql-tools/utils';\nexport function isValidMethodForGraphQL(method) {\n return method === 'GET' || method === 'POST';\n}\nexport function useCheckMethodForGraphQL() {\n return {\n onRequestParse({ request }) {\n if (!isValidMethodForGraphQL(request.method)) {\n throw createGraphQLError('GraphQL only supports GET and POST requests.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'GET, POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n },\n };\n}\n","export function useHTTPValidationError() {\n return {\n onValidate() {\n return ({ valid, result }) => {\n if (!valid) {\n for (const error of result) {\n error.extensions ||= {};\n error.extensions.code ||= 'GRAPHQL_VALIDATION_FAILED';\n error.extensions.http ||= {};\n error.extensions.http.spec =\n error.extensions.http.spec == null ? true : error.extensions.http.spec;\n error.extensions.http.status ||= 400;\n }\n }\n };\n },\n };\n}\n","import { createGraphQLError } from '@graphql-tools/utils';\nexport function useLimitBatching(limit) {\n return {\n onRequestParse() {\n return {\n onRequestParseDone({ requestParserResult }) {\n if (Array.isArray(requestParserResult)) {\n if (!limit) {\n throw createGraphQLError(`Batching is not supported.`, {\n extensions: {\n http: {\n status: 400,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n if (requestParserResult.length > limit) {\n throw createGraphQLError(`Batching is limited to ${limit} operations per request.`, {\n extensions: {\n http: {\n status: 413,\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n }\n },\n };\n },\n };\n}\n","import { getOperationAST, GraphQLError, } from 'graphql';\nimport { createGraphQLError } from '@graphql-tools/utils';\nexport function assertMutationViaGet(method, document, operationName) {\n const operation = document\n ? (getOperationAST(document, operationName) ?? undefined)\n : undefined;\n if (!operation) {\n throw createGraphQLError('Could not determine what operation to execute.', {\n extensions: {\n code: 'OPERATION_RESOLUTION_FAILURE',\n http: {\n status: 400,\n },\n },\n });\n }\n if (operation.operation === 'mutation' && method === 'GET') {\n throw createGraphQLError('Can only perform a mutation operation from a POST request.', {\n extensions: {\n http: {\n status: 405,\n headers: {\n Allow: 'POST',\n },\n },\n code: 'BAD_REQUEST',\n },\n });\n }\n}\nexport function usePreventMutationViaGET() {\n return {\n onParse() {\n // We should improve this by getting Yoga stuff from the hook params directly instead of the context\n return ({ result, context: { request, \n // the `params` might be missing in cases where the user provided\n // malformed context to getEnveloped (like `yoga.getEnveloped({})`)\n params: { operationName } = {}, }, }) => {\n // Run only if this is a Yoga request\n // the `request` might be missing when using graphql-ws for example\n // in which case throwing an error would abruptly close the socket\n if (!request) {\n return;\n }\n if (result instanceof Error) {\n if (result instanceof GraphQLError) {\n // @ts-expect-error - We are modifying the extensions on purpose\n const extensions = (result.extensions ||= {});\n extensions['code'] ||= 'GRAPHQL_PARSE_FAILED';\n const httpExtensions = (extensions['http'] ||= {});\n httpExtensions.spec ||= true;\n httpExtensions.status ||= 400;\n }\n }\n else {\n assertMutationViaGet(request.method, result, operationName);\n }\n };\n },\n };\n}\n","export function useHealthCheck({ id = Date.now().toString(), logger = console, endpoint = '/health', } = {}) {\n return {\n onRequest({ endResponse, fetchAPI, request }) {\n if (request.url.endsWith(endpoint)) {\n logger.debug('Responding Health Check');\n const response = new fetchAPI.Response(null, {\n status: 200,\n headers: {\n 'x-yoga-id': id,\n },\n });\n endResponse(response);\n }\n },\n };\n}\n","/**\n * @module LRUCache\n */\nconst perf = typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function'\n ? performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ? process : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function'\n ? PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max)\n ? null\n : max <= Math.pow(2, 8)\n ? Uint8Array\n : max <= Math.pow(2, 16)\n ? Uint16Array\n : max <= Math.pow(2, 32)\n ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER\n ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0\n ? ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined)\n return undefined;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRLUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v)\n ? v.__staleWhileFetching\n : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0\n ? this.#tail\n : this.#free.length !== 0\n ? this.#free.pop()\n : this.#size === this.#max\n ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal)\n ? oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-empty-object-type */\nimport { LRUCache as LRU } from 'lru-cache';\n/**\n * @deprecated In the next major, `createLRUCache` will be renamed to `_createLRUCache`,\n * and the current `createLRUCache` will be removed.\n */\nexport const createLRUCache = _createLRUCache;\nconst DEFAULT_MAX = 1024;\nconst DEFAULT_TTL = 3_600_000;\n/**\n * @internal This is an internal utility, and you should use it with your own risk.\n * This utility can have breaking changes in the future.\n */\nexport function _createLRUCache({ max = DEFAULT_MAX, ttl = DEFAULT_TTL, } = {}) {\n return new LRU({ max, ttl });\n}\n","import { _createLRUCache } from '../utils/create-lru-cache.js';\nexport function useParserAndValidationCache({ documentCache = _createLRUCache(), errorCache = _createLRUCache(), validationCache = true, }) {\n const validationCacheByRules = _createLRUCache();\n return {\n onParse({ params, setParsedDocument }) {\n const strDocument = params.source.toString();\n const document = documentCache.get(strDocument);\n if (document) {\n setParsedDocument(document);\n return;\n }\n const parserError = errorCache.get(strDocument);\n if (parserError) {\n throw parserError;\n }\n return ({ result }) => {\n if (result != null) {\n if (result instanceof Error) {\n errorCache.set(strDocument, result);\n }\n else {\n documentCache.set(strDocument, result);\n }\n }\n };\n },\n onValidate({ params: { schema, documentAST, rules }, setResult,\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n }) {\n /** No schema no cache */\n if (schema == null) {\n return;\n }\n if (validationCache !== false) {\n const rulesKey = rules?.map((rule) => rule.name).join(',') || '';\n let validationCacheBySchema = validationCacheByRules.get(rulesKey);\n if (!validationCacheBySchema) {\n validationCacheBySchema = new WeakMap();\n validationCacheByRules.set(rulesKey, validationCacheBySchema);\n }\n let validationCacheByDocument = validationCacheBySchema.get(schema);\n if (!validationCacheByDocument) {\n validationCacheByDocument = new WeakMap();\n validationCacheBySchema.set(schema, validationCacheByDocument);\n }\n const cachedResult = validationCacheByDocument.get(documentAST);\n if (cachedResult) {\n setResult(cachedResult);\n return;\n }\n return ({ result }) => {\n if (result != null) {\n validationCacheByDocument?.set(documentAST, result);\n }\n };\n }\n },\n };\n}\n","const DEFAULT_MATCHER = () => true;\nexport function useRequestParser(options) {\n const matchFn = options.match || DEFAULT_MATCHER;\n return {\n onRequestParse({ request, setRequestParser }) {\n if (matchFn(request)) {\n setRequestParser(options.parse);\n }\n },\n };\n}\n","export function getMediaTypesForRequestInOrder(request) {\n const accepts = (request.headers.get('accept') || '*/*')\n .replace(/\\s/g, '')\n .toLowerCase()\n .split(',');\n const mediaTypes = [];\n for (const accept of accepts) {\n const [mediaType, ...params] = accept.split(';');\n if (mediaType === undefined)\n continue; // If true, malformed header.\n const charset = params?.find(param => param.includes('charset=')) || 'charset=utf-8'; // utf-8 is assumed when not specified;\n if (charset !== 'charset=utf-8') {\n // only utf-8 is supported\n continue;\n }\n mediaTypes.push(mediaType);\n }\n return mediaTypes.reverse();\n}\nexport function isMatchingMediaType(askedMediaType, processorMediaType) {\n const [askedPre, askedSuf] = askedMediaType.split('/');\n const [pre, suf] = processorMediaType.split('/');\n if ((pre === '*' || pre === askedPre) && (suf === '*' || suf === askedSuf)) {\n return true;\n }\n return false;\n}\n","import { createGraphQLError } from '@graphql-tools/utils';\nimport { isGraphQLError } from '../../error.js';\n// JSON stringifier that adjusts the result error extensions while serialising\nexport function jsonStringifyResultWithoutInternals(result) {\n if (Array.isArray(result)) {\n return `[${result\n .map(r => {\n const sanitizedResult = omitInternalsFromResultErrors(r);\n const stringifier = r.stringify || JSON.stringify;\n return stringifier(sanitizedResult);\n })\n .join(',')}]`;\n }\n const sanitizedResult = omitInternalsFromResultErrors(result);\n const stringifier = result.stringify || JSON.stringify;\n return stringifier(sanitizedResult);\n}\nexport function omitInternalsFromResultErrors(result) {\n if (result.errors?.length || result.extensions?.http) {\n const newResult = { ...result };\n newResult.errors &&= newResult.errors.map(omitInternalsFromError);\n if (newResult.extensions) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TS should check for unused vars instead\n const { http, ...extensions } = result.extensions;\n newResult.extensions = Object.keys(extensions).length ? extensions : undefined;\n }\n return newResult;\n }\n return result;\n}\nfunction omitInternalsFromError(err) {\n if (isGraphQLError(err)) {\n const serializedError = 'toJSON' in err && typeof err.toJSON === 'function' ? err.toJSON() : Object(err);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars -- TS should check for unused vars instead\n const { http, unexpected, ...extensions } = serializedError.extensions || {};\n return createGraphQLError(err.message, {\n nodes: err.nodes,\n source: err.source,\n positions: err.positions,\n path: err.path,\n originalError: omitInternalsFromError(err.originalError || undefined),\n extensions: Object.keys(extensions).length ? extensions : undefined,\n });\n }\n return err;\n}\n","import { isAsyncIterable } from '@envelop/core';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { fakePromise } from '@whatwg-node/server';\nimport { getResponseInitByRespectingErrors } from '../../error.js';\nimport { jsonStringifyResultWithoutInternals } from './stringify.js';\nexport function processMultipartResult(result, fetchAPI) {\n const headersInit = {\n Connection: 'keep-alive',\n 'Content-Type': 'multipart/mixed; boundary=\"-\"',\n 'Transfer-Encoding': 'chunked',\n };\n const responseInit = getResponseInitByRespectingErrors(result, headersInit);\n let iterator;\n const textEncoder = new fetchAPI.TextEncoder();\n const readableStream = new fetchAPI.ReadableStream({\n start(controller) {\n if (isAsyncIterable(result)) {\n iterator = result[Symbol.asyncIterator]();\n }\n else {\n let finished = false;\n iterator = {\n next: () => {\n if (finished) {\n return fakePromise({ done: true, value: null });\n }\n finished = true;\n return fakePromise({ done: false, value: result });\n },\n };\n }\n controller.enqueue(textEncoder.encode('\\r\\n'));\n controller.enqueue(textEncoder.encode(`---`));\n },\n pull(controller) {\n return handleMaybePromise(() => iterator.next(), ({ done, value }) => {\n if (value != null) {\n controller.enqueue(textEncoder.encode('\\r\\n'));\n controller.enqueue(textEncoder.encode('Content-Type: application/json; charset=utf-8'));\n controller.enqueue(textEncoder.encode('\\r\\n'));\n const chunk = jsonStringifyResultWithoutInternals(value);\n const encodedChunk = textEncoder.encode(chunk);\n controller.enqueue(textEncoder.encode('Content-Length: ' + encodedChunk.byteLength));\n controller.enqueue(textEncoder.encode('\\r\\n'));\n controller.enqueue(textEncoder.encode('\\r\\n'));\n controller.enqueue(encodedChunk);\n controller.enqueue(textEncoder.encode('\\r\\n'));\n controller.enqueue(textEncoder.encode('---'));\n }\n if (done) {\n controller.enqueue(textEncoder.encode('--\\r\\n'));\n controller.close();\n }\n }, err => {\n controller.error(err);\n });\n },\n cancel(e) {\n if (iterator.return) {\n return handleMaybePromise(() => iterator.return?.(e), () => { });\n }\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n}\n","import { isAsyncIterable } from '@graphql-tools/utils';\nimport { areGraphQLErrors, getResponseInitByRespectingErrors, isGraphQLError, } from '../../error.js';\nimport { jsonStringifyResultWithoutInternals } from './stringify.js';\nexport function processRegularResult(executionResult, fetchAPI, acceptedHeader) {\n if (isAsyncIterable(executionResult)) {\n return new fetchAPI.Response(null, {\n status: 406,\n statusText: 'Not Acceptable',\n headers: {\n accept: 'application/json; charset=utf-8, application/graphql-response+json; charset=utf-8',\n },\n });\n }\n const headersInit = {\n 'Content-Type': acceptedHeader + '; charset=utf-8',\n };\n const responseInit = getResponseInitByRespectingErrors(executionResult, headersInit, \n // prefer 200 only if accepting application/json and all errors are exclusively GraphQL errors\n acceptedHeader === 'application/json' &&\n !Array.isArray(executionResult) &&\n areGraphQLErrors(executionResult.errors) &&\n executionResult.errors.some(err => !err.extensions?.['originalError'] || isGraphQLError(err.extensions['originalError'])));\n const responseBody = jsonStringifyResultWithoutInternals(executionResult);\n return new fetchAPI.Response(responseBody, responseInit);\n}\n","import { isAsyncIterable } from '@envelop/core';\nimport { handleMaybePromise } from '@whatwg-node/promise-helpers';\nimport { fakePromise } from '@whatwg-node/server';\nimport { getResponseInitByRespectingErrors } from '../../error.js';\nimport { jsonStringifyResultWithoutInternals } from './stringify.js';\nexport function getSSEProcessor() {\n return function processSSEResult(result, fetchAPI) {\n let pingIntervalMs = 12_000;\n // for testing the pings, reduce the timeout\n if (globalThis.process?.env?.['NODE_ENV'] === 'test') {\n pingIntervalMs = 300;\n }\n const headersInit = {\n 'Content-Type': 'text/event-stream',\n Connection: 'keep-alive',\n 'Cache-Control': 'no-cache',\n 'Content-Encoding': 'none',\n };\n const responseInit = getResponseInitByRespectingErrors(result, headersInit, true);\n let iterator;\n let pingInterval;\n const textEncoder = new fetchAPI.TextEncoder();\n const readableStream = new fetchAPI.ReadableStream({\n start(controller) {\n // always start with a ping because some browsers dont accept a header flush\n // causing the fetch to stall until something is streamed through the response\n controller.enqueue(textEncoder.encode(':\\n\\n'));\n // ping client every 12 seconds to keep the connection alive\n pingInterval = setInterval(() => {\n if (!controller.desiredSize) {\n clearInterval(pingInterval);\n return;\n }\n controller.enqueue(textEncoder.encode(':\\n\\n'));\n }, pingIntervalMs);\n if (isAsyncIterable(result)) {\n iterator = result[Symbol.asyncIterator]();\n }\n else {\n let finished = false;\n iterator = {\n next: () => {\n if (finished) {\n return fakePromise({ done: true, value: null });\n }\n finished = true;\n return fakePromise({ done: false, value: result });\n },\n };\n }\n },\n pull(controller) {\n return handleMaybePromise(() => iterator.next(), result => {\n if (result.value != null) {\n controller.enqueue(textEncoder.encode(`event: next\\n`));\n const chunk = jsonStringifyResultWithoutInternals(result.value);\n controller.enqueue(textEncoder.encode(`data: ${chunk}\\n\\n`));\n }\n if (result.done) {\n controller.enqueue(textEncoder.encode(`event: complete\\n`));\n controller.enqueue(textEncoder.encode(`data:\\n\\n`));\n clearInterval(pingInterval);\n controller.close();\n }\n }, err => {\n controller.error(err);\n });\n },\n cancel(e) {\n clearInterval(pingInterval);\n if (iterator.return) {\n return handleMaybePromise(() => iterator.return?.(e), () => { });\n }\n },\n });\n return new fetchAPI.Response(readableStream, responseInit);\n };\n}\n","import { isAsyncIterable } from '@envelop/core';\nimport { getMediaTypesForRequestInOrder, isMatchingMediaType } from './result-processor/accept.js';\nimport { processMultipartResult } from './result-processor/multipart.js';\nimport { processRegularResult } from './result-processor/regular.js';\nimport { getSSEProcessor } from './result-processor/sse.js';\nconst multipart = {\n mediaTypes: ['multipart/mixed'],\n asyncIterables: true,\n processResult: processMultipartResult,\n};\nfunction getSSEProcessorConfig() {\n return {\n mediaTypes: ['text/event-stream'],\n asyncIterables: true,\n processResult: getSSEProcessor(),\n };\n}\nconst regular = {\n mediaTypes: ['application/graphql-response+json', 'application/json'],\n asyncIterables: false,\n processResult: processRegularResult,\n};\nexport function useResultProcessors() {\n const isSubscriptionRequestMap = new WeakMap();\n const sse = getSSEProcessorConfig();\n const defaultList = [sse, multipart, regular];\n const subscriptionList = [sse, regular];\n return {\n onSubscribe({ args: { contextValue } }) {\n if (contextValue.request) {\n isSubscriptionRequestMap.set(contextValue.request, true);\n }\n },\n onResultProcess({ request, result, acceptableMediaTypes, setResultProcessor }) {\n const isSubscriptionRequest = isSubscriptionRequestMap.get(request);\n const processorConfigList = isSubscriptionRequest ? subscriptionList : defaultList;\n const requestMediaTypes = getMediaTypesForRequestInOrder(request);\n const isAsyncIterableResult = isAsyncIterable(result);\n for (const resultProcessorConfig of processorConfigList) {\n for (const requestMediaType of requestMediaTypes) {\n if (isAsyncIterableResult && !resultProcessorConfig.asyncIterables) {\n continue;\n }\n for (const processorMediaType of resultProcessorConfig.mediaTypes) {\n acceptableMediaTypes.push(processorMediaType);\n if (isMatchingMediaType(processorMediaType, requestMediaType)) {\n setResultProcessor(resultProcessorConfig.processResult, processorMediaType);\n }\n }\n }\n }\n },\n };\n}\n","export default \"<!doctype html><html lang=en><head><meta charset=utf-8><title>Welcome to GraphQL Yoga</title><link rel=icon href=https://raw.githubusercontent.com/graphql-hive/graphql-yoga/refs/heads/main/website/src/app/favicon.ico><style>body,html{padding:0;margin:0;height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',sans-serif;color:#fff;background-color:#000}main>section.hero{display:flex;height:90vh;justify-content:center;align-items:center;flex-direction:column}.logo{display:flex;align-items:center}.buttons{margin-top:24px}h1{font-size:80px}h2{color:#888;max-width:50%;margin-top:0;text-align:center}a{color:#fff;text-decoration:none;margin-left:10px;margin-right:10px;font-weight:700;transition:color .3s ease;padding:4px;overflow:visible}a.graphiql:hover{color:rgba(255,0,255,.7)}a.docs:hover{color:rgba(28,200,238,.7)}a.tutorial:hover{color:rgba(125,85,245,.7)}svg{margin-right:24px}.not-what-your-looking-for{margin-top:5vh}.not-what-your-looking-for>*{margin-left:auto;margin-right:auto}.not-what-your-looking-for>p{text-align:center}.not-what-your-looking-for>h2{color:#464646}.not-what-your-looking-for>p{max-width:600px;line-height:1.3em}.not-what-your-looking-for>pre{max-width:300px}</style></head><body id=body><main><section class=hero><div class=logo><div><svg xmlns=http://www.w3.org/2000/svg viewBox=\\\"-0.41 0.445 472.812 499.811\\\" height=150><defs><linearGradient id=paint0_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse gradientTransform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346407, -113.25101)\\\"><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><linearGradient id=paint1_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse gradientTransform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346407, -113.25101)\\\"><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><linearGradient id=paint2_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse gradientTransform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346407, -113.25101)\\\"><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><linearGradient id=paint3_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><linearGradient id=paint4_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><linearGradient id=paint5_linear_1677_11483 x1=16 y1=14 x2=87.2132 y2=44.5982 gradientUnits=userSpaceOnUse><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><filter id=filter0_f_1677_11483 x=23 y=-25 width=100 height=100 filterUnits=userSpaceOnUse color-interpolation-filters=sRGB><feFlood flood-opacity=0 result=BackgroundImageFix /><feBlend mode=normal in=SourceGraphic in2=BackgroundImageFix result=shape /><feGaussianBlur stdDeviation=12 result=effect1_foregroundBlur_1677_11483 /></filter><filter id=filter1_f_1677_11483 x=-24 y=19 width=100 height=100 filterUnits=userSpaceOnUse color-interpolation-filters=sRGB><feFlood flood-opacity=0 result=BackgroundImageFix /><feBlend mode=normal in=SourceGraphic in2=BackgroundImageFix result=shape /><feGaussianBlur stdDeviation=12 result=effect1_foregroundBlur_1677_11483 /></filter><linearGradient id=paint6_linear_1677_11483 x1=30 y1=28 x2=66.1645 y2=44.4363 gradientUnits=userSpaceOnUse gradientTransform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346407, -113.25101)\\\"><stop stop-color=#7433FF /><stop offset=1 stop-color=#FFA3FD /></linearGradient><filter id=filter2_f_1677_11483 x=-12 y=-44 width=100 height=100 filterUnits=userSpaceOnUse color-interpolation-filters=sRGB><feFlood flood-opacity=0 result=BackgroundImageFix /><feBlend mode=normal in=SourceGraphic in2=BackgroundImageFix result=shape /><feGaussianBlur stdDeviation=12 result=effect1_foregroundBlur_1677_11483 /></filter><filter id=filter3_f_1677_11483 x=13 y=19 width=100 height=100 filterUnits=userSpaceOnUse color-interpolation-filters=sRGB><feFlood flood-opacity=0 result=BackgroundImageFix /><feBlend mode=normal in=SourceGraphic in2=BackgroundImageFix result=shape /><feGaussianBlur stdDeviation=12 result=effect1_foregroundBlur_1677_11483 /></filter></defs><mask id=mask0_1677_11483 style=mask-type:alpha maskUnits=userSpaceOnUse x=16 y=14 width=58 height=62><path d=\\\"M21 25.3501C21.7279 25.3501 22.4195 25.5056 23.0433 25.7853L42.1439 14.8C43.0439 14.3 44.1439 14 45.1439 14C46.2439 14 47.2439 14.3 48.1439 14.8L64.5439 24.3C63.3439 25.1 62.4439 26.3 61.8439 27.7L45.9438 18.5C45.6439 18.3 45.344 18.3 45.0441 18.3C44.7441 18.3 44.4439 18.4 44.1439 18.5L25.8225 29.0251C25.9382 29.4471 26 29.8914 26 30.3501C26 33.1115 23.7614 35.3501 21 35.3501C18.2386 35.3501 16 33.1115 16 30.3501C16 27.5887 18.2386 25.3501 21 25.3501Z\\\" fill=url(#paint3_linear_1677_11483) /><path d=\\\"M67.2438 35.0329C65.3487 34.3219 64 32.4934 64 30.35C64 27.5886 66.2386 25.35 69 25.35C71.7614 25.35 74 27.5886 74 30.35C74 32.1825 73.0142 33.7848 71.5439 34.6554V55.2C71.5439 57.4 70.3439 59.4 68.5439 60.5L52.1439 69.9C52.1439 68.4 51.6438 66.9 50.7438 65.8L66.3439 56.8C66.9439 56.5 67.2438 55.9 67.2438 55.2V35.0329Z\\\" fill=url(#paint4_linear_1677_11483) /><path d=\\\"M49.8439 69.1055C49.9458 69.5034 50 69.9204 50 70.3501C50 73.1115 47.7614 75.3501 45 75.3501C42.5102 75.3501 40.4454 73.5302 40.0633 71.1481L21.8439 60.6C19.9439 59.5 18.8439 57.5 18.8439 55.3V36.8C19.5439 37 20.3439 37.2 21.0439 37.2C21.7439 37.2 22.4439 37.1 23.0439 36.9V55.3C23.0439 56 23.4438 56.6 23.9438 56.9L41.3263 66.9583C42.2398 65.9694 43.5476 65.3501 45 65.3501C47.3291 65.3501 49.2862 66.9426 49.8419 69.0981L49.8436 69.0997L49.8439 69.1055Z\\\" fill=url(#paint5_linear_1677_11483) /></mask><mask id=mask1_1677_11483 style=mask-type:alpha maskUnits=userSpaceOnUse x=30 y=28 width=30 height=30><path fill-rule=evenodd clip-rule=evenodd d=\\\"M49.3945 32.3945C49.3945 34.7088 47.5796 38.5469 45 38.5469C42.4271 38.5469 40.6055 34.7112 40.6055 32.3945C40.6055 29.9714 42.5769 28 45 28C47.4231 28 49.3945 29.9714 49.3945 32.3945ZM35.332 49.0433V48.2148C35.332 42.8117 37.8535 41.0004 39.8796 39.545L39.8801 39.5447C40.3928 39.1767 40.8604 38.8404 41.2488 38.4742C42.3293 39.6642 43.626 40.3047 45 40.3047C46.3752 40.3047 47.6725 39.6642 48.7529 38.4754C49.1408 38.841 49.6078 39.1773 50.1199 39.5447L50.1204 39.545C52.1465 41.0004 54.668 42.8117 54.668 48.2148V49.0433L53.8406 49.092C49.9848 49.3185 46.8646 46.9002 45 43.5777C43.1159 46.935 39.9847 49.318 36.1594 49.092L35.332 49.0433ZM58.1463 51.0747L58.1463 51.0746C57.0179 50.891 50.0128 49.7507 45.0007 55.693C40.0116 49.7553 33.1965 50.8592 31.9095 51.0677L31.9095 51.0677C31.7906 51.087 31.7189 51.0986 31.7002 51.0963C31.7005 51.0969 31.7011 51.1045 31.7023 51.1187C31.726 51.4003 31.9682 54.2745 34.0566 56.2422L30 58H60L55.8956 56.2422C57.8537 54.4764 58.1396 52.2685 58.2508 51.4092V51.4091C58.2697 51.2628 58.2836 51.1556 58.2998 51.0963C58.2881 51.0977 58.2356 51.0892 58.1463 51.0747ZM40.4836 50.104C42.3956 49.3212 43.6746 48.1737 45 46.61C46.332 48.1841 47.6159 49.3259 49.5164 50.104C49.5356 50.1425 49.5557 50.1805 49.5756 50.2182C49.5793 50.2253 49.583 50.2323 49.5867 50.2393C48.0911 50.8127 46.4264 51.825 45.0047 53.1444C43.5906 51.8221 41.9673 50.8196 40.4256 50.2153C40.4455 50.1784 40.4648 50.1415 40.4836 50.104Z\\\" fill=black /></mask><path d=\\\"M 40.59 93.095 C 46.517 93.095 52.14 94.365 57.22 96.635 L 212.7 7.22 C 220.025 3.149 228.978 0.706 237.12 0.706 C 246.073 0.706 254.213 3.149 261.54 7.22 L 395.032 84.547 C 385.264 91.059 377.939 100.827 373.055 112.224 L 243.631 37.338 C 241.19 35.71 238.747 35.71 236.305 35.71 C 233.863 35.71 231.42 36.523 228.978 37.338 L 79.84 123.009 C 80.786 126.443 81.29 130.058 81.29 133.793 C 81.29 156.269 63.065 174.493 40.59 174.493 C 18.116 174.493 -0.109 156.269 -0.109 133.793 C -0.109 111.32 18.116 93.095 40.59 93.095 Z\\\" fill=url(#paint0_linear_1677_11483) /><path d=\\\"M 417.01 171.913 C 401.585 166.126 390.603 151.238 390.603 133.793 C 390.603 111.32 408.83 93.095 431.303 93.095 C 453.777 93.095 472.001 111.32 472.001 133.793 C 472.001 148.706 463.976 161.755 452.011 168.835 L 452.011 336.07 C 452.011 353.977 442.243 370.258 427.591 379.21 L 294.098 455.726 C 294.098 443.516 290.029 431.306 282.703 422.353 L 409.683 349.093 C 414.568 346.651 417.01 341.767 417.01 336.07 L 417.01 171.913 Z\\\" fill=url(#paint1_linear_1677_11483) /><path d=\\\"M 275.376 449.253 C 276.206 452.495 276.646 455.889 276.646 459.389 C 276.646 481.863 258.422 500.087 235.947 500.087 C 215.679 500.087 198.87 485.272 195.761 465.883 L 47.46 380.025 C 31.995 371.071 23.041 354.792 23.041 336.884 L 23.041 186.296 C 28.738 187.923 35.25 189.553 40.948 189.553 C 46.646 189.553 52.345 188.738 57.228 187.111 L 57.228 336.884 C 57.228 342.582 60.485 347.465 64.554 349.908 L 206.042 431.777 C 213.481 423.728 224.127 418.689 235.947 418.689 C 254.905 418.689 270.833 431.656 275.36 449.196 L 275.376 449.214 L 275.376 449.253 Z\\\" fill=url(#paint2_linear_1677_11483) /><g mask=url(#mask0_1677_11483) transform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346375, -113.251038)\\\"><g filter=url(#filter0_f_1677_11483)><circle cx=73 cy=25 r=26 fill=#ED2E7E /></g><g filter=url(#filter1_f_1677_11483)><circle cx=26 cy=69 r=26 fill=#1CC8EE /></g></g><path fill-rule=evenodd clip-rule=evenodd d=\\\"M 271.713 150.431 C 271.713 169.275 256.948 200.517 235.947 200.517 C 215.003 200.517 200.172 169.292 200.172 150.431 C 200.172 130.708 216.225 114.666 235.947 114.666 C 255.67 114.666 271.713 130.708 271.713 150.431 Z M 157.251 285.952 L 157.251 279.212 C 157.251 235.233 177.771 220.485 194.27 208.641 C 198.447 205.644 202.247 202.901 205.414 199.923 C 214.204 209.608 224.763 214.826 235.947 214.826 C 247.138 214.826 257.697 209.608 266.496 199.931 C 269.653 202.911 273.456 205.644 277.622 208.641 C 294.114 220.485 314.642 235.233 314.642 279.212 L 314.642 285.952 L 307.912 286.351 C 276.525 288.191 251.128 268.509 235.947 241.468 C 220.611 268.795 195.126 288.191 163.981 286.351 L 157.251 285.952 Z M 342.953 302.492 C 333.771 300.994 276.751 291.715 235.955 340.082 C 195.345 291.749 139.865 300.734 129.389 302.436 C 128.428 302.59 127.841 302.688 127.687 302.665 C 127.687 302.673 127.695 302.729 127.702 302.85 C 127.897 305.138 129.867 328.532 146.872 344.55 L 113.849 358.862 L 358.044 358.862 L 324.639 344.55 C 340.576 330.177 342.905 312.202 343.807 305.212 C 343.962 304.022 344.077 303.153 344.206 302.665 C 344.108 302.68 343.686 302.606 342.953 302.492 Z M 199.188 294.59 C 214.751 288.215 225.161 278.879 235.947 266.15 C 246.788 278.96 257.241 288.255 272.707 294.59 C 272.869 294.898 273.031 295.207 273.196 295.518 C 273.219 295.574 273.252 295.631 273.285 295.688 C 261.107 300.361 247.555 308.598 235.989 319.334 C 224.477 308.573 211.258 300.417 198.715 295.493 C 198.87 295.191 199.033 294.891 199.188 294.59 Z\\\" fill=url(#paint6_linear_1677_11483) /><g mask=url(#mask1_1677_11483) transform=\\\"matrix(8.139854, 0, 0, 8.139854, -130.346375, -113.251038)\\\"><g filter=url(#filter2_f_1677_11483)><circle cx=38 cy=6 r=26 fill=#ED2E7E /></g><g filter=url(#filter3_f_1677_11483)><circle cx=63 cy=69 r=26 fill=#1CC8EE /></g></g></svg></div><h1>GraphQL Yoga</h1><p>Version: 5.16.0</p></div><h2>The batteries-included cross-platform GraphQL Server.</h2><div class=buttons><a href=https://www.the-guild.dev/graphql/yoga-server/docs class=docs>Read the Docs</a> <a href=https://www.the-guild.dev/graphql/yoga-server/tutorial/basic class=tutorial>Start the Tutorial </a><a href=__GRAPHIQL_LINK__ class=graphiql>Visit GraphiQL</a></div></section><section class=not-what-your-looking-for><h2>Not the page you are looking for? 👀</h2><p>This page is shown be default whenever a 404 is hit.<br>You can disable this by behavior via the <code>landingPage</code> option.</p><pre>\\n <code>\\nimport { createYoga } from 'graphql-yoga';\\n\\nconst yoga = createYoga({\\n landingPage: false\\n})\\n </code>\\n </pre><p>If you expected this page to be the GraphQL route, you need to configure Yoga. Currently, the GraphQL route is configured to be on <code>__GRAPHIQL_LINK__</code>.</p><pre>\\n <code>\\nimport { createYoga } from 'graphql-yoga';\\n\\nconst yoga = createYoga({\\n graphqlEndpoint: '__REQUEST_PATH__',\\n})\\n </code>\\n </pre></section></main></body></html>\";\n","import { isPromise } from '@graphql-tools/utils';\nimport landingPageBody from '../landing-page-html.js';\nexport const defaultRenderLandingPage = function defaultRenderLandingPage(opts) {\n return new opts.fetchAPI.Response(landingPageBody\n .replace(/__GRAPHIQL_LINK__/g, opts.graphqlEndpoint)\n .replace(/__REQUEST_PATH__/g, opts.url.pathname), {\n status: 200,\n statusText: 'OK',\n headers: {\n 'Content-Type': 'text/html',\n },\n });\n};\nexport function useUnhandledRoute(args) {\n let urlPattern;\n function getUrlPattern({ URLPattern }) {\n urlPattern ||= new URLPattern({\n pathname: args.graphqlEndpoint,\n });\n return urlPattern;\n }\n const landingPageRenderer = args.landingPageRenderer || defaultRenderLandingPage;\n return {\n onRequest({ request, fetchAPI, endResponse, url }) {\n if (!request.url.endsWith(args.graphqlEndpoint) &&\n !request.url.endsWith(`${args.graphqlEndpoint}/`) &&\n url.pathname !== args.graphqlEndpoint &&\n url.pathname !== `${args.graphqlEndpoint}/` &&\n !getUrlPattern(fetchAPI).test(url)) {\n if (args.showLandingPage === true &&\n request.method === 'GET' &&\n !!request.headers?.get('accept')?.includes('text/html')) {\n const landingPage$ = landingPageRenderer({\n request,\n fetchAPI,\n url,\n graphqlEndpoint: args.graphqlEndpoint,\n get urlPattern() {\n return getUrlPattern(fetchAPI);\n },\n });\n if (isPromise(landingPage$)) {\n return landingPage$.then(endResponse);\n }\n endResponse(landingPage$);\n return;\n }\n endResponse(new fetchAPI.Response('', {\n status: 404,\n statusText: 'Not Found',\n }));\n }\n },\n };\n}\n","import { getOperationAST } from 'graphql';\nimport { handleMaybePromise, iterateAsync } from '@whatwg-node/promise-helpers';\nexport function processResult({ request, result, fetchAPI, onResultProcessHooks, serverContext, }) {\n let resultProcessor;\n const acceptableMediaTypes = [];\n let acceptedMediaType = '*/*';\n return handleMaybePromise(() => iterateAsync(onResultProcessHooks, onResultProcessHook => onResultProcessHook({\n request,\n acceptableMediaTypes,\n result,\n setResult(newResult) {\n result = newResult;\n },\n resultProcessor,\n setResultProcessor(newResultProcessor, newAcceptedMimeType) {\n resultProcessor = newResultProcessor;\n acceptedMediaType = newAcceptedMimeType;\n },\n serverContext,\n })), () => {\n // If no result processor found for this result, return an error\n if (!resultProcessor) {\n return new fetchAPI.Response(null, {\n status: 406,\n statusText: 'Not Acceptable',\n headers: {\n accept: acceptableMediaTypes.join('; charset=utf-8, '),\n },\n });\n }\n return resultProcessor(result, fetchAPI, acceptedMediaType);\n });\n}\nexport function processRequest({ params, enveloped, }) {\n // Parse GraphQLParams\n const document = enveloped.parse(params.query);\n // Validate parsed Document Node\n const errors = enveloped.validate(enveloped.schema, document);\n if (errors.length > 0) {\n return { errors };\n }\n // Build the context for the execution\n return handleMaybePromise(() => enveloped.contextFactory(), contextValue => {\n const executionArgs = {\n schema: enveloped.schema,\n document,\n contextValue,\n variableValues: params.variables,\n operationName: params.operationName,\n };\n // Get the actual operation\n const operation = getOperationAST(document, params.operationName);\n // Choose the right executor\n const executeFn = operation?.operation === 'subscription' ? enveloped.subscribe : enveloped.execute;\n // Get the result to be processed\n return executeFn(executionArgs);\n });\n}\n","import { createGraphQLError } from '@graphql-tools/utils';\nimport { isGraphQLError, isOriginalGraphQLError } from '../error.js';\nfunction serializeError(error) {\n if (isGraphQLError(error)) {\n return error.toJSON();\n }\n if (error instanceof Error) {\n return {\n message: error.message,\n stack: error.stack,\n cause: error.cause,\n };\n }\n return error;\n}\nexport const maskError = (error, message, isDev = globalThis.process?.env?.['NODE_ENV'] === 'development') => {\n if (isOriginalGraphQLError(error)) {\n return error;\n }\n const errorExtensions = {\n code: 'INTERNAL_SERVER_ERROR',\n unexpected: true,\n };\n const errorOptions = {\n extensions: errorExtensions,\n };\n if (isGraphQLError(error)) {\n errorOptions.nodes = error.nodes;\n errorOptions.source = error.source;\n errorOptions.positions = error.positions;\n errorOptions.path = error.path;\n if (isDev && error.originalError) {\n errorExtensions['originalError'] = serializeError(error.originalError);\n }\n if (error.extensions?.['http']) {\n errorExtensions['http'] = error.extensions['http'];\n }\n }\n else if (isDev) {\n errorExtensions['originalError'] = serializeError(error);\n }\n return createGraphQLError(message, errorOptions);\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { parse, specifiedRules, validate } from 'graphql';\nimport { envelop, isAsyncIterable, useEngine, useExtendContext, useMaskedErrors, } from '@envelop/core';\nimport { chain, getInstrumented } from '@envelop/instrumentation';\nimport { normalizedExecutor } from '@graphql-tools/executor';\nimport { createLogger } from '@graphql-yoga/logger';\nimport * as defaultFetchAPI from '@whatwg-node/fetch';\nimport { fakePromise, handleMaybePromise, iterateAsync, iterateAsyncVoid, mapAsyncIterator, unfakePromise, } from '@whatwg-node/promise-helpers';\nimport { createServerAdapter, useCORS, } from '@whatwg-node/server';\nimport { handleError, isAbortError } from './error.js';\nimport { useAllowedRequestHeaders, useAllowedResponseHeaders } from './plugins/allowed-headers.js';\nimport { isGETRequest, parseGETRequest } from './plugins/request-parser/get.js';\nimport { isPOSTFormUrlEncodedRequest, parsePOSTFormUrlEncodedRequest, } from './plugins/request-parser/post-form-url-encoded.js';\nimport { isPOSTGraphQLStringRequest, parsePOSTGraphQLStringRequest, } from './plugins/request-parser/post-graphql-string.js';\nimport { isPOSTJsonRequest, parsePOSTJsonRequest } from './plugins/request-parser/post-json.js';\nimport { isPOSTMultipartRequest, parsePOSTMultipartRequest, } from './plugins/request-parser/post-multipart.js';\nimport { useCheckGraphQLQueryParams } from './plugins/request-validation/use-check-graphql-query-params.js';\nimport { useCheckMethodForGraphQL } from './plugins/request-validation/use-check-method-for-graphql.js';\nimport { useHTTPValidationError } from './plugins/request-validation/use-http-validation-error.js';\nimport { useLimitBatching } from './plugins/request-validation/use-limit-batching.js';\nimport { usePreventMutationViaGET } from './plugins/request-validation/use-prevent-mutation-via-get.js';\nimport { useGraphiQL } from './plugins/use-graphiql.js';\nimport { useHealthCheck } from './plugins/use-health-check.js';\nimport { useParserAndValidationCache, } from './plugins/use-parser-and-validation-cache.js';\nimport { useRequestParser } from './plugins/use-request-parser.js';\nimport { useResultProcessors } from './plugins/use-result-processor.js';\nimport { useSchema } from './plugins/use-schema.js';\nimport { useUnhandledRoute } from './plugins/use-unhandled-route.js';\nimport { processRequest as processGraphQLParams, processResult } from './process-request.js';\nimport { maskError } from './utils/mask-error.js';\n/**\n * Base class that can be extended to create a GraphQL server with any HTTP server framework.\n * @internal\n */\nexport class YogaServer {\n /**\n * Instance of envelop\n */\n getEnveloped;\n logger;\n graphqlEndpoint;\n fetchAPI;\n plugins;\n instrumentation;\n onRequestParseHooks;\n onParamsHooks;\n onExecutionResultHooks;\n onResultProcessHooks;\n maskedErrorsOpts;\n id;\n version = '5.16.0';\n constructor(options) {\n this.id = options?.id ?? 'yoga';\n this.fetchAPI = {\n ...defaultFetchAPI,\n };\n if (options?.fetchAPI) {\n for (const key in options.fetchAPI) {\n if (options.fetchAPI[key]) {\n this.fetchAPI[key] = options.fetchAPI[key];\n }\n }\n }\n const logger = options?.logging == null ? true : options.logging;\n this.logger =\n typeof logger === 'boolean'\n ? logger === true\n ? createLogger()\n : createLogger('silent')\n : typeof logger === 'string'\n ? createLogger(logger)\n : logger;\n const maskErrorFn = (typeof options?.maskedErrors === 'object' && options.maskedErrors.maskError) || maskError;\n const maskedErrorSet = new WeakSet();\n this.maskedErrorsOpts =\n options?.maskedErrors === false\n ? null\n : {\n errorMessage: 'Unexpected error.',\n ...(typeof options?.maskedErrors === 'object' ? options.maskedErrors : {}),\n maskError: (error, message) => {\n if (maskedErrorSet.has(error)) {\n return error;\n }\n const newError = maskErrorFn(error, message, this.maskedErrorsOpts?.isDev);\n if (newError !== error) {\n this.logger.error(error);\n }\n maskedErrorSet.add(newError);\n return newError;\n },\n };\n const maskedErrors = this.maskedErrorsOpts == null ? null : this.maskedErrorsOpts;\n let batchingLimit = 0;\n if (options?.batching) {\n if (typeof options.batching === 'boolean') {\n batchingLimit = 10;\n }\n else {\n batchingLimit = options.batching.limit ?? 10;\n }\n }\n this.graphqlEndpoint = options?.graphqlEndpoint || '/graphql';\n const graphqlEndpoint = this.graphqlEndpoint;\n this.plugins = [\n useEngine({\n parse,\n validate,\n execute: normalizedExecutor,\n subscribe: normalizedExecutor,\n specifiedRules,\n }),\n // Use the schema provided by the user\n !!options?.schema && useSchema(options.schema),\n options?.allowedHeaders?.request != null &&\n useAllowedRequestHeaders(options.allowedHeaders.request),\n options?.context != null &&\n useExtendContext(initialContext => {\n if (options?.context) {\n if (typeof options.context === 'function') {\n return options.context(initialContext);\n }\n return options.context;\n }\n return {};\n }),\n // Middlewares before processing the incoming HTTP request\n useHealthCheck({\n id: this.id,\n logger: this.logger,\n endpoint: options?.healthCheckEndpoint,\n }),\n options?.cors !== false && useCORS(options?.cors),\n options?.graphiql !== false &&\n useGraphiQL({\n graphqlEndpoint,\n options: options?.graphiql,\n render: options?.renderGraphiQL,\n logger: this.logger,\n }),\n // Middlewares before the GraphQL execution\n useRequestParser({\n match: isGETRequest,\n parse: parseGETRequest,\n }),\n useRequestParser({\n match: isPOSTJsonRequest,\n parse: parsePOSTJsonRequest,\n }),\n options?.multipart !== false &&\n useRequestParser({\n match: isPOSTMultipartRequest,\n parse: parsePOSTMultipartRequest,\n }),\n useRequestParser({\n match: isPOSTGraphQLStringRequest,\n parse: parsePOSTGraphQLStringRequest,\n }),\n useRequestParser({\n match: isPOSTFormUrlEncodedRequest,\n parse: parsePOSTFormUrlEncodedRequest,\n }),\n // Middlewares after the GraphQL execution\n useResultProcessors(),\n ...(options?.plugins ?? []),\n options?.parserAndValidationCache !== false &&\n useParserAndValidationCache(!options?.parserAndValidationCache || options?.parserAndValidationCache === true\n ? {}\n : options?.parserAndValidationCache),\n useLimitBatching(batchingLimit),\n useCheckGraphQLQueryParams(options?.extraParamNames),\n useUnhandledRoute({\n graphqlEndpoint,\n showLandingPage: options?.landingPage !== false,\n landingPageRenderer: typeof options?.landingPage === 'function' ? options.landingPage : undefined,\n }),\n // We check the method after user-land plugins because the plugin might support more methods (like graphql-sse).\n useCheckMethodForGraphQL(),\n // We make sure that the user doesn't send a mutation with GET\n usePreventMutationViaGET(),\n // Make sure we always throw AbortError instead of masking it!\n maskedErrors !== null && {\n onSubscribe() {\n return {\n onSubscribeError({ error }) {\n if (isAbortError(error)) {\n throw error;\n }\n },\n };\n },\n },\n maskedErrors !== null && useMaskedErrors(maskedErrors),\n options?.allowedHeaders?.response != null &&\n useAllowedResponseHeaders(options.allowedHeaders.response),\n // We handle validation errors at the end\n useHTTPValidationError(),\n ];\n this.getEnveloped = envelop({\n plugins: this.plugins,\n });\n this.plugins = this.getEnveloped._plugins;\n this.onRequestParseHooks = [];\n this.onParamsHooks = [];\n this.onExecutionResultHooks = [];\n this.onResultProcessHooks = [];\n for (const plugin of this.plugins) {\n if (plugin) {\n if (plugin.onYogaInit) {\n plugin.onYogaInit({\n yoga: this,\n });\n }\n if (plugin.onRequestParse) {\n this.onRequestParseHooks.push(plugin.onRequestParse);\n }\n if (plugin.onParams) {\n this.onParamsHooks.push(plugin.onParams);\n }\n if (plugin.onExecutionResult) {\n this.onExecutionResultHooks.push(plugin.onExecutionResult);\n }\n if (plugin.onResultProcess) {\n this.onResultProcessHooks.push(plugin.onResultProcess);\n }\n if (plugin.instrumentation) {\n this.instrumentation = this.instrumentation\n ? chain(this.instrumentation, plugin.instrumentation)\n : plugin.instrumentation;\n }\n }\n }\n }\n handleParams = ({ request, context, params }) => {\n const additionalContext = context['request'] === request\n ? {\n params,\n }\n : {\n request,\n params,\n };\n Object.assign(context, additionalContext);\n const enveloped = this.getEnveloped(context);\n this.logger.debug(`Processing GraphQL Parameters`);\n return handleMaybePromise(() => handleMaybePromise(() => processGraphQLParams({ params, enveloped }), result => {\n this.logger.debug(`Processing GraphQL Parameters done.`);\n return result;\n }, error => {\n const errors = handleError(error, this.maskedErrorsOpts, this.logger);\n return {\n errors,\n };\n }), result => {\n if (isAsyncIterable(result)) {\n result = mapAsyncIterator(result, v => v, (error) => {\n if (error.name === 'AbortError') {\n this.logger.debug(`Request aborted`);\n throw error;\n }\n const errors = handleError(error, this.maskedErrorsOpts, this.logger);\n return {\n errors,\n };\n });\n }\n return result;\n });\n };\n getResultForParams = ({ params, request, }, context) => {\n let result;\n let paramsHandler = this.handleParams;\n return handleMaybePromise(() => iterateAsync(this.onParamsHooks, onParamsHook => onParamsHook({\n params,\n request,\n setParams(newParams) {\n params = newParams;\n },\n paramsHandler,\n setParamsHandler(newHandler) {\n paramsHandler = newHandler;\n },\n setResult(newResult) {\n result = newResult;\n },\n fetchAPI: this.fetchAPI,\n context,\n })), () => handleMaybePromise(() => result ||\n paramsHandler({\n request,\n params,\n context: context,\n }), result => handleMaybePromise(() => iterateAsync(this.onExecutionResultHooks, onExecutionResult => onExecutionResult({\n result,\n setResult(newResult) {\n result = newResult;\n },\n request,\n context: context,\n })), () => result)));\n };\n parseRequest = (request, serverContext) => {\n let url = new Proxy({}, {\n get: (_target, prop, _receiver) => {\n url = new this.fetchAPI.URL(request.url, 'http://localhost');\n return Reflect.get(url, prop, url);\n },\n });\n let requestParser;\n const onRequestParseDoneList = [];\n return handleMaybePromise(() => iterateAsync(this.onRequestParseHooks, onRequestParse => handleMaybePromise(() => onRequestParse({\n request,\n url,\n requestParser,\n serverContext,\n setRequestParser(parser) {\n requestParser = parser;\n },\n }), requestParseHookResult => requestParseHookResult?.onRequestParseDone), onRequestParseDoneList), () => {\n this.logger.debug(`Parsing request to extract GraphQL parameters`);\n if (!requestParser) {\n return {\n response: new this.fetchAPI.Response(null, {\n status: 415,\n statusText: 'Unsupported Media Type',\n }),\n };\n }\n return handleMaybePromise(() => requestParser(request), requestParserResult => {\n return handleMaybePromise(() => iterateAsyncVoid(onRequestParseDoneList, onRequestParseDone => onRequestParseDone({\n requestParserResult,\n setRequestParserResult(newParams) {\n requestParserResult = newParams;\n },\n })), () => ({\n requestParserResult,\n }));\n });\n });\n };\n handle = (request, serverContext) => {\n const instrumented = this.instrumentation && getInstrumented({ request });\n const parseRequest = this.instrumentation?.requestParse\n ? instrumented.asyncFn(this.instrumentation?.requestParse, this.parseRequest)\n : this.parseRequest;\n return unfakePromise(fakePromise()\n .then(() => parseRequest(request, serverContext))\n .then(({ response, requestParserResult }) => {\n if (response) {\n return response;\n }\n const getResultForParams = this.instrumentation?.operation\n ? (payload, context) => {\n const instrumented = getInstrumented({ context, request: payload.request });\n const tracedHandler = instrumented.asyncFn(this.instrumentation?.operation, this.getResultForParams);\n return tracedHandler(payload, context);\n }\n : this.getResultForParams;\n return handleMaybePromise(() => (Array.isArray(requestParserResult)\n ? Promise.all(requestParserResult.map(params => getResultForParams({\n params,\n request,\n }, Object.create(serverContext))))\n : getResultForParams({\n params: requestParserResult,\n request,\n }, serverContext)), result => {\n const tracedProcessResult = this.instrumentation?.resultProcess\n ? instrumented.asyncFn(this.instrumentation.resultProcess, (processResult))\n : processResult;\n return tracedProcessResult({\n request,\n result,\n fetchAPI: this.fetchAPI,\n onResultProcessHooks: this.onResultProcessHooks,\n serverContext,\n });\n });\n })\n .catch(error => {\n const errors = handleError(error, this.maskedErrorsOpts, this.logger);\n const result = {\n errors,\n };\n return processResult({\n request,\n result,\n fetchAPI: this.fetchAPI,\n onResultProcessHooks: this.onResultProcessHooks,\n serverContext,\n });\n }));\n };\n}\nexport function createYoga(options) {\n const server = new YogaServer(options);\n return createServerAdapter(server, {\n fetchAPI: server.fetchAPI,\n plugins: server['plugins'],\n disposeOnProcessTerminate: options.disposeOnProcessTerminate,\n });\n}\n","\"use strict\";\nexports.__esModule = true;\nexports.OpenAPIV2 = exports.OpenAPIV3 = void 0;\nvar OpenAPIV3;\n(function (OpenAPIV3) {\n // All HTTP methods allowed by OpenAPI 3 spec\n // See https://swagger.io/specification/#path-item-object\n // You can use keys or values from it in TypeScript code like this:\n // for (const method of Object.values(OpenAPIV3.HttpMethods)) { … }\n var HttpMethods;\n (function (HttpMethods) {\n HttpMethods[\"GET\"] = \"get\";\n HttpMethods[\"PUT\"] = \"put\";\n HttpMethods[\"POST\"] = \"post\";\n HttpMethods[\"DELETE\"] = \"delete\";\n HttpMethods[\"OPTIONS\"] = \"options\";\n HttpMethods[\"HEAD\"] = \"head\";\n HttpMethods[\"PATCH\"] = \"patch\";\n HttpMethods[\"TRACE\"] = \"trace\";\n })(HttpMethods = OpenAPIV3.HttpMethods || (OpenAPIV3.HttpMethods = {}));\n})(OpenAPIV3 = exports.OpenAPIV3 || (exports.OpenAPIV3 = {}));\nvar OpenAPIV2;\n(function (OpenAPIV2) {\n // All HTTP methods allowed by OpenAPI 2 spec\n // See https://swagger.io/specification/v2#path-item-object\n // You can use keys or values from it in TypeScript code like this:\n // for (const method of Object.values(OpenAPIV2.HttpMethods)) { … }\n var HttpMethods;\n (function (HttpMethods) {\n HttpMethods[\"GET\"] = \"get\";\n HttpMethods[\"PUT\"] = \"put\";\n HttpMethods[\"POST\"] = \"post\";\n HttpMethods[\"DELETE\"] = \"delete\";\n HttpMethods[\"OPTIONS\"] = \"options\";\n HttpMethods[\"HEAD\"] = \"head\";\n HttpMethods[\"PATCH\"] = \"patch\";\n })(HttpMethods = OpenAPIV2.HttpMethods || (OpenAPIV2.HttpMethods = {}));\n})(OpenAPIV2 = exports.OpenAPIV2 || (exports.OpenAPIV2 = {}));\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = convertPathToPosix;\nconst path_1 = __importDefault(require(\"path\"));\nfunction convertPathToPosix(filePath) {\n const isExtendedLengthPath = filePath.startsWith(\"\\\\\\\\?\\\\\");\n if (isExtendedLengthPath) {\n return filePath;\n }\n return filePath.split(path_1.default?.win32?.sep).join(path_1.default?.posix?.sep ?? \"/\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWindows = void 0;\nconst isWindowsConst = /^win/.test(globalThis.process ? globalThis.process.platform : \"\");\nconst isWindows = () => isWindowsConst;\nexports.isWindows = isWindows;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\nexports.resolve = resolve;\nexports.cwd = cwd;\nexports.getProtocol = getProtocol;\nexports.getExtension = getExtension;\nexports.stripQuery = stripQuery;\nexports.getHash = getHash;\nexports.stripHash = stripHash;\nexports.isHttp = isHttp;\nexports.isUnsafeUrl = isUnsafeUrl;\nexports.isFileSystemPath = isFileSystemPath;\nexports.fromFileSystemPath = fromFileSystemPath;\nexports.toFileSystemPath = toFileSystemPath;\nexports.safePointerToPath = safePointerToPath;\nexports.relative = relative;\nconst convert_path_to_posix_1 = __importDefault(require(\"./convert-path-to-posix\"));\nconst path_1 = __importStar(require(\"path\"));\nconst forwardSlashPattern = /\\//g;\nconst protocolPattern = /^(\\w{2,}):\\/\\//i;\nconst jsonPointerSlash = /~1/g;\nconst jsonPointerTilde = /~0/g;\nconst path_2 = require(\"path\");\nconst is_windows_1 = require(\"./is-windows\");\n// RegExp patterns to URL-encode special characters in local filesystem paths\nconst urlEncodePatterns = [\n [/\\?/g, \"%3F\"],\n [/#/g, \"%23\"],\n];\n// RegExp patterns to URL-decode special characters for local filesystem paths\nconst urlDecodePatterns = [/%23/g, \"#\", /%24/g, \"$\", /%26/g, \"&\", /%2C/g, \",\", /%40/g, \"@\"];\nconst parse = (u) => new URL(u);\nexports.parse = parse;\n/**\n * Returns resolved target URL relative to a base URL in a manner similar to that of a Web browser resolving an anchor tag HREF.\n *\n * @returns\n */\nfunction resolve(from, to) {\n // we use a non-existent URL to check if its a relative URL\n const fromUrl = new URL((0, convert_path_to_posix_1.default)(from), \"https://aaa.nonexistanturl.com\");\n const resolvedUrl = new URL((0, convert_path_to_posix_1.default)(to), fromUrl);\n const endSpaces = to.match(/(\\s*)$/)?.[1] || \"\";\n if (resolvedUrl.hostname === \"aaa.nonexistanturl.com\") {\n // `from` is a relative URL.\n const { pathname, search, hash } = resolvedUrl;\n return pathname + search + hash + endSpaces;\n }\n return resolvedUrl.toString() + endSpaces;\n}\n/**\n * Returns the current working directory (in Node) or the current page URL (in browsers).\n *\n * @returns\n */\nfunction cwd() {\n if (typeof window !== \"undefined\" && window.location && window.location.href) {\n const href = window.location.href;\n if (!href || !href.startsWith(\"http\")) {\n // try parsing as url, and if it fails, return root url /\n try {\n new URL(href);\n return href;\n }\n catch {\n return \"/\";\n }\n }\n return href;\n }\n if (typeof process !== \"undefined\" && process.cwd) {\n const path = process.cwd();\n const lastChar = path.slice(-1);\n if (lastChar === \"/\" || lastChar === \"\\\\\") {\n return path;\n }\n else {\n return path + \"/\";\n }\n }\n return \"/\";\n}\n/**\n * Returns the protocol of the given URL, or `undefined` if it has no protocol.\n *\n * @param path\n * @returns\n */\nfunction getProtocol(path) {\n const match = protocolPattern.exec(path || \"\");\n if (match) {\n return match[1].toLowerCase();\n }\n return undefined;\n}\n/**\n * Returns the lowercased file extension of the given URL,\n * or an empty string if it has no extension.\n *\n * @param path\n * @returns\n */\nfunction getExtension(path) {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot >= 0) {\n return stripQuery(path.substr(lastDot).toLowerCase());\n }\n return \"\";\n}\n/**\n * Removes the query, if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripQuery(path) {\n const queryIndex = path.indexOf(\"?\");\n if (queryIndex >= 0) {\n path = path.substr(0, queryIndex);\n }\n return path;\n}\n/**\n * Returns the hash (URL fragment), of the given path.\n * If there is no hash, then the root hash (\"#\") is returned.\n *\n * @param path\n * @returns\n */\nfunction getHash(path) {\n if (!path) {\n return \"#\";\n }\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n return path.substring(hashIndex);\n }\n return \"#\";\n}\n/**\n * Removes the hash (URL fragment), if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripHash(path) {\n if (!path) {\n return \"\";\n }\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n path = path.substring(0, hashIndex);\n }\n return path;\n}\n/**\n * Determines whether the given path is an HTTP(S) URL.\n *\n * @param path\n * @returns\n */\nfunction isHttp(path) {\n const protocol = getProtocol(path);\n if (protocol === \"http\" || protocol === \"https\") {\n return true;\n }\n else if (protocol === undefined) {\n // There is no protocol. If we're running in a browser, then assume it's HTTP.\n return typeof window !== \"undefined\";\n }\n else {\n // It's some other protocol, such as \"ftp://\", \"mongodb://\", etc.\n return false;\n }\n}\n/**\n * Determines whether the given url is an unsafe or internal url.\n *\n * @param path - The URL or path to check\n * @returns true if the URL is unsafe/internal, false otherwise\n */\nfunction isUnsafeUrl(path) {\n if (!path || typeof path !== \"string\") {\n return true;\n }\n // Trim whitespace and convert to lowercase for comparison\n const normalizedPath = path.trim().toLowerCase();\n // Empty or just whitespace\n if (!normalizedPath) {\n return true;\n }\n // JavaScript protocols\n if (normalizedPath.startsWith(\"javascript:\") ||\n normalizedPath.startsWith(\"vbscript:\") ||\n normalizedPath.startsWith(\"data:\")) {\n return true;\n }\n // File protocol\n if (normalizedPath.startsWith(\"file:\")) {\n return true;\n }\n // if we're in the browser, we assume that it is safe\n if (typeof window !== \"undefined\" && window.location && window.location.href) {\n return false;\n }\n // Local/internal network addresses\n const localPatterns = [\n // Localhost variations\n \"localhost\",\n \"127.0.0.1\",\n \"::1\",\n // Private IP ranges (RFC 1918)\n \"10.\",\n \"172.16.\",\n \"172.17.\",\n \"172.18.\",\n \"172.19.\",\n \"172.20.\",\n \"172.21.\",\n \"172.22.\",\n \"172.23.\",\n \"172.24.\",\n \"172.25.\",\n \"172.26.\",\n \"172.27.\",\n \"172.28.\",\n \"172.29.\",\n \"172.30.\",\n \"172.31.\",\n \"192.168.\",\n // Link-local addresses\n \"169.254.\",\n // Internal domains\n \".local\",\n \".internal\",\n \".intranet\",\n \".corp\",\n \".home\",\n \".lan\",\n ];\n try {\n // Try to parse as URL\n const url = new URL(normalizedPath.startsWith(\"//\") ? \"http:\" + normalizedPath : normalizedPath);\n const hostname = url.hostname.toLowerCase();\n // Check against local patterns\n for (const pattern of localPatterns) {\n if (hostname === pattern || hostname.startsWith(pattern) || hostname.endsWith(pattern)) {\n return true;\n }\n }\n // Check for IP addresses in private ranges\n if (isPrivateIP(hostname)) {\n return true;\n }\n // Check for non-standard ports that might indicate internal services\n const port = url.port;\n if (port && isInternalPort(parseInt(port))) {\n return true;\n }\n }\n catch (e) {\n // If URL parsing fails, check if it's a relative path or contains suspicious patterns\n // Relative paths starting with / are generally safe for same-origin\n if (normalizedPath.startsWith(\"/\") && !normalizedPath.startsWith(\"//\")) {\n return false;\n }\n // Check for localhost patterns in non-URL strings\n for (const pattern of localPatterns) {\n if (normalizedPath.includes(pattern)) {\n return true;\n }\n }\n }\n return false;\n}\n/**\n * Helper function to check if an IP address is in a private range\n */\nfunction isPrivateIP(ip) {\n const ipRegex = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\n const match = ip.match(ipRegex);\n if (!match) {\n return false;\n }\n const [, a, b, c, d] = match.map(Number);\n // Validate IP format\n if (a > 255 || b > 255 || c > 255 || d > 255) {\n return false;\n }\n // Private IP ranges\n return (a === 10 || a === 127 || (a === 172 && b >= 16 && b <= 31) || (a === 192 && b === 168) || (a === 169 && b === 254) // Link-local\n );\n}\n/**\n * Helper function to check if a port is typically used for internal services\n */\nfunction isInternalPort(port) {\n const internalPorts = [\n 22, // SSH\n 23, // Telnet\n 25, // SMTP\n 53, // DNS\n 135, // RPC\n 139, // NetBIOS\n 445, // SMB\n 993, // IMAPS\n 995, // POP3S\n 1433, // SQL Server\n 1521, // Oracle\n 3306, // MySQL\n 3389, // RDP\n 5432, // PostgreSQL\n 5900, // VNC\n 6379, // Redis\n 8080, // Common internal web\n 8443, // Common internal HTTPS\n 9200, // Elasticsearch\n 27017, // MongoDB\n ];\n return internalPorts.includes(port);\n}\n/**\n * Determines whether the given path is a filesystem path.\n * This includes \"file://\" URLs.\n *\n * @param path\n * @returns\n */\nfunction isFileSystemPath(path) {\n // @ts-ignore\n if (typeof window !== \"undefined\" || (typeof process !== \"undefined\" && process.browser)) {\n // We're running in a browser, so assume that all paths are URLs.\n // This way, even relative paths will be treated as URLs rather than as filesystem paths\n return false;\n }\n const protocol = getProtocol(path);\n return protocol === undefined || protocol === \"file\";\n}\n/**\n * Converts a filesystem path to a properly-encoded URL.\n *\n * This is intended to handle situations where JSON Schema $Ref Parser is called\n * with a filesystem path that contains characters which are not allowed in URLs.\n *\n * @example\n * The following filesystem paths would be converted to the following URLs:\n *\n * <\"!@#$%^&*+=?'>.json ==> %3C%22!@%23$%25%5E&*+=%3F\\'%3E.json\n * C:\\\\My Documents\\\\File (1).json ==> C:/My%20Documents/File%20(1).json\n * file://Project #42/file.json ==> file://Project%20%2342/file.json\n *\n * @param path\n * @returns\n */\nfunction fromFileSystemPath(path) {\n // Step 1: On Windows, replace backslashes with forward slashes,\n // rather than encoding them as \"%5C\"\n if ((0, is_windows_1.isWindows)()) {\n const projectDir = cwd();\n const upperPath = path.toUpperCase();\n const projectDirPosixPath = (0, convert_path_to_posix_1.default)(projectDir);\n const posixUpper = projectDirPosixPath.toUpperCase();\n const hasProjectDir = upperPath.includes(posixUpper);\n const hasProjectUri = upperPath.includes(posixUpper);\n const isAbsolutePath = path_1.win32?.isAbsolute(path) ||\n path.startsWith(\"http://\") ||\n path.startsWith(\"https://\") ||\n path.startsWith(\"file://\");\n if (!(hasProjectDir || hasProjectUri || isAbsolutePath) && !projectDir.startsWith(\"http\")) {\n path = (0, path_2.join)(projectDir, path);\n }\n path = (0, convert_path_to_posix_1.default)(path);\n }\n // Step 2: `encodeURI` will take care of MOST characters\n path = encodeURI(path);\n // Step 3: Manually encode characters that are not encoded by `encodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (const pattern of urlEncodePatterns) {\n path = path.replace(pattern[0], pattern[1]);\n }\n return path;\n}\n/**\n * Converts a URL to a local filesystem path.\n */\nfunction toFileSystemPath(path, keepFileProtocol) {\n // Step 1: `decodeURI` will decode characters such as Cyrillic characters, spaces, etc.\n path = decodeURI(path);\n // Step 2: Manually decode characters that are not decoded by `decodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (let i = 0; i < urlDecodePatterns.length; i += 2) {\n path = path.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);\n }\n // Step 3: If it's a \"file://\" URL, then format it consistently\n // or convert it to a local filesystem path\n let isFileUrl = path.substr(0, 7).toLowerCase() === \"file://\";\n if (isFileUrl) {\n // Strip-off the protocol, and the initial \"/\", if there is one\n path = path[7] === \"/\" ? path.substr(8) : path.substr(7);\n // insert a colon (\":\") after the drive letter on Windows\n if ((0, is_windows_1.isWindows)() && path[1] === \"/\") {\n path = path[0] + \":\" + path.substr(1);\n }\n if (keepFileProtocol) {\n // Return the consistently-formatted \"file://\" URL\n path = \"file:///\" + path;\n }\n else {\n // Convert the \"file://\" URL to a local filesystem path.\n // On Windows, it will start with something like \"C:/\".\n // On Posix, it will start with \"/\"\n isFileUrl = false;\n path = (0, is_windows_1.isWindows)() ? path : \"/\" + path;\n }\n }\n // Step 4: Normalize Windows paths (unless it's a \"file://\" URL)\n if ((0, is_windows_1.isWindows)() && !isFileUrl) {\n // Replace forward slashes with backslashes\n path = path.replace(forwardSlashPattern, \"\\\\\");\n // Capitalize the drive letter\n if (path.substr(1, 2) === \":\\\\\") {\n path = path[0].toUpperCase() + path.substr(1);\n }\n }\n return path;\n}\n/**\n * Converts a $ref pointer to a valid JSON Path.\n *\n * @param pointer\n * @returns\n */\nfunction safePointerToPath(pointer) {\n if (pointer.length <= 1 || pointer[0] !== \"#\" || pointer[1] !== \"/\") {\n return [];\n }\n return pointer\n .slice(2)\n .split(\"/\")\n .map((value) => {\n return decodeURIComponent(value).replace(jsonPointerSlash, \"/\").replace(jsonPointerTilde, \"~\");\n });\n}\nfunction relative(from, to) {\n if (!isFileSystemPath(from) || !isFileSystemPath(to)) {\n return resolve(from, to);\n }\n const fromDir = path_1.default.dirname(stripHash(from));\n const toPath = stripHash(to);\n const result = path_1.default.relative(fromDir, toPath);\n return result + getHash(to);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidPointerError = exports.TimeoutError = exports.MissingPointerError = exports.UnmatchedResolverError = exports.ResolverError = exports.UnmatchedParserError = exports.ParserError = exports.JSONParserErrorGroup = exports.JSONParserError = void 0;\nexports.toJSON = toJSON;\nexports.getDeepKeys = getDeepKeys;\nexports.isHandledError = isHandledError;\nexports.normalizeError = normalizeError;\nconst url_js_1 = require(\"./url.js\");\nconst nonJsonTypes = [\"function\", \"symbol\", \"undefined\"];\nconst protectedProps = [\"constructor\", \"prototype\", \"__proto__\"];\nconst objectPrototype = Object.getPrototypeOf({});\n/**\n * Custom JSON serializer for Error objects.\n * Returns all built-in error properties, as well as extended properties.\n */\nfunction toJSON() {\n // HACK: We have to cast the objects to `any` so we can use symbol indexers.\n // see https://github.com/Microsoft/TypeScript/issues/1863\n const pojo = {};\n const error = this;\n for (const key of getDeepKeys(error)) {\n if (typeof key === \"string\") {\n const value = error[key];\n const type = typeof value;\n if (!nonJsonTypes.includes(type)) {\n pojo[key] = value;\n }\n }\n }\n return pojo;\n}\n/**\n * Returns own, inherited, enumerable, non-enumerable, string, and symbol keys of `obj`.\n * Does NOT return members of the base Object prototype, or the specified omitted keys.\n */\nfunction getDeepKeys(obj, omit = []) {\n let keys = [];\n // Crawl the prototype chain, finding all the string and symbol keys\n while (obj && obj !== objectPrototype) {\n keys = keys.concat(Object.getOwnPropertyNames(obj), Object.getOwnPropertySymbols(obj));\n obj = Object.getPrototypeOf(obj);\n }\n // De-duplicate the list of keys\n const uniqueKeys = new Set(keys);\n // Remove any omitted keys\n for (const key of omit.concat(protectedProps)) {\n uniqueKeys.delete(key);\n }\n return uniqueKeys;\n}\nclass JSONParserError extends Error {\n name;\n message;\n source;\n path;\n code;\n constructor(message, source) {\n super();\n this.code = \"EUNKNOWN\";\n this.name = \"JSONParserError\";\n this.message = message;\n this.source = source;\n this.path = null;\n }\n toJSON = toJSON.bind(this);\n get footprint() {\n return `${this.path}+${this.source}+${this.code}+${this.message}`;\n }\n}\nexports.JSONParserError = JSONParserError;\nclass JSONParserErrorGroup extends Error {\n files;\n constructor(parser) {\n super();\n this.files = parser;\n this.name = \"JSONParserErrorGroup\";\n this.message = `${this.errors.length} error${this.errors.length > 1 ? \"s\" : \"\"} occurred while reading '${(0, url_js_1.toFileSystemPath)(parser.$refs._root$Ref.path)}'`;\n }\n toJSON = toJSON.bind(this);\n static getParserErrors(parser) {\n const errors = [];\n for (const $ref of Object.values(parser.$refs._$refs)) {\n if ($ref.errors) {\n errors.push(...$ref.errors);\n }\n }\n return errors;\n }\n get errors() {\n return JSONParserErrorGroup.getParserErrors(this.files);\n }\n}\nexports.JSONParserErrorGroup = JSONParserErrorGroup;\nclass ParserError extends JSONParserError {\n code = \"EPARSER\";\n name = \"ParserError\";\n constructor(message, source) {\n super(`Error parsing ${source}: ${message}`, source);\n }\n}\nexports.ParserError = ParserError;\nclass UnmatchedParserError extends JSONParserError {\n code = \"EUNMATCHEDPARSER\";\n name = \"UnmatchedParserError\";\n constructor(source) {\n super(`Could not find parser for \"${source}\"`, source);\n }\n}\nexports.UnmatchedParserError = UnmatchedParserError;\nclass ResolverError extends JSONParserError {\n code = \"ERESOLVER\";\n name = \"ResolverError\";\n ioErrorCode;\n constructor(ex, source) {\n super(ex.message || `Error reading file \"${source}\"`, source);\n if (\"code\" in ex) {\n this.ioErrorCode = String(ex.code);\n }\n }\n}\nexports.ResolverError = ResolverError;\nclass UnmatchedResolverError extends JSONParserError {\n code = \"EUNMATCHEDRESOLVER\";\n name = \"UnmatchedResolverError\";\n constructor(source) {\n super(`Could not find resolver for \"${source}\"`, source);\n }\n}\nexports.UnmatchedResolverError = UnmatchedResolverError;\nclass MissingPointerError extends JSONParserError {\n code = \"EMISSINGPOINTER\";\n name = \"MissingPointerError\";\n targetToken;\n targetRef;\n targetFound;\n parentPath;\n constructor(token, path, targetRef, targetFound, parentPath) {\n super(`Missing $ref pointer \"${(0, url_js_1.getHash)(path)}\". Token \"${token}\" does not exist.`, (0, url_js_1.stripHash)(path));\n this.targetToken = token;\n this.targetRef = targetRef;\n this.targetFound = targetFound;\n this.parentPath = parentPath;\n }\n}\nexports.MissingPointerError = MissingPointerError;\nclass TimeoutError extends JSONParserError {\n code = \"ETIMEOUT\";\n name = \"TimeoutError\";\n constructor(timeout) {\n super(`Dereferencing timeout reached: ${timeout}ms`);\n }\n}\nexports.TimeoutError = TimeoutError;\nclass InvalidPointerError extends JSONParserError {\n code = \"EUNMATCHEDRESOLVER\";\n name = \"InvalidPointerError\";\n constructor(pointer, path) {\n super(`Invalid $ref pointer \"${pointer}\". Pointers must begin with \"#/\"`, (0, url_js_1.stripHash)(path));\n }\n}\nexports.InvalidPointerError = InvalidPointerError;\nfunction isHandledError(err) {\n return err instanceof JSONParserError || err instanceof JSONParserErrorGroup;\n}\nfunction normalizeError(err) {\n if (err.path === null) {\n err.path = [];\n }\n return err;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nullSymbol = void 0;\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nexports.nullSymbol = Symbol(\"null\");\nconst slashes = /\\//g;\nconst tildes = /~/g;\nconst escapedSlash = /~1/g;\nconst escapedTilde = /~0/g;\nconst safeDecodeURIComponent = (encodedURIComponent) => {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n return encodedURIComponent;\n }\n};\n/**\n * This class represents a single JSON pointer and its resolved value.\n *\n * @param $ref\n * @param path\n * @param [friendlyPath] - The original user-specified path (used for error messages)\n * @class\n */\nclass Pointer {\n /**\n * The {@link $Ref} object that contains this {@link Pointer} object.\n */\n $ref;\n /**\n * The file path or URL, containing the JSON pointer in the hash.\n * This path is relative to the path of the main JSON schema file.\n */\n path;\n /**\n * The original path or URL, used for error messages.\n */\n originalPath;\n /**\n * The value of the JSON pointer.\n * Can be any JSON type, not just objects. Unknown file types are represented as Buffers (byte arrays).\n */\n value;\n /**\n * Indicates whether the pointer references itself.\n */\n circular;\n /**\n * The number of indirect references that were traversed to resolve the value.\n * Resolving a single pointer may require resolving multiple $Refs.\n */\n indirections;\n constructor($ref, path, friendlyPath) {\n this.$ref = $ref;\n this.path = path;\n this.originalPath = friendlyPath || path;\n this.value = undefined;\n this.circular = false;\n this.indirections = 0;\n }\n /**\n * Resolves the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param options\n * @param pathFromRoot - the path of place that initiated resolving\n *\n * @returns\n * Returns a JSON pointer whose {@link Pointer#value} is the resolved value.\n * If resolving this value required resolving other JSON references, then\n * the {@link Pointer#$ref} and {@link Pointer#path} will reflect the resolution path\n * of the resolved value.\n */\n resolve(obj, options, pathFromRoot) {\n const tokens = Pointer.parse(this.path, this.originalPath);\n const found = [];\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length; i++) {\n if (resolveIf$Ref(this, options, pathFromRoot)) {\n // The $ref path has changed, so append the remaining tokens to the path\n this.path = Pointer.join(this.path, tokens.slice(i));\n }\n const token = tokens[i];\n if (this.value[token] === undefined || (this.value[token] === null && i === tokens.length - 1)) {\n // one final case is if the entry itself includes slashes, and was parsed out as a token - we can join the remaining tokens and try again\n let didFindSubstringSlashMatch = false;\n for (let j = tokens.length - 1; j > i; j--) {\n const joinedToken = tokens.slice(i, j + 1).join(\"/\");\n if (this.value[joinedToken] !== undefined) {\n this.value = this.value[joinedToken];\n i = j;\n didFindSubstringSlashMatch = true;\n break;\n }\n }\n if (didFindSubstringSlashMatch) {\n continue;\n }\n // If the token we're looking for ended up not containing any slashes but is\n // actually instead pointing to an existing `null` value then we should use that\n // `null` value.\n if (token in this.value && this.value[token] === null) {\n // We use a `null` symbol for internal tracking to differntiate between a general `null`\n // value and our expected `null` value.\n this.value = exports.nullSymbol;\n continue;\n }\n this.value = null;\n const path = this.$ref.path || \"\";\n const targetRef = this.path.replace(path, \"\");\n const targetFound = Pointer.join(\"\", found);\n const parentPath = pathFromRoot?.replace(path, \"\");\n throw new errors_js_1.MissingPointerError(token, decodeURI(this.originalPath), targetRef, targetFound, parentPath);\n }\n else {\n this.value = this.value[token];\n }\n found.push(token);\n }\n // Resolve the final value\n if (!this.value || (this.value.$ref && url.resolve(this.path, this.value.$ref) !== pathFromRoot)) {\n resolveIf$Ref(this, options, pathFromRoot);\n }\n return this;\n }\n /**\n * Sets the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param value - the value to assign\n * @param options\n *\n * @returns\n * Returns the modified object, or an entirely new object if the entire object is overwritten.\n */\n set(obj, value, options) {\n const tokens = Pointer.parse(this.path);\n let token;\n if (tokens.length === 0) {\n // There are no tokens, replace the entire object with the new value\n this.value = value;\n return value;\n }\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length - 1; i++) {\n resolveIf$Ref(this, options);\n token = tokens[i];\n if (this.value && this.value[token] !== undefined) {\n // The token exists\n this.value = this.value[token];\n }\n else {\n // The token doesn't exist, so create it\n this.value = setValue(this, token, {});\n }\n }\n // Set the value of the final token\n resolveIf$Ref(this, options);\n token = tokens[tokens.length - 1];\n setValue(this, token, value);\n // Return the updated object\n return obj;\n }\n /**\n * Parses a JSON pointer (or a path containing a JSON pointer in the hash)\n * and returns an array of the pointer's tokens.\n * (e.g. \"schema.json#/definitions/person/name\" => [\"definitions\", \"person\", \"name\"])\n *\n * The pointer is parsed according to RFC 6901\n * {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @param path\n * @param [originalPath]\n * @returns\n */\n static parse(path, originalPath) {\n // Get the JSON pointer from the path's hash\n const pointer = url.getHash(path).substring(1);\n // If there's no pointer, then there are no tokens,\n // so return an empty array\n if (!pointer) {\n return [];\n }\n // Split into an array\n const split = pointer.split(\"/\");\n // Decode each part, according to RFC 6901\n for (let i = 0; i < split.length; i++) {\n split[i] = safeDecodeURIComponent(split[i].replace(escapedSlash, \"/\").replace(escapedTilde, \"~\"));\n }\n if (split[0] !== \"\") {\n throw new errors_js_1.InvalidPointerError(pointer, originalPath === undefined ? path : originalPath);\n }\n return split.slice(1);\n }\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param base - The base path (e.g. \"schema.json#/definitions/person\")\n * @param tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns\n */\n static join(base, tokens) {\n // Ensure that the base path contains a hash\n if (base.indexOf(\"#\") === -1) {\n base += \"#\";\n }\n // Append each token to the base path\n tokens = Array.isArray(tokens) ? tokens : [tokens];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Encode the token, according to RFC 6901\n base += \"/\" + encodeURIComponent(token.replace(tildes, \"~0\").replace(slashes, \"~1\"));\n }\n return base;\n }\n}\n/**\n * If the given pointer's {@link Pointer#value} is a JSON reference,\n * then the reference is resolved and {@link Pointer#value} is replaced with the resolved value.\n * In addition, {@link Pointer#path} and {@link Pointer#$ref} are updated to reflect the\n * resolution path of the new value.\n *\n * @param pointer\n * @param options\n * @param [pathFromRoot] - the path of place that initiated resolving\n * @returns - Returns `true` if the resolution path changed\n */\nfunction resolveIf$Ref(pointer, options, pathFromRoot) {\n // Is the value a JSON reference? (and allowed?)\n if (ref_js_1.default.isAllowed$Ref(pointer.value, options)) {\n const $refPath = url.resolve(pointer.path, pointer.value.$ref);\n if ($refPath === pointer.path && !isRootPath(pathFromRoot)) {\n // The value is a reference to itself, so there's nothing to do.\n pointer.circular = true;\n }\n else {\n const resolved = pointer.$ref.$refs._resolve($refPath, pointer.path, options);\n if (resolved === null) {\n return false;\n }\n pointer.indirections += resolved.indirections + 1;\n if (ref_js_1.default.isExtended$Ref(pointer.value)) {\n // This JSON reference \"extends\" the resolved value, rather than simply pointing to it.\n // So the resolved path does NOT change. Just the value does.\n pointer.value = ref_js_1.default.dereference(pointer.value, resolved.value);\n return false;\n }\n else {\n // Resolve the reference\n pointer.$ref = resolved.$ref;\n pointer.path = resolved.path;\n pointer.value = resolved.value;\n }\n return true;\n }\n }\n return undefined;\n}\nexports.default = Pointer;\n/**\n * Sets the specified token value of the {@link Pointer#value}.\n *\n * The token is evaluated according to RFC 6901.\n * {@link https://tools.ietf.org/html/rfc6901#section-4}\n *\n * @param pointer - The JSON Pointer whose value will be modified\n * @param token - A JSON Pointer token that indicates how to modify `obj`\n * @param value - The value to assign\n * @returns - Returns the assigned value\n */\nfunction setValue(pointer, token, value) {\n if (pointer.value && typeof pointer.value === \"object\") {\n if (token === \"-\" && Array.isArray(pointer.value)) {\n pointer.value.push(value);\n }\n else {\n pointer.value[token] = value;\n }\n }\n else {\n throw new errors_js_1.JSONParserError(`Error assigning $ref pointer \"${pointer.path}\". \\nCannot set \"${token}\" of a non-object.`);\n }\n return value;\n}\nfunction unwrapOrThrow(value) {\n if ((0, errors_js_1.isHandledError)(value)) {\n throw value;\n }\n return value;\n}\nfunction isRootPath(pathFromRoot) {\n return typeof pathFromRoot == \"string\" && Pointer.parse(pathFromRoot).length == 0;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst pointer_js_1 = __importStar(require(\"./pointer.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nconst url_js_1 = require(\"./util/url.js\");\n/**\n * This class represents a single JSON reference and its resolved value.\n *\n * @class\n */\nclass $Ref {\n /**\n * The file path or URL of the referenced file.\n * This path is relative to the path of the main JSON schema file.\n *\n * This path does NOT contain document fragments (JSON pointers). It always references an ENTIRE file.\n * Use methods such as {@link $Ref#get}, {@link $Ref#resolve}, and {@link $Ref#exists} to get\n * specific JSON pointers within the file.\n *\n * @type {string}\n */\n path;\n /**\n * The resolved value of the JSON reference.\n * Can be any JSON type, not just objects. Unknown file types are represented as Buffers (byte arrays).\n *\n * @type {?*}\n */\n value;\n /**\n * The {@link $Refs} object that contains this {@link $Ref} object.\n *\n * @type {$Refs}\n */\n $refs;\n /**\n * Indicates the type of {@link $Ref#path} (e.g. \"file\", \"http\", etc.)\n */\n pathType;\n /**\n * List of all errors. Undefined if no errors.\n */\n errors = [];\n constructor($refs) {\n this.$refs = $refs;\n }\n /**\n * Pushes an error to errors array.\n *\n * @param err - The error to be pushed\n * @returns\n */\n addError(err) {\n if (this.errors === undefined) {\n this.errors = [];\n }\n const existingErrors = this.errors.map(({ footprint }) => footprint);\n // the path has been almost certainly set at this point,\n // but just in case something went wrong, normalizeError injects path if necessary\n // moreover, certain errors might point at the same spot, so filter them out to reduce noise\n if (\"errors\" in err && Array.isArray(err.errors)) {\n this.errors.push(...err.errors.map(errors_js_1.normalizeError).filter(({ footprint }) => !existingErrors.includes(footprint)));\n }\n else if (!(\"footprint\" in err) || !existingErrors.includes(err.footprint)) {\n this.errors.push((0, errors_js_1.normalizeError)(err));\n }\n }\n /**\n * Determines whether the given JSON reference exists within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns\n */\n exists(path, options) {\n try {\n this.resolve(path, options);\n return true;\n }\n catch {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value} and returns the resolved value.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this.resolve(path, options)?.value;\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @param friendlyPath - The original user-specified path (used for error messages)\n * @param pathFromRoot - The path of `obj` from the schema root\n * @returns\n */\n resolve(path, options, friendlyPath, pathFromRoot) {\n const pointer = new pointer_js_1.default(this, path, friendlyPath);\n try {\n const resolved = pointer.resolve(this.value, options, pathFromRoot);\n if (resolved.value === pointer_js_1.nullSymbol) {\n resolved.value = null;\n }\n return resolved;\n }\n catch (err) {\n if (!options || !options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if (err.path === null) {\n err.path = (0, url_js_1.safePointerToPath)((0, url_js_1.getHash)(pathFromRoot));\n }\n if (err instanceof errors_js_1.InvalidPointerError) {\n err.source = decodeURI((0, url_js_1.stripHash)(pathFromRoot));\n }\n this.addError(err);\n return null;\n }\n }\n /**\n * Sets the value of a nested property within this {@link $Ref#value}.\n * If the property, or any of its parents don't exist, they will be created.\n *\n * @param path - The full path of the property to set, optionally with a JSON pointer in the hash\n * @param value - The value to assign\n */\n set(path, value) {\n const pointer = new pointer_js_1.default(this, path);\n this.value = pointer.set(this.value, value);\n if (this.value === pointer_js_1.nullSymbol) {\n this.value = null;\n }\n }\n /**\n * Determines whether the given value is a JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static is$Ref(value) {\n return (Boolean(value) &&\n typeof value === \"object\" &&\n value !== null &&\n \"$ref\" in value &&\n typeof value.$ref === \"string\" &&\n value.$ref.length > 0);\n }\n /**\n * Determines whether the given value is an external JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExternal$Ref(value) {\n return $Ref.is$Ref(value) && value.$ref[0] !== \"#\";\n }\n /**\n * Determines whether the given value is a JSON reference, and whether it is allowed by the options.\n * For example, if it references an external file, then options.resolve.external must be true.\n *\n * @param value - The value to inspect\n * @param options\n * @returns\n */\n static isAllowed$Ref(value, options) {\n if (this.is$Ref(value)) {\n if (value.$ref.substring(0, 2) === \"#/\" || value.$ref === \"#\") {\n // It's a JSON Pointer reference, which is always allowed\n return true;\n }\n else if (value.$ref[0] !== \"#\" && (!options || options.resolve?.external)) {\n // It's an external reference, which is allowed by the options\n return true;\n }\n }\n return undefined;\n }\n /**\n * Determines whether the given value is a JSON reference that \"extends\" its resolved value.\n * That is, it has extra properties (in addition to \"$ref\"), so rather than simply pointing to\n * an existing value, this $ref actually creates a NEW value that is a shallow copy of the resolved\n * value, plus the extra properties.\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n }\n * In this example, \"employee\" is an extended $ref, since it extends \"person\" with an additional\n * property (salary). The result is a NEW value that looks like this:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExtended$Ref(value) {\n return $Ref.is$Ref(value) && Object.keys(value).length > 1;\n }\n /**\n * Returns the resolved value of a JSON Reference.\n * If necessary, the resolved value is merged with the JSON Reference to create a new object\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n } When \"person\" and \"employee\" are merged, you end up with the following object:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param $ref - The JSON reference object (the one with the \"$ref\" property)\n * @param resolvedValue - The resolved value, which can be any type\n * @returns - Returns the dereferenced value\n */\n static dereference($ref, resolvedValue) {\n if (resolvedValue && typeof resolvedValue === \"object\" && $Ref.isExtended$Ref($ref)) {\n const merged = {};\n for (const key of Object.keys($ref)) {\n if (key !== \"$ref\") {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = $ref[key];\n }\n }\n for (const key of Object.keys(resolvedValue)) {\n if (!(key in merged)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = resolvedValue[key];\n }\n }\n return merged;\n }\n else {\n // Completely replace the original reference with the resolved value\n return resolvedValue;\n }\n }\n}\nexports.default = $Ref;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst convert_path_to_posix_1 = __importDefault(require(\"./util/convert-path-to-posix\"));\n/**\n * When you call the resolve method, the value that gets passed to the callback function (or Promise) is a $Refs object. This same object is accessible via the parser.$refs property of $RefParser objects.\n *\n * This object is a map of JSON References and their resolved values. It also has several convenient helper methods that make it easy for you to navigate and manipulate the JSON References.\n *\n * See https://apidevtools.com/json-schema-ref-parser/docs/refs.html\n */\nclass $Refs {\n /**\n * This property is true if the schema contains any circular references. You may want to check this property before serializing the dereferenced schema as JSON, since JSON.stringify() does not support circular references by default.\n *\n * See https://apidevtools.com/json-schema-ref-parser/docs/refs.html#circular\n */\n circular;\n /**\n * Returns the paths/URLs of all the files in your schema (including the main schema file).\n *\n * See https://apidevtools.com/json-schema-ref-parser/docs/refs.html#pathstypes\n *\n * @param types (optional) Optionally only return certain types of paths (\"file\", \"http\", etc.)\n */\n paths(...types) {\n const paths = getPaths(this._$refs, types.flat());\n return paths.map((path) => {\n return (0, convert_path_to_posix_1.default)(path.decoded);\n });\n }\n /**\n * Returns a map of paths/URLs and their correspond values.\n *\n * See https://apidevtools.com/json-schema-ref-parser/docs/refs.html#valuestypes\n *\n * @param types (optional) Optionally only return values from certain locations (\"file\", \"http\", etc.)\n */\n values(...types) {\n const $refs = this._$refs;\n const paths = getPaths($refs, types.flat());\n return paths.reduce((obj, path) => {\n obj[(0, convert_path_to_posix_1.default)(path.decoded)] = $refs[path.encoded].value;\n return obj;\n }, {});\n }\n /**\n * Returns `true` if the given path exists in the schema; otherwise, returns `false`\n *\n * See https://apidevtools.com/json-schema-ref-parser/docs/refs.html#existsref\n *\n * @param $ref The JSON Reference path, optionally with a JSON Pointer in the hash\n */\n /**\n * Determines whether the given JSON reference exists.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param [options]\n * @returns\n */\n exists(path, options) {\n try {\n this._resolve(path, \"\", options);\n return true;\n }\n catch {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference and returns the resolved value.\n *\n * @param path - The path being resolved, with a JSON pointer in the hash\n * @param [options]\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this._resolve(path, \"\", options).value;\n }\n /**\n * Sets the value at the given path in the schema. If the property, or any of its parents, don't exist, they will be created.\n *\n * @param path The JSON Reference path, optionally with a JSON Pointer in the hash\n * @param value The value to assign. Can be anything (object, string, number, etc.)\n */\n set(path, value) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw new Error(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n $ref.set(absPath, value);\n }\n /**\n * Returns the specified {@link $Ref} object, or undefined.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @returns\n * @protected\n */\n _get$Ref(path) {\n path = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(path);\n return this._$refs[withoutHash];\n }\n /**\n * Creates a new {@link $Ref} object and adds it to this {@link $Refs} object.\n *\n * @param path - The file path or URL of the referenced file\n */\n _add(path) {\n const withoutHash = url.stripHash(path);\n const $ref = new ref_js_1.default(this);\n $ref.path = withoutHash;\n this._$refs[withoutHash] = $ref;\n this._root$Ref = this._root$Ref || $ref;\n return $ref;\n }\n /**\n * Resolves the given JSON reference.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param [options]\n * @returns\n * @protected\n */\n _resolve(path, pathFromRoot, options) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw new Error(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n return $ref.resolve(absPath, options, path, pathFromRoot);\n }\n /**\n * A map of paths/urls to {@link $Ref} objects\n *\n * @type {object}\n * @protected\n */\n _$refs = {};\n /**\n * The {@link $Ref} object that is the root of the JSON schema.\n *\n * @type {$Ref}\n * @protected\n */\n _root$Ref;\n constructor() {\n /**\n * Indicates whether the schema contains any circular references.\n *\n * @type {boolean}\n */\n this.circular = false;\n this._$refs = {};\n // @ts-ignore\n this._root$Ref = null;\n }\n /**\n * Returns the paths of all the files/URLs that are referenced by the JSON schema,\n * including the schema itself.\n *\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns the map of JSON references and their resolved values.\n *\n * @param [types] - Only return references of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns a POJO (plain old JavaScript object) for serialization as JSON.\n *\n * @returns {object}\n */\n toJSON = this.values;\n}\nexports.default = $Refs;\n/**\n * Returns the encoded and decoded paths keys of the given object.\n *\n * @param $refs - The object whose keys are URL-encoded paths\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\nfunction getPaths($refs, types) {\n let paths = Object.keys($refs);\n // Filter the paths by type\n types = Array.isArray(types[0]) ? types[0] : Array.prototype.slice.call(types);\n if (types.length > 0 && types[0]) {\n paths = paths.filter((key) => {\n return types.includes($refs[key].pathType);\n });\n }\n // Decode local filesystem paths\n return paths.map((path) => {\n return {\n encoded: path,\n decoded: $refs[path].pathType === \"file\" ? url.toFileSystemPath(path, true) : path,\n };\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.all = all;\nexports.filter = filter;\nexports.sort = sort;\nexports.run = run;\n/**\n * Returns the given plugins as an array, rather than an object map.\n * All other methods in this module expect an array of plugins rather than an object map.\n *\n * @returns\n */\nfunction all(plugins) {\n return Object.keys(plugins || {})\n .filter((key) => {\n return typeof plugins[key] === \"object\";\n })\n .map((key) => {\n plugins[key].name = key;\n return plugins[key];\n });\n}\n/**\n * Filters the given plugins, returning only the ones return `true` for the given method.\n */\nfunction filter(plugins, method, file) {\n return plugins.filter((plugin) => {\n return !!getResult(plugin, method, file);\n });\n}\n/**\n * Sorts the given plugins, in place, by their `order` property.\n */\nfunction sort(plugins) {\n for (const plugin of plugins) {\n plugin.order = plugin.order || Number.MAX_SAFE_INTEGER;\n }\n return plugins.sort((a, b) => {\n return a.order - b.order;\n });\n}\n/**\n * Runs the specified method of the given plugins, in order, until one of them returns a successful result.\n * Each method can return a synchronous value, a Promise, or call an error-first callback.\n * If the promise resolves successfully, or the callback is called without an error, then the result\n * is immediately returned and no further plugins are called.\n * If the promise rejects, or the callback is called with an error, then the next plugin is called.\n * If ALL plugins fail, then the last error is thrown.\n */\nasync function run(plugins, method, file, $refs) {\n let plugin;\n let lastError;\n let index = 0;\n return new Promise((resolve, reject) => {\n runNextPlugin();\n function runNextPlugin() {\n plugin = plugins[index++];\n if (!plugin) {\n // There are no more functions, so re-throw the last error\n return reject(lastError);\n }\n try {\n // console.log(' %s', plugin.name);\n const result = getResult(plugin, method, file, callback, $refs);\n if (result && typeof result.then === \"function\") {\n // A promise was returned\n result.then(onSuccess, onError);\n }\n else if (result !== undefined) {\n // A synchronous result was returned\n onSuccess(result);\n }\n else if (index === plugins.length) {\n throw new Error(\"No promise has been returned or callback has been called.\");\n }\n }\n catch (e) {\n onError(e);\n }\n }\n function callback(err, result) {\n if (err) {\n onError(err);\n }\n else {\n onSuccess(result);\n }\n }\n function onSuccess(result) {\n // console.log(' success');\n resolve({\n plugin,\n result: result,\n });\n }\n function onError(error) {\n // console.log(' %s', err.message || err);\n lastError = {\n plugin,\n error,\n };\n runNextPlugin();\n }\n });\n}\n/**\n * Returns the value of the given property.\n * If the property is a function, then the result of the function is returned.\n * If the value is a RegExp, then it will be tested against the file URL.\n * If the value is an array, then it will be compared against the file extension.\n */\nfunction getResult(obj, prop, file, callback, $refs) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, [file, callback, $refs]);\n }\n if (!callback) {\n // The synchronous plugin functions (canParse and canRead)\n // allow a \"shorthand\" syntax, where the user can match\n // files by RegExp or by file extension.\n if (value instanceof RegExp) {\n return value.test(file.url);\n }\n else if (typeof value === \"string\") {\n return value === file.extension;\n }\n else if (Array.isArray(value)) {\n return value.indexOf(file.extension) !== -1;\n }\n }\n return value;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst url = __importStar(require(\"./util/url.js\"));\nconst plugins = __importStar(require(\"./util/plugins.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\n/**\n * Reads and parses the specified file path or URL.\n */\nasync function parse(path, $refs, options) {\n // Remove the URL fragment, if any\n const hashIndex = path.indexOf(\"#\");\n let hash = \"\";\n if (hashIndex >= 0) {\n hash = path.substring(hashIndex);\n // Remove the URL fragment, if any\n path = path.substring(0, hashIndex);\n }\n // Add a new $Ref for this file, even though we don't have the value yet.\n // This ensures that we don't simultaneously read & parse the same file multiple times\n const $ref = $refs._add(path);\n // This \"file object\" will be passed to all resolvers and parsers.\n const file = {\n url: path,\n hash,\n extension: url.getExtension(path),\n };\n // Read the file and then parse the data\n try {\n const resolver = await readFile(file, options, $refs);\n $ref.pathType = resolver.plugin.name;\n file.data = resolver.result;\n const parser = await parseFile(file, options, $refs);\n $ref.value = parser.result;\n return parser.result;\n }\n catch (err) {\n if ((0, errors_js_1.isHandledError)(err)) {\n $ref.value = err;\n }\n throw err;\n }\n}\n/**\n * Reads the given file, using the configured resolver plugins\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param options\n * @param $refs\n * @returns\n * The promise resolves with the raw file contents and the resolver that was used.\n */\nasync function readFile(file, options, $refs) {\n // console.log('Reading %s', file.url);\n // Find the resolvers that can read this file\n let resolvers = plugins.all(options.resolve);\n resolvers = plugins.filter(resolvers, \"canRead\", file);\n // Run the resolvers, in order, until one of them succeeds\n plugins.sort(resolvers);\n try {\n const data = await plugins.run(resolvers, \"read\", file, $refs);\n return data;\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedResolverError(file.url);\n }\n else if (!err || !(\"error\" in err)) {\n // Throw a generic, friendly error.\n throw new SyntaxError(`Unable to resolve $ref pointer \"${file.url}\"`);\n }\n // Throw the original error, if it's one of our own (user-friendly) errors.\n else if (err.error instanceof errors_js_1.ResolverError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ResolverError(err, file.url);\n }\n }\n}\n/**\n * Parses the given file's contents, using the configured parser plugins.\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @param options\n * @param $refs\n *\n * @returns\n * The promise resolves with the parsed file contents and the parser that was used.\n */\nasync function parseFile(file, options, $refs) {\n // Find the parsers that can read this file type.\n // If none of the parsers are an exact match for this file, then we'll try ALL of them.\n // This handles situations where the file IS a supported type, just with an unknown extension.\n const allParsers = plugins.all(options.parse);\n const filteredParsers = plugins.filter(allParsers, \"canParse\", file);\n const parsers = filteredParsers.length > 0 ? filteredParsers : allParsers;\n // Run the parsers, in order, until one of them succeeds\n plugins.sort(parsers);\n try {\n const parser = await plugins.run(parsers, \"parse\", file, $refs);\n if (!parser.plugin.allowEmpty && isEmpty(parser.result)) {\n throw new SyntaxError(`Error parsing \"${file.url}\" as ${parser.plugin.name}. \\nParsed value is empty`);\n }\n else {\n return parser;\n }\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedParserError(file.url);\n }\n else if (err && err.message && err.message.startsWith(\"Error parsing\")) {\n throw err;\n }\n else if (!err || !(\"error\" in err)) {\n throw new SyntaxError(`Unable to parse ${file.url}`);\n }\n else if (err.error instanceof errors_js_1.ParserError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ParserError(err.error.message, file.url);\n }\n }\n}\n/**\n * Determines whether the parsed value is \"empty\".\n *\n * @param value\n * @returns\n */\nfunction isEmpty(value) {\n return (value === undefined ||\n (typeof value === \"object\" && Object.keys(value).length === 0) ||\n (typeof value === \"string\" && value.trim().length === 0) ||\n (Buffer.isBuffer(value) && value.length === 0));\n}\nexports.default = parse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 100,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: \".json\",\n /**\n * Allow JSON files with byte order marks (BOM)\n */\n allowBOM: true,\n /**\n * Parses the given file as JSON\n */\n async parse(file) {\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n if (data.trim().length === 0) {\n return; // This mirrors the YAML behavior\n }\n else {\n try {\n return JSON.parse(data);\n }\n catch (e) {\n if (this.allowBOM) {\n try {\n // find the first curly brace\n const firstCurlyBrace = data.indexOf(\"{\");\n // remove any characters before the first curly brace\n data = data.slice(firstCurlyBrace);\n return JSON.parse(data);\n }\n catch (e) {\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst js_yaml_1 = __importDefault(require(\"js-yaml\"));\nconst js_yaml_2 = require(\"js-yaml\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 200,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: [\".yaml\", \".yml\", \".json\"], // JSON is valid YAML\n /**\n * Parses the given file as YAML\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @returns\n */\n async parse(file) {\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n try {\n return js_yaml_1.default.load(data, { schema: js_yaml_2.JSON_SCHEMA });\n }\n catch (e) {\n throw new errors_js_1.ParserError(e?.message || \"Parser Error\", file.url);\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst TEXT_REGEXP = /\\.(txt|htm|html|md|xml|js|min|map|css|scss|less|svg)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 300,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * The encoding that the text is expected to be in.\n */\n encoding: \"utf8\",\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a string or Buffer, and has a known text-based extension\n return (typeof file.data === \"string\" || Buffer.isBuffer(file.data)) && TEXT_REGEXP.test(file.url);\n },\n /**\n * Parses the given file as text\n */\n parse(file) {\n if (typeof file.data === \"string\") {\n return file.data;\n }\n else if (Buffer.isBuffer(file.data)) {\n return file.data.toString(this.encoding);\n }\n else {\n throw new errors_js_1.ParserError(\"data is not text\", file.url);\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BINARY_REGEXP = /\\.(jpeg|jpg|gif|png|bmp|ico)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 400,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a Buffer, and has a known binary extension\n return Buffer.isBuffer(file.data) && BINARY_REGEXP.test(file.url);\n },\n /**\n * Parses the given data as a Buffer (byte array).\n */\n parse(file) {\n if (Buffer.isBuffer(file.data)) {\n return file.data;\n }\n else {\n // This will reject if data is anything other than a string or typed array\n return Buffer.from(file.data);\n }\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = __importDefault(require(\"fs\"));\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 100,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried, in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isFileSystemPath(file.url);\n },\n /**\n * Reads the given file and returns its raw contents as a Buffer.\n */\n async read(file) {\n let path;\n try {\n path = url.toFileSystemPath(file.url);\n }\n catch (err) {\n const e = err;\n e.message = `Malformed URI: ${file.url}: ${e.message}`;\n throw new errors_js_1.ResolverError(e, file.url);\n }\n // strip trailing slashes\n if (path.endsWith(\"/\") || path.endsWith(\"\\\\\")) {\n path = path.slice(0, -1);\n }\n try {\n return await fs_1.default.promises.readFile(path);\n }\n catch (err) {\n const e = err;\n e.message = `Error opening file ${path}: ${e.message}`;\n throw new errors_js_1.ResolverError(e, path);\n }\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 200,\n /**\n * HTTP headers to send when downloading files.\n *\n * @example:\n * {\n * \"User-Agent\": \"JSON Schema $Ref Parser\",\n * Accept: \"application/json\"\n * }\n */\n headers: null,\n /**\n * HTTP request timeout (in milliseconds).\n */\n timeout: 60_000, // 60 seconds\n /**\n * The maximum number of HTTP redirects to follow.\n * To disable automatic following of redirects, set this to zero.\n */\n redirects: 5,\n /**\n * The `withCredentials` option of XMLHttpRequest.\n * Set this to `true` if you're downloading files from a CORS-enabled server that requires authentication\n */\n withCredentials: false,\n /**\n * Set this to `false` if you want to allow unsafe URLs (e.g., `127.0.0.1`, localhost, and other internal URLs).\n */\n safeUrlResolver: true,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isHttp(file.url) && (!this.safeUrlResolver || !url.isUnsafeUrl(file.url));\n },\n /**\n * Reads the given URL and returns its raw contents as a Buffer.\n */\n read(file) {\n const u = url.parse(file.url);\n if (typeof window !== \"undefined\" && !u.protocol) {\n // Use the protocol of the current page\n u.protocol = url.parse(location.href).protocol;\n }\n return download(u, this);\n },\n};\n/**\n * Downloads the given file.\n * @returns\n * The promise resolves with the raw downloaded data, or rejects if there is an HTTP error.\n */\nasync function download(u, httpOptions, _redirects) {\n u = url.parse(u);\n const redirects = _redirects || [];\n redirects.push(u.href);\n try {\n const res = await get(u, httpOptions);\n if (res.status >= 400) {\n const error = new Error(`HTTP ERROR ${res.status}`);\n error.status = res.status;\n throw error;\n }\n else if (res.status >= 300) {\n if (!Number.isNaN(httpOptions.redirects) && redirects.length > httpOptions.redirects) {\n const error = new Error(`Error downloading ${redirects[0]}. \\nToo many redirects: \\n ${redirects.join(\" \\n \")}`);\n error.status = res.status;\n throw new errors_js_1.ResolverError(error);\n }\n else if (!(\"location\" in res.headers) || !res.headers.location) {\n const error = new Error(`HTTP ${res.status} redirect with no location header`);\n error.status = res.status;\n throw error;\n }\n else {\n const redirectTo = url.resolve(u.href, res.headers.location);\n return download(redirectTo, httpOptions, redirects);\n }\n }\n else {\n if (res.body) {\n const buf = await res.arrayBuffer();\n return Buffer.from(buf);\n }\n return Buffer.alloc(0);\n }\n }\n catch (err) {\n const e = err;\n e.message = `Error downloading ${u.href}: ${e.message}`;\n throw new errors_js_1.ResolverError(e, u.href);\n }\n}\n/**\n * Sends an HTTP GET request.\n * The promise resolves with the HTTP Response object.\n */\nasync function get(u, httpOptions) {\n let controller;\n let timeoutId;\n if (httpOptions.timeout) {\n controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), httpOptions.timeout);\n }\n const response = await fetch(u, {\n method: \"GET\",\n headers: httpOptions.headers || {},\n credentials: httpOptions.withCredentials ? \"include\" : \"same-origin\",\n signal: controller ? controller.signal : null,\n });\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n return response;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNewOptions = exports.getJsonSchemaRefParserDefaultOptions = void 0;\nconst json_js_1 = __importDefault(require(\"./parsers/json.js\"));\nconst yaml_js_1 = __importDefault(require(\"./parsers/yaml.js\"));\nconst text_js_1 = __importDefault(require(\"./parsers/text.js\"));\nconst binary_js_1 = __importDefault(require(\"./parsers/binary.js\"));\nconst file_js_1 = __importDefault(require(\"./resolvers/file.js\"));\nconst http_js_1 = __importDefault(require(\"./resolvers/http.js\"));\nconst getJsonSchemaRefParserDefaultOptions = () => {\n const defaults = {\n /**\n * Determines how different types of files will be parsed.\n *\n * You can add additional parsers of your own, replace an existing one with\n * your own implementation, or disable any parser by setting it to false.\n */\n parse: {\n json: { ...json_js_1.default },\n yaml: { ...yaml_js_1.default },\n text: { ...text_js_1.default },\n binary: { ...binary_js_1.default },\n },\n /**\n * Determines how JSON References will be resolved.\n *\n * You can add additional resolvers of your own, replace an existing one with\n * your own implementation, or disable any resolver by setting it to false.\n */\n resolve: {\n file: { ...file_js_1.default },\n http: { ...http_js_1.default },\n /**\n * Determines whether external $ref pointers will be resolved.\n * If this option is disabled, then none of above resolvers will be called.\n * Instead, external $ref pointers will simply be ignored.\n *\n * @type {boolean}\n */\n external: true,\n },\n /**\n * By default, JSON Schema $Ref Parser throws the first error it encounters. Setting `continueOnError` to `true`\n * causes it to keep processing as much as possible and then throw a single error that contains all errors\n * that were encountered.\n */\n continueOnError: false,\n /**\n * Determines the types of JSON references that are allowed.\n */\n bundle: {\n /**\n * A function, called for each path, which can return true to stop this path and all\n * subpaths from being processed further. This is useful in schemas where some\n * subpaths contain literal $ref keys that should not be changed.\n *\n * @type {function}\n */\n excludedPathMatcher: () => false,\n },\n /**\n * Determines the types of JSON references that are allowed.\n */\n dereference: {\n /**\n * Dereference circular (recursive) JSON references?\n * If false, then a {@link ReferenceError} will be thrown if a circular reference is found.\n * If \"ignore\", then circular references will not be dereferenced.\n *\n * @type {boolean|string}\n */\n circular: true,\n /**\n * A function, called for each path, which can return true to stop this path and all\n * subpaths from being dereferenced further. This is useful in schemas where some\n * subpaths contain literal $ref keys that should not be dereferenced.\n *\n * @type {function}\n */\n excludedPathMatcher: () => false,\n referenceResolution: \"relative\",\n },\n mutateInputSchema: true,\n };\n return defaults;\n};\nexports.getJsonSchemaRefParserDefaultOptions = getJsonSchemaRefParserDefaultOptions;\nconst getNewOptions = (options) => {\n const newOptions = (0, exports.getJsonSchemaRefParserDefaultOptions)();\n if (options) {\n merge(newOptions, options);\n }\n return newOptions;\n};\nexports.getNewOptions = getNewOptions;\n/**\n * Merges the properties of the source object into the target object.\n *\n * @param target - The object that we're populating\n * @param source - The options that are being merged\n * @returns\n */\nfunction merge(target, source) {\n if (isMergeable(source)) {\n // prevent prototype pollution\n const keys = Object.keys(source).filter((key) => ![\"__proto__\", \"constructor\", \"prototype\"].includes(key));\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const sourceSetting = source[key];\n const targetSetting = target[key];\n if (isMergeable(sourceSetting)) {\n // It's a nested object, so merge it recursively\n target[key] = merge(targetSetting || {}, sourceSetting);\n }\n else if (sourceSetting !== undefined) {\n // It's a scalar value, function, or array. No merging necessary. Just overwrite the target value.\n target[key] = sourceSetting;\n }\n }\n }\n return target;\n}\n/**\n * Determines whether the given value can be merged,\n * or if it is a scalar value that should just override the target value.\n *\n * @param val\n * @returns\n */\nfunction isMergeable(val) {\n return val && typeof val === \"object\" && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeArgs = normalizeArgs;\nconst options_js_1 = require(\"./options.js\");\n/**\n * Normalizes the given arguments, accounting for optional args.\n */\nfunction normalizeArgs(_args) {\n let path;\n let schema;\n let options;\n let callback;\n const args = Array.prototype.slice.call(_args);\n if (typeof args[args.length - 1] === \"function\") {\n // The last parameter is a callback function\n callback = args.pop();\n }\n if (typeof args[0] === \"string\") {\n // The first parameter is the path\n path = args[0];\n if (typeof args[2] === \"object\") {\n // The second parameter is the schema, and the third parameter is the options\n schema = args[1];\n options = args[2];\n }\n else {\n // The second parameter is the options\n schema = undefined;\n options = args[1];\n }\n }\n else {\n // The first parameter is the schema\n path = \"\";\n schema = args[0];\n options = args[1];\n }\n try {\n options = (0, options_js_1.getNewOptions)(options);\n }\n catch (e) {\n console.error(`JSON Schema Ref Parser: Error normalizing options: ${e}`);\n }\n if (!options.mutateInputSchema && typeof schema === \"object\") {\n // Make a deep clone of the schema, so that we don't alter the original object\n schema = JSON.parse(JSON.stringify(schema));\n }\n return {\n path,\n schema,\n options,\n callback,\n };\n}\nexports.default = normalizeArgs;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\n/**\n * Crawls the JSON schema, finds all external JSON references, and resolves their values.\n * This method does not mutate the JSON schema. The resolved values are added to {@link $RefParser#$refs}.\n *\n * NOTE: We only care about EXTERNAL references here. INTERNAL references are only relevant when dereferencing.\n *\n * @returns\n * The promise resolves once all JSON references in the schema have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nfunction resolveExternal(parser, options) {\n if (!options.resolve?.external) {\n // Nothing to resolve, so exit early\n return Promise.resolve();\n }\n try {\n // console.log('Resolving $ref pointers in %s', parser.$refs._root$Ref.path);\n const promises = crawl(parser.schema, parser.$refs._root$Ref.path + \"#\", parser.$refs, options);\n return Promise.all(promises);\n }\n catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Recursively crawls the given value, and resolves any external JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param {boolean} external - Whether `obj` was found in an external document.\n * @param $refs\n * @param options\n * @param seen - Internal.\n *\n * @returns\n * Returns an array of promises. There will be one promise for each JSON reference in `obj`.\n * If `obj` does not contain any JSON references, then the array will be empty.\n * If any of the JSON references point to files that contain additional JSON references,\n * then the corresponding promise will internally reference an array of promises.\n */\nfunction crawl(obj, path, $refs, options, seen, external) {\n seen ||= new Set();\n let promises = [];\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !seen.has(obj)) {\n seen.add(obj); // Track previously seen objects to avoid infinite recursion\n if (ref_js_1.default.isExternal$Ref(obj)) {\n promises.push(resolve$Ref(obj, path, $refs, options));\n }\n const keys = Object.keys(obj);\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const value = obj[key];\n promises = promises.concat(crawl(value, keyPath, $refs, options, seen, external));\n }\n }\n return promises;\n}\n/**\n * Resolves the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param $refs\n * @param options\n *\n * @returns\n * The promise resolves once all JSON references in the object have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nasync function resolve$Ref($ref, path, $refs, options) {\n const shouldResolveOnCwd = options.dereference?.externalReferenceResolution === \"root\";\n const resolvedPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const withoutHash = url.stripHash(resolvedPath);\n // $ref.$ref = url.relative($refs._root$Ref.path, resolvedPath);\n // Do we already have this $ref?\n const ref = $refs._$refs[withoutHash];\n if (ref) {\n // We've already parsed this $ref, so use the existing value\n return Promise.resolve(ref.value);\n }\n // Parse the $referenced file/url\n try {\n const result = await (0, parse_js_1.default)(resolvedPath, $refs, options);\n // Crawl the parsed value\n // console.log('Resolving $ref pointers in %s', withoutHash);\n const promises = crawl(result, withoutHash + \"#\", $refs, options, new Set(), true);\n return Promise.all(promises);\n }\n catch (err) {\n if (!options?.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if ($refs._$refs[withoutHash]) {\n err.source = decodeURI(url.stripHash(path));\n err.path = url.safePointerToPath(url.getHash(path));\n }\n return [];\n }\n}\nexports.default = resolveExternal;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\n/**\n * Bundles all external JSON references into the main JSON schema, thus resulting in a schema that\n * only has *internal* references, not any *external* references.\n * This method mutates the JSON schema object, adding new references and re-mapping existing ones.\n *\n * @param parser\n * @param options\n */\nfunction bundle(parser, options) {\n // console.log('Bundling $ref pointers in %s', parser.$refs._root$Ref.path);\n // Build an inventory of all $ref pointers in the JSON Schema\n const inventory = [];\n crawl(parser, \"schema\", parser.$refs._root$Ref.path + \"#\", \"#\", 0, inventory, parser.$refs, options);\n // Remap all $ref pointers\n remap(inventory);\n}\n/**\n * Recursively crawls the given value, and inventories all JSON references.\n *\n * @param parent - The object containing the value to crawl. If the value is not an object or array, it will be ignored.\n * @param key - The property key of `parent` to be crawled\n * @param path - The full path of the property being crawled, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of the property being crawled, from the schema root\n * @param indirections\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction crawl(parent, key, path, pathFromRoot, indirections, inventory, $refs, options) {\n const obj = key === null ? parent : parent[key];\n const bundleOptions = (options.bundle || {});\n const isExcludedPath = bundleOptions.excludedPathMatcher || (() => false);\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {\n if (ref_js_1.default.isAllowed$Ref(obj)) {\n inventory$Ref(parent, key, path, pathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n // Crawl the object in a specific order that's optimized for bundling.\n // This is important because it determines how `pathFromRoot` gets built,\n // which later determines which keys get dereferenced and which ones get remapped\n const keys = Object.keys(obj).sort((a, b) => {\n // Most people will expect references to be bundled into the the \"definitions\" property,\n // so we always crawl that property first, if it exists.\n if (a === \"definitions\" || a === \"$defs\") {\n return -1;\n }\n else if (b === \"definitions\" || b === \"$defs\") {\n return 1;\n }\n else {\n // Otherwise, crawl the keys based on their length.\n // This produces the shortest possible bundled references\n return a.length - b.length;\n }\n });\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n const value = obj[key];\n if (ref_js_1.default.isAllowed$Ref(value)) {\n inventory$Ref(obj, key, path, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n crawl(obj, key, keyPath, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n // We need to ensure that we have an object to work with here because we may be crawling\n // an `examples` schema and `value` may be nullish.\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\n if (\"$ref\" in value) {\n bundleOptions?.onBundle?.(value[\"$ref\"], obj[key], obj, key);\n }\n }\n }\n }\n }\n}\n/**\n * Inventories the given JSON Reference (i.e. records detailed information about it so we can\n * optimize all $refs in the schema), and then crawls the resolved value.\n *\n * @param $refParent - The object that contains a JSON Reference as one of its keys\n * @param $refKey - The key in `$refParent` that is a JSON Reference\n * @param path - The full path of the JSON Reference at `$refKey`, possibly with a JSON Pointer in the hash\n * @param indirections - unknown\n * @param pathFromRoot - The path of the JSON Reference at `$refKey`, from the schema root\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction inventory$Ref($refParent, $refKey, path, pathFromRoot, indirections, inventory, $refs, options) {\n const $ref = $refKey === null ? $refParent : $refParent[$refKey];\n const $refPath = url.resolve(path, $ref.$ref);\n const pointer = $refs._resolve($refPath, pathFromRoot, options);\n if (pointer === null) {\n return;\n }\n const parsed = pointer_js_1.default.parse(pathFromRoot);\n const depth = parsed.length;\n const file = url.stripHash(pointer.path);\n const hash = url.getHash(pointer.path);\n const external = file !== $refs._root$Ref.path;\n const extended = ref_js_1.default.isExtended$Ref($ref);\n indirections += pointer.indirections;\n const existingEntry = findInInventory(inventory, $refParent, $refKey);\n if (existingEntry) {\n // This $Ref has already been inventoried, so we don't need to process it again\n if (depth < existingEntry.depth || indirections < existingEntry.indirections) {\n removeFromInventory(inventory, existingEntry);\n }\n else {\n return;\n }\n }\n inventory.push({\n $ref, // The JSON Reference (e.g. {$ref: string})\n parent: $refParent, // The object that contains this $ref pointer\n key: $refKey, // The key in `parent` that is the $ref pointer\n pathFromRoot, // The path to the $ref pointer, from the JSON Schema root\n depth, // How far from the JSON Schema root is this $ref pointer?\n file, // The file that the $ref pointer resolves to\n hash, // The hash within `file` that the $ref pointer resolves to\n value: pointer.value, // The resolved value of the $ref pointer\n circular: pointer.circular, // Is this $ref pointer DIRECTLY circular? (i.e. it references itself)\n extended, // Does this $ref extend its resolved value? (i.e. it has extra properties, in addition to \"$ref\")\n external, // Does this $ref pointer point to a file other than the main JSON Schema file?\n indirections, // The number of indirect references that were traversed to resolve the value\n });\n // Recursively crawl the resolved value\n if (!existingEntry || external) {\n crawl(pointer.value, null, pointer.path, pathFromRoot, indirections + 1, inventory, $refs, options);\n }\n}\n/**\n * Re-maps every $ref pointer, so that they're all relative to the root of the JSON Schema.\n * Each referenced value is dereferenced EXACTLY ONCE. All subsequent references to the same\n * value are re-mapped to point to the first reference.\n *\n * @example: {\n * first: { $ref: somefile.json#/some/part },\n * second: { $ref: somefile.json#/another/part },\n * third: { $ref: somefile.json },\n * fourth: { $ref: somefile.json#/some/part/sub/part }\n * }\n *\n * In this example, there are four references to the same file, but since the third reference points\n * to the ENTIRE file, that's the only one we need to dereference. The other three can just be\n * remapped to point inside the third one.\n *\n * On the other hand, if the third reference DIDN'T exist, then the first and second would both need\n * to be dereferenced, since they point to different parts of the file. The fourth reference does NOT\n * need to be dereferenced, because it can be remapped to point inside the first one.\n *\n * @param inventory\n */\nfunction remap(inventory) {\n // Group & sort all the $ref pointers, so they're in the order that we need to dereference/remap them\n inventory.sort((a, b) => {\n if (a.file !== b.file) {\n // Group all the $refs that point to the same file\n return a.file < b.file ? -1 : +1;\n }\n else if (a.hash !== b.hash) {\n // Group all the $refs that point to the same part of the file\n return a.hash < b.hash ? -1 : +1;\n }\n else if (a.circular !== b.circular) {\n // If the $ref points to itself, then sort it higher than other $refs that point to this $ref\n return a.circular ? -1 : +1;\n }\n else if (a.extended !== b.extended) {\n // If the $ref extends the resolved value, then sort it lower than other $refs that don't extend the value\n return a.extended ? +1 : -1;\n }\n else if (a.indirections !== b.indirections) {\n // Sort direct references higher than indirect references\n return a.indirections - b.indirections;\n }\n else if (a.depth !== b.depth) {\n // Sort $refs by how close they are to the JSON Schema root\n return a.depth - b.depth;\n }\n else {\n // Determine how far each $ref is from the \"definitions\" property.\n // Most people will expect references to be bundled into the the \"definitions\" property if possible.\n const aDefinitionsIndex = Math.max(a.pathFromRoot.lastIndexOf(\"/definitions\"), a.pathFromRoot.lastIndexOf(\"/$defs\"));\n const bDefinitionsIndex = Math.max(b.pathFromRoot.lastIndexOf(\"/definitions\"), b.pathFromRoot.lastIndexOf(\"/$defs\"));\n if (aDefinitionsIndex !== bDefinitionsIndex) {\n // Give higher priority to the $ref that's closer to the \"definitions\" property\n return bDefinitionsIndex - aDefinitionsIndex;\n }\n else {\n // All else is equal, so use the shorter path, which will produce the shortest possible reference\n return a.pathFromRoot.length - b.pathFromRoot.length;\n }\n }\n });\n let file, hash, pathFromRoot;\n for (const entry of inventory) {\n // console.log('Re-mapping $ref pointer \"%s\" at %s', entry.$ref.$ref, entry.pathFromRoot);\n if (!entry.external) {\n // This $ref already resolves to the main JSON Schema file\n entry.$ref.$ref = entry.hash;\n }\n else if (entry.file === file && entry.hash === hash) {\n // This $ref points to the same value as the prevous $ref, so remap it to the same path\n entry.$ref.$ref = pathFromRoot;\n }\n else if (entry.file === file && entry.hash.indexOf(hash + \"/\") === 0) {\n // This $ref points to a sub-value of the prevous $ref, so remap it beneath that path\n entry.$ref.$ref = pointer_js_1.default.join(pathFromRoot, pointer_js_1.default.parse(entry.hash.replace(hash, \"#\")));\n }\n else {\n // We've moved to a new file or new hash\n file = entry.file;\n hash = entry.hash;\n pathFromRoot = entry.pathFromRoot;\n // This is the first $ref to point to this value, so dereference the value.\n // Any other $refs that point to the same value will point to this $ref instead\n entry.$ref = entry.parent[entry.key] = ref_js_1.default.dereference(entry.$ref, entry.value);\n if (entry.circular) {\n // This $ref points to itself\n entry.$ref.$ref = entry.pathFromRoot;\n }\n }\n }\n // we want to ensure that any $refs that point to another $ref are remapped to point to the final value\n // let hadChange = true;\n // while (hadChange) {\n // hadChange = false;\n // for (const entry of inventory) {\n // if (entry.$ref && typeof entry.$ref === \"object\" && \"$ref\" in entry.$ref) {\n // const resolved = inventory.find((e: InventoryEntry) => e.pathFromRoot === entry.$ref.$ref);\n // if (resolved) {\n // const resolvedPointsToAnotherRef =\n // resolved.$ref && typeof resolved.$ref === \"object\" && \"$ref\" in resolved.$ref;\n // if (resolvedPointsToAnotherRef && entry.$ref.$ref !== resolved.$ref.$ref) {\n // // console.log('Re-mapping $ref pointer \"%s\" at %s', entry.$ref.$ref, entry.pathFromRoot);\n // entry.$ref.$ref = resolved.$ref.$ref;\n // hadChange = true;\n // }\n // }\n // }\n // }\n // }\n}\n/**\n * TODO\n */\nfunction findInInventory(inventory, $refParent, $refKey) {\n for (const existingEntry of inventory) {\n if (existingEntry && existingEntry.parent === $refParent && existingEntry.key === $refKey) {\n return existingEntry;\n }\n }\n return undefined;\n}\nfunction removeFromInventory(inventory, entry) {\n const index = inventory.indexOf(entry);\n inventory.splice(index, 1);\n}\nexports.default = bundle;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_1 = require(\"./util/errors\");\nexports.default = dereference;\n/**\n * Crawls the JSON schema, finds all JSON references, and dereferences them.\n * This method mutates the JSON schema object, replacing JSON references with their resolved value.\n *\n * @param parser\n * @param options\n */\nfunction dereference(parser, options) {\n const start = Date.now();\n // console.log('Dereferencing $ref pointers in %s', parser.$refs._root$Ref.path);\n const dereferenced = crawl(parser.schema, parser.$refs._root$Ref.path, \"#\", new Set(), new Set(), new Map(), parser.$refs, options, start);\n parser.$refs.circular = dereferenced.circular;\n parser.schema = dereferenced.value;\n}\n/**\n * Recursively crawls the given value, and dereferences any JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been processed\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @param startTime - The time when the dereferencing started\n * @returns\n */\nfunction crawl(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {\n let dereferenced;\n const result = {\n value: obj,\n circular: false,\n };\n checkDereferenceTimeout(startTime, options);\n const derefOptions = (options.dereference || {});\n const isExcludedPath = derefOptions.excludedPathMatcher || (() => false);\n if (derefOptions?.circular === \"ignore\" || !processedObjects.has(obj)) {\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {\n parents.add(obj);\n processedObjects.add(obj);\n if (ref_js_1.default.isAllowed$Ref(obj, options)) {\n dereferenced = dereference$Ref(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n result.circular = dereferenced.circular;\n result.value = dereferenced.value;\n }\n else {\n for (const key of Object.keys(obj)) {\n checkDereferenceTimeout(startTime, options);\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n if (isExcludedPath(keyPathFromRoot)) {\n continue;\n }\n const value = obj[key];\n let circular = false;\n if (ref_js_1.default.isAllowed$Ref(value, options)) {\n dereferenced = dereference$Ref(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n // If we have properties we want to preserve from our dereferenced schema then we need\n // to copy them over to our new object.\n const preserved = new Map();\n if (derefOptions?.preservedProperties) {\n if (typeof obj[key] === \"object\" && !Array.isArray(obj[key])) {\n derefOptions?.preservedProperties.forEach((prop) => {\n if (prop in obj[key]) {\n preserved.set(prop, obj[key][prop]);\n }\n });\n }\n }\n obj[key] = dereferenced.value;\n // If we have data to preserve and our dereferenced object is still an object then\n // we need copy back our preserved data into our dereferenced schema.\n if (derefOptions?.preservedProperties) {\n if (preserved.size && typeof obj[key] === \"object\" && !Array.isArray(obj[key])) {\n preserved.forEach((value, prop) => {\n obj[key][prop] = value;\n });\n }\n }\n derefOptions?.onDereference?.(value.$ref, obj[key], obj, key);\n }\n }\n else {\n if (!parents.has(value)) {\n dereferenced = crawl(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n obj[key] = dereferenced.value;\n }\n }\n else {\n circular = foundCircularReference(keyPath, $refs, options);\n }\n }\n // Set the \"isCircular\" flag if this or any other property is circular\n result.circular = result.circular || circular;\n }\n }\n parents.delete(obj);\n }\n }\n return result;\n}\n/**\n * Dereferences the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `$ref` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been dereferenced\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @returns\n */\nfunction dereference$Ref($ref, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {\n const isExternalRef = ref_js_1.default.isExternal$Ref($ref);\n const shouldResolveOnCwd = isExternalRef && options?.dereference?.externalReferenceResolution === \"root\";\n const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const cache = dereferencedCache.get($refPath);\n if (cache) {\n // If the object we found is circular we can immediately return it because it would have been\n // cached with everything we need already and we don't need to re-process anything inside it.\n //\n // If the cached object however is _not_ circular and there are additional keys alongside our\n // `$ref` pointer here we should merge them back in and return that.\n if (!cache.circular) {\n const refKeys = Object.keys($ref);\n if (refKeys.length > 1) {\n const extraKeys = {};\n for (const key of refKeys) {\n if (key !== \"$ref\" && !(key in cache.value)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n extraKeys[key] = $ref[key];\n }\n }\n return {\n circular: cache.circular,\n value: Object.assign({}, cache.value, extraKeys),\n };\n }\n return cache;\n }\n // If both our cached value and our incoming `$ref` are the same then we can return what we\n // got out of the cache, otherwise we should re-process this value. We need to do this because\n // the current dereference caching mechanism doesn't take into account that `$ref` are neither\n // unique or reference the same file.\n //\n // For example if `schema.yaml` references `definitions/child.yaml` and\n // `definitions/parent.yaml` references `child.yaml` then `$ref: 'child.yaml'` may get cached\n // for `definitions/child.yaml`, resulting in `schema.yaml` being having an invalid reference\n // to `child.yaml`.\n //\n // This check is not perfect and the design of the dereference caching mechanism needs a total\n // overhaul.\n if (typeof cache.value === \"object\" && \"$ref\" in cache.value && \"$ref\" in $ref) {\n if (cache.value.$ref === $ref.$ref) {\n return cache;\n }\n else {\n // no-op\n }\n }\n else {\n return cache;\n }\n }\n const pointer = $refs._resolve($refPath, path, options);\n if (pointer === null) {\n return {\n circular: false,\n value: null,\n };\n }\n // Check for circular references\n const directCircular = pointer.circular;\n let circular = directCircular || parents.has(pointer.value);\n if (circular) {\n foundCircularReference(path, $refs, options);\n }\n // Dereference the JSON reference\n let dereferencedValue = ref_js_1.default.dereference($ref, pointer.value);\n // Crawl the dereferenced value (unless it's circular)\n if (!circular) {\n // Determine if the dereferenced value is circular\n const dereferenced = crawl(dereferencedValue, pointer.path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n dereferencedValue = dereferenced.value;\n }\n if (circular && !directCircular && options.dereference?.circular === \"ignore\") {\n // The user has chosen to \"ignore\" circular references, so don't change the value\n dereferencedValue = $ref;\n }\n if (directCircular) {\n // The pointer is a DIRECT circular reference (i.e. it references itself).\n // So replace the $ref path with the absolute path from the JSON Schema root\n dereferencedValue.$ref = pathFromRoot;\n }\n const dereferencedObject = {\n circular,\n value: dereferencedValue,\n };\n // only cache if no extra properties than $ref\n if (Object.keys($ref).length === 1) {\n dereferencedCache.set($refPath, dereferencedObject);\n }\n return dereferencedObject;\n}\n/**\n * Check if we've run past our allowed timeout and throw an error if we have.\n *\n * @param startTime - The time when the dereferencing started.\n * @param options\n */\nfunction checkDereferenceTimeout(startTime, options) {\n if (options && options.timeoutMs) {\n if (Date.now() - startTime > options.timeoutMs) {\n throw new errors_1.TimeoutError(options.timeoutMs);\n }\n }\n}\n/**\n * Called when a circular reference is found.\n * It sets the {@link $Refs#circular} flag, executes the options.dereference.onCircular callback,\n * and throws an error if options.dereference.circular is false.\n *\n * @param keyPath - The JSON Reference path of the circular reference\n * @param $refs\n * @param options\n * @returns - always returns true, to indicate that a circular reference was found\n */\nfunction foundCircularReference(keyPath, $refs, options) {\n $refs.circular = true;\n options?.dereference?.onCircular?.(keyPath);\n if (!options.dereference.circular) {\n const error = new ReferenceError(`Circular $ref pointer found at ${keyPath}`);\n throw error;\n }\n return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction makeNext() {\n if (typeof process === \"object\" && typeof process.nextTick === \"function\") {\n return process.nextTick;\n }\n else if (typeof setImmediate === \"function\") {\n return setImmediate;\n }\n else {\n return function next(f) {\n setTimeout(f, 0);\n };\n }\n}\nexports.default = makeNext();\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = maybe;\nconst next_js_1 = __importDefault(require(\"./next.js\"));\nfunction maybe(cb, promise) {\n if (cb) {\n promise.then(function (result) {\n (0, next_js_1.default)(function () {\n cb(null, result);\n });\n }, function (err) {\n (0, next_js_1.default)(function () {\n cb(err);\n });\n });\n return undefined;\n }\n else {\n return promise;\n }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n var ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n };\n return function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isUnsafeUrl = exports.$Refs = exports.getJsonSchemaRefParserDefaultOptions = exports.jsonSchemaParserNormalizeArgs = exports.dereferenceInternal = exports.JSONParserErrorGroup = exports.isHandledError = exports.UnmatchedParserError = exports.ParserError = exports.ResolverError = exports.MissingPointerError = exports.InvalidPointerError = exports.JSONParserError = exports.UnmatchedResolverError = exports.dereference = exports.bundle = exports.resolve = exports.parse = exports.$RefParser = void 0;\nconst refs_js_1 = __importDefault(require(\"./refs.js\"));\nexports.$Refs = refs_js_1.default;\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst normalize_args_js_1 = __importDefault(require(\"./normalize-args.js\"));\nexports.jsonSchemaParserNormalizeArgs = normalize_args_js_1.default;\nconst resolve_external_js_1 = __importDefault(require(\"./resolve-external.js\"));\nconst bundle_js_1 = __importDefault(require(\"./bundle.js\"));\nconst dereference_js_1 = __importDefault(require(\"./dereference.js\"));\nexports.dereferenceInternal = dereference_js_1.default;\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nObject.defineProperty(exports, \"JSONParserError\", { enumerable: true, get: function () { return errors_js_1.JSONParserError; } });\nObject.defineProperty(exports, \"InvalidPointerError\", { enumerable: true, get: function () { return errors_js_1.InvalidPointerError; } });\nObject.defineProperty(exports, \"MissingPointerError\", { enumerable: true, get: function () { return errors_js_1.MissingPointerError; } });\nObject.defineProperty(exports, \"ResolverError\", { enumerable: true, get: function () { return errors_js_1.ResolverError; } });\nObject.defineProperty(exports, \"ParserError\", { enumerable: true, get: function () { return errors_js_1.ParserError; } });\nObject.defineProperty(exports, \"UnmatchedParserError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedParserError; } });\nObject.defineProperty(exports, \"UnmatchedResolverError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedResolverError; } });\nObject.defineProperty(exports, \"isHandledError\", { enumerable: true, get: function () { return errors_js_1.isHandledError; } });\nObject.defineProperty(exports, \"JSONParserErrorGroup\", { enumerable: true, get: function () { return errors_js_1.JSONParserErrorGroup; } });\nconst maybe_js_1 = __importDefault(require(\"./util/maybe.js\"));\nconst options_js_1 = require(\"./options.js\");\nObject.defineProperty(exports, \"getJsonSchemaRefParserDefaultOptions\", { enumerable: true, get: function () { return options_js_1.getJsonSchemaRefParserDefaultOptions; } });\nconst url_js_1 = require(\"./util/url.js\");\nObject.defineProperty(exports, \"isUnsafeUrl\", { enumerable: true, get: function () { return url_js_1.isUnsafeUrl; } });\n/**\n * This class parses a JSON schema, builds a map of its JSON references and their resolved values,\n * and provides methods for traversing, manipulating, and dereferencing those references.\n *\n * @class\n */\nclass $RefParser {\n /**\n * The parsed (and possibly dereferenced) JSON schema object\n *\n * @type {object}\n * @readonly\n */\n schema = null;\n /**\n * The resolved JSON references\n *\n * @type {$Refs}\n * @readonly\n */\n $refs = new refs_js_1.default();\n async parse() {\n const args = (0, normalize_args_js_1.default)(arguments);\n let promise;\n if (!args.path && !args.schema) {\n const err = new Error(`Expected a file path, URL, or object. Got ${args.path || args.schema}`);\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n // Reset everything\n this.schema = null;\n this.$refs = new refs_js_1.default();\n // If the path is a filesystem path, then convert it to a URL.\n // NOTE: According to the JSON Reference spec, these should already be URLs,\n // but, in practice, many people use local filesystem paths instead.\n // So we're being generous here and doing the conversion automatically.\n // This is not intended to be a 100% bulletproof solution.\n // If it doesn't work for your use-case, then use a URL instead.\n let pathType = \"http\";\n if (url.isFileSystemPath(args.path)) {\n args.path = url.fromFileSystemPath(args.path);\n pathType = \"file\";\n }\n else if (!args.path && args.schema && \"$id\" in args.schema && args.schema.$id) {\n // when schema id has defined an URL should use that hostname to request the references,\n // instead of using the current page URL\n const params = url.parse(args.schema.$id);\n const port = params.protocol === \"https:\" ? 443 : 80;\n args.path = `${params.protocol}//${params.hostname}:${port}`;\n }\n // Resolve the absolute path of the schema\n args.path = url.resolve(url.cwd(), args.path);\n if (args.schema && typeof args.schema === \"object\") {\n // A schema object was passed-in.\n // So immediately add a new $Ref with the schema object as its value\n const $ref = this.$refs._add(args.path);\n $ref.value = args.schema;\n $ref.pathType = pathType;\n promise = Promise.resolve(args.schema);\n }\n else {\n // Parse the schema file/url\n promise = (0, parse_js_1.default)(args.path, this.$refs, args.options);\n }\n try {\n const result = await promise;\n if (result !== null && typeof result === \"object\" && !Buffer.isBuffer(result)) {\n this.schema = result;\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else if (args.options.continueOnError) {\n this.schema = null; // it's already set to null at line 79, but let's set it again for the sake of readability\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else {\n throw new SyntaxError(`\"${this.$refs._root$Ref.path || result}\" is not a valid JSON Schema`);\n }\n }\n catch (err) {\n if (!args.options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n if (this.$refs._$refs[url.stripHash(args.path)]) {\n this.$refs._$refs[url.stripHash(args.path)].addError(err);\n }\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(null));\n }\n }\n static parse() {\n const parser = new $RefParser();\n return parser.parse.apply(parser, arguments);\n }\n async resolve() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.parse(args.path, args.schema, args.options);\n await (0, resolve_external_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.$refs));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static resolve() {\n const instance = new $RefParser();\n return instance.resolve.apply(instance, arguments);\n }\n static bundle() {\n const instance = new $RefParser();\n return instance.bundle.apply(instance, arguments);\n }\n async bundle() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, bundle_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static dereference() {\n const instance = new $RefParser();\n return instance.dereference.apply(instance, arguments);\n }\n async dereference() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, dereference_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n}\nexports.$RefParser = $RefParser;\nexports.default = $RefParser;\nfunction finalize(parser) {\n const errors = errors_js_1.JSONParserErrorGroup.getParserErrors(parser);\n if (errors.length > 0) {\n throw new errors_js_1.JSONParserErrorGroup(parser);\n }\n}\nexports.parse = $RefParser.parse;\nexports.resolve = $RefParser.resolve;\nexports.bundle = $RefParser.bundle;\nexports.dereference = $RefParser.dereference;\n","export function isObject(value) {\n return value !== null && typeof value === \"object\";\n}\nconst objProto = Object.prototype;\nexport function isRecordEmpty(rec) {\n for (const key in rec) {\n if (objProto.hasOwnProperty.call(rec, key)) {\n return false;\n }\n }\n return true;\n}\n//# sourceMappingURL=object.js.map","import { isRecordEmpty } from \"../object.js\";\nexport const JSON_SCHEMA_TYPE_NAMES = [\n \"array\",\n \"boolean\",\n \"integer\",\n \"null\",\n \"number\",\n \"object\",\n \"string\",\n];\nexport const SET_OF_JSON_SCHEMA_TYPE_NAMES = new Set(JSON_SCHEMA_TYPE_NAMES);\nexport function isJsonSchemaType(type) {\n return SET_OF_JSON_SCHEMA_TYPE_NAMES.has(type);\n}\n// WARN: Order is important\nexport const RECORDS_OF_SUB_SCHEMAS = [\n \"$defs\",\n \"definitions\",\n \"properties\",\n \"patternProperties\",\n \"dependencies\",\n];\nexport const SET_OF_RECORDS_OF_SUB_SCHEMAS = new Set(RECORDS_OF_SUB_SCHEMAS);\n// WARN: Order is important\nexport const ARRAYS_OF_SUB_SCHEMAS = [\n \"items\",\n \"allOf\",\n \"oneOf\",\n \"anyOf\",\n];\nexport const SET_OF_ARRAYS_OF_SUB_SCHEMAS = new Set(ARRAYS_OF_SUB_SCHEMAS);\n// WARN: Order is important\nexport const SUB_SCHEMAS = [\n \"items\",\n \"additionalItems\",\n \"additionalProperties\",\n \"propertyNames\",\n \"contains\",\n \"if\",\n \"then\",\n \"else\",\n \"not\",\n];\nexport const SET_OF_SUB_SCHEMAS = new Set(SUB_SCHEMAS);\n// WARN: Order is important\nexport const ALL_SUB_SCHEMA_KEYS = [\n ...RECORDS_OF_SUB_SCHEMAS,\n ...ARRAYS_OF_SUB_SCHEMAS,\n ...SUB_SCHEMAS,\n];\nexport function isSchemaObject(schemaDef) {\n return typeof schemaDef === \"object\";\n}\nexport function isAllowAnySchema(def) {\n return isSchemaObject(def) ? isRecordEmpty(def) : def === true;\n}\n//# sourceMappingURL=json-schema.js.map","export function ascComparator(a, b) {\n if (a < b)\n return -1;\n if (a > b)\n return 1;\n return 0;\n}\n//# sourceMappingURL=ord.js.map","export function union(larger, smaller) {\n const ll = larger.length;\n if (ll === 0) {\n return smaller;\n }\n let sl = smaller.length;\n if (sl === 0) {\n return larger;\n }\n if (ll < sl) {\n const tmp = larger;\n larger = smaller;\n smaller = tmp;\n sl = ll;\n }\n const data = new Set(larger);\n for (let i = 0; i < sl; i++) {\n data.add(smaller[i]);\n }\n return Array.from(data);\n}\nexport function intersection(a, b) {\n const result = [];\n if (a.length === 0 || b.length === 0) {\n return result;\n }\n if (a.length > b.length) {\n const tmp = a;\n a = b;\n b = tmp;\n }\n const setB = new Set(b);\n for (let i = 0; i < a.length && setB.size > 0; i++) {\n const val = a[i];\n if (setB.delete(val)) {\n result.push(val);\n }\n }\n return result;\n}\nexport function isArrayEmpty(arr) {\n return arr.length === 0;\n}\nexport function createArrayComparator(compare) {\n return (a, b) => {\n const d = a.length - b.length;\n if (d !== 0) {\n return d;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n const d = compare(a[i], b[i]);\n if (d !== 0) {\n return d;\n }\n }\n }\n return 0;\n };\n}\nexport function createDeduplicator(compare, { threshold = 12 } = {}) {\n return (arr) => {\n const al = arr.length;\n if (al === 0) {\n return arr;\n }\n if (al <= threshold) {\n const result = [];\n let rl = 0;\n outer: for (let i = 0; i < al; i++) {\n const item = arr[i];\n for (let j = 0; j < rl; j++) {\n if (compare(item, result[j]) === 0) {\n continue outer;\n }\n }\n rl = result.push(item);\n }\n return result;\n }\n const sorted = arr.slice().sort(compare);\n let wIndex = 0;\n for (let rIndex = 1; rIndex < al; rIndex++) {\n if (compare(sorted[wIndex], sorted[rIndex]) !== 0) {\n if (++wIndex !== rIndex) {\n sorted[wIndex] = sorted[rIndex];\n }\n }\n }\n sorted.length = wIndex + 1;\n return sorted;\n };\n}\nexport function createIntersector(compare) {\n return (a, b) => {\n const result = [];\n let al = a.length;\n let bl = b.length;\n if (al === 0 || bl === 0) {\n return result;\n }\n if (al > bl) {\n const tmpArr = a;\n a = b;\n b = tmpArr;\n const tmpL = al;\n al = bl;\n bl = tmpL;\n }\n const aSorted = [...a].sort(compare);\n const bSorted = [...b].sort(compare);\n let i = 0, j = 0;\n while (i < al && j < bl) {\n const cmp = compare(aSorted[i], bSorted[j]);\n if (cmp === 0) {\n // Only push if result is empty OR last pushed value is different\n if (result.length === 0 ||\n compare(result[result.length - 1], aSorted[i]) !== 0) {\n result.push(aSorted[i]);\n }\n i++;\n j++;\n }\n else if (cmp < 0) {\n i++;\n }\n else {\n j++;\n }\n }\n return result;\n };\n}\n//# sourceMappingURL=array.js.map","export function memoize(cache, func) {\n return (arg) => {\n if (cache.has(arg)) {\n return cache.get(arg);\n }\n const ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n}\nexport const weakMemoize = memoize;\n//# sourceMappingURL=memoize.js.map","import { ascComparator } from \"../../ord.js\";\nimport { createArrayComparator, createDeduplicator, isArrayEmpty, } from \"../../array.js\";\nimport { isRecordEmpty } from \"../../object.js\";\nimport { weakMemoize } from \"../../memoize.js\";\nimport { isAllowAnySchema, isSchemaObject } from \"../json-schema.js\";\nconst zero = () => 0;\nconst isUndefined = (v) => v === undefined;\nconst isSchemaPrimitiveExceptNull = (value) => typeof value !== \"object\";\nconst PRIMITIVE_TYPE_ORDER = {\n boolean: 0,\n number: 1,\n string: 2,\n};\nfunction compareSchemaPrimitive(a, b) {\n const ta = typeof a;\n const tb = typeof b;\n return ta === tb\n ? ascComparator(a, b)\n : PRIMITIVE_TYPE_ORDER[ta] - PRIMITIVE_TYPE_ORDER[tb];\n}\nfunction insertUniqueValues(mutableTarget, mutableSource) {\n const tl = mutableTarget.length;\n if (tl === 0)\n return mutableSource;\n const sl = mutableSource.length;\n if (sl === 0)\n return mutableTarget;\n if (sl > tl) {\n const t = mutableTarget;\n mutableTarget = mutableSource;\n mutableSource = t;\n }\n const seen = new Set(mutableTarget);\n const l = mutableSource.length;\n for (let i = 0; i < l; i++) {\n const key = mutableSource[i];\n if (!seen.has(key)) {\n mutableTarget.push(key);\n }\n }\n return mutableTarget;\n}\nfunction createCmpMatcher(isEmpty, compare, compareEmpty = zero) {\n return (a, b) => {\n if (isEmpty(a)) {\n if (isEmpty(b)) {\n return compareEmpty(a, b);\n }\n return -1;\n }\n if (isEmpty(b)) {\n return 1;\n }\n return compare(a, b);\n };\n}\nfunction createOptionalComparator(compare) {\n return createCmpMatcher(isUndefined, compare);\n}\nfunction createNarrowingOptionalComparator(isEmpty, compare) {\n return createCmpMatcher((v) => v === undefined || isEmpty(v), compare);\n}\nfunction createArrayOrItemComparator(compare, compareArray) {\n return createCmpMatcher(Array.isArray, compare, compareArray);\n}\nconst compareOptionalSameTypeSchemaPrimitives = createOptionalComparator(ascComparator);\nconst compareNumbersWithZeroDefault = createNarrowingOptionalComparator((v) => v === 0, (a, b) => a - b);\nexport function createComparator({ deduplicationCache = new WeakMap(), sortedKeysCache = new WeakMap(), } = {}) {\n const getSortedKeys = weakMemoize(sortedKeysCache, (obj) => Object.keys(obj).sort());\n function createRecordsComparator(compare) {\n return (a, b) => {\n const aKeys = getSortedKeys(a);\n const bKeys = getSortedKeys(b);\n const l = Math.min(aKeys.length, bKeys.length);\n for (let i = 0; i < l; i++) {\n const cmp = ascComparator(aKeys[i], bKeys[i]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n if (aKeys.length !== bKeys.length) {\n return aKeys.length - bKeys.length;\n }\n for (let i = 0; i < l; i++) {\n const key = aKeys[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const cmp = compare(a[key], b[key]);\n if (cmp !== 0) {\n return cmp;\n }\n }\n return 0;\n };\n }\n function createArrayComparatorWithDeduplication(compare) {\n const cmp = createArrayComparator(compare);\n const deduplicate = weakMemoize(deduplicationCache, \n // NOTE: Always sort output\n createDeduplicator(compare, { threshold: 0 }));\n return (a, b) => cmp(deduplicate(a), deduplicate(b));\n }\n const compareArrayOfSameTypePrimitivesWithDeduplication = createArrayComparatorWithDeduplication(ascComparator);\n function compareSchemaDefinitions(a, b) {\n if (isSchemaObject(a)) {\n if (isSchemaObject(b)) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n const allKeys = insertUniqueValues(aKeys, bKeys);\n const l = allKeys.length;\n for (let i = 0; i < l; i++) {\n const key = allKeys[i];\n if (a[key] === b[key]) {\n continue;\n }\n const cmp = COMPARATORS[key] ?? compareOptionalSchemaValues;\n const d = cmp(a[key], b[key]);\n if (d !== 0) {\n return d;\n }\n }\n return 0;\n }\n return b === true && isRecordEmpty(a) ? 0 : 1;\n }\n if (isSchemaObject(b)) {\n return a === true && isRecordEmpty(b) ? 0 : -1;\n }\n return ascComparator(a, b);\n }\n const compareOptionalSchemaValues = createOptionalComparator(compareSchemaValues);\n const compareNonNullSchemaValue = createCmpMatcher(isSchemaPrimitiveExceptNull, createArrayOrItemComparator(createRecordsComparator(compareOptionalSchemaValues), createArrayComparator(compareSchemaValues)), compareSchemaPrimitive);\n function compareSchemaValues(a, b) {\n if (a === null) {\n return -1;\n }\n if (b === null) {\n return 1;\n }\n return compareNonNullSchemaValue(a, b);\n }\n const compareOptionalSchemaDefinitions = createOptionalComparator(compareSchemaDefinitions);\n const compareRecordOfOptionalSchemasWithEmptyRecordDefault = createNarrowingOptionalComparator(isRecordEmpty, createRecordsComparator(compareOptionalSchemaDefinitions));\n const compareOptionalArrayOfSchemasWithDeduplication = createOptionalComparator(createArrayComparatorWithDeduplication(compareSchemaDefinitions));\n const compareSchemaDefinitionsWithEmptyDefinitionDefault = createNarrowingOptionalComparator(isAllowAnySchema, compareSchemaDefinitions);\n const COMPARATORS = {\n $id: compareOptionalSameTypeSchemaPrimitives,\n $comment: compareOptionalSameTypeSchemaPrimitives,\n $defs: compareRecordOfOptionalSchemasWithEmptyRecordDefault,\n $ref: compareOptionalSameTypeSchemaPrimitives,\n $schema: compareOptionalSameTypeSchemaPrimitives,\n const: compareOptionalSchemaValues,\n contains: compareOptionalSchemaDefinitions,\n contentEncoding: compareOptionalSameTypeSchemaPrimitives,\n contentMediaType: compareOptionalSameTypeSchemaPrimitives,\n default: compareOptionalSchemaValues,\n definitions: compareRecordOfOptionalSchemasWithEmptyRecordDefault,\n description: compareOptionalSameTypeSchemaPrimitives,\n else: compareOptionalSchemaDefinitions,\n examples: compareOptionalSchemaValues,\n exclusiveMaximum: compareOptionalSameTypeSchemaPrimitives,\n exclusiveMinimum: compareOptionalSameTypeSchemaPrimitives,\n format: compareOptionalSameTypeSchemaPrimitives,\n if: compareOptionalSchemaDefinitions,\n maximum: compareOptionalSameTypeSchemaPrimitives,\n maxItems: compareOptionalSameTypeSchemaPrimitives,\n maxLength: compareOptionalSameTypeSchemaPrimitives,\n maxProperties: compareOptionalSameTypeSchemaPrimitives,\n minimum: compareOptionalSameTypeSchemaPrimitives,\n multipleOf: compareOptionalSameTypeSchemaPrimitives,\n not: compareOptionalSchemaDefinitions,\n pattern: compareOptionalSameTypeSchemaPrimitives,\n propertyNames: compareOptionalSchemaDefinitions,\n readOnly: compareOptionalSameTypeSchemaPrimitives,\n then: compareOptionalSchemaDefinitions,\n title: compareOptionalSameTypeSchemaPrimitives,\n writeOnly: compareOptionalSameTypeSchemaPrimitives,\n uniqueItems: createNarrowingOptionalComparator((v) => v === false, zero),\n minLength: compareNumbersWithZeroDefault,\n minItems: compareNumbersWithZeroDefault,\n minProperties: compareNumbersWithZeroDefault,\n required: createNarrowingOptionalComparator(isArrayEmpty, compareArrayOfSameTypePrimitivesWithDeduplication),\n enum: createNarrowingOptionalComparator(isArrayEmpty, createArrayComparatorWithDeduplication(compareSchemaValues)),\n type: createOptionalComparator((a, b) => {\n const isAArr = Array.isArray(a);\n const isBArr = Array.isArray(b);\n if (!isAArr && !isBArr) {\n return ascComparator(a, b);\n }\n return compareArrayOfSameTypePrimitivesWithDeduplication(isAArr ? a : [a], isBArr ? b : [b]);\n }),\n items: createNarrowingOptionalComparator((v) => !Array.isArray(v) && isAllowAnySchema(v), createArrayOrItemComparator(compareSchemaDefinitions, createArrayComparator(compareSchemaDefinitions))),\n anyOf: compareOptionalArrayOfSchemasWithDeduplication,\n allOf: compareOptionalArrayOfSchemasWithDeduplication,\n oneOf: compareOptionalArrayOfSchemasWithDeduplication,\n properties: compareRecordOfOptionalSchemasWithEmptyRecordDefault,\n patternProperties: compareRecordOfOptionalSchemasWithEmptyRecordDefault,\n additionalProperties: compareSchemaDefinitionsWithEmptyDefinitionDefault,\n additionalItems: compareSchemaDefinitionsWithEmptyDefinitionDefault,\n dependencies: createNarrowingOptionalComparator(isRecordEmpty, createRecordsComparator(createOptionalComparator(createArrayOrItemComparator(compareSchemaDefinitions, compareArrayOfSameTypePrimitivesWithDeduplication)))),\n };\n return {\n compareSchemaValues,\n compareSchemaDefinitions,\n };\n}\n//# sourceMappingURL=compare.js.map","export function identity(v) {\n return v;\n}\n//# sourceMappingURL=function.js.map","export const gcd = (a, b) => (a ? gcd(b % a, a) : b);\nexport const lcm = (a, b) => Math.abs(a * b) / gcd(a, b);\n//# sourceMappingURL=math.js.map","export function legacyPatternsMerger(a, b) {\n return a === b ? a : `(?=${a})(?=${b})`;\n}\nexport function simplePatternsMerger(a, b) {\n return a === b ? a : `^(?=.*(?:${a}))(?=.*(?:${b})).*$`;\n}\n//# sourceMappingURL=patterns.js.map","import { intersection, union, } from \"../../array.js\";\nimport { identity } from \"../../function.js\";\nimport { lcm } from \"../../math.js\";\nimport { isAllowAnySchema } from \"../json-schema.js\";\nimport { simplePatternsMerger } from \"./patterns.js\";\nfunction* createPairCombinations(l, r, action) {\n const ll = l.length;\n const rl = r.length;\n if (ll > 0 && rl > 0) {\n for (let i = 0; i < ll; i++) {\n const lv = l[i];\n for (let j = 0; j < rl; j++) {\n yield action(lv, r[j]);\n }\n }\n }\n}\nfunction mergeBooleans(l, r) {\n return l || r;\n}\nfunction createRecordsMerge(merge) {\n return (left, right) => {\n const target = { ...left };\n const keys = Object.keys(right);\n const l = keys.length;\n for (let i = 0; i < l; i++) {\n const key = keys[i];\n target[key] =\n left[key] === undefined ? right[key] : merge(left[key], right[key]);\n }\n return target;\n };\n}\nfunction createMap(items) {\n const map = new Map();\n for (const pair of items) {\n for (const key of pair[0]) {\n map.set(key, pair[1]);\n }\n }\n return map;\n}\nfunction assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, key, value) {\n if (value === undefined || isAllowAnySchema(value)) {\n delete target[key];\n }\n else {\n target[key] = value;\n }\n}\nconst PROPERTIES_ASSIGNER_KEYS = [\n \"properties\",\n \"patternProperties\",\n \"additionalProperties\",\n];\nfunction compilePatterns(patterns) {\n const keys = Object.keys(patterns);\n const l = keys.length;\n const result = [];\n for (let i = 0; i < l; i++) {\n const source = keys[i];\n result.push({\n regExp: new RegExp(source),\n schema: patterns[source],\n });\n }\n return [result, keys];\n}\nconst EMPTY_PATTERNS_AND_KEYS = [[], []];\n/**\n * @returns `true` when `false` schema occurred\n */\nfunction appendKeyConstraints(target, key, patterns) {\n const l = patterns.length;\n for (let i = 0; i < l; i++) {\n const p = patterns[i];\n if (!p.regExp.test(key)) {\n continue;\n }\n const s = p.schema;\n if (s === false) {\n return true;\n }\n target.push(s);\n }\n return false;\n}\nconst ITEMS_ASSIGNER_KEYS = [\n \"items\",\n \"additionalItems\",\n];\nconst CONDITION_ASSIGNER_KEYS = [\n \"if\",\n \"then\",\n \"else\",\n];\nfunction assignCondition(target, source) {\n if (source.if !== undefined) {\n target.if = source.if;\n }\n if (source.then !== undefined) {\n target.then = source.then;\n }\n if (source.else !== undefined) {\n target.else = source.else;\n }\n return target;\n}\nfunction intersectSchemaTypes(a, b) {\n if (a === b) {\n return a;\n }\n switch (a) {\n case \"number\": {\n if (b === \"integer\") {\n return \"integer\";\n }\n }\n // eslint-disable-next-line no-fallthrough\n case \"integer\": {\n if (b === \"number\") {\n return \"integer\";\n }\n }\n // eslint-disable-next-line no-fallthrough\n default:\n return undefined;\n }\n}\nexport function check(a, b, check) {\n return [a, b, check];\n}\nfunction createChecksMap(checks) {\n const map = new Map();\n for (const [a, b, check] of checks) {\n const fn = (target) => {\n if (!check(target)) {\n throw new Error(`Schema keys '${a}' and '${b}' are conflicting (${a}: ${JSON.stringify(target[a])}, ${b}: ${JSON.stringify(target[b])})`);\n }\n };\n for (const k of [\n [a, b],\n [b, a],\n ]) {\n let arr = map.get(k[0]);\n if (arr === undefined) {\n arr = [];\n map.set(k[0], arr);\n }\n arr.push({ oppositeKey: k[1], check: fn });\n }\n }\n return map;\n}\nexport const DEFAULT_CHECKS = [\n check(\"minimum\", \"maximum\", (t) => t.maximum >= t.minimum),\n check(\"exclusiveMinimum\", \"maximum\", (t) => t.maximum > t.exclusiveMinimum),\n check(\"minimum\", \"exclusiveMaximum\", (t) => t.exclusiveMaximum > t.minimum),\n check(\"exclusiveMinimum\", \"exclusiveMaximum\", (t) => t.exclusiveMaximum > t.exclusiveMinimum),\n check(\"minLength\", \"maxLength\", (t) => t.maxLength >= t.minLength),\n check(\"minItems\", \"maxItems\", (t) => t.maxItems >= t.minItems),\n check(\"minProperties\", \"maxProperties\", (t) => t.maxProperties >= t.minProperties),\n];\nexport function createMerger({ mergePatterns = simplePatternsMerger, isSubRegExp = Object.is, intersectJson = intersection, deduplicateJsonSchemaDef = identity, defaultMerger = identity, assigners = [], checks = DEFAULT_CHECKS, mergers, } = {}) {\n function mergeArrayOfSchemaDefinitions(schemas) {\n const l = schemas.length;\n let result = schemas[0];\n for (let i = 1; i < l; i++) {\n const r = mergeSchemaDefinitions(result, schemas[i]);\n if (r === false) {\n return false;\n }\n if (isAllowAnySchema(r)) {\n continue;\n }\n result = r;\n }\n return result;\n }\n function createProperty(constraints, key, value, patterns, oppositeValue, oppositePatterns, oppositeAdditional) {\n constraints.length = 0;\n if (value === false) {\n return false;\n }\n constraints.push(value);\n const isOppositeValueDefined = oppositeValue !== undefined;\n if (isOppositeValueDefined) {\n if (oppositeValue === false) {\n return false;\n }\n constraints.push(oppositeValue);\n }\n if (appendKeyConstraints(constraints, key, oppositePatterns)) {\n return false;\n }\n const isNotYetAllowed = constraints.length < 2;\n if (oppositeAdditional === false) {\n // There are no allowing constraints from opposite side -> drop property\n if (isNotYetAllowed) {\n return undefined;\n }\n // Applying patterns of current schema cause they may disappear\n if (appendKeyConstraints(constraints, key, patterns)) {\n return false;\n }\n }\n else if (isNotYetAllowed && oppositeAdditional !== undefined) {\n constraints.push(oppositeAdditional);\n }\n const l = constraints.length;\n if (l === 1) {\n return constraints[0];\n }\n return mergeArrayOfSchemaDefinitions(constraints);\n }\n function assignPatternPropertiesAndAdditionalPropertiesMerge(target, patterns, patternKeys, matchedPatterns, oppositeAdditional, isOppositeTruthy) {\n const l = patternKeys.length;\n if (l > 0 && oppositeAdditional !== false) {\n if (isOppositeTruthy) {\n // TODO: in some cases we can just assign new value instead of copying\n Object.assign(target, patterns);\n }\n else {\n for (let i = 0; i < l; i++) {\n const pattern = patternKeys[i];\n if (matchedPatterns.has(pattern)) {\n continue;\n }\n target[pattern] = mergeSchemaDefinitions(patterns[pattern], oppositeAdditional);\n }\n }\n }\n return target;\n }\n const propertiesAssigner = (target, { properties: lProps = {}, patternProperties: lPatterns, additionalProperties: lAdditional = true, }, { properties: rProps = {}, patternProperties: rPatterns, additionalProperties: rAdditional = true, }) => {\n // Special case\n const isLAddTruthy = isAllowAnySchema(lAdditional);\n const isRAddTruthy = isAllowAnySchema(rAdditional);\n if (isLAddTruthy && isRAddTruthy) {\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"properties\", mergeRecordsOfSchemaDefinitions(lProps, rProps));\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"patternProperties\", lPatterns && rPatterns\n ? mergeRecordsOfSchemaDefinitions(lPatterns, rPatterns)\n : (lPatterns ?? rPatterns));\n delete target.additionalProperties;\n return target;\n }\n // Additional Properties\n const additionalProperties = mergeSchemaDefinitions(lAdditional, rAdditional);\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"additionalProperties\", additionalProperties);\n // Properties\n const properties = {};\n const lKeys = Object.keys(lProps);\n const lKeysLen = lKeys.length;\n const [lCompiledPatterns, lPatternKeys] = lPatterns\n ? compilePatterns(lPatterns)\n : EMPTY_PATTERNS_AND_KEYS;\n const [rCompiledPatterns, rPatternKeys] = rPatterns\n ? compilePatterns(rPatterns)\n : EMPTY_PATTERNS_AND_KEYS;\n const constraints = [];\n const lKeysSet = new Set();\n const mappedRAdditional = isRAddTruthy ? undefined : rAdditional;\n for (let i = 0; i < lKeysLen; i++) {\n const key = lKeys[i];\n lKeysSet.add(key);\n const prop = createProperty(constraints, key, lProps[key], lCompiledPatterns, rProps[key], rCompiledPatterns, mappedRAdditional);\n if (prop !== undefined) {\n properties[key] = prop;\n }\n }\n const rKeys = Object.keys(rProps);\n const rKeysLen = rKeys.length;\n const mappedLAdditional = isLAddTruthy ? undefined : lAdditional;\n for (let i = 0; i < rKeysLen; i++) {\n const key = rKeys[i];\n if (lKeysSet.has(key)) {\n continue;\n }\n const prop = createProperty(constraints, key, rProps[key], rCompiledPatterns, undefined, lCompiledPatterns, mappedLAdditional);\n if (prop !== undefined) {\n properties[key] = prop;\n }\n }\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"properties\", properties);\n // Pattern Properties\n // (lPatterns and rPatterns) or (lPatterns and rAdditional) or (rPatterns and lAdditional)\n let patterns = {};\n const matchedPatterns = new Set();\n if (lPatternKeys.length > 0 && rPatternKeys.length > 0) {\n const gen = createPairCombinations(lPatternKeys, rPatternKeys, (lKey, rKey) => {\n if (isSubRegExp(lKey, rKey)) {\n matchedPatterns.add(lKey);\n }\n if (isSubRegExp(rKey, lKey)) {\n matchedPatterns.add(rKey);\n }\n patterns[mergePatterns(lKey, rKey)] = mergeSchemaDefinitions(lPatterns[lKey], rPatterns[rKey]);\n });\n while (!gen.next().done) {\n /* empty */\n }\n }\n patterns = assignPatternPropertiesAndAdditionalPropertiesMerge(patterns, lPatterns, lPatternKeys, matchedPatterns, rAdditional, isRAddTruthy);\n patterns = assignPatternPropertiesAndAdditionalPropertiesMerge(patterns, rPatterns, rPatternKeys, matchedPatterns, lAdditional, isLAddTruthy);\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"patternProperties\", patterns);\n return target;\n };\n const itemsAssigner = (target, \n // NOTE: Schema that has `additionalItems` without an `items` keyword is invalid\n // so the assigner should be triggered only be colliding `items` properties\n // so default values are used only for type narrowing\n { items: lItems = [], additionalItems: lAdditional }, { items: rItems = [], additionalItems: rAdditional }) => {\n const isLArr = Array.isArray(lItems);\n const isRArr = Array.isArray(rItems);\n const itemsArray = [];\n target.items = itemsArray;\n if (isLArr && isRArr) {\n const [l, additional, tail] = lItems.length < rItems.length\n ? [lItems.length, lAdditional, rItems]\n : [rItems.length, rAdditional, lItems];\n let i = 0;\n for (; i < l; i++) {\n itemsArray.push(mergeSchemaDefinitions(lItems[i], rItems[i]));\n }\n if (additional === false) {\n target.additionalItems = false;\n }\n else {\n const isAdditionalTruthy = additional === undefined || isAllowAnySchema(additional);\n for (; i < tail.length; i++) {\n itemsArray.push(isAdditionalTruthy\n ? tail[i]\n : mergeSchemaDefinitions(tail[i], additional));\n }\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"additionalItems\", lAdditional !== undefined && rAdditional !== undefined\n ? mergeSchemaDefinitions(lAdditional, rAdditional)\n : (lAdditional ?? rAdditional));\n }\n }\n else if (isLArr || isRArr) {\n const [arr, item, additional] = (isLArr ? [lItems, rItems, lAdditional] : [rItems, lItems, rAdditional]);\n assignSchemaDefinitionOrRecordOfSchemaDefinitions(target, \"additionalItems\", additional && mergeSchemaDefinitions(additional, item));\n for (let i = 0; i < arr.length; i++) {\n itemsArray.push(mergeSchemaDefinitions(arr[i], item));\n }\n }\n else {\n delete target.additionalItems;\n target.items = mergeSchemaDefinitions(lItems, rItems);\n }\n return target;\n };\n const conditionAssigner = (target, l, r) => {\n assignCondition(target, l);\n const cond = assignCondition({}, r);\n if (target.allOf === undefined) {\n target.allOf = [cond];\n }\n else {\n target.allOf = target.allOf.concat(cond);\n }\n return target;\n };\n function mergeArraysOfSchemaDefinition(l, r) {\n return deduplicateJsonSchemaDef(Array.from(createPairCombinations(l, r, mergeSchemaDefinitions)));\n }\n const ASSIGNERS_MAP = createMap([\n [PROPERTIES_ASSIGNER_KEYS, propertiesAssigner],\n [ITEMS_ASSIGNER_KEYS, itemsAssigner],\n [CONDITION_ASSIGNER_KEYS, conditionAssigner],\n ...assigners,\n ]);\n const CHECKS_MAP = createChecksMap(checks);\n function mergeSchemaDefinitions(left, right) {\n if (left === false || right === false) {\n return false;\n }\n if (isAllowAnySchema(left)) {\n if (isAllowAnySchema(right)) {\n return true;\n }\n return right;\n }\n if (isAllowAnySchema(right)) {\n return left;\n }\n let target = { ...left };\n const assigners = new Set();\n const checks = new Set();\n const rKeys = Object.keys(right);\n const l = rKeys.length;\n for (let i = 0; i < l; i++) {\n const rKey = rKeys[i];\n const rv = right[rKey];\n if (rv === undefined) {\n continue;\n }\n const checkData = CHECKS_MAP.get(rKey);\n if (checkData !== undefined) {\n const l = checkData.length;\n for (let j = 0; j < l; j++) {\n const item = checkData[j];\n if (left[item.oppositeKey] !== undefined) {\n checks.add(item.check);\n }\n }\n }\n const lv = left[rKey];\n if (lv === undefined) {\n // @ts-expect-error too complex\n target[rKey] = rv;\n continue;\n }\n const assign = ASSIGNERS_MAP.get(rKey);\n if (assign) {\n assigners.add(assign);\n continue;\n }\n const merge = MERGERS[rKey] ?? defaultMerger;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n target[rKey] = merge(lv, rv);\n }\n for (const assign of assigners) {\n target = assign(target, left, right);\n }\n for (const check of checks) {\n check(target);\n }\n return target;\n }\n const mergeRecordsOfSchemaDefinitions = createRecordsMerge(mergeSchemaDefinitions);\n const MERGERS = {\n $id: defaultMerger,\n $ref: defaultMerger,\n $schema: defaultMerger,\n $comment: defaultMerger,\n $defs: mergeRecordsOfSchemaDefinitions,\n definitions: mergeRecordsOfSchemaDefinitions,\n type: (a, b) => {\n if (a === b) {\n return a;\n }\n const isAArr = Array.isArray(a);\n const isBArr = Array.isArray(b);\n if (!isAArr && !isBArr) {\n const intersection = intersectSchemaTypes(a, b);\n if (intersection !== undefined) {\n return intersection;\n }\n }\n else if (isAArr || isBArr) {\n const r = new Set();\n if (isAArr && isBArr) {\n for (const intersection of createPairCombinations(a, b, intersectSchemaTypes)) {\n if (intersection !== undefined) {\n r.add(intersection);\n }\n }\n }\n else {\n const arr = (isAArr ? a : b);\n const el = (isAArr ? b : a);\n const l = arr.length;\n for (let i = 0; i < l; i++) {\n const intersection = intersectSchemaTypes(el, arr[i]);\n if (intersection !== undefined) {\n r.add(intersection);\n }\n }\n }\n const s = r.size;\n if (s === 1) {\n return r.values().next().value;\n }\n if (s > 1) {\n return Array.from(r);\n }\n }\n throw new Error(`It is not possible to create an intersection of the following incompatible types: ${a.toString()}, ${b.toString()}`);\n },\n default: defaultMerger,\n description: defaultMerger,\n title: defaultMerger,\n const: defaultMerger,\n format: defaultMerger,\n contentEncoding: defaultMerger,\n contentMediaType: defaultMerger,\n not: (a, b) => {\n const items = deduplicateJsonSchemaDef([a, b]);\n return items.length === 1 ? items[0] : { anyOf: items };\n },\n pattern: mergePatterns,\n readOnly: mergeBooleans,\n writeOnly: mergeBooleans,\n enum: (a, b) => {\n const data = intersectJson(a, b);\n if (data.length === 0) {\n throw new Error(`Intersection of the following enums is empty: \"${JSON.stringify(a)}\", \"${JSON.stringify(b)}\"`);\n }\n return data;\n },\n anyOf: mergeArraysOfSchemaDefinition,\n oneOf: mergeArraysOfSchemaDefinition,\n allOf: (l, r) => deduplicateJsonSchemaDef(l.concat(r)),\n propertyNames: mergeSchemaDefinitions,\n contains: mergeSchemaDefinitions,\n dependencies: createRecordsMerge((a, b) => {\n if (Array.isArray(a)) {\n if (Array.isArray(b)) {\n return union(a, b);\n }\n return mergeSchemaDefinitions(b, { required: a });\n }\n if (Array.isArray(b)) {\n return mergeSchemaDefinitions(a, { required: b });\n }\n return mergeSchemaDefinitions(a, b);\n }),\n examples: (l, r) => {\n // https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-validation-01#section-10.4\n if (!Array.isArray(l) || !Array.isArray(r)) {\n throw new Error(`Value of the 'examples' field should be an array, but got \"${JSON.stringify(l)}\" and \"${JSON.stringify(r)}\"`);\n }\n // TODO: Proper deduplication\n return union(l, r);\n },\n multipleOf: (a, b) => {\n let factor = 1;\n while (!Number.isInteger(a) || !Number.isInteger(b)) {\n factor *= 10;\n a *= 10;\n b *= 10;\n }\n return lcm(a, b) / factor;\n },\n exclusiveMaximum: Math.min,\n maximum: Math.min,\n maxItems: Math.min,\n maxLength: Math.min,\n maxProperties: Math.min,\n exclusiveMinimum: Math.max,\n minimum: Math.max,\n minItems: Math.max,\n minLength: Math.max,\n minProperties: Math.max,\n uniqueItems: mergeBooleans,\n required: union,\n ...mergers,\n };\n return {\n mergeSchemaDefinitions,\n mergeArrayOfSchemaDefinitions,\n };\n}\n//# sourceMappingURL=merge.js.map","import { transformSchemaDefinition } from \"../transform.js\";\nfunction getAllOfSchemas(schema) {\n const result = [];\n const stack = [schema];\n while (stack.length > 0) {\n const current = stack.pop();\n if (typeof current === \"boolean\" || current.allOf === undefined) {\n result.push(current);\n continue;\n }\n const { allOf, ...rest } = current;\n result.push(rest);\n for (let i = allOf.length - 1; i >= 0; i--) {\n stack.push(allOf[i]);\n }\n }\n return result;\n}\nexport function createShallowAllOfMerge(mergeArrayOfSchemaDefinitions) {\n return (schema) => mergeArrayOfSchemaDefinitions(getAllOfSchemas(schema));\n}\nexport function createDeepAllOfMerge(shallowMerge) {\n return (schemaDef) => transformSchemaDefinition(schemaDef, (def) => {\n if (typeof def === \"boolean\" || def.allOf === undefined) {\n return def;\n }\n return shallowMerge(def);\n });\n}\n//# sourceMappingURL=all-of-merge.js.map","import { $RefParser } from \"@apidevtools/json-schema-ref-parser\";\nimport {\n createComparator,\n createMerger,\n createShallowAllOfMerge,\n} from \"@x0k/json-schema-merge\";\nimport {\n createDeduplicator,\n createIntersector,\n} from \"@x0k/json-schema-merge/lib/array\";\nimport type { JSONSchema7Definition } from \"json-schema\";\nimport type { Processor } from \"../../config/validators/BuildSchema.js\";\nimport type { OpenAPIDocument } from \"../oas/parser/index.js\";\nimport { type RecordAny, traverse } from \"./traverse.js\";\n\nexport const flattenAllOfProcessor: Processor = async ({ schema, file }) => {\n try {\n // Resolve refs once - creates a lookup table without modifying the schema\n const parser = new $RefParser();\n await parser.resolve(schema);\n const $refs = parser.$refs;\n\n const flattened = traverse(schema, (spec) => {\n if (!spec || typeof spec !== \"object\" || Array.isArray(spec)) {\n return spec;\n }\n\n const isSchemaObject =\n \"type\" in spec ||\n \"properties\" in spec ||\n \"allOf\" in spec ||\n \"anyOf\" in spec ||\n \"oneOf\" in spec;\n\n if (!isSchemaObject) return spec;\n\n if (\"allOf\" in spec && Array.isArray(spec.allOf)) {\n const resolvedAllOf = spec.allOf.map((item) => {\n if (\n item &&\n typeof item === \"object\" &&\n \"$ref\" in item &&\n typeof item.$ref === \"string\"\n ) {\n try {\n return $refs.get(item.$ref) ?? item;\n } catch {\n return item;\n }\n }\n return item;\n });\n return flattenAllOf({ ...spec, allOf: resolvedAllOf }) as RecordAny;\n }\n\n return flattenAllOf(spec) as RecordAny;\n }) as OpenAPIDocument;\n\n return flattened;\n } catch (error) {\n // biome-ignore lint/suspicious/noConsole: Logging allowed here\n console.warn(\n `Failed to flatten \\`allOf\\` in ${file}: ${error instanceof Error ? error.message : error}`,\n );\n return schema;\n }\n};\n\nconst { compareSchemaDefinitions, compareSchemaValues } = createComparator();\nconst { mergeArrayOfSchemaDefinitions } = createMerger({\n intersectJson: createIntersector(compareSchemaValues),\n deduplicateJsonSchemaDef: createDeduplicator(compareSchemaDefinitions),\n});\n\nconst shallowAllOfMerge = createShallowAllOfMerge(\n mergeArrayOfSchemaDefinitions,\n);\n\n// Recursively flattens all `allOf` keywords in a JSON Schema object.\nexport const flattenAllOf = (\n schema: JSONSchema7Definition,\n): JSONSchema7Definition => {\n const merged = shallowAllOfMerge(schema);\n\n if (merged == null || typeof merged !== \"object\") {\n return merged;\n }\n\n const { properties, items, additionalProperties } = merged;\n\n if (properties != null && typeof properties === \"object\") {\n for (const [name, sub] of Object.entries(properties)) {\n if (sub && typeof sub === \"object\") {\n properties[name] = flattenAllOf(sub);\n }\n }\n }\n\n if (items != null && typeof items === \"object\") {\n if (Array.isArray(items)) {\n merged.items = items.map((it: JSONSchema7Definition) =>\n it && typeof it === \"object\" ? flattenAllOf(it) : it,\n );\n } else {\n merged.items = flattenAllOf(items);\n }\n }\n\n if (additionalProperties && typeof additionalProperties === \"object\") {\n merged.additionalProperties = flattenAllOf(additionalProperties);\n }\n\n for (const key of [\"anyOf\", \"oneOf\"] as const) {\n const arr = merged[key];\n if (!Array.isArray(arr)) continue;\n merged[key] = arr.map((v) =>\n typeof v === \"object\" && v != null ? flattenAllOf(v) : v,\n );\n }\n\n return merged;\n};\n","import type { JSONSchema } from \"./index.js\";\n\nconst cache = new Map<JSONSchema, Map<string, unknown>>();\n\n/**\n * Resolves a $ref pointer in a schema and returns the referenced value.\n */\nexport const resolveLocalRef = (schema: JSONSchema, ref: string): unknown => {\n if (!cache.has(schema)) {\n cache.set(schema, new Map<string, unknown>());\n }\n const schemaCache = cache.get(schema);\n\n if (schemaCache?.has(ref)) {\n return schemaCache.get(ref);\n }\n\n const path = ref.split(\"/\").slice(1);\n\n // biome-ignore lint/suspicious/noExplicitAny: Allow any type\n let current: any = schema;\n for (const segment of path) {\n if (!current || typeof current !== \"object\") {\n // we've reached a dead end\n current = null;\n }\n current = current[segment] ?? null;\n }\n\n schemaCache?.set(ref, current);\n return current;\n};\n","import type { JSONSchema4, JSONSchema6 } from \"json-schema\";\nimport { CIRCULAR_REF } from \"../../graphql/circular.js\";\nimport { resolveLocalRef } from \"./resolveRef.js\";\n\nexport type JSONSchema = JSONSchema4 | JSONSchema6;\n\ntype CustomResolver = (ref: string) => Promise<JSONSchema | undefined>;\n\nconst cache = new Map<JSONSchema, JSONSchema>();\n\n// biome-ignore lint/suspicious/noExplicitAny: Allow any type\nconst isIndexableObject = (obj: any): obj is Record<string, any> =>\n obj !== null && typeof obj === \"object\";\n\n// Taken and inspired from `dereference-json-schema` package.\nexport const dereference = async (\n schema: JSONSchema,\n resolvers: CustomResolver[] = [],\n) => {\n if (cache.has(schema)) {\n // biome-ignore lint/style/noNonNullAssertion: Cache is guaranteed to have a value\n return cache.get(schema)!;\n }\n\n const cloned = structuredClone(schema);\n const visited = new Set<unknown>();\n\n const resolve = async (current: unknown, path: string) => {\n if (isIndexableObject(current)) {\n if (visited.has(current)) {\n return CIRCULAR_REF;\n }\n\n visited.add(current);\n\n if (Array.isArray(current)) {\n for (let index = 0; index < current.length; index++) {\n current[index] = await resolve(current[index], `${path}/${index}`);\n }\n } else {\n if (\"$ref\" in current && typeof current.$ref === \"string\") {\n // Store the ref path before resolving\n current.__$ref = current.$ref;\n for (const resolver of resolvers) {\n const resolved = await resolver(current.$ref);\n if (resolved) return await resolve(resolved, path);\n }\n const resolved = await resolveLocalRef(cloned, current.$ref);\n return await resolve(resolved, path);\n }\n\n for (const key in current) {\n current[key] = await resolve(current[key], `${path}/${key}`);\n }\n }\n\n visited.delete(current);\n }\n\n return current;\n };\n\n const result = (await resolve(cloned, \"#\")) as JSONSchema;\n cache.set(schema, result);\n return result;\n};\n","import { type RecordAny, traverse } from \"../../../util/traverse.js\";\nimport type { OpenAPIDocument } from \"../index.js\";\n/**\n * Upgrade from OpenAPI 3.0.x to 3.1.0\n *\n * Taken from https://github.com/scalar/openapi-parser/blob/main/packages/openapi-parser/src/utils/upgradeFromThreeToThreeOne.ts\n * https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0\n */\n\nexport const upgradeSchema = (schema: RecordAny): OpenAPIDocument => {\n if (schema.openapi?.startsWith(\"3.0\")) {\n schema.openapi = \"3.1.1\";\n }\n\n schema = traverse(schema, (sub) => {\n if (typeof sub.type !== \"undefined\" && sub.nullable === true) {\n sub.type = [\"null\", sub.type];\n delete sub.nullable;\n }\n\n return sub;\n });\n\n schema = traverse(schema, (sub) => {\n if (sub.exclusiveMinimum === true) {\n sub.exclusiveMinimum = sub.minimum;\n delete sub.minimum;\n } else if (sub.exclusiveMinimum === false) {\n delete sub.exclusiveMinimum;\n }\n\n if (sub.exclusiveMaximum === true) {\n sub.exclusiveMaximum = sub.maximum;\n delete sub.maximum;\n } else if (sub.exclusiveMaximum === false) {\n delete sub.exclusiveMaximum;\n }\n\n return sub;\n });\n\n schema = traverse(schema, (sub, path) => {\n if (sub.example !== undefined) {\n // Arrays in schemas\n if (isSchemaPath(path ?? [])) {\n sub.examples = [sub.example];\n } else {\n // Objects everywhere else\n sub.examples = {\n default: {\n value: sub.example,\n },\n };\n }\n delete sub.example;\n }\n return sub;\n });\n\n // Multipart file uploads with a binary file\n schema = traverse(schema, (schema, path) => {\n if (schema.type === \"object\" && schema.properties !== undefined) {\n // Check if this is a multipart request body schema\n const parentPath = path?.slice(0, -1);\n const isMultipart = parentPath?.some((segment, index) => {\n return (\n segment === \"content\" && path?.[index + 1] === \"multipart/form-data\"\n );\n });\n\n if (isMultipart) {\n // Types\n // biome-ignore lint/suspicious/noExplicitAny: Allow any type\n const entries: [string, any][] = Object.entries(schema.properties);\n\n for (const [, value] of entries) {\n if (\n typeof value === \"object\" &&\n value.type === \"string\" &&\n value.format === \"binary\"\n ) {\n value.contentMediaType = \"application/octet-stream\";\n delete value.format;\n }\n }\n }\n }\n\n return schema;\n });\n\n // Uploading a binary file in a POST request\n schema = traverse(schema, (schema, path) => {\n if (\n path?.includes(\"content\") &&\n path.includes(\"application/octet-stream\")\n ) {\n return {};\n }\n\n if (schema.type === \"string\" && schema.format === \"binary\") {\n return {\n type: \"string\",\n contentMediaType: \"application/octet-stream\",\n };\n }\n\n return schema;\n });\n\n schema = traverse(schema, (sub) => {\n if (sub.type === \"string\" && sub.format === \"binary\") {\n // biome-ignore lint/suspicious/noExplicitAny: Allow any type\n return undefined as any;\n }\n\n return sub;\n });\n\n // Uploading an image with base64 encoding\n schema = traverse(schema, (sub) => {\n if (sub.type === \"string\" && sub.format === \"base64\") {\n return {\n type: \"string\",\n contentEncoding: \"base64\",\n };\n }\n\n return sub;\n });\n\n schema = traverse(schema, (schema, path) => {\n if (schema.type === \"string\" && schema.format === \"byte\") {\n const parentPath = path?.slice(0, -1);\n const contentMediaType = parentPath?.find(\n (_, index) => path?.[index - 1] === \"content\",\n );\n\n return {\n type: \"string\",\n contentEncoding: \"base64\",\n contentMediaType,\n };\n }\n\n return schema;\n });\n\n return schema as OpenAPIDocument;\n};\n\nexport function isSchemaPath(path: string[]): boolean {\n const schemaLocations = [\n [\"components\", \"schemas\"],\n \"properties\",\n \"items\",\n \"allOf\",\n \"anyOf\",\n \"oneOf\",\n \"not\",\n \"additionalProperties\",\n ];\n\n return (\n schemaLocations.some((location) => {\n if (Array.isArray(location)) {\n return location.every((segment, index) => path[index] === segment);\n }\n return path.includes(location);\n }) ||\n path.includes(\"schema\") ||\n path.some((segment) => segment.endsWith(\"Schema\"))\n );\n}\n","import { GraphQLError } from \"graphql/error/index.js\";\nimport { OpenAPIV3, type OpenAPIV3_1 } from \"openapi-types\";\nimport { flattenAllOfProcessor } from \"../../util/flattenAllOf.js\";\nimport { dereference, type JSONSchema } from \"./dereference/index.js\";\nimport { upgradeSchema } from \"./upgrade/index.js\";\n\n// Must be an interface (not a type) to allow merging with OpenAPI types with index signatures\ninterface WithRef {\n __$ref?: string;\n}\n\ntype DeepOmitReference<T> = T extends OpenAPIV3_1.ReferenceObject\n ? never\n : T extends object\n ? { [K in keyof T]: DeepOmitReference<T[K]> } & WithRef\n : T;\n\nexport type OpenAPIDocument = DeepOmitReference<OpenAPIV3_1.Document>;\nexport type ResponseObject = DeepOmitReference<OpenAPIV3_1.ResponseObject>;\nexport type OperationObject = DeepOmitReference<OpenAPIV3_1.OperationObject>;\nexport type PathsObject = DeepOmitReference<OpenAPIV3_1.PathsObject>;\nexport type PathItemObject = DeepOmitReference<OpenAPIV3_1.PathItemObject>;\nexport type ParameterObject = DeepOmitReference<OpenAPIV3_1.ParameterObject>;\nexport type TagObject = DeepOmitReference<OpenAPIV3_1.TagObject>;\nexport type ExampleObject = DeepOmitReference<OpenAPIV3_1.ExampleObject>;\nexport type EncodingObject = DeepOmitReference<OpenAPIV3_1.EncodingObject>;\nexport type SchemaObject = DeepOmitReference<OpenAPIV3_1.SchemaObject>;\nexport type ArraySchemaObject =\n DeepOmitReference<OpenAPIV3_1.ArraySchemaObject>;\nexport type ServerObject = DeepOmitReference<OpenAPIV3_1.ServerObject>;\n\nexport const HttpMethods = Object.values(OpenAPIV3.HttpMethods);\n\nconst parseSchemaInput = async (\n schemaInput: unknown,\n): Promise<JSONSchema & { openapi?: string }> => {\n if (typeof schemaInput === \"string\") {\n if (schemaInput.trim().startsWith(\"{\")) {\n try {\n return JSON.parse(schemaInput);\n } catch (err) {\n throw new GraphQLError(\"Invalid JSON schema\", {\n originalError: err,\n });\n }\n }\n if (schemaInput.includes(\"://\")) {\n let response: Response;\n try {\n response = await fetch(schemaInput, {\n cache: \"force-cache\",\n });\n } catch (err) {\n throw new GraphQLError(\"Failed to fetch schema\", {\n originalError: err,\n });\n }\n\n if (!response.ok) {\n throw new GraphQLError(\n `Failed to fetch schema: ${response.statusText}`,\n );\n }\n\n const schemaText = await response.text();\n\n try {\n if (schemaText.trim().startsWith(\"{\")) {\n return JSON.parse(schemaText) as JSONSchema;\n } else {\n const yaml = await import(\"yaml\");\n return yaml.parse(schemaText) as JSONSchema;\n }\n } catch (err) {\n throw new GraphQLError(\"Fetched invalid schema\", {\n originalError: err,\n });\n }\n }\n const yaml = await import(\"yaml\");\n const parsed = yaml.parse(schemaInput);\n\n if (typeof parsed === \"object\") return parsed;\n }\n\n if (typeof schemaInput === \"object\") return schemaInput as JSONSchema;\n\n throw new GraphQLError(`Unsupported schema input: ${schemaInput}`);\n};\n\n/**\n * Validates, dereferences and upgrades the OpenAPI schema (to v3.1) if necessary.\n *\n * This only happens for URL schemas (or in standalone mode).\n * File schemas are pre-processed by the SchemaManager\n */\nexport const validate = async (schemaInput: unknown) => {\n const schema = await parseSchemaInput(schemaInput);\n\n if (!schema.openapi) {\n throw new GraphQLError(\"OpenAPI version is not defined\");\n }\n\n const dereferenced = await dereference(schema);\n const upgraded = upgradeSchema(dereferenced);\n\n const flattened = await flattenAllOfProcessor({\n schema: upgraded,\n file: \"schema.json\",\n dereference: async (schema) => schema,\n });\n\n return flattened;\n};\n","// biome-ignore-all lint/suspicious/noExplicitAny: Allow any type\nimport SchemaBuilder from \"@pothos/core\";\nimport {\n type CountableSlugify,\n slugifyWithCounter,\n} from \"@sindresorhus/slugify\";\nimport { GraphQLJSON, GraphQLJSONObject } from \"graphql-type-json\";\nimport { createYoga, type YogaServerOptions } from \"graphql-yoga\";\nimport {\n type EncodingObject,\n type ExampleObject,\n HttpMethods,\n type OpenAPIDocument,\n type OperationObject,\n type ParameterObject,\n type PathsObject,\n type SchemaObject,\n type ServerObject,\n type TagObject,\n validate,\n} from \"../parser/index.js\";\nimport { GraphQLJSONSchema } from \"./circular.js\";\n\nexport type {\n EncodingObject,\n ExampleObject,\n OpenAPIDocument,\n OperationObject,\n ParameterObject,\n PathsObject,\n SchemaObject,\n TagObject,\n};\n\ntype OperationLike = {\n summary?: string | null;\n operationId?: string | null;\n path: string;\n method: string;\n};\n\nexport const createOperationSlug = (\n slugify: CountableSlugify,\n operation: OperationLike,\n) => {\n const summary =\n operation.summary ||\n operation.operationId ||\n `${operation.method}-${operation.path}`;\n\n return slugify(summary);\n};\n\nexport type SchemaImport = () => Promise<{\n schema: OpenAPIDocument;\n slugs: ReturnType<typeof getAllSlugs>;\n}>;\n\nexport type SchemaImports = Record<string, SchemaImport>;\n\ntype Context = {\n schema: OpenAPIDocument;\n operations: GraphQLOperationObject[];\n schemaImports?: SchemaImports;\n tags: ReturnType<typeof getAllTags>;\n slugs: ReturnType<typeof getAllSlugs>;\n};\n\nconst builder = new SchemaBuilder<{\n DefaultFieldNullability: false;\n Scalars: {\n JSON: any;\n JSONObject: any;\n JSONSchema: any;\n };\n Context: Context;\n}>({\n defaultFieldNullability: false,\n});\n\ntype GraphQLOperationObject = OperationObject & {\n path: string;\n method: string;\n slug?: string;\n parentTag?: string;\n};\n\nconst JSONScalar = builder.addScalarType(\"JSON\", GraphQLJSON);\nconst JSONObjectScalar = builder.addScalarType(\"JSONObject\", GraphQLJSONObject);\nconst JSONSchemaScalar = builder.addScalarType(\"JSONSchema\", GraphQLJSONSchema);\n\nconst resolveExtensions = (obj: Record<string, any>) =>\n Object.fromEntries(\n Object.entries(obj).filter(([key]) => key.startsWith(\"x-\")),\n );\n\nexport const getAllTags = (\n schema: OpenAPIDocument,\n slugs: ReturnType<typeof getAllSlugs>[\"tags\"],\n): Array<Omit<TagObject, \"name\"> & { name?: string; slug?: string }> => {\n const rootTags = schema.tags ?? [];\n const operationTags = new Set(\n Object.values(schema.paths ?? {})\n .flatMap((path) => Object.values(path ?? {}))\n .flatMap((op) => (op as OperationObject).tags ?? []),\n );\n\n const hasUntaggedOperations = Object.values(schema.paths ?? {}).some((path) =>\n Object.values(path ?? {}).some(\n (op) => !(op as OperationObject).tags?.length,\n ),\n );\n\n const result = [\n // Keep root tags that are actually used in operations\n ...rootTags\n .filter((tag) => operationTags.has(tag.name))\n .map((tag) => ({ ...tag, slug: slugs[tag.name] })),\n // Add tags found in operations but not defined in root tags\n ...Array.from(operationTags)\n .filter((tag) => !rootTags.some((rt) => rt.name === tag))\n .map((tag) => ({ name: tag, slug: slugs[tag] })),\n // Add untagged operations if there are any\n ...(hasUntaggedOperations ? [{ name: undefined, slug: undefined }] : []),\n ];\n\n // Apply x-tagGroups ordering if present\n const tagGroups = (schema as any)[\"x-tagGroups\"] ?? [];\n\n if (tagGroups.length === 0) return result;\n\n const groupOrder = tagGroups.flatMap((group: any) => group.tags);\n return result.sort((a, b) => {\n if (!a.name || !b.name) return 0; // Keep untagged at end\n const indexA = groupOrder.indexOf(a.name);\n const indexB = groupOrder.indexOf(b.name);\n if (indexA === -1 && indexB === -1) return 0; // Keep original order for ungrouped\n if (indexA === -1) return 1; // Ungrouped after grouped\n if (indexB === -1) return -1; // Grouped before ungrouped\n return indexA - indexB;\n });\n};\n\nexport const getAllSlugs = (\n ops: GraphQLOperationObject[],\n schemaTags: TagObject[] = [],\n) => {\n const slugify = slugifyWithCounter();\n\n const tags = Array.from(\n new Set([\n ...ops.flatMap((op) => op.tags ?? []),\n ...schemaTags.map((tag) => tag.name),\n ]),\n );\n\n return {\n operations: Object.fromEntries(\n ops.map((op) => [\n getOperationSlugKey(op),\n createOperationSlug(slugify, op),\n ]),\n ),\n tags: Object.fromEntries(tags.map((tag) => [tag, slugify(tag)])),\n };\n};\n\nconst getOperationSlugKey = (op: GraphQLOperationObject) =>\n [op.path, op.method, op.operationId, op.summary].filter(Boolean).join(\"-\");\n\nexport const getAllOperations = (\n paths?: PathsObject,\n): GraphQLOperationObject[] => {\n const operations = Object.entries(paths ?? {}).flatMap(([path, value]) =>\n HttpMethods.flatMap((method) => {\n if (!value?.[method]) return [];\n\n const operation = value[method] as OperationObject;\n const pathParameters = value.parameters ?? [];\n const operationParameters = operation.parameters ?? [];\n\n // parameters are inherited from the parent path object,\n // but can be overridden by their `name` and `in` location\n const parameters = [\n ...pathParameters.filter(\n // remove path parameters that are already defined in the operation\n (pp) =>\n !operationParameters.some(\n (op) => op.name === pp.name && op.in === pp.in,\n ),\n ),\n ...operationParameters,\n ];\n\n // servers follow the OpenAPI 3.0 resolution hierarchy:\n // 1. Operation-level servers (highest precedence)\n // 2. Path-level servers\n // 3. Global servers (handled at query time, lowest precedence)\n const pathServers = value.servers ?? [];\n const operationServers = operation.servers ?? [];\n const servers =\n operationServers.length > 0 ? operationServers : pathServers;\n\n return {\n ...operation,\n method,\n path,\n parameters,\n servers,\n tags: operation.tags ?? [],\n } satisfies GraphQLOperationObject;\n }),\n );\n\n return operations;\n};\n\nconst SchemaTag = builder.objectRef<\n Omit<TagObject, \"name\"> & { name?: string; slug?: string }\n>(\"SchemaTag\");\n\nSchemaTag.implement({\n fields: (t) => ({\n name: t.exposeString(\"name\", { nullable: true }),\n slug: t.exposeString(\"slug\", { nullable: true }),\n isUntagged: t.field({ type: \"Boolean\", resolve: (parent) => !parent.name }),\n description: t.exposeString(\"description\", { nullable: true }),\n operations: t.field({\n type: [OperationItem],\n resolve: (parent, _args, ctx) => {\n const rootTags = ctx.tags.map((tag) => tag.name);\n\n return ctx.operations\n .filter((item) =>\n parent.name\n ? item.tags?.includes(parent.name)\n : item.tags?.length === 0 ||\n // If none of the tags are present in the root tags, then show them here\n item.tags?.every((tag) => !rootTags.includes(tag)),\n )\n .map((item) => ({ ...item, parentTag: parent.name }));\n },\n }),\n prev: t.field({\n type: SchemaTag,\n nullable: true,\n resolve: (parent, _args, ctx) => {\n const index = ctx.tags.findIndex((tag) => tag.slug === parent.slug);\n return ctx.tags[index - 1];\n },\n }),\n next: t.field({\n type: SchemaTag,\n nullable: true,\n resolve: (parent, _args, ctx) => {\n const index = ctx.tags.findIndex((tag) => tag.slug === parent.slug);\n return ctx.tags[index + 1];\n },\n }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (parent) => resolveExtensions(parent),\n nullable: true,\n }),\n }),\n});\n\nconst ServerItem = builder.objectRef<ServerObject>(\"Server\").implement({\n fields: (t) => ({\n url: t.exposeString(\"url\"),\n description: t.exposeString(\"description\", { nullable: true }),\n }),\n});\n\nconst PathItem = builder\n .objectRef<{\n path: string;\n methods: typeof HttpMethods;\n }>(\"PathItem\")\n .implement({\n fields: (t) => ({\n path: t.exposeString(\"path\"),\n methods: t.exposeStringList(\"methods\"),\n }),\n });\n\nconst TagItem = builder.objectRef<TagObject>(\"TagItem\").implement({\n fields: (t) => ({\n name: t.exposeString(\"name\"),\n description: t.exposeString(\"description\", { nullable: true }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (parent) => resolveExtensions(parent),\n nullable: true,\n }),\n }),\n});\n\nconst EncodingItem = builder\n .objectRef<EncodingObject & { name: string }>(\"EncodingItem\")\n .implement({\n fields: (t) => ({\n name: t.exposeString(\"name\"),\n contentType: t.exposeString(\"contentType\", { nullable: true }),\n headers: t.expose(\"headers\", { type: JSONObjectScalar, nullable: true }),\n style: t.exposeString(\"style\", { nullable: true }),\n explode: t.exposeBoolean(\"explode\", { nullable: true }),\n allowReserved: t.exposeBoolean(\"allowReserved\", { nullable: true }),\n }),\n });\n\nconst ExampleItem = builder\n .objectRef<ExampleObject & { name: string }>(\"ExampleItem\")\n .implement({\n fields: (t) => ({\n name: t.exposeString(\"name\"),\n summary: t.exposeString(\"summary\", { nullable: true }),\n description: t.exposeString(\"description\", { nullable: true }),\n value: t.expose(\"value\", { type: JSONScalar, nullable: true }),\n externalValue: t.exposeString(\"externalValue\", { nullable: true }),\n }),\n });\n\nconst ParameterIn = builder.enumType(\"ParameterIn\", {\n values: [\"query\", \"header\", \"path\", \"cookie\"] as const,\n});\n\nconst ParameterItem = builder\n .objectRef<ParameterObject>(\"ParameterItem\")\n .implement({\n fields: (t) => ({\n name: t.exposeString(\"name\"),\n in: t.field({\n type: ParameterIn,\n resolve: (parent) => parent.in as typeof ParameterIn.$inferType,\n }),\n description: t.exposeString(\"description\", { nullable: true }),\n required: t.exposeBoolean(\"required\", { nullable: true }),\n deprecated: t.exposeBoolean(\"deprecated\", { nullable: true }),\n allowEmptyValue: t.exposeBoolean(\"allowEmptyValue\", { nullable: true }),\n style: t.exposeString(\"style\", { nullable: true }),\n explode: t.exposeBoolean(\"explode\", { nullable: true }),\n allowReserved: t.exposeBoolean(\"allowReserved\", { nullable: true }),\n examples: t.field({\n type: [ExampleItem],\n resolve: (parent) =>\n Object.entries(parent.examples ?? {}).map(([name, value]) => ({\n name,\n ...(typeof value === \"string\" ? { value } : value),\n })),\n nullable: true,\n }),\n schema: t.expose(\"schema\", { type: JSONSchemaScalar, nullable: true }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (parent) => resolveExtensions(parent),\n nullable: true,\n }),\n }),\n });\n\nconst MediaTypeItem = builder\n .objectRef<{\n mediaType: string;\n schema: any;\n examples: Array<ExampleObject & { name: string }>;\n encoding?: Array<EncodingObject & { name: string }>;\n }>(\"MediaTypeObject\")\n .implement({\n fields: (t) => ({\n mediaType: t.exposeString(\"mediaType\"),\n schema: t.expose(\"schema\", { type: JSONSchemaScalar, nullable: true }),\n examples: t.expose(\"examples\", { type: [ExampleItem], nullable: true }),\n encoding: t.expose(\"encoding\", { type: [EncodingItem], nullable: true }),\n }),\n });\n\nconst RequestBodyObject = builder\n .objectRef<{\n description?: string;\n required?: boolean;\n content: Array<{\n mediaType: string;\n schema: any;\n examples: Array<ExampleObject & { name: string }>;\n encoding?: Array<EncodingObject & { name: string }>;\n }>;\n }>(\"RequestBodyObject\")\n .implement({\n fields: (t) => ({\n description: t.exposeString(\"description\", { nullable: true }),\n content: t.expose(\"content\", { type: [MediaTypeItem], nullable: true }),\n required: t.exposeBoolean(\"required\", { nullable: true }),\n }),\n });\n\nconst ResponseItem = builder\n .objectRef<{\n statusCode: string;\n description?: string;\n content: Array<{\n mediaType: string;\n schema: any;\n examples: Array<ExampleObject & { name: string }>;\n }>;\n headers?: any;\n links?: any;\n }>(\"ResponseItem\")\n .implement({\n fields: (t) => ({\n statusCode: t.exposeString(\"statusCode\"),\n description: t.exposeString(\"description\", { nullable: true }),\n content: t.expose(\"content\", { type: [MediaTypeItem], nullable: true }),\n headers: t.expose(\"headers\", { type: JSONScalar, nullable: true }),\n links: t.expose(\"links\", { type: JSONScalar, nullable: true }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (parent) => resolveExtensions(parent),\n nullable: true,\n }),\n }),\n });\n\nconst OperationItem = builder\n .objectRef<GraphQLOperationObject>(\"OperationItem\")\n .implement({\n fields: (t) => ({\n slug: t.field({\n type: \"String\",\n resolve: (parent, _, ctx) => {\n const slug = ctx.slugs.operations[getOperationSlugKey(parent)];\n\n if (!slug) {\n throw new Error(\n `No slug found for operation: ${getOperationSlugKey(parent)}`,\n );\n }\n return slug;\n },\n }),\n path: t.exposeString(\"path\"),\n method: t.exposeString(\"method\"),\n operationId: t.exposeString(\"operationId\", { nullable: true }),\n summary: t.exposeString(\"summary\", { nullable: true }),\n description: t.exposeString(\"description\", { nullable: true }),\n contentTypes: t.stringList({\n resolve: (parent) => Object.keys(parent.requestBody?.content ?? {}),\n }),\n parameters: t.expose(\"parameters\", {\n type: [ParameterItem],\n nullable: true,\n }),\n servers: t.field({\n type: [ServerItem],\n resolve: (parent, _, ctx) => {\n // Return operation/path-level servers if defined, otherwise fall back to global servers\n return parent.servers && parent.servers.length > 0\n ? parent.servers\n : (ctx.schema.servers ?? []);\n },\n }),\n requestBody: t.field({\n type: RequestBodyObject,\n resolve: (parent) => ({\n description: parent.requestBody?.description,\n required: parent.requestBody?.required,\n content: Object.entries(parent.requestBody?.content ?? {}).map(\n ([mediaType, content]) => ({\n mediaType,\n schema: content.schema,\n examples: content.examples\n ? Object.entries(content.examples).map(([name, value]) => ({\n name,\n ...(typeof value === \"string\" ? { value } : value),\n }))\n : [],\n encoding: Object.entries(content.encoding ?? {}).map(\n ([name, value]) => ({ name, ...value }),\n ),\n }),\n ),\n }),\n nullable: true,\n }),\n responses: t.field({\n type: [ResponseItem],\n resolve: (parent) => {\n return Object.entries(parent.responses ?? {}).map(\n ([statusCode, response]) => ({\n statusCode,\n description: response.description,\n content: Object.entries(response.content ?? {}).map(\n ([mediaType, { schema, examples }]) => ({\n mediaType,\n schema,\n examples: examples\n ? Object.entries(examples).map(([name, value]) => ({\n name,\n ...(typeof value === \"string\" ? { value } : value),\n }))\n : [],\n }),\n ),\n headers: response.headers,\n links: response.links,\n }),\n );\n },\n }),\n tags: t.field({\n type: [TagItem],\n resolve: (parent, _, ctx) =>\n parent.tags?.map((tag) => ({\n name: tag,\n description: ctx.schema.tags?.find((t) => t.name === tag)\n ?.description,\n })),\n nullable: true,\n }),\n deprecated: t.exposeBoolean(\"deprecated\", { nullable: true }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (parent) => resolveExtensions(parent),\n nullable: true,\n }),\n }),\n });\n\nconst SchemaItem = builder\n .objectRef<{\n name: string;\n schema: SchemaObject;\n extensions?: Record<string, any>;\n }>(\"SchemaItem\")\n .implement({\n fields: (t) => ({\n name: t.exposeString(\"name\"),\n schema: t.expose(\"schema\", { type: JSONSchemaScalar }),\n extensions: t.expose(\"extensions\", {\n type: JSONObjectScalar,\n nullable: true,\n }),\n }),\n });\n\nconst Components = builder.objectRef<{\n schemas?: Record<string, SchemaObject>;\n}>(\"Components\");\n\nComponents.implement({\n fields: (t) => ({\n schemas: t.field({\n type: [SchemaItem],\n resolve: (parent) => {\n return Object.entries(parent.schemas ?? {}).map(([name, schema]) => ({\n name,\n schema,\n extensions: resolveExtensions(schema),\n }));\n },\n nullable: true,\n }),\n }),\n});\n\nconst Schema = builder.objectRef<OpenAPIDocument>(\"Schema\").implement({\n fields: (t) => ({\n openapi: t.string({ resolve: (root) => root.openapi }),\n url: t.string({\n resolve: (root) => root.servers?.at(0)?.url,\n nullable: true,\n }),\n servers: t.field({\n type: [ServerItem],\n resolve: (root) => root.servers ?? [],\n }),\n title: t.string({ resolve: (root) => root.info.title }),\n version: t.string({ resolve: (root) => root.info.version }),\n description: t.string({\n resolve: (root) => root.info.description,\n nullable: true,\n }),\n summary: t.string({\n resolve: (root) => root.info.summary,\n nullable: true,\n }),\n paths: t.field({\n type: [PathItem],\n resolve: (root) =>\n Object.entries(root.paths ?? {}).map(([path, value]) => ({\n path,\n // biome-ignore lint/style/noNonNullAssertion: value is guaranteed to be defined\n methods: Object.keys(value!) as typeof HttpMethods,\n })),\n }),\n tag: t.field({\n type: SchemaTag,\n args: {\n slug: t.arg.string(),\n name: t.arg.string(),\n untagged: t.arg.boolean(),\n },\n nullable: true,\n resolve: (_, args, ctx) => {\n if (args.untagged) {\n return ctx.tags.find((tag) => tag.name === undefined);\n }\n if (args.slug) {\n return ctx.tags.find((tag) => tag.slug === args.slug);\n }\n if (args.name) {\n return ctx.tags.find((tag) => tag.name === args.name);\n }\n },\n }),\n tags: t.field({\n type: [SchemaTag],\n resolve: (_root, _args, ctx) => ctx.tags,\n }),\n operations: t.field({\n type: [OperationItem],\n args: {\n path: t.arg.string(),\n method: t.arg.string(),\n operationId: t.arg.string(),\n tag: t.arg.string(),\n untagged: t.arg.boolean(),\n },\n resolve: (_parent, args, ctx) =>\n ctx.operations.filter((op) => {\n return (\n (!args.operationId || op.operationId === args.operationId) &&\n (!args.path || op.path === args.path) &&\n (!args.method || op.method === args.method) &&\n (!args.tag || op.tags?.some((tag) => args.tag?.includes(tag))) &&\n (!args.untagged || (op.tags ?? []).length === 0)\n );\n }),\n }),\n components: t.field({\n type: Components,\n resolve: (root) => root.components,\n nullable: true,\n }),\n extensions: t.field({\n type: JSONObjectScalar,\n resolve: (root) => resolveExtensions(root),\n nullable: true,\n }),\n }),\n});\n\nconst SchemaSource = builder.enumType(\"SchemaType\", {\n values: [\"url\", \"file\", \"raw\"] as const,\n});\n\nbuilder.queryType({\n fields: (t) => ({\n schema: t.field({\n type: Schema,\n args: {\n type: t.arg({ type: SchemaSource, required: true }),\n input: t.arg({ type: JSONScalar, required: true }),\n },\n resolve: async (_parent, args, ctx) => {\n if (args.type === \"file\" && typeof args.input === \"string\") {\n const loadSchema = ctx.schemaImports?.[args.input];\n\n if (!loadSchema) {\n throw new Error(`No schema loader found for path: ${args.input}`);\n }\n const { schema, slugs } = await loadSchema();\n ctx.schema = schema;\n ctx.operations = getAllOperations(schema.paths);\n ctx.slugs = slugs;\n ctx.tags = getAllTags(schema, ctx.slugs.tags);\n } else {\n ctx.schema = await validate(args.input as string);\n ctx.operations = getAllOperations(ctx.schema.paths);\n ctx.slugs = getAllSlugs(ctx.operations);\n ctx.tags = getAllTags(ctx.schema, ctx.slugs.tags);\n }\n\n return ctx.schema;\n },\n }),\n }),\n});\n\nexport const schema = builder.toSchema();\n\nexport const createGraphQLServer = (\n options?: Omit<YogaServerOptions<any, any>, \"schema\">,\n) => createYoga({ schema, batching: true, ...options });\n","import { useLogger } from \"@envelop/core\";\nimport { createGraphQLServer } from \"../../../oas/graphql/index.js\";\nimport type { OpenApiPluginOptions } from \"../index.js\";\n\nconst map = new Map<string, number>();\n\n/**\n * Creates the GraphQL server\n */\nexport const createServer = (config: OpenApiPluginOptions) =>\n createGraphQLServer({\n context: {\n schemaImports: config.schemaImports,\n },\n plugins: [\n useLogger({\n logFn: (eventName, { args }) => {\n if (import.meta.env.PROD) return;\n\n if (eventName.endsWith(\"-start\")) {\n map.set(`${eventName}-${args.operationName}`, performance.now());\n } else if (eventName.endsWith(\"-end\")) {\n const startEvent = eventName.replace(\"-end\", \"-start\");\n const start = map.get(`${startEvent}-${args.operationName}`);\n if (start) {\n // biome-ignore lint/suspicious/noConsole: Logging allowed here\n console.log(\n `[zudoku:debug] ${args.operationName} query took ${performance.now() - start}ms`,\n );\n map.delete(`${startEvent}-${args.operationName}`);\n }\n }\n },\n }),\n ],\n });\n\nexport type LocalServer = ReturnType<typeof createServer>;\n"],"names":["versionInfo","isPromise","value","DirectiveLocation","parse","source","options","parser","Parser","document","lexer","_options","sourceObj","isSource","Source","Lexer","token","TokenKind","Kind","hasDescription","keywordToken","syntaxError","start","OperationTypeNode","description","operation","name","operationToken","nameOrAlias","alias","isConst","item","hasTypeCondition","varName","directives","type","innerType","operationTypes","interfaces","fields","args","defaultValue","types","values","getTokenDesc","repeatable","locations","ofDirective","memberName","argumentName","startToken","node","Location","kind","getTokenKindDesc","atToken","openKind","parseFn","closeKind","nodes","delimiterKind","maxTokens","isPunctuatorTokenKind","isEqualType","typeA","typeB","isNonNullType","isListType","isTypeSubTypeOf","schema","maybeSubType","superType","isAbstractType","isInterfaceType","isObjectType","doTypesOverlap","GRAPHQL_MAX_INT","GRAPHQL_MIN_INT","GraphQLInt","GraphQLScalarType","outputValue","coercedValue","serializeObject","num","GraphQLError","inspect","inputValue","valueNode","print","GraphQLFloat","GraphQLString","GraphQLBoolean","GraphQLID","specifiedScalarTypes","isObjectLike","valueOfResult","isDirective","directive","instanceOf","GraphQLDirective","config","_config$isRepeatable","_config$args","assertName","toObjMap","devAssert","defineArguments","argsToArgsConfig","GraphQLIncludeDirective","GraphQLNonNull","GraphQLSkipDirective","DEFAULT_DEPRECATION_REASON","GraphQLDeprecatedDirective","GraphQLSpecifiedByDirective","GraphQLOneOfDirective","specifiedDirectives","isIterableObject","maybeIterable","astFromValue","astValue","itemType","valuesNodes","itemNode","isInputObjectType","fieldNodes","field","fieldValue","isLeafType","serialized","stringNum","integerStringRegExp","isEnumType","invariant","__Schema","GraphQLObjectType","GraphQLList","__Type","__Directive","__DirectiveLocation","__InputValue","includeDeprecated","arg","GraphQLEnumType","__TypeKind","isScalarType","TypeKind","isUnionType","obj","__Field","_args","_context","__EnumValue","valueAST","enumValue","SchemaMetaFieldDef","_source","TypeMetaFieldDef","TypeNameMetaFieldDef","parentType","introspectionTypes","isIntrospectionType","isSchema","GraphQLSchema","assertSchema","_config$extensionASTN","_config$directives","allReferencedTypes","collectReferencedTypes","namedType","typeName","iface","implementations","abstractType","interfaceType","map","typeSet","getNamedType","memberType","validateSchema","context","SchemaValidationContext","validateRootTypes","validateDirectives","validateTypes","errors","assertValidSchema","error","message","_nodes","queryType","_getOperationTypeNode","getOperationTypeNode","mutationType","_getOperationTypeNode2","subscriptionType","_getOperationTypeNode3","_flatMap$find","schemaNode","_schemaNode$operation","operationNode","validateName","isInputType","isRequiredArgument","_arg$astNode","getDeprecatedDirectiveNode","validateInputObjectCircularRefs","createInputObjectCircularRefsValidator","typeMap","isNamedType","validateFields","validateInterfaces","validateUnionMembers","validateEnumValues","validateInputFields","isOutputType","_field$astNode","argName","_arg$astNode2","_arg$astNode3","ifaceTypeNames","getAllImplementsInterfaceNodes","validateTypeImplementsAncestors","validateTypeImplementsInterface","typeFieldMap","ifaceField","fieldName","typeField","_ifaceField$astNode","_typeField$astNode","ifaceArg","typeArg","_ifaceArg$astNode","_typeArg$astNode","ifaceInterfaces","transitive","union","memberTypes","includedTypeNames","getUnionMemberTypeNodes","enumType","enumValues","inputObj","_field$astNode2","isRequiredInputField","_field$astNode3","validateOneOfInputObjectField","_field$astNode4","visitedTypes","fieldPath","fieldPathIndexByTypeName","detectCycleRecursive","fieldType","cycleIndex","cyclePath","pathStr","fieldObj","astNode","extensionASTNodes","typeNode","_typeNode$interfaces","ifaceNode","unionNode","_unionNode$types","definitionNode","_definitionNode$direc","typeFromAST","TypeInfo","initialType","getFieldDefFn","getFieldDef","isCompositeType","fieldDef","rootType","typeConditionAST","outputType","inputType","_this$getDirective","argDef","argType","fieldOrDirective","listType","getNullableType","objectType","inputFieldType","inputField","fieldNode","visitWithTypeInfo","typeInfo","visitor","fn","getEnterLeaveForKind","result","isNode","isExecutableDefinitionNode","isTypeSystemDefinitionNode","isTypeDefinitionNode","isTypeSystemExtensionNode","isTypeExtensionNode","ExecutableDefinitionsRule","definition","defName","FieldsOnCorrectTypeRule","suggestion","didYouMean","getSuggestedTypeNames","getSuggestedFieldNames","suggestedTypes","usageCount","possibleType","possibleInterface","_usageCount$possibleI","usageCountDiff","naturalCompare","x","possibleFieldNames","suggestionList","FragmentsOnCompositeTypesRule","typeCondition","typeStr","KnownArgumentNamesRule","KnownArgumentNamesOnDirectivesRule","argNode","knownArgsNames","suggestions","directiveArgs","definedDirectives","astDefinitions","def","_def$arguments","argsNodes","directiveNode","directiveName","knownArgs","KnownDirectivesRule","locationsMap","_key","_parent","_path","ancestors","candidateLocation","getDirectiveLocationForASTPath","appliedTo","getDirectiveLocationForOperation","parentNode","KnownFragmentNamesRule","fragmentName","KnownTypeNamesRule","existingTypesMap","definedTypes","typeNames","_1","parent","_2","_ancestors$","isSDL","isSDLNode","standardTypeNames","LoneAnonymousOperationRule","operationCount","MAX_LISTS_DEPTH","MaxIntrospectionDepthRule","checkDepth","visitedFragments","depth","fragment","child","NoFragmentCyclesRule","visitedFrags","spreadPath","spreadPathIndexByName","spreadNodes","spreadNode","spreadName","spreadFragment","viaPath","s","NoUndefinedVariablesRule","variableNameDefined","usages","NoUnusedFragmentsRule","operationDefs","fragmentDefs","fragmentNameUsed","fragmentDef","fragName","NoUnusedVariablesRule","variableDefs","variableNameUsed","variableDef","variableName","sortValueNode","sortFields","fieldA","fieldB","reasonMessage","reason","responseName","subReason","OverlappingFieldsCanBeMergedRule","comparedFieldsAndFragmentPairs","OrderedPairSet","comparedFragmentPairs","PairSet","cachedFieldsAndFragmentNames","selectionSet","conflicts","findConflictsWithinSelectionSet","fields1","fields2","reasonMsg","fieldMap","fragmentNames","getFieldsAndFragmentNames","collectConflictsWithin","i","collectConflictsBetweenFieldsAndFragment","j","collectConflictsBetweenFragments","areMutuallyExclusive","fieldMap2","referencedFragmentNames","getReferencedFieldsAndFragmentNames","collectConflictsBetween","referencedFragmentName","fragmentName1","fragmentName2","fragment1","fragment2","fieldMap1","referencedFragmentNames1","referencedFragmentNames2","referencedFragmentName2","referencedFragmentName1","findConflictsBetweenSubSelectionSets","parentType1","selectionSet1","parentType2","selectionSet2","fragmentNames1","fragmentNames2","conflict","findConflict","parentFieldsAreMutuallyExclusive","field1","field2","node1","def1","node2","def2","name1","name2","sameArguments","type1","type2","doTypesConflict","subfieldConflicts","args1","args2","values2","arg1","value1","value2","stringifyValue","cached","nodeAndDefs","_collectFieldsAndFragmentNames","fragmentType","selection","inlineFragmentType","a","b","weaklyPresent","_this$_data$get","PossibleFragmentSpreadsRule","fragType","parentTypeStr","fragTypeStr","getFragmentType","frag","ProvidedRequiredArgumentsRule","ProvidedRequiredArgumentsOnDirectivesRule","_fieldNode$arguments","providedArgs","argTypeStr","_schema$getDirectives","requiredArgsMap","keyMap","argNodes","isRequiredArgumentNode","requiredArgs","_directiveNode$argume","argNodeMap","isType","ScalarLeafsRule","printPathArray","path","key","addPath","prev","typename","pathToArray","flattened","curr","coerceInputValue","onError","defaultOnError","coerceInputValueImpl","invalidValue","errorPrefix","itemValue","index","itemPath","fieldDefs","keys","parseResult","valueFromAST","variables","variableValue","coercedValues","isMissingVariable","coercedObj","getArgumentValues","variableValues","_node$arguments","argumentNodes","argumentNode","isNull","hasOwnProperty","getDirectiveValues","directiveDef","_node$directives","prop","collectFields","fragments","runtimeType","collectFieldsImpl","visitedFragmentNames","shouldIncludeNode","getFieldEntryKey","fieldList","doesFragmentConditionMatch","skip","include","typeConditionNode","conditionalType","SingleFieldSubscriptionsRule","operationName","extraFieldSelections","groupBy","list","keyFn","group","UniqueArgumentNamesRule","checkArgUniqueness","_parentNode$arguments","seenArgs","UniqueDirectivesPerLocationRule","uniqueDirectiveMap","schemaDirectives","typeDirectivesMap","seenDirectives","UniqueFragmentNamesRule","knownFragmentNames","UniqueInputFieldNamesRule","knownNameStack","knownNames","prevKnownNames","UniqueOperationNamesRule","knownOperationNames","UniqueVariableNamesRule","_operationNode$variab","variableDefinitions","seenVariableDefinitions","variableNodes","ValuesOfCorrectTypeRule","isValidValueNode","fieldNodeMap","validateOneOfInputObject","locationType","_fieldNodeMap$keys$","VariablesAreInputTypesRule","VariablesInAllowedPositionRule","varDefMap","varDef","varType","allowedVariableUsage","varTypeStr","isNullableType","varDefaultValue","locationDefaultValue","nullableLocationType","recommendedRules","specifiedRules","ASTValidationContext","ast","defNode","spreads","setsToVisit","set","collectedNames","nodesToVisit","spread","ValidationContext","newUsages","visit","variable","validate","documentAST","rules","_options$maxErrors","maxErrors","abortObj","visitInParallel","rule","e","toError","thrownValue","NonErrorThrown","locatedError","rawOriginalError","originalError","isLocatedGraphQLError","defaultTypeResolver","contextValue","info","possibleTypes","promisedIsTypeOfResults","isTypeOfResult","isTypeOfResults","defaultFieldResolver","property","getOperationAST","_definition$name","lexicographicSortSchema","schemaConfig","keyValMap","sortByName","sortNamedType","sortDirective","replaceMaybeType","replaceType","replaceNamedType","maybeType","sortBy","sortArgs","sortObjMap","fieldsMap","sortInputFields","sortTypes","array","GraphQLInterfaceType","GraphQLUnionType","GraphQLInputObjectType","sortValueFn","sortedMap","mapToKey","obj1","obj2","key1","key2","kFakePromise","isActualPromise","maybePromise","handleMaybePromise","inputFactory","outputSuccessFactory","outputErrorFactory","finallyFactory","result$","fakePromise","unfakePromise","resolve","reject","res","cb","promiseLikeFinally","err","fakeRejectPromise","createDeferredPromise","resolveFn","rejectFn","iterateAsync","iterable","callback","results","iterator","iterate","endOfIterator","endedEarly","endEarly","_resolve","mapAsyncIterator","onNext","onEnd","$return","abruptClose","rethrow","mapResult","iteratorResult","mapReject","onErrorResult","isFakePromise","isFakeRejectPromise","onFinally","finallyRes","promise","chain","first","next","merged","payload","wrapped","getInstrumented","instrument","documentStringMap","envelopIsIntrospectionSymbol","isIntrospectionOperationString","getSubscribeArgs","makeSubscribe","subscribeFn","polyArgs","getExecuteArgs","makeExecute","executeFn","isAsyncIterable","maybeAsyncIterable","handleStreamOrSingleExecutionResult","finalAsyncIterator","onFinal","ensureIterator","isDone","errorAsyncIterator","throwEngineFunctionError","createEnvelopOrchestrator","plugins","initDone","execute","subscribe","instrumentation","replaceSchema","newSchema","ignorePluginIndex","plugin","schemaToSet","contextErrorHandlers","pluginsToAdd","newPlugin","modifiedSchema","handler","beforeCallbacks","onContextBuilding","onExecute","onParse","onSubscribe","onValidate","onEnveloped","pluginInstrumentation","init","initialContext","extension","customParse","parseOptions","afterCalls","afterFn","newFn","newDoc","afterCb","newResult","customValidate","validationOptions","actualRules","validateFn","newResults","valid","customContextFactory","orchestratorCtx","isBreakingContextBuilding","onContext","stopEarly","errorCb","useCustomSubscribe","customSubscribe","afterCallbacks","newSubscribeFn","stopResult","subscribeErrorHandlers","onSubscribeResult","onSubscribeError","onNextHandler","onEndHandler","hookResult","useCustomExecute","customExecute","afterDoneCalls","newExecuteFn","iterateAsyncVoid","notEmpty","envelop","orchestrator","getEnveloped","instrumented","typedOrchestrator","DEFAULT_OPTIONS","useLogger","rawOptions","extendContext","params","DEFAULT_ERROR_MESSAGE","isGraphQLError","isOriginalGraphQLError","createSerializableGraphQLError","isDev","extensions","createDefaultMaskError","defaultMaskError","makeHandleResult","maskError","setResult","useMaskedErrors","opts","handleResult","setError","useExtendContext","contextFactory","useEngine","engine","setExecuteFn","setParseFn","setValidationFn","addValidationRule","setSubscribeFn","PothosError","PothosSchemaError","outputShapeKey","parentShapeKey","inputShapeKey","inputFieldShapeKey","outputFieldShapeKey","typeBrandKey","_define_property","BaseTypeRef","ref","oldConfig","_inputShapeKey","InputListRef","required","_outputShapeKey","_parentShapeKey","ListRef","nullable","contextCacheSymbol","createContextCache","create","cache","getOrCreate","cacheKey","entry","normalizeEnumValues","valuesFromEnum","Enum","typeFromParam","param","configStore","nullableOption","itemNullable","inputTypeFromParam","requiredOption","itemRequired","assertNever","isThenable","verifyRef","verifyInterfaces","getTypeBrand","val","completeValue","valOrPromise","onSuccess","reduceMaybeAsync","items","initialValue","runCache","BasePlugin","typeConfig","fieldConfig","valueConfig","resolver","_fieldConfig","resolveType","_typeConfig","isTypeOf","buildCache","ctx","MergedPlugins","nextSchema","nextResolve","argMappers","mappedArgs","acc","argMapper","nextSubscribe","nextResolveType","ScalarRef","BuiltinScalarRef","BuildCache","baseConfig","builtType","fieldConfigs","_fields_fieldName_extensions","implementers","built","originalConfig","updatedConfig","argMap","argConfigs","_config_resolve","_config_resolve1","interfaceFields","all","configs","objectFields","_config_isTypeOf","typeBrand","_config_resolveType","resultOrPromise","getResult","member","configValues","original","builder","_builder_options_plugins","pluginName","Plugin","InputObjectRef","ImplementableInputObjectRef","TypeRefWithFields","cfg","_cfg_interfaces","InterfaceRef","ImplementableInterfaceRef","ObjectRef","ImplementableObjectRef","MutationRef","QueryRef","SubscriptionRef","ConfigStore","_config","resolved","_this_pendingTypeConfigResolutions_get","pendingResolutions","onConfig","implementor","_this_typeConfigs_get","cbs","_ref","pendingActions","current","_inputFieldShapeKey","ArgumentRef","_cb","initConfig","InputFieldRef","InputFieldBuilder","protoKeys","_opts_required","_opts_extensions","_options_required","_outputFieldShapeKey","FieldRef","BaseFieldUtil","_options_extensions","_options_nullable","graphqlKind","RootFieldBuilder","FieldBuilder","InterfaceFieldBuilder","MutationFieldBuilder","ObjectFieldBuilder","QueryFieldBuilder","SubscriptionFieldBuilder","EnumRef","UnionRef","SchemaBuilder$1","SchemaBuilder","normalizeOptions","_options_name","t","scalar","scalars","builtTypes","queryName","mutationName","subscriptionName","processedSchema","normalize","_options_defaultFieldNullability","_options_defaultInputFieldRequiredness","SchemaBuilderClass","ansiCodes","warnPrefix","infoPrefix","debugPrefix","logLevelScores","noop","consoleLog","prefix","debugLog","infoLog","warnLog","errorLog","createLogger","logLevel","score","graphiqlHTML","shouldRenderGraphiQL","headers","method","renderGraphiQL","useGraphiQL","logger","graphiqlOptionsFactory","renderer","urlPattern","getUrlPattern","URLPattern","request","serverContext","fetchAPI","endResponse","url","graphiqlOptions","graphiqlBody","response","useSchema","schemaDef","setSchema","schemaByRequest","MAX_RECURSIVE_DEPTH","formatValue","seenValues","formatObjectValue","formatError","previouslySeenValues","formatArray","isJSONable","jsonValue","formatObject","object","entries","getObjectTag","len","tag","possibleGraphQLErrorProperties","isGraphQLErrorLike","createGraphQLError","Constructor","promiseReduce","callbackFn","accumulator","memoize1","memoize1cache","a1","cachedValue","newValue","memoize3","memoize3Cache","a2","a3","cache2","cache3","memoize5","memoize5Cache","a4","a5","cache4","cache5","getDefinedRootType","getRootTypeMap","rootTypeMap","AccumulatorMap","GraphQLDeferDirective","GraphQLStreamDirective","patches","defer","getDeferValues","patchFields","collectSubFields","returnType","subFieldNodes","subPatches","subFieldsAndPatches","PonyfillSuppressedError","suppressed","DisposableSymbols","isSyncDisposable","isAsyncDisposable","SuppressedError","PonyfillAsyncDisposableStack","onDisposeAsync","stack","res$","AsyncDisposableStack","coerceError","errorOptions","coercedError","flattenAsyncIterable","topIterator","currentNestedIterator","waitForCurrentNestedIterator","done","r","topIteratorResult","rememberCurrentNestedIterator","nestedIteratorResult","condition","promiseForObject","signal","signalPromise","resolvedObject","promises","valueSet$","resolvedValue","promiseAll","getVariableValues","varDefNodes","inputs","coerced","coerceVariableValues","varDefNode","collectSubfields","exeContext","_collectSubfields","buildExecutionContext","executeImpl","executeOperation","data","initialResult","buildResponse","yieldSubsequentPayloads","getFragmentsFromDocument","rootValue","rawVariableValues","fieldResolver","typeResolver","subscribeFieldResolver","coercedVariableValues","onSignalAbort","listeners","signalDeferred","sharedListener","listener","buildPerEventExecutionContext","rootFields","executeFieldsSerially","executeFields","patch","label","executeDeferredFragment","sourceValue","executeField","asyncPayloadRecord","containsPromise","buildResolveInfo","completed","rawError","rawErrorItem","handleFieldError","filterSubsequentPayloads","handledError","CRITICAL_ERROR","completeListValue","completeLeafValue","completeAbstractValue","completeObjectValue","getStreamValues","stream","completeAsyncIteratorValue","completedResults","executeStreamIterator","iteration","completeListItemValue","previousAsyncPayloadRecord","executeStreamField","completedItem","serializedResult","resolveTypeFn","resolvedRuntimeType","ensureValidRuntimeType","runtimeTypeName","resolvedIsTypeOf","invalidReturnTypeError","collectAndExecuteSubfields","subFields","subPatch","subPatchFieldNodes","httpExtensions","resultOrStream","createSourceEventStreamImpl","resolvedResultOrStream","mapSourceToResponse","isIncrementalResults","flattenIncrementalResults","incrementalResults","subsequentIterator","initialResultSent","ensureAsyncIterable","someExecutionResult","wrapError","eventStream","executeSubscription","assertEventStream","asyncIterator","parentContext","DeferredFragmentRecord","promiseOrData","StreamRecord","completedItems","executeStreamIteratorItem","initialIndex","nullPath","currentAsyncRecord","nullPathArray","asyncRecord","isStreamPayload","getCompletedIncrementalResults","incrementalResult","subSequentPayloadPromises","record","incremental","hasNext","returnStreamIterators","MaybePromise","parentData","asyncPayload","normalizedExecutor","operationAST","globalPonyfill","body","getPort","nodeRequest","portInHeader","getHostnameWithPort","port","localIp","buildFullUrl","hostnameWithPort","protocol","endpoint","isRequestBody","stringTag","normalizeNodeRequest","nodeResponse","__useCustomAbortCtrl","rawRequest","fullUrl","normalizedHeaders","controller","createCustomAbortControllerSignal","closeEventListener","maybeParsedBody","target","receiver","isReadable","isNodeRequest","isServerResponse","isReadableStream","isFetchEvent","event","configureSocket","serverResponse","sendAsyncIterable","asyncIterable","closed","pump","safeWrite","chunk","isNode1x","sendNodeResponse","fetchResponse","__useSingleWriteHead","setCookiesSet","setCookies","bufOfRes","fetchBody","sendReadableStream","readableStream","reader","isRequestInit","completeAssign","sources","descriptors","sym","descriptor","handleErrorFromRequestHandler","ResponseCtor","isolateObject","originalCtx","waitUntilFn","handleAbortSignalAndPromiseResponse","response$","abortSignal","abortSignalFetchErrorHandler","deferred$","terminateEvents","disposableStacks","eventListenerRegistered","ensureEventListenerForDisposableStacks","ensureDisposableStackRegisteredForTerminateEvents","disposableStack","CustomAbortControllerSignal","nodeEvents","isAborted","nativeCtrl","isUWSResponse","getRequestFromUWSRequest","req","duplex","chunks","pushFns","push","pushFn","stopped","stopFns","stop","stopFn","ab","isLast","getReadableStream","streamCtrl","query","buffer","getBody","getBufferFromChunks","collectBuffer","createWritableFromUWS","uwsResponse","sendResponseToUwsOpts","bufferOfRes","strBody","isSetCookieHandled","setCookie","isRequestAccessible","EMPTY_OBJECT","createServerAdapter","serverAdapterBaseObject","useSingleWriteHead","DefaultFetchAPI","useCustomAbortCtrl","givenHandleRequest","onRequestHooks","onResponseHooks","waitUntilPromises","_disposableStack","ensureDisposableStack","waitUntil","disposeFn","asyncDisposeFn","handleRequest","requestHandler","handleEarlyResponse","_target","_receiver","handleResponse","onResponseHook","newResponse","onRequestHook","newRequest","newRequestHandler","originalRequestHandler","handleNodeRequest","handleNodeRequestAndResponse","nodeResponseOrContainer","requestListener","defaultServerContext","handleUWS","partCtx","originalResEnd","resEnded","handleEvent","filteredCtxParts","handleRequestWithWaitUntil","fetchFn","input","maybeCtx","initOrCtx","restOfCtx","genericRequestHandler","initOrCtxOrRes","adapterObj","serverAdapter","_","adapterProp","handleProp","serverAdapterBaseObjectProp","returnedVal","__","getCORSHeadersByRequestAndOptions","corsOptions","currentOrigin","requestMethod","requestHeaders","getCORSResponseHeaders","corsOptionsFactory","useCORS","headerName","isAggregateError","hasToString","isAbortError","handleError","maskedErrorsOpts","singleError","handledErrors","maskedError","getResponseInitByRespectingErrors","isApplicationJson","status","unexpectedErrorExists","areGraphQLErrors","useAllowedResponseHeaders","allowedHeaders","removeDisallowedHeaders","useAllowedRequestHeaders","handleURLSearchParams","searchParams","variablesStr","extensionsStr","parseURLSearchParams","requestBody","URLSearchParams","isContentTypeMatch","expectedContentType","contentType","isGETRequest","parseGETRequest","queryString","isPOSTFormUrlEncodedRequest","parsePOSTFormUrlEncodedRequest","isPOSTGraphQLStringRequest","parsePOSTGraphQLStringRequest","isPOSTJsonRequest","parsePOSTJsonRequest","requestBodyTypeof","dset","l","k","isPOSTMultipartRequest","parsePOSTMultipartRequest","operationsStr","operations","mapStr","fileIndex","file","expectedParameters","assertInvalidParams","extraParamNames","paramKey","checkGraphQLQueryParams","isObject","extendedTypeof","variablesParamType","extensionsParamType","useCheckGraphQLQueryParams","isValidMethodForGraphQL","useCheckMethodForGraphQL","useHTTPValidationError","useLimitBatching","limit","requestParserResult","assertMutationViaGet","usePreventMutationViaGET","useHealthCheck","id","perf","warned","PROCESS","emitWarning","msg","code","AC","AS","warnACPolyfill","printACPolyfillWarning","shouldWarn","isPosInt","n","getUintArray","max","ZeroArray","size","Stack","#constructing","HeapCls","LRUCache","#max","#maxSize","#dispose","#disposeAfter","#fetchMethod","#memoMethod","#size","#calculatedSize","#keyMap","#keyList","#valList","#next","#prev","#head","#tail","#free","#disposed","#sizes","#starts","#ttls","#hasDispose","#hasFetchMethod","#hasDisposeAfter","c","p","#isBackgroundFetch","#backgroundFetch","#moveToTail","#indexes","#rindexes","#isStale","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","dispose","disposeAfter","noDisposeOnSet","noUpdateTTL","maxSize","maxEntrySize","sizeCalculation","fetchMethod","memoMethod","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchRejection","allowStaleOnFetchAbort","ignoreFetchAbort","UintArray","#initializeSizeTracking","#initializeTTLTracking","ttls","starts","#setItemTTL","#delete","#updateItemAge","#statusTTL","cachedNow","getNow","age","sizes","#removeItemSize","#requireSize","v","#addItemSize","#evict","_i","_s","_st","_k","_v","#isValidIndex","getOptions","thisp","deleted","remain","arr","setOptions","oldVal","oldValue","dt","task","free","head","hasOptions","peekOptions","ac","fetchOpts","updateCache","aborted","ignoreAbort","fetchFail","bf","eb","er","allowStaleAborted","noDelete","pcall","rej","fmp","fetchOptions","forceRefresh","stale","isStale","staleVal","memoOptions","vv","fetching","#connect","#clear","pi","ni","DEFAULT_MAX","DEFAULT_TTL","_createLRUCache","LRU","useParserAndValidationCache","documentCache","errorCache","validationCache","validationCacheByRules","setParsedDocument","strDocument","parserError","rulesKey","validationCacheBySchema","validationCacheByDocument","cachedResult","DEFAULT_MATCHER","useRequestParser","matchFn","setRequestParser","getMediaTypesForRequestInOrder","accepts","mediaTypes","accept","mediaType","isMatchingMediaType","askedMediaType","processorMediaType","askedPre","askedSuf","pre","suf","jsonStringifyResultWithoutInternals","sanitizedResult","omitInternalsFromResultErrors","omitInternalsFromError","http","serializedError","unexpected","processMultipartResult","responseInit","textEncoder","finished","encodedChunk","processRegularResult","executionResult","acceptedHeader","headersInit","responseBody","getSSEProcessor","pingIntervalMs","pingInterval","multipart","getSSEProcessorConfig","regular","useResultProcessors","isSubscriptionRequestMap","sse","defaultList","subscriptionList","acceptableMediaTypes","setResultProcessor","processorConfigList","requestMediaTypes","isAsyncIterableResult","resultProcessorConfig","requestMediaType","landingPageBody","defaultRenderLandingPage","useUnhandledRoute","landingPageRenderer","landingPage$","processResult","onResultProcessHooks","resultProcessor","acceptedMediaType","onResultProcessHook","newResultProcessor","newAcceptedMimeType","processRequest","enveloped","executionArgs","serializeError","errorExtensions","YogaServer","defaultFetchAPI","maskErrorFn","maskedErrorSet","newError","maskedErrors","batchingLimit","graphqlEndpoint","additionalContext","processGraphQLParams","paramsHandler","onParamsHook","newParams","newHandler","onExecutionResult","requestParser","onRequestParseDoneList","onRequestParse","requestParseHookResult","onRequestParseDone","parseRequest","getResultForParams","createYoga","server","exports","OpenAPIV3","HttpMethods","OpenAPIV2","__importDefault","this","mod","convertPathToPosix_1","convertPathToPosix","path_1","require$$0","filePath","isWindows_1","isWindowsConst","isWindows","__createBinding","o","m","k2","desc","__setModuleDefault","__importStar","ownKeys","ar","cwd","getProtocol","getExtension","stripQuery","getHash","stripHash","isHttp","isUnsafeUrl","isFileSystemPath","fromFileSystemPath","toFileSystemPath","safePointerToPath","relative","convert_path_to_posix_1","require$$1","forwardSlashPattern","protocolPattern","jsonPointerSlash","jsonPointerTilde","path_2","is_windows_1","require$$2","urlEncodePatterns","urlDecodePatterns","u","from","to","fromUrl","resolvedUrl","endSpaces","pathname","search","hash","href","lastChar","match","lastDot","queryIndex","hashIndex","normalizedPath","localPatterns","hostname","pattern","isPrivateIP","isInternalPort","ip","ipRegex","d","projectDir","upperPath","posixUpper","hasProjectDir","hasProjectUri","isAbsolutePath","keepFileProtocol","isFileUrl","pointer","fromDir","toPath","toJSON","getDeepKeys","isHandledError","normalizeError","url_js_1","nonJsonTypes","protectedProps","objectPrototype","pojo","omit","uniqueKeys","JSONParserError","JSONParserErrorGroup","$ref","ParserError","UnmatchedParserError","ResolverError","ex","UnmatchedResolverError","MissingPointerError","targetRef","targetFound","parentPath","TimeoutError","timeout","InvalidPointerError","ref_js_1","errors_js_1","slashes","tildes","escapedSlash","escapedTilde","safeDecodeURIComponent","encodedURIComponent","Pointer","friendlyPath","pathFromRoot","tokens","found","unwrapOrThrow","resolveIf$Ref","didFindSubstringSlashMatch","joinedToken","setValue","originalPath","split","base","$refPath","isRootPath","pointer_js_1","$Ref","$refs","existingErrors","footprint","refs","$Refs","getPaths","absPath","withoutHash","paths","filter","sort","run","lastError","runNextPlugin","parse_1","readFile","parseFile","resolvers","allParsers","filteredParsers","parsers","isEmpty","json","firstCurlyBrace","isNothing","subject","toArray","sequence","extend","length","sourceKeys","repeat","string","count","cycle","isNegativeZero","number","common","exception","compact","where","YAMLException","mark","getLine","lineStart","lineEnd","position","maxLineLength","tail","maxHalfLength","padStart","makeSnippet","re","lineStarts","lineEnds","foundLineNo","line","lineNoLength","snippet","TYPE_CONSTRUCTOR_OPTIONS","YAML_NODE_KINDS","compileStyleAliases","style","Type","compileList","currentType","newIndex","previousType","previousIndex","compileMap","collectType","Schema","implicit","explicit","str","seq","failsafe","require$$3","resolveYamlNull","constructYamlNull","_null","resolveYamlBoolean","constructYamlBoolean","isBoolean","bool","isHexCode","isOctCode","isDecCode","resolveYamlInteger","hasDigits","ch","constructYamlInteger","sign","isInteger","int","YAML_FLOAT_PATTERN","resolveYamlFloat","constructYamlFloat","SCIENTIFIC_WITHOUT_DOT","representYamlFloat","isFloat","float","require$$4","core","YAML_DATE_REGEXP","YAML_TIMESTAMP_REGEXP","resolveYamlTimestamp","constructYamlTimestamp","year","month","day","hour","minute","second","fraction","delta","tz_hour","tz_minute","date","representYamlTimestamp","timestamp","resolveYamlMerge","merge","BASE64_MAP","resolveYamlBinary","idx","bitlen","constructYamlBinary","tailbits","bits","representYamlBinary","isBinary","binary","_hasOwnProperty","_toString","resolveYamlOmap","objectKeys","pair","pairKey","pairHasKey","constructYamlOmap","omap","resolveYamlPairs","constructYamlPairs","pairs","resolveYamlSet","constructYamlSet","_default","require$$5","require$$6","DEFAULT_SCHEMA","CONTEXT_FLOW_IN","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_IN","CONTEXT_BLOCK_OUT","CHOMPING_CLIP","CHOMPING_STRIP","CHOMPING_KEEP","PATTERN_NON_PRINTABLE","PATTERN_NON_ASCII_LINE_BREAKS","PATTERN_FLOW_INDICATORS","PATTERN_TAG_HANDLE","PATTERN_TAG_URI","_class","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","setProperty","simpleEscapeCheck","simpleEscapeMap","State","generateError","state","throwError","throwWarning","directiveHandlers","major","minor","handle","captureSegment","end","checkJson","_position","_length","_character","_result","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","startLine","startLineStart","startPos","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","readFlowCollection","readNext","_pos","_tag","_anchor","terminator","isPair","isExplicitPair","isMapping","composeNode","readBlockScalar","folding","chomping","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","readBlockSequence","detected","readBlockMapping","flowIndent","allowCompact","_keyLine","_keyLineStart","_keyPos","atExplicitKey","readTagProperty","isVerbatim","isNamed","tagHandle","tagName","readAnchorProperty","readAlias","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","indentStatus","atNewLine","hasContent","typeIndex","typeQuantity","typeList","blockIndent","readDocument","documentStart","hasDirectives","loadDocuments","nullpos","loadAll","documents","load","loader","CHAR_BOM","CHAR_TAB","CHAR_LINE_FEED","CHAR_CARRIAGE_RETURN","CHAR_SPACE","CHAR_EXCLAMATION","CHAR_DOUBLE_QUOTE","CHAR_SHARP","CHAR_PERCENT","CHAR_AMPERSAND","CHAR_SINGLE_QUOTE","CHAR_ASTERISK","CHAR_COMMA","CHAR_MINUS","CHAR_COLON","CHAR_EQUALS","CHAR_GREATER_THAN","CHAR_QUESTION","CHAR_COMMERCIAL_AT","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_GRAVE_ACCENT","CHAR_LEFT_CURLY_BRACKET","CHAR_VERTICAL_LINE","CHAR_RIGHT_CURLY_BRACKET","ESCAPE_SEQUENCES","DEPRECATED_BOOLEANS_SYNTAX","DEPRECATED_BASE60_SYNTAX","compileStyleMap","encodeHex","character","QUOTING_TYPE_SINGLE","QUOTING_TYPE_DOUBLE","indentString","spaces","ind","generateNextLine","level","testImplicitResolving","isWhitespace","isPrintable","isNsCharOrWhitespace","isPlainSafe","inblock","cIsNsCharOrWhitespace","cIsNsChar","isPlainSafeFirst","isPlainSafeLast","codePointAt","pos","needIndentIndicator","leadingSpaceRe","STYLE_PLAIN","STYLE_SINGLE","STYLE_LITERAL","STYLE_FOLDED","STYLE_DOUBLE","chooseScalarStyle","singleLineOnly","indentPerLevel","lineWidth","testAmbiguousType","quotingType","forceQuotes","char","prevChar","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","writeScalar","iskey","indent","testAmbiguity","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","lineRe","nextLF","foldLine","prevMoreIndented","moreIndented","breakRe","escapeSeq","writeFlowSequence","writeNode","writeBlockSequence","writeFlowMapping","objectKeyList","objectKey","objectValue","pairBuffer","writeBlockMapping","explicitPair","detectType","block","isblockseq","tagStr","objectOrArray","duplicateIndex","duplicate","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","dump","dumper","renamed","jsYaml","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","yaml","js_yaml_1","js_yaml_2","text","TEXT_REGEXP","BINARY_REGEXP","fs_1","download","httpOptions","_redirects","redirects","get","redirectTo","buf","timeoutId","json_js_1","yaml_js_1","text_js_1","binary_js_1","file_js_1","http_js_1","getJsonSchemaRefParserDefaultOptions","getNewOptions","newOptions","isMergeable","sourceSetting","targetSetting","normalizeArgs_1","normalizeArgs","options_js_1","resolveExternal_1","parse_js_1","resolveExternal","crawl","seen","external","resolve$Ref","keyPath","shouldResolveOnCwd","resolvedPath","bundle_1","bundle","inventory","remap","indirections","bundleOptions","isExcludedPath","inventory$Ref","keyPathFromRoot","$refParent","$refKey","extended","existingEntry","findInInventory","removeFromInventory","aDefinitionsIndex","bDefinitionsIndex","dereference_1","errors_1","dereference","dereferenced","parents","processedObjects","dereferencedCache","startTime","checkDereferenceTimeout","derefOptions","dereference$Ref","circular","preserved","foundCircularReference","refKeys","extraKeys","directCircular","dereferencedValue","dereferencedObject","makeNext","f","maybe_1","maybe","next_js_1","refs_js_1","normalize_args_js_1","resolve_external_js_1","bundle_js_1","dereference_js_1","maybe_js_1","$RefParser","pathType","finalize","instance","objProto","isRecordEmpty","rec","JSON_SCHEMA_TYPE_NAMES","RECORDS_OF_SUB_SCHEMAS","ARRAYS_OF_SUB_SCHEMAS","SUB_SCHEMAS","isSchemaObject","isAllowAnySchema","ascComparator","larger","smaller","ll","sl","intersection","setB","isArrayEmpty","createArrayComparator","compare","createDeduplicator","threshold","al","rl","outer","sorted","wIndex","rIndex","createIntersector","bl","tmpArr","tmpL","aSorted","bSorted","cmp","memoize","func","ret","weakMemoize","zero","isUndefined","isSchemaPrimitiveExceptNull","PRIMITIVE_TYPE_ORDER","compareSchemaPrimitive","ta","tb","insertUniqueValues","mutableTarget","mutableSource","tl","createCmpMatcher","compareEmpty","createOptionalComparator","createNarrowingOptionalComparator","createArrayOrItemComparator","compareArray","compareOptionalSameTypeSchemaPrimitives","compareNumbersWithZeroDefault","createComparator","deduplicationCache","sortedKeysCache","getSortedKeys","createRecordsComparator","aKeys","bKeys","createArrayComparatorWithDeduplication","deduplicate","compareArrayOfSameTypePrimitivesWithDeduplication","compareSchemaDefinitions","allKeys","COMPARATORS","compareOptionalSchemaValues","compareSchemaValues","compareNonNullSchemaValue","compareOptionalSchemaDefinitions","compareRecordOfOptionalSchemasWithEmptyRecordDefault","compareOptionalArrayOfSchemasWithDeduplication","compareSchemaDefinitionsWithEmptyDefinitionDefault","isAArr","isBArr","identity","gcd","lcm","simplePatternsMerger","createPairCombinations","action","lv","mergeBooleans","createRecordsMerge","left","right","createMap","assignSchemaDefinitionOrRecordOfSchemaDefinitions","PROPERTIES_ASSIGNER_KEYS","compilePatterns","patterns","EMPTY_PATTERNS_AND_KEYS","appendKeyConstraints","ITEMS_ASSIGNER_KEYS","CONDITION_ASSIGNER_KEYS","assignCondition","intersectSchemaTypes","check","createChecksMap","checks","DEFAULT_CHECKS","createMerger","mergePatterns","isSubRegExp","intersectJson","deduplicateJsonSchemaDef","defaultMerger","assigners","mergers","mergeArrayOfSchemaDefinitions","schemas","mergeSchemaDefinitions","createProperty","constraints","oppositeValue","oppositePatterns","oppositeAdditional","isNotYetAllowed","assignPatternPropertiesAndAdditionalPropertiesMerge","patternKeys","matchedPatterns","isOppositeTruthy","propertiesAssigner","lProps","lPatterns","lAdditional","rProps","rPatterns","rAdditional","isLAddTruthy","isRAddTruthy","mergeRecordsOfSchemaDefinitions","additionalProperties","properties","lKeys","lKeysLen","lCompiledPatterns","lPatternKeys","rCompiledPatterns","rPatternKeys","lKeysSet","mappedRAdditional","rKeys","rKeysLen","mappedLAdditional","gen","lKey","rKey","itemsAssigner","lItems","rItems","isLArr","isRArr","itemsArray","additional","isAdditionalTruthy","conditionAssigner","cond","mergeArraysOfSchemaDefinition","ASSIGNERS_MAP","CHECKS_MAP","rv","checkData","assign","MERGERS","el","factor","getAllOfSchemas","allOf","rest","createShallowAllOfMerge","flattenAllOfProcessor","traverse","spec","resolvedAllOf","flattenAllOf","shallowAllOfMerge","sub","it","resolveLocalRef","schemaCache","segment","isIndexableObject","cloned","visited","CIRCULAR_REF","upgradeSchema","isSchemaPath","location","parseSchemaInput","schemaInput","schemaText","parsed","upgraded","createOperationSlug","slugify","summary","JSONScalar","GraphQLJSON","JSONObjectScalar","GraphQLJSONObject","JSONSchemaScalar","GraphQLJSONSchema","resolveExtensions","getAllTags","slugs","rootTags","operationTags","op","hasUntaggedOperations","rt","tagGroups","groupOrder","indexA","indexB","getAllSlugs","ops","schemaTags","slugifyWithCounter","tags","getOperationSlugKey","getAllOperations","pathParameters","operationParameters","parameters","pp","pathServers","operationServers","servers","SchemaTag","OperationItem","ServerItem","PathItem","TagItem","EncodingItem","ExampleItem","ParameterIn","ParameterItem","MediaTypeItem","RequestBodyObject","ResponseItem","slug","content","statusCode","examples","SchemaItem","Components","root","_root","SchemaSource","loadSchema","createGraphQLServer","createServer","eventName"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230]}
|