houdini 1.0.0-next.1 → 1.0.0-next.3
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/cmd/generate.d.ts +0 -1
- package/build/cmd-cjs/index.js +1400 -2836
- package/build/cmd-esm/index.js +1400 -2836
- package/build/codegen/generators/artifacts/fieldKey.d.ts +1 -1
- package/build/codegen/generators/artifacts/index.d.ts +1 -1
- package/build/codegen/generators/artifacts/indexFile.d.ts +1 -1
- package/build/codegen/generators/artifacts/inputs.d.ts +2 -2
- package/build/codegen/generators/artifacts/operations.d.ts +2 -2
- package/build/codegen/generators/artifacts/selection.d.ts +1 -1
- package/build/codegen/generators/artifacts/utils.d.ts +1 -1
- package/build/codegen/generators/definitions/enums.d.ts +1 -1
- package/build/codegen/generators/definitions/index.d.ts +1 -1
- package/build/codegen/generators/indexFile/index.d.ts +1 -1
- package/build/codegen/generators/persistedQueries/index.d.ts +1 -1
- package/build/codegen/generators/runtime/graphqlFunction.d.ts +2 -0
- package/build/codegen/generators/runtime/index.d.ts +1 -1
- package/build/codegen/generators/runtime/injectPlugins.d.ts +7 -0
- package/build/codegen/generators/runtime/pluginIndex.d.ts +5 -0
- package/build/codegen/generators/typescript/addReferencedInputTypes.d.ts +1 -1
- package/build/codegen/generators/typescript/documentTypes.d.ts +2 -0
- package/build/codegen/generators/typescript/{imperativeCache.d.ts → imperativeTypeDef.d.ts} +1 -1
- package/build/codegen/generators/typescript/index.d.ts +1 -1
- package/build/codegen/generators/typescript/inlineType.d.ts +1 -1
- package/build/codegen/generators/typescript/typeReference.d.ts +1 -1
- package/build/codegen/generators/typescript/types.d.ts +1 -1
- package/build/codegen/index.d.ts +1 -1
- package/build/codegen/transforms/addID.d.ts +1 -1
- package/build/codegen/transforms/composeQueries.d.ts +2 -2
- package/build/codegen/transforms/fragmentVariables.d.ts +3 -2
- package/build/codegen/transforms/list.d.ts +1 -1
- package/build/codegen/transforms/paginate.d.ts +1 -1
- package/build/codegen/transforms/schema.d.ts +1 -1
- package/build/codegen/transforms/typename.d.ts +1 -1
- package/build/codegen/utils/commonjs.d.ts +2 -0
- package/build/codegen/utils/flattenSelections.d.ts +2 -2
- package/build/codegen/utils/moduleExport.d.ts +1 -1
- package/build/codegen/utils/objectIdentificationSelection.d.ts +1 -1
- package/build/codegen/validators/noIDAlias.d.ts +1 -1
- package/build/codegen/validators/typeCheck.d.ts +1 -1
- package/build/codegen-cjs/index.js +1320 -2779
- package/build/codegen-esm/index.js +1320 -2779
- package/build/lib/config.d.ts +9 -4
- package/build/lib/fs.d.ts +1 -1
- package/build/lib/graphql.d.ts +1 -1
- package/build/lib/imports.d.ts +1 -1
- package/build/lib/types.d.ts +3 -3
- package/build/lib/walk.d.ts +8 -5
- package/build/lib-cjs/index.js +155 -1856
- package/build/lib-esm/index.js +155 -1856
- package/build/runtime/cache/cache.d.ts +10 -8
- package/build/runtime/cache/gc.d.ts +1 -1
- package/build/runtime/cache/lists.d.ts +3 -2
- package/build/runtime/cache/schema.d.ts +2 -2
- package/build/runtime/cache/stuff.d.ts +2 -2
- package/build/runtime/cache/subscription.d.ts +19 -11
- package/build/runtime/client/documentStore.d.ts +87 -0
- package/build/runtime/client/index.d.ts +25 -0
- package/build/runtime/client/plugins/cache.d.ts +8 -0
- package/build/runtime/client/plugins/fetch.d.ts +37 -0
- package/build/runtime/client/plugins/fetchParams.d.ts +9 -0
- package/build/runtime/client/plugins/index.d.ts +7 -0
- package/build/runtime/client/plugins/injectedPlugins.d.ts +3 -0
- package/build/runtime/client/plugins/mutation.d.ts +1 -0
- package/build/runtime/client/plugins/query.d.ts +2 -0
- package/build/runtime/client/plugins/subscription.d.ts +18 -0
- package/build/runtime/client/plugins/throwOnError.d.ts +7 -0
- package/build/runtime/client/utils/documentPlugins.d.ts +3 -0
- package/build/runtime/client/utils/index.d.ts +1 -0
- package/build/runtime/generated.d.ts +1 -0
- package/build/runtime/imports/config.d.ts +3 -0
- package/build/runtime/index.d.ts +3 -2
- package/build/runtime/lib/config.d.ts +26 -25
- package/build/runtime/lib/index.d.ts +1 -2
- package/build/runtime/lib/scalars.d.ts +6 -5
- package/build/runtime/lib/selection.d.ts +1 -1
- package/build/runtime/lib/store.d.ts +19 -0
- package/build/runtime/lib/types.d.ts +22 -9
- package/build/runtime/public/cache.d.ts +20 -7
- package/build/runtime/public/list.d.ts +2 -2
- package/build/runtime/public/record.d.ts +18 -18
- package/build/runtime/public/tests/test.d.ts +44 -1
- package/build/runtime/public/types.d.ts +8 -0
- package/build/runtime-cjs/cache/cache.d.ts +10 -8
- package/build/runtime-cjs/cache/cache.js +5 -11
- package/build/runtime-cjs/cache/gc.d.ts +1 -1
- package/build/runtime-cjs/cache/lists.d.ts +3 -2
- package/build/runtime-cjs/cache/lists.js +5 -2
- package/build/runtime-cjs/cache/schema.d.ts +2 -2
- package/build/runtime-cjs/cache/stuff.d.ts +2 -2
- package/build/runtime-cjs/cache/subscription.d.ts +19 -11
- package/build/runtime-cjs/cache/subscription.js +95 -56
- package/build/runtime-cjs/client/documentStore.d.ts +87 -0
- package/build/runtime-cjs/client/documentStore.js +360 -0
- package/build/runtime-cjs/client/index.d.ts +25 -0
- package/build/runtime-cjs/client/index.js +87 -0
- package/build/runtime-cjs/client/plugins/cache.d.ts +8 -0
- package/build/runtime-cjs/client/plugins/cache.js +99 -0
- package/build/runtime-cjs/client/plugins/fetch.d.ts +37 -0
- package/build/runtime-cjs/{lib/networkUtils.js → client/plugins/fetch.js} +95 -3
- package/build/runtime-cjs/client/plugins/fetchParams.d.ts +9 -0
- package/build/runtime-cjs/client/plugins/fetchParams.js +40 -0
- package/build/runtime-cjs/client/plugins/index.d.ts +7 -0
- package/build/runtime-cjs/client/plugins/index.js +24 -0
- package/build/runtime-cjs/client/plugins/injectedPlugins.d.ts +3 -0
- package/build/runtime-cjs/{lib/errors.js → client/plugins/injectedPlugins.js} +7 -15
- package/build/runtime-cjs/client/plugins/mutation.d.ts +1 -0
- package/build/runtime-cjs/client/plugins/mutation.js +86 -0
- package/build/runtime-cjs/client/plugins/query.d.ts +2 -0
- package/build/runtime-cjs/client/plugins/query.js +83 -0
- package/build/runtime-cjs/client/plugins/subscription.d.ts +18 -0
- package/build/runtime-cjs/client/plugins/subscription.js +98 -0
- package/build/runtime-cjs/client/plugins/throwOnError.d.ts +7 -0
- package/build/runtime-cjs/client/plugins/throwOnError.js +47 -0
- package/build/runtime-cjs/client/utils/documentPlugins.d.ts +3 -0
- package/build/runtime-cjs/client/utils/documentPlugins.js +56 -0
- package/build/runtime-cjs/client/utils/index.d.ts +1 -0
- package/build/runtime-cjs/client/utils/index.js +18 -0
- package/build/runtime-cjs/generated.d.ts +1 -0
- package/build/runtime-cjs/imports/config.d.ts +3 -0
- package/build/runtime-cjs/imports/config.js +26 -0
- package/build/runtime-cjs/index.d.ts +3 -2
- package/build/runtime-cjs/index.js +1 -0
- package/build/runtime-cjs/lib/config.d.ts +26 -25
- package/build/runtime-cjs/lib/config.js +5 -4
- package/build/runtime-cjs/lib/index.d.ts +1 -2
- package/build/runtime-cjs/lib/index.js +1 -2
- package/build/runtime-cjs/lib/scalars.d.ts +6 -5
- package/build/runtime-cjs/lib/scalars.js +20 -24
- package/build/runtime-cjs/lib/selection.d.ts +1 -1
- package/build/runtime-cjs/lib/store.d.ts +19 -0
- package/build/runtime-cjs/lib/store.js +81 -0
- package/build/runtime-cjs/lib/types.d.ts +22 -9
- package/build/runtime-cjs/public/cache.d.ts +20 -7
- package/build/runtime-cjs/public/cache.js +29 -32
- package/build/runtime-cjs/public/list.d.ts +2 -2
- package/build/runtime-cjs/public/list.js +6 -28
- package/build/runtime-cjs/public/record.d.ts +18 -18
- package/build/runtime-cjs/public/record.js +23 -189
- package/build/runtime-cjs/public/tests/test.d.ts +44 -1
- package/build/runtime-cjs/public/tests/test.js +27 -2
- package/build/runtime-cjs/public/types.d.ts +8 -0
- package/build/runtime-esm/cache/cache.d.ts +10 -8
- package/build/runtime-esm/cache/cache.js +5 -11
- package/build/runtime-esm/cache/gc.d.ts +1 -1
- package/build/runtime-esm/cache/lists.d.ts +3 -2
- package/build/runtime-esm/cache/lists.js +5 -2
- package/build/runtime-esm/cache/schema.d.ts +2 -2
- package/build/runtime-esm/cache/stuff.d.ts +2 -2
- package/build/runtime-esm/cache/subscription.d.ts +19 -11
- package/build/runtime-esm/cache/subscription.js +95 -56
- package/build/runtime-esm/client/documentStore.d.ts +87 -0
- package/build/runtime-esm/client/documentStore.js +336 -0
- package/build/runtime-esm/client/index.d.ts +25 -0
- package/build/runtime-esm/client/index.js +58 -0
- package/build/runtime-esm/client/plugins/cache.d.ts +8 -0
- package/build/runtime-esm/client/plugins/cache.js +69 -0
- package/build/runtime-esm/client/plugins/fetch.d.ts +37 -0
- package/build/runtime-esm/client/plugins/fetch.js +151 -0
- package/build/runtime-esm/client/plugins/fetchParams.d.ts +9 -0
- package/build/runtime-esm/client/plugins/fetchParams.js +16 -0
- package/build/runtime-esm/client/plugins/index.d.ts +7 -0
- package/build/runtime-esm/client/plugins/index.js +7 -0
- package/build/runtime-esm/client/plugins/injectedPlugins.d.ts +3 -0
- package/build/runtime-esm/client/plugins/injectedPlugins.js +5 -0
- package/build/runtime-esm/client/plugins/mutation.d.ts +1 -0
- package/build/runtime-esm/client/plugins/mutation.js +56 -0
- package/build/runtime-esm/client/plugins/query.d.ts +2 -0
- package/build/runtime-esm/client/plugins/query.js +53 -0
- package/build/runtime-esm/client/plugins/subscription.d.ts +18 -0
- package/build/runtime-esm/client/plugins/subscription.js +74 -0
- package/build/runtime-esm/client/plugins/throwOnError.d.ts +7 -0
- package/build/runtime-esm/client/plugins/throwOnError.js +23 -0
- package/build/runtime-esm/client/utils/documentPlugins.d.ts +3 -0
- package/build/runtime-esm/client/utils/documentPlugins.js +32 -0
- package/build/runtime-esm/client/utils/index.d.ts +1 -0
- package/build/runtime-esm/client/utils/index.js +1 -0
- package/build/runtime-esm/generated.d.ts +1 -0
- package/build/runtime-esm/imports/config.d.ts +3 -0
- package/build/runtime-esm/imports/config.js +4 -0
- package/build/runtime-esm/index.d.ts +3 -2
- package/build/runtime-esm/index.js +1 -0
- package/build/runtime-esm/lib/config.d.ts +26 -25
- package/build/runtime-esm/lib/config.js +5 -4
- package/build/runtime-esm/lib/index.d.ts +1 -2
- package/build/runtime-esm/lib/index.js +1 -2
- package/build/runtime-esm/lib/scalars.d.ts +6 -5
- package/build/runtime-esm/lib/scalars.js +20 -24
- package/build/runtime-esm/lib/selection.d.ts +1 -1
- package/build/runtime-esm/lib/store.d.ts +19 -0
- package/build/runtime-esm/lib/store.js +57 -0
- package/build/runtime-esm/lib/types.d.ts +22 -9
- package/build/runtime-esm/public/cache.d.ts +20 -7
- package/build/runtime-esm/public/cache.js +28 -30
- package/build/runtime-esm/public/list.d.ts +2 -2
- package/build/runtime-esm/public/list.js +6 -28
- package/build/runtime-esm/public/record.d.ts +18 -18
- package/build/runtime-esm/public/record.js +22 -185
- package/build/runtime-esm/public/tests/test.d.ts +44 -1
- package/build/runtime-esm/public/tests/test.js +26 -1
- package/build/runtime-esm/public/types.d.ts +8 -0
- package/build/test/index.d.ts +4 -3
- package/build/test-cjs/index.js +1334 -2766
- package/build/test-esm/index.js +1334 -2766
- package/build/vite/ast.d.ts +1 -1
- package/build/vite/houdini.d.ts +1 -1
- package/build/vite/imports.d.ts +3 -3
- package/build/vite/index.d.ts +1 -1
- package/build/vite/schema.d.ts +1 -1
- package/build/vite-cjs/index.js +1395 -2821
- package/build/vite-esm/index.js +1395 -2821
- package/package.json +1 -1
- package/build/runtime/lib/errors.d.ts +0 -3
- package/build/runtime/lib/network.d.ts +0 -79
- package/build/runtime/lib/networkUtils.d.ts +0 -8
- package/build/runtime-cjs/lib/errors.d.ts +0 -3
- package/build/runtime-cjs/lib/network.d.ts +0 -79
- package/build/runtime-cjs/lib/network.js +0 -200
- package/build/runtime-cjs/lib/networkUtils.d.ts +0 -8
- package/build/runtime-esm/lib/errors.d.ts +0 -3
- package/build/runtime-esm/lib/errors.js +0 -11
- package/build/runtime-esm/lib/network.d.ts +0 -79
- package/build/runtime-esm/lib/network.js +0 -170
- package/build/runtime-esm/lib/networkUtils.d.ts +0 -8
- package/build/runtime-esm/lib/networkUtils.js +0 -60
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { HoudiniClient } from '.';
|
|
2
|
+
import type { Layer } from '../cache/storage';
|
|
3
|
+
import type { ConfigFile } from '../lib/config';
|
|
4
|
+
import { Writable } from '../lib/store';
|
|
5
|
+
import type { CachePolicy, DocumentArtifact, QueryResult, GraphQLObject, SubscriptionSpec } from '../lib/types';
|
|
6
|
+
export declare class DocumentStore<_Data extends GraphQLObject, _Input extends Record<string, any>> extends Writable<QueryResult<_Data, _Input>> {
|
|
7
|
+
#private;
|
|
8
|
+
constructor({ artifact, plugins, pipeline, client, cache, initialValue, fetching, }: {
|
|
9
|
+
artifact: DocumentArtifact;
|
|
10
|
+
plugins?: ClientPlugin[];
|
|
11
|
+
pipeline?: ClientPlugin[];
|
|
12
|
+
client: HoudiniClient;
|
|
13
|
+
cache?: boolean;
|
|
14
|
+
initialValue?: _Data | null;
|
|
15
|
+
fetching?: boolean;
|
|
16
|
+
});
|
|
17
|
+
send({ metadata, session, fetch, variables, policy, stuff, cacheParams, setup, }?: {
|
|
18
|
+
fetch?: Fetch;
|
|
19
|
+
variables?: Record<string, any> | null;
|
|
20
|
+
metadata?: App.Metadata | null;
|
|
21
|
+
session?: App.Session | null;
|
|
22
|
+
policy?: CachePolicy;
|
|
23
|
+
stuff?: Partial<App.Stuff>;
|
|
24
|
+
cacheParams?: ClientPluginContext['cacheParams'];
|
|
25
|
+
setup?: boolean;
|
|
26
|
+
}): Promise<QueryResult<_Data, _Input>>;
|
|
27
|
+
}
|
|
28
|
+
declare function marshalVariables<_Data extends GraphQLObject, _Input extends {}>(ctx: ClientPluginContext): Record<string, any>;
|
|
29
|
+
export type ClientPlugin = () => {
|
|
30
|
+
start?: ClientPluginEnterPhase;
|
|
31
|
+
beforeNetwork?: ClientPluginEnterPhase;
|
|
32
|
+
network?: ClientPluginEnterPhase;
|
|
33
|
+
afterNetwork?: ClientPluginExitPhase;
|
|
34
|
+
end?: ClientPluginExitPhase;
|
|
35
|
+
cleanup?(ctx: ClientPluginContext): void | Promise<void>;
|
|
36
|
+
catch?(ctx: ClientPluginContext, args: ClientPluginErrorHandlers): void | Promise<void>;
|
|
37
|
+
};
|
|
38
|
+
export type Fetch = typeof globalThis.fetch;
|
|
39
|
+
export type ClientPluginContext = {
|
|
40
|
+
config: ConfigFile;
|
|
41
|
+
text: string;
|
|
42
|
+
hash: string;
|
|
43
|
+
artifact: DocumentArtifact;
|
|
44
|
+
policy?: CachePolicy;
|
|
45
|
+
fetch?: Fetch;
|
|
46
|
+
variables?: Record<string, any>;
|
|
47
|
+
metadata?: App.Metadata | null;
|
|
48
|
+
session?: App.Session | null;
|
|
49
|
+
fetchParams?: RequestInit;
|
|
50
|
+
cacheParams?: {
|
|
51
|
+
layer?: Layer;
|
|
52
|
+
notifySubscribers?: SubscriptionSpec[];
|
|
53
|
+
forceNotify?: boolean;
|
|
54
|
+
disableWrite?: boolean;
|
|
55
|
+
disableRead?: boolean;
|
|
56
|
+
applyUpdates?: boolean;
|
|
57
|
+
};
|
|
58
|
+
stuff: App.Stuff;
|
|
59
|
+
};
|
|
60
|
+
type ClientPluginPhase<Handlers> = (ctx: ClientPluginContext, handlers: Handlers) => void | Promise<void>;
|
|
61
|
+
export type ClientPluginEnterPhase = ClientPluginPhase<ClientPluginEnterHandlers>;
|
|
62
|
+
export type ClientPluginExitPhase = ClientPluginPhase<ClientPluginExitHandlers>;
|
|
63
|
+
export type ClientPluginEnterHandlers = {
|
|
64
|
+
initialValue: QueryResult;
|
|
65
|
+
/** A reference to the houdini client to access any configuration values */
|
|
66
|
+
client: HoudiniClient;
|
|
67
|
+
/** Move onto the next step using the provided context. */
|
|
68
|
+
next(ctx: ClientPluginContext): void;
|
|
69
|
+
/** Terminate the current chain */
|
|
70
|
+
resolve(ctx: ClientPluginContext, data: QueryResult): void;
|
|
71
|
+
/** Update the stores state without resolving the promise */
|
|
72
|
+
updateState(updater: (old: QueryResult) => QueryResult): void;
|
|
73
|
+
/** Return true if the variables have changed */
|
|
74
|
+
variablesChanged: (ctx: ClientPluginContext) => boolean;
|
|
75
|
+
/** Returns the marshaled variables for the operation */
|
|
76
|
+
marshalVariables: typeof marshalVariables;
|
|
77
|
+
};
|
|
78
|
+
/** Exit handlers are the same as enter handles but don't need to resolve with a specific value */
|
|
79
|
+
export type ClientPluginExitHandlers = Omit<ClientPluginEnterHandlers, 'resolve'> & {
|
|
80
|
+
resolve: (ctx: ClientPluginContext, data?: QueryResult) => void;
|
|
81
|
+
value: QueryResult;
|
|
82
|
+
};
|
|
83
|
+
/** Exit handlers are the same as enter handles but don't need to resolve with a specific value */
|
|
84
|
+
export type ClientPluginErrorHandlers = ClientPluginEnterHandlers & {
|
|
85
|
+
error: unknown;
|
|
86
|
+
};
|
|
87
|
+
export {};
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var documentStore_exports = {};
|
|
20
|
+
__export(documentStore_exports, {
|
|
21
|
+
DocumentStore: () => DocumentStore
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(documentStore_exports);
|
|
24
|
+
var import_config = require("../lib/config");
|
|
25
|
+
var import_deepEquals = require("../lib/deepEquals");
|
|
26
|
+
var import_scalars = require("../lib/scalars");
|
|
27
|
+
var import_store = require("../lib/store");
|
|
28
|
+
var import_types = require("../lib/types");
|
|
29
|
+
var import_plugins = require("./plugins");
|
|
30
|
+
const steps = {
|
|
31
|
+
forward: ["start", "beforeNetwork", "network"],
|
|
32
|
+
backwards: ["end", "afterNetwork"]
|
|
33
|
+
};
|
|
34
|
+
class DocumentStore extends import_store.Writable {
|
|
35
|
+
#artifact;
|
|
36
|
+
#client;
|
|
37
|
+
#configFile;
|
|
38
|
+
#plugins;
|
|
39
|
+
#lastVariables;
|
|
40
|
+
#lastContext = null;
|
|
41
|
+
constructor({
|
|
42
|
+
artifact,
|
|
43
|
+
plugins,
|
|
44
|
+
pipeline,
|
|
45
|
+
client,
|
|
46
|
+
cache = true,
|
|
47
|
+
initialValue,
|
|
48
|
+
fetching
|
|
49
|
+
}) {
|
|
50
|
+
if (fetching === void 0) {
|
|
51
|
+
fetching = artifact.kind === import_types.ArtifactKind.Query;
|
|
52
|
+
}
|
|
53
|
+
const initialState = {
|
|
54
|
+
data: initialValue ?? null,
|
|
55
|
+
errors: null,
|
|
56
|
+
partial: false,
|
|
57
|
+
source: null,
|
|
58
|
+
fetching,
|
|
59
|
+
variables: null
|
|
60
|
+
};
|
|
61
|
+
super(initialState, () => {
|
|
62
|
+
return () => {
|
|
63
|
+
this.#lastVariables = null;
|
|
64
|
+
for (const plugin of this.#plugins) {
|
|
65
|
+
plugin.cleanup?.(this.#lastContext);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
this.#artifact = artifact;
|
|
70
|
+
this.#client = client;
|
|
71
|
+
this.#lastVariables = null;
|
|
72
|
+
this.#configFile = (0, import_config.getCurrentConfig)();
|
|
73
|
+
this.#plugins = (pipeline ?? [
|
|
74
|
+
(0, import_plugins.cachePolicyPlugin)({
|
|
75
|
+
enabled: cache,
|
|
76
|
+
setFetching: (fetching2) => this.update((state) => ({ ...state, fetching: fetching2 }))
|
|
77
|
+
}),
|
|
78
|
+
...plugins ?? []
|
|
79
|
+
]).map((factory) => factory());
|
|
80
|
+
}
|
|
81
|
+
async send({
|
|
82
|
+
metadata,
|
|
83
|
+
session,
|
|
84
|
+
fetch = globalThis.fetch,
|
|
85
|
+
variables,
|
|
86
|
+
policy,
|
|
87
|
+
stuff,
|
|
88
|
+
cacheParams,
|
|
89
|
+
setup = false
|
|
90
|
+
} = {}) {
|
|
91
|
+
let context = new ClientPluginContextWrapper({
|
|
92
|
+
config: this.#configFile,
|
|
93
|
+
text: this.#artifact.raw,
|
|
94
|
+
hash: this.#artifact.hash,
|
|
95
|
+
policy: policy ?? this.#artifact.policy,
|
|
96
|
+
variables: {},
|
|
97
|
+
metadata,
|
|
98
|
+
session,
|
|
99
|
+
fetch,
|
|
100
|
+
stuff: {
|
|
101
|
+
inputs: {
|
|
102
|
+
changed: false,
|
|
103
|
+
init: false,
|
|
104
|
+
marshaled: {}
|
|
105
|
+
},
|
|
106
|
+
...stuff
|
|
107
|
+
},
|
|
108
|
+
artifact: this.#artifact,
|
|
109
|
+
lastVariables: this.#lastVariables,
|
|
110
|
+
cacheParams
|
|
111
|
+
});
|
|
112
|
+
const draft = context.draft();
|
|
113
|
+
draft.variables = variables ?? {};
|
|
114
|
+
context = context.apply(draft, false);
|
|
115
|
+
return await new Promise((resolve, reject) => {
|
|
116
|
+
const state = {
|
|
117
|
+
setup,
|
|
118
|
+
currentStep: 0,
|
|
119
|
+
index: 0,
|
|
120
|
+
promise: {
|
|
121
|
+
resolved: false,
|
|
122
|
+
resolve,
|
|
123
|
+
reject
|
|
124
|
+
},
|
|
125
|
+
context
|
|
126
|
+
};
|
|
127
|
+
this.#step("forward", state);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
#step(direction, ctx, value) {
|
|
131
|
+
const hook = direction === "error" ? "catch" : steps[direction][ctx.currentStep];
|
|
132
|
+
let valid = (i) => i <= this.#plugins.length;
|
|
133
|
+
let step = (i) => i + 1;
|
|
134
|
+
if (["backwards", "error"].includes(direction)) {
|
|
135
|
+
valid = (i) => i >= 0;
|
|
136
|
+
step = (i) => i - 1;
|
|
137
|
+
}
|
|
138
|
+
for (let index = ctx.index; valid(index); index = step(index)) {
|
|
139
|
+
let target = this.#plugins[index]?.[hook];
|
|
140
|
+
if (!target) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const draft = ctx.context.draft();
|
|
144
|
+
let variablesRefChanged = (newContext) => newContext.variables !== draft.variables;
|
|
145
|
+
const common = {
|
|
146
|
+
initialValue: this.state,
|
|
147
|
+
client: this.#client,
|
|
148
|
+
variablesChanged,
|
|
149
|
+
marshalVariables,
|
|
150
|
+
updateState: this.update.bind(this),
|
|
151
|
+
next: (newContext) => {
|
|
152
|
+
const nextIndex = ["forward", "error"].includes(direction) ? index + 1 : index;
|
|
153
|
+
const nextStep = ["backwards", "error"].includes(direction) ? 0 : ctx.currentStep;
|
|
154
|
+
this.#step("forward", {
|
|
155
|
+
...ctx,
|
|
156
|
+
index: nextIndex,
|
|
157
|
+
currentStep: nextStep,
|
|
158
|
+
context: ctx.context.apply(newContext, variablesRefChanged(newContext))
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
resolve: (newContext, value2) => {
|
|
162
|
+
const nextIndex = direction === "backwards" ? index - 1 : index;
|
|
163
|
+
this.#step(
|
|
164
|
+
"backwards",
|
|
165
|
+
{
|
|
166
|
+
...ctx,
|
|
167
|
+
index: nextIndex,
|
|
168
|
+
context: ctx.context.apply(newContext, variablesRefChanged(newContext))
|
|
169
|
+
},
|
|
170
|
+
value2
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
let handlers;
|
|
175
|
+
if (direction === "forward") {
|
|
176
|
+
handlers = common;
|
|
177
|
+
} else if (direction === "backwards") {
|
|
178
|
+
handlers = {
|
|
179
|
+
...common,
|
|
180
|
+
value,
|
|
181
|
+
resolve: (ctx2, data2) => {
|
|
182
|
+
return common.resolve(ctx2, data2 ?? value);
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
} else if (direction === "error") {
|
|
186
|
+
handlers = {
|
|
187
|
+
...common,
|
|
188
|
+
error: value
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
const result = target(draft, handlers);
|
|
193
|
+
result?.catch((err) => {
|
|
194
|
+
this.#step("error", { ...ctx, index: index - 1 }, err);
|
|
195
|
+
});
|
|
196
|
+
} catch (err) {
|
|
197
|
+
this.#step("error", { ...ctx, index: index - 1 }, err);
|
|
198
|
+
}
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
if (direction === "forward") {
|
|
202
|
+
if (ctx.setup) {
|
|
203
|
+
return this.#step(
|
|
204
|
+
"backwards",
|
|
205
|
+
{
|
|
206
|
+
...ctx,
|
|
207
|
+
currentStep: 0,
|
|
208
|
+
index: this.#plugins.length
|
|
209
|
+
},
|
|
210
|
+
this.state
|
|
211
|
+
);
|
|
212
|
+
}
|
|
213
|
+
if (ctx.currentStep <= steps.forward.length - 2) {
|
|
214
|
+
return this.#step("forward", {
|
|
215
|
+
...ctx,
|
|
216
|
+
currentStep: ctx.currentStep + 1,
|
|
217
|
+
index: 0
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
throw new Error(
|
|
221
|
+
"Called next() on last possible plugin. Your chain is missing a plugin that calls resolve()."
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
if (direction === "error") {
|
|
225
|
+
if (!ctx.promise.resolved) {
|
|
226
|
+
ctx.promise.reject(value);
|
|
227
|
+
ctx.promise.resolved = true;
|
|
228
|
+
}
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
if (ctx.currentStep > 0) {
|
|
232
|
+
return this.#step(
|
|
233
|
+
"backwards",
|
|
234
|
+
{
|
|
235
|
+
...ctx,
|
|
236
|
+
currentStep: ctx.currentStep - 1,
|
|
237
|
+
index: this.#plugins.length - 1
|
|
238
|
+
},
|
|
239
|
+
value
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
let data = value.data;
|
|
243
|
+
try {
|
|
244
|
+
data = (0, import_scalars.unmarshalSelection)(this.#configFile, this.#artifact.selection, data) ?? null;
|
|
245
|
+
} catch {
|
|
246
|
+
}
|
|
247
|
+
const finalValue = {
|
|
248
|
+
...value,
|
|
249
|
+
data
|
|
250
|
+
};
|
|
251
|
+
if (!ctx.promise.resolved) {
|
|
252
|
+
ctx.promise.resolve(finalValue);
|
|
253
|
+
ctx.promise.resolved = true;
|
|
254
|
+
}
|
|
255
|
+
this.#lastContext = ctx.context.draft();
|
|
256
|
+
this.#lastVariables = this.#lastContext.stuff.inputs.marshaled;
|
|
257
|
+
this.set(finalValue);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
class ClientPluginContextWrapper {
|
|
261
|
+
#context;
|
|
262
|
+
#lastVariables;
|
|
263
|
+
constructor({
|
|
264
|
+
lastVariables,
|
|
265
|
+
...values
|
|
266
|
+
}) {
|
|
267
|
+
this.#context = values;
|
|
268
|
+
this.#lastVariables = lastVariables;
|
|
269
|
+
}
|
|
270
|
+
get variables() {
|
|
271
|
+
return this.#context.variables;
|
|
272
|
+
}
|
|
273
|
+
draft() {
|
|
274
|
+
const ctx = {
|
|
275
|
+
...this.#context
|
|
276
|
+
};
|
|
277
|
+
const applyVariables = this.applyVariables.bind(this);
|
|
278
|
+
return {
|
|
279
|
+
...ctx,
|
|
280
|
+
get stuff() {
|
|
281
|
+
return ctx.stuff;
|
|
282
|
+
},
|
|
283
|
+
set stuff(val) {
|
|
284
|
+
ctx.stuff = val;
|
|
285
|
+
},
|
|
286
|
+
get variables() {
|
|
287
|
+
return ctx.variables ?? {};
|
|
288
|
+
},
|
|
289
|
+
set variables(val) {
|
|
290
|
+
Object.assign(ctx, applyVariables(ctx, { variables: val }));
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
applyVariables(source, values) {
|
|
295
|
+
const artifact = source.artifact;
|
|
296
|
+
const ctx = {
|
|
297
|
+
...source,
|
|
298
|
+
...values
|
|
299
|
+
};
|
|
300
|
+
const val = values.variables;
|
|
301
|
+
let changed = {};
|
|
302
|
+
for (const [name, value] of Object.entries(val ?? {})) {
|
|
303
|
+
if (value !== source.variables?.[name]) {
|
|
304
|
+
changed[name] = value;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
ctx.stuff = {
|
|
308
|
+
...ctx.stuff,
|
|
309
|
+
inputs: {
|
|
310
|
+
...ctx.stuff.inputs
|
|
311
|
+
}
|
|
312
|
+
};
|
|
313
|
+
const firstInit = !ctx.stuff.inputs || !ctx.stuff.inputs.init;
|
|
314
|
+
const hasChanged = Object.keys(changed).length > 0 || firstInit;
|
|
315
|
+
if (artifact.kind !== import_types.ArtifactKind.Fragment && hasChanged) {
|
|
316
|
+
const newVariables = {
|
|
317
|
+
...ctx.stuff.inputs?.marshaled,
|
|
318
|
+
...(0, import_scalars.marshalInputs)({
|
|
319
|
+
artifact,
|
|
320
|
+
input: changed,
|
|
321
|
+
config: source.config
|
|
322
|
+
})
|
|
323
|
+
};
|
|
324
|
+
ctx.stuff.inputs = {
|
|
325
|
+
init: true,
|
|
326
|
+
marshaled: newVariables,
|
|
327
|
+
changed: true
|
|
328
|
+
};
|
|
329
|
+
ctx.variables = val;
|
|
330
|
+
}
|
|
331
|
+
ctx.stuff = {
|
|
332
|
+
...ctx.stuff,
|
|
333
|
+
inputs: {
|
|
334
|
+
...ctx.stuff.inputs,
|
|
335
|
+
changed: !(0, import_deepEquals.deepEquals)(ctx.stuff.inputs.marshaled, this.#lastVariables)
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
return ctx;
|
|
339
|
+
}
|
|
340
|
+
apply(values, newVariables) {
|
|
341
|
+
if (newVariables) {
|
|
342
|
+
values = this.applyVariables(this.#context, values);
|
|
343
|
+
}
|
|
344
|
+
const wrapper = new ClientPluginContextWrapper({
|
|
345
|
+
...values,
|
|
346
|
+
lastVariables: this.#lastVariables
|
|
347
|
+
});
|
|
348
|
+
return wrapper;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
function marshalVariables(ctx) {
|
|
352
|
+
return ctx.stuff.inputs?.marshaled ?? {};
|
|
353
|
+
}
|
|
354
|
+
function variablesChanged(ctx) {
|
|
355
|
+
return ctx.stuff.inputs?.changed;
|
|
356
|
+
}
|
|
357
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
358
|
+
0 && (module.exports = {
|
|
359
|
+
DocumentStore
|
|
360
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference path="../../../../../houdini.d.ts" />
|
|
2
|
+
import type { DocumentArtifact, GraphQLObject } from '../lib/types';
|
|
3
|
+
import type { ClientPlugin } from './documentStore';
|
|
4
|
+
import { DocumentStore } from './documentStore';
|
|
5
|
+
import { type FetchParamFn, type ThrowOnErrorParams } from './plugins';
|
|
6
|
+
export { DocumentStore, type ClientPlugin } from './documentStore';
|
|
7
|
+
export { fetchPlugin, mutationPlugin, queryPlugin, subscriptionPlugin } from './plugins';
|
|
8
|
+
type ConstructorArgs = {
|
|
9
|
+
url: string;
|
|
10
|
+
fetchParams?: FetchParamFn;
|
|
11
|
+
plugins?: ClientPlugin[];
|
|
12
|
+
pipeline?: ClientPlugin[];
|
|
13
|
+
throwOnError?: ThrowOnErrorParams;
|
|
14
|
+
};
|
|
15
|
+
export declare class HoudiniClient {
|
|
16
|
+
#private;
|
|
17
|
+
url: string;
|
|
18
|
+
constructor({ url, fetchParams, plugins, pipeline, throwOnError }: ConstructorArgs);
|
|
19
|
+
observe<_Data extends GraphQLObject, _Input extends Record<string, any>>({ artifact, cache, initialValue, fetching, }: {
|
|
20
|
+
artifact: DocumentArtifact;
|
|
21
|
+
cache?: boolean;
|
|
22
|
+
initialValue?: _Data | null;
|
|
23
|
+
fetching?: boolean;
|
|
24
|
+
}): DocumentStore<_Data, _Input>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var client_exports = {};
|
|
26
|
+
__export(client_exports, {
|
|
27
|
+
DocumentStore: () => import_documentStore2.DocumentStore,
|
|
28
|
+
HoudiniClient: () => HoudiniClient,
|
|
29
|
+
fetchPlugin: () => import_plugins2.fetchPlugin,
|
|
30
|
+
mutationPlugin: () => import_plugins2.mutationPlugin,
|
|
31
|
+
queryPlugin: () => import_plugins2.queryPlugin,
|
|
32
|
+
subscriptionPlugin: () => import_plugins2.subscriptionPlugin
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(client_exports);
|
|
35
|
+
var import_documentStore = require("./documentStore");
|
|
36
|
+
var import_plugins = require("./plugins");
|
|
37
|
+
var import_injectedPlugins = __toESM(require("./plugins/injectedPlugins"), 1);
|
|
38
|
+
var import_documentStore2 = require("./documentStore");
|
|
39
|
+
var import_plugins2 = require("./plugins");
|
|
40
|
+
class HoudiniClient {
|
|
41
|
+
url;
|
|
42
|
+
#plugins;
|
|
43
|
+
constructor({ url, fetchParams, plugins, pipeline, throwOnError }) {
|
|
44
|
+
if (plugins && pipeline) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
"A client cannot be given a pipeline and a list of plugins at the same time."
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
this.#plugins = [].concat(
|
|
50
|
+
throwOnError ? [(0, import_plugins.throwOnErrorPlugin)(throwOnError)] : [],
|
|
51
|
+
(0, import_plugins.fetchParamsPlugin)(fetchParams),
|
|
52
|
+
pipeline ?? [
|
|
53
|
+
import_plugins.queryPlugin,
|
|
54
|
+
import_plugins.mutationPlugin
|
|
55
|
+
].concat(
|
|
56
|
+
plugins ?? [],
|
|
57
|
+
import_injectedPlugins.default,
|
|
58
|
+
(0, import_plugins.fetchPlugin)()
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
this.url = url;
|
|
62
|
+
}
|
|
63
|
+
observe({
|
|
64
|
+
artifact,
|
|
65
|
+
cache = true,
|
|
66
|
+
initialValue,
|
|
67
|
+
fetching = false
|
|
68
|
+
}) {
|
|
69
|
+
return new import_documentStore.DocumentStore({
|
|
70
|
+
client: this,
|
|
71
|
+
artifact,
|
|
72
|
+
plugins: this.#plugins,
|
|
73
|
+
cache,
|
|
74
|
+
initialValue,
|
|
75
|
+
fetching
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
80
|
+
0 && (module.exports = {
|
|
81
|
+
DocumentStore,
|
|
82
|
+
HoudiniClient,
|
|
83
|
+
fetchPlugin,
|
|
84
|
+
mutationPlugin,
|
|
85
|
+
queryPlugin,
|
|
86
|
+
subscriptionPlugin
|
|
87
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import cache from '../../cache';
|
|
2
|
+
import type { Cache } from '../../cache/cache';
|
|
3
|
+
import type { ClientPlugin } from '../documentStore';
|
|
4
|
+
export declare const cachePolicyPlugin: ({ enabled, setFetching, cache: localCache, }: {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
setFetching: (val: boolean) => void;
|
|
7
|
+
cache?: Cache | undefined;
|
|
8
|
+
}) => ClientPlugin;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var cache_exports = {};
|
|
26
|
+
__export(cache_exports, {
|
|
27
|
+
cachePolicyPlugin: () => cachePolicyPlugin
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(cache_exports);
|
|
30
|
+
var import_cache = __toESM(require("../../cache"), 1);
|
|
31
|
+
var import_types = require("../../lib/types");
|
|
32
|
+
const cachePolicyPlugin = ({
|
|
33
|
+
enabled,
|
|
34
|
+
setFetching,
|
|
35
|
+
cache: localCache = import_cache.default
|
|
36
|
+
}) => () => {
|
|
37
|
+
return {
|
|
38
|
+
network(ctx, { next, resolve, marshalVariables }) {
|
|
39
|
+
const { policy, artifact } = ctx;
|
|
40
|
+
let useCache = false;
|
|
41
|
+
if (enabled && artifact.kind === import_types.ArtifactKind.Query && !ctx.cacheParams?.disableRead) {
|
|
42
|
+
if (policy !== import_types.CachePolicy.NetworkOnly) {
|
|
43
|
+
const value = localCache.read({
|
|
44
|
+
selection: artifact.selection,
|
|
45
|
+
variables: marshalVariables(ctx)
|
|
46
|
+
});
|
|
47
|
+
const allowed = !value.partial || artifact.kind === import_types.ArtifactKind.Query && artifact.partial;
|
|
48
|
+
if (policy === import_types.CachePolicy.CacheOnly) {
|
|
49
|
+
return resolve(ctx, {
|
|
50
|
+
fetching: false,
|
|
51
|
+
variables: ctx.variables ?? null,
|
|
52
|
+
data: value.data,
|
|
53
|
+
errors: null,
|
|
54
|
+
source: import_types.DataSource.Cache,
|
|
55
|
+
partial: value.partial
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
useCache = !!(value.data !== null && allowed);
|
|
59
|
+
if (useCache) {
|
|
60
|
+
resolve(ctx, {
|
|
61
|
+
fetching: false,
|
|
62
|
+
variables: ctx.variables ?? null,
|
|
63
|
+
data: value.data,
|
|
64
|
+
errors: null,
|
|
65
|
+
source: import_types.DataSource.Cache,
|
|
66
|
+
partial: value.partial
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (useCache && !value.partial) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (enabled) {
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
localCache._internal_unstable.collectGarbage();
|
|
77
|
+
}, 0);
|
|
78
|
+
}
|
|
79
|
+
setFetching(!useCache);
|
|
80
|
+
return next(ctx);
|
|
81
|
+
},
|
|
82
|
+
afterNetwork(ctx, { resolve, value, marshalVariables }) {
|
|
83
|
+
if (value.source !== import_types.DataSource.Cache && enabled && value.data && !ctx.cacheParams?.disableWrite) {
|
|
84
|
+
localCache.write({
|
|
85
|
+
...ctx.cacheParams,
|
|
86
|
+
layer: ctx.cacheParams?.layer?.id,
|
|
87
|
+
selection: ctx.artifact.selection,
|
|
88
|
+
data: value.data,
|
|
89
|
+
variables: marshalVariables(ctx)
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
resolve(ctx, value);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
};
|
|
96
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
97
|
+
0 && (module.exports = {
|
|
98
|
+
cachePolicyPlugin
|
|
99
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { RequestPayload } from '../../lib/types';
|
|
2
|
+
import type { ClientPlugin } from '../documentStore';
|
|
3
|
+
export declare const fetchPlugin: (target?: RequestHandler | string) => ClientPlugin;
|
|
4
|
+
export type FetchContext = {
|
|
5
|
+
fetch: typeof globalThis.fetch;
|
|
6
|
+
metadata?: App.Metadata | null;
|
|
7
|
+
session: App.Session | null;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* ## Tip 👇
|
|
11
|
+
*
|
|
12
|
+
* To define types for your metadata, create a file `src/app.d.ts` containing the followingI:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* declare namespace App { *
|
|
16
|
+
* interface Metadata {}
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
export type RequestHandlerArgs = FetchContext & FetchParams;
|
|
22
|
+
export type RequestHandler<_Data = any> = (args: RequestHandlerArgs) => Promise<RequestPayload<_Data>>;
|
|
23
|
+
export type FetchParams = {
|
|
24
|
+
text: string;
|
|
25
|
+
hash: string;
|
|
26
|
+
variables: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export declare function isExtractableFile(value: any): value is ExtractableFile;
|
|
31
|
+
type ExtractableFile = File | Blob;
|
|
32
|
+
/** @typedef {import("./isExtractableFile.mjs").default} isExtractableFile */
|
|
33
|
+
export declare function extractFiles(value: any): {
|
|
34
|
+
clone: any;
|
|
35
|
+
files: Map<any, any>;
|
|
36
|
+
};
|
|
37
|
+
export {};
|