@khanacademy/wonder-blocks-data 10.0.5 → 10.1.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.
Files changed (181) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/components/data.d.ts +52 -0
  3. package/dist/components/data.js.flow +63 -0
  4. package/dist/components/gql-router.d.ts +24 -0
  5. package/dist/components/gql-router.js.flow +33 -0
  6. package/dist/components/intercept-context.d.ts +10 -0
  7. package/dist/components/intercept-context.js.flow +19 -0
  8. package/dist/components/intercept-requests.d.ts +42 -0
  9. package/dist/components/intercept-requests.js.flow +51 -0
  10. package/dist/components/track-data.d.ts +11 -0
  11. package/dist/components/track-data.js.flow +18 -0
  12. package/dist/es/index.js +196 -214
  13. package/dist/hooks/use-cached-effect.d.ts +70 -0
  14. package/dist/hooks/use-cached-effect.js.flow +85 -0
  15. package/dist/hooks/use-gql-router-context.d.ts +5 -0
  16. package/dist/hooks/use-gql-router-context.js.flow +15 -0
  17. package/dist/hooks/use-gql.d.ts +12 -0
  18. package/dist/hooks/use-gql.js.flow +29 -0
  19. package/dist/hooks/use-hydratable-effect.d.ts +102 -0
  20. package/dist/hooks/use-hydratable-effect.js.flow +125 -0
  21. package/dist/hooks/use-request-interception.d.ts +14 -0
  22. package/dist/hooks/use-request-interception.js.flow +25 -0
  23. package/dist/hooks/use-server-effect.d.ts +39 -0
  24. package/dist/hooks/use-server-effect.js.flow +51 -0
  25. package/dist/hooks/use-shared-cache.d.ts +32 -0
  26. package/dist/hooks/use-shared-cache.js.flow +43 -0
  27. package/dist/index.d.ts +24 -0
  28. package/dist/index.js +198 -219
  29. package/dist/index.js.flow +48 -2
  30. package/dist/util/data-error.d.ts +45 -0
  31. package/dist/util/data-error.js.flow +64 -0
  32. package/dist/util/get-gql-data-from-response.d.ts +4 -0
  33. package/dist/util/get-gql-data-from-response.js.flow +13 -0
  34. package/dist/util/get-gql-request-id.d.ts +5 -0
  35. package/dist/util/get-gql-request-id.js.flow +20 -0
  36. package/dist/util/gql-error.d.ts +28 -0
  37. package/dist/util/gql-error.js.flow +43 -0
  38. package/dist/util/gql-router-context.d.ts +3 -0
  39. package/dist/util/gql-router-context.js.flow +10 -0
  40. package/dist/util/gql-types.d.ts +34 -0
  41. package/dist/util/gql-types.js.flow +53 -0
  42. package/dist/util/graphql-document-node-parser.d.ts +18 -0
  43. package/dist/util/graphql-document-node-parser.js.flow +31 -0
  44. package/dist/util/graphql-types.d.ts +19 -0
  45. package/dist/util/graphql-types.js.flow +30 -0
  46. package/dist/util/hydration-cache-api.d.ts +17 -0
  47. package/dist/util/hydration-cache-api.js.flow +30 -0
  48. package/dist/util/merge-gql-context.d.ts +8 -0
  49. package/dist/util/merge-gql-context.js.flow +19 -0
  50. package/dist/util/purge-caches.d.ts +8 -0
  51. package/dist/util/purge-caches.js.flow +15 -0
  52. package/dist/util/request-api.d.ts +28 -0
  53. package/dist/util/request-api.js.flow +34 -0
  54. package/dist/util/request-fulfillment.d.ts +37 -0
  55. package/dist/util/request-fulfillment.js.flow +50 -0
  56. package/dist/util/request-tracking.d.ts +62 -0
  57. package/dist/util/request-tracking.js.flow +81 -0
  58. package/dist/util/result-from-cache-response.d.ts +5 -0
  59. package/dist/util/result-from-cache-response.js.flow +15 -0
  60. package/dist/util/scoped-in-memory-cache.d.ts +38 -0
  61. package/dist/util/scoped-in-memory-cache.js.flow +57 -0
  62. package/dist/util/serializable-in-memory-cache.d.ts +16 -0
  63. package/dist/util/serializable-in-memory-cache.js.flow +26 -0
  64. package/dist/util/ssr-cache.d.ts +51 -0
  65. package/dist/util/ssr-cache.js.flow +87 -0
  66. package/dist/util/status.d.ts +10 -0
  67. package/dist/util/status.js.flow +19 -0
  68. package/dist/util/to-gql-operation.d.ts +32 -0
  69. package/dist/util/to-gql-operation.js.flow +45 -0
  70. package/dist/util/types.d.ts +111 -0
  71. package/dist/util/types.js.flow +151 -0
  72. package/package.json +5 -6
  73. package/src/components/__tests__/{data.test.js → data.test.tsx} +50 -16
  74. package/src/components/__tests__/{gql-router.test.js → gql-router.test.tsx} +6 -7
  75. package/src/components/__tests__/{intercept-requests.test.js → intercept-requests.test.tsx} +4 -5
  76. package/src/components/__tests__/{track-data.test.js → track-data.test.tsx} +4 -5
  77. package/src/components/{data.js → data.ts} +13 -21
  78. package/src/components/{gql-router.js → gql-router.tsx} +14 -16
  79. package/src/components/{intercept-context.js → intercept-context.ts} +5 -4
  80. package/src/components/{intercept-requests.js → intercept-requests.tsx} +9 -10
  81. package/src/components/{track-data.js → track-data.tsx} +5 -6
  82. package/src/hooks/__tests__/{use-cached-effect.test.js → use-cached-effect.test.tsx} +65 -63
  83. package/src/hooks/__tests__/{use-gql-router-context.test.js → use-gql-router-context.test.tsx} +9 -9
  84. package/src/hooks/__tests__/{use-gql.test.js → use-gql.test.tsx} +23 -24
  85. package/src/hooks/__tests__/{use-hydratable-effect.test.js → use-hydratable-effect.test.ts} +52 -54
  86. package/src/hooks/__tests__/{use-request-interception.test.js → use-request-interception.test.tsx} +7 -5
  87. package/src/hooks/__tests__/{use-server-effect.test.js → use-server-effect.test.ts} +16 -10
  88. package/src/hooks/__tests__/{use-shared-cache.test.js → use-shared-cache.test.ts} +13 -13
  89. package/src/hooks/{use-cached-effect.js → use-cached-effect.ts} +34 -31
  90. package/src/hooks/{use-gql-router-context.js → use-gql-router-context.ts} +6 -7
  91. package/src/hooks/{use-gql.js → use-gql.ts} +9 -9
  92. package/src/hooks/{use-hydratable-effect.js → use-hydratable-effect.ts} +60 -67
  93. package/src/hooks/{use-request-interception.js → use-request-interception.ts} +6 -6
  94. package/src/hooks/{use-server-effect.js → use-server-effect.ts} +12 -14
  95. package/src/hooks/{use-shared-cache.js → use-shared-cache.ts} +16 -11
  96. package/src/index.ts +46 -0
  97. package/src/util/__tests__/{get-gql-data-from-response.test.js → get-gql-data-from-response.test.ts} +1 -2
  98. package/src/util/__tests__/{get-gql-request-id.test.js → get-gql-request-id.test.ts} +10 -12
  99. package/src/util/__tests__/{graphql-document-node-parser.test.js → graphql-document-node-parser.test.ts} +12 -13
  100. package/src/util/__tests__/{hydration-cache-api.test.js → hydration-cache-api.test.ts} +3 -4
  101. package/src/util/__tests__/{merge-gql-context.test.js → merge-gql-context.test.ts} +5 -6
  102. package/src/util/__tests__/{purge-caches.test.js → purge-caches.test.ts} +3 -4
  103. package/src/util/__tests__/{request-api.test.js → request-api.test.ts} +5 -5
  104. package/src/util/__tests__/{request-fulfillment.test.js → request-fulfillment.test.ts} +2 -3
  105. package/src/util/__tests__/{request-tracking.test.js → request-tracking.test.tsx} +15 -8
  106. package/src/util/__tests__/{result-from-cache-response.test.js → result-from-cache-response.test.ts} +3 -5
  107. package/src/util/__tests__/{scoped-in-memory-cache.test.js → scoped-in-memory-cache.test.ts} +5 -6
  108. package/src/util/__tests__/{serializable-in-memory-cache.test.js → serializable-in-memory-cache.test.ts} +8 -8
  109. package/src/util/__tests__/{ssr-cache.test.js → ssr-cache.test.ts} +5 -4
  110. package/src/util/__tests__/{to-gql-operation.test.js → to-gql-operation.test.ts} +5 -4
  111. package/src/util/{data-error.js → data-error.ts} +3 -4
  112. package/src/util/{get-gql-data-from-response.js → get-gql-data-from-response.ts} +3 -8
  113. package/src/util/{get-gql-request-id.js → get-gql-request-id.ts} +13 -17
  114. package/src/util/{gql-error.js → gql-error.ts} +3 -4
  115. package/src/util/gql-router-context.ts +6 -0
  116. package/src/util/{gql-types.js → gql-types.ts} +27 -23
  117. package/src/util/{graphql-document-node-parser.js → graphql-document-node-parser.ts} +8 -9
  118. package/src/util/graphql-types.ts +27 -0
  119. package/src/util/{hydration-cache-api.js → hydration-cache-api.ts} +6 -4
  120. package/src/util/{merge-gql-context.js → merge-gql-context.ts} +3 -3
  121. package/src/util/{purge-caches.js → purge-caches.ts} +2 -3
  122. package/src/util/{request-api.js → request-api.ts} +4 -5
  123. package/src/util/{request-fulfillment.js → request-fulfillment.ts} +15 -14
  124. package/src/util/{request-tracking.js → request-tracking.ts} +15 -16
  125. package/src/util/{result-from-cache-response.js → result-from-cache-response.ts} +6 -7
  126. package/src/util/{scoped-in-memory-cache.js → scoped-in-memory-cache.ts} +3 -4
  127. package/src/util/{serializable-in-memory-cache.js → serializable-in-memory-cache.ts} +5 -6
  128. package/src/util/{ssr-cache.js → ssr-cache.ts} +21 -20
  129. package/src/util/{status.js → status.ts} +5 -6
  130. package/src/util/{to-gql-operation.js → to-gql-operation.ts} +4 -5
  131. package/src/util/{types.js → types.ts} +41 -49
  132. package/tsconfig.json +11 -0
  133. package/tsconfig.tsbuildinfo +1 -0
  134. package/src/__docs__/_overview_.stories.mdx +0 -18
  135. package/src/__docs__/_overview_graphql.stories.mdx +0 -35
  136. package/src/__docs__/_overview_ssr_.stories.mdx +0 -185
  137. package/src/__docs__/_overview_testing_.stories.mdx +0 -123
  138. package/src/__docs__/exports.abort-inflight-requests.stories.mdx +0 -20
  139. package/src/__docs__/exports.data-error.stories.mdx +0 -23
  140. package/src/__docs__/exports.data-errors.stories.mdx +0 -23
  141. package/src/__docs__/exports.data.stories.mdx +0 -146
  142. package/src/__docs__/exports.fetch-tracked-requests.stories.mdx +0 -24
  143. package/src/__docs__/exports.get-gql-request-id.stories.mdx +0 -24
  144. package/src/__docs__/exports.gql-error.stories.mdx +0 -23
  145. package/src/__docs__/exports.gql-errors.stories.mdx +0 -20
  146. package/src/__docs__/exports.gql-router.stories.mdx +0 -29
  147. package/src/__docs__/exports.has-tracked-requests-to-be-fetched.stories.mdx +0 -20
  148. package/src/__docs__/exports.intercept-requests.stories.mdx +0 -69
  149. package/src/__docs__/exports.intialize-hydration-cache.stories.mdx +0 -29
  150. package/src/__docs__/exports.purge-caches.stories.mdx +0 -23
  151. package/src/__docs__/exports.purge-hydration-cache.stories.mdx +0 -24
  152. package/src/__docs__/exports.scoped-in-memory-cache.stories.mdx +0 -92
  153. package/src/__docs__/exports.serializable-in-memory-cache.stories.mdx +0 -112
  154. package/src/__docs__/exports.shared-cache.stories.mdx +0 -16
  155. package/src/__docs__/exports.status.stories.mdx +0 -31
  156. package/src/__docs__/exports.track-data.stories.mdx +0 -209
  157. package/src/__docs__/exports.use-cached-effect.stories.mdx +0 -44
  158. package/src/__docs__/exports.use-gql.stories.mdx +0 -41
  159. package/src/__docs__/exports.use-hydratable-effect.stories.mdx +0 -43
  160. package/src/__docs__/exports.use-server-effect.stories.mdx +0 -50
  161. package/src/__docs__/exports.use-shared-cache.stories.mdx +0 -30
  162. package/src/__docs__/exports.when-client-side.stories.mdx +0 -33
  163. package/src/__docs__/types.cached-response.stories.mdx +0 -29
  164. package/src/__docs__/types.error-options.stories.mdx +0 -21
  165. package/src/__docs__/types.fetch-policy.stories.mdx +0 -44
  166. package/src/__docs__/types.gql-context.stories.mdx +0 -20
  167. package/src/__docs__/types.gql-fetch-fn.stories.mdx +0 -24
  168. package/src/__docs__/types.gql-fetch-options.stories.mdx +0 -24
  169. package/src/__docs__/types.gql-operation-type.stories.mdx +0 -24
  170. package/src/__docs__/types.gql-operation.stories.mdx +0 -67
  171. package/src/__docs__/types.raw-scoped-cache.stories.mdx +0 -27
  172. package/src/__docs__/types.response-cache.stories.mdx +0 -33
  173. package/src/__docs__/types.result.stories.mdx +0 -39
  174. package/src/__docs__/types.scoped-cache.stories.mdx +0 -114
  175. package/src/__docs__/types.valid-cache-data.stories.mdx +0 -23
  176. package/src/index.js +0 -55
  177. package/src/util/gql-router-context.js +0 -6
  178. package/src/util/graphql-types.js +0 -30
  179. /package/src/hooks/__tests__/__snapshots__/{use-shared-cache.test.js.snap → use-shared-cache.test.ts.snap} +0 -0
  180. /package/src/util/__tests__/__snapshots__/{scoped-in-memory-cache.test.js.snap → scoped-in-memory-cache.test.ts.snap} +0 -0
  181. /package/src/util/__tests__/__snapshots__/{serializable-in-memory-cache.test.js.snap → serializable-in-memory-cache.test.ts.snap} +0 -0
@@ -1,114 +0,0 @@
1
- import {Meta} from "@storybook/addon-docs";
2
-
3
- <Meta
4
- title="Data / Types / ScopedCache"
5
- parameters={{
6
- chromatic: {
7
- disableSnapshot: true,
8
- },
9
- }}
10
- />
11
-
12
- # ScopedCache
13
-
14
- ```ts
15
- interface ScopedCache {
16
- set(scope: string, id: string, value: ValidCacheData): void;
17
-
18
- /**
19
- * Retrieve a value from the cache.
20
- */
21
- get(scope: string, id: string): ?ValidCacheData;
22
-
23
- /**
24
- * Purge an item from the cache.
25
- */
26
- purge(scope: string, id: string): void;
27
-
28
- /**
29
- * Purge a scope of items that match the given predicate.
30
- *
31
- * If the predicate is omitted, then all items in the scope are purged.
32
- */
33
- purgeScope(
34
- scope: string,
35
- predicate?: (id: string, value: ValidCacheData) => boolean,
36
- ): void;
37
-
38
- /**
39
- * Purge all items from the cache that match the given predicate.
40
- *
41
- * If the predicate is omitted, then all items in the cache are purged.
42
- */
43
- purgeAll(
44
- predicate?: (
45
- scope: string,
46
- id: string,
47
- value: ValidCacheData,
48
- ) => boolean,
49
- ): void;
50
- }
51
- ```
52
-
53
- This interface defines how to interact with a scoped cache, such as [`ScopedInMemoryCache`](/docs/data-exports-scopedinmemorycache--page).
54
-
55
- ## set()
56
-
57
- ```ts
58
- set(
59
- scope: string,
60
- id: string,
61
- value: TValue,
62
- ): void;
63
- ```
64
-
65
- Sets a value in the cache within a given scope.
66
-
67
- ### Throws
68
-
69
- | Error Type | Error Name | Reason |
70
- | ------ | ------ | ------ |
71
- | [`DataError`](/docs/data-exports-dataerror--page) | `InvalidInputDataError` | `id` and `scope` must be non-empty strings |
72
- | [`DataError`](/docs/data-exports-dataerror--page) | `InvalidInputDataError` | `value` must be a non-function value |
73
-
74
- ## get()
75
-
76
- ```ts
77
- get(scope: string, id: string): ?ValidCacheData;
78
- ```
79
-
80
- Gets a value from the cache. If a value with the given identifier (`id`) is not found within the given scope (`scope`) of the cache, `null` is returned.
81
-
82
- ## purge()
83
-
84
- ```ts
85
- purge(scope: string, id: string): void;
86
- ```
87
-
88
- Purges the value from the cache. If a value with the given identifier (`id`) is not found within the given scope (`scope`) of the cache, nothing happens.
89
-
90
- ## purgeScope()
91
-
92
- ```ts
93
- purgeScope(
94
- scope: string,
95
- predicate?: (id: string, value: ValidCacheData) => boolean,
96
- ): void;
97
- ```
98
-
99
- Purges items within a given scope (`scope`) of the cache from that scope. If a predicate is provided, only items for which the predicate returns `true` will be purged; otherwise, the entire scope will be purged.
100
-
101
- ## purgeAll()
102
-
103
- ```ts
104
- purgeAll(
105
- predicate?: (
106
- scope: string,
107
- id: string,
108
- value: ValidCacheData,
109
- ) => boolean,
110
- ): void;
111
- ```
112
-
113
- Purges all items from the cache. If a predicate is provided, only items for which the predicate returns `true` will be purged; otherwise, the entire cache will be purged.
114
-
@@ -1,23 +0,0 @@
1
- import {Meta} from "@storybook/addon-docs";
2
-
3
- <Meta
4
- title="Data / Types / ValidCacheData"
5
- parameters={{
6
- chromatic: {
7
- disableSnapshot: true,
8
- },
9
- }}
10
- />
11
-
12
- # ValidCacheData
13
-
14
- ```ts
15
- type ValidCacheData =
16
- | string
17
- | boolean
18
- | number
19
- | {...}
20
- | Array<?ValidCacheData>;
21
- ```
22
-
23
- This type represents the data that is allowed into the various caches provided and used by Wonder Blocks Data.
package/src/index.js DELETED
@@ -1,55 +0,0 @@
1
- // @flow
2
- // TODO(somewhatabstract, FEI-4174): Update eslint-plugin-import when they
3
- // have fixed:
4
- // https://github.com/import-js/eslint-plugin-import/issues/2073
5
- // eslint-disable-next-line import/named
6
- export {FetchPolicy} from "./util/types.js";
7
- export type {
8
- ErrorOptions,
9
- ResponseCache,
10
- CachedResponse,
11
- Result,
12
- RawScopedCache,
13
- ValidCacheData,
14
- ScopedCache,
15
- } from "./util/types.js";
16
-
17
- export * from "./util/hydration-cache-api.js";
18
- export * from "./util/request-api.js";
19
- export {purgeCaches} from "./util/purge-caches.js";
20
- export {default as TrackData} from "./components/track-data.js";
21
- export {default as Data} from "./components/data.js";
22
- export {default as InterceptRequests} from "./components/intercept-requests.js";
23
- export {DataError, DataErrors} from "./util/data-error.js";
24
- export {useServerEffect} from "./hooks/use-server-effect.js";
25
- export {useCachedEffect} from "./hooks/use-cached-effect.js";
26
- export {useSharedCache, SharedCache} from "./hooks/use-shared-cache.js";
27
- export {
28
- useHydratableEffect,
29
- // TODO(somewhatabstract, FEI-4174): Update eslint-plugin-import when they
30
- // have fixed:
31
- // https://github.com/import-js/eslint-plugin-import/issues/2073
32
- // eslint-disable-next-line import/named
33
- WhenClientSide,
34
- } from "./hooks/use-hydratable-effect.js";
35
- export {ScopedInMemoryCache} from "./util/scoped-in-memory-cache.js";
36
- export {SerializableInMemoryCache} from "./util/serializable-in-memory-cache.js";
37
- export {Status} from "./util/status.js";
38
-
39
- ////////////////////////////////////////////////////////////////////////////////
40
- // GraphQL
41
- ////////////////////////////////////////////////////////////////////////////////
42
- export {getGqlRequestId} from "./util/get-gql-request-id.js";
43
- export {getGqlDataFromResponse} from "./util/get-gql-data-from-response.js";
44
- export {graphQLDocumentNodeParser} from "./util/graphql-document-node-parser.js";
45
- export {toGqlOperation} from "./util/to-gql-operation.js";
46
- export {GqlRouter} from "./components/gql-router.js";
47
- export {useGql} from "./hooks/use-gql.js";
48
- export {GqlError, GqlErrors} from "./util/gql-error.js";
49
- export type {
50
- GqlContext,
51
- GqlOperation,
52
- GqlOperationType,
53
- GqlFetchOptions,
54
- GqlFetchFn,
55
- } from "./util/gql-types.js";
@@ -1,6 +0,0 @@
1
- // @flow
2
- import * as React from "react";
3
- import type {GqlRouterConfiguration} from "./gql-types.js";
4
-
5
- export const GqlRouterContext: React.Context<?GqlRouterConfiguration<any>> =
6
- React.createContext<?GqlRouterConfiguration<any>>(null);
@@ -1,30 +0,0 @@
1
- // @flow
2
- // NOTE(somewhatabstract):
3
- // These types are bare minimum to support document parsing. They're derived
4
- // from graphql@14.5.8, the last version that provided flow types.
5
- // Doing this avoids us having to take a dependency on that library just for
6
- // these types.
7
- export interface DefinitionNode {
8
- +kind: string;
9
- }
10
-
11
- export type VariableDefinitionNode = {
12
- +kind: "VariableDefinition",
13
- ...
14
- };
15
-
16
- export interface OperationDefinitionNode extends DefinitionNode {
17
- +kind: "OperationDefinition";
18
- +operation: string;
19
- +variableDefinitions: $ReadOnlyArray<VariableDefinitionNode>;
20
- +name?: {|
21
- +kind: mixed,
22
- +value: string,
23
- |};
24
- }
25
-
26
- export type DocumentNode = {
27
- +kind: "Document",
28
- +definitions: $ReadOnlyArray<DefinitionNode>,
29
- ...
30
- };