fontdue-js 3.0.6 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/__generated__/FeatureTesterCard_fontStyle.graphql.d.ts +23 -0
- package/dist/__generated__/FeatureTesterCard_fontStyle.graphql.js +62 -0
- package/dist/__generated__/FeatureTesterStandaloneQuery.graphql.d.ts +25 -0
- package/dist/__generated__/FeatureTesterStandaloneQuery.graphql.js +240 -0
- package/dist/__generated__/FeatureTestersIdQuery.graphql.d.ts +21 -0
- package/dist/__generated__/FeatureTestersIdQuery.graphql.js +344 -0
- package/dist/__generated__/FeatureTestersSlugQuery.graphql.d.ts +25 -0
- package/dist/__generated__/FeatureTestersSlugQuery.graphql.js +364 -0
- package/dist/__generated__/FeatureTesters_collection.graphql.d.ts +39 -0
- package/dist/__generated__/FeatureTesters_collection.graphql.js +145 -0
- package/dist/__generated__/NodePasswordFormAccessNodeMutation.graphql.d.ts +2 -1
- package/dist/__generated__/NodePasswordFormAccessNodeMutation.graphql.js +10 -4
- package/dist/__generated__/NodePasswordFormElementIDQuery.graphql.d.ts +21 -0
- package/dist/__generated__/NodePasswordFormElementIDQuery.graphql.js +86 -0
- package/dist/__generated__/NodePasswordFormElementSlugQuery.graphql.d.ts +25 -0
- package/dist/__generated__/NodePasswordFormElementSlugQuery.graphql.js +108 -0
- package/dist/__tests__/createFontdueFetch.test.js +128 -4
- package/dist/__tests__/highlight.test.js +141 -0
- package/dist/__tests__/middleware.test.js +132 -0
- package/dist/components/FeatureTester/FeatureTesterCard.d.ts +30 -0
- package/dist/components/FeatureTester/FeatureTesterCard.js +167 -0
- package/dist/components/FeatureTester/FeatureTesterElement.d.ts +19 -0
- package/dist/components/FeatureTester/FeatureTesterElement.js +42 -0
- package/dist/components/FeatureTester/FeatureTesters.d.ts +43 -0
- package/dist/components/FeatureTester/FeatureTesters.js +156 -0
- package/dist/components/FeatureTester/FeatureTesters.server.d.ts +9 -0
- package/dist/components/FeatureTester/FeatureTesters.server.js +40 -0
- package/dist/components/FeatureTester/FeatureTestersElement.d.ts +10 -0
- package/dist/components/FeatureTester/FeatureTestersElement.js +27 -0
- package/dist/components/FeatureTester/highlight.d.ts +19 -0
- package/dist/components/FeatureTester/highlight.js +71 -0
- package/dist/components/FeatureTester/index.d.ts +26 -0
- package/dist/components/FeatureTester/index.js +66 -0
- package/dist/components/FeatureTester/index.server.d.ts +7 -0
- package/dist/components/FeatureTester/index.server.js +30 -0
- package/dist/components/NodePasswordForm/NodePasswordFormElement.d.ts +3 -0
- package/dist/components/NodePasswordForm/NodePasswordFormElement.js +65 -0
- package/dist/components/NodePasswordForm/index.d.ts +16 -1
- package/dist/components/NodePasswordForm/index.js +30 -59
- package/dist/components/Root/index.js +2 -1
- package/dist/fontdue.css +145 -0
- package/dist/hooks/useFeatureTesterAutofit.d.ts +17 -0
- package/dist/hooks/useFeatureTesterAutofit.js +106 -0
- package/dist/next/index.d.ts +2 -0
- package/dist/next/index.js +16 -1
- package/dist/next/registerSingleTenantResolver.js +13 -1
- package/dist/next/tenant.d.ts +1 -0
- package/dist/next/tenant.js +27 -2
- package/dist/nodeAccess.d.ts +18 -0
- package/dist/nodeAccess.js +84 -0
- package/dist/preview/server.d.ts +1 -20
- package/dist/preview/server.js +16 -85
- package/dist/relay/environment.js +8 -2
- package/dist/relay/serverConfig.d.ts +3 -0
- package/dist/relay/serverConfig.js +22 -1
- package/dist/server/index.d.ts +8 -0
- package/dist/server/index.js +90 -7
- package/dist/server/middleware.d.ts +37 -0
- package/dist/server/middleware.js +144 -0
- package/package.json +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## 3.1.0
|
|
2
|
+
|
|
3
|
+
- **New `FeatureTesters` component** (`fontdue-js/FeatureTesters`) — renders a collection's *feature tester* cards, each showcasing an OpenType feature by toggling it on and off and tinting exactly the characters the feature changes. Pass `collectionId` or `collectionSlug`; in a React Server Component the server entry preloads its own query, and in a client tree (`preloadedQuery` or inside a `<FontdueProvider>`) it hydrates or lazy-loads like the other collection components. Collection-level props override the per-card dashboard settings: `highlightColor`, `toggle` (`'button'` or `'hover'`), and `autofit`. Requires a Fontdue backend that exposes `FontCollection.featureTesters` and the `FeatureTester` node. See [Feature Testers](https://www.fontdue.com/docs/reference/feature-testers).
|
|
4
|
+
- **Password-protected collections now work on server-rendered storefronts** (see [Password-protected collections](https://www.fontdue.com/docs/develop/password-protected-collections)), not just the `<fontdue-node-password-form>` custom element:
|
|
5
|
+
- New `NodePasswordForm` component (`fontdue-js/NodePasswordForm`) — a presentational password form to render when a collection comes back password-protected. It commits the `accessNode` mutation, stores the returned access token in a first-party cookie, and reloads so the now-unlocked collection renders. It does no data fetching of its own (no Suspense flash) and self-wraps its Fontdue context, so it also works as a standalone island.
|
|
6
|
+
- `createFontdueFetch` (`fontdue-js/server`) now throws a typed `FontduePasswordProtectedError` (GraphQL code `password_protected`) rather than a generic error, so a server-rendered page can branch on the locked state. In Next.js it additionally auto-recovers: on a `password_protected` error it folds the visitor's unlock token into the per-render config and retries, so a protected page and its embedded components' server preloads render unlocked with no host-app plumbing.
|
|
7
|
+
- New `fontdue-js/server/middleware` module exporting `runWithNodeAccess` (forwards a visitor's unlock token through a request) and `runWithFontdue` (composes preview- and node-access forwarding) for non-Next SSR frameworks (Astro, React Router 7, TanStack Start). `runWithPreview` is unchanged and still re-exported from `fontdue-js/preview/server`.
|
|
8
|
+
- New `nodeAccessHeaders()` from `fontdue-js/next`.
|
|
9
|
+
- Requires a Fontdue backend that returns `token` on `AccessNodePayload` and accepts the `fontdue-node-access` request header.
|
|
10
|
+
|
|
1
11
|
## 3.0.6
|
|
2
12
|
|
|
3
13
|
- `TypeTesters` now honours a per-tester text `alignment` (`left`, `center`, or `right`) set in the admin dashboard, overriding the config's `initialAlignment` default. Testers with no explicit alignment keep the previous behaviour — the `initialAlignment` config, or `right` for right-to-left testers. Requires a Fontdue backend that exposes the `alignment` field on type testers.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated SignedSource<<2bcd7d635b37208eb99537239a6aae76>>
|
|
3
|
+
* @lightSyntaxTransform
|
|
4
|
+
* @nogrep
|
|
5
|
+
*/
|
|
6
|
+
import { ReaderFragment } from 'relay-runtime';
|
|
7
|
+
import { FragmentRefs } from "relay-runtime";
|
|
8
|
+
export type FeatureTesterCard_fontStyle$data = {
|
|
9
|
+
readonly cssFamily: string | null;
|
|
10
|
+
readonly glyphNames: ReadonlyArray<{
|
|
11
|
+
readonly characters: string;
|
|
12
|
+
readonly features: ReadonlyArray<string> | null;
|
|
13
|
+
}> | null;
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly " $fragmentSpreads": FragmentRefs<"FontStyle_fontStyle" | "useFeaturesData_fontStyle">;
|
|
16
|
+
readonly " $fragmentType": "FeatureTesterCard_fontStyle";
|
|
17
|
+
};
|
|
18
|
+
export type FeatureTesterCard_fontStyle$key = {
|
|
19
|
+
readonly " $data"?: FeatureTesterCard_fontStyle$data;
|
|
20
|
+
readonly " $fragmentSpreads": FragmentRefs<"FeatureTesterCard_fontStyle">;
|
|
21
|
+
};
|
|
22
|
+
declare const node: ReaderFragment;
|
|
23
|
+
export default node;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated SignedSource<<2bcd7d635b37208eb99537239a6aae76>>
|
|
3
|
+
* @lightSyntaxTransform
|
|
4
|
+
* @nogrep
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* tslint:disable */
|
|
8
|
+
/* eslint-disable */
|
|
9
|
+
// @ts-nocheck
|
|
10
|
+
|
|
11
|
+
const node = {
|
|
12
|
+
"argumentDefinitions": [],
|
|
13
|
+
"kind": "Fragment",
|
|
14
|
+
"metadata": null,
|
|
15
|
+
"name": "FeatureTesterCard_fontStyle",
|
|
16
|
+
"selections": [{
|
|
17
|
+
"args": null,
|
|
18
|
+
"kind": "FragmentSpread",
|
|
19
|
+
"name": "FontStyle_fontStyle"
|
|
20
|
+
}, {
|
|
21
|
+
"args": null,
|
|
22
|
+
"kind": "FragmentSpread",
|
|
23
|
+
"name": "useFeaturesData_fontStyle"
|
|
24
|
+
}, {
|
|
25
|
+
"alias": null,
|
|
26
|
+
"args": null,
|
|
27
|
+
"kind": "ScalarField",
|
|
28
|
+
"name": "cssFamily",
|
|
29
|
+
"storageKey": null
|
|
30
|
+
}, {
|
|
31
|
+
"alias": null,
|
|
32
|
+
"args": null,
|
|
33
|
+
"kind": "ScalarField",
|
|
34
|
+
"name": "name",
|
|
35
|
+
"storageKey": null
|
|
36
|
+
}, {
|
|
37
|
+
"alias": null,
|
|
38
|
+
"args": null,
|
|
39
|
+
"concreteType": "GlyphName",
|
|
40
|
+
"kind": "LinkedField",
|
|
41
|
+
"name": "glyphNames",
|
|
42
|
+
"plural": true,
|
|
43
|
+
"selections": [{
|
|
44
|
+
"alias": null,
|
|
45
|
+
"args": null,
|
|
46
|
+
"kind": "ScalarField",
|
|
47
|
+
"name": "characters",
|
|
48
|
+
"storageKey": null
|
|
49
|
+
}, {
|
|
50
|
+
"alias": null,
|
|
51
|
+
"args": null,
|
|
52
|
+
"kind": "ScalarField",
|
|
53
|
+
"name": "features",
|
|
54
|
+
"storageKey": null
|
|
55
|
+
}],
|
|
56
|
+
"storageKey": null
|
|
57
|
+
}],
|
|
58
|
+
"type": "FontStyle",
|
|
59
|
+
"abstractKey": null
|
|
60
|
+
};
|
|
61
|
+
node.hash = "687d8afca93d615ed0794f963702d082";
|
|
62
|
+
export default node;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated SignedSource<<f2ab2286dcf091bd52af2d5bc336b434>>
|
|
3
|
+
* @lightSyntaxTransform
|
|
4
|
+
* @nogrep
|
|
5
|
+
*/
|
|
6
|
+
import { ConcreteRequest } from 'relay-runtime';
|
|
7
|
+
import { FragmentRefs } from "relay-runtime";
|
|
8
|
+
export type FeatureTesterStandaloneQuery$variables = {
|
|
9
|
+
familyName: string;
|
|
10
|
+
styleName: string;
|
|
11
|
+
};
|
|
12
|
+
export type FeatureTesterStandaloneQuery$data = {
|
|
13
|
+
readonly viewer: {
|
|
14
|
+
readonly fontStyle: {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly " $fragmentSpreads": FragmentRefs<"FeatureTesterCard_fontStyle">;
|
|
17
|
+
} | null;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
export type FeatureTesterStandaloneQuery = {
|
|
21
|
+
response: FeatureTesterStandaloneQuery$data;
|
|
22
|
+
variables: FeatureTesterStandaloneQuery$variables;
|
|
23
|
+
};
|
|
24
|
+
declare const node: ConcreteRequest;
|
|
25
|
+
export default node;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated SignedSource<<f2ab2286dcf091bd52af2d5bc336b434>>
|
|
3
|
+
* @lightSyntaxTransform
|
|
4
|
+
* @nogrep
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* tslint:disable */
|
|
8
|
+
/* eslint-disable */
|
|
9
|
+
// @ts-nocheck
|
|
10
|
+
|
|
11
|
+
const node = function () {
|
|
12
|
+
var v0 = [{
|
|
13
|
+
"defaultValue": null,
|
|
14
|
+
"kind": "LocalArgument",
|
|
15
|
+
"name": "familyName"
|
|
16
|
+
}, {
|
|
17
|
+
"defaultValue": null,
|
|
18
|
+
"kind": "LocalArgument",
|
|
19
|
+
"name": "styleName"
|
|
20
|
+
}],
|
|
21
|
+
v1 = [{
|
|
22
|
+
"kind": "Variable",
|
|
23
|
+
"name": "familyName",
|
|
24
|
+
"variableName": "familyName"
|
|
25
|
+
}, {
|
|
26
|
+
"kind": "Variable",
|
|
27
|
+
"name": "styleName",
|
|
28
|
+
"variableName": "styleName"
|
|
29
|
+
}],
|
|
30
|
+
v2 = {
|
|
31
|
+
"alias": null,
|
|
32
|
+
"args": null,
|
|
33
|
+
"kind": "ScalarField",
|
|
34
|
+
"name": "id",
|
|
35
|
+
"storageKey": null
|
|
36
|
+
};
|
|
37
|
+
return {
|
|
38
|
+
"fragment": {
|
|
39
|
+
"argumentDefinitions": v0 /*: any*/,
|
|
40
|
+
"kind": "Fragment",
|
|
41
|
+
"metadata": null,
|
|
42
|
+
"name": "FeatureTesterStandaloneQuery",
|
|
43
|
+
"selections": [{
|
|
44
|
+
"alias": null,
|
|
45
|
+
"args": null,
|
|
46
|
+
"concreteType": "Viewer",
|
|
47
|
+
"kind": "LinkedField",
|
|
48
|
+
"name": "viewer",
|
|
49
|
+
"plural": false,
|
|
50
|
+
"selections": [{
|
|
51
|
+
"alias": null,
|
|
52
|
+
"args": v1 /*: any*/,
|
|
53
|
+
"concreteType": "FontStyle",
|
|
54
|
+
"kind": "LinkedField",
|
|
55
|
+
"name": "fontStyle",
|
|
56
|
+
"plural": false,
|
|
57
|
+
"selections": [v2 /*: any*/, {
|
|
58
|
+
"args": null,
|
|
59
|
+
"kind": "FragmentSpread",
|
|
60
|
+
"name": "FeatureTesterCard_fontStyle"
|
|
61
|
+
}],
|
|
62
|
+
"storageKey": null
|
|
63
|
+
}],
|
|
64
|
+
"storageKey": null
|
|
65
|
+
}],
|
|
66
|
+
"type": "RootQueryType",
|
|
67
|
+
"abstractKey": null
|
|
68
|
+
},
|
|
69
|
+
"kind": "Request",
|
|
70
|
+
"operation": {
|
|
71
|
+
"argumentDefinitions": v0 /*: any*/,
|
|
72
|
+
"kind": "Operation",
|
|
73
|
+
"name": "FeatureTesterStandaloneQuery",
|
|
74
|
+
"selections": [{
|
|
75
|
+
"alias": null,
|
|
76
|
+
"args": null,
|
|
77
|
+
"concreteType": "Viewer",
|
|
78
|
+
"kind": "LinkedField",
|
|
79
|
+
"name": "viewer",
|
|
80
|
+
"plural": false,
|
|
81
|
+
"selections": [{
|
|
82
|
+
"alias": null,
|
|
83
|
+
"args": v1 /*: any*/,
|
|
84
|
+
"concreteType": "FontStyle",
|
|
85
|
+
"kind": "LinkedField",
|
|
86
|
+
"name": "fontStyle",
|
|
87
|
+
"plural": false,
|
|
88
|
+
"selections": [v2 /*: any*/, {
|
|
89
|
+
"alias": null,
|
|
90
|
+
"args": null,
|
|
91
|
+
"kind": "ScalarField",
|
|
92
|
+
"name": "cssFamily",
|
|
93
|
+
"storageKey": null
|
|
94
|
+
}, {
|
|
95
|
+
"alias": null,
|
|
96
|
+
"args": null,
|
|
97
|
+
"kind": "ScalarField",
|
|
98
|
+
"name": "name",
|
|
99
|
+
"storageKey": null
|
|
100
|
+
}, {
|
|
101
|
+
"alias": null,
|
|
102
|
+
"args": null,
|
|
103
|
+
"concreteType": "WebfontSource",
|
|
104
|
+
"kind": "LinkedField",
|
|
105
|
+
"name": "webfontSources",
|
|
106
|
+
"plural": true,
|
|
107
|
+
"selections": [{
|
|
108
|
+
"alias": null,
|
|
109
|
+
"args": null,
|
|
110
|
+
"kind": "ScalarField",
|
|
111
|
+
"name": "url",
|
|
112
|
+
"storageKey": null
|
|
113
|
+
}, {
|
|
114
|
+
"alias": null,
|
|
115
|
+
"args": null,
|
|
116
|
+
"kind": "ScalarField",
|
|
117
|
+
"name": "format",
|
|
118
|
+
"storageKey": null
|
|
119
|
+
}, {
|
|
120
|
+
"alias": null,
|
|
121
|
+
"args": null,
|
|
122
|
+
"kind": "ScalarField",
|
|
123
|
+
"name": "tech",
|
|
124
|
+
"storageKey": null
|
|
125
|
+
}],
|
|
126
|
+
"storageKey": null
|
|
127
|
+
}, {
|
|
128
|
+
"alias": null,
|
|
129
|
+
"args": null,
|
|
130
|
+
"concreteType": "VerticalMetrics",
|
|
131
|
+
"kind": "LinkedField",
|
|
132
|
+
"name": "verticalMetrics",
|
|
133
|
+
"plural": false,
|
|
134
|
+
"selections": [{
|
|
135
|
+
"alias": null,
|
|
136
|
+
"args": null,
|
|
137
|
+
"kind": "ScalarField",
|
|
138
|
+
"name": "unitsPerEm",
|
|
139
|
+
"storageKey": null
|
|
140
|
+
}, {
|
|
141
|
+
"alias": null,
|
|
142
|
+
"args": null,
|
|
143
|
+
"kind": "ScalarField",
|
|
144
|
+
"name": "ascender",
|
|
145
|
+
"storageKey": null
|
|
146
|
+
}, {
|
|
147
|
+
"alias": null,
|
|
148
|
+
"args": null,
|
|
149
|
+
"kind": "ScalarField",
|
|
150
|
+
"name": "descender",
|
|
151
|
+
"storageKey": null
|
|
152
|
+
}, {
|
|
153
|
+
"alias": null,
|
|
154
|
+
"args": null,
|
|
155
|
+
"kind": "ScalarField",
|
|
156
|
+
"name": "lineGap",
|
|
157
|
+
"storageKey": null
|
|
158
|
+
}, {
|
|
159
|
+
"alias": null,
|
|
160
|
+
"args": null,
|
|
161
|
+
"kind": "ScalarField",
|
|
162
|
+
"name": "avgCharWidth",
|
|
163
|
+
"storageKey": null
|
|
164
|
+
}],
|
|
165
|
+
"storageKey": null
|
|
166
|
+
}, {
|
|
167
|
+
"alias": null,
|
|
168
|
+
"args": null,
|
|
169
|
+
"concreteType": "FontFeatures",
|
|
170
|
+
"kind": "LinkedField",
|
|
171
|
+
"name": "fontFeatures",
|
|
172
|
+
"plural": false,
|
|
173
|
+
"selections": [{
|
|
174
|
+
"alias": null,
|
|
175
|
+
"args": null,
|
|
176
|
+
"kind": "ScalarField",
|
|
177
|
+
"name": "supportedFeatures",
|
|
178
|
+
"storageKey": null
|
|
179
|
+
}, {
|
|
180
|
+
"alias": null,
|
|
181
|
+
"args": null,
|
|
182
|
+
"concreteType": "StylisticSetName",
|
|
183
|
+
"kind": "LinkedField",
|
|
184
|
+
"name": "stylisticSetNames",
|
|
185
|
+
"plural": true,
|
|
186
|
+
"selections": [{
|
|
187
|
+
"alias": null,
|
|
188
|
+
"args": null,
|
|
189
|
+
"kind": "ScalarField",
|
|
190
|
+
"name": "featureName",
|
|
191
|
+
"storageKey": null
|
|
192
|
+
}, {
|
|
193
|
+
"alias": null,
|
|
194
|
+
"args": null,
|
|
195
|
+
"kind": "ScalarField",
|
|
196
|
+
"name": "humanName",
|
|
197
|
+
"storageKey": null
|
|
198
|
+
}],
|
|
199
|
+
"storageKey": null
|
|
200
|
+
}],
|
|
201
|
+
"storageKey": null
|
|
202
|
+
}, {
|
|
203
|
+
"alias": null,
|
|
204
|
+
"args": null,
|
|
205
|
+
"concreteType": "GlyphName",
|
|
206
|
+
"kind": "LinkedField",
|
|
207
|
+
"name": "glyphNames",
|
|
208
|
+
"plural": true,
|
|
209
|
+
"selections": [{
|
|
210
|
+
"alias": null,
|
|
211
|
+
"args": null,
|
|
212
|
+
"kind": "ScalarField",
|
|
213
|
+
"name": "characters",
|
|
214
|
+
"storageKey": null
|
|
215
|
+
}, {
|
|
216
|
+
"alias": null,
|
|
217
|
+
"args": null,
|
|
218
|
+
"kind": "ScalarField",
|
|
219
|
+
"name": "features",
|
|
220
|
+
"storageKey": null
|
|
221
|
+
}],
|
|
222
|
+
"storageKey": null
|
|
223
|
+
}],
|
|
224
|
+
"storageKey": null
|
|
225
|
+
}, v2 /*: any*/],
|
|
226
|
+
"storageKey": null
|
|
227
|
+
}]
|
|
228
|
+
},
|
|
229
|
+
"params": {
|
|
230
|
+
"cacheID": "5982e90168f8a77ba758d70535cbb32a",
|
|
231
|
+
"id": null,
|
|
232
|
+
"metadata": {},
|
|
233
|
+
"name": "FeatureTesterStandaloneQuery",
|
|
234
|
+
"operationKind": "query",
|
|
235
|
+
"text": "query FeatureTesterStandaloneQuery(\n $familyName: String!\n $styleName: String!\n) {\n viewer {\n fontStyle(familyName: $familyName, styleName: $styleName) {\n id\n ...FeatureTesterCard_fontStyle\n }\n id\n }\n}\n\nfragment FeatureTesterCard_fontStyle on FontStyle {\n ...FontStyle_fontStyle\n ...useFeaturesData_fontStyle\n cssFamily\n name\n glyphNames {\n characters\n features\n }\n}\n\nfragment FontStyle_fontStyle on FontStyle {\n ...useFontStyle_fontStyle\n}\n\nfragment useFeaturesData_fontStyle on FontStyle {\n fontFeatures {\n supportedFeatures\n stylisticSetNames {\n featureName\n humanName\n }\n }\n}\n\nfragment useFontStyle_fontStyle on FontStyle {\n cssFamily\n name\n webfontSources {\n url\n format\n tech\n }\n verticalMetrics {\n unitsPerEm\n ascender\n descender\n lineGap\n avgCharWidth\n }\n}\n"
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
}();
|
|
239
|
+
node.hash = "eddba300b2fd5e283ab1f8f787edc518";
|
|
240
|
+
export default node;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @generated SignedSource<<c3ad0b621c332052d7f7324469a05f99>>
|
|
3
|
+
* @lightSyntaxTransform
|
|
4
|
+
* @nogrep
|
|
5
|
+
*/
|
|
6
|
+
import { ConcreteRequest } from 'relay-runtime';
|
|
7
|
+
import { FragmentRefs } from "relay-runtime";
|
|
8
|
+
export type FeatureTestersIdQuery$variables = {
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
export type FeatureTestersIdQuery$data = {
|
|
12
|
+
readonly node: {
|
|
13
|
+
readonly " $fragmentSpreads": FragmentRefs<"FeatureTesters_collection">;
|
|
14
|
+
} | null;
|
|
15
|
+
};
|
|
16
|
+
export type FeatureTestersIdQuery = {
|
|
17
|
+
response: FeatureTestersIdQuery$data;
|
|
18
|
+
variables: FeatureTestersIdQuery$variables;
|
|
19
|
+
};
|
|
20
|
+
declare const node: ConcreteRequest;
|
|
21
|
+
export default node;
|