houdini 2.0.0-next.9 → 2.0.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/build/adapter/index.d.ts +2 -2
- package/build/adapter/index.js +6 -0
- package/build/cmd/generate.d.ts +5 -0
- package/build/cmd/generate.js +77 -0
- package/build/cmd/index.js +32 -0
- package/build/cmd/init.js +565 -0
- package/build/cmd/pullSchema.js +26 -0
- package/build/lib/ast.js +71 -0
- package/build/lib/codegen.d.ts +57 -0
- package/build/lib/codegen.js +617 -0
- package/build/lib/config.d.ts +240 -177
- package/build/lib/config.js +143 -0
- package/build/lib/constants.js +14 -0
- package/build/lib/database.d.ts +7 -0
- package/build/lib/database.js +624 -0
- package/build/lib/db.d.ts +13 -0
- package/build/lib/db.js +135 -0
- package/build/lib/deepMerge.js +23 -0
- package/build/lib/error.d.ts +16 -0
- package/build/lib/error.js +115 -0
- package/build/lib/fs.d.ts +9 -11
- package/build/lib/fs.js +245 -0
- package/build/lib/graphql.d.ts +5 -32
- package/build/lib/graphql.js +36 -0
- package/build/lib/imports.d.ts +29 -14
- package/build/lib/imports.js +66 -0
- package/build/lib/index.d.ts +17 -24
- package/build/lib/index.js +21 -0
- package/build/lib/logger.d.ts +12 -0
- package/build/lib/logger.js +45 -0
- package/build/lib/parse.d.ts +1 -2
- package/build/lib/parse.js +32 -0
- package/build/lib/path.d.ts +0 -1
- package/build/lib/path.js +44 -0
- package/build/lib/pipeline.d.ts +1 -1
- package/build/lib/pipeline.js +8 -0
- package/build/lib/plugins.d.ts +4 -0
- package/build/lib/plugins.js +88 -0
- package/build/lib/project.d.ts +19 -0
- package/build/lib/project.js +296 -0
- package/build/lib/schema.d.ts +1 -0
- package/build/lib/schema.js +61 -0
- package/build/lib/sleep.d.ts +1 -0
- package/build/lib/sleep.js +8 -0
- package/build/lib/types.d.ts +92 -303
- package/build/lib/types.js +37 -0
- package/build/lib/walk.d.ts +11 -6
- package/build/lib/walk.js +138 -0
- package/build/node/index.d.ts +44 -0
- package/build/node/index.js +402 -0
- package/build/oauth/index.d.ts +41 -0
- package/build/oauth/index.js +108 -0
- package/build/package.json +212 -0
- package/build/router/auth-token.d.ts +29 -0
- package/build/router/auth-token.js +168 -0
- package/build/{lib/router → router}/conventions.d.ts +10 -1
- package/build/router/conventions.js +165 -0
- package/build/{runtime-esm/router → router}/cookies.js +21 -21
- package/build/{runtime-esm/router → router}/jwt.js +8 -6
- package/build/{lib/router → router}/manifest.d.ts +2 -2
- package/build/router/manifest.js +279 -0
- package/build/{runtime/router → router}/match.d.ts +10 -10
- package/build/router/match.js +219 -0
- package/build/router/server.d.ts +57 -0
- package/build/router/server.js +500 -0
- package/build/{runtime/router → router}/session.d.ts +8 -3
- package/build/router/session.js +338 -0
- package/build/router/types.d.ts +44 -0
- package/build/runtime/cache/benchmarks/cache.bench.d.ts +1 -0
- package/build/runtime/cache/benchmarks/cache.bench.js +943 -0
- package/build/runtime/cache/gc.d.ts +2 -1
- package/build/{runtime-esm → runtime}/cache/gc.js +4 -1
- package/build/runtime/cache/index.d.ts +173 -3
- package/build/{runtime-esm/cache/cache.js → runtime/cache/index.js} +197 -70
- package/build/runtime/cache/lists.d.ts +9 -4
- package/build/{runtime-esm → runtime}/cache/lists.js +116 -27
- package/build/runtime/cache/staleManager.d.ts +2 -1
- package/build/{runtime-esm → runtime}/cache/staleManager.js +6 -2
- package/build/runtime/cache/storage.d.ts +5 -2
- package/build/{runtime-esm → runtime}/cache/storage.js +126 -54
- package/build/{runtime-esm → runtime}/cache/stuff.js +4 -3
- package/build/runtime/cache/subscription.d.ts +23 -9
- package/build/{runtime-esm → runtime}/cache/subscription.js +103 -65
- package/build/runtime/{client/index.d.ts → client.d.ts} +15 -22
- package/build/runtime/client.js +86 -0
- package/build/runtime/coerce.d.ts +4 -0
- package/build/runtime/coerce.js +31 -0
- package/build/runtime/config.d.ts +20 -0
- package/build/runtime/config.js +88 -0
- package/build/runtime/{lib/constants.d.ts → constants.d.ts} +1 -1
- package/build/runtime/{client/documentStore.d.ts → documentStore.d.ts} +18 -11
- package/build/{runtime-esm/client → runtime}/documentStore.js +53 -56
- package/build/runtime/endpoint.d.ts +14 -0
- package/build/runtime/endpoint.js +29 -0
- package/build/{runtime-cjs/lib → runtime}/flatten.d.ts +1 -1
- package/build/runtime/formData.d.ts +24 -0
- package/build/runtime/formData.js +93 -0
- package/build/runtime/index.d.ts +16 -8
- package/build/runtime/index.js +54 -0
- package/build/{runtime-cjs/lib → runtime}/key.d.ts +1 -1
- package/build/{runtime-esm/lib → runtime}/key.js +4 -4
- package/build/{runtime-esm/lib → runtime}/log.js +3 -3
- package/build/runtime/multipart.d.ts +8 -0
- package/build/runtime/multipart.js +49 -0
- package/build/{runtime-cjs/lib → runtime}/pageInfo.d.ts +3 -3
- package/build/{runtime-esm/lib → runtime}/pageInfo.js +2 -2
- package/build/{runtime-cjs/lib → runtime}/pagination.d.ts +12 -8
- package/build/{runtime-esm/lib → runtime}/pagination.js +157 -21
- package/build/{runtime-cjs/lib → runtime}/scalars.d.ts +6 -6
- package/build/{runtime-esm/lib → runtime}/scalars.js +10 -43
- package/build/{runtime-cjs/lib → runtime}/selection.d.ts +1 -1
- package/build/{runtime-esm/lib → runtime}/selection.js +17 -2
- package/build/runtime/{lib/store.d.ts → store.d.ts} +1 -1
- package/build/{runtime-esm/lib → runtime}/store.js +2 -3
- package/build/runtime/{lib/types.d.ts → types.d.ts} +102 -101
- package/build/{runtime-esm/lib → runtime}/types.js +9 -14
- package/build/test/index.d.ts +6 -25
- package/build/test/index.js +329 -0
- package/build/test/package.json +1 -0
- package/build/vite/hmr.d.ts +26 -3
- package/build/vite/hmr.js +431 -0
- package/build/vite/houdini.d.ts +4 -10
- package/build/vite/houdini.js +134 -0
- package/build/vite/index.d.ts +13 -7
- package/build/vite/index.js +104 -0
- package/build/vite/package.json +1 -0
- package/build/vite/schema.d.ts +5 -3
- package/build/vite/schema.js +193 -0
- package/package.json +148 -57
- package/build/adapter-cjs/index.js +0 -33
- package/build/adapter-cjs/package.json +0 -1
- package/build/adapter-esm/index.js +0 -9
- package/build/cmd-cjs/index.js +0 -89299
- package/build/cmd-cjs/package.json +0 -1
- package/build/cmd-esm/index.js +0 -89303
- package/build/codegen/generators/artifacts/fieldKey.d.ts +0 -3
- package/build/codegen/generators/artifacts/index.d.ts +0 -17
- package/build/codegen/generators/artifacts/indexFile.d.ts +0 -2
- package/build/codegen/generators/artifacts/inputs.d.ts +0 -4
- package/build/codegen/generators/artifacts/operations.d.ts +0 -11
- package/build/codegen/generators/artifacts/selection.d.ts +0 -20
- package/build/codegen/generators/artifacts/utils.d.ts +0 -8
- package/build/codegen/generators/comments/jsdoc.d.ts +0 -2
- package/build/codegen/generators/definitions/enums.d.ts +0 -2
- package/build/codegen/generators/definitions/index.d.ts +0 -2
- package/build/codegen/generators/index.d.ts +0 -6
- package/build/codegen/generators/indexFile/index.d.ts +0 -2
- package/build/codegen/generators/persistedQueries/index.d.ts +0 -2
- package/build/codegen/generators/runtime/graphqlFunction.d.ts +0 -2
- package/build/codegen/generators/runtime/index.d.ts +0 -3
- package/build/codegen/generators/runtime/injectPlugins.d.ts +0 -7
- package/build/codegen/generators/runtime/pluginIndex.d.ts +0 -5
- package/build/codegen/generators/runtime/pluginRuntime.d.ts +0 -15
- package/build/codegen/generators/runtime/runtimeConfig.d.ts +0 -7
- package/build/codegen/generators/typescript/addReferencedInputTypes.d.ts +0 -4
- package/build/codegen/generators/typescript/documentTypes.d.ts +0 -2
- package/build/codegen/generators/typescript/imperativeTypeDef.d.ts +0 -2
- package/build/codegen/generators/typescript/index.d.ts +0 -2
- package/build/codegen/generators/typescript/inlineType.d.ts +0 -29
- package/build/codegen/generators/typescript/loadingState.d.ts +0 -8
- package/build/codegen/index.d.ts +0 -8
- package/build/codegen/transforms/addFields.d.ts +0 -2
- package/build/codegen/transforms/collectDefinitions.d.ts +0 -9
- package/build/codegen/transforms/componentFields.d.ts +0 -8
- package/build/codegen/transforms/fragmentVariables.d.ts +0 -17
- package/build/codegen/transforms/index.d.ts +0 -9
- package/build/codegen/transforms/list.d.ts +0 -9
- package/build/codegen/transforms/paginate.d.ts +0 -4
- package/build/codegen/transforms/runtimeScalars.d.ts +0 -2
- package/build/codegen/transforms/schema.d.ts +0 -2
- package/build/codegen/transforms/typename.d.ts +0 -2
- package/build/codegen/utils/commonjs.d.ts +0 -5
- package/build/codegen/utils/flattenSelections.d.ts +0 -11
- package/build/codegen/utils/index.d.ts +0 -4
- package/build/codegen/utils/moduleExport.d.ts +0 -4
- package/build/codegen/utils/murmur.d.ts +0 -9
- package/build/codegen/utils/objectIdentificationSelection.d.ts +0 -3
- package/build/codegen/utils/stripLoc.d.ts +0 -3
- package/build/codegen/validators/componentFields.d.ts +0 -2
- package/build/codegen/validators/index.d.ts +0 -5
- package/build/codegen/validators/noIDAlias.d.ts +0 -2
- package/build/codegen/validators/plugins.d.ts +0 -3
- package/build/codegen/validators/typeCheck.d.ts +0 -5
- package/build/codegen/validators/uniqueNames.d.ts +0 -2
- package/build/codegen-cjs/index.js +0 -74656
- package/build/codegen-cjs/package.json +0 -1
- package/build/codegen-esm/index.js +0 -74655
- package/build/lib/cleanupFiles.d.ts +0 -1
- package/build/lib/detectTools.d.ts +0 -16
- package/build/lib/introspection.d.ts +0 -3
- package/build/lib/plugin.d.ts +0 -2
- package/build/lib/router/index.d.ts +0 -9
- package/build/lib/router/server.d.ts +0 -7
- package/build/lib/router/types.d.ts +0 -23
- package/build/lib/typescript.d.ts +0 -20
- package/build/lib/watchAndRun.d.ts +0 -61
- package/build/lib-cjs/index.js +0 -79739
- package/build/lib-cjs/package.json +0 -1
- package/build/lib-esm/index.js +0 -79648
- package/build/runtime/cache/cache.d.ts +0 -169
- package/build/runtime/client/plugins/cache.d.ts +0 -9
- package/build/runtime/client/plugins/fetch.d.ts +0 -38
- package/build/runtime/client/plugins/fetchParams.d.ts +0 -9
- package/build/runtime/client/plugins/fragment.d.ts +0 -2
- package/build/runtime/client/plugins/index.d.ts +0 -9
- package/build/runtime/client/plugins/injectedPlugins.d.ts +0 -4
- package/build/runtime/client/plugins/mutation.d.ts +0 -2
- package/build/runtime/client/plugins/optimisticKeys.d.ts +0 -7
- package/build/runtime/client/plugins/query.d.ts +0 -2
- package/build/runtime/client/plugins/subscription.d.ts +0 -20
- package/build/runtime/client/plugins/test.d.ts +0 -15
- package/build/runtime/client/plugins/throwOnError.d.ts +0 -8
- package/build/runtime/client/utils/documentPlugins.d.ts +0 -3
- package/build/runtime/client/utils/index.d.ts +0 -1
- package/build/runtime/generated.d.ts +0 -5
- package/build/runtime/imports/config.d.ts +0 -3
- package/build/runtime/imports/pluginConfig.d.ts +0 -3
- package/build/runtime/lib/config.d.ts +0 -216
- package/build/runtime/lib/deepEquals.d.ts +0 -1
- package/build/runtime/lib/flatten.d.ts +0 -2
- package/build/runtime/lib/index.d.ts +0 -10
- package/build/runtime/lib/key.d.ts +0 -6
- package/build/runtime/lib/log.d.ts +0 -6
- package/build/runtime/lib/lru.d.ts +0 -52
- package/build/runtime/lib/pageInfo.d.ts +0 -7
- package/build/runtime/lib/pagination.d.ts +0 -27
- package/build/runtime/lib/scalars.d.ts +0 -14
- package/build/runtime/lib/selection.d.ts +0 -2
- package/build/runtime/public/cache.d.ts +0 -42
- package/build/runtime/public/index.d.ts +0 -1
- package/build/runtime/public/list.d.ts +0 -18
- package/build/runtime/public/record.d.ts +0 -40
- package/build/runtime/public/tests/test.d.ts +0 -156
- package/build/runtime/public/types.d.ts +0 -62
- package/build/runtime/router/cookies.d.ts +0 -41
- package/build/runtime/router/jwt.d.ts +0 -117
- package/build/runtime/router/server.d.ts +0 -24
- package/build/runtime/router/types.d.ts +0 -26
- package/build/runtime/server/index.d.ts +0 -17
- package/build/runtime-cjs/cache/cache.d.ts +0 -169
- package/build/runtime-cjs/cache/cache.js +0 -1077
- package/build/runtime-cjs/cache/constants.d.ts +0 -1
- package/build/runtime-cjs/cache/constants.js +0 -28
- package/build/runtime-cjs/cache/gc.d.ts +0 -10
- package/build/runtime-cjs/cache/gc.js +0 -74
- package/build/runtime-cjs/cache/index.d.ts +0 -3
- package/build/runtime-cjs/cache/index.js +0 -25
- package/build/runtime-cjs/cache/lists.d.ts +0 -89
- package/build/runtime-cjs/cache/lists.js +0 -467
- package/build/runtime-cjs/cache/staleManager.d.ts +0 -31
- package/build/runtime-cjs/cache/staleManager.js +0 -123
- package/build/runtime-cjs/cache/storage.d.ts +0 -110
- package/build/runtime-cjs/cache/storage.js +0 -451
- package/build/runtime-cjs/cache/stuff.d.ts +0 -2
- package/build/runtime-cjs/cache/stuff.js +0 -56
- package/build/runtime-cjs/cache/subscription.d.ts +0 -52
- package/build/runtime-cjs/cache/subscription.js +0 -349
- package/build/runtime-cjs/client/documentStore.d.ts +0 -107
- package/build/runtime-cjs/client/documentStore.js +0 -487
- package/build/runtime-cjs/client/index.d.ts +0 -50
- package/build/runtime-cjs/client/index.js +0 -162
- package/build/runtime-cjs/client/plugins/cache.d.ts +0 -9
- package/build/runtime-cjs/client/plugins/cache.js +0 -138
- package/build/runtime-cjs/client/plugins/fetch.d.ts +0 -38
- package/build/runtime-cjs/client/plugins/fetch.js +0 -210
- package/build/runtime-cjs/client/plugins/fetchParams.d.ts +0 -9
- package/build/runtime-cjs/client/plugins/fetchParams.js +0 -47
- package/build/runtime-cjs/client/plugins/fragment.d.ts +0 -2
- package/build/runtime-cjs/client/plugins/fragment.js +0 -77
- package/build/runtime-cjs/client/plugins/index.d.ts +0 -9
- package/build/runtime-cjs/client/plugins/index.js +0 -45
- package/build/runtime-cjs/client/plugins/injectedPlugins.d.ts +0 -4
- package/build/runtime-cjs/client/plugins/injectedPlugins.js +0 -25
- package/build/runtime-cjs/client/plugins/mutation.d.ts +0 -2
- package/build/runtime-cjs/client/plugins/mutation.js +0 -89
- package/build/runtime-cjs/client/plugins/optimisticKeys.d.ts +0 -7
- package/build/runtime-cjs/client/plugins/optimisticKeys.js +0 -324
- package/build/runtime-cjs/client/plugins/query.d.ts +0 -2
- package/build/runtime-cjs/client/plugins/query.js +0 -93
- package/build/runtime-cjs/client/plugins/subscription.d.ts +0 -20
- package/build/runtime-cjs/client/plugins/subscription.js +0 -114
- package/build/runtime-cjs/client/plugins/test.d.ts +0 -15
- package/build/runtime-cjs/client/plugins/test.js +0 -118
- package/build/runtime-cjs/client/plugins/throwOnError.d.ts +0 -8
- package/build/runtime-cjs/client/plugins/throwOnError.js +0 -47
- package/build/runtime-cjs/client/utils/documentPlugins.d.ts +0 -3
- package/build/runtime-cjs/client/utils/documentPlugins.js +0 -57
- package/build/runtime-cjs/client/utils/index.d.ts +0 -1
- package/build/runtime-cjs/client/utils/index.js +0 -22
- package/build/runtime-cjs/generated.d.ts +0 -5
- package/build/runtime-cjs/generated.js +0 -16
- package/build/runtime-cjs/imports/config.d.ts +0 -3
- package/build/runtime-cjs/imports/config.js +0 -24
- package/build/runtime-cjs/imports/pluginConfig.d.ts +0 -3
- package/build/runtime-cjs/imports/pluginConfig.js +0 -25
- package/build/runtime-cjs/index.d.ts +0 -8
- package/build/runtime-cjs/index.js +0 -61
- package/build/runtime-cjs/lib/config.d.ts +0 -216
- package/build/runtime-cjs/lib/config.js +0 -110
- package/build/runtime-cjs/lib/constants.d.ts +0 -6
- package/build/runtime-cjs/lib/constants.js +0 -38
- package/build/runtime-cjs/lib/deepEquals.js +0 -52
- package/build/runtime-cjs/lib/flatten.js +0 -41
- package/build/runtime-cjs/lib/index.d.ts +0 -10
- package/build/runtime-cjs/lib/index.js +0 -40
- package/build/runtime-cjs/lib/key.js +0 -41
- package/build/runtime-cjs/lib/log.js +0 -72
- package/build/runtime-cjs/lib/lru.js +0 -73
- package/build/runtime-cjs/lib/pageInfo.js +0 -79
- package/build/runtime-cjs/lib/pagination.js +0 -240
- package/build/runtime-cjs/lib/scalars.js +0 -147
- package/build/runtime-cjs/lib/selection.js +0 -66
- package/build/runtime-cjs/lib/store.d.ts +0 -19
- package/build/runtime-cjs/lib/store.js +0 -81
- package/build/runtime-cjs/lib/types.d.ts +0 -417
- package/build/runtime-cjs/lib/types.js +0 -104
- package/build/runtime-cjs/package.json +0 -1
- package/build/runtime-cjs/public/cache.d.ts +0 -42
- package/build/runtime-cjs/public/cache.js +0 -98
- package/build/runtime-cjs/public/index.d.ts +0 -1
- package/build/runtime-cjs/public/index.js +0 -28
- package/build/runtime-cjs/public/list.d.ts +0 -18
- package/build/runtime-cjs/public/list.js +0 -151
- package/build/runtime-cjs/public/record.d.ts +0 -40
- package/build/runtime-cjs/public/record.js +0 -94
- package/build/runtime-cjs/public/tests/test.d.ts +0 -156
- package/build/runtime-cjs/public/tests/test.js +0 -60
- package/build/runtime-cjs/public/types.d.ts +0 -62
- package/build/runtime-cjs/public/types.js +0 -16
- package/build/runtime-cjs/router/cookies.js +0 -168
- package/build/runtime-cjs/router/jwt.js +0 -168
- package/build/runtime-cjs/router/match.d.ts +0 -39
- package/build/runtime-cjs/router/match.js +0 -158
- package/build/runtime-cjs/router/server.d.ts +0 -24
- package/build/runtime-cjs/router/server.js +0 -117
- package/build/runtime-cjs/router/session.d.ts +0 -22
- package/build/runtime-cjs/router/session.js +0 -100
- package/build/runtime-cjs/router/types.d.ts +0 -26
- package/build/runtime-cjs/router/types.js +0 -16
- package/build/runtime-cjs/server/index.d.ts +0 -17
- package/build/runtime-cjs/server/index.js +0 -62
- package/build/runtime-esm/cache/cache.d.ts +0 -169
- package/build/runtime-esm/cache/constants.d.ts +0 -1
- package/build/runtime-esm/cache/gc.d.ts +0 -10
- package/build/runtime-esm/cache/index.d.ts +0 -3
- package/build/runtime-esm/cache/index.js +0 -5
- package/build/runtime-esm/cache/lists.d.ts +0 -89
- package/build/runtime-esm/cache/staleManager.d.ts +0 -31
- package/build/runtime-esm/cache/storage.d.ts +0 -110
- package/build/runtime-esm/cache/stuff.d.ts +0 -2
- package/build/runtime-esm/cache/subscription.d.ts +0 -52
- package/build/runtime-esm/client/documentStore.d.ts +0 -107
- package/build/runtime-esm/client/index.d.ts +0 -50
- package/build/runtime-esm/client/index.js +0 -130
- package/build/runtime-esm/client/plugins/cache.d.ts +0 -9
- package/build/runtime-esm/client/plugins/cache.js +0 -104
- package/build/runtime-esm/client/plugins/fetch.d.ts +0 -38
- package/build/runtime-esm/client/plugins/fetch.js +0 -184
- package/build/runtime-esm/client/plugins/fetchParams.d.ts +0 -9
- package/build/runtime-esm/client/plugins/fetchParams.js +0 -23
- package/build/runtime-esm/client/plugins/fragment.d.ts +0 -2
- package/build/runtime-esm/client/plugins/fragment.js +0 -53
- package/build/runtime-esm/client/plugins/index.d.ts +0 -9
- package/build/runtime-esm/client/plugins/index.js +0 -12
- package/build/runtime-esm/client/plugins/injectedPlugins.d.ts +0 -4
- package/build/runtime-esm/client/plugins/injectedPlugins.js +0 -5
- package/build/runtime-esm/client/plugins/mutation.d.ts +0 -2
- package/build/runtime-esm/client/plugins/mutation.js +0 -65
- package/build/runtime-esm/client/plugins/optimisticKeys.d.ts +0 -7
- package/build/runtime-esm/client/plugins/optimisticKeys.js +0 -290
- package/build/runtime-esm/client/plugins/query.d.ts +0 -2
- package/build/runtime-esm/client/plugins/query.js +0 -69
- package/build/runtime-esm/client/plugins/subscription.d.ts +0 -20
- package/build/runtime-esm/client/plugins/subscription.js +0 -90
- package/build/runtime-esm/client/plugins/test.d.ts +0 -15
- package/build/runtime-esm/client/plugins/test.js +0 -93
- package/build/runtime-esm/client/plugins/throwOnError.d.ts +0 -8
- package/build/runtime-esm/client/plugins/throwOnError.js +0 -23
- package/build/runtime-esm/client/utils/documentPlugins.d.ts +0 -3
- package/build/runtime-esm/client/utils/documentPlugins.js +0 -33
- package/build/runtime-esm/client/utils/index.d.ts +0 -1
- package/build/runtime-esm/client/utils/index.js +0 -1
- package/build/runtime-esm/generated.d.ts +0 -5
- package/build/runtime-esm/generated.js +0 -0
- package/build/runtime-esm/imports/config.d.ts +0 -3
- package/build/runtime-esm/imports/config.js +0 -4
- package/build/runtime-esm/imports/pluginConfig.d.ts +0 -3
- package/build/runtime-esm/imports/pluginConfig.js +0 -5
- package/build/runtime-esm/index.d.ts +0 -8
- package/build/runtime-esm/index.js +0 -22
- package/build/runtime-esm/lib/config.d.ts +0 -216
- package/build/runtime-esm/lib/config.js +0 -69
- package/build/runtime-esm/lib/constants.d.ts +0 -6
- package/build/runtime-esm/lib/deepEquals.d.ts +0 -1
- package/build/runtime-esm/lib/flatten.d.ts +0 -2
- package/build/runtime-esm/lib/index.d.ts +0 -10
- package/build/runtime-esm/lib/index.js +0 -10
- package/build/runtime-esm/lib/key.d.ts +0 -6
- package/build/runtime-esm/lib/log.d.ts +0 -6
- package/build/runtime-esm/lib/lru.d.ts +0 -52
- package/build/runtime-esm/lib/pageInfo.d.ts +0 -7
- package/build/runtime-esm/lib/pagination.d.ts +0 -27
- package/build/runtime-esm/lib/scalars.d.ts +0 -14
- package/build/runtime-esm/lib/selection.d.ts +0 -2
- package/build/runtime-esm/lib/store.d.ts +0 -19
- package/build/runtime-esm/lib/types.d.ts +0 -417
- package/build/runtime-esm/public/cache.d.ts +0 -42
- package/build/runtime-esm/public/cache.js +0 -74
- package/build/runtime-esm/public/index.d.ts +0 -1
- package/build/runtime-esm/public/index.js +0 -4
- package/build/runtime-esm/public/list.d.ts +0 -18
- package/build/runtime-esm/public/list.js +0 -127
- package/build/runtime-esm/public/record.d.ts +0 -40
- package/build/runtime-esm/public/record.js +0 -70
- package/build/runtime-esm/public/tests/test.d.ts +0 -156
- package/build/runtime-esm/public/tests/test.js +0 -36
- package/build/runtime-esm/public/types.d.ts +0 -62
- package/build/runtime-esm/router/cookies.d.ts +0 -41
- package/build/runtime-esm/router/jwt.d.ts +0 -117
- package/build/runtime-esm/router/match.d.ts +0 -39
- package/build/runtime-esm/router/match.js +0 -131
- package/build/runtime-esm/router/server.d.ts +0 -24
- package/build/runtime-esm/router/server.js +0 -92
- package/build/runtime-esm/router/session.d.ts +0 -22
- package/build/runtime-esm/router/session.js +0 -74
- package/build/runtime-esm/router/types.d.ts +0 -26
- package/build/runtime-esm/router/types.js +0 -0
- package/build/runtime-esm/server/index.d.ts +0 -17
- package/build/runtime-esm/server/index.js +0 -38
- package/build/test-cjs/index.js +0 -75249
- package/build/test-cjs/package.json +0 -1
- package/build/test-esm/index.js +0 -75244
- package/build/vite/imports.d.ts +0 -40
- package/build/vite-cjs/index.js +0 -86272
- package/build/vite-cjs/package.json +0 -1
- package/build/vite-esm/index.js +0 -86264
- /package/build/{adapter-esm → adapter}/package.json +0 -0
- /package/build/{cmd-esm → cmd}/package.json +0 -0
- /package/build/{vite → lib}/ast.d.ts +0 -0
- /package/build/{codegen-esm → lib}/package.json +0 -0
- /package/build/{lib-esm → node}/package.json +0 -0
- /package/build/{runtime-esm → oauth}/package.json +0 -0
- /package/build/{runtime-cjs/router → router}/cookies.d.ts +0 -0
- /package/build/{runtime-cjs/router → router}/jwt.d.ts +0 -0
- /package/build/{test-esm → router}/package.json +0 -0
- /package/build/{runtime-esm/public → router}/types.js +0 -0
- /package/build/{runtime-esm → runtime}/cache/constants.js +0 -0
- /package/build/{runtime-esm/lib → runtime}/constants.js +0 -0
- /package/build/{runtime-cjs/lib → runtime}/deepEquals.d.ts +0 -0
- /package/build/{runtime-esm/lib → runtime}/deepEquals.js +0 -0
- /package/build/{runtime-esm/lib → runtime}/flatten.js +0 -0
- /package/build/{runtime-cjs/lib → runtime}/log.d.ts +0 -0
- /package/build/{runtime-cjs/lib → runtime}/lru.d.ts +0 -0
- /package/build/{runtime-esm/lib → runtime}/lru.js +0 -0
- /package/build/{vite-esm → runtime}/package.json +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
const DEFAULT_AUTH_URL = "/_auth";
|
|
2
|
+
let _authUrl;
|
|
3
|
+
function setAuthUrl(url) {
|
|
4
|
+
_authUrl = url || void 0;
|
|
5
|
+
}
|
|
6
|
+
function getAuthUrl() {
|
|
7
|
+
return _authUrl ?? DEFAULT_AUTH_URL;
|
|
8
|
+
}
|
|
9
|
+
const DEFAULT_API_ENDPOINT = "/_api";
|
|
10
|
+
function resolveApiEndpoint(config) {
|
|
11
|
+
return config.url ?? config.apiURL ?? DEFAULT_API_ENDPOINT;
|
|
12
|
+
}
|
|
13
|
+
const HOUDINI_SESSION_EVENT = "_houdini_session_";
|
|
14
|
+
let mockConfig = null;
|
|
15
|
+
function getMockConfig() {
|
|
16
|
+
return mockConfig;
|
|
17
|
+
}
|
|
18
|
+
function setMockConfig(config) {
|
|
19
|
+
mockConfig = config;
|
|
20
|
+
}
|
|
21
|
+
function defaultConfigValues(file) {
|
|
22
|
+
return {
|
|
23
|
+
defaultKeys: ["id"],
|
|
24
|
+
...file,
|
|
25
|
+
types: {
|
|
26
|
+
Node: {
|
|
27
|
+
keys: ["id"],
|
|
28
|
+
resolve: {
|
|
29
|
+
queryField: "node",
|
|
30
|
+
arguments: (node) => ({ id: node.id })
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
...file.types
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function keyFieldsForType(configFile, type) {
|
|
38
|
+
const withDefault = defaultConfigValues(configFile);
|
|
39
|
+
return withDefault.types?.[type]?.keys || withDefault.defaultKeys;
|
|
40
|
+
}
|
|
41
|
+
function entityRefetchVariables(configFile, targetType, state) {
|
|
42
|
+
if (!targetType || targetType === "Query" || !state) {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
const config = defaultConfigValues(configFile);
|
|
46
|
+
const typeConfig = config.types?.[targetType];
|
|
47
|
+
if (typeConfig?.resolve?.arguments) {
|
|
48
|
+
return typeConfig.resolve.arguments(state) ?? {};
|
|
49
|
+
}
|
|
50
|
+
const keys = keyFieldsForType(config, targetType);
|
|
51
|
+
return Object.fromEntries(keys.map((key) => [key, state[key]]));
|
|
52
|
+
}
|
|
53
|
+
function computeID(configFile, type, data) {
|
|
54
|
+
const fields = keyFieldsForType(configFile, type);
|
|
55
|
+
let id = "";
|
|
56
|
+
for (const field of fields) {
|
|
57
|
+
id += `${data[field]}__`;
|
|
58
|
+
}
|
|
59
|
+
return id.slice(0, -2);
|
|
60
|
+
}
|
|
61
|
+
let _configFile = null;
|
|
62
|
+
function getCurrentConfig() {
|
|
63
|
+
const mockConfig2 = getMockConfig();
|
|
64
|
+
if (mockConfig2) {
|
|
65
|
+
return mockConfig2;
|
|
66
|
+
}
|
|
67
|
+
if (_configFile) {
|
|
68
|
+
return _configFile;
|
|
69
|
+
}
|
|
70
|
+
const defaultConfig = defaultConfigValues({});
|
|
71
|
+
_configFile = defaultConfig;
|
|
72
|
+
return defaultConfig;
|
|
73
|
+
}
|
|
74
|
+
export {
|
|
75
|
+
DEFAULT_API_ENDPOINT,
|
|
76
|
+
DEFAULT_AUTH_URL,
|
|
77
|
+
HOUDINI_SESSION_EVENT,
|
|
78
|
+
computeID,
|
|
79
|
+
defaultConfigValues,
|
|
80
|
+
entityRefetchVariables,
|
|
81
|
+
getAuthUrl,
|
|
82
|
+
getCurrentConfig,
|
|
83
|
+
getMockConfig,
|
|
84
|
+
keyFieldsForType,
|
|
85
|
+
resolveApiEndpoint,
|
|
86
|
+
setAuthUrl,
|
|
87
|
+
setMockConfig
|
|
88
|
+
};
|
|
@@ -3,4 +3,4 @@ export declare const siteURL = "SITE_URL";
|
|
|
3
3
|
* @param focus example "#0160"
|
|
4
4
|
*/
|
|
5
5
|
export declare const InfoReleaseNote: (focus?: string) => string;
|
|
6
|
-
export declare const OutdatedFunctionInlineInfo: (type:
|
|
6
|
+
export declare const OutdatedFunctionInlineInfo: (type: "query" | "paginatedQuery" | "mutation" | "subscription", name: string) => string;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import type { Layer } from '
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export declare class DocumentStore<_Data extends GraphQLObject, _Input extends GraphQLVariables> extends Writable<QueryResult<_Data, _Input>> {
|
|
1
|
+
import type { ConfigFile } from 'houdini';
|
|
2
|
+
import type { HoudiniClient } from './index.js';
|
|
3
|
+
import type { Layer } from './cache/storage.js';
|
|
4
|
+
import { Writable } from './store.js';
|
|
5
|
+
import type { DocumentArtifact, QueryResult, GraphQLObject, SubscriptionSpec, CachePolicies, GraphQLVariables } from './types.js';
|
|
6
|
+
export declare class DocumentStore<_Data extends GraphQLObject, _Input extends GraphQLVariables | undefined> extends Writable<QueryResult<_Data, _Input>> {
|
|
8
7
|
#private;
|
|
9
8
|
readonly artifact: DocumentArtifact;
|
|
10
9
|
pendingPromise: {
|
|
@@ -12,19 +11,24 @@ export declare class DocumentStore<_Data extends GraphQLObject, _Input extends G
|
|
|
12
11
|
} | null;
|
|
13
12
|
serverSideFallback?: boolean;
|
|
14
13
|
controllerKey(variables: any): string;
|
|
15
|
-
constructor({ artifact, plugins,
|
|
14
|
+
constructor({ artifact, plugins, client, initialValue, initialVariables, fetching, proxies, config, }: {
|
|
16
15
|
artifact: DocumentArtifact;
|
|
17
16
|
plugins?: ClientHooks[];
|
|
18
|
-
pipeline?: ClientHooks[];
|
|
19
17
|
client: HoudiniClient | null;
|
|
20
|
-
cache?: Cache;
|
|
21
18
|
enableCache?: boolean;
|
|
22
19
|
initialValue?: _Data | null;
|
|
23
20
|
fetching?: boolean;
|
|
24
21
|
serverSideFallback?: boolean;
|
|
25
22
|
initialVariables?: _Input;
|
|
23
|
+
proxies?: Record<string, (operation: {
|
|
24
|
+
query: string;
|
|
25
|
+
variables: any;
|
|
26
|
+
operationName: string;
|
|
27
|
+
session: App.Session | null | undefined;
|
|
28
|
+
}) => Promise<any>>;
|
|
29
|
+
config: ConfigFile;
|
|
26
30
|
});
|
|
27
|
-
send({ metadata, session, fetch, variables, policy, stuff, cacheParams, setup, silenceEcho, abortController, }?: SendParams): Promise<QueryResult<_Data, _Input>>;
|
|
31
|
+
send({ metadata, session, fetch, variables, policy, stuff, cacheParams, setup, initialState, silenceEcho, abortController, }?: SendParams): Promise<QueryResult<_Data, _Input>>;
|
|
28
32
|
cleanup(): Promise<void>;
|
|
29
33
|
getFetch(getSession: () => App.Session | null | undefined): (input: RequestInfo | URL, init?: RequestInit | undefined) => Promise<Response>;
|
|
30
34
|
}
|
|
@@ -45,6 +49,7 @@ export type ClientPluginContext = {
|
|
|
45
49
|
name: string;
|
|
46
50
|
text: string;
|
|
47
51
|
hash: string;
|
|
52
|
+
documentStore: DocumentStore<any, any>;
|
|
48
53
|
artifact: DocumentArtifact;
|
|
49
54
|
policy?: CachePolicies;
|
|
50
55
|
fetch?: Fetch;
|
|
@@ -60,6 +65,7 @@ export type ClientPluginContext = {
|
|
|
60
65
|
disableWrite?: boolean;
|
|
61
66
|
disableRead?: boolean;
|
|
62
67
|
disableSubscriptions?: boolean;
|
|
68
|
+
disablePartial?: boolean;
|
|
63
69
|
applyUpdates?: string[];
|
|
64
70
|
serverSideFallback?: boolean;
|
|
65
71
|
};
|
|
@@ -101,6 +107,7 @@ export type SendParams = {
|
|
|
101
107
|
stuff?: Partial<App.Stuff>;
|
|
102
108
|
cacheParams?: ClientPluginContext['cacheParams'];
|
|
103
109
|
setup?: boolean;
|
|
110
|
+
initialState?: QueryResult;
|
|
104
111
|
silenceEcho?: boolean;
|
|
105
112
|
abortController?: AbortController;
|
|
106
113
|
};
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { ArtifactKind, DedupeMatchMode } from "../lib/types";
|
|
6
|
-
import { cachePolicy } from "./plugins";
|
|
1
|
+
import { deepEquals } from "./deepEquals.js";
|
|
2
|
+
import { marshalInputs } from "./scalars.js";
|
|
3
|
+
import { Writable } from "./store.js";
|
|
4
|
+
import { ArtifactKind, DedupeMatchMode } from "./types.js";
|
|
7
5
|
const steps = {
|
|
8
6
|
forward: ["start", "beforeNetwork", "network"],
|
|
9
7
|
backwards: ["end", "afterNetwork"]
|
|
10
8
|
};
|
|
11
|
-
|
|
9
|
+
const inflightRequests = {};
|
|
12
10
|
class DocumentStore extends Writable {
|
|
13
11
|
artifact;
|
|
14
12
|
#client;
|
|
13
|
+
#proxies = {};
|
|
15
14
|
#configFile;
|
|
16
15
|
// the list of instantiated plugins
|
|
17
16
|
#plugins;
|
|
@@ -30,13 +29,12 @@ class DocumentStore extends Writable {
|
|
|
30
29
|
constructor({
|
|
31
30
|
artifact,
|
|
32
31
|
plugins,
|
|
33
|
-
pipeline,
|
|
34
32
|
client,
|
|
35
|
-
cache,
|
|
36
|
-
enableCache = true,
|
|
37
33
|
initialValue,
|
|
38
34
|
initialVariables,
|
|
39
|
-
fetching
|
|
35
|
+
fetching,
|
|
36
|
+
proxies = {},
|
|
37
|
+
config
|
|
40
38
|
}) {
|
|
41
39
|
fetching ??= artifact.kind === ArtifactKind.Query;
|
|
42
40
|
const initialState = {
|
|
@@ -57,24 +55,9 @@ class DocumentStore extends Writable {
|
|
|
57
55
|
this.artifact = artifact;
|
|
58
56
|
this.#client = client;
|
|
59
57
|
this.#lastVariables = null;
|
|
60
|
-
this.#configFile =
|
|
61
|
-
this.#plugins =
|
|
62
|
-
|
|
63
|
-
cachePolicy({
|
|
64
|
-
cache,
|
|
65
|
-
enabled: enableCache,
|
|
66
|
-
setFetching: (fetching2, data) => {
|
|
67
|
-
this.update((state) => {
|
|
68
|
-
const newState = { ...state, fetching: fetching2 };
|
|
69
|
-
if (fetching2 && data) {
|
|
70
|
-
newState.data = data;
|
|
71
|
-
}
|
|
72
|
-
return newState;
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
})(),
|
|
76
|
-
...plugins ?? []
|
|
77
|
-
];
|
|
58
|
+
this.#configFile = config;
|
|
59
|
+
this.#plugins = plugins ?? [];
|
|
60
|
+
this.#proxies = proxies;
|
|
78
61
|
}
|
|
79
62
|
// used by the client to send a new set of variables to the pipeline
|
|
80
63
|
async send({
|
|
@@ -86,15 +69,17 @@ class DocumentStore extends Writable {
|
|
|
86
69
|
stuff,
|
|
87
70
|
cacheParams,
|
|
88
71
|
setup = false,
|
|
72
|
+
initialState,
|
|
89
73
|
silenceEcho = false,
|
|
90
74
|
abortController = new AbortController()
|
|
91
75
|
} = {}) {
|
|
92
76
|
if ("dedupe" in this.artifact && this.artifact.dedupe && this.artifact.dedupe.match !== "None") {
|
|
93
77
|
const dedupeKey = this.controllerKey(variables);
|
|
94
|
-
|
|
78
|
+
const existingRequest = inflightRequests[dedupeKey];
|
|
79
|
+
if (existingRequest && !existingRequest.controller.signal.aborted) {
|
|
95
80
|
if (this.artifact.dedupe.cancel === "first") {
|
|
96
|
-
|
|
97
|
-
|
|
81
|
+
existingRequest.controller.abort();
|
|
82
|
+
existingRequest.controller = abortController;
|
|
98
83
|
} else {
|
|
99
84
|
abortController.abort();
|
|
100
85
|
}
|
|
@@ -108,6 +93,7 @@ class DocumentStore extends Writable {
|
|
|
108
93
|
let context = new ClientPluginContextWrapper({
|
|
109
94
|
abortController,
|
|
110
95
|
config: this.#configFile,
|
|
96
|
+
documentStore: this,
|
|
111
97
|
name: this.artifact.name,
|
|
112
98
|
text: this.artifact.raw,
|
|
113
99
|
hash: this.artifact.hash,
|
|
@@ -134,6 +120,7 @@ class DocumentStore extends Writable {
|
|
|
134
120
|
const promise = new Promise((resolve, reject) => {
|
|
135
121
|
const state = {
|
|
136
122
|
setup,
|
|
123
|
+
initialState,
|
|
137
124
|
currentStep: 0,
|
|
138
125
|
index: 0,
|
|
139
126
|
silenceEcho,
|
|
@@ -141,6 +128,7 @@ class DocumentStore extends Writable {
|
|
|
141
128
|
resolved: false,
|
|
142
129
|
resolve,
|
|
143
130
|
reject,
|
|
131
|
+
// biome-ignore lint/suspicious/noThenProperty: thenable required for await support
|
|
144
132
|
then: (...args) => promise.then(...args)
|
|
145
133
|
},
|
|
146
134
|
// patch the context with new variables
|
|
@@ -151,9 +139,11 @@ class DocumentStore extends Writable {
|
|
|
151
139
|
}
|
|
152
140
|
this.#step("forward", state);
|
|
153
141
|
});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
142
|
+
try {
|
|
143
|
+
return await promise;
|
|
144
|
+
} finally {
|
|
145
|
+
delete inflightRequests[this.controllerKey(variables)];
|
|
146
|
+
}
|
|
157
147
|
}
|
|
158
148
|
async cleanup() {
|
|
159
149
|
for (const plugin of this.#plugins) {
|
|
@@ -173,12 +163,14 @@ class DocumentStore extends Writable {
|
|
|
173
163
|
url = new URL(input.url).pathname;
|
|
174
164
|
}
|
|
175
165
|
if (input instanceof Request) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
166
|
+
if ((input.headers.get("content-type") ?? "").includes("application/json")) {
|
|
167
|
+
const body = await input.clone().json();
|
|
168
|
+
if (!Array.isArray(body)) {
|
|
169
|
+
queries = [body];
|
|
170
|
+
}
|
|
179
171
|
}
|
|
180
|
-
} else {
|
|
181
|
-
const body = JSON.parse(init
|
|
172
|
+
} else if (typeof init?.body === "string") {
|
|
173
|
+
const body = JSON.parse(init.body);
|
|
182
174
|
if (!Array.isArray(body)) {
|
|
183
175
|
queries = [body];
|
|
184
176
|
}
|
|
@@ -186,10 +178,10 @@ class DocumentStore extends Writable {
|
|
|
186
178
|
if (!url || queries.length === 0) {
|
|
187
179
|
return await globalThis.fetch(input, init);
|
|
188
180
|
}
|
|
189
|
-
if (this.#
|
|
181
|
+
if (this.#proxies[url]) {
|
|
190
182
|
const result = await Promise.all(
|
|
191
183
|
queries.map(
|
|
192
|
-
(q) => this.#
|
|
184
|
+
(q) => this.#proxies[url]({
|
|
193
185
|
...q,
|
|
194
186
|
session: getSession()
|
|
195
187
|
})
|
|
@@ -209,12 +201,12 @@ class DocumentStore extends Writable {
|
|
|
209
201
|
step = (i) => i - 1;
|
|
210
202
|
}
|
|
211
203
|
for (let index = ctx.index; valid(index); index = step(index)) {
|
|
212
|
-
|
|
204
|
+
const target = this.#plugins[index]?.[hook];
|
|
213
205
|
if (!target) {
|
|
214
206
|
continue;
|
|
215
207
|
}
|
|
216
208
|
const draft = ctx.context.draft();
|
|
217
|
-
|
|
209
|
+
const variablesRefChanged = (newContext) => newContext.variables !== draft.variables;
|
|
218
210
|
const common = {
|
|
219
211
|
initialValue: this.state,
|
|
220
212
|
client: this.#client,
|
|
@@ -265,9 +257,9 @@ class DocumentStore extends Writable {
|
|
|
265
257
|
handlers = {
|
|
266
258
|
...common,
|
|
267
259
|
value,
|
|
268
|
-
resolve: (ctx2, data) => {
|
|
260
|
+
resolve: ((ctx2, data) => {
|
|
269
261
|
return common.resolve(ctx2, data ?? value);
|
|
270
|
-
}
|
|
262
|
+
})
|
|
271
263
|
};
|
|
272
264
|
} else if (direction === "error") {
|
|
273
265
|
handlers = {
|
|
@@ -282,9 +274,11 @@ class DocumentStore extends Writable {
|
|
|
282
274
|
throw abortError;
|
|
283
275
|
}
|
|
284
276
|
const result = target(draft, handlers);
|
|
285
|
-
result
|
|
286
|
-
|
|
287
|
-
|
|
277
|
+
if (result) {
|
|
278
|
+
result?.catch((err) => {
|
|
279
|
+
this.#step("error", { ...ctx, index: index - 1 }, err);
|
|
280
|
+
});
|
|
281
|
+
}
|
|
288
282
|
} catch (err) {
|
|
289
283
|
this.#step("error", { ...ctx, index: index - 1 }, err);
|
|
290
284
|
}
|
|
@@ -292,22 +286,24 @@ class DocumentStore extends Writable {
|
|
|
292
286
|
}
|
|
293
287
|
if (direction === "forward") {
|
|
294
288
|
if (ctx.setup) {
|
|
295
|
-
|
|
289
|
+
this.#step(
|
|
296
290
|
"backwards",
|
|
297
291
|
{
|
|
298
292
|
...ctx,
|
|
299
293
|
currentStep: 0,
|
|
300
294
|
index: this.#plugins.length
|
|
301
295
|
},
|
|
302
|
-
this.state
|
|
296
|
+
ctx.initialState ?? this.state
|
|
303
297
|
);
|
|
298
|
+
return;
|
|
304
299
|
}
|
|
305
300
|
if (ctx.currentStep <= steps.forward.length - 2) {
|
|
306
|
-
|
|
301
|
+
this.#step("forward", {
|
|
307
302
|
...ctx,
|
|
308
303
|
currentStep: ctx.currentStep + 1,
|
|
309
304
|
index: 0
|
|
310
305
|
});
|
|
306
|
+
return;
|
|
311
307
|
}
|
|
312
308
|
throw new Error(
|
|
313
309
|
"Called next() on last possible plugin. Your chain is missing a plugin that calls resolve()."
|
|
@@ -321,7 +317,7 @@ class DocumentStore extends Writable {
|
|
|
321
317
|
return;
|
|
322
318
|
}
|
|
323
319
|
if (ctx.currentStep > 0) {
|
|
324
|
-
|
|
320
|
+
this.#step(
|
|
325
321
|
"backwards",
|
|
326
322
|
{
|
|
327
323
|
...ctx,
|
|
@@ -330,6 +326,7 @@ class DocumentStore extends Writable {
|
|
|
330
326
|
},
|
|
331
327
|
value
|
|
332
328
|
);
|
|
329
|
+
return;
|
|
333
330
|
}
|
|
334
331
|
if (!ctx.silenceEcho || value.data !== this.state.data) {
|
|
335
332
|
this.set(value);
|
|
@@ -386,7 +383,7 @@ class ClientPluginContextWrapper {
|
|
|
386
383
|
...values
|
|
387
384
|
};
|
|
388
385
|
const val = values.variables;
|
|
389
|
-
|
|
386
|
+
const changed = {};
|
|
390
387
|
for (const [name, value] of Object.entries(val ?? {})) {
|
|
391
388
|
if (value !== source.variables?.[name]) {
|
|
392
389
|
changed[name] = value;
|
|
@@ -398,11 +395,11 @@ class ClientPluginContextWrapper {
|
|
|
398
395
|
...ctx.stuff.inputs
|
|
399
396
|
}
|
|
400
397
|
};
|
|
401
|
-
const firstInit = !ctx.stuff.inputs
|
|
398
|
+
const firstInit = !ctx.stuff.inputs?.init;
|
|
402
399
|
const hasChanged = Object.keys(changed).length > 0 || firstInit;
|
|
403
400
|
if (hasChanged) {
|
|
404
401
|
const newVariables = {
|
|
405
|
-
...
|
|
402
|
+
...source.stuff.inputs?.marshaled,
|
|
406
403
|
...marshalInputs({
|
|
407
404
|
artifact,
|
|
408
405
|
input: changed,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RedirectTemplate } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* interpolateRedirect builds an @endpoint redirect URL from its parsed template and the
|
|
4
|
+
* mutation result. Literal segments are emitted verbatim; interpolation paths are resolved
|
|
5
|
+
* against the data and URL-encoded (closing the open-redirect hole at the value level, on
|
|
6
|
+
* top of the compiler's build-time relative-path check).
|
|
7
|
+
*
|
|
8
|
+
* Returns `null` when any interpolation path resolves to null/undefined — the caller then
|
|
9
|
+
* skips the redirect and falls back to PRG-back-to-the-page rather than navigating to
|
|
10
|
+
* `/users/undefined`. Shared by the server form handler and the client form hook so both
|
|
11
|
+
* paths produce the same target.
|
|
12
|
+
*/
|
|
13
|
+
export declare function interpolateRedirect(template: RedirectTemplate, data: any): string | null;
|
|
14
|
+
export declare function valueAtPath(data: any, path: readonly string[]): any;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
function interpolateRedirect(template, data) {
|
|
2
|
+
let url = "";
|
|
3
|
+
for (const part of template) {
|
|
4
|
+
if (typeof part === "string") {
|
|
5
|
+
url += part;
|
|
6
|
+
continue;
|
|
7
|
+
}
|
|
8
|
+
const value = valueAtPath(data, part);
|
|
9
|
+
if (value === null || value === void 0) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
url += encodeURIComponent(String(value));
|
|
13
|
+
}
|
|
14
|
+
return url;
|
|
15
|
+
}
|
|
16
|
+
function valueAtPath(data, path) {
|
|
17
|
+
let cursor = data;
|
|
18
|
+
for (const key of path) {
|
|
19
|
+
if (cursor == null) {
|
|
20
|
+
return void 0;
|
|
21
|
+
}
|
|
22
|
+
cursor = cursor[key];
|
|
23
|
+
}
|
|
24
|
+
return cursor;
|
|
25
|
+
}
|
|
26
|
+
export {
|
|
27
|
+
interpolateRedirect,
|
|
28
|
+
valueAtPath
|
|
29
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type { NestedList } from './types';
|
|
1
|
+
import type { NestedList } from './types.js';
|
|
2
2
|
export declare function flatten<T>(source?: NestedList<T>): T[];
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ConfigFile } from 'houdini';
|
|
2
|
+
import type { InputObject } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* coerceFormData turns a browser FormData into GraphQL variables, driven by a document's
|
|
5
|
+
* compiled `input` metadata. It is the single coercion shared by the client (enhanced
|
|
6
|
+
* form submit) and the server (no-JS form endpoint) so the two paths can't drift.
|
|
7
|
+
*
|
|
8
|
+
* It is a domain wrapper over the shared coercion core (`unmarshalValue`): it folds the
|
|
9
|
+
* flat FormData keys into the right shape, applies the form-specific rules below, and
|
|
10
|
+
* hands custom-scalar leaves to the core. The result holds **rich** runtime values (e.g.
|
|
11
|
+
* Dates), so the normal mutation send re-marshals them — no special, marshal-bypassing
|
|
12
|
+
* code path is needed.
|
|
13
|
+
*
|
|
14
|
+
* Form-specific rules:
|
|
15
|
+
* - an unchecked checkbox is absent from FormData → a missing Boolean becomes `false`
|
|
16
|
+
* - an empty string is "absent" for numbers/enums/custom scalars → `null` (but a real
|
|
17
|
+
* "" is kept for String/ID)
|
|
18
|
+
* - File/Blob values pass through untouched for multipart handling
|
|
19
|
+
*
|
|
20
|
+
* Field-name conventions:
|
|
21
|
+
* - `.` nests: name="input.address.city"
|
|
22
|
+
* - trailing `[]`: name="tags[]" (a scalar list; repeat the field per item)
|
|
23
|
+
*/
|
|
24
|
+
export declare function coerceFormData(formData: FormData, input: InputObject, config?: ConfigFile, allowedFields?: readonly string[]): Record<string, any>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { isFile, unmarshalValue } from "./coerce.js";
|
|
2
|
+
import { getCurrentConfig } from "./config.js";
|
|
3
|
+
function coerceFormData(formData, input, config = getCurrentConfig(), allowedFields) {
|
|
4
|
+
const raw = foldFormData(formData, allowedFields ? new Set(allowedFields) : void 0);
|
|
5
|
+
return coerceObject(raw, input.fields, input, config);
|
|
6
|
+
}
|
|
7
|
+
function foldFormData(formData, allowed) {
|
|
8
|
+
const root = {};
|
|
9
|
+
formData.forEach((value, key) => {
|
|
10
|
+
if (allowed && !allowed.has(key)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const segments = key.split(".");
|
|
14
|
+
let cursor = root;
|
|
15
|
+
segments.forEach((segment, i) => {
|
|
16
|
+
const isLast = i === segments.length - 1;
|
|
17
|
+
const isList = segment.endsWith("[]");
|
|
18
|
+
const name = isList ? segment.slice(0, -2) : segment;
|
|
19
|
+
if (!isLast) {
|
|
20
|
+
cursor[name] = cursor[name] ?? {};
|
|
21
|
+
cursor = cursor[name];
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (isList) {
|
|
25
|
+
cursor[name] = cursor[name] ?? [];
|
|
26
|
+
cursor[name].push(value);
|
|
27
|
+
} else {
|
|
28
|
+
cursor[name] = value;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
return root;
|
|
33
|
+
}
|
|
34
|
+
function coerceObject(raw, fields, input, config) {
|
|
35
|
+
const result = {};
|
|
36
|
+
for (const [field, type] of Object.entries(fields)) {
|
|
37
|
+
const value = raw?.[field];
|
|
38
|
+
const nestedFields = input.types[type];
|
|
39
|
+
if (nestedFields) {
|
|
40
|
+
if (Array.isArray(value)) {
|
|
41
|
+
result[field] = value.map(
|
|
42
|
+
(entry) => coerceObject(entry, nestedFields, input, config)
|
|
43
|
+
);
|
|
44
|
+
} else if (value !== void 0) {
|
|
45
|
+
result[field] = coerceObject(value, nestedFields, input, config);
|
|
46
|
+
}
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (value === void 0) {
|
|
50
|
+
if (type === "Boolean") {
|
|
51
|
+
result[field] = false;
|
|
52
|
+
}
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
result[field] = value.map((entry) => coerceLeaf(entry, type, config));
|
|
57
|
+
} else {
|
|
58
|
+
result[field] = coerceLeaf(value, type, config);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
function coerceLeaf(value, type, config) {
|
|
64
|
+
if (isFile(value)) {
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
const text = typeof value === "string" ? value : String(value);
|
|
68
|
+
if (config.scalars?.[type]) {
|
|
69
|
+
return text === "" ? null : unmarshalValue(text, config.scalars[type]?.unmarshal);
|
|
70
|
+
}
|
|
71
|
+
switch (type) {
|
|
72
|
+
case "Int": {
|
|
73
|
+
if (text === "") return null;
|
|
74
|
+
const parsed = Number.parseInt(text, 10);
|
|
75
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
76
|
+
}
|
|
77
|
+
case "Float": {
|
|
78
|
+
if (text === "") return null;
|
|
79
|
+
const parsed = Number.parseFloat(text);
|
|
80
|
+
return Number.isNaN(parsed) ? null : parsed;
|
|
81
|
+
}
|
|
82
|
+
case "Boolean":
|
|
83
|
+
return text === "true" || text === "on" || text === "1";
|
|
84
|
+
case "String":
|
|
85
|
+
case "ID":
|
|
86
|
+
return text;
|
|
87
|
+
default:
|
|
88
|
+
return text === "" ? null : text;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export {
|
|
92
|
+
coerceFormData
|
|
93
|
+
};
|
package/build/runtime/index.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
1
|
+
export * from './client.js';
|
|
2
|
+
export { decodeScalar, unmarshalValue, type Unmarshaler } from './coerce.js';
|
|
3
|
+
export { deepEquals } from './deepEquals.js';
|
|
4
|
+
export { interpolateRedirect, valueAtPath } from './endpoint.js';
|
|
5
|
+
export { coerceFormData } from './formData.js';
|
|
6
|
+
export { buildGraphQLBody } from './multipart.js';
|
|
7
|
+
export * from './scalars.js';
|
|
8
|
+
export * from './types.js';
|
|
9
|
+
export { computeID, keyFieldsForType, entityRefetchVariables, setMockConfig, getMockConfig, getCurrentConfig, getAuthUrl, setAuthUrl, DEFAULT_AUTH_URL, resolveApiEndpoint, DEFAULT_API_ENDPOINT, HOUDINI_SESSION_EVENT, type HoudiniSessionEventDetail, } from './config.js';
|
|
10
|
+
export { getFieldsForType } from './selection.js';
|
|
11
|
+
export { flatten } from './flatten.js';
|
|
12
|
+
export * from './pageInfo.js';
|
|
13
|
+
export * from './pagination.js';
|
|
14
|
+
export * from './constants.js';
|
|
15
|
+
export * from './log.js';
|
|
16
|
+
export { LRUCache, createLRUCache } from './lru.js';
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export * from "./client.js";
|
|
2
|
+
import { decodeScalar, unmarshalValue } from "./coerce.js";
|
|
3
|
+
import { deepEquals } from "./deepEquals.js";
|
|
4
|
+
import { interpolateRedirect, valueAtPath } from "./endpoint.js";
|
|
5
|
+
import { coerceFormData } from "./formData.js";
|
|
6
|
+
import { buildGraphQLBody } from "./multipart.js";
|
|
7
|
+
export * from "./scalars.js";
|
|
8
|
+
export * from "./types.js";
|
|
9
|
+
import {
|
|
10
|
+
computeID,
|
|
11
|
+
keyFieldsForType,
|
|
12
|
+
entityRefetchVariables,
|
|
13
|
+
setMockConfig,
|
|
14
|
+
getMockConfig,
|
|
15
|
+
getCurrentConfig,
|
|
16
|
+
getAuthUrl,
|
|
17
|
+
setAuthUrl,
|
|
18
|
+
DEFAULT_AUTH_URL,
|
|
19
|
+
resolveApiEndpoint,
|
|
20
|
+
DEFAULT_API_ENDPOINT,
|
|
21
|
+
HOUDINI_SESSION_EVENT
|
|
22
|
+
} from "./config.js";
|
|
23
|
+
import { getFieldsForType } from "./selection.js";
|
|
24
|
+
import { flatten } from "./flatten.js";
|
|
25
|
+
export * from "./pageInfo.js";
|
|
26
|
+
export * from "./pagination.js";
|
|
27
|
+
export * from "./constants.js";
|
|
28
|
+
export * from "./log.js";
|
|
29
|
+
import { LRUCache, createLRUCache } from "./lru.js";
|
|
30
|
+
export {
|
|
31
|
+
DEFAULT_API_ENDPOINT,
|
|
32
|
+
DEFAULT_AUTH_URL,
|
|
33
|
+
HOUDINI_SESSION_EVENT,
|
|
34
|
+
LRUCache,
|
|
35
|
+
buildGraphQLBody,
|
|
36
|
+
coerceFormData,
|
|
37
|
+
computeID,
|
|
38
|
+
createLRUCache,
|
|
39
|
+
decodeScalar,
|
|
40
|
+
deepEquals,
|
|
41
|
+
entityRefetchVariables,
|
|
42
|
+
flatten,
|
|
43
|
+
getAuthUrl,
|
|
44
|
+
getCurrentConfig,
|
|
45
|
+
getFieldsForType,
|
|
46
|
+
getMockConfig,
|
|
47
|
+
interpolateRedirect,
|
|
48
|
+
keyFieldsForType,
|
|
49
|
+
resolveApiEndpoint,
|
|
50
|
+
setAuthUrl,
|
|
51
|
+
setMockConfig,
|
|
52
|
+
unmarshalValue,
|
|
53
|
+
valueAtPath
|
|
54
|
+
};
|