rescript-relay 0.0.0-autocodesplit-09ee6f6c

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.
Files changed (47) hide show
  1. package/CHANGELOG.md +942 -0
  2. package/README.md +111 -0
  3. package/cli/cli.js +472 -0
  4. package/compiler.js +11 -0
  5. package/package.json +65 -0
  6. package/postinstall.js +189 -0
  7. package/ppx-linux +0 -0
  8. package/ppx-macos-arm64 +0 -0
  9. package/ppx-macos-latest +0 -0
  10. package/ppx-windows-latest +0 -0
  11. package/relay-compiler-linux-musl/relay +0 -0
  12. package/relay-compiler-linux-x64/relay +0 -0
  13. package/relay-compiler-macos-arm64/relay +0 -0
  14. package/relay-compiler-macos-x64/relay +0 -0
  15. package/relay-compiler-win-x64/relay.exe +0 -0
  16. package/rescript.json +19 -0
  17. package/src/ReactDOMExperimental.bs.js +23 -0
  18. package/src/ReactDOMExperimental.res +16 -0
  19. package/src/ReactExperimental.bs.js +23 -0
  20. package/src/ReactExperimental.res +21 -0
  21. package/src/ReactExperimental.resi +18 -0
  22. package/src/RescriptRelay.bs.js +329 -0
  23. package/src/RescriptRelay.res +858 -0
  24. package/src/RescriptRelay.resi +897 -0
  25. package/src/RescriptRelayUtils.bs.js +76 -0
  26. package/src/RescriptRelayUtils.res +89 -0
  27. package/src/RescriptRelayUtils.resi +36 -0
  28. package/src/RescriptRelay_Fragment.bs.js +122 -0
  29. package/src/RescriptRelay_Fragment.res +243 -0
  30. package/src/RescriptRelay_Fragment.resi +85 -0
  31. package/src/RescriptRelay_Internal.bs.js +102 -0
  32. package/src/RescriptRelay_Internal.res +71 -0
  33. package/src/RescriptRelay_Internal.resi +20 -0
  34. package/src/RescriptRelay_Mutation.bs.js +57 -0
  35. package/src/RescriptRelay_Mutation.res +144 -0
  36. package/src/RescriptRelay_Mutation.resi +52 -0
  37. package/src/RescriptRelay_Query.bs.js +101 -0
  38. package/src/RescriptRelay_Query.res +177 -0
  39. package/src/RescriptRelay_Query.resi +62 -0
  40. package/src/RescriptRelay_RelayResolvers.bs.js +13 -0
  41. package/src/RescriptRelay_RelayResolvers.res +21 -0
  42. package/src/RescriptRelay_RelayResolvers.resi +10 -0
  43. package/src/RescriptRelay_Subscriptions.bs.js +24 -0
  44. package/src/RescriptRelay_Subscriptions.res +50 -0
  45. package/src/RescriptRelay_Subscriptions.resi +14 -0
  46. package/src/utils.js +418 -0
  47. package/src/utils.mjs +418 -0
@@ -0,0 +1,177 @@
1
+ open RescriptRelay
2
+
3
+ type useQueryConfig = {
4
+ fetchKey?: string,
5
+ fetchPolicy?: fetchPolicy,
6
+ networkCacheConfig?: cacheConfig,
7
+ }
8
+
9
+ @module("react-relay")
10
+ external useLazyLoadQuery: (queryNode<'node>, 'variables, useQueryConfig) => 'response =
11
+ "useLazyLoadQuery"
12
+
13
+ let useQuery = (
14
+ ~convertVariables: 'variables => 'variables,
15
+ ~node: 'm,
16
+ ~convertResponse: 'response => 'response,
17
+ ) => {
18
+ /**
19
+ React hook for using this query.\n\n\
20
+ Prefer using `Query.useLoader()` or \
21
+ `YourQueryName_graphql.load()` in combination with \
22
+ `Query.usePreloaded()` to this whenever you can, as that will \
23
+ allow you to start loading data before your code actually \
24
+ renders.*/
25
+ (~variables: 'variables, ~fetchPolicy=?, ~fetchKey=?, ~networkCacheConfig=?) => {
26
+ useLazyLoadQuery(
27
+ node,
28
+ RescriptRelay_Internal.internal_cleanObjectFromUndefinedRaw(variables->convertVariables),
29
+ {
30
+ ?fetchKey,
31
+ ?fetchPolicy,
32
+ ?networkCacheConfig,
33
+ },
34
+ )->(RescriptRelay_Internal.internal_useConvertedValue(convertResponse, _))
35
+ }
36
+ }
37
+
38
+ type useQueryLoaderOptions = {
39
+ fetchPolicy?: fetchPolicy,
40
+ networkCacheConfig?: cacheConfig,
41
+ }
42
+
43
+ @module("react-relay")
44
+ external useQueryLoader: queryNode<'node> => (
45
+ Js.Nullable.t<'queryRef>,
46
+ ('variables, useQueryLoaderOptions) => unit,
47
+ unit => unit,
48
+ ) = "useQueryLoader"
49
+
50
+ let useLoader = (
51
+ ~convertVariables: 'variables => 'variables,
52
+ ~node: 'm,
53
+ ~mkQueryRef: option<'queryRef> => option<'queryRef>,
54
+ ) => {
55
+ () => {
56
+ let (nullableQueryRef, loadQueryFn, disposableFn) = useQueryLoader(node)
57
+ let loadQuery = React.useMemo1(
58
+ () => (~variables, ~fetchPolicy=?, ~networkCacheConfig=?) =>
59
+ loadQueryFn(variables->convertVariables, {?fetchPolicy, ?networkCacheConfig}),
60
+ [loadQueryFn],
61
+ )
62
+ (nullableQueryRef->Js.Nullable.toOption->mkQueryRef, loadQuery, disposableFn)
63
+ }
64
+ }
65
+
66
+ @module("react-relay")
67
+ external usePreloadedQuery: (queryNode<'node>, 'queryRef) => 'response = "usePreloadedQuery"
68
+
69
+ let usePreloaded = (
70
+ ~node,
71
+ ~convertResponse: 'response => 'response,
72
+ ~mkQueryRef: 'queryRef => 'queryRef,
73
+ ) => /** Combine this with `Query.useLoader` or \
74
+ `YourQueryName_graphql.load()` to use a query you've started \
75
+ preloading before rendering. */
76
+ (~queryRef: 'queryRef) => {
77
+ usePreloadedQuery(node, queryRef->mkQueryRef)->(
78
+ RescriptRelay_Internal.internal_useConvertedValue(convertResponse, _)
79
+ )
80
+ }
81
+
82
+ @module("react-relay")
83
+ external fetchQuery: (
84
+ Environment.t,
85
+ queryNode<'node>,
86
+ 'variables,
87
+ option<fetchQueryOptions>,
88
+ ) => Observable.t<'response> = "fetchQuery"
89
+
90
+ let fetch = (
91
+ ~node,
92
+ ~convertResponse: 'response => 'response,
93
+ ~convertVariables: 'variables => 'variables,
94
+ ) => {
95
+ /**\n\
96
+ This fetches the query in a one-off fashion, and returns a \
97
+ `Belt.Result.t` in a callback for convenience. Use \
98
+ `Query.fetchPromised` if you need this but with promises.\n\n\
99
+ Please *avoid* using `Query.fetch` unless you really need it, \
100
+ since the data you fetch here isn't guaranteed to stick around \
101
+ in the store/cache unless you explicitly use it somewhere in \
102
+ your views.*/
103
+ (
104
+ ~environment: Environment.t,
105
+ ~variables: 'variables,
106
+ ~onResult,
107
+ ~networkCacheConfig=?,
108
+ ~fetchPolicy=?,
109
+ ) => {
110
+ open Observable
111
+
112
+ fetchQuery(
113
+ environment,
114
+ node,
115
+ variables->convertVariables,
116
+ Some({?networkCacheConfig, ?fetchPolicy}),
117
+ )
118
+ ->subscribe(
119
+ makeObserver(
120
+ ~next=res => onResult(Ok(res->convertResponse)),
121
+ ~error=err => onResult(Error(err)),
122
+ ),
123
+ )
124
+ ->ignoreSubscription
125
+ }
126
+ }
127
+
128
+ let fetchPromised = (
129
+ ~node,
130
+ ~convertResponse: 'response => 'response,
131
+ ~convertVariables: 'variables => 'variables,
132
+ ) => {
133
+ /**Promise variant of `Query.fetch`.*/
134
+ (~environment: Environment.t, ~variables: 'variables, ~networkCacheConfig=?, ~fetchPolicy=?) => {
135
+ fetchQuery(
136
+ environment,
137
+ node,
138
+ variables->convertVariables,
139
+ Some({?networkCacheConfig, ?fetchPolicy}),
140
+ )
141
+ ->Observable.toPromise
142
+ ->Js.Promise2.then(res => res->convertResponse->Js.Promise2.resolve)
143
+ }
144
+ }
145
+
146
+ @module("relay-runtime")
147
+ external createOperationDescriptor: (queryNode<'node>, 'variables) => operationDescriptor =
148
+ "createOperationDescriptor"
149
+
150
+ let retain = (~node, ~convertVariables: 'variables => 'variables) => {
151
+ /**Calling with a set of variables will make Relay _disable \
152
+ garbage collection_ of this query (+ variables) until you \
153
+ explicitly dispose the `Disposable.t` you get back from this \
154
+ call.\n\n\
155
+ Useful for queries and data you know you want to keep in the \
156
+ store regardless of what happens (like it not being used by \
157
+ any view and therefore potentially garbage collected).*/
158
+ (~environment: Environment.t, ~variables: 'variables) => {
159
+ environment->Environment.retain(createOperationDescriptor(node, variables->convertVariables))
160
+ }
161
+ }
162
+
163
+ let commitLocalPayload = (
164
+ ~node,
165
+ ~convertVariables: 'variables => 'variables,
166
+ ~convertWrapRawResponse: 'rawResponse => 'rawResponse,
167
+ ) => {
168
+ /** This commits a payload into the store _locally only_. Useful \
169
+ for driving client-only state via Relay for example, or \
170
+ priming the cache with data you don't necessarily want to \
171
+ hit the server for. */
172
+ (~environment: Environment.t, ~variables: 'variables, ~payload: 'rawResponse) =>
173
+ environment->Environment.commitPayload(
174
+ createOperationDescriptor(node, variables->convertVariables),
175
+ payload->convertWrapRawResponse,
176
+ )
177
+ }
@@ -0,0 +1,62 @@
1
+ open RescriptRelay
2
+
3
+ let useQuery: (
4
+ ~convertVariables: 'variables => 'variables,
5
+ ~node: queryNode<'a>,
6
+ ~convertResponse: 'response => 'response,
7
+ ) => (
8
+ ~variables: 'variables,
9
+ ~fetchPolicy: fetchPolicy=?,
10
+ ~fetchKey: string=?,
11
+ ~networkCacheConfig: cacheConfig=?,
12
+ ) => 'response
13
+
14
+ let useLoader: (
15
+ ~convertVariables: 'variables => 'variables,
16
+ ~node: queryNode<'a>,
17
+ ~mkQueryRef: option<'queryRef> => option<'queryRef>,
18
+ ) => unit => (
19
+ option<'queryRef>,
20
+ (~variables: 'variables, ~fetchPolicy: fetchPolicy=?, ~networkCacheConfig: cacheConfig=?) => unit,
21
+ unit => unit,
22
+ )
23
+
24
+ let usePreloaded: (
25
+ ~node: queryNode<'a>,
26
+ ~convertResponse: 'response => 'response,
27
+ ~mkQueryRef: 'queryRef => 'queryRef,
28
+ ) => (~queryRef: 'queryRef) => 'response
29
+
30
+ let fetch: (
31
+ ~node: queryNode<'a>,
32
+ ~convertResponse: 'response => 'response,
33
+ ~convertVariables: 'variables => 'variables,
34
+ ) => (
35
+ ~environment: Environment.t,
36
+ ~variables: 'variables,
37
+ ~onResult: result<'response, Js.Exn.t> => unit,
38
+ ~networkCacheConfig: cacheConfig=?,
39
+ ~fetchPolicy: fetchPolicy=?,
40
+ ) => unit
41
+
42
+ let fetchPromised: (
43
+ ~node: queryNode<'a>,
44
+ ~convertResponse: 'response => 'response,
45
+ ~convertVariables: 'variables => 'variables,
46
+ ) => (
47
+ ~environment: Environment.t,
48
+ ~variables: 'variables,
49
+ ~networkCacheConfig: cacheConfig=?,
50
+ ~fetchPolicy: fetchPolicy=?,
51
+ ) => promise<'response>
52
+
53
+ let retain: (
54
+ ~node: queryNode<'a>,
55
+ ~convertVariables: 'variables => 'variables,
56
+ ) => (~environment: Environment.t, ~variables: 'variables) => Disposable.t
57
+
58
+ let commitLocalPayload: (
59
+ ~node: queryNode<'a>,
60
+ ~convertVariables: 'variables => 'variables,
61
+ ~convertWrapRawResponse: 'rawResponse => 'rawResponse,
62
+ ) => (~environment: Environment.t, ~variables: 'variables, ~payload: 'rawResponse) => unit
@@ -0,0 +1,13 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ 'use strict';
3
+
4
+ var ResolverFragments = require("relay-runtime/lib/store/ResolverFragments");
5
+
6
+ function makeRelayResolver(node, convertFragment, resolver) {
7
+ return function (fRef) {
8
+ return resolver(convertFragment(ResolverFragments.readFragment(node, fRef)));
9
+ };
10
+ }
11
+
12
+ exports.makeRelayResolver = makeRelayResolver;
13
+ /* relay-runtime/lib/store/ResolverFragments Not a pure module */
@@ -0,0 +1,21 @@
1
+ open RescriptRelay
2
+
3
+ @module("relay-runtime/lib/store/ResolverFragments")
4
+ external readFragment_: (fragmentNode<'node>, 'fragmentRef) => 'fragment = "readFragment"
5
+
6
+ type resolver<'fragment, 't> = 'fragment => option<'t>
7
+
8
+ // This is abstract just to hide the implementation details that don't need to be known anyway.
9
+ type relayResolver
10
+ external mkRelayResolver: 'a => relayResolver = "%identity"
11
+
12
+ let makeRelayResolver = (
13
+ ~node,
14
+ ~convertFragment: 'fragment => 'fragment,
15
+ resolver: resolver<'fragment, 't>,
16
+ ) => {
17
+ let relayResolver = fRef => {
18
+ resolver(readFragment_(node, fRef)->convertFragment)
19
+ }
20
+ relayResolver->mkRelayResolver
21
+ }
@@ -0,0 +1,10 @@
1
+ open RescriptRelay
2
+
3
+ type resolver<'fragment, 't> = 'fragment => option<'t>
4
+ type relayResolver
5
+
6
+ let makeRelayResolver: (
7
+ ~node: fragmentNode<'a>,
8
+ ~convertFragment: 'fragment => 'fragment,
9
+ resolver<'fragment, 't>,
10
+ ) => relayResolver
@@ -0,0 +1,24 @@
1
+ // Generated by ReScript, PLEASE EDIT WITH CARE
2
+ 'use strict';
3
+
4
+ var RelayRuntime = require("relay-runtime");
5
+
6
+ function subscribe(node, convertVariables, convertResponse) {
7
+ return function (environment, variables, onCompleted, onError, onNext, updater) {
8
+ return RelayRuntime.requestSubscription(environment, {
9
+ subscription: node,
10
+ variables: convertVariables(variables),
11
+ onCompleted: onCompleted,
12
+ onError: onError,
13
+ onNext: onNext !== undefined ? (function (response) {
14
+ onNext(convertResponse(response));
15
+ }) : undefined,
16
+ updater: updater !== undefined ? (function (store, response) {
17
+ updater(store, convertResponse(response));
18
+ }) : undefined
19
+ });
20
+ };
21
+ }
22
+
23
+ exports.subscribe = subscribe;
24
+ /* relay-runtime Not a pure module */
@@ -0,0 +1,50 @@
1
+ open RescriptRelay
2
+
3
+ type updaterFn<'response> = (RecordSourceSelectorProxy.t, 'response) => unit
4
+ type subscriptionConfig<'node, 'variables, 'response> = {
5
+ subscription: subscriptionNode<'node>,
6
+ variables: 'variables,
7
+ onCompleted?: unit => unit,
8
+ onError?: Js.Exn.t => unit,
9
+ onNext?: 'response => unit,
10
+ updater?: updaterFn<'response>,
11
+ }
12
+
13
+ @module("relay-runtime")
14
+ external requestSubscription_: (
15
+ Environment.t,
16
+ subscriptionConfig<'node, 'variables, 'response>,
17
+ ) => Disposable.t = "requestSubscription"
18
+
19
+ let subscribe = (
20
+ ~node,
21
+ ~convertVariables: 'variables => 'variables,
22
+ ~convertResponse: 'response => 'response,
23
+ ) => {
24
+ (
25
+ ~environment: Environment.t,
26
+ ~variables: 'variables,
27
+ ~onCompleted=?,
28
+ ~onError=?,
29
+ ~onNext=?,
30
+ ~updater=?,
31
+ ) => {
32
+ requestSubscription_(
33
+ environment,
34
+ {
35
+ ?onCompleted,
36
+ subscription: node,
37
+ variables: variables->convertVariables,
38
+ ?onError,
39
+ onNext: ?switch onNext {
40
+ | Some(onNext) => Some(response => onNext(response->convertResponse))
41
+ | None => None
42
+ },
43
+ updater: ?switch updater {
44
+ | Some(updater) => Some((store, response) => updater(store, response->convertResponse))
45
+ | None => None
46
+ },
47
+ },
48
+ )
49
+ }
50
+ }
@@ -0,0 +1,14 @@
1
+ open RescriptRelay
2
+
3
+ let subscribe: (
4
+ ~node: subscriptionNode<'a>,
5
+ ~convertVariables: 'variables => 'variables,
6
+ ~convertResponse: 'response => 'response,
7
+ ) => (
8
+ ~environment: Environment.t,
9
+ ~variables: 'variables,
10
+ ~onCompleted: unit => unit=?,
11
+ ~onError: Js.Exn.t => unit=?,
12
+ ~onNext: 'response => unit=?,
13
+ ~updater: (RecordSourceSelectorProxy.t, 'response) => unit=?,
14
+ ) => Disposable.t