Skip to content

Commit cffc2e3

Browse files
authored
parse spec info for generated libraries (#111)
parse spec info for generated libraries
1 parent d902401 commit cffc2e3

32 files changed

+176
-176
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,6 @@ void main() {
3333

3434
## Web IDL version
3535

36-
<!-- START updated by /tool/update_bindings.dart. Do not modify by hand -->
36+
<!-- START updated by tool/update_bindings.dart. Do not modify by hand -->
3737
Based on [`@webref/idl 3.39.1`](https://www.npmjs.com/package/@webref/idl/v/3.39.1).
38-
<!-- END updated by /tool/update_bindings.dart. Do not modify by hand -->
38+
<!-- END updated by tool/update_bindings.dart. Do not modify by hand -->

lib/src/dom/badging.dart

-5
This file was deleted.

lib/src/dom/beacon.dart

-5
This file was deleted.

lib/src/dom/compat.dart

-5
This file was deleted.

lib/src/dom/csp_embedded_enforcement.dart

-5
This file was deleted.

lib/src/dom/css_images_4.dart

-5
This file was deleted.

lib/src/dom/css_shadow_parts.dart

-5
This file was deleted.

lib/src/dom/device_memory.dart

-5
This file was deleted.

lib/src/dom/html_media_capture.dart

-5
This file was deleted.

lib/src/dom/input_events.dart

-5
This file was deleted.

lib/src/dom/permissions_request.dart

-5
This file was deleted.

lib/src/dom/permissions_revoke.dart

-5
This file was deleted.

lib/src/dom/pointerlock.dart

-5
This file was deleted.

lib/src/dom/prefer_current_tab.dart

-5
This file was deleted.

lib/src/dom/prerendering_revamped.dart

-5
This file was deleted.

lib/src/dom/private_click_measurement.dart

-5
This file was deleted.

lib/src/dom/savedata.dart

-5
This file was deleted.

lib/src/dom/storage_access.dart

-5
This file was deleted.

lib/src/dom/wai_aria.dart

-5
This file was deleted.

lib/src/dom/wasm_web_api.dart

-5
This file was deleted.

lib/src/dom/webdriver.dart

-5
This file was deleted.

lib/src/dom/webrtc_svc.dart

-5
This file was deleted.

lib/src/dom/webxr_gamepads_module.dart

-5
This file was deleted.

lib/web.dart

-22
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@ export 'src/dom/audio_session.dart';
1212
export 'src/dom/autoplay_detection.dart';
1313
export 'src/dom/background_fetch.dart';
1414
export 'src/dom/background_sync.dart';
15-
export 'src/dom/badging.dart';
1615
export 'src/dom/battery_status.dart';
17-
export 'src/dom/beacon.dart';
1816
export 'src/dom/capture_handle_identity.dart';
1917
export 'src/dom/captured_mouse_events.dart';
2018
export 'src/dom/clipboard_apis.dart';
21-
export 'src/dom/compat.dart';
2219
export 'src/dom/compression.dart';
2320
export 'src/dom/compute_pressure.dart';
2421
export 'src/dom/console.dart';
@@ -28,7 +25,6 @@ export 'src/dom/cookie_store.dart';
2825
export 'src/dom/crash_reporting.dart';
2926
export 'src/dom/credential_management.dart';
3027
export 'src/dom/csp.dart';
31-
export 'src/dom/csp_embedded_enforcement.dart';
3228
export 'src/dom/csp_next.dart';
3329
export 'src/dom/css_anchor_position.dart';
3430
export 'src/dom/css_animation_worklet.dart';
@@ -44,7 +40,6 @@ export 'src/dom/css_counter_styles.dart';
4440
export 'src/dom/css_font_loading.dart';
4541
export 'src/dom/css_fonts.dart';
4642
export 'src/dom/css_highlight_api.dart';
47-
export 'src/dom/css_images_4.dart';
4843
export 'src/dom/css_layout_api.dart';
4944
export 'src/dom/css_masking.dart';
5045
export 'src/dom/css_nav.dart';
@@ -53,7 +48,6 @@ export 'src/dom/css_parser_api.dart';
5348
export 'src/dom/css_properties_values_api.dart';
5449
export 'src/dom/css_pseudo.dart';
5550
export 'src/dom/css_regions.dart';
56-
export 'src/dom/css_shadow_parts.dart';
5751
export 'src/dom/css_transitions.dart';
5852
export 'src/dom/css_transitions_2.dart';
5953
export 'src/dom/css_typed_om.dart';
@@ -64,7 +58,6 @@ export 'src/dom/cssom_view.dart';
6458
export 'src/dom/custom_state_pseudo_class.dart';
6559
export 'src/dom/datacue.dart';
6660
export 'src/dom/deprecation_reporting.dart';
67-
export 'src/dom/device_memory.dart';
6861
export 'src/dom/device_posture.dart';
6962
export 'src/dom/digital_goods.dart';
7063
export 'src/dom/document_picture_in_picture.dart';
@@ -111,14 +104,12 @@ export 'src/dom/get_installed_related_apps.dart';
111104
export 'src/dom/gyroscope.dart';
112105
export 'src/dom/hr_time.dart';
113106
export 'src/dom/html.dart';
114-
export 'src/dom/html_media_capture.dart';
115107
export 'src/dom/idle_detection.dart';
116108
export 'src/dom/image_capture.dart';
117109
export 'src/dom/image_resource.dart';
118110
export 'src/dom/indexeddb.dart';
119111
export 'src/dom/ink_enhancement.dart';
120112
export 'src/dom/input_device_capabilities.dart';
121-
export 'src/dom/input_events.dart';
122113
export 'src/dom/intersection_observer.dart';
123114
export 'src/dom/intervention_reporting.dart';
124115
export 'src/dom/is_input_pending.dart';
@@ -171,16 +162,10 @@ export 'src/dom/performance_timeline.dart';
171162
export 'src/dom/periodic_background_sync.dart';
172163
export 'src/dom/permissions.dart';
173164
export 'src/dom/permissions_policy.dart';
174-
export 'src/dom/permissions_request.dart';
175-
export 'src/dom/permissions_revoke.dart';
176165
export 'src/dom/picture_in_picture.dart';
177166
export 'src/dom/pointerevents.dart';
178-
export 'src/dom/pointerlock.dart';
179167
export 'src/dom/portals.dart';
180-
export 'src/dom/prefer_current_tab.dart';
181-
export 'src/dom/prerendering_revamped.dart';
182168
export 'src/dom/presentation_api.dart';
183-
export 'src/dom/private_click_measurement.dart';
184169
export 'src/dom/private_network_access.dart';
185170
export 'src/dom/proximity.dart';
186171
export 'src/dom/push_api.dart';
@@ -194,7 +179,6 @@ export 'src/dom/requeststorageaccessfor.dart';
194179
export 'src/dom/resize_observer.dart';
195180
export 'src/dom/resource_timing.dart';
196181
export 'src/dom/sanitizer_api.dart';
197-
export 'src/dom/savedata.dart';
198182
export 'src/dom/scheduling_apis.dart';
199183
export 'src/dom/screen_capture.dart';
200184
export 'src/dom/screen_orientation.dart';
@@ -210,7 +194,6 @@ export 'src/dom/shape_detection_api.dart';
210194
export 'src/dom/shared_storage.dart';
211195
export 'src/dom/speech_api.dart';
212196
export 'src/dom/storage.dart';
213-
export 'src/dom/storage_access.dart';
214197
export 'src/dom/storage_buckets.dart';
215198
export 'src/dom/streams.dart';
216199
export 'src/dom/svg.dart';
@@ -229,9 +212,7 @@ export 'src/dom/user_timing.dart';
229212
export 'src/dom/vibration.dart';
230213
export 'src/dom/video_rvfc.dart';
231214
export 'src/dom/virtual_keyboard.dart';
232-
export 'src/dom/wai_aria.dart';
233215
export 'src/dom/wasm_js_api.dart';
234-
export 'src/dom/wasm_web_api.dart';
235216
export 'src/dom/web_animations.dart';
236217
export 'src/dom/web_animations_2.dart';
237218
export 'src/dom/web_app_launch.dart';
@@ -252,7 +233,6 @@ export 'src/dom/webcodecs_opus_codec_registration.dart';
252233
export 'src/dom/webcodecs_vp9_codec_registration.dart';
253234
export 'src/dom/webcrypto_secure_curves.dart';
254235
export 'src/dom/webcryptoapi.dart';
255-
export 'src/dom/webdriver.dart';
256236
export 'src/dom/webgl1.dart';
257237
export 'src/dom/webgl2.dart';
258238
export 'src/dom/webgl_blend_equation_advanced_coherent.dart';
@@ -284,7 +264,6 @@ export 'src/dom/webrtc_ice.dart';
284264
export 'src/dom/webrtc_identity.dart';
285265
export 'src/dom/webrtc_priority.dart';
286266
export 'src/dom/webrtc_stats.dart';
287-
export 'src/dom/webrtc_svc.dart';
288267
export 'src/dom/websockets.dart';
289268
export 'src/dom/webtransport.dart';
290269
export 'src/dom/webusb.dart';
@@ -293,7 +272,6 @@ export 'src/dom/webxr.dart';
293272
export 'src/dom/webxr_ar_module.dart';
294273
export 'src/dom/webxr_depth_sensing.dart';
295274
export 'src/dom/webxr_dom_overlays.dart';
296-
export 'src/dom/webxr_gamepads_module.dart';
297275
export 'src/dom/webxr_hand_input.dart';
298276
export 'src/dom/webxr_hit_test.dart';
299277
export 'src/dom/webxr_lighting_estimation.dart';

tool/bindings_generator/dart_main.dart

+17-5
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,26 @@ void main(List<String> args) async {
2323

2424
Future<void> _generateAndWriteBindings(String dir) async {
2525
const librarySubDir = 'src/dom';
26+
2627
ensureDirectoryExists('$dir/$librarySubDir');
28+
2729
final bindings = await generateBindings(packageRoot, librarySubDir);
2830
for (var entry in bindings.entries) {
29-
final formattedContents = _runDartFormat(entry.value).toJS;
30-
fs.writeFileSync('$dir/${entry.key}'.toJS, formattedContents);
31+
final libraryPath = entry.key;
32+
final library = entry.value;
33+
34+
final contents = _emitLibrary(library).toJS;
35+
fs.writeFileSync('$dir/$libraryPath'.toJS, contents);
3136
}
3237
}
3338

34-
String _runDartFormat(code.Library library) => DartFormatter().format(
35-
'''${library.accept(code.DartEmitter(allocator: code.Allocator(), orderDirectives: true, useNullSafetySyntax: true))}''',
36-
);
39+
String _emitLibrary(code.Library library) {
40+
final emitter = code.DartEmitter(
41+
allocator: code.Allocator(),
42+
orderDirectives: true,
43+
useNullSafetySyntax: true,
44+
);
45+
46+
final source = library.accept(emitter);
47+
return DartFormatter().format(source.toString());
48+
}

tool/bindings_generator/filesystem_api.dart

+12
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,27 @@ class JSMkdirOptions {
1414
external factory JSMkdirOptions({JSBoolean? recursive});
1515
}
1616

17+
@JS()
18+
@anonymous
19+
@staticInterop
20+
class JSReadFileOptions {
21+
external factory JSReadFileOptions({JSString? encoding});
22+
}
23+
1724
@JS()
1825
@staticInterop
1926
class FileSystem {}
2027

2128
// TODO(joshualitt): Replace `void` with `JSVoid`
2229
extension FileSystemExtension on FileSystem {
2330
external JSBoolean existsSync(JSString path);
31+
2432
@JS('mkdirSync')
2533
external void mkdirSyncOneArg(JSString path);
34+
2635
@JS('mkdirSync')
2736
external void mkdirSyncTwoArg(JSString path, JSMkdirOptions options);
37+
2838
void mkdirSync(JSString path, [JSMkdirOptions? options]) {
2939
if (options == null) {
3040
return mkdirSyncOneArg(path);
@@ -33,5 +43,7 @@ extension FileSystemExtension on FileSystem {
3343
}
3444
}
3545

46+
external JSAny readFileSync(JSString path, [JSReadFileOptions options]);
47+
3648
external void writeFileSync(JSString path, JSString contents);
3749
}

tool/bindings_generator/generate_bindings.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,12 @@ Future<List<String>> _generateCSSStyleDeclarations() async {
4747
Future<TranslationResult> generateBindings(
4848
String packageRoot, String librarySubDir) async {
4949
final cssStyleDeclarations = await _generateCSSStyleDeclarations();
50-
final translator = Translator(librarySubDir, cssStyleDeclarations);
50+
final translator =
51+
Translator(packageRoot, librarySubDir, cssStyleDeclarations);
5152
final array = objectEntries(await idl.parseAll().toDart as JSObject);
5253
for (var i = 0; i < array.length; i++) {
5354
final entry = array[i] as JSArray;
54-
final shortname = (entry[0] as JSString).toDart.kebabToSnake;
55+
final shortname = (entry[0] as JSString).toDart;
5556
final ast = entry[1] as JSArray;
5657
translator.collect(shortname, ast);
5758
}

tool/bindings_generator/js_type_supertypes.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// Updated by /tool/update_bindings.dart. Do not modify by hand.
5+
// Updated by tool/update_bindings.dart. Do not modify by hand.
66

77
const Map<String, String?> jsTypeSupertypes = {
88
'JSAny': null,

0 commit comments

Comments
 (0)