@taprootio/docs-artifact 1.0.1 → 1.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.
Files changed (42) hide show
  1. package/README.md +196 -30
  2. package/bin/taproot-docs-conformance.js +34 -13
  3. package/bin/taproot-docs-validate.js +44 -9
  4. package/fixtures/README.md +19 -0
  5. package/fixtures/prebuilt/conformance.json +444 -0
  6. package/fixtures/prebuilt/golden/espalier.tar.gz +0 -0
  7. package/fixtures/prebuilt/invalid/duplicate-json-key.json +4 -0
  8. package/fixtures/prebuilt/valid/espalier/404.html +2 -0
  9. package/fixtures/prebuilt/valid/espalier/api/show-toast/index.html +5 -0
  10. package/fixtures/prebuilt/valid/espalier/assets/icons.svg +1 -0
  11. package/fixtures/prebuilt/valid/espalier/assets/pulse.svg +1 -0
  12. package/fixtures/prebuilt/valid/espalier/assets/search-worker.js +1 -0
  13. package/fixtures/prebuilt/valid/espalier/assets/search.wasm +0 -0
  14. package/fixtures/prebuilt/valid/espalier/assets/site.css +3 -0
  15. package/fixtures/prebuilt/valid/espalier/assets/site.js +2 -0
  16. package/fixtures/prebuilt/valid/espalier/dist/-6iE9DOe.css +1 -0
  17. package/fixtures/prebuilt/valid/espalier/dist/_AN3XUT_.css +1 -0
  18. package/fixtures/prebuilt/valid/espalier/guides/index.html +2 -0
  19. package/fixtures/prebuilt/valid/espalier/index.html +2 -0
  20. package/fixtures/prebuilt/valid/espalier/pagefind/index/abc.pf_index +0 -0
  21. package/fixtures/prebuilt/valid/espalier/pagefind/pagefind.js +4 -0
  22. package/fixtures/prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json +135 -0
  23. package/index.d.ts +9 -0
  24. package/node.d.ts +1 -0
  25. package/package.json +28 -5
  26. package/prebuilt-archive.d.ts +27 -0
  27. package/prebuilt-conformance.d.ts +27 -0
  28. package/prebuilt-node.d.ts +7 -0
  29. package/prebuilt.d.ts +128 -0
  30. package/schema/taproot-docs-prebuilt-manifest.schema.json +156 -0
  31. package/src/constants.js +4 -0
  32. package/src/index.js +13 -0
  33. package/src/json.js +50 -26
  34. package/src/node.js +2 -0
  35. package/src/prebuilt-archive.js +246 -0
  36. package/src/prebuilt-artifact-validator.js +236 -0
  37. package/src/prebuilt-conformance.js +151 -0
  38. package/src/prebuilt-constants.js +55 -0
  39. package/src/prebuilt-manifest-validator.js +654 -0
  40. package/src/prebuilt-node.js +518 -0
  41. package/src/prebuilt-path.js +129 -0
  42. package/src/prebuilt.js +20 -0
@@ -0,0 +1,444 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "cases": [
4
+ {
5
+ "name": "accept-representative-espalier-prebuilt-output",
6
+ "valid": true,
7
+ "expectedCodes": [],
8
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
9
+ "includeBaseFiles": true,
10
+ "archive": {
11
+ "path": "prebuilt/golden/espalier.tar.gz",
12
+ "byteLength": 19991,
13
+ "sha256": "sha256:57d9a7d7c79effafeb5c5951855ff75de04573a7ec4d46f26f8b1a40d044a1e8"
14
+ }
15
+ },
16
+ {
17
+ "name": "accept-permanent-301-redirect",
18
+ "valid": true,
19
+ "expectedCodes": [],
20
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
21
+ "includeBaseFiles": true,
22
+ "mutations": [
23
+ { "operation": "replace", "path": ["redirects", 0, "status"], "value": 301 }
24
+ ]
25
+ },
26
+ {
27
+ "name": "reject-duplicate-json-key",
28
+ "valid": false,
29
+ "expectedCodes": ["json.duplicate_key"],
30
+ "manifest": "prebuilt/invalid/duplicate-json-key.json"
31
+ },
32
+ {
33
+ "name": "reject-path-traversal",
34
+ "valid": false,
35
+ "expectedCodes": ["path.unsafe"],
36
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
37
+ "mutations": [
38
+ { "operation": "replace", "path": ["files", 2, "path"], "value": "assets/../icons.svg" }
39
+ ]
40
+ },
41
+ {
42
+ "name": "reject-non-ascii-non-normalized-path",
43
+ "valid": false,
44
+ "expectedCodes": ["path.not_ascii", "string.not_normalized"],
45
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
46
+ "mutations": [
47
+ { "operation": "replace", "path": ["files", 2, "path"], "value": "assets/é.svg" }
48
+ ]
49
+ },
50
+ {
51
+ "name": "reject-ascii-case-fold-file-collision",
52
+ "valid": false,
53
+ "expectedCodes": ["array.not_sorted", "duplicate.file_path_casefold"],
54
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
55
+ "mutations": [
56
+ {
57
+ "operation": "append",
58
+ "path": ["files"],
59
+ "value": {
60
+ "bytes": 152,
61
+ "mediaType": "text/javascript; charset=utf-8",
62
+ "path": "assets/SITE.js",
63
+ "sha256": "sha256:59b4582bd63e4bc20d0650ee73452b34e8f8e2fc1cabe32c59c5507e7890f70d"
64
+ }
65
+ }
66
+ ]
67
+ },
68
+ {
69
+ "name": "reject-ascii-case-fold-parent-directory-alias",
70
+ "valid": false,
71
+ "expectedCodes": ["duplicate.directory_path_casefold"],
72
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
73
+ "mutations": [
74
+ {
75
+ "operation": "append",
76
+ "path": ["files"],
77
+ "value": {
78
+ "bytes": 0,
79
+ "mediaType": "text/css; charset=utf-8",
80
+ "path": "zAlias/a.css",
81
+ "sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
82
+ }
83
+ },
84
+ {
85
+ "operation": "append",
86
+ "path": ["files"],
87
+ "value": {
88
+ "bytes": 0,
89
+ "mediaType": "text/css; charset=utf-8",
90
+ "path": "zalias/b.css",
91
+ "sha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
92
+ }
93
+ }
94
+ ]
95
+ },
96
+ {
97
+ "name": "reject-undeclared-file",
98
+ "valid": false,
99
+ "expectedCodes": ["file.unexpected"],
100
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
101
+ "includeBaseFiles": true,
102
+ "files": [
103
+ { "path": "extra.txt", "utf8": "undeclared\n" }
104
+ ]
105
+ },
106
+ {
107
+ "name": "reject-missing-declared-file",
108
+ "valid": false,
109
+ "expectedCodes": ["file.missing"],
110
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
111
+ "includeBaseFiles": true,
112
+ "omitBaseFiles": ["assets/site.js"]
113
+ },
114
+ {
115
+ "name": "reject-hash-drift",
116
+ "valid": false,
117
+ "expectedCodes": ["file.hash_drift"],
118
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
119
+ "includeBaseFiles": true,
120
+ "mutations": [
121
+ {
122
+ "operation": "replace",
123
+ "path": ["files", 11, "sha256"],
124
+ "value": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
125
+ }
126
+ ]
127
+ },
128
+ {
129
+ "name": "reject-size-drift",
130
+ "valid": false,
131
+ "expectedCodes": ["file.size_drift"],
132
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
133
+ "includeBaseFiles": true,
134
+ "mutations": [
135
+ { "operation": "replace", "path": ["files", 11, "bytes"], "value": 380 }
136
+ ]
137
+ },
138
+ {
139
+ "name": "reject-per-file-byte-bound",
140
+ "valid": false,
141
+ "expectedCodes": ["number.range"],
142
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
143
+ "mutations": [
144
+ { "operation": "replace", "path": ["files", 11, "bytes"], "value": 67108865 }
145
+ ]
146
+ },
147
+ {
148
+ "name": "reject-total-declared-byte-bound",
149
+ "valid": false,
150
+ "expectedCodes": ["limit.artifact_bytes"],
151
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
152
+ "mutations": [
153
+ { "operation": "replace", "path": ["files", 0, "bytes"], "value": 67108864 },
154
+ { "operation": "replace", "path": ["files", 1, "bytes"], "value": 67108864 },
155
+ { "operation": "replace", "path": ["files", 2, "bytes"], "value": 67108864 },
156
+ { "operation": "replace", "path": ["files", 3, "bytes"], "value": 67108864 },
157
+ { "operation": "replace", "path": ["files", 4, "bytes"], "value": 67108864 },
158
+ { "operation": "replace", "path": ["files", 5, "bytes"], "value": 67108864 },
159
+ { "operation": "replace", "path": ["files", 6, "bytes"], "value": 67108864 },
160
+ { "operation": "replace", "path": ["files", 7, "bytes"], "value": 67108864 },
161
+ { "operation": "replace", "path": ["files", 8, "bytes"], "value": 67108864 }
162
+ ]
163
+ },
164
+ {
165
+ "name": "reject-path-byte-bound",
166
+ "valid": false,
167
+ "expectedCodes": ["path.too_long", "string.length"],
168
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
169
+ "mutations": [
170
+ { "operation": "replace", "path": ["files", 13, "path"], "repeat": "z", "count": 253, "suffix": ".js" }
171
+ ]
172
+ },
173
+ {
174
+ "name": "reject-manifest-byte-bound",
175
+ "valid": false,
176
+ "expectedCodes": ["manifest.too_large"],
177
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
178
+ "manifestPaddingBytes": 8388609
179
+ },
180
+ {
181
+ "name": "reject-ambiguous-case-folded-redirect",
182
+ "valid": false,
183
+ "expectedCodes": ["array.not_sorted", "duplicate.redirect"],
184
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
185
+ "mutations": [
186
+ {
187
+ "operation": "append",
188
+ "path": ["redirects"],
189
+ "value": { "from": "/GETTING-started/", "status": 301, "toResourceKey": "home" }
190
+ }
191
+ ]
192
+ },
193
+ {
194
+ "name": "reject-redirect-file-route-collision",
195
+ "valid": false,
196
+ "expectedCodes": ["redirect.route_collision"],
197
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
198
+ "mutations": [
199
+ {
200
+ "operation": "append",
201
+ "path": ["redirects"],
202
+ "value": { "from": "/guides/", "status": 308, "toResourceKey": "home" }
203
+ }
204
+ ]
205
+ },
206
+ {
207
+ "name": "reject-worker-internal-control-file-route",
208
+ "valid": false,
209
+ "expectedCodes": ["route.reserved"],
210
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
211
+ "mutations": [
212
+ { "operation": "replace", "path": ["files", 1, "path"], "value": "__taproot/internal/published-site-routing" },
213
+ { "operation": "replace", "path": ["files", 1, "mediaType"], "value": "application/octet-stream" },
214
+ { "operation": "remove", "path": ["resources", 0] }
215
+ ]
216
+ },
217
+ {
218
+ "name": "reject-worker-internal-control-redirect-source",
219
+ "valid": false,
220
+ "expectedCodes": ["route.reserved"],
221
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
222
+ "mutations": [
223
+ {
224
+ "operation": "replace",
225
+ "path": ["redirects", 0, "from"],
226
+ "value": "/__taproot/internal/published-site-routing"
227
+ }
228
+ ]
229
+ },
230
+ {
231
+ "name": "reject-missing-resource-target",
232
+ "valid": false,
233
+ "expectedCodes": ["redirect.unknown_resource"],
234
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
235
+ "mutations": [
236
+ { "operation": "replace", "path": ["redirects", 0, "toResourceKey"], "value": "guide:missing" }
237
+ ]
238
+ },
239
+ {
240
+ "name": "reject-unsupported-redirect-status",
241
+ "valid": false,
242
+ "expectedCodes": ["redirect.status"],
243
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
244
+ "mutations": [
245
+ { "operation": "replace", "path": ["redirects", 0, "status"], "value": 302 }
246
+ ]
247
+ },
248
+ {
249
+ "name": "reject-canonical-404-as-stable-resource",
250
+ "valid": false,
251
+ "expectedCodes": ["resource.not_found"],
252
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
253
+ "mutations": [
254
+ { "operation": "replace", "path": ["resources", 0, "file"], "value": "404.html" }
255
+ ]
256
+ },
257
+ {
258
+ "name": "reject-resource-unknown-file",
259
+ "valid": false,
260
+ "expectedCodes": ["resource.unknown_file"],
261
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
262
+ "mutations": [
263
+ { "operation": "replace", "path": ["resources", 0, "file"], "value": "missing.html" }
264
+ ]
265
+ },
266
+ {
267
+ "name": "reject-resource-non-html-file",
268
+ "valid": false,
269
+ "expectedCodes": ["resource.not_html"],
270
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
271
+ "mutations": [
272
+ { "operation": "replace", "path": ["resources", 0, "file"], "value": "assets/site.js" }
273
+ ]
274
+ },
275
+ {
276
+ "name": "reject-canonical-404-media-type",
277
+ "valid": false,
278
+ "expectedCodes": ["file.media_type", "not_found.media_type"],
279
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
280
+ "mutations": [
281
+ { "operation": "replace", "path": ["files", 0, "mediaType"], "value": "text/plain; charset=utf-8" }
282
+ ]
283
+ },
284
+ {
285
+ "name": "reject-missing-required-prebuilt-capability",
286
+ "valid": false,
287
+ "expectedCodes": ["capability.missing"],
288
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
289
+ "mutations": [
290
+ { "operation": "replace", "path": ["capabilities", "required"], "value": [] }
291
+ ]
292
+ },
293
+ {
294
+ "name": "reject-unsupported-required-prebuilt-capability",
295
+ "valid": false,
296
+ "expectedCodes": ["capability.unsupported"],
297
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
298
+ "mutations": [
299
+ {
300
+ "operation": "replace",
301
+ "path": ["capabilities", "required"],
302
+ "value": ["taproot.docs.prebuilt.files.v1", "taproot.docs.unsupported.v1"]
303
+ }
304
+ ]
305
+ },
306
+ {
307
+ "name": "reject-noncanonical-source-repository-url",
308
+ "valid": false,
309
+ "expectedCodes": ["source.repository_url"],
310
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
311
+ "mutations": [
312
+ {
313
+ "operation": "replace",
314
+ "path": ["source", "repositoryUrl"],
315
+ "value": "https://example.com/taprootio/taproot-controls"
316
+ }
317
+ ]
318
+ },
319
+ {
320
+ "name": "reject-noncanonical-404-file",
321
+ "valid": false,
322
+ "expectedCodes": ["not_found.not_canonical"],
323
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
324
+ "mutations": [
325
+ { "operation": "replace", "path": ["notFoundFile"], "value": "missing.html" }
326
+ ]
327
+ },
328
+ {
329
+ "name": "reject-publisher-controlled-response-headers",
330
+ "valid": false,
331
+ "expectedCodes": ["property.unsupported"],
332
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
333
+ "mutations": [
334
+ { "operation": "replace", "path": ["headers"], "value": { "content-security-policy": "default-src *" } }
335
+ ]
336
+ },
337
+ {
338
+ "name": "reject-media-type-drift",
339
+ "valid": false,
340
+ "expectedCodes": ["file.media_type"],
341
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
342
+ "mutations": [
343
+ { "operation": "replace", "path": ["files", 6, "mediaType"], "value": "text/javascript; charset=utf-8" }
344
+ ]
345
+ },
346
+ {
347
+ "name": "reject-file-count-bound",
348
+ "valid": false,
349
+ "expectedCodes": ["array.length", "duplicate.file_path", "validation.too_many_errors"],
350
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
351
+ "mutations": [
352
+ { "operation": "repeat-array", "path": ["files"], "sourceIndex": 0, "count": 25001 },
353
+ { "operation": "replace", "path": ["resources"], "value": [] },
354
+ { "operation": "replace", "path": ["redirects"], "value": [] }
355
+ ]
356
+ },
357
+ {
358
+ "name": "reject-resource-count-bound",
359
+ "valid": false,
360
+ "expectedCodes": [
361
+ "array.length",
362
+ "duplicate.resource_file",
363
+ "duplicate.resource_key",
364
+ "validation.too_many_errors"
365
+ ],
366
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
367
+ "mutations": [
368
+ { "operation": "repeat-array", "path": ["resources"], "sourceIndex": 0, "count": 25001 },
369
+ { "operation": "replace", "path": ["redirects"], "value": [] }
370
+ ]
371
+ },
372
+ {
373
+ "name": "reject-redirect-count-bound",
374
+ "valid": false,
375
+ "expectedCodes": ["array.length", "duplicate.redirect", "validation.too_many_errors"],
376
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
377
+ "mutations": [
378
+ { "operation": "repeat-array", "path": ["redirects"], "sourceIndex": 0, "count": 10001 }
379
+ ]
380
+ },
381
+ {
382
+ "name": "reject-directory-depth-bound",
383
+ "valid": false,
384
+ "expectedCodes": ["limit.directory_depth"],
385
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
386
+ "mutations": [
387
+ { "operation": "replace", "path": ["files", 13, "path"], "repeat": "z/", "count": 65, "suffix": "pagefind.js" }
388
+ ]
389
+ },
390
+ {
391
+ "name": "reject-ustar-name-bound",
392
+ "valid": false,
393
+ "expectedCodes": ["path.ustar"],
394
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
395
+ "mutations": [
396
+ { "operation": "replace", "path": ["files", 13, "path"], "repeat": "z", "count": 101, "suffix": ".js" }
397
+ ]
398
+ },
399
+ {
400
+ "name": "reject-manifest-path-descendant",
401
+ "valid": false,
402
+ "expectedCodes": ["path.manifest"],
403
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
404
+ "mutations": [
405
+ {
406
+ "operation": "replace",
407
+ "path": ["files", 13, "path"],
408
+ "value": "taproot-docs-prebuilt-manifest.json/payload.js"
409
+ }
410
+ ]
411
+ },
412
+ {
413
+ "name": "reject-missing-canonical-404-inventory",
414
+ "valid": false,
415
+ "expectedCodes": ["not_found.missing"],
416
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
417
+ "mutations": [
418
+ { "operation": "remove", "path": ["files", 0] }
419
+ ]
420
+ },
421
+ {
422
+ "name": "reject-publisher-origins-routes-and-hooks",
423
+ "valid": false,
424
+ "expectedCodes": ["property.unsupported"],
425
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
426
+ "mutations": [
427
+ { "operation": "replace", "path": ["allowedOrigins"], "value": ["https://example.com"] },
428
+ { "operation": "replace", "path": ["validationHooks"], "value": ["npm run validate"] },
429
+ { "operation": "replace", "path": ["files", 1, "route"], "value": "/api/toast/" }
430
+ ]
431
+ },
432
+ {
433
+ "name": "reject-file-becoming-nonregular-before-open",
434
+ "valid": false,
435
+ "expectedCodes": ["file.not_regular"],
436
+ "baseManifest": "prebuilt/valid/espalier/taproot-docs-prebuilt-manifest.json",
437
+ "includeBaseFiles": true,
438
+ "nodeScenario": {
439
+ "type": "replace-file-with-directory-before-open",
440
+ "path": "assets/site.js"
441
+ }
442
+ }
443
+ ]
444
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "schemaVersion": 1
4
+ }
@@ -0,0 +1,2 @@
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><title>Not found</title><link rel="stylesheet" href="/assets/site.css"></head><body><h1>Not found</h1><a href="/">Return home</a></body></html>
@@ -0,0 +1,5 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head><meta charset="utf-8"><title>Show toast API</title></head>
4
+ <body><main><h1>Show toast</h1><p>This prebuilt page intentionally owns a route beneath <code>/api/</code>.</p></main></body>
5
+ </html>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg"><symbol id="book" viewBox="0 0 16 16"><path d="M2 2h5v12H2zM9 2h5v12H9z"/></symbol></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><circle cx="10" cy="10" r="4"><animate attributeName="r" values="4;8;4" dur="2s" repeatCount="indefinite"/></circle></svg>
@@ -0,0 +1 @@
1
+ self.onmessage = ({ data }) => self.postMessage({ query: data.query, matches: [] });
@@ -0,0 +1,3 @@
1
+ :root { color-scheme: light dark; font-family: system-ui, sans-serif; }
2
+ body { max-width: 72rem; margin: auto; padding: 2rem; }
3
+ nav[aria-label="Documentation"] { display: flex; gap: 1rem; }
@@ -0,0 +1,2 @@
1
+ const example = document.querySelector("[data-example]");
2
+ if (example) example.addEventListener("click", () => example.toggleAttribute("data-active"));
@@ -0,0 +1 @@
1
+ .api-example{display:grid;gap:1rem}
@@ -0,0 +1 @@
1
+ .search-result{font-weight:600}
@@ -0,0 +1,2 @@
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><title>Getting started</title><link rel="stylesheet" href="/assets/site.css"><script type="module" src="/assets/site.js"></script></head><body><nav aria-label="Documentation"><a href="/">Home</a></nav><main><h1>Getting started</h1><button data-example>Interactive example</button><svg><use href="/assets/icons.svg#book"></use></svg></main></body></html>
@@ -0,0 +1,2 @@
1
+ <!doctype html>
2
+ <html lang="en"><head><meta charset="utf-8"><title>Espalier controls</title><link rel="stylesheet" href="/assets/site.css"><script type="module" src="/pagefind/pagefind.js"></script></head><body><nav aria-label="Documentation"><a href="/guides/">Guide</a></nav><main><h1>Espalier controls</h1><img src="/assets/pulse.svg" alt="Animated pulse"></main></body></html>
@@ -0,0 +1,4 @@
1
+ export async function search(term) {
2
+ const response = await fetch("/pagefind/index/abc.pf_index");
3
+ return { term, bytes: (await response.arrayBuffer()).byteLength };
4
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "build": {
3
+ "configurationSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
4
+ "producer": "@taprootio/espalier-docs",
5
+ "producerVersion": "1.0.0",
6
+ "sourceDateEpoch": 1786838400
7
+ },
8
+ "capabilities": {
9
+ "optional": [],
10
+ "required": [
11
+ "taproot.docs.prebuilt.files.v1"
12
+ ]
13
+ },
14
+ "files": [
15
+ {
16
+ "bytes": 204,
17
+ "mediaType": "text/html; charset=utf-8",
18
+ "path": "404.html",
19
+ "sha256": "sha256:3227e1701e382cb02959c0d79eab3b77cb6b92231934c5fab84deb85ad20dcbf"
20
+ },
21
+ {
22
+ "bytes": 236,
23
+ "mediaType": "text/html; charset=utf-8",
24
+ "path": "api/show-toast/index.html",
25
+ "sha256": "sha256:e656772e20f7b7db2cfc572bbbce19caa7a7259acd78ef708f963ef8bd1acfcb"
26
+ },
27
+ {
28
+ "bytes": 130,
29
+ "mediaType": "image/svg+xml",
30
+ "path": "assets/icons.svg",
31
+ "sha256": "sha256:c40a36beae62f96b67b7e5f0d6ed47be135ea11e92ca51fe8187f21d57e9d561"
32
+ },
33
+ {
34
+ "bytes": 183,
35
+ "mediaType": "image/svg+xml",
36
+ "path": "assets/pulse.svg",
37
+ "sha256": "sha256:054cd0e52eaa6f072816a8d765484f9de1259bd84469bed1839621999493b43b"
38
+ },
39
+ {
40
+ "bytes": 85,
41
+ "mediaType": "text/javascript; charset=utf-8",
42
+ "path": "assets/search-worker.js",
43
+ "sha256": "sha256:837367dd7473cc2e132ee8edc36137a47f93f18ea0d4d3faca4fbeaa021872b4"
44
+ },
45
+ {
46
+ "bytes": 12,
47
+ "mediaType": "application/wasm",
48
+ "path": "assets/search.wasm",
49
+ "sha256": "sha256:17007025a9873b80bb8591aae680a7b2fe55199b83b74fe5bf2ec91f96d59bad"
50
+ },
51
+ {
52
+ "bytes": 190,
53
+ "mediaType": "text/css; charset=utf-8",
54
+ "path": "assets/site.css",
55
+ "sha256": "sha256:de7b5f1d63dcbed7ea3e8b42e3a489007b6e1e872f87085a81dbcd6cab003895"
56
+ },
57
+ {
58
+ "bytes": 152,
59
+ "mediaType": "text/javascript; charset=utf-8",
60
+ "path": "assets/site.js",
61
+ "sha256": "sha256:59b4582bd63e4bc20d0650ee73452b34e8f8e2fc1cabe32c59c5507e7890f70d"
62
+ },
63
+ {
64
+ "bytes": 36,
65
+ "mediaType": "text/css; charset=utf-8",
66
+ "path": "dist/-6iE9DOe.css",
67
+ "sha256": "sha256:2c7174e36288ef16e440291a09440f61dbd8356844180dc360054dae1ad8868e"
68
+ },
69
+ {
70
+ "bytes": 32,
71
+ "mediaType": "text/css; charset=utf-8",
72
+ "path": "dist/_AN3XUT_.css",
73
+ "sha256": "sha256:e48ad66f2485b66a446222c7270ba05f04e7cd16a2d55fab3bd3101c3ba9e5d8"
74
+ },
75
+ {
76
+ "bytes": 414,
77
+ "mediaType": "text/html; charset=utf-8",
78
+ "path": "guides/index.html",
79
+ "sha256": "sha256:e5dc7a53cf319152b9e7a92ca455c8086f18fd48ea834a910d2cba676faa7ea6"
80
+ },
81
+ {
82
+ "bytes": 381,
83
+ "mediaType": "text/html; charset=utf-8",
84
+ "path": "index.html",
85
+ "sha256": "sha256:e01e7ce55d4da1f87ee88fa90c58e0d5036734a42a3572e2cbad21f044f27456"
86
+ },
87
+ {
88
+ "bytes": 20,
89
+ "mediaType": "application/octet-stream",
90
+ "path": "pagefind/index/abc.pf_index",
91
+ "sha256": "sha256:f38c1c4a64d12d38b612823ec0d110f3b0133ebf308979fa1062b731eae5ba68"
92
+ },
93
+ {
94
+ "bytes": 172,
95
+ "mediaType": "text/javascript; charset=utf-8",
96
+ "path": "pagefind/pagefind.js",
97
+ "sha256": "sha256:5ddc73a0c8bb1d511025bac5e8c62359f80f30be56518e23beba6c2e0921b4f0"
98
+ }
99
+ ],
100
+ "mode": "prebuilt",
101
+ "notFoundFile": "404.html",
102
+ "redirects": [
103
+ {
104
+ "from": "/getting-started/",
105
+ "status": 308,
106
+ "toResourceKey": "guide:getting-started"
107
+ }
108
+ ],
109
+ "resources": [
110
+ {
111
+ "file": "api/show-toast/index.html",
112
+ "key": "api:show-toast",
113
+ "title": "Show toast API"
114
+ },
115
+ {
116
+ "file": "guides/index.html",
117
+ "key": "guide:getting-started",
118
+ "title": "Getting started"
119
+ },
120
+ {
121
+ "file": "index.html",
122
+ "key": "home",
123
+ "title": "Espalier controls"
124
+ }
125
+ ],
126
+ "schemaVersion": 1,
127
+ "source": {
128
+ "provider": "github",
129
+ "ref": "refs/heads/main",
130
+ "repository": "taprootio/taproot-controls",
131
+ "repositoryId": "934883082",
132
+ "repositoryUrl": "https://github.com/taprootio/taproot-controls",
133
+ "revision": "0123456789abcdef0123456789abcdef01234567"
134
+ }
135
+ }