houdini 2.0.0-next.9 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +627 -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 +2 -3
- package/build/lib/parse.js +33 -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} +107 -102
- package/build/{runtime-esm/lib → runtime}/types.js +37 -15
- 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 +433 -0
- package/build/vite/houdini.d.ts +4 -10
- package/build/vite/houdini.js +144 -0
- package/build/vite/index.d.ts +13 -7
- package/build/vite/index.js +106 -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
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { getFieldsForType } from "../
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
1
|
+
import { computeID, defaultConfigValues, keyFieldsForType } from "../config.js";
|
|
2
|
+
import { deepEquals } from "../deepEquals.js";
|
|
3
|
+
import { flatten } from "../flatten.js";
|
|
4
|
+
import { computeKey } from "../key.js";
|
|
5
|
+
import { getFieldsForType } from "../selection.js";
|
|
6
|
+
import { PendingValue } from "../types.js";
|
|
7
|
+
import { ArtifactKind, fragmentKey } from "../types.js";
|
|
8
|
+
import { GarbageCollector } from "./gc.js";
|
|
9
|
+
import { ListManager, opaqueListID } from "./lists.js";
|
|
10
|
+
import { StaleManager } from "./staleManager.js";
|
|
11
|
+
import { InMemoryStorage } from "./storage.js";
|
|
12
|
+
import { evaluateKey, rootID } from "./stuff.js";
|
|
13
|
+
import { filterValue, InMemorySubscriptions } from "./subscription.js";
|
|
13
14
|
class Cache {
|
|
14
15
|
// the internal implementation for a lot of the cache's methods are moved into
|
|
15
16
|
// a second class to avoid users from relying on unstable APIs. typescript's private
|
|
@@ -44,7 +45,8 @@ class Cache {
|
|
|
44
45
|
...args
|
|
45
46
|
}) {
|
|
46
47
|
const layer = layerID ? this._internal_unstable.storage.getLayer(layerID) : this._internal_unstable.storage.topLayer;
|
|
47
|
-
const
|
|
48
|
+
const toNotify = this._internal_unstable.writeSelection({ ...args, layer });
|
|
49
|
+
const subscribers = [...toNotify];
|
|
48
50
|
this.#notifySubscribers(subscribers.concat(notifySubscribers));
|
|
49
51
|
return subscribers;
|
|
50
52
|
}
|
|
@@ -86,7 +88,7 @@ class Cache {
|
|
|
86
88
|
const handler = this._internal_unstable.lists.get(name, parentID, allLists, skipMatches);
|
|
87
89
|
if (!handler) {
|
|
88
90
|
throw new Error(
|
|
89
|
-
`Cannot find list with name: ${name}${parentID ?
|
|
91
|
+
`Cannot find list with name: ${name}${parentID ? ` under parent ${parentID}` : ""}. Is it possible that the query is not mounted?`
|
|
90
92
|
);
|
|
91
93
|
}
|
|
92
94
|
return handler;
|
|
@@ -124,6 +126,33 @@ class Cache {
|
|
|
124
126
|
);
|
|
125
127
|
}
|
|
126
128
|
}
|
|
129
|
+
// ask every document whose data contains the record(s) to refetch itself.
|
|
130
|
+
// this includes documents that only contain a record behind a masked
|
|
131
|
+
// boundary (a fragment spread) thanks to their masked parent subscriptions.
|
|
132
|
+
// passing several ids notifies each document at most once, even if it
|
|
133
|
+
// depends on more than one of them (eg a list returned by a mutation).
|
|
134
|
+
refresh(id) {
|
|
135
|
+
const ids = Array.isArray(id) ? id : [id];
|
|
136
|
+
const notified = /* @__PURE__ */ new Set();
|
|
137
|
+
for (const baseID of ids) {
|
|
138
|
+
const recordIDs = [this._internal_unstable.storage.idMaps[baseID], baseID].filter(
|
|
139
|
+
Boolean
|
|
140
|
+
);
|
|
141
|
+
for (const recordID of recordIDs) {
|
|
142
|
+
for (const [spec] of this._internal_unstable.subscriptions.getAll(recordID, {
|
|
143
|
+
includeMaskedParents: true
|
|
144
|
+
})) {
|
|
145
|
+
if (spec.kind === ArtifactKind.Subscription) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (!notified.has(spec.onMessage)) {
|
|
149
|
+
notified.add(spec.onMessage);
|
|
150
|
+
spec.onMessage({ kind: "refetch" });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
127
156
|
markRecordStale(id, options) {
|
|
128
157
|
if (options.field) {
|
|
129
158
|
const key = computeKey({ field: options.field, args: options.when ?? {} });
|
|
@@ -147,14 +176,18 @@ class Cache {
|
|
|
147
176
|
clearLayer(layerID) {
|
|
148
177
|
const layer = this._internal_unstable.storage.getLayer(layerID);
|
|
149
178
|
if (!layer) {
|
|
150
|
-
throw new Error(
|
|
179
|
+
throw new Error(`Cannot find layer with id: ${layerID}`);
|
|
151
180
|
}
|
|
152
181
|
const toNotify = [];
|
|
153
182
|
const allFields = [];
|
|
154
183
|
for (const target of [layer.fields, layer.links]) {
|
|
155
184
|
for (const [id, fields] of Object.entries(target)) {
|
|
156
185
|
allFields.push(
|
|
157
|
-
...Object.entries(fields).map(([field, value]) => ({
|
|
186
|
+
...Object.entries(fields).map(([field, value]) => ({
|
|
187
|
+
id,
|
|
188
|
+
field,
|
|
189
|
+
value
|
|
190
|
+
}))
|
|
158
191
|
);
|
|
159
192
|
}
|
|
160
193
|
}
|
|
@@ -198,22 +231,29 @@ class Cache {
|
|
|
198
231
|
this._internal_unstable.storage.reset();
|
|
199
232
|
this.#notifySubscribers(subSpecs);
|
|
200
233
|
}
|
|
234
|
+
// returns the current notification generation; fragment references carry this value
|
|
235
|
+
// so hooks can detect which epoch of data they were rendered with
|
|
236
|
+
getEpoch() {
|
|
237
|
+
return this._internal_unstable.epoch;
|
|
238
|
+
}
|
|
201
239
|
#notifySubscribers(subs) {
|
|
202
240
|
if (subs.length === 0) {
|
|
203
241
|
return;
|
|
204
242
|
}
|
|
205
|
-
|
|
243
|
+
this._internal_unstable.epoch++;
|
|
244
|
+
const notified = /* @__PURE__ */ new Set();
|
|
206
245
|
for (const spec of subs) {
|
|
207
|
-
if (!notified.
|
|
208
|
-
notified.
|
|
209
|
-
spec.
|
|
210
|
-
|
|
246
|
+
if (!notified.has(spec.onMessage)) {
|
|
247
|
+
notified.add(spec.onMessage);
|
|
248
|
+
spec.onMessage({
|
|
249
|
+
kind: "update",
|
|
250
|
+
data: this._internal_unstable.getSelection({
|
|
211
251
|
parent: spec.parentID || rootID,
|
|
212
252
|
selection: spec.selection,
|
|
213
253
|
variables: spec.variables?.() || {},
|
|
214
254
|
ignoreMasking: false
|
|
215
255
|
}).data
|
|
216
|
-
);
|
|
256
|
+
});
|
|
217
257
|
}
|
|
218
258
|
}
|
|
219
259
|
}
|
|
@@ -221,6 +261,9 @@ class Cache {
|
|
|
221
261
|
class CacheInternal {
|
|
222
262
|
// for server-side requests we need to be able to flag the cache as disabled so we dont write to it
|
|
223
263
|
disabled = false;
|
|
264
|
+
// monotonically increasing counter incremented on every cache notification flush;
|
|
265
|
+
// threaded into fragment references so hooks know which generation of data they hold
|
|
266
|
+
epoch = 0;
|
|
224
267
|
_config;
|
|
225
268
|
storage;
|
|
226
269
|
subscriptions;
|
|
@@ -260,7 +303,7 @@ class CacheInternal {
|
|
|
260
303
|
}
|
|
261
304
|
}
|
|
262
305
|
get config() {
|
|
263
|
-
return this._config ??
|
|
306
|
+
return this._config ?? {};
|
|
264
307
|
}
|
|
265
308
|
setConfig(config) {
|
|
266
309
|
this._config = config;
|
|
@@ -272,19 +315,19 @@ class CacheInternal {
|
|
|
272
315
|
parent = rootID,
|
|
273
316
|
applyUpdates,
|
|
274
317
|
layer,
|
|
275
|
-
toNotify =
|
|
318
|
+
toNotify = /* @__PURE__ */ new Set(),
|
|
276
319
|
forceNotify,
|
|
277
320
|
forceStale
|
|
278
321
|
}) {
|
|
279
322
|
if (this.disabled) {
|
|
280
|
-
return
|
|
323
|
+
return toNotify;
|
|
281
324
|
}
|
|
282
|
-
|
|
325
|
+
const targetSelection = getFieldsForType(
|
|
283
326
|
selection,
|
|
284
|
-
data
|
|
327
|
+
data.__typename,
|
|
285
328
|
false
|
|
286
329
|
);
|
|
287
|
-
for (
|
|
330
|
+
for (let [field, value] of Object.entries(data)) {
|
|
288
331
|
if (!selection || !targetSelection[field]) {
|
|
289
332
|
continue;
|
|
290
333
|
}
|
|
@@ -297,11 +340,12 @@ class CacheInternal {
|
|
|
297
340
|
updates
|
|
298
341
|
} = targetSelection[field];
|
|
299
342
|
const key = evaluateKey(keyRaw, variables);
|
|
300
|
-
if (value && typeof value === "object" && "__typename" in value && value
|
|
301
|
-
linkedType = value
|
|
343
|
+
if (value && typeof value === "object" && "__typename" in value && value.__typename) {
|
|
344
|
+
linkedType = value.__typename;
|
|
302
345
|
}
|
|
303
346
|
const currentSubscribers = this.subscriptions.get(parent, key);
|
|
304
|
-
const
|
|
347
|
+
const maskedParentSubscribers = this.subscriptions.getMaskedParents(parent, key);
|
|
348
|
+
const specs = currentSubscribers.map((sub) => sub[0]).concat(maskedParentSubscribers.map((sub) => sub[0]));
|
|
305
349
|
const { value: previousValue, displayLayers } = this.storage.get(parent, key);
|
|
306
350
|
const displayLayer = layer.isDisplayLayer(displayLayers);
|
|
307
351
|
if (displayLayer) {
|
|
@@ -326,16 +370,17 @@ class CacheInternal {
|
|
|
326
370
|
}
|
|
327
371
|
}
|
|
328
372
|
}
|
|
329
|
-
if (updates && applyUpdates?.
|
|
330
|
-
newValue = previousValue;
|
|
331
|
-
} else if (updates && applyUpdates?.includes("append") && ["startCursor", "hasPreviousPage"].includes(key)) {
|
|
373
|
+
if (updates && applyUpdates?.some((op) => !updates.includes(op))) {
|
|
332
374
|
newValue = previousValue;
|
|
333
375
|
}
|
|
334
376
|
const valueChanged = !deepEquals(newValue, previousValue);
|
|
335
377
|
if (displayLayer && (valueChanged || forceNotify)) {
|
|
336
|
-
toNotify.
|
|
378
|
+
for (const [sub] of currentSubscribers) toNotify.add(sub);
|
|
337
379
|
}
|
|
338
380
|
layer.writeField(parent, key, newValue);
|
|
381
|
+
if (key === "__typename" && typeof newValue === "string") {
|
|
382
|
+
this.storage.typenames.set(parent, newValue);
|
|
383
|
+
}
|
|
339
384
|
} else if (value === null) {
|
|
340
385
|
if (previousValue === null) {
|
|
341
386
|
continue;
|
|
@@ -345,8 +390,9 @@ class CacheInternal {
|
|
|
345
390
|
this.subscriptions.remove(link, fieldSelection, specs, variables);
|
|
346
391
|
}
|
|
347
392
|
layer.writeLink(parent, key, null);
|
|
348
|
-
toNotify.
|
|
393
|
+
for (const [sub] of currentSubscribers) toNotify.add(sub);
|
|
349
394
|
} else if (value instanceof Object && !Array.isArray(value)) {
|
|
395
|
+
value = value;
|
|
350
396
|
if (isAbstract) {
|
|
351
397
|
if (!value.__typename) {
|
|
352
398
|
throw new Error(
|
|
@@ -358,7 +404,7 @@ class CacheInternal {
|
|
|
358
404
|
if (value !== null) {
|
|
359
405
|
linkedID = !this.isEmbedded(linkedType, value) ? this.id(linkedType, value) : `${parent}.${key}`;
|
|
360
406
|
}
|
|
361
|
-
|
|
407
|
+
const linkChange = linkedID !== previousValue;
|
|
362
408
|
layer.writeLink(parent, key, linkedID);
|
|
363
409
|
if (linkedID && displayLayer && (linkChange || forceNotify)) {
|
|
364
410
|
if (previousValue && typeof previousValue === "string") {
|
|
@@ -370,7 +416,16 @@ class CacheInternal {
|
|
|
370
416
|
variables,
|
|
371
417
|
parentType: linkedType
|
|
372
418
|
});
|
|
373
|
-
|
|
419
|
+
if (maskedParentSubscribers.length > 0) {
|
|
420
|
+
this.subscriptions.addMany({
|
|
421
|
+
parent: linkedID,
|
|
422
|
+
subscribers: maskedParentSubscribers,
|
|
423
|
+
variables,
|
|
424
|
+
parentType: linkedType,
|
|
425
|
+
masked: true
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
for (const [sub] of currentSubscribers) toNotify.add(sub);
|
|
374
429
|
}
|
|
375
430
|
if (linkedID) {
|
|
376
431
|
this.writeSelection({
|
|
@@ -386,7 +441,7 @@ class CacheInternal {
|
|
|
386
441
|
}
|
|
387
442
|
} else if (Array.isArray(value) && // make typescript happy
|
|
388
443
|
(typeof previousValue === "undefined" || previousValue === null || Array.isArray(previousValue))) {
|
|
389
|
-
let oldIDs = [...previousValue
|
|
444
|
+
let oldIDs = [...Array.isArray(previousValue) ? previousValue : []];
|
|
390
445
|
if (updates?.includes("append") || updates?.includes("prepend")) {
|
|
391
446
|
oldIDs = oldIDs.filter((id) => {
|
|
392
447
|
for (const layer2 of this.storage.data) {
|
|
@@ -403,6 +458,11 @@ class CacheInternal {
|
|
|
403
458
|
});
|
|
404
459
|
}
|
|
405
460
|
let linkedIDs = [];
|
|
461
|
+
const insertingUpdates = Boolean(
|
|
462
|
+
applyUpdates?.some(
|
|
463
|
+
(update) => update !== "replace" && updates?.includes(update)
|
|
464
|
+
)
|
|
465
|
+
);
|
|
406
466
|
const { newIDs, nestedIDs } = this.extractNestedListIDs({
|
|
407
467
|
value,
|
|
408
468
|
abstract: Boolean(isAbstract),
|
|
@@ -414,7 +474,8 @@ class CacheInternal {
|
|
|
414
474
|
variables,
|
|
415
475
|
fields: fieldSelection,
|
|
416
476
|
layer,
|
|
417
|
-
forceNotify
|
|
477
|
+
forceNotify,
|
|
478
|
+
previousIDs: !insertingUpdates && Array.isArray(previousValue) ? previousValue : null
|
|
418
479
|
});
|
|
419
480
|
let action = () => {
|
|
420
481
|
layer.writeLink(parent, key, linkedIDs);
|
|
@@ -488,19 +549,28 @@ class CacheInternal {
|
|
|
488
549
|
}
|
|
489
550
|
const contentChanged = !deepEquals(linkedIDs, oldIDs) || previousValue === null;
|
|
490
551
|
if (contentChanged || forceNotify) {
|
|
491
|
-
toNotify.
|
|
552
|
+
for (const [sub] of currentSubscribers) toNotify.add(sub);
|
|
492
553
|
}
|
|
554
|
+
const linkedIDSet = new Set(
|
|
555
|
+
linkedIDs.flat(Infinity)
|
|
556
|
+
);
|
|
493
557
|
for (const lostID of oldIDs) {
|
|
494
|
-
if (
|
|
558
|
+
if (!lostID || linkedIDSet.has(lostID)) {
|
|
495
559
|
continue;
|
|
496
560
|
}
|
|
497
561
|
this.subscriptions.remove(lostID, fieldSelection, specs, variables);
|
|
562
|
+
if (!layer.optimistic && typeof lostID === "string" && lostID.startsWith(`${parent}.${key}[`)) {
|
|
563
|
+
this.storage.removeEmbeddedRecord(lostID);
|
|
564
|
+
this.lifetimes.delete(lostID);
|
|
565
|
+
this.staleManager.deleteRecord(lostID);
|
|
566
|
+
}
|
|
498
567
|
}
|
|
499
568
|
if (contentChanged || oldIDs.length === 0 && newIDs.length === 0) {
|
|
500
569
|
action();
|
|
501
570
|
}
|
|
502
|
-
|
|
503
|
-
|
|
571
|
+
const oldIDSet = new Set(oldIDs);
|
|
572
|
+
for (const id of newIDs) {
|
|
573
|
+
if (id == null || oldIDSet.has(id)) {
|
|
504
574
|
continue;
|
|
505
575
|
}
|
|
506
576
|
this.subscriptions.addMany({
|
|
@@ -509,6 +579,15 @@ class CacheInternal {
|
|
|
509
579
|
variables,
|
|
510
580
|
parentType: linkedType
|
|
511
581
|
});
|
|
582
|
+
if (maskedParentSubscribers.length > 0) {
|
|
583
|
+
this.subscriptions.addMany({
|
|
584
|
+
parent: id,
|
|
585
|
+
subscribers: maskedParentSubscribers,
|
|
586
|
+
variables,
|
|
587
|
+
parentType: linkedType,
|
|
588
|
+
masked: true
|
|
589
|
+
});
|
|
590
|
+
}
|
|
512
591
|
}
|
|
513
592
|
}
|
|
514
593
|
const processedOperations = /* @__PURE__ */ new Set();
|
|
@@ -516,27 +595,43 @@ class CacheInternal {
|
|
|
516
595
|
let parentID;
|
|
517
596
|
if (operation.parentID) {
|
|
518
597
|
if (operation.parentID.kind !== "Variable") {
|
|
519
|
-
parentID = operation.parentID.value;
|
|
598
|
+
parentID = "value" in operation.parentID ? String(operation.parentID.value) : void 0;
|
|
520
599
|
} else {
|
|
521
|
-
const
|
|
600
|
+
const varName = operation.parentID.name.value;
|
|
601
|
+
const id = variables[varName];
|
|
522
602
|
if (typeof id !== "string") {
|
|
523
603
|
throw new Error("parentID value must be a string");
|
|
524
604
|
}
|
|
525
605
|
parentID = id;
|
|
526
606
|
}
|
|
527
607
|
}
|
|
528
|
-
|
|
529
|
-
|
|
608
|
+
let opaqueListID2;
|
|
609
|
+
if (operation.listID) {
|
|
610
|
+
if (operation.listID.kind !== "Variable") {
|
|
611
|
+
opaqueListID2 = "value" in operation.listID ? String(operation.listID.value) : void 0;
|
|
612
|
+
} else {
|
|
613
|
+
const varName = operation.listID.name.value;
|
|
614
|
+
const id = variables[varName];
|
|
615
|
+
if (typeof id !== "string") {
|
|
616
|
+
throw new Error("listID value must be a string");
|
|
617
|
+
}
|
|
618
|
+
opaqueListID2 = id;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
if (operation.list) {
|
|
622
|
+
const exists = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2) : this.lists.get(operation.list, parentID, operation.target === "all");
|
|
623
|
+
if (!exists) continue;
|
|
530
624
|
}
|
|
531
625
|
const targets = Array.isArray(value) ? value : [value];
|
|
532
626
|
for (const target of targets) {
|
|
533
627
|
if (operation.action === "insert" && target instanceof Object && fieldSelection && operation.list) {
|
|
534
|
-
this.cache.list(
|
|
628
|
+
const insertList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
|
|
535
629
|
operation.list,
|
|
536
630
|
parentID,
|
|
537
631
|
operation.target === "all",
|
|
538
632
|
processedOperations
|
|
539
|
-
)
|
|
633
|
+
);
|
|
634
|
+
insertList.when(resolveWhen(operation.when, variables)).addToList(
|
|
540
635
|
fieldSelection,
|
|
541
636
|
target,
|
|
542
637
|
variables,
|
|
@@ -544,42 +639,54 @@ class CacheInternal {
|
|
|
544
639
|
layer
|
|
545
640
|
);
|
|
546
641
|
} else if (operation.action === "toggle" && target instanceof Object && fieldSelection && operation.list) {
|
|
547
|
-
this.cache.list(
|
|
642
|
+
const toggleList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
|
|
548
643
|
operation.list,
|
|
549
644
|
parentID,
|
|
550
645
|
operation.target === "all",
|
|
551
646
|
processedOperations
|
|
552
|
-
)
|
|
647
|
+
);
|
|
648
|
+
toggleList.when(resolveWhen(operation.when, variables)).toggleElement({
|
|
553
649
|
selection: fieldSelection,
|
|
554
650
|
data: target,
|
|
555
651
|
variables,
|
|
556
652
|
where: operation.position || "last",
|
|
557
653
|
layer
|
|
558
654
|
});
|
|
655
|
+
} else if (operation.action === "upsert" && target instanceof Object && fieldSelection && operation.list) {
|
|
656
|
+
const upsertList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
|
|
657
|
+
operation.list,
|
|
658
|
+
parentID,
|
|
659
|
+
operation.target === "all",
|
|
660
|
+
processedOperations
|
|
661
|
+
);
|
|
662
|
+
upsertList.when(operation.when).upsertInList(
|
|
663
|
+
fieldSelection,
|
|
664
|
+
target,
|
|
665
|
+
variables,
|
|
666
|
+
operation.position || "last",
|
|
667
|
+
layer
|
|
668
|
+
);
|
|
559
669
|
} else if (operation.action === "remove" && target instanceof Object && fieldSelection && operation.list) {
|
|
560
|
-
this.cache.list(
|
|
670
|
+
const removeList = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2, processedOperations) : this.cache.list(
|
|
561
671
|
operation.list,
|
|
562
672
|
parentID,
|
|
563
673
|
operation.target === "all",
|
|
564
674
|
processedOperations
|
|
565
|
-
)
|
|
675
|
+
);
|
|
676
|
+
removeList.when(resolveWhen(operation.when, variables)).remove(target, variables, layer);
|
|
566
677
|
} else if (operation.action === "delete" && operation.type && target) {
|
|
567
678
|
const targetID = this.id(operation.type, target);
|
|
568
679
|
if (!targetID) {
|
|
569
680
|
continue;
|
|
570
681
|
}
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
682
|
+
for (const [sub] of this.subscriptions.getAll(targetID).filter((sub2) => sub2[0].parentID !== targetID)) {
|
|
683
|
+
toNotify.add(sub);
|
|
684
|
+
}
|
|
574
685
|
this.cache.delete(targetID, layer);
|
|
575
686
|
}
|
|
576
687
|
}
|
|
577
688
|
if (operation.list) {
|
|
578
|
-
const matchingLists = this.cache.list(
|
|
579
|
-
operation.list,
|
|
580
|
-
parentID,
|
|
581
|
-
operation.target === "all"
|
|
582
|
-
);
|
|
689
|
+
const matchingLists = opaqueListID2 ? this.lists.getByOpaqueID(opaqueListID2) : this.cache.list(operation.list, parentID, operation.target === "all");
|
|
583
690
|
for (const list of matchingLists.lists) {
|
|
584
691
|
processedOperations.add(list.fieldRef);
|
|
585
692
|
}
|
|
@@ -620,8 +727,8 @@ class CacheInternal {
|
|
|
620
727
|
let partial = false;
|
|
621
728
|
let cascadeNull = false;
|
|
622
729
|
let stale = false;
|
|
623
|
-
const typename = this.storage.
|
|
624
|
-
|
|
730
|
+
const typename = this.storage.getTypename(parent);
|
|
731
|
+
const targetSelection = getFieldsForType(selection, typename, !!generateLoading);
|
|
625
732
|
for (const [
|
|
626
733
|
attributeName,
|
|
627
734
|
{
|
|
@@ -644,7 +751,7 @@ class CacheInternal {
|
|
|
644
751
|
return d.name === "include";
|
|
645
752
|
});
|
|
646
753
|
if (includeDirective) {
|
|
647
|
-
if (!evaluateVariables(includeDirective.arguments, variables ?? {})
|
|
754
|
+
if (!evaluateVariables(includeDirective.arguments, variables ?? {}).if) {
|
|
648
755
|
continue;
|
|
649
756
|
}
|
|
650
757
|
}
|
|
@@ -652,7 +759,7 @@ class CacheInternal {
|
|
|
652
759
|
return d.name === "skip";
|
|
653
760
|
});
|
|
654
761
|
if (skipDirective) {
|
|
655
|
-
if (evaluateVariables(skipDirective.arguments, variables ?? {})
|
|
762
|
+
if (evaluateVariables(skipDirective.arguments, variables ?? {}).if) {
|
|
656
763
|
continue;
|
|
657
764
|
}
|
|
658
765
|
}
|
|
@@ -757,6 +864,10 @@ class CacheInternal {
|
|
|
757
864
|
hasData = true;
|
|
758
865
|
}
|
|
759
866
|
}
|
|
867
|
+
if (list?.includeListID && fieldTarget[attributeName] != null) {
|
|
868
|
+
;
|
|
869
|
+
fieldTarget[attributeName].__id = opaqueListID(parent, list.name);
|
|
870
|
+
}
|
|
760
871
|
if (generateLoading && fieldLoading?.list) {
|
|
761
872
|
fieldTarget[attributeName] = wrapInLists(
|
|
762
873
|
Array.from({ length: fieldLoading.list.count }).fill(
|
|
@@ -792,7 +903,7 @@ class CacheInternal {
|
|
|
792
903
|
if (!type) {
|
|
793
904
|
return id;
|
|
794
905
|
}
|
|
795
|
-
return type
|
|
906
|
+
return `${type}:${id}`;
|
|
796
907
|
}
|
|
797
908
|
// the list of fields that we need in order to compute an objects id
|
|
798
909
|
idFields(type) {
|
|
@@ -894,12 +1005,14 @@ class CacheInternal {
|
|
|
894
1005
|
applyUpdates,
|
|
895
1006
|
specs,
|
|
896
1007
|
layer,
|
|
897
|
-
forceNotify
|
|
1008
|
+
forceNotify,
|
|
1009
|
+
previousIDs
|
|
898
1010
|
}) {
|
|
899
1011
|
const nestedIDs = [];
|
|
900
1012
|
const newIDs = [];
|
|
901
1013
|
for (const [i, entry] of value.entries()) {
|
|
902
1014
|
if (Array.isArray(entry)) {
|
|
1015
|
+
const previousEntry = previousIDs?.[i];
|
|
903
1016
|
const inner = this.extractNestedListIDs({
|
|
904
1017
|
value: entry,
|
|
905
1018
|
abstract,
|
|
@@ -911,7 +1024,8 @@ class CacheInternal {
|
|
|
911
1024
|
applyUpdates,
|
|
912
1025
|
specs,
|
|
913
1026
|
layer,
|
|
914
|
-
forceNotify
|
|
1027
|
+
forceNotify,
|
|
1028
|
+
previousIDs: Array.isArray(previousEntry) ? previousEntry : null
|
|
915
1029
|
});
|
|
916
1030
|
newIDs.push(...inner.newIDs);
|
|
917
1031
|
nestedIDs[i] = inner.nestedIDs;
|
|
@@ -923,7 +1037,8 @@ class CacheInternal {
|
|
|
923
1037
|
continue;
|
|
924
1038
|
}
|
|
925
1039
|
const entryObj = entry;
|
|
926
|
-
|
|
1040
|
+
const previousID = previousIDs?.[i];
|
|
1041
|
+
let linkedID = typeof previousID === "string" && previousID.startsWith(`${recordID}.${key}[`) ? previousID : `${recordID}.${key}[${this.storage.nextRank}]`;
|
|
927
1042
|
let innerType = linkedType;
|
|
928
1043
|
const typename = entryObj.__typename;
|
|
929
1044
|
if (typename) {
|
|
@@ -1008,6 +1123,18 @@ function variableValue(value, args) {
|
|
|
1008
1123
|
);
|
|
1009
1124
|
}
|
|
1010
1125
|
}
|
|
1126
|
+
function resolveWhen(when, variables) {
|
|
1127
|
+
if (!when) {
|
|
1128
|
+
return void 0;
|
|
1129
|
+
}
|
|
1130
|
+
const resolve = (conditions) => Object.fromEntries(
|
|
1131
|
+
Object.entries(conditions).map(([key, value]) => [key, filterValue(value, variables)])
|
|
1132
|
+
);
|
|
1133
|
+
return {
|
|
1134
|
+
...when.must ? { must: resolve(when.must) } : {},
|
|
1135
|
+
...when.must_not ? { must_not: resolve(when.must_not) } : {}
|
|
1136
|
+
};
|
|
1137
|
+
}
|
|
1011
1138
|
function fragmentReference({
|
|
1012
1139
|
component,
|
|
1013
1140
|
prop
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type { SubscriptionSelection, ListWhen, SubscriptionSpec } from '../
|
|
2
|
-
import type { Cache } from './
|
|
3
|
-
import type { Layer } from './storage';
|
|
1
|
+
import type { SubscriptionSelection, ListWhen, SubscriptionSpec } from '../types.js';
|
|
2
|
+
import type { Cache } from './index.js';
|
|
3
|
+
import type { Layer } from './storage.js';
|
|
4
|
+
export declare function opaqueListID(parentID: string, listName: string): string;
|
|
4
5
|
export declare class ListManager {
|
|
5
6
|
rootID: string;
|
|
6
7
|
cache: Cache;
|
|
7
8
|
constructor(cache: Cache, rootID: string);
|
|
8
9
|
lists: Map<string, Map<string, ListCollection>>;
|
|
9
10
|
private listsByField;
|
|
11
|
+
private listsByOpaqueID;
|
|
10
12
|
get(listName: string, id?: string, allLists?: boolean, skipMatches?: Set<string>): ListCollection | null;
|
|
13
|
+
getByOpaqueID(opaqueID: string, skipMatches?: Set<string>): ListCollection | null;
|
|
11
14
|
getLists(listName: string, id?: string, allLists?: boolean): ListCollection | null | undefined;
|
|
12
15
|
remove(listName: string, id: string): void;
|
|
13
16
|
add(list: {
|
|
@@ -38,7 +41,7 @@ export declare class List {
|
|
|
38
41
|
readonly name: string;
|
|
39
42
|
private connection;
|
|
40
43
|
private manager;
|
|
41
|
-
|
|
44
|
+
abstract?: boolean;
|
|
42
45
|
constructor({ name, recordID, recordType, key, listType, selection, when, filters, connection, manager, abstract, }: Parameters<ListManager['add']>[0] & {
|
|
43
46
|
manager: ListManager;
|
|
44
47
|
});
|
|
@@ -70,6 +73,7 @@ export declare class List {
|
|
|
70
73
|
layer?: Layer;
|
|
71
74
|
where: 'first' | 'last';
|
|
72
75
|
}): void;
|
|
76
|
+
upsertInList(selection: SubscriptionSelection, data: {}, variables: {} | undefined, where: 'first' | 'last', layer?: Layer): void;
|
|
73
77
|
[Symbol.iterator](): Generator<string, void, unknown>;
|
|
74
78
|
}
|
|
75
79
|
export declare class ListCollection {
|
|
@@ -82,6 +86,7 @@ export declare class ListCollection {
|
|
|
82
86
|
removeID(...args: Parameters<List['removeID']>): boolean;
|
|
83
87
|
remove(...args: Parameters<List['remove']>): void;
|
|
84
88
|
toggleElement(...args: Parameters<List['toggleElement']>): void;
|
|
89
|
+
upsertInList(...args: Parameters<List['upsertInList']>): void;
|
|
85
90
|
when(when?: ListWhen): ListCollection;
|
|
86
91
|
includes(key: string): boolean;
|
|
87
92
|
deleteListWithKey(key: string): List[];
|