@office-iss/react-native-win32 0.0.0-canary.299 → 0.0.0-canary.300

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 (99) hide show
  1. package/.flowconfig +3 -6
  2. package/CHANGELOG.json +46 -1
  3. package/CHANGELOG.md +19 -6
  4. package/IntegrationTests/IntegrationTestsApp.js +1 -1
  5. package/Libraries/Alert/RCTAlertManager.android.js +2 -0
  6. package/Libraries/Animated/Animated.d.ts +2 -0
  7. package/Libraries/Animated/AnimatedImplementation.js +2 -0
  8. package/Libraries/Animated/Easing.js +2 -0
  9. package/Libraries/Animated/animations/Animation.js +14 -14
  10. package/Libraries/Animated/animations/TimingAnimation.js +2 -0
  11. package/Libraries/Animated/nodes/AnimatedNode.js +7 -7
  12. package/Libraries/Animated/nodes/AnimatedObject.js +7 -7
  13. package/Libraries/Animated/nodes/AnimatedProps.js +30 -30
  14. package/Libraries/Animated/nodes/AnimatedStyle.js +17 -17
  15. package/Libraries/Animated/nodes/AnimatedTransform.js +5 -5
  16. package/Libraries/Animated/nodes/AnimatedValue.js +18 -18
  17. package/Libraries/AppState/AppState.js +3 -3
  18. package/Libraries/BatchedBridge/MessageQueue.js +4 -0
  19. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.js +1 -1
  20. package/Libraries/Components/AccessibilityInfo/AccessibilityInfo.win32.js +1 -1
  21. package/Libraries/Components/Pressable/Pressable.js +10 -1
  22. package/Libraries/Components/Pressable/Pressable.win32.js +9 -0
  23. package/Libraries/Components/StatusBar/StatusBar.js +2 -2
  24. package/Libraries/Components/Switch/Switch.js +1 -1
  25. package/Libraries/Components/TextInput/TextInput.js +2 -2
  26. package/Libraries/Components/TextInput/TextInput.win32.js +2 -1
  27. package/Libraries/Components/Touchable/TouchableBounce.js +1 -1
  28. package/Libraries/Components/Touchable/TouchableHighlight.js +1 -1
  29. package/Libraries/Components/Touchable/TouchableNativeFeedback.js +1 -1
  30. package/Libraries/Components/Touchable/TouchableOpacity.js +1 -1
  31. package/Libraries/Components/Touchable/TouchableWithoutFeedback.js +2 -2
  32. package/Libraries/Components/View/View.js +86 -168
  33. package/Libraries/Core/ReactNativeVersion.js +37 -10
  34. package/Libraries/Core/Timers/queueMicrotask.js +1 -0
  35. package/Libraries/Core/setUpPerformance.js +2 -1
  36. package/Libraries/Interaction/InteractionManager.js +118 -171
  37. package/Libraries/LayoutAnimation/LayoutAnimation.js +2 -0
  38. package/Libraries/LogBox/Data/LogBoxData.js +4 -1
  39. package/Libraries/Modal/Modal.js +1 -1
  40. package/Libraries/NativeComponent/ViewConfig.js +1 -1
  41. package/Libraries/Network/XMLHttpRequest.js +18 -5
  42. package/Libraries/Pressability/Pressability.js +1 -1
  43. package/Libraries/Pressability/Pressability.win32.js +1 -1
  44. package/Libraries/ReactNative/AppRegistryImpl.js +4 -2
  45. package/Libraries/Renderer/implementations/ReactFabric-dev.js +38 -35
  46. package/Libraries/Renderer/implementations/ReactFabric-prod.js +51 -22
  47. package/Libraries/Renderer/implementations/ReactFabric-profiling.js +54 -24
  48. package/Libraries/Renderer/implementations/ReactNativeRenderer-dev.js +36 -33
  49. package/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js +5 -5
  50. package/Libraries/Renderer/implementations/ReactNativeRenderer-profiling.js +5 -5
  51. package/Libraries/Renderer/shims/ReactFabric.js +3 -1
  52. package/Libraries/Renderer/shims/ReactFeatureFlags.js +3 -1
  53. package/Libraries/Renderer/shims/ReactNative.js +3 -1
  54. package/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js +3 -1
  55. package/Libraries/Renderer/shims/createReactNativeComponentClass.js +3 -1
  56. package/Libraries/Utilities/useMergeRefs.js +1 -1
  57. package/Libraries/promiseRejectionTrackingOptions.js +17 -31
  58. package/flow/HermesInternalType.js +114 -0
  59. package/flow/Stringish.js +14 -0
  60. package/flow/bom.js.flow +554 -0
  61. package/flow/console.js +49 -0
  62. package/flow/cssom.js.flow +575 -0
  63. package/flow/dom.js.flow +6289 -0
  64. package/flow/global.js +88 -0
  65. package/flow/prettier.js.flow +14 -0
  66. package/flow/streams.js.flow +140 -0
  67. package/index.js +5 -2
  68. package/index.win32.js +6 -2
  69. package/jest/mockComponent.js +1 -1
  70. package/jest/setup.js +11 -0
  71. package/overrides.json +11 -11
  72. package/package.json +19 -19
  73. package/src/private/animated/NativeAnimatedHelper.js +8 -1
  74. package/src/private/animated/NativeAnimatedHelper.win32.js +8 -1
  75. package/src/private/animated/createAnimatedPropsHook.js +2 -49
  76. package/src/private/animated/createAnimatedPropsMemoHook.js +2 -48
  77. package/src/private/components/virtualview/VirtualView.js +22 -6
  78. package/src/private/components/virtualview/VirtualViewExperimentalNativeComponent.js +93 -0
  79. package/src/private/devsupport/devmenu/elementinspector/ReactDevToolsOverlay.js +2 -2
  80. package/src/private/featureflags/ReactNativeFeatureFlags.js +71 -51
  81. package/src/private/featureflags/ReactNativeFeatureFlagsBase.js +19 -0
  82. package/src/private/featureflags/specs/NativeReactNativeFeatureFlags.js +15 -5
  83. package/src/private/webapis/dom/nodes/ReadOnlyElement.js +1 -1
  84. package/src/private/webapis/dom/oldstylecollections/HTMLCollection.js +2 -2
  85. package/src/private/webapis/dom/oldstylecollections/NodeList.js +2 -2
  86. package/src/private/webapis/geometry/DOMRectList.js +2 -2
  87. package/src/private/webapis/intersectionobserver/internals/IntersectionObserverManager.js +19 -74
  88. package/src/private/webapis/intersectionobserver/specs/NativeIntersectionObserver.js +0 -4
  89. package/src/private/webapis/performance/EventTiming.js +5 -9
  90. package/src/private/webapis/performance/Performance.js +251 -191
  91. package/src/private/webapis/performance/PerformanceObserver.js +8 -29
  92. package/src/private/webapis/performance/UserTiming.js +24 -23
  93. package/src/private/webapis/performance/UserTimingExtensibility.js.flow +38 -0
  94. package/src/private/webapis/performance/internals/Utilities.js +9 -0
  95. package/src/private/webapis/performance/specs/NativePerformance.js +19 -33
  96. package/src/private/webapis/structuredClone/structuredClone.js +1 -1
  97. package/Libraries/Interaction/InteractionManagerStub.js +0 -184
  98. package/Libraries/Interaction/TaskQueue.js +0 -197
  99. package/Libraries/ReactNative/ReactNativeFeatureFlags.js +0 -31
@@ -0,0 +1,554 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict-local
8
+ * @format
9
+ */
10
+
11
+ /* BOM */
12
+
13
+ declare var window: typeof globalThis;
14
+
15
+ type DevToolsColor =
16
+ | 'primary'
17
+ | 'primary-light'
18
+ | 'primary-dark'
19
+ | 'secondary'
20
+ | 'secondary-light'
21
+ | 'secondary-dark'
22
+ | 'tertiary'
23
+ | 'tertiary-light'
24
+ | 'tertiary-dark'
25
+ | 'warning'
26
+ | 'error';
27
+
28
+ // $FlowExpectedError[libdef-override] Flow core definitions are incomplete.
29
+ declare var console: {
30
+ // Logging
31
+ log(...data: $ReadOnlyArray<mixed>): void,
32
+ trace(...data: $ReadOnlyArray<mixed>): void,
33
+ debug(...data: $ReadOnlyArray<mixed>): void,
34
+ info(...data: $ReadOnlyArray<mixed>): void,
35
+ warn(...data: $ReadOnlyArray<mixed>): void,
36
+ error(...data: $ReadOnlyArray<mixed>): void,
37
+
38
+ // Grouping
39
+ group(...data: $ReadOnlyArray<mixed>): void,
40
+ groupCollapsed(...data: $ReadOnlyArray<mixed>): void,
41
+ groupEnd(): void,
42
+
43
+ // Printing
44
+ table(
45
+ tabularData:
46
+ | $ReadOnly<{[key: string]: mixed, ...}>
47
+ | $ReadOnlyArray<$ReadOnly<{[key: string]: mixed, ...}>>
48
+ | $ReadOnlyArray<$ReadOnlyArray<mixed>>,
49
+ ): void,
50
+ dir(...data: $ReadOnlyArray<mixed>): void,
51
+ dirxml(...data: $ReadOnlyArray<mixed>): void,
52
+ clear(): void,
53
+
54
+ // Utilities
55
+ assert(condition: mixed, ...data: $ReadOnlyArray<mixed>): void,
56
+
57
+ // Profiling
58
+ profile(name?: string): void,
59
+ profileEnd(name?: string): void,
60
+
61
+ // Counts
62
+ count(label?: string): void,
63
+ countReset(label?: string): void,
64
+
65
+ // Timing / tracing
66
+ time(label?: string): void,
67
+ timeEnd(label?: string): void,
68
+ timeStamp(
69
+ label?: string,
70
+ start?: string | number,
71
+ end?: string | number,
72
+ trackName?: string,
73
+ trackGroup?: string,
74
+ color?: DevToolsColor,
75
+ ): void,
76
+
77
+ ...
78
+ };
79
+
80
+ declare class Navigator {
81
+ product: 'ReactNative';
82
+ appName?: ?string;
83
+ }
84
+
85
+ declare var navigator: Navigator;
86
+
87
+ // https://www.w3.org/TR/hr-time-2/#dom-domhighrestimestamp
88
+ // https://developer.mozilla.org/en-US/docs/Web/API/DOMHighResTimeStamp
89
+ declare type DOMHighResTimeStamp = number;
90
+
91
+ declare class Performance {
92
+ now: () => DOMHighResTimeStamp;
93
+ }
94
+
95
+ declare var performance: Performance;
96
+
97
+ type FormDataEntryValue = string | File;
98
+
99
+ declare class FormData {
100
+ append(name: string, value: string): void;
101
+
102
+ append(name: string, value: Blob, filename?: string): void;
103
+ append(name: string, value: File, filename?: string): void;
104
+ constructor(form?: HTMLFormElement, submitter?: HTMLElement | null): void;
105
+
106
+ delete(name: string): void;
107
+ entries(): Iterator<[string, FormDataEntryValue]>;
108
+ get(name: string): ?FormDataEntryValue;
109
+
110
+ getAll(name: string): Array<FormDataEntryValue>;
111
+ has(name: string): boolean;
112
+ keys(): Iterator<string>;
113
+
114
+ set(name: string, value: string): void;
115
+
116
+ set(name: string, value: Blob, filename?: string): void;
117
+ set(name: string, value: File, filename?: string): void;
118
+ values(): Iterator<FormDataEntryValue>;
119
+ }
120
+
121
+ declare class DOMRectReadOnly {
122
+ +bottom: number;
123
+ constructor(x: number, y: number, width: number, height: number): void;
124
+ static fromRect(rectangle?: {
125
+ height: number,
126
+ width: number,
127
+ x: number,
128
+ y: number,
129
+ ...
130
+ }): DOMRectReadOnly;
131
+ +height: number;
132
+ +left: number;
133
+ +right: number;
134
+ +top: number;
135
+ +width: number;
136
+ +x: number;
137
+ +y: number;
138
+ }
139
+
140
+ declare class DOMRect extends DOMRectReadOnly {
141
+ bottom: number;
142
+ static fromRect(rectangle?: {
143
+ height: number,
144
+ width: number,
145
+ x: number,
146
+ y: number,
147
+ ...
148
+ }): DOMRect;
149
+ height: number;
150
+ left: number;
151
+ right: number;
152
+ top: number;
153
+ width: number;
154
+ x: number;
155
+ y: number;
156
+ }
157
+
158
+ declare class DOMRectList {
159
+ @@iterator(): Iterator<DOMRect>;
160
+ item(index: number): DOMRect;
161
+ length: number;
162
+ [index: number]: DOMRect;
163
+ }
164
+
165
+ declare class CloseEvent extends Event {
166
+ code: number;
167
+ reason: string;
168
+ wasClean: boolean;
169
+ }
170
+
171
+ declare class WebSocket extends EventTarget {
172
+ binaryType: 'blob' | 'arraybuffer';
173
+ bufferedAmount: number;
174
+ close(code?: number, reason?: string): void;
175
+ static CLOSED: 3;
176
+ CLOSED: 3;
177
+ static CLOSING: 2;
178
+ CLOSING: 2;
179
+ static CONNECTING: 0;
180
+ CONNECTING: 0;
181
+ constructor(url: string, protocols?: string | Array<string>): void;
182
+ extensions: string;
183
+ onclose: (ev: CloseEvent) => mixed;
184
+ onerror: (ev: $FlowFixMe) => mixed;
185
+ onmessage: (ev: MessageEvent) => mixed;
186
+ onopen: (ev: $FlowFixMe) => mixed;
187
+ static OPEN: 1;
188
+ OPEN: 1;
189
+ protocol: string;
190
+ readyState: number;
191
+ send(data: string): void;
192
+ send(data: Blob): void;
193
+ send(data: ArrayBuffer): void;
194
+ send(data: $ArrayBufferView): void;
195
+ url: string;
196
+ }
197
+
198
+ declare class XMLHttpRequest extends EventTarget {
199
+ abort(): void;
200
+ static DONE: number;
201
+ DONE: number;
202
+ getAllResponseHeaders(): string;
203
+ getResponseHeader(header: string): string;
204
+ static HEADERS_RECEIVED: number;
205
+ HEADERS_RECEIVED: number;
206
+ static LOADING: number;
207
+ LOADING: number;
208
+ msCaching: string;
209
+ msCachingEnabled(): boolean;
210
+ onabort: ProgressEventHandler;
211
+ onerror: ProgressEventHandler;
212
+ onload: ProgressEventHandler;
213
+ onloadend: ProgressEventHandler;
214
+ onloadstart: ProgressEventHandler;
215
+ onprogress: ProgressEventHandler;
216
+ onreadystatechange: (ev: $FlowFixMe) => mixed;
217
+ ontimeout: ProgressEventHandler;
218
+ open(
219
+ method: string,
220
+ url: string,
221
+ async?: boolean,
222
+ user?: string,
223
+ password?: string,
224
+ ): void;
225
+ static OPENED: number;
226
+ OPENED: number;
227
+ overrideMimeType(mime: string): void;
228
+ readyState: number;
229
+ response: $FlowFixMe;
230
+ responseBody: $FlowFixMe;
231
+ responseText: string;
232
+ responseType: string;
233
+ responseURL: string;
234
+ responseXML: $FlowFixMe;
235
+ send(data?: $FlowFixMe): void;
236
+ setRequestHeader(header: string, value: string): void;
237
+ statics: {create(): XMLHttpRequest, ...};
238
+ status: number;
239
+ statusText: string;
240
+ timeout: number;
241
+ static UNSENT: number;
242
+ UNSENT: number;
243
+ upload: XMLHttpRequestEventTarget;
244
+
245
+ withCredentials: boolean;
246
+ }
247
+
248
+ declare class XMLHttpRequestEventTarget extends EventTarget {
249
+ onabort: ProgressEventHandler;
250
+ onerror: ProgressEventHandler;
251
+ onload: ProgressEventHandler;
252
+ onloadend: ProgressEventHandler;
253
+ onloadstart: ProgressEventHandler;
254
+ onprogress: ProgressEventHandler;
255
+ ontimeout: ProgressEventHandler;
256
+ }
257
+
258
+ // this part of spec is not finished yet, apparently
259
+ // https://stackoverflow.com/questions/35296664/can-fetch-get-object-as-headers
260
+ type HeadersInit =
261
+ | Headers
262
+ | Array<[string, string]>
263
+ | {[key: string]: string, ...};
264
+
265
+ // TODO Heades and URLSearchParams are almost the same thing.
266
+ // Could it somehow be abstracted away?
267
+ declare class Headers {
268
+ @@iterator(): Iterator<[string, string]>;
269
+ append(name: string, value: string): void;
270
+ constructor(init?: HeadersInit): void;
271
+ delete(name: string): void;
272
+ entries(): Iterator<[string, string]>;
273
+ forEach<This>(
274
+ callback: (
275
+ this: This,
276
+ value: string,
277
+ name: string,
278
+ headers: Headers,
279
+ ) => mixed,
280
+ thisArg: This,
281
+ ): void;
282
+ get(name: string): null | string;
283
+ has(name: string): boolean;
284
+ keys(): Iterator<string>;
285
+ set(name: string, value: string): void;
286
+ values(): Iterator<string>;
287
+ }
288
+
289
+ declare class URLSearchParams {
290
+ @@iterator(): Iterator<[string, string]>;
291
+
292
+ append(name: string, value: string): void;
293
+
294
+ constructor(
295
+ init?:
296
+ | string
297
+ | URLSearchParams
298
+ | Array<[string, string]>
299
+ | {[string]: string, ...},
300
+ ): void;
301
+ delete(name: string, value?: string): void;
302
+ entries(): Iterator<[string, string]>;
303
+ forEach<This>(
304
+ callback: (
305
+ this: This,
306
+ value: string,
307
+ name: string,
308
+ params: URLSearchParams,
309
+ ) => mixed,
310
+ thisArg: This,
311
+ ): void;
312
+ get(name: string): null | string;
313
+ getAll(name: string): Array<string>;
314
+ has(name: string, value?: string): boolean;
315
+ keys(): Iterator<string>;
316
+ set(name: string, value: string): void;
317
+ size: number;
318
+ sort(): void;
319
+ toString(): string;
320
+ values(): Iterator<string>;
321
+ }
322
+
323
+ type CacheType =
324
+ | 'default'
325
+ | 'no-store'
326
+ | 'reload'
327
+ | 'no-cache'
328
+ | 'force-cache'
329
+ | 'only-if-cached';
330
+ type CredentialsType = 'omit' | 'same-origin' | 'include';
331
+ type ModeType = 'cors' | 'no-cors' | 'same-origin' | 'navigate';
332
+ type RedirectType = 'follow' | 'error' | 'manual';
333
+ type ReferrerPolicyType =
334
+ | ''
335
+ | 'no-referrer'
336
+ | 'no-referrer-when-downgrade'
337
+ | 'same-origin'
338
+ | 'origin'
339
+ | 'strict-origin'
340
+ | 'origin-when-cross-origin'
341
+ | 'strict-origin-when-cross-origin'
342
+ | 'unsafe-url';
343
+
344
+ type ResponseType =
345
+ | 'basic'
346
+ | 'cors'
347
+ | 'default'
348
+ | 'error'
349
+ | 'opaque'
350
+ | 'opaqueredirect';
351
+
352
+ type BodyInit =
353
+ | string
354
+ | URLSearchParams
355
+ | FormData
356
+ | Blob
357
+ | ArrayBuffer
358
+ | $ArrayBufferView
359
+ | ReadableStream;
360
+
361
+ type RequestInfo = Request | URL | string;
362
+
363
+ type RequestOptions = {
364
+ body?: ?BodyInit,
365
+ cache?: CacheType,
366
+ credentials?: CredentialsType,
367
+ headers?: HeadersInit,
368
+ integrity?: string,
369
+ keepalive?: boolean,
370
+ method?: string,
371
+ mode?: ModeType,
372
+ redirect?: RedirectType,
373
+ referrer?: string,
374
+ referrerPolicy?: ReferrerPolicyType,
375
+ signal?: ?AbortSignal,
376
+ window?: $FlowFixMe,
377
+ ...
378
+ };
379
+
380
+ type ResponseOptions = {
381
+ headers?: HeadersInit,
382
+ status?: number,
383
+ statusText?: string,
384
+ ...
385
+ };
386
+
387
+ declare class Response {
388
+ arrayBuffer(): Promise<ArrayBuffer>;
389
+ blob(): Promise<Blob>;
390
+ body: ?ReadableStream;
391
+ // Body methods and attributes
392
+ bodyUsed: boolean;
393
+
394
+ clone(): Response;
395
+ constructor(input?: ?BodyInit, init?: ResponseOptions): void;
396
+ static error(): Response;
397
+ formData(): Promise<FormData>;
398
+ headers: Headers;
399
+ json(): Promise<$FlowFixMe>;
400
+ ok: boolean;
401
+ static redirect(url: string, status?: number): Response;
402
+
403
+ redirected: boolean;
404
+ status: number;
405
+
406
+ statusText: string;
407
+ text(): Promise<string>;
408
+ trailer: Promise<Headers>;
409
+ type: ResponseType;
410
+ url: string;
411
+ }
412
+
413
+ declare class Request {
414
+ arrayBuffer(): Promise<ArrayBuffer>;
415
+ blob(): Promise<Blob>;
416
+
417
+ // Body methods and attributes
418
+ bodyUsed: boolean;
419
+
420
+ cache: CacheType;
421
+ clone(): Request;
422
+ constructor(input: RequestInfo, init?: RequestOptions): void;
423
+ credentials: CredentialsType;
424
+ formData(): Promise<FormData>;
425
+ headers: Headers;
426
+ integrity: string;
427
+ json(): Promise<$FlowFixMe>;
428
+ method: string;
429
+ mode: ModeType;
430
+
431
+ redirect: RedirectType;
432
+
433
+ referrer: string;
434
+ referrerPolicy: ReferrerPolicyType;
435
+ +signal: AbortSignal;
436
+ text(): Promise<string>;
437
+ url: string;
438
+ }
439
+
440
+ declare class AbortController {
441
+ abort(reason?: $FlowFixMe): void;
442
+ constructor(): void;
443
+ +signal: AbortSignal;
444
+ }
445
+
446
+ declare class AbortSignal extends EventTarget {
447
+ abort(reason?: $FlowFixMe): AbortSignal;
448
+ +aborted: boolean;
449
+ onabort: (event: Event) => mixed;
450
+ +reason: $FlowFixMe;
451
+ throwIfAborted(): void;
452
+ timeout(time: number): AbortSignal;
453
+ }
454
+
455
+ declare function fetch(
456
+ input: RequestInfo,
457
+ init?: RequestOptions,
458
+ ): Promise<Response>;
459
+
460
+ declare class Location {
461
+ ancestorOrigins: Array<string>;
462
+ assign(url: string): void;
463
+ hash: string;
464
+ host: string;
465
+ hostname: string;
466
+ href: string;
467
+ origin: string;
468
+ pathname: string;
469
+ port: string;
470
+ protocol: string;
471
+ reload(flag?: boolean): void;
472
+ replace(url: string): void;
473
+ search: string;
474
+ toString(): string;
475
+ }
476
+
477
+ declare class CanvasCaptureMediaStream extends MediaStream {
478
+ canvas: HTMLCanvasElement;
479
+ requestFrame(): void;
480
+ }
481
+
482
+ declare type FileSystemHandleKind = 'file' | 'directory';
483
+
484
+ // https://wicg.github.io/file-system-access/#api-filesystemhandle
485
+ declare class FileSystemHandle {
486
+ +kind: FileSystemHandleKind;
487
+ +name: string;
488
+
489
+ isSameEntry: (other: FileSystemHandle) => Promise<boolean>;
490
+ queryPermission?: (
491
+ descriptor: FileSystemHandlePermissionDescriptor,
492
+ ) => Promise<PermissionStatus>;
493
+ requestPermission?: (
494
+ descriptor: FileSystemHandlePermissionDescriptor,
495
+ ) => Promise<PermissionStatus>;
496
+ }
497
+
498
+ // https://fs.spec.whatwg.org/#api-filesystemfilehandle
499
+ declare class FileSystemFileHandle extends FileSystemHandle {
500
+ +kind: 'file';
501
+
502
+ constructor(name: string): void;
503
+
504
+ getFile(): Promise<File>;
505
+ createSyncAccessHandle(): Promise<FileSystemSyncAccessHandle>;
506
+ createWritable(options?: {|
507
+ keepExistingData?: boolean,
508
+ |}): Promise<FileSystemWritableFileStream>;
509
+ }
510
+
511
+ // https://fs.spec.whatwg.org/#api-filesystemdirectoryhandle
512
+ declare class FileSystemDirectoryHandle extends FileSystemHandle {
513
+ +kind: 'directory';
514
+
515
+ constructor(name: string): void;
516
+
517
+ getDirectoryHandle(
518
+ name: string,
519
+ options?: {|create?: boolean|},
520
+ ): Promise<FileSystemDirectoryHandle>;
521
+ getFileHandle(
522
+ name: string,
523
+ options?: {|create?: boolean|},
524
+ ): Promise<FileSystemFileHandle>;
525
+ removeEntry(name: string, options?: {|recursive?: boolean|}): Promise<void>;
526
+ resolve(possibleDescendant: FileSystemHandle): Promise<Array<string> | null>;
527
+
528
+ // Async iterator functions
529
+ @@asyncIterator(): AsyncIterator<[string, FileSystemHandle]>;
530
+ entries(): AsyncIterator<[string, FileSystemHandle]>;
531
+ keys(): AsyncIterator<string>;
532
+ values(): AsyncIterator<FileSystemHandle>;
533
+ }
534
+
535
+ // https://fs.spec.whatwg.org/#api-filesystemsyncaccesshandle
536
+ declare class FileSystemSyncAccessHandle {
537
+ close(): void;
538
+ flush(): void;
539
+ getSize(): number;
540
+ read(buffer: ArrayBuffer, options?: {|at: number|}): number;
541
+ truncate(newSize: number): void;
542
+ write(buffer: ArrayBuffer, options?: {|at: number|}): number;
543
+ }
544
+
545
+ declare class MediaStream {}
546
+ declare class USBDevice {}
547
+ declare class PermissionStatus {}
548
+ declare class FileSystemWritableFileStream {}
549
+
550
+ type PermissionState = 'granted' | 'denied' | 'prompt';
551
+
552
+ type FileSystemHandlePermissionDescriptor = {|
553
+ mode: 'read' | 'readwrite',
554
+ |};
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ * @format
9
+ */
10
+
11
+ declare module 'console' {
12
+ declare function assert(value: any, ...message: any): void;
13
+ declare function dir(
14
+ obj: Object,
15
+ options: {
16
+ showHidden: boolean,
17
+ depth: number,
18
+ colors: boolean,
19
+ ...
20
+ },
21
+ ): void;
22
+ declare function error(...data: any): void;
23
+ declare function info(...data: any): void;
24
+ declare function log(...data: any): void;
25
+ declare function time(label: any): void;
26
+ declare function timeEnd(label: any): void;
27
+ declare function trace(first: any, ...rest: any): void;
28
+ declare function warn(...data: any): void;
29
+ declare class Console {
30
+ constructor(stdout: stream$Writable, stdin?: stream$Writable): void;
31
+ assert(value: any, ...message: any): void;
32
+ dir(
33
+ obj: Object,
34
+ options: {
35
+ showHidden: boolean,
36
+ depth: number,
37
+ colors: boolean,
38
+ ...
39
+ },
40
+ ): void;
41
+ error(...data: any): void;
42
+ info(...data: any): void;
43
+ log(...data: any): void;
44
+ time(label: any): void;
45
+ timeEnd(label: any): void;
46
+ trace(first: any, ...rest: any): void;
47
+ warn(...data: any): void;
48
+ }
49
+ }