fugu-api-data 1.16.0 → 1.18.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fugu-api-data",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "description": "Data about Project Fugu 🐡 APIs.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -24,6 +24,6 @@
24
24
  "homepage": "https://github.com/tomayac/fugu-api-data#readme",
25
25
  "devDependencies": {
26
26
  "node-fetch": "^3.3.2",
27
- "prettier": "^3.0.3"
27
+ "prettier": "^3.2.4"
28
28
  }
29
29
  }
package/patterns.js CHANGED
@@ -6,6 +6,7 @@ const patterns = {
6
6
  featureDetection: `(async () => 'AbsoluteOrientationSensor' in self)()`,
7
7
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
8
8
  blinkFeatureID: 1900,
9
+ chromeStatusID: 5698781827825664,
9
10
  },
10
11
  'Accelerometer': {
11
12
  regEx: /new\s+Accelerometer\s*\(/g,
@@ -14,6 +15,7 @@ const patterns = {
14
15
  featureDetection: `(async () => 'Accelerometer' in self)()`,
15
16
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
16
17
  blinkFeatureID: 1899,
18
+ chromeStatusID: 5698781827825664,
17
19
  },
18
20
  'Add to Home Screen': {
19
21
  regEx: /["']beforeinstallprompt["']|\.onbeforeinstallprompt/g,
@@ -23,6 +25,7 @@ const patterns = {
23
25
  documentation:
24
26
  'https://developer.mozilla.org/en-US/docs/Web/API/BeforeInstallPromptEvent',
25
27
  blinkFeatureID: 1436,
28
+ chromeStatusID: 6560913322672128,
26
29
  },
27
30
  'Ambient Light Sensor': {
28
31
  regEx: /new\s+AmbientLightSensor\s*\(\)/g,
@@ -31,6 +34,7 @@ const patterns = {
31
34
  featureDetection: `(async () => 'AmbientLightSensor' in self)()`,
32
35
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
33
36
  blinkFeatureID: 1901,
37
+ chromeStatusID: 5298357018820608,
34
38
  },
35
39
  'Async Clipboard': {
36
40
  regEx: /navigator\.clipboard\.writeText\s*\(/g,
@@ -40,6 +44,7 @@ const patterns = {
40
44
  featureDetection: `(async () => 'clipboard' in navigator && 'writeText' in navigator.clipboard)()`,
41
45
  documentation: 'https://web.dev/async-clipboard/',
42
46
  blinkFeatureID: 2372,
47
+ chromeStatusID: 5861289330999296,
43
48
  },
44
49
  'Async Clipboard (Images)': {
45
50
  regEx: /navigator\.clipboard\.write\s*\(/g,
@@ -49,6 +54,7 @@ const patterns = {
49
54
  featureDetection: `(async () => 'clipboard' in navigator && 'write' in navigator.clipboard)()`,
50
55
  documentation: 'https://web.dev/async-clipboard/',
51
56
  blinkFeatureID: 2370,
57
+ chromeStatusID: 5074658793619456,
52
58
  },
53
59
  'Background Fetch': {
54
60
  regEx: /\.backgroundFetch\.fetch\s*\(["']/g,
@@ -58,6 +64,7 @@ const patterns = {
58
64
  documentation:
59
65
  'https://developer.mozilla.org/en-US/docs/Web/API/Background_Fetch_API',
60
66
  blinkFeatureID: 2549,
67
+ chromeStatusID: 5712608971718656,
61
68
  },
62
69
  'Background Sync': {
63
70
  regEx: /\.sync\.register\s*\(["']/g,
@@ -70,6 +77,7 @@ const patterns = {
70
77
  documentation:
71
78
  'https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API',
72
79
  blinkFeatureID: 745,
80
+ chromeStatusID: 6170807885627392,
73
81
  },
74
82
  'Badging': {
75
83
  regEx: /navigator\.setAppBadge\s*\(/g,
@@ -78,6 +86,7 @@ const patterns = {
78
86
  featureDetection: `(async () => 'setAppBadge' in navigator)()`,
79
87
  documentation: 'https://developer.chrome.com/articles/badging-api/',
80
88
  blinkFeatureID: 2726,
89
+ chromeStatusID: 6068482055602176,
81
90
  },
82
91
  'Cache Storage': {
83
92
  regEx: /caches\.open\s*\(/g,
@@ -87,6 +96,7 @@ const patterns = {
87
96
  documentation:
88
97
  'https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage',
89
98
  blinkFeatureID: 3022,
99
+ chromeStatusID: 6461631328419840,
90
100
  },
91
101
  'Compression Streams': {
92
102
  regEx: /new\s+CompressionStream\s*\(/g,
@@ -95,6 +105,7 @@ const patterns = {
95
105
  featureDetection: `(async () => 'CompressionStream' in self)()`,
96
106
  documentation: 'https://developer.chrome.com/blog/compression-streams-api/',
97
107
  blinkFeatureID: 3060,
108
+ chromeStatusID: 5855937971617792,
98
109
  },
99
110
  'Compute Pressure': {
100
111
  regEx: /new\s+ComputePressureObserver\s*\(/g,
@@ -104,6 +115,7 @@ const patterns = {
104
115
  documentation:
105
116
  'https://developer.chrome.com/docs/web-platform/compute-pressure/',
106
117
  blinkFeatureID: 3899,
118
+ chromeStatusID: 5597608644968448,
107
119
  },
108
120
  'Contact Picker': {
109
121
  regEx: /navigator\.contacts\.select\s*\(/g,
@@ -112,6 +124,7 @@ const patterns = {
112
124
  featureDetection: `(async () => 'contacts' in navigator)()`,
113
125
  documentation: 'https://developer.chrome.com/articles/contact-picker/',
114
126
  blinkFeatureID: 2993,
127
+ chromeStatusID: 6511327140904960,
115
128
  },
116
129
  'Content Index': {
117
130
  regEx: /index\.getAll\s*\(/g,
@@ -124,6 +137,7 @@ const patterns = {
124
137
  documentation:
125
138
  'https://developer.chrome.com/articles/content-indexing-api/',
126
139
  blinkFeatureID: 2985,
140
+ chromeStatusID: 5658416729030656,
127
141
  },
128
142
  'Credential Management': {
129
143
  regEx: /navigator\.credentials\.get\s*\(/g,
@@ -133,6 +147,7 @@ const patterns = {
133
147
  documentation:
134
148
  'https://developers.google.com/web/updates/2016/04/credential-management-api',
135
149
  blinkFeatureID: 960,
150
+ chromeStatusID: 5026422640869376,
136
151
  },
137
152
  'Device Memory': {
138
153
  regEx: /navigator\.deviceMemory/g,
@@ -142,6 +157,7 @@ const patterns = {
142
157
  documentation:
143
158
  'https://developer.mozilla.org/en-US/docs/Web/API/Device_Memory_API',
144
159
  blinkFeatureID: 2121,
160
+ chromeStatusID: 5119701235531776,
145
161
  },
146
162
  'Device Posture': {
147
163
  regEx: /navigator\.devicePosture/g,
@@ -151,6 +167,7 @@ const patterns = {
151
167
  documentation:
152
168
  'https://github.com/w3c/device-posture/blob/gh-pages/README.md',
153
169
  blinkFeatureID: undefined,
170
+ chromeStatusID: 5185813744975872,
154
171
  },
155
172
  'Digital Goods': {
156
173
  regEx: /getDigitalGoodsService\s*\(/g,
@@ -160,6 +177,7 @@ const patterns = {
160
177
  documentation:
161
178
  'https://developer.chrome.com/docs/android/trusted-web-activity/receive-payments-play-billing/',
162
179
  blinkFeatureID: 3397,
180
+ chromeStatusID: 5339955595313152,
163
181
  },
164
182
  'EyeDropper': {
165
183
  regEx: /new\s+EyeDropper\s*\(\)/g,
@@ -168,6 +186,7 @@ const patterns = {
168
186
  featureDetection: `(async () => 'EyeDropper' in self)()`,
169
187
  documentation: 'https://developer.chrome.com/articles/eyedropper/',
170
188
  blinkFeatureID: undefined,
189
+ chromeStatusID: 6304275594477568,
171
190
  },
172
191
  'File Handling': {
173
192
  regEx: /"file_handlers"/g,
@@ -177,6 +196,7 @@ const patterns = {
177
196
  featureDetection: `(async () => 'launchQueue' in self && 'files' in LaunchParams.prototype)()`,
178
197
  documentation: 'https://developer.chrome.com/articles/file-handling/',
179
198
  blinkFeatureID: 3875,
199
+ chromeStatusID: 5721776357113856,
180
200
  },
181
201
  'File System Access': {
182
202
  regEx:
@@ -186,6 +206,7 @@ const patterns = {
186
206
  featureDetection: `(async () => 'showOpenFilePicker' in self)()`,
187
207
  documentation: 'https://developer.chrome.com/articles/file-system-access/',
188
208
  blinkFeatureID: 3340,
209
+ chromeStatusID: 6284708426022912,
189
210
  },
190
211
  'Gamepad': {
191
212
  regEx: /navigator\.getGamepads\s*\(/g,
@@ -194,6 +215,7 @@ const patterns = {
194
215
  featureDetection: `(async () => 'getGamepads' in navigator)()`,
195
216
  documentation: 'https://web.dev/gamepad/',
196
217
  blinkFeatureID: 1916,
218
+ chromeStatusID: 5118776383111168,
197
219
  },
198
220
  'getInstalledRelatedApps': {
199
221
  regEx: /navigator\.getInstalledRelatedApps\s*\(/g,
@@ -202,6 +224,7 @@ const patterns = {
202
224
  featureDetection: `(async () => 'getInstalledRelatedApps' in navigator)()`,
203
225
  documentation: 'https://web.dev/get-installed-related-apps/',
204
226
  blinkFeatureID: 1870,
227
+ chromeStatusID: 5695378309513216,
205
228
  },
206
229
  'Gravity Sensor': {
207
230
  regEx: /new\s+GravitySensor\s*\(/g,
@@ -210,6 +233,7 @@ const patterns = {
210
233
  featureDetection: `(async () => 'GravitySensor' in self)()`,
211
234
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
212
235
  blinkFeatureID: 3795,
236
+ chromeStatusID: 5384099747332096,
213
237
  },
214
238
  'Gyroscope': {
215
239
  regEx: /new\s+Gyroscope\s*\(/g,
@@ -218,6 +242,7 @@ const patterns = {
218
242
  featureDetection: `(async () => 'Gyroscope' in self)()`,
219
243
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
220
244
  blinkFeatureID: 1906,
245
+ chromeStatusID: 5698781827825664,
221
246
  },
222
247
  'Handwriting Recognition': {
223
248
  regEx: /navigator\.queryHandwritingRecognizerSupport\s*\(/g,
@@ -227,6 +252,7 @@ const patterns = {
227
252
  documentation:
228
253
  'https://developer.chrome.com/docs/web-platform/handwriting-recognition/',
229
254
  blinkFeatureID: 3893,
255
+ chromeStatusID: 5263213807534080,
230
256
  },
231
257
  'HapticsDevice': {
232
258
  regEx: /\.haptics\.play\s*\(/g,
@@ -236,6 +262,7 @@ const patterns = {
236
262
  documentation:
237
263
  'https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/HapticsDevice/explainer.md',
238
264
  blinkFeatureID: undefined,
265
+ chromeStatusID: 5720648543371264,
239
266
  },
240
267
  'Idle Detection': {
241
268
  regEx: /new\s+IdleDetector\s*\(/g,
@@ -244,6 +271,7 @@ const patterns = {
244
271
  featureDetection: `(async () => 'IdleDetector' in self)()`,
245
272
  documentation: 'https://developer.chrome.com/articles/idle-detection/',
246
273
  blinkFeatureID: 2834,
274
+ chromeStatusID: 4590256452009984,
247
275
  },
248
276
  'Ink': {
249
277
  regEx: /navigator\.ink\.requestPresenter\s*\(/g,
@@ -253,6 +281,7 @@ const patterns = {
253
281
  documentation:
254
282
  'https://blogs.windows.com/msedgedev/2021/08/18/enhancing-inking-on-the-web/',
255
283
  blinkFeatureID: undefined,
284
+ chromeStatusID: undefined,
256
285
  },
257
286
  'Insertable streams for MediaStreamTrack': {
258
287
  regEx: /MediaStreamTrackProcessor\s*\(/g,
@@ -264,6 +293,7 @@ const patterns = {
264
293
  documentation:
265
294
  'https://developer.chrome.com/articles/mediastreamtrack-insertable-media-processing/',
266
295
  blinkFeatureID: 3729,
296
+ chromeStatusID: 5499415634640896,
267
297
  },
268
298
  'Launch Handler': {
269
299
  regEx: /"launch_handler"/g,
@@ -274,6 +304,7 @@ const patterns = {
274
304
  documentation:
275
305
  'https://developer.chrome.com/docs/web-platform/launch-handler/',
276
306
  blinkFeatureID: undefined,
307
+ chromeStatusID: 5722383233056768,
277
308
  },
278
309
  'Linear Acceleration Sensor': {
279
310
  regEx: /new\s+LinearAccelerationSensor\s*\(/g,
@@ -282,6 +313,7 @@ const patterns = {
282
313
  featureDetection: `(async () => 'LinearAccelerationSensor' in self)()`,
283
314
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
284
315
  blinkFeatureID: 2051,
316
+ chromeStatusID: 5698781827825664,
285
317
  },
286
318
  'Local Font Access': {
287
319
  regEx: /queryLocalFonts\s*\(/g,
@@ -290,6 +322,7 @@ const patterns = {
290
322
  featureDetection: `(async () => 'queryLocalFonts' in self)()`,
291
323
  documentation: 'https://developer.chrome.com/articles/local-fonts/',
292
324
  blinkFeatureID: 4211,
325
+ chromeStatusID: 6234451761692672,
293
326
  },
294
327
  'Magnetometer': {
295
328
  regEx: /new\s+Magnetometer\s*\(/g,
@@ -298,6 +331,7 @@ const patterns = {
298
331
  featureDetection: `(async () => 'Magnetometer' in self)()`,
299
332
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
300
333
  blinkFeatureID: 1907,
334
+ chromeStatusID: 5698781827825664,
301
335
  },
302
336
  'Media Capabilities': {
303
337
  regEx: /navigator\.mediaCapabilities\.decodingInfo\s*\(/g,
@@ -307,6 +341,7 @@ const patterns = {
307
341
  documentation:
308
342
  'https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API',
309
343
  blinkFeatureID: 2239,
344
+ chromeStatusID: 5869632707624960,
310
345
  },
311
346
  'Media Session': {
312
347
  regEx:
@@ -317,6 +352,7 @@ const patterns = {
317
352
  documentation:
318
353
  'https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API',
319
354
  blinkFeatureID: 1792,
355
+ chromeStatusID: 5639924124483584,
320
356
  },
321
357
  'Window Management': {
322
358
  regEx: /getScreenDetails\s*\(\)/g,
@@ -325,6 +361,7 @@ const patterns = {
325
361
  featureDetection: `(async () => 'getScreenDetails' in self)()`,
326
362
  documentation: 'https://developer.chrome.com/articles/window-management/',
327
363
  blinkFeatureID: 3388,
364
+ chromeStatusID: 5252960583942144,
328
365
  },
329
366
  'Navigation Preload': {
330
367
  regEx: /\.navigationPreload\.enable\s*\(\)/g,
@@ -337,14 +374,17 @@ const patterns = {
337
374
  documentation:
338
375
  'https://developer.mozilla.org/en-US/docs/Web/API/NavigationPreloadManager',
339
376
  blinkFeatureID: 1803,
377
+ chromeStatusID: 5734842339688448,
340
378
  },
341
379
  'Origin Private File System': {
342
380
  regEx: /navigator\.storage\.getDirectory\s*\(\)/g,
343
381
  where: 'JavaScript',
344
- supported: (async () => 'getDirectory' in StorageManager.prototype)(),
345
- featureDetection: `(async () => 'getDirectory' in StorageManager.prototype)()`,
382
+ supported: (async () =>
383
+ 'StorageManager' in self && 'getDirectory' in StorageManager.prototype)(),
384
+ featureDetection: `(async () => 'StorageManager' in self && 'getDirectory' in StorageManager.prototype)()`,
346
385
  documentation: 'https://web.dev/origin-private-file-system/',
347
386
  blinkFeatureID: 3428,
387
+ chromeStatusID: 5702777582911488,
348
388
  },
349
389
  'Payment Handler': {
350
390
  regEx: /\.paymentManager\.instruments\.set\s*\(/g,
@@ -353,6 +393,7 @@ const patterns = {
353
393
  featureDetection: `(async () => 'PaymentInstruments' in self)()`,
354
394
  documentation: 'https://web.dev/registering-a-web-based-payment-app/',
355
395
  blinkFeatureID: 2397,
396
+ chromeStatusID: 5160285237149696,
356
397
  },
357
398
  'Payment Request': {
358
399
  regEx: /new\s+PaymentRequest\s*\(/g,
@@ -362,6 +403,7 @@ const patterns = {
362
403
  documentation:
363
404
  'https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API',
364
405
  blinkFeatureID: 2894,
406
+ chromeStatusID: 5639348045217792,
365
407
  },
366
408
  'Periodic Background Sync': {
367
409
  regEx: /periodicSync\.register\s*\(/g,
@@ -371,6 +413,7 @@ const patterns = {
371
413
  documentation:
372
414
  'https://developer.chrome.com/articles/periodic-background-sync/',
373
415
  blinkFeatureID: 2931,
416
+ chromeStatusID: 5689383275462656,
374
417
  },
375
418
  'Persistent Storage': {
376
419
  regEx: /navigator\.storage\.persist\s*\(\)/g,
@@ -381,6 +424,7 @@ const patterns = {
381
424
  documentation:
382
425
  'https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist',
383
426
  blinkFeatureID: 1369,
427
+ chromeStatusID: 5715811364765696,
384
428
  },
385
429
  'Storage Buckets': {
386
430
  regEx: /navigator\.storageBuckets\.open\s*\(/g,
@@ -389,6 +433,7 @@ const patterns = {
389
433
  featureDetection: `(async () => 'storageBuckets' in navigator)()`,
390
434
  documentation: 'https://developer.chrome.com/blog/storage-buckets/',
391
435
  blinkFeatureID: 4378,
436
+ chromeStatusID: 5739224579964928,
392
437
  },
393
438
  'Pointer Lock (unadjustedMovement)': {
394
439
  regEx: /unadjustedMovement\s*\:\s*/g,
@@ -408,6 +453,7 @@ const patterns = {
408
453
  featureDetection: `(async () => 'HTMLParagraphElement' in self ? await (async () => { try { return !!await document.createElement("p").requestPointerLock({ unadjustedMovement: true }) } catch { return 'requestPointerLock' in HTMLParagraphElement.prototype } })() : undefined)()`,
409
454
  documentation: 'https://web.dev/disable-mouse-acceleration/',
410
455
  blinkFeatureID: 3027,
456
+ chromeStatusID: 5723553087356928,
411
457
  },
412
458
  'Protocol Handlers': {
413
459
  regEx: /"protocol_handlers"/g,
@@ -417,6 +463,7 @@ const patterns = {
417
463
  documentation:
418
464
  'https://developer.chrome.com/articles/url-protocol-handler/',
419
465
  blinkFeatureID: 3884,
466
+ chromeStatusID: 5151703944921088,
420
467
  },
421
468
  'Push': {
422
469
  regEx: /\.pushManager\.subscribe\s*\(/g,
@@ -428,6 +475,7 @@ const patterns = {
428
475
  featureDetection: `(async () => 'serviceWorker' in navigator && 'pushManager' in (await navigator.serviceWorker?.ready || self.registration))()`,
429
476
  documentation: 'https://developer.mozilla.org/en-US/docs/Web/API/Push_API',
430
477
  blinkFeatureID: 769,
478
+ chromeStatusID: 5416033485586432,
431
479
  },
432
480
  'Relative Orientation Sensor': {
433
481
  regEx: /new\s+RelativeOrientationSensor\s*\(/g,
@@ -436,6 +484,7 @@ const patterns = {
436
484
  featureDetection: `(async () => 'RelativeOrientationSensor' in self)()`,
437
485
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
438
486
  blinkFeatureID: 2019,
487
+ chromeStatusID: 5698781827825664,
439
488
  },
440
489
  'Screen Wake Lock': {
441
490
  regEx: /navigator\.wakeLock\.request\s*\(/g,
@@ -444,6 +493,7 @@ const patterns = {
444
493
  featureDetection: `(async () => 'wakeLock' in navigator)()`,
445
494
  documentation: 'https://developer.chrome.com/articles/wake-lock/',
446
495
  blinkFeatureID: 3005,
496
+ chromeStatusID: 4636879949398016,
447
497
  },
448
498
  'Service Worker': {
449
499
  regEx: /navigator\.serviceWorker\.register\s*\(/g,
@@ -453,6 +503,7 @@ const patterns = {
453
503
  documentation:
454
504
  'https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API',
455
505
  blinkFeatureID: 990,
506
+ chromeStatusID: 6561526227927040,
456
507
  },
457
508
  'Shape Detection (Barcodes)': {
458
509
  regEx: /new\s+BarcodeDetector\s*\(/g,
@@ -461,6 +512,7 @@ const patterns = {
461
512
  featureDetection: `(async () => 'BarcodeDetector' in self)()`,
462
513
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
463
514
  blinkFeatureID: 3711,
515
+ chromeStatusID: 4757990523535360,
464
516
  },
465
517
  'Shape Detection (Faces)': {
466
518
  regEx: /new\s+FaceDetector\s*\(/g,
@@ -469,6 +521,7 @@ const patterns = {
469
521
  featureDetection: `(async () => 'FaceDetector' in self)()`,
470
522
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
471
523
  blinkFeatureID: 3712,
524
+ chromeStatusID: 5678216012365824,
472
525
  },
473
526
  'Shape Detection (Texts)': {
474
527
  regEx: /new\s+TextDetector\s*\(/g,
@@ -477,6 +530,7 @@ const patterns = {
477
530
  featureDetection: `(async () => 'TextDetector' in self)()`,
478
531
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
479
532
  blinkFeatureID: 3713,
533
+ chromeStatusID: 5644087665360896,
480
534
  },
481
535
  'Shortcuts': {
482
536
  regEx: /"shortcuts"/g,
@@ -485,6 +539,7 @@ const patterns = {
485
539
  featureDetection: `(async () => undefined)()`,
486
540
  documentation: 'https://web.dev/app-shortcuts/',
487
541
  blinkFeatureID: undefined,
542
+ chromeStatusID: 5706099464339456,
488
543
  },
489
544
  'Storage Estimation': {
490
545
  regEx: /navigator\.storage\.estimate\s*\(\)/g,
@@ -495,6 +550,7 @@ const patterns = {
495
550
  documentation:
496
551
  'https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/estimate',
497
552
  blinkFeatureID: 1371,
553
+ chromeStatusID: 5630353511284736,
498
554
  },
499
555
  'Tabbed Application Mode': {
500
556
  regEx: /"tabbed"/g,
@@ -503,6 +559,7 @@ const patterns = {
503
559
  featureDetection: `(async () => undefined)()`,
504
560
  documentation: 'https://web.dev/tabbed-application-mode/',
505
561
  blinkFeatureID: undefined,
562
+ chromeStatusID: 5128143454076928,
506
563
  },
507
564
  'VirtualKeyboard': {
508
565
  regEx: /navigator\.virtualKeyboard/g,
@@ -512,6 +569,7 @@ const patterns = {
512
569
  documentation:
513
570
  'https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/VirtualKeyboardAPI/explainer.md',
514
571
  blinkFeatureID: undefined,
572
+ chromeStatusID: 5717448231747584,
515
573
  },
516
574
  'Web App Link Handling': {
517
575
  regEx: /"handle_links"/g,
@@ -521,6 +579,7 @@ const patterns = {
521
579
  documentation:
522
580
  'https://github.com/WICG/pwa-url-handler/blob/main/handle_links/explainer.md',
523
581
  blinkFeatureID: undefined,
582
+ chromeStatusID: 5740751225880576,
524
583
  },
525
584
  'Web Audio': {
526
585
  regEx: /new\s+AudioContext\s*\(/g,
@@ -530,6 +589,7 @@ const patterns = {
530
589
  documentation:
531
590
  'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
532
591
  blinkFeatureID: 1698,
592
+ chromeStatusID: 6261718720184320,
533
593
  },
534
594
  'Web Share': {
535
595
  regEx: /navigator\.share\s*\(/g,
@@ -538,6 +598,7 @@ const patterns = {
538
598
  featureDetection: `(async () => 'share' in navigator)()`,
539
599
  documentation: 'https://web.dev/web-share/',
540
600
  blinkFeatureID: 1501,
601
+ chromeStatusID: 5668769141620736,
541
602
  },
542
603
  'Web Share (Files)': {
543
604
  regEx: /navigator\.canShare\s*\(/g,
@@ -546,6 +607,7 @@ const patterns = {
546
607
  featureDetection: `(async () => 'canShare' in navigator)()`,
547
608
  documentation: 'https://web.dev/web-share/',
548
609
  blinkFeatureID: 2737,
610
+ chromeStatusID: 4777349178458112,
549
611
  },
550
612
  'Web Share Target': {
551
613
  regEx: /"share_target"/g,
@@ -554,6 +616,7 @@ const patterns = {
554
616
  featureDetection: `(async () => undefined)()`,
555
617
  documentation: 'https://developer.chrome.com/articles/web-share-target/',
556
618
  blinkFeatureID: undefined,
619
+ chromeStatusID: 5662315307335680,
557
620
  },
558
621
  'Web Share Target (Files)': {
559
622
  regEx: /"enctype"\s*\:\s*"multipart\/form\-data"/g,
@@ -562,6 +625,7 @@ const patterns = {
562
625
  featureDetection: `(async () => undefined)()`,
563
626
  documentation: 'https://developer.chrome.com/articles/web-share-target/',
564
627
  blinkFeatureID: undefined,
628
+ chromeStatusID: 6124071381106688,
565
629
  },
566
630
  'Web Bluetooth': {
567
631
  regEx: /navigator\.bluetooth\.requestDevice\s*\(/g,
@@ -570,6 +634,7 @@ const patterns = {
570
634
  featureDetection: `(async () => 'bluetooth' in navigator)()`,
571
635
  documentation: 'https://developer.chrome.com/articles/bluetooth/',
572
636
  blinkFeatureID: 1670,
637
+ chromeStatusID: 5264933985976320,
573
638
  },
574
639
  'WebCodecs': {
575
640
  regEx: /new\s+MediaStreamTrackProcessor\s*\(/g,
@@ -578,6 +643,7 @@ const patterns = {
578
643
  featureDetection: `(async () => 'MediaStreamTrackProcessor' in self)()`,
579
644
  documentation: 'https://developer.chrome.com/articles/webcodecs/',
580
645
  blinkFeatureID: 3728,
646
+ chromeStatusID: 5669293909868544,
581
647
  },
582
648
  'WebGPU': {
583
649
  regEx: /navigator\.gpu\.requestAdapter\s*\(/g,
@@ -586,6 +652,7 @@ const patterns = {
586
652
  featureDetection: `(async () => 'gpu' in navigator)()`,
587
653
  documentation: 'https://developer.chrome.com/docs/web-platform/webgpu/',
588
654
  blinkFeatureID: 3888,
655
+ chromeStatusID: 6213121689518080,
589
656
  },
590
657
  'WebHID': {
591
658
  regEx: /navigator\.hid\.requestDevice\s*\(/g,
@@ -594,6 +661,7 @@ const patterns = {
594
661
  featureDetection: `(async () => 'hid' in navigator)()`,
595
662
  documentation: 'https://developer.chrome.com/articles/hid/',
596
663
  blinkFeatureID: 2866,
664
+ chromeStatusID: 5172464636133376,
597
665
  },
598
666
  'Web MIDI': {
599
667
  regEx: /navigator\.requestMIDIAccess\s*\(/g,
@@ -603,6 +671,7 @@ const patterns = {
603
671
  documentation:
604
672
  'https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API',
605
673
  blinkFeatureID: 2029,
674
+ chromeStatusID: 4923613069180928,
606
675
  },
607
676
  'Web NFC': {
608
677
  regEx: /new\s+NDEFReader\s*\(/g,
@@ -611,6 +680,7 @@ const patterns = {
611
680
  featureDetection: `(async () => 'NDEFReader' in self)()`,
612
681
  documentation: 'https://developer.chrome.com/articles/nfc/',
613
682
  blinkFeatureID: 3094,
683
+ chromeStatusID: 6261030015467520,
614
684
  },
615
685
  'WebOTP': {
616
686
  regEx: /transport\s*\:\s*\[["']sms["']\]/g,
@@ -619,6 +689,7 @@ const patterns = {
619
689
  featureDetection: `(async () => 'OTPCredential' in self)()`,
620
690
  documentation: 'https://developer.chrome.com/articles/web-otp/',
621
691
  blinkFeatureID: 2880,
692
+ chromeStatusID: 5873577578463232,
622
693
  },
623
694
  'Web Serial': {
624
695
  regEx: /navigator\.serial\.requestPort\s*\(/g,
@@ -627,6 +698,7 @@ const patterns = {
627
698
  featureDetection: `(async () => 'serial' in navigator)()`,
628
699
  documentation: 'https://developer.chrome.com/articles/serial/',
629
700
  blinkFeatureID: 2546,
701
+ chromeStatusID: 6577673212002304,
630
702
  },
631
703
  'WebSocketStream': {
632
704
  regEx: /new\s+WebSocketStream\s*\(/g,
@@ -635,6 +707,7 @@ const patterns = {
635
707
  featureDetection: `(async () => 'WebSocketStream' in self)()`,
636
708
  documentation: 'https://developer.chrome.com/articles/websocketstream/',
637
709
  blinkFeatureID: 3018,
710
+ chromeStatusID: 5189728691290112,
638
711
  },
639
712
  'WebTransport': {
640
713
  regEx: /new\s+WebTransport\s*\(/g,
@@ -643,6 +716,7 @@ const patterns = {
643
716
  featureDetection: `(async () => 'WebTransport' in self)()`,
644
717
  documentation: 'https://developer.chrome.com/articles/webtransport/',
645
718
  blinkFeatureID: 3472,
719
+ chromeStatusID: 4854144902889472,
646
720
  },
647
721
  'WebUSB': {
648
722
  regEx: /navigator\.usb\.requestDevice\s*\(/g,
@@ -651,6 +725,7 @@ const patterns = {
651
725
  featureDetection: `(async () => 'usb' in navigator)()`,
652
726
  documentation: 'https://developer.chrome.com/articles/usb/',
653
727
  blinkFeatureID: 1520,
728
+ chromeStatusID: 5651917954875392,
654
729
  },
655
730
  'Window Controls Overlay': {
656
731
  regEx: /"window\-controls\-overlay"/g,
@@ -659,5 +734,6 @@ const patterns = {
659
734
  featureDetection: `(async () => 'windowControlsOverlay' in navigator)()`,
660
735
  documentation: 'https://web.dev/window-controls-overlay/',
661
736
  blinkFeatureID: 3902,
737
+ chromeStatusID: 5741247866077184,
662
738
  },
663
739
  };
package/patterns.mjs CHANGED
@@ -6,6 +6,7 @@ export default {
6
6
  featureDetection: `(async () => 'AbsoluteOrientationSensor' in self)()`,
7
7
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
8
8
  blinkFeatureID: 1900,
9
+ chromeStatusID: 5698781827825664,
9
10
  },
10
11
  'Accelerometer': {
11
12
  regEx: /new\s+Accelerometer\s*\(/g,
@@ -14,6 +15,7 @@ export default {
14
15
  featureDetection: `(async () => 'Accelerometer' in self)()`,
15
16
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
16
17
  blinkFeatureID: 1899,
18
+ chromeStatusID: 5698781827825664,
17
19
  },
18
20
  'Add to Home Screen': {
19
21
  regEx: /["']beforeinstallprompt["']|\.onbeforeinstallprompt/g,
@@ -23,6 +25,7 @@ export default {
23
25
  documentation:
24
26
  'https://developer.mozilla.org/en-US/docs/Web/API/BeforeInstallPromptEvent',
25
27
  blinkFeatureID: 1436,
28
+ chromeStatusID: 6560913322672128,
26
29
  },
27
30
  'Ambient Light Sensor': {
28
31
  regEx: /new\s+AmbientLightSensor\s*\(\)/g,
@@ -31,6 +34,7 @@ export default {
31
34
  featureDetection: `(async () => 'AmbientLightSensor' in self)()`,
32
35
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
33
36
  blinkFeatureID: 1901,
37
+ chromeStatusID: 5298357018820608,
34
38
  },
35
39
  'Async Clipboard': {
36
40
  regEx: /navigator\.clipboard\.writeText\s*\(/g,
@@ -40,6 +44,7 @@ export default {
40
44
  featureDetection: `(async () => 'clipboard' in navigator && 'writeText' in navigator.clipboard)()`,
41
45
  documentation: 'https://web.dev/async-clipboard/',
42
46
  blinkFeatureID: 2372,
47
+ chromeStatusID: 5861289330999296,
43
48
  },
44
49
  'Async Clipboard (Images)': {
45
50
  regEx: /navigator\.clipboard\.write\s*\(/g,
@@ -49,6 +54,7 @@ export default {
49
54
  featureDetection: `(async () => 'clipboard' in navigator && 'write' in navigator.clipboard)()`,
50
55
  documentation: 'https://web.dev/async-clipboard/',
51
56
  blinkFeatureID: 2370,
57
+ chromeStatusID: 5074658793619456,
52
58
  },
53
59
  'Background Fetch': {
54
60
  regEx: /\.backgroundFetch\.fetch\s*\(["']/g,
@@ -58,6 +64,7 @@ export default {
58
64
  documentation:
59
65
  'https://developer.mozilla.org/en-US/docs/Web/API/Background_Fetch_API',
60
66
  blinkFeatureID: 2549,
67
+ chromeStatusID: 5712608971718656,
61
68
  },
62
69
  'Background Sync': {
63
70
  regEx: /\.sync\.register\s*\(["']/g,
@@ -70,6 +77,7 @@ export default {
70
77
  documentation:
71
78
  'https://developer.mozilla.org/en-US/docs/Web/API/Background_Synchronization_API',
72
79
  blinkFeatureID: 745,
80
+ chromeStatusID: 6170807885627392,
73
81
  },
74
82
  'Badging': {
75
83
  regEx: /navigator\.setAppBadge\s*\(/g,
@@ -78,6 +86,7 @@ export default {
78
86
  featureDetection: `(async () => 'setAppBadge' in navigator)()`,
79
87
  documentation: 'https://developer.chrome.com/articles/badging-api/',
80
88
  blinkFeatureID: 2726,
89
+ chromeStatusID: 6068482055602176,
81
90
  },
82
91
  'Cache Storage': {
83
92
  regEx: /caches\.open\s*\(/g,
@@ -87,6 +96,7 @@ export default {
87
96
  documentation:
88
97
  'https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage',
89
98
  blinkFeatureID: 3022,
99
+ chromeStatusID: 6461631328419840,
90
100
  },
91
101
  'Compression Streams': {
92
102
  regEx: /new\s+CompressionStream\s*\(/g,
@@ -95,6 +105,7 @@ export default {
95
105
  featureDetection: `(async () => 'CompressionStream' in self)()`,
96
106
  documentation: 'https://developer.chrome.com/blog/compression-streams-api/',
97
107
  blinkFeatureID: 3060,
108
+ chromeStatusID: 5855937971617792,
98
109
  },
99
110
  'Compute Pressure': {
100
111
  regEx: /new\s+ComputePressureObserver\s*\(/g,
@@ -104,6 +115,7 @@ export default {
104
115
  documentation:
105
116
  'https://developer.chrome.com/docs/web-platform/compute-pressure/',
106
117
  blinkFeatureID: 3899,
118
+ chromeStatusID: 5597608644968448,
107
119
  },
108
120
  'Contact Picker': {
109
121
  regEx: /navigator\.contacts\.select\s*\(/g,
@@ -112,6 +124,7 @@ export default {
112
124
  featureDetection: `(async () => 'contacts' in navigator)()`,
113
125
  documentation: 'https://developer.chrome.com/articles/contact-picker/',
114
126
  blinkFeatureID: 2993,
127
+ chromeStatusID: 6511327140904960,
115
128
  },
116
129
  'Content Index': {
117
130
  regEx: /index\.getAll\s*\(/g,
@@ -124,6 +137,7 @@ export default {
124
137
  documentation:
125
138
  'https://developer.chrome.com/articles/content-indexing-api/',
126
139
  blinkFeatureID: 2985,
140
+ chromeStatusID: 5658416729030656,
127
141
  },
128
142
  'Credential Management': {
129
143
  regEx: /navigator\.credentials\.get\s*\(/g,
@@ -133,6 +147,7 @@ export default {
133
147
  documentation:
134
148
  'https://developers.google.com/web/updates/2016/04/credential-management-api',
135
149
  blinkFeatureID: 960,
150
+ chromeStatusID: 5026422640869376,
136
151
  },
137
152
  'Device Memory': {
138
153
  regEx: /navigator\.deviceMemory/g,
@@ -142,6 +157,7 @@ export default {
142
157
  documentation:
143
158
  'https://developer.mozilla.org/en-US/docs/Web/API/Device_Memory_API',
144
159
  blinkFeatureID: 2121,
160
+ chromeStatusID: 5119701235531776,
145
161
  },
146
162
  'Device Posture': {
147
163
  regEx: /navigator\.devicePosture/g,
@@ -151,6 +167,7 @@ export default {
151
167
  documentation:
152
168
  'https://github.com/w3c/device-posture/blob/gh-pages/README.md',
153
169
  blinkFeatureID: undefined,
170
+ chromeStatusID: 5185813744975872,
154
171
  },
155
172
  'Digital Goods': {
156
173
  regEx: /getDigitalGoodsService\s*\(/g,
@@ -160,6 +177,7 @@ export default {
160
177
  documentation:
161
178
  'https://developer.chrome.com/docs/android/trusted-web-activity/receive-payments-play-billing/',
162
179
  blinkFeatureID: 3397,
180
+ chromeStatusID: 5339955595313152,
163
181
  },
164
182
  'EyeDropper': {
165
183
  regEx: /new\s+EyeDropper\s*\(\)/g,
@@ -168,6 +186,7 @@ export default {
168
186
  featureDetection: `(async () => 'EyeDropper' in self)()`,
169
187
  documentation: 'https://developer.chrome.com/articles/eyedropper/',
170
188
  blinkFeatureID: undefined,
189
+ chromeStatusID: 6304275594477568,
171
190
  },
172
191
  'File Handling': {
173
192
  regEx: /"file_handlers"/g,
@@ -177,6 +196,7 @@ export default {
177
196
  featureDetection: `(async () => 'launchQueue' in self && 'files' in LaunchParams.prototype)()`,
178
197
  documentation: 'https://developer.chrome.com/articles/file-handling/',
179
198
  blinkFeatureID: 3875,
199
+ chromeStatusID: 5721776357113856,
180
200
  },
181
201
  'File System Access': {
182
202
  regEx:
@@ -186,6 +206,7 @@ export default {
186
206
  featureDetection: `(async () => 'showOpenFilePicker' in self)()`,
187
207
  documentation: 'https://developer.chrome.com/articles/file-system-access/',
188
208
  blinkFeatureID: 3340,
209
+ chromeStatusID: 6284708426022912,
189
210
  },
190
211
  'Gamepad': {
191
212
  regEx: /navigator\.getGamepads\s*\(/g,
@@ -194,6 +215,7 @@ export default {
194
215
  featureDetection: `(async () => 'getGamepads' in navigator)()`,
195
216
  documentation: 'https://web.dev/gamepad/',
196
217
  blinkFeatureID: 1916,
218
+ chromeStatusID: 5118776383111168,
197
219
  },
198
220
  'getInstalledRelatedApps': {
199
221
  regEx: /navigator\.getInstalledRelatedApps\s*\(/g,
@@ -202,6 +224,7 @@ export default {
202
224
  featureDetection: `(async () => 'getInstalledRelatedApps' in navigator)()`,
203
225
  documentation: 'https://web.dev/get-installed-related-apps/',
204
226
  blinkFeatureID: 1870,
227
+ chromeStatusID: 5695378309513216,
205
228
  },
206
229
  'Gravity Sensor': {
207
230
  regEx: /new\s+GravitySensor\s*\(/g,
@@ -210,6 +233,7 @@ export default {
210
233
  featureDetection: `(async () => 'GravitySensor' in self)()`,
211
234
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
212
235
  blinkFeatureID: 3795,
236
+ chromeStatusID: 5384099747332096,
213
237
  },
214
238
  'Gyroscope': {
215
239
  regEx: /new\s+Gyroscope\s*\(/g,
@@ -218,6 +242,7 @@ export default {
218
242
  featureDetection: `(async () => 'Gyroscope' in self)()`,
219
243
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
220
244
  blinkFeatureID: 1906,
245
+ chromeStatusID: 5698781827825664,
221
246
  },
222
247
  'Handwriting Recognition': {
223
248
  regEx: /navigator\.queryHandwritingRecognizerSupport\s*\(/g,
@@ -227,6 +252,7 @@ export default {
227
252
  documentation:
228
253
  'https://developer.chrome.com/docs/web-platform/handwriting-recognition/',
229
254
  blinkFeatureID: 3893,
255
+ chromeStatusID: 5263213807534080,
230
256
  },
231
257
  'HapticsDevice': {
232
258
  regEx: /\.haptics\.play\s*\(/g,
@@ -236,6 +262,7 @@ export default {
236
262
  documentation:
237
263
  'https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/HapticsDevice/explainer.md',
238
264
  blinkFeatureID: undefined,
265
+ chromeStatusID: 5720648543371264,
239
266
  },
240
267
  'Idle Detection': {
241
268
  regEx: /new\s+IdleDetector\s*\(/g,
@@ -244,6 +271,7 @@ export default {
244
271
  featureDetection: `(async () => 'IdleDetector' in self)()`,
245
272
  documentation: 'https://developer.chrome.com/articles/idle-detection/',
246
273
  blinkFeatureID: 2834,
274
+ chromeStatusID: 4590256452009984,
247
275
  },
248
276
  'Ink': {
249
277
  regEx: /navigator\.ink\.requestPresenter\s*\(/g,
@@ -253,6 +281,7 @@ export default {
253
281
  documentation:
254
282
  'https://blogs.windows.com/msedgedev/2021/08/18/enhancing-inking-on-the-web/',
255
283
  blinkFeatureID: undefined,
284
+ chromeStatusID: undefined,
256
285
  },
257
286
  'Insertable streams for MediaStreamTrack': {
258
287
  regEx: /MediaStreamTrackProcessor\s*\(/g,
@@ -264,6 +293,7 @@ export default {
264
293
  documentation:
265
294
  'https://developer.chrome.com/articles/mediastreamtrack-insertable-media-processing/',
266
295
  blinkFeatureID: 3729,
296
+ chromeStatusID: 5499415634640896,
267
297
  },
268
298
  'Launch Handler': {
269
299
  regEx: /"launch_handler"/g,
@@ -274,6 +304,7 @@ export default {
274
304
  documentation:
275
305
  'https://developer.chrome.com/docs/web-platform/launch-handler/',
276
306
  blinkFeatureID: undefined,
307
+ chromeStatusID: 5722383233056768,
277
308
  },
278
309
  'Linear Acceleration Sensor': {
279
310
  regEx: /new\s+LinearAccelerationSensor\s*\(/g,
@@ -282,6 +313,7 @@ export default {
282
313
  featureDetection: `(async () => 'LinearAccelerationSensor' in self)()`,
283
314
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
284
315
  blinkFeatureID: 2051,
316
+ chromeStatusID: 5698781827825664,
285
317
  },
286
318
  'Local Font Access': {
287
319
  regEx: /queryLocalFonts\s*\(/g,
@@ -290,6 +322,7 @@ export default {
290
322
  featureDetection: `(async () => 'queryLocalFonts' in self)()`,
291
323
  documentation: 'https://developer.chrome.com/articles/local-fonts/',
292
324
  blinkFeatureID: 4211,
325
+ chromeStatusID: 6234451761692672,
293
326
  },
294
327
  'Magnetometer': {
295
328
  regEx: /new\s+Magnetometer\s*\(/g,
@@ -298,6 +331,7 @@ export default {
298
331
  featureDetection: `(async () => 'Magnetometer' in self)()`,
299
332
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
300
333
  blinkFeatureID: 1907,
334
+ chromeStatusID: 5698781827825664,
301
335
  },
302
336
  'Media Capabilities': {
303
337
  regEx: /navigator\.mediaCapabilities\.decodingInfo\s*\(/g,
@@ -307,6 +341,7 @@ export default {
307
341
  documentation:
308
342
  'https://developer.mozilla.org/en-US/docs/Web/API/Media_Capabilities_API',
309
343
  blinkFeatureID: 2239,
344
+ chromeStatusID: 5869632707624960,
310
345
  },
311
346
  'Media Session': {
312
347
  regEx:
@@ -317,6 +352,7 @@ export default {
317
352
  documentation:
318
353
  'https://developer.mozilla.org/en-US/docs/Web/API/Media_Session_API',
319
354
  blinkFeatureID: 1792,
355
+ chromeStatusID: 5639924124483584,
320
356
  },
321
357
  'Window Management': {
322
358
  regEx: /getScreenDetails\s*\(\)/g,
@@ -325,6 +361,7 @@ export default {
325
361
  featureDetection: `(async () => 'getScreenDetails' in self)()`,
326
362
  documentation: 'https://developer.chrome.com/articles/window-management/',
327
363
  blinkFeatureID: 3388,
364
+ chromeStatusID: 5252960583942144,
328
365
  },
329
366
  'Navigation Preload': {
330
367
  regEx: /\.navigationPreload\.enable\s*\(\)/g,
@@ -337,14 +374,17 @@ export default {
337
374
  documentation:
338
375
  'https://developer.mozilla.org/en-US/docs/Web/API/NavigationPreloadManager',
339
376
  blinkFeatureID: 1803,
377
+ chromeStatusID: 5734842339688448,
340
378
  },
341
379
  'Origin Private File System': {
342
380
  regEx: /navigator\.storage\.getDirectory\s*\(\)/g,
343
381
  where: 'JavaScript',
344
- supported: (async () => 'getDirectory' in StorageManager.prototype)(),
345
- featureDetection: `(async () => 'getDirectory' in StorageManager.prototype)()`,
382
+ supported: (async () =>
383
+ 'StorageManager' in self && 'getDirectory' in StorageManager.prototype)(),
384
+ featureDetection: `(async () => 'StorageManager' in self && 'getDirectory' in StorageManager.prototype)()`,
346
385
  documentation: 'https://web.dev/origin-private-file-system/',
347
386
  blinkFeatureID: 3428,
387
+ chromeStatusID: 5702777582911488,
348
388
  },
349
389
  'Payment Handler': {
350
390
  regEx: /\.paymentManager\.instruments\.set\s*\(/g,
@@ -353,6 +393,7 @@ export default {
353
393
  featureDetection: `(async () => 'PaymentInstruments' in self)()`,
354
394
  documentation: 'https://web.dev/registering-a-web-based-payment-app/',
355
395
  blinkFeatureID: 2397,
396
+ chromeStatusID: 5160285237149696,
356
397
  },
357
398
  'Payment Request': {
358
399
  regEx: /new\s+PaymentRequest\s*\(/g,
@@ -362,6 +403,7 @@ export default {
362
403
  documentation:
363
404
  'https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API',
364
405
  blinkFeatureID: 2894,
406
+ chromeStatusID: 5639348045217792,
365
407
  },
366
408
  'Periodic Background Sync': {
367
409
  regEx: /periodicSync\.register\s*\(/g,
@@ -371,6 +413,7 @@ export default {
371
413
  documentation:
372
414
  'https://developer.chrome.com/articles/periodic-background-sync/',
373
415
  blinkFeatureID: 2931,
416
+ chromeStatusID: 5689383275462656,
374
417
  },
375
418
  'Persistent Storage': {
376
419
  regEx: /navigator\.storage\.persist\s*\(\)/g,
@@ -381,6 +424,7 @@ export default {
381
424
  documentation:
382
425
  'https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/persist',
383
426
  blinkFeatureID: 1369,
427
+ chromeStatusID: 5715811364765696,
384
428
  },
385
429
  'Storage Buckets': {
386
430
  regEx: /navigator\.storageBuckets\.open\s*\(/g,
@@ -389,6 +433,7 @@ export default {
389
433
  featureDetection: `(async () => 'storageBuckets' in navigator)()`,
390
434
  documentation: 'https://developer.chrome.com/blog/storage-buckets/',
391
435
  blinkFeatureID: 4378,
436
+ chromeStatusID: 5739224579964928,
392
437
  },
393
438
  'Pointer Lock (unadjustedMovement)': {
394
439
  regEx: /unadjustedMovement\s*\:\s*/g,
@@ -408,6 +453,7 @@ export default {
408
453
  featureDetection: `(async () => 'HTMLParagraphElement' in self ? await (async () => { try { return !!await document.createElement("p").requestPointerLock({ unadjustedMovement: true }) } catch { return 'requestPointerLock' in HTMLParagraphElement.prototype } })() : undefined)()`,
409
454
  documentation: 'https://web.dev/disable-mouse-acceleration/',
410
455
  blinkFeatureID: 3027,
456
+ chromeStatusID: 5723553087356928,
411
457
  },
412
458
  'Protocol Handlers': {
413
459
  regEx: /"protocol_handlers"/g,
@@ -417,6 +463,7 @@ export default {
417
463
  documentation:
418
464
  'https://developer.chrome.com/articles/url-protocol-handler/',
419
465
  blinkFeatureID: 3884,
466
+ chromeStatusID: 5151703944921088,
420
467
  },
421
468
  'Push': {
422
469
  regEx: /\.pushManager\.subscribe\s*\(/g,
@@ -428,6 +475,7 @@ export default {
428
475
  featureDetection: `(async () => 'serviceWorker' in navigator && 'pushManager' in (await navigator.serviceWorker?.ready || self.registration))()`,
429
476
  documentation: 'https://developer.mozilla.org/en-US/docs/Web/API/Push_API',
430
477
  blinkFeatureID: 769,
478
+ chromeStatusID: 5416033485586432,
431
479
  },
432
480
  'Relative Orientation Sensor': {
433
481
  regEx: /new\s+RelativeOrientationSensor\s*\(/g,
@@ -436,6 +484,7 @@ export default {
436
484
  featureDetection: `(async () => 'RelativeOrientationSensor' in self)()`,
437
485
  documentation: 'https://developer.chrome.com/articles/generic-sensor/',
438
486
  blinkFeatureID: 2019,
487
+ chromeStatusID: 5698781827825664,
439
488
  },
440
489
  'Screen Wake Lock': {
441
490
  regEx: /navigator\.wakeLock\.request\s*\(/g,
@@ -444,6 +493,7 @@ export default {
444
493
  featureDetection: `(async () => 'wakeLock' in navigator)()`,
445
494
  documentation: 'https://developer.chrome.com/articles/wake-lock/',
446
495
  blinkFeatureID: 3005,
496
+ chromeStatusID: 4636879949398016,
447
497
  },
448
498
  'Service Worker': {
449
499
  regEx: /navigator\.serviceWorker\.register\s*\(/g,
@@ -453,6 +503,7 @@ export default {
453
503
  documentation:
454
504
  'https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API',
455
505
  blinkFeatureID: 990,
506
+ chromeStatusID: 6561526227927040,
456
507
  },
457
508
  'Shape Detection (Barcodes)': {
458
509
  regEx: /new\s+BarcodeDetector\s*\(/g,
@@ -461,6 +512,7 @@ export default {
461
512
  featureDetection: `(async () => 'BarcodeDetector' in self)()`,
462
513
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
463
514
  blinkFeatureID: 3711,
515
+ chromeStatusID: 4757990523535360,
464
516
  },
465
517
  'Shape Detection (Faces)': {
466
518
  regEx: /new\s+FaceDetector\s*\(/g,
@@ -469,6 +521,7 @@ export default {
469
521
  featureDetection: `(async () => 'FaceDetector' in self)()`,
470
522
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
471
523
  blinkFeatureID: 3712,
524
+ chromeStatusID: 5678216012365824,
472
525
  },
473
526
  'Shape Detection (Texts)': {
474
527
  regEx: /new\s+TextDetector\s*\(/g,
@@ -477,6 +530,7 @@ export default {
477
530
  featureDetection: `(async () => 'TextDetector' in self)()`,
478
531
  documentation: 'https://developer.chrome.com/articles/shape-detection/',
479
532
  blinkFeatureID: 3713,
533
+ chromeStatusID: 5644087665360896,
480
534
  },
481
535
  'Shortcuts': {
482
536
  regEx: /"shortcuts"/g,
@@ -485,6 +539,7 @@ export default {
485
539
  featureDetection: `(async () => undefined)()`,
486
540
  documentation: 'https://web.dev/app-shortcuts/',
487
541
  blinkFeatureID: undefined,
542
+ chromeStatusID: 5706099464339456,
488
543
  },
489
544
  'Storage Estimation': {
490
545
  regEx: /navigator\.storage\.estimate\s*\(\)/g,
@@ -495,6 +550,7 @@ export default {
495
550
  documentation:
496
551
  'https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/estimate',
497
552
  blinkFeatureID: 1371,
553
+ chromeStatusID: 5630353511284736,
498
554
  },
499
555
  'Tabbed Application Mode': {
500
556
  regEx: /"tabbed"/g,
@@ -503,6 +559,7 @@ export default {
503
559
  featureDetection: `(async () => undefined)()`,
504
560
  documentation: 'https://web.dev/tabbed-application-mode/',
505
561
  blinkFeatureID: undefined,
562
+ chromeStatusID: 5128143454076928,
506
563
  },
507
564
  'VirtualKeyboard': {
508
565
  regEx: /navigator\.virtualKeyboard/g,
@@ -512,6 +569,7 @@ export default {
512
569
  documentation:
513
570
  'https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/VirtualKeyboardAPI/explainer.md',
514
571
  blinkFeatureID: undefined,
572
+ chromeStatusID: 5717448231747584,
515
573
  },
516
574
  'Web App Link Handling': {
517
575
  regEx: /"handle_links"/g,
@@ -521,6 +579,7 @@ export default {
521
579
  documentation:
522
580
  'https://github.com/WICG/pwa-url-handler/blob/main/handle_links/explainer.md',
523
581
  blinkFeatureID: undefined,
582
+ chromeStatusID: 5740751225880576,
524
583
  },
525
584
  'Web Audio': {
526
585
  regEx: /new\s+AudioContext\s*\(/g,
@@ -530,6 +589,7 @@ export default {
530
589
  documentation:
531
590
  'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
532
591
  blinkFeatureID: 1698,
592
+ chromeStatusID: 6261718720184320,
533
593
  },
534
594
  'Web Share': {
535
595
  regEx: /navigator\.share\s*\(/g,
@@ -538,6 +598,7 @@ export default {
538
598
  featureDetection: `(async () => 'share' in navigator)()`,
539
599
  documentation: 'https://web.dev/web-share/',
540
600
  blinkFeatureID: 1501,
601
+ chromeStatusID: 5668769141620736,
541
602
  },
542
603
  'Web Share (Files)': {
543
604
  regEx: /navigator\.canShare\s*\(/g,
@@ -546,6 +607,7 @@ export default {
546
607
  featureDetection: `(async () => 'canShare' in navigator)()`,
547
608
  documentation: 'https://web.dev/web-share/',
548
609
  blinkFeatureID: 2737,
610
+ chromeStatusID: 4777349178458112,
549
611
  },
550
612
  'Web Share Target': {
551
613
  regEx: /"share_target"/g,
@@ -554,6 +616,7 @@ export default {
554
616
  featureDetection: `(async () => undefined)()`,
555
617
  documentation: 'https://developer.chrome.com/articles/web-share-target/',
556
618
  blinkFeatureID: undefined,
619
+ chromeStatusID: 5662315307335680,
557
620
  },
558
621
  'Web Share Target (Files)': {
559
622
  regEx: /"enctype"\s*\:\s*"multipart\/form\-data"/g,
@@ -562,6 +625,7 @@ export default {
562
625
  featureDetection: `(async () => undefined)()`,
563
626
  documentation: 'https://developer.chrome.com/articles/web-share-target/',
564
627
  blinkFeatureID: undefined,
628
+ chromeStatusID: 6124071381106688,
565
629
  },
566
630
  'Web Bluetooth': {
567
631
  regEx: /navigator\.bluetooth\.requestDevice\s*\(/g,
@@ -570,6 +634,7 @@ export default {
570
634
  featureDetection: `(async () => 'bluetooth' in navigator)()`,
571
635
  documentation: 'https://developer.chrome.com/articles/bluetooth/',
572
636
  blinkFeatureID: 1670,
637
+ chromeStatusID: 5264933985976320,
573
638
  },
574
639
  'WebCodecs': {
575
640
  regEx: /new\s+MediaStreamTrackProcessor\s*\(/g,
@@ -578,6 +643,7 @@ export default {
578
643
  featureDetection: `(async () => 'MediaStreamTrackProcessor' in self)()`,
579
644
  documentation: 'https://developer.chrome.com/articles/webcodecs/',
580
645
  blinkFeatureID: 3728,
646
+ chromeStatusID: 5669293909868544,
581
647
  },
582
648
  'WebGPU': {
583
649
  regEx: /navigator\.gpu\.requestAdapter\s*\(/g,
@@ -586,6 +652,7 @@ export default {
586
652
  featureDetection: `(async () => 'gpu' in navigator)()`,
587
653
  documentation: 'https://developer.chrome.com/docs/web-platform/webgpu/',
588
654
  blinkFeatureID: 3888,
655
+ chromeStatusID: 6213121689518080,
589
656
  },
590
657
  'WebHID': {
591
658
  regEx: /navigator\.hid\.requestDevice\s*\(/g,
@@ -594,6 +661,7 @@ export default {
594
661
  featureDetection: `(async () => 'hid' in navigator)()`,
595
662
  documentation: 'https://developer.chrome.com/articles/hid/',
596
663
  blinkFeatureID: 2866,
664
+ chromeStatusID: 5172464636133376,
597
665
  },
598
666
  'Web MIDI': {
599
667
  regEx: /navigator\.requestMIDIAccess\s*\(/g,
@@ -603,6 +671,7 @@ export default {
603
671
  documentation:
604
672
  'https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API',
605
673
  blinkFeatureID: 2029,
674
+ chromeStatusID: 4923613069180928,
606
675
  },
607
676
  'Web NFC': {
608
677
  regEx: /new\s+NDEFReader\s*\(/g,
@@ -611,6 +680,7 @@ export default {
611
680
  featureDetection: `(async () => 'NDEFReader' in self)()`,
612
681
  documentation: 'https://developer.chrome.com/articles/nfc/',
613
682
  blinkFeatureID: 3094,
683
+ chromeStatusID: 6261030015467520,
614
684
  },
615
685
  'WebOTP': {
616
686
  regEx: /transport\s*\:\s*\[["']sms["']\]/g,
@@ -619,6 +689,7 @@ export default {
619
689
  featureDetection: `(async () => 'OTPCredential' in self)()`,
620
690
  documentation: 'https://developer.chrome.com/articles/web-otp/',
621
691
  blinkFeatureID: 2880,
692
+ chromeStatusID: 5873577578463232,
622
693
  },
623
694
  'Web Serial': {
624
695
  regEx: /navigator\.serial\.requestPort\s*\(/g,
@@ -627,6 +698,7 @@ export default {
627
698
  featureDetection: `(async () => 'serial' in navigator)()`,
628
699
  documentation: 'https://developer.chrome.com/articles/serial/',
629
700
  blinkFeatureID: 2546,
701
+ chromeStatusID: 6577673212002304,
630
702
  },
631
703
  'WebSocketStream': {
632
704
  regEx: /new\s+WebSocketStream\s*\(/g,
@@ -635,6 +707,7 @@ export default {
635
707
  featureDetection: `(async () => 'WebSocketStream' in self)()`,
636
708
  documentation: 'https://developer.chrome.com/articles/websocketstream/',
637
709
  blinkFeatureID: 3018,
710
+ chromeStatusID: 5189728691290112,
638
711
  },
639
712
  'WebTransport': {
640
713
  regEx: /new\s+WebTransport\s*\(/g,
@@ -643,6 +716,7 @@ export default {
643
716
  featureDetection: `(async () => 'WebTransport' in self)()`,
644
717
  documentation: 'https://developer.chrome.com/articles/webtransport/',
645
718
  blinkFeatureID: 3472,
719
+ chromeStatusID: 4854144902889472,
646
720
  },
647
721
  'WebUSB': {
648
722
  regEx: /navigator\.usb\.requestDevice\s*\(/g,
@@ -651,6 +725,7 @@ export default {
651
725
  featureDetection: `(async () => 'usb' in navigator)()`,
652
726
  documentation: 'https://developer.chrome.com/articles/usb/',
653
727
  blinkFeatureID: 1520,
728
+ chromeStatusID: 5651917954875392,
654
729
  },
655
730
  'Window Controls Overlay': {
656
731
  regEx: /"window\-controls\-overlay"/g,
@@ -659,5 +734,6 @@ export default {
659
734
  featureDetection: `(async () => 'windowControlsOverlay' in navigator)()`,
660
735
  documentation: 'https://web.dev/window-controls-overlay/',
661
736
  blinkFeatureID: 3902,
737
+ chromeStatusID: 5741247866077184,
662
738
  },
663
739
  };