@volter/twin-googlefonts 0.0.0-stage → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +15 -2
  3. package/api/spec/SOURCE.md +17 -0
  4. package/api/spec/discovery.json +306 -0
  5. package/api/spec/openapi.json +647 -0
  6. package/api/spec/sources.json +6 -0
  7. package/api/src/fetch.ts +16 -0
  8. package/api/src/generated/surface.gen.json +1 -0
  9. package/api/src/generated/ui.gen.json +1 -0
  10. package/api/src/index.ts +3 -0
  11. package/api/src/manifest.ts +31 -0
  12. package/api/src/semantics/doors.ts +131 -0
  13. package/api/src/semantics/index.ts +8 -0
  14. package/api/src/semantics/shared.ts +1 -0
  15. package/api/src/semantics/states.ts +6 -0
  16. package/api/src/semantics/webfonts.ts +32 -0
  17. package/assets/spec/SOURCE.md +11 -0
  18. package/assets/spec/openapi.json +162 -0
  19. package/assets/spec/sources.json +1 -0
  20. package/assets/src/fetch.ts +14 -0
  21. package/assets/src/generated/surface.gen.json +1 -0
  22. package/assets/src/generated/ui.gen.json +1 -0
  23. package/assets/src/index.ts +3 -0
  24. package/assets/src/manifest.ts +19 -0
  25. package/assets/src/semantics/index.ts +10 -0
  26. package/assets/src/semantics/l.ts +4 -0
  27. package/assets/src/semantics/s.ts +4 -0
  28. package/assets/src/semantics/shared.ts +13 -0
  29. package/css/spec/SOURCE.md +15 -0
  30. package/css/spec/openapi.json +142 -0
  31. package/css/spec/sources.json +1 -0
  32. package/css/src/fetch.ts +14 -0
  33. package/css/src/generated/surface.gen.json +1 -0
  34. package/css/src/generated/ui.gen.json +1 -0
  35. package/css/src/index.ts +3 -0
  36. package/css/src/manifest.ts +19 -0
  37. package/css/src/semantics/css.ts +19 -0
  38. package/css/src/semantics/css2.ts +20 -0
  39. package/css/src/semantics/index.ts +10 -0
  40. package/css/src/semantics/shared.ts +1 -0
  41. package/dist/api/spec/SOURCE.md +17 -0
  42. package/dist/api/spec/discovery.json +306 -0
  43. package/dist/api/spec/openapi.json +647 -0
  44. package/dist/api/spec/sources.json +6 -0
  45. package/dist/api/src/fetch.d.ts +2 -0
  46. package/dist/api/src/fetch.js +15 -0
  47. package/dist/api/src/fetch.ts +16 -0
  48. package/dist/api/src/generated/surface.gen.json +1 -0
  49. package/dist/api/src/generated/ui.gen.json +1 -0
  50. package/dist/api/src/index.d.ts +2 -0
  51. package/dist/api/src/index.js +3 -0
  52. package/dist/api/src/index.ts +3 -0
  53. package/dist/api/src/manifest.d.ts +2 -0
  54. package/dist/api/src/manifest.js +29 -0
  55. package/dist/api/src/manifest.ts +31 -0
  56. package/dist/api/src/semantics/doors.d.ts +3 -0
  57. package/dist/api/src/semantics/doors.js +138 -0
  58. package/dist/api/src/semantics/doors.ts +131 -0
  59. package/dist/api/src/semantics/index.d.ts +2 -0
  60. package/dist/api/src/semantics/index.js +4 -0
  61. package/dist/api/src/semantics/index.ts +8 -0
  62. package/dist/api/src/semantics/shared.d.ts +1 -0
  63. package/dist/api/src/semantics/shared.js +1 -0
  64. package/dist/api/src/semantics/shared.ts +1 -0
  65. package/dist/api/src/semantics/states.d.ts +8 -0
  66. package/dist/api/src/semantics/states.js +6 -0
  67. package/dist/api/src/semantics/states.ts +6 -0
  68. package/dist/api/src/semantics/webfonts.d.ts +2 -0
  69. package/dist/api/src/semantics/webfonts.js +34 -0
  70. package/dist/api/src/semantics/webfonts.ts +32 -0
  71. package/dist/assets/spec/SOURCE.md +11 -0
  72. package/dist/assets/spec/openapi.json +162 -0
  73. package/dist/assets/spec/sources.json +1 -0
  74. package/dist/assets/src/fetch.d.ts +2 -0
  75. package/dist/assets/src/fetch.js +13 -0
  76. package/dist/assets/src/fetch.ts +14 -0
  77. package/dist/assets/src/generated/surface.gen.json +1 -0
  78. package/dist/assets/src/generated/ui.gen.json +1 -0
  79. package/dist/assets/src/index.d.ts +2 -0
  80. package/dist/assets/src/index.js +3 -0
  81. package/dist/assets/src/index.ts +3 -0
  82. package/dist/assets/src/manifest.d.ts +2 -0
  83. package/dist/assets/src/manifest.js +17 -0
  84. package/dist/assets/src/manifest.ts +19 -0
  85. package/dist/assets/src/semantics/index.d.ts +2 -0
  86. package/dist/assets/src/semantics/index.js +6 -0
  87. package/dist/assets/src/semantics/index.ts +10 -0
  88. package/dist/assets/src/semantics/l.d.ts +2 -0
  89. package/dist/assets/src/semantics/l.js +3 -0
  90. package/dist/assets/src/semantics/l.ts +4 -0
  91. package/dist/assets/src/semantics/s.d.ts +2 -0
  92. package/dist/assets/src/semantics/s.js +3 -0
  93. package/dist/assets/src/semantics/s.ts +4 -0
  94. package/dist/assets/src/semantics/shared.d.ts +2 -0
  95. package/dist/assets/src/semantics/shared.js +13 -0
  96. package/dist/assets/src/semantics/shared.ts +13 -0
  97. package/dist/css/spec/SOURCE.md +15 -0
  98. package/dist/css/spec/openapi.json +142 -0
  99. package/dist/css/spec/sources.json +1 -0
  100. package/dist/css/src/fetch.d.ts +2 -0
  101. package/dist/css/src/fetch.js +13 -0
  102. package/dist/css/src/fetch.ts +14 -0
  103. package/dist/css/src/generated/surface.gen.json +1 -0
  104. package/dist/css/src/generated/ui.gen.json +1 -0
  105. package/dist/css/src/index.d.ts +2 -0
  106. package/dist/css/src/index.js +3 -0
  107. package/dist/css/src/index.ts +3 -0
  108. package/dist/css/src/manifest.d.ts +2 -0
  109. package/dist/css/src/manifest.js +16 -0
  110. package/dist/css/src/manifest.ts +19 -0
  111. package/dist/css/src/semantics/css.d.ts +2 -0
  112. package/dist/css/src/semantics/css.js +19 -0
  113. package/dist/css/src/semantics/css.ts +19 -0
  114. package/dist/css/src/semantics/css2.d.ts +2 -0
  115. package/dist/css/src/semantics/css2.js +21 -0
  116. package/dist/css/src/semantics/css2.ts +20 -0
  117. package/dist/css/src/semantics/index.d.ts +2 -0
  118. package/dist/css/src/semantics/index.js +6 -0
  119. package/dist/css/src/semantics/index.ts +10 -0
  120. package/dist/css/src/semantics/shared.d.ts +1 -0
  121. package/dist/css/src/semantics/shared.js +1 -0
  122. package/dist/css/src/semantics/shared.ts +1 -0
  123. package/dist/journeys/customer-life.json +463 -0
  124. package/dist/journeys/customer-life.outline.md +24 -0
  125. package/dist/journeys/customer-life.outline.verdict.json +82 -0
  126. package/dist/journeys/customer-life.verdict.json +149 -0
  127. package/dist/journeys/decisions.json +54 -0
  128. package/dist/journeys/demand.json +67 -0
  129. package/dist/journeys/first-use.json +20 -0
  130. package/dist/src/cli.d.ts +2 -0
  131. package/dist/src/cli.js +21 -0
  132. package/dist/src/fetch.d.ts +2 -0
  133. package/dist/src/fetch.js +10 -0
  134. package/dist/src/index.d.ts +5 -0
  135. package/dist/src/index.js +15 -0
  136. package/dist/src/manifest.d.ts +2 -0
  137. package/dist/src/manifest.js +25 -0
  138. package/dist/src/semantics/seed.d.ts +2 -0
  139. package/dist/src/semantics/seed.js +141 -0
  140. package/dist/src/semantics/shared.d.ts +9 -0
  141. package/dist/src/semantics/shared.js +23 -0
  142. package/dist/src/server.d.ts +7 -0
  143. package/dist/src/server.js +7 -0
  144. package/dist/vendor/Inter-OFL.txt +93 -0
  145. package/dist/vendor/OFL.txt +94 -0
  146. package/dist/vendor/SOURCE.md +33 -0
  147. package/dist/vendor/antic.json +93 -0
  148. package/dist/vendor/inputs.json +460 -0
  149. package/dist/vendor/inter.json +44 -0
  150. package/dist/vendor/noto-sans-sc-text.json +24 -0
  151. package/generated/pack-facts.json +65 -0
  152. package/journeys/customer-life.json +463 -0
  153. package/journeys/customer-life.outline.md +24 -0
  154. package/journeys/customer-life.outline.verdict.json +82 -0
  155. package/journeys/customer-life.verdict.json +149 -0
  156. package/journeys/decisions.json +54 -0
  157. package/journeys/demand.json +67 -0
  158. package/journeys/first-use.json +20 -0
  159. package/package.json +41 -4
  160. package/src/cli.ts +22 -0
  161. package/src/fetch.ts +11 -0
  162. package/src/index.ts +17 -0
  163. package/src/manifest.ts +27 -0
  164. package/src/semantics/seed.ts +143 -0
  165. package/src/semantics/shared.ts +25 -0
  166. package/src/server.ts +8 -0
  167. package/vendor/Inter-OFL.txt +93 -0
  168. package/vendor/OFL.txt +94 -0
  169. package/vendor/SOURCE.md +33 -0
  170. package/vendor/antic.json +93 -0
  171. package/vendor/inputs.json +460 -0
  172. package/vendor/inter.json +44 -0
  173. package/vendor/noto-sans-sc-text.json +24 -0
@@ -0,0 +1,647 @@
1
+ {
2
+ "openapi": "3.0.3",
3
+ "info": {
4
+ "title": "Web Fonts Developer API",
5
+ "version": "v1 rev 20260903",
6
+ "description": "Converted by scripts/spec-discovery-to-openapi.ts from retained Discovery bytes (fetched 2026-10-12); flatPath routes, request/response schemas and Discovery metadata retained."
7
+ },
8
+ "servers": [
9
+ {
10
+ "url": "https://webfonts.googleapis.com"
11
+ }
12
+ ],
13
+ "components": {
14
+ "schemas": {
15
+ "WebfontList": {
16
+ "properties": {
17
+ "items": {
18
+ "type": "array",
19
+ "items": {
20
+ "$ref": "#/components/schemas/Webfont"
21
+ },
22
+ "description": "The list of fonts currently served by the Google Fonts API."
23
+ },
24
+ "kind": {
25
+ "description": "This kind represents a list of webfont objects in the webfonts service.",
26
+ "type": "string"
27
+ }
28
+ },
29
+ "type": "object",
30
+ "x-discovery-id": "WebfontList",
31
+ "description": "Response containing the list of fonts currently served by the Google Fonts API."
32
+ },
33
+ "Tag": {
34
+ "description": "Metadata for a tag.",
35
+ "type": "object",
36
+ "x-discovery-id": "Tag",
37
+ "properties": {
38
+ "weight": {
39
+ "format": "float",
40
+ "type": "number",
41
+ "description": "The weight of the tag."
42
+ },
43
+ "name": {
44
+ "description": "The name of the tag.",
45
+ "type": "string"
46
+ }
47
+ }
48
+ },
49
+ "Webfont": {
50
+ "description": "Metadata describing a family of fonts.",
51
+ "x-discovery-id": "Webfont",
52
+ "type": "object",
53
+ "properties": {
54
+ "colorCapabilities": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string"
58
+ },
59
+ "description": "The color format(s) available for this family."
60
+ },
61
+ "category": {
62
+ "type": "string",
63
+ "description": "The category of the font."
64
+ },
65
+ "tags": {
66
+ "items": {
67
+ "$ref": "#/components/schemas/Tag"
68
+ },
69
+ "type": "array",
70
+ "description": "The tags that apply to this family."
71
+ },
72
+ "files": {
73
+ "additionalProperties": {
74
+ "type": "string"
75
+ },
76
+ "type": "object",
77
+ "description": "The font files (with all supported scripts) for each one of the available variants, as a key : value map."
78
+ },
79
+ "variants": {
80
+ "items": {
81
+ "type": "string"
82
+ },
83
+ "type": "array",
84
+ "description": "The available variants for the font."
85
+ },
86
+ "lastModified": {
87
+ "description": "The date (format \"yyyy-MM-dd\") the font was modified for the last time.",
88
+ "type": "string"
89
+ },
90
+ "subsets": {
91
+ "description": "The scripts supported by the font.",
92
+ "type": "array",
93
+ "items": {
94
+ "type": "string"
95
+ }
96
+ },
97
+ "axes": {
98
+ "description": "Axis for variable fonts.",
99
+ "type": "array",
100
+ "items": {
101
+ "$ref": "#/components/schemas/Axis"
102
+ }
103
+ },
104
+ "kind": {
105
+ "type": "string",
106
+ "description": "This kind represents a webfont object in the webfonts service."
107
+ },
108
+ "menu": {
109
+ "description": "Font URL for menu subset, a subset of the font that is enough to display the font name",
110
+ "type": "string"
111
+ },
112
+ "version": {
113
+ "description": "The font version.",
114
+ "type": "string"
115
+ },
116
+ "family": {
117
+ "type": "string",
118
+ "description": "The name of the font."
119
+ }
120
+ }
121
+ },
122
+ "Axis": {
123
+ "type": "object",
124
+ "x-discovery-id": "Axis",
125
+ "properties": {
126
+ "start": {
127
+ "format": "float",
128
+ "type": "number",
129
+ "description": "minimum value"
130
+ },
131
+ "tag": {
132
+ "description": "tag name.",
133
+ "type": "string"
134
+ },
135
+ "end": {
136
+ "format": "float",
137
+ "description": "maximum value",
138
+ "type": "number"
139
+ }
140
+ },
141
+ "description": "Metadata for a variable font axis."
142
+ }
143
+ }
144
+ },
145
+ "x-source": {
146
+ "kind": "discovery",
147
+ "fetched": "2026-10-12",
148
+ "converter": "scripts/spec-discovery-to-openapi.ts"
149
+ },
150
+ "x-discovery-revision": "20260903",
151
+ "x-discovery-title": "Web Fonts Developer API",
152
+ "x-discovery-basePath": "",
153
+ "x-discovery-parameters": {
154
+ "quotaUser": {
155
+ "location": "query",
156
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
157
+ "type": "string"
158
+ },
159
+ "uploadType": {
160
+ "location": "query",
161
+ "type": "string",
162
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
163
+ },
164
+ "access_token": {
165
+ "description": "OAuth access token.",
166
+ "location": "query",
167
+ "type": "string"
168
+ },
169
+ "callback": {
170
+ "description": "JSONP",
171
+ "location": "query",
172
+ "type": "string"
173
+ },
174
+ "key": {
175
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
176
+ "location": "query",
177
+ "type": "string"
178
+ },
179
+ "prettyPrint": {
180
+ "description": "Returns response with indentations and line breaks.",
181
+ "location": "query",
182
+ "type": "boolean",
183
+ "default": "true"
184
+ },
185
+ "alt": {
186
+ "description": "Data format for response.",
187
+ "type": "string",
188
+ "default": "json",
189
+ "enum": [
190
+ "json",
191
+ "media",
192
+ "proto"
193
+ ],
194
+ "location": "query",
195
+ "enumDescriptions": [
196
+ "Responses with Content-Type of application/json",
197
+ "Media download with context-dependent Content-Type",
198
+ "Responses with Content-Type of application/x-protobuf"
199
+ ]
200
+ },
201
+ "upload_protocol": {
202
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
203
+ "type": "string",
204
+ "location": "query"
205
+ },
206
+ "oauth_token": {
207
+ "type": "string",
208
+ "description": "OAuth 2.0 token for the current user.",
209
+ "location": "query"
210
+ },
211
+ "fields": {
212
+ "description": "Selector specifying which fields to include in a partial response.",
213
+ "type": "string",
214
+ "location": "query"
215
+ },
216
+ "$.xgafv": {
217
+ "type": "string",
218
+ "location": "query",
219
+ "enum": [
220
+ "1",
221
+ "2"
222
+ ],
223
+ "enumDescriptions": [
224
+ "v1 error format",
225
+ "v2 error format"
226
+ ],
227
+ "description": "V1 error format."
228
+ }
229
+ },
230
+ "x-discovery-rootUrl": "https://webfonts.googleapis.com/",
231
+ "x-discovery-batchPath": "batch",
232
+ "x-discovery-discoveryVersion": "v1",
233
+ "x-discovery-protocol": "rest",
234
+ "x-discovery-mtlsRootUrl": "https://webfonts.mtls.googleapis.com/",
235
+ "x-discovery-servicePath": "",
236
+ "x-discovery-kind": "discovery#restDescription",
237
+ "x-discovery-ownerName": "Google",
238
+ "x-discovery-canonicalName": "Webfonts",
239
+ "x-discovery-id": "webfonts:v1",
240
+ "x-discovery-documentationLink": "https://developers.google.com/fonts/docs/developer_api",
241
+ "x-discovery-baseUrl": "https://webfonts.googleapis.com/",
242
+ "x-discovery-name": "webfonts",
243
+ "x-discovery-ownerDomain": "google.com",
244
+ "x-discovery-description": "The Google Web Fonts Developer API lets you retrieve information about web fonts served by Google.",
245
+ "x-discovery-icons": {
246
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
247
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
248
+ },
249
+ "x-discovery-version": "v1",
250
+ "paths": {
251
+ "/v1/webfonts": {
252
+ "get": {
253
+ "operationId": "webfonts.webfonts.list",
254
+ "description": "Retrieves the list of fonts currently served by the Google Fonts Developer API.",
255
+ "tags": [
256
+ "webfonts"
257
+ ],
258
+ "parameters": [
259
+ {
260
+ "name": "quotaUser",
261
+ "in": "query",
262
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
263
+ "schema": {
264
+ "type": "string"
265
+ },
266
+ "x-discovery-parameter": {
267
+ "location": "query",
268
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
269
+ "type": "string"
270
+ }
271
+ },
272
+ {
273
+ "name": "uploadType",
274
+ "in": "query",
275
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
276
+ "schema": {
277
+ "type": "string"
278
+ },
279
+ "x-discovery-parameter": {
280
+ "location": "query",
281
+ "type": "string",
282
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
283
+ }
284
+ },
285
+ {
286
+ "name": "access_token",
287
+ "in": "query",
288
+ "description": "OAuth access token.",
289
+ "schema": {
290
+ "type": "string"
291
+ },
292
+ "x-discovery-parameter": {
293
+ "description": "OAuth access token.",
294
+ "location": "query",
295
+ "type": "string"
296
+ }
297
+ },
298
+ {
299
+ "name": "callback",
300
+ "in": "query",
301
+ "description": "JSONP",
302
+ "schema": {
303
+ "type": "string"
304
+ },
305
+ "x-discovery-parameter": {
306
+ "description": "JSONP",
307
+ "location": "query",
308
+ "type": "string"
309
+ }
310
+ },
311
+ {
312
+ "name": "key",
313
+ "in": "query",
314
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
315
+ "schema": {
316
+ "type": "string"
317
+ },
318
+ "x-discovery-parameter": {
319
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
320
+ "location": "query",
321
+ "type": "string"
322
+ }
323
+ },
324
+ {
325
+ "name": "prettyPrint",
326
+ "in": "query",
327
+ "description": "Returns response with indentations and line breaks.",
328
+ "schema": {
329
+ "type": "boolean",
330
+ "default": "true"
331
+ },
332
+ "x-discovery-parameter": {
333
+ "description": "Returns response with indentations and line breaks.",
334
+ "location": "query",
335
+ "type": "boolean",
336
+ "default": "true"
337
+ }
338
+ },
339
+ {
340
+ "name": "alt",
341
+ "in": "query",
342
+ "description": "Data format for response.",
343
+ "schema": {
344
+ "type": "string",
345
+ "default": "json",
346
+ "enum": [
347
+ "json",
348
+ "media",
349
+ "proto"
350
+ ],
351
+ "x-discovery-enumDescriptions": [
352
+ "Responses with Content-Type of application/json",
353
+ "Media download with context-dependent Content-Type",
354
+ "Responses with Content-Type of application/x-protobuf"
355
+ ]
356
+ },
357
+ "x-discovery-parameter": {
358
+ "description": "Data format for response.",
359
+ "type": "string",
360
+ "default": "json",
361
+ "enum": [
362
+ "json",
363
+ "media",
364
+ "proto"
365
+ ],
366
+ "location": "query",
367
+ "enumDescriptions": [
368
+ "Responses with Content-Type of application/json",
369
+ "Media download with context-dependent Content-Type",
370
+ "Responses with Content-Type of application/x-protobuf"
371
+ ]
372
+ }
373
+ },
374
+ {
375
+ "name": "upload_protocol",
376
+ "in": "query",
377
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
378
+ "schema": {
379
+ "type": "string"
380
+ },
381
+ "x-discovery-parameter": {
382
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
383
+ "type": "string",
384
+ "location": "query"
385
+ }
386
+ },
387
+ {
388
+ "name": "oauth_token",
389
+ "in": "query",
390
+ "description": "OAuth 2.0 token for the current user.",
391
+ "schema": {
392
+ "type": "string"
393
+ },
394
+ "x-discovery-parameter": {
395
+ "type": "string",
396
+ "description": "OAuth 2.0 token for the current user.",
397
+ "location": "query"
398
+ }
399
+ },
400
+ {
401
+ "name": "fields",
402
+ "in": "query",
403
+ "description": "Selector specifying which fields to include in a partial response.",
404
+ "schema": {
405
+ "type": "string"
406
+ },
407
+ "x-discovery-parameter": {
408
+ "description": "Selector specifying which fields to include in a partial response.",
409
+ "type": "string",
410
+ "location": "query"
411
+ }
412
+ },
413
+ {
414
+ "name": "$.xgafv",
415
+ "in": "query",
416
+ "description": "V1 error format.",
417
+ "schema": {
418
+ "type": "string",
419
+ "enum": [
420
+ "1",
421
+ "2"
422
+ ],
423
+ "x-discovery-enumDescriptions": [
424
+ "v1 error format",
425
+ "v2 error format"
426
+ ]
427
+ },
428
+ "x-discovery-parameter": {
429
+ "type": "string",
430
+ "location": "query",
431
+ "enum": [
432
+ "1",
433
+ "2"
434
+ ],
435
+ "enumDescriptions": [
436
+ "v1 error format",
437
+ "v2 error format"
438
+ ],
439
+ "description": "V1 error format."
440
+ }
441
+ },
442
+ {
443
+ "name": "capability",
444
+ "in": "query",
445
+ "description": "Controls the font urls in `Webfont.files`, by default, static ttf fonts are sent.",
446
+ "schema": {
447
+ "type": "array",
448
+ "items": {
449
+ "enum": [
450
+ "CAPABILITY_UNSPECIFIED",
451
+ "WOFF2",
452
+ "VF",
453
+ "FAMILY_TAGS"
454
+ ],
455
+ "type": "string",
456
+ "x-discovery-enumDescriptions": [
457
+ "Default means static ttf fonts.",
458
+ "Use WOFF2(Compressed)instead of ttf.",
459
+ "Prefer variable font files instead of static fonts instantiated at standard weights.",
460
+ "Include tags that apply to the entire family in the response."
461
+ ]
462
+ }
463
+ },
464
+ "x-discovery-parameter": {
465
+ "location": "query",
466
+ "repeated": true,
467
+ "enum": [
468
+ "CAPABILITY_UNSPECIFIED",
469
+ "WOFF2",
470
+ "VF",
471
+ "FAMILY_TAGS"
472
+ ],
473
+ "description": "Controls the font urls in `Webfont.files`, by default, static ttf fonts are sent.",
474
+ "type": "string",
475
+ "enumDescriptions": [
476
+ "Default means static ttf fonts.",
477
+ "Use WOFF2(Compressed)instead of ttf.",
478
+ "Prefer variable font files instead of static fonts instantiated at standard weights.",
479
+ "Include tags that apply to the entire family in the response."
480
+ ]
481
+ }
482
+ },
483
+ {
484
+ "name": "category",
485
+ "in": "query",
486
+ "description": "Filters by Webfont.category, if category is found in Webfont.categories. If not set, returns all families.",
487
+ "schema": {
488
+ "type": "string"
489
+ },
490
+ "x-discovery-parameter": {
491
+ "type": "string",
492
+ "description": "Filters by Webfont.category, if category is found in Webfont.categories. If not set, returns all families.",
493
+ "location": "query"
494
+ }
495
+ },
496
+ {
497
+ "name": "subset",
498
+ "in": "query",
499
+ "description": "Filters by Webfont.subset, if subset is found in Webfont.subsets. If not set, returns all families.",
500
+ "schema": {
501
+ "type": "string"
502
+ },
503
+ "x-discovery-parameter": {
504
+ "description": "Filters by Webfont.subset, if subset is found in Webfont.subsets. If not set, returns all families.",
505
+ "type": "string",
506
+ "location": "query"
507
+ }
508
+ },
509
+ {
510
+ "name": "sort",
511
+ "in": "query",
512
+ "description": "Enables sorting of the list.",
513
+ "schema": {
514
+ "type": "string",
515
+ "x-discovery-enumDescriptions": [
516
+ "No sorting specified, use the default sorting method.",
517
+ "Sort alphabetically",
518
+ "Sort by date added",
519
+ "Sort by popularity",
520
+ "Sort by number of styles",
521
+ "Sort by trending"
522
+ ],
523
+ "enum": [
524
+ "SORT_UNDEFINED",
525
+ "ALPHA",
526
+ "DATE",
527
+ "POPULARITY",
528
+ "STYLE",
529
+ "TRENDING"
530
+ ]
531
+ },
532
+ "x-discovery-parameter": {
533
+ "type": "string",
534
+ "description": "Enables sorting of the list.",
535
+ "location": "query",
536
+ "enumDescriptions": [
537
+ "No sorting specified, use the default sorting method.",
538
+ "Sort alphabetically",
539
+ "Sort by date added",
540
+ "Sort by popularity",
541
+ "Sort by number of styles",
542
+ "Sort by trending"
543
+ ],
544
+ "enum": [
545
+ "SORT_UNDEFINED",
546
+ "ALPHA",
547
+ "DATE",
548
+ "POPULARITY",
549
+ "STYLE",
550
+ "TRENDING"
551
+ ]
552
+ }
553
+ },
554
+ {
555
+ "name": "family",
556
+ "in": "query",
557
+ "description": "Filters by Webfont.family, using literal match. If not set, returns all families",
558
+ "schema": {
559
+ "type": "array",
560
+ "items": {
561
+ "type": "string"
562
+ }
563
+ },
564
+ "x-discovery-parameter": {
565
+ "description": "Filters by Webfont.family, using literal match. If not set, returns all families",
566
+ "type": "string",
567
+ "location": "query",
568
+ "repeated": true
569
+ }
570
+ }
571
+ ],
572
+ "responses": {
573
+ "200": {
574
+ "description": "Successful response",
575
+ "content": {
576
+ "application/json": {
577
+ "schema": {
578
+ "$ref": "#/components/schemas/WebfontList"
579
+ }
580
+ }
581
+ }
582
+ }
583
+ },
584
+ "x-discovery-parameterOrder": [],
585
+ "x-discovery-path": "v1/webfonts",
586
+ "x-discovery-parameters": {
587
+ "capability": {
588
+ "location": "query",
589
+ "repeated": true,
590
+ "enum": [
591
+ "CAPABILITY_UNSPECIFIED",
592
+ "WOFF2",
593
+ "VF",
594
+ "FAMILY_TAGS"
595
+ ],
596
+ "description": "Controls the font urls in `Webfont.files`, by default, static ttf fonts are sent.",
597
+ "type": "string",
598
+ "enumDescriptions": [
599
+ "Default means static ttf fonts.",
600
+ "Use WOFF2(Compressed)instead of ttf.",
601
+ "Prefer variable font files instead of static fonts instantiated at standard weights.",
602
+ "Include tags that apply to the entire family in the response."
603
+ ]
604
+ },
605
+ "category": {
606
+ "type": "string",
607
+ "description": "Filters by Webfont.category, if category is found in Webfont.categories. If not set, returns all families.",
608
+ "location": "query"
609
+ },
610
+ "subset": {
611
+ "description": "Filters by Webfont.subset, if subset is found in Webfont.subsets. If not set, returns all families.",
612
+ "type": "string",
613
+ "location": "query"
614
+ },
615
+ "sort": {
616
+ "type": "string",
617
+ "description": "Enables sorting of the list.",
618
+ "location": "query",
619
+ "enumDescriptions": [
620
+ "No sorting specified, use the default sorting method.",
621
+ "Sort alphabetically",
622
+ "Sort by date added",
623
+ "Sort by popularity",
624
+ "Sort by number of styles",
625
+ "Sort by trending"
626
+ ],
627
+ "enum": [
628
+ "SORT_UNDEFINED",
629
+ "ALPHA",
630
+ "DATE",
631
+ "POPULARITY",
632
+ "STYLE",
633
+ "TRENDING"
634
+ ]
635
+ },
636
+ "family": {
637
+ "description": "Filters by Webfont.family, using literal match. If not set, returns all families",
638
+ "type": "string",
639
+ "location": "query",
640
+ "repeated": true
641
+ }
642
+ },
643
+ "x-discovery-flatPath": "v1/webfonts"
644
+ }
645
+ }
646
+ }
647
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "https://developers.google.com/fonts/docs/developer_api": {
3
+ "status": 200,
4
+ "checked": "2026-10-12"
5
+ }
6
+ }
@@ -0,0 +1,16 @@
1
+ // GENERATED by scripts/create-pack.ts (--init, --index): a fixed file. The kernel serves the discovery door, the clock,
2
+ // the World's doors, the vendor's screens and the API from the pack's parts (architecture, "The pack contract").
3
+ import { createPackFetch, type DerivedFetch, type DerivedSurface, type PackFetchOptions } from '@volter/world-core';
4
+ import surface from './generated/surface.gen.json' with { type: 'json' };
5
+ import { manifest } from './manifest.ts';
6
+ import * as doors from './semantics/doors.ts';
7
+ import { apiSemantics } from './semantics/index.ts';
8
+
9
+ export function createApiLaneFetch(options: PackFetchOptions = {}): DerivedFetch {
10
+ return createPackFetch({
11
+ manifest,
12
+ surface: surface as DerivedSurface,
13
+ handlers: apiSemantics,
14
+ doors,
15
+ }, options);
16
+ }
@@ -0,0 +1 @@
1
+ {"generatedBy":"scripts/derive-pack.ts","spec":"openapi.json","format":"openapi","version":"v1 rev 20260903","resources":[{"name":"Webfont","schema":"Webfont","fields":[{"name":"axes","type":"array","nullable":false},{"name":"category","type":"string","nullable":false},{"name":"colorCapabilities","type":"array","nullable":false},{"name":"family","type":"string","nullable":false},{"name":"files","type":"object","nullable":false},{"name":"kind","type":"string","nullable":false},{"name":"lastModified","type":"string","nullable":false},{"name":"menu","type":"string","nullable":false},{"name":"subsets","type":"array","nullable":false},{"name":"tags","type":"array","nullable":false},{"name":"variants","type":"array","nullable":false},{"name":"version","type":"string","nullable":false}],"stateCandidates":[],"expandable":[]}],"operations":[{"id":"webfonts.webfonts.list","method":"get","path":"/v1/webfonts","pathParams":[],"query":[{"name":"$.xgafv","type":"string","required":false},{"name":"access_token","type":"string","required":false},{"name":"alt","type":"string","required":false},{"name":"callback","type":"string","required":false},{"name":"capability","type":"array","required":false},{"name":"category","type":"string","required":false},{"name":"family","type":"array","required":false},{"name":"fields","type":"string","required":false},{"name":"key","type":"string","required":false},{"name":"oauth_token","type":"string","required":false},{"name":"prettyPrint","type":"boolean","required":false},{"name":"quotaUser","type":"string","required":false},{"name":"sort","type":"string","required":false},{"name":"subset","type":"string","required":false},{"name":"upload_protocol","type":"string","required":false},{"name":"uploadType","type":"string","required":false}],"body":[],"bodyEncoding":"none","successStatus":200,"answers":{"resource":"Webfont","list":true,"key":"items"},"class":"list","resource":"Webfont"}]}
@@ -0,0 +1 @@
1
+ {"generatedBy":"scripts/derive-pack.ts","resources":{"webfont":{"actions":[],"states":{},"embeds":{}},"_project":{"actions":[],"states":{},"embeds":{}},"_api_key":{"actions":[],"states":{},"embeds":{}}}}