1
0
mirror of https://github.com/fluencelabs/wasm-bindgen synced 2025-06-27 03:31:35 +00:00

Dramatically improving the build time of web-sys ()

* Pre-generating web-sys

* Fixing build errors

* Minor refactor for the unit tests

* Changing to generate #[wasm_bindgen} annotations

* Fixing code generation

* Adding in main bin to wasm-bindgen-webidl

* Fixing more problems

* Adding in support for unstable APIs

* Fixing bug with code generation

* More code generation fixes

* Improving the webidl program

* Removing unnecessary cfg from the generated code

* Splitting doc comments onto separate lines

* Improving the generation for unstable features

* Adding in support for string values in enums

* Now runs rustfmt on the mod.rs file

* Fixing codegen for constructors

* Fixing webidl-tests

* Fixing build errors

* Another fix for build errors

* Renaming typescript_name to typescript_type

* Adding in docs for typescript_type

* Adding in CI script to verify that web-sys is up to date

* Fixing CI script

* Fixing CI script

* Don't suppress git diff output

* Remove duplicate definitions of `Location`

Looks to be a preexisting bug in wasm-bindgen?

* Regenerate webidl

* Try to get the git diff command right

* Handle named constructors in WebIDL

* Remove stray rustfmt.toml

* Add back NamedConstructorBar definition in tests

* Run stable rustfmt over everything

* Don't run Cargo in a build script

Instead refactor things so webidl-tests can use the Rust-code-generation
as a library in a build script. Also fixes `cargo fmt` in the
repository.

* Fixup generated code

* Running web-sys checks on stable

* Improving the code generation a little

* Running rustfmt

Co-authored-by: Alex Crichton <alex@alexcrichton.com>
This commit is contained in:
Pauan
2020-03-03 00:39:36 +01:00
committed by GitHub
parent eb04cf2dda
commit 3f4acc453b
1344 changed files with 142082 additions and 2883 deletions
azure-pipelines.yml
crates
backend
cli-support
cli
src
bin
wasm-bindgen-test-runner
macro-support
macro
shared
web-sys
.gitignoreCargo.tomlbuild.rs
src
features
gen_AbortController.rsgen_AbortSignal.rsgen_AddEventListenerOptions.rsgen_AesCbcParams.rsgen_AesCtrParams.rsgen_AesDerivedKeyParams.rsgen_AesGcmParams.rsgen_AesKeyAlgorithm.rsgen_AesKeyGenParams.rsgen_Algorithm.rsgen_AlignSetting.rsgen_AnalyserNode.rsgen_AnalyserOptions.rsgen_AngleInstancedArrays.rsgen_Animation.rsgen_AnimationEffect.rsgen_AnimationEvent.rsgen_AnimationEventInit.rsgen_AnimationPlayState.rsgen_AnimationPlaybackEvent.rsgen_AnimationPlaybackEventInit.rsgen_AnimationPropertyDetails.rsgen_AnimationPropertyValueDetails.rsgen_AnimationTimeline.rsgen_AssignedNodesOptions.rsgen_AttestationConveyancePreference.rsgen_Attr.rsgen_AttributeNameValue.rsgen_AudioBuffer.rsgen_AudioBufferOptions.rsgen_AudioBufferSourceNode.rsgen_AudioBufferSourceOptions.rsgen_AudioConfiguration.rsgen_AudioContext.rsgen_AudioContextOptions.rsgen_AudioContextState.rsgen_AudioDestinationNode.rsgen_AudioListener.rsgen_AudioNode.rsgen_AudioNodeOptions.rsgen_AudioParam.rsgen_AudioParamMap.rsgen_AudioProcessingEvent.rsgen_AudioScheduledSourceNode.rsgen_AudioStreamTrack.rsgen_AudioTrack.rsgen_AudioTrackList.rsgen_AudioWorklet.rsgen_AudioWorkletGlobalScope.rsgen_AudioWorkletNode.rsgen_AudioWorkletNodeOptions.rsgen_AudioWorkletProcessor.rsgen_AuthenticationExtensionsClientInputs.rsgen_AuthenticationExtensionsClientOutputs.rsgen_AuthenticatorAssertionResponse.rsgen_AuthenticatorAttachment.rsgen_AuthenticatorAttestationResponse.rsgen_AuthenticatorResponse.rsgen_AuthenticatorSelectionCriteria.rsgen_AuthenticatorTransport.rsgen_AutoKeyword.rsgen_AutocompleteInfo.rsgen_BarProp.rsgen_BaseAudioContext.rsgen_BaseComputedKeyframe.rsgen_BaseKeyframe.rsgen_BasePropertyIndexedKeyframe.rsgen_BasicCardRequest.rsgen_BasicCardResponse.rsgen_BasicCardType.rsgen_BatteryManager.rsgen_BeforeUnloadEvent.rsgen_BinaryType.rsgen_BiquadFilterNode.rsgen_BiquadFilterOptions.rsgen_BiquadFilterType.rsgen_Blob.rsgen_BlobEvent.rsgen_BlobEventInit.rsgen_BlobPropertyBag.rsgen_BlockParsingOptions.rsgen_BoxQuadOptions.rsgen_BroadcastChannel.rsgen_BrowserElementDownloadOptions.rsgen_BrowserElementExecuteScriptOptions.rsgen_BrowserFeedWriter.rsgen_BrowserFindCaseSensitivity.rsgen_BrowserFindDirection.rsgen_Cache.rsgen_CacheBatchOperation.rsgen_CacheQueryOptions.rsgen_CacheStorage.rsgen_CacheStorageNamespace.rsgen_CanvasCaptureMediaStream.rsgen_CanvasGradient.rsgen_CanvasPattern.rsgen_CanvasRenderingContext2d.rsgen_CanvasWindingRule.rsgen_CaretChangedReason.rsgen_CaretPosition.rsgen_CaretStateChangedEventInit.rsgen_CdataSection.rsgen_ChannelCountMode.rsgen_ChannelInterpretation.rsgen_ChannelMergerNode.rsgen_ChannelMergerOptions.rsgen_ChannelPixelLayout.rsgen_ChannelPixelLayoutDataType.rsgen_ChannelSplitterNode.rsgen_ChannelSplitterOptions.rsgen_CharacterData.rsgen_CheckerboardReason.rsgen_CheckerboardReport.rsgen_CheckerboardReportService.rsgen_ChromeFilePropertyBag.rsgen_ChromeWorker.rsgen_Client.rsgen_ClientQueryOptions.rsgen_ClientRectsAndTexts.rsgen_ClientType.rsgen_Clients.rsgen_ClipboardEvent.rsgen_ClipboardEventInit.rsgen_CloseEvent.rsgen_CloseEventInit.rsgen_CollectedClientData.rsgen_Comment.rsgen_CompositeOperation.rsgen_CompositionEvent.rsgen_CompositionEventInit.rsgen_ComputedEffectTiming.rsgen_ConnStatusDict.rsgen_ConnectionType.rsgen_ConsoleCounter.rsgen_ConsoleCounterError.rsgen_ConsoleEvent.rsgen_ConsoleInstance.rsgen_ConsoleInstanceOptions.rsgen_ConsoleLevel.rsgen_ConsoleLogLevel.rsgen_ConsoleProfileEvent.rsgen_ConsoleStackEntry.rsgen_ConsoleTimerError.rsgen_ConsoleTimerLogOrEnd.rsgen_ConsoleTimerStart.rsgen_ConstantSourceNode.rsgen_ConstantSourceOptions.rsgen_ConstrainBooleanParameters.rsgen_ConstrainDomStringParameters.rsgen_ConstrainDoubleRange.rsgen_ConstrainLongRange.rsgen_ContextAttributes2d.rsgen_ConvertCoordinateOptions.rsgen_ConvolverNode.rsgen_ConvolverOptions.rsgen_Coordinates.rsgen_Credential.rsgen_CredentialCreationOptions.rsgen_CredentialRequestOptions.rsgen_CredentialsContainer.rsgen_Crypto.rsgen_CryptoKey.rsgen_CryptoKeyPair.rsgen_Csp.rsgen_CspPolicies.rsgen_CspReport.rsgen_CspReportProperties.rsgen_CssAnimation.rsgen_CssBoxType.rsgen_CssConditionRule.rsgen_CssCounterStyleRule.rsgen_CssFontFaceRule.rsgen_CssFontFeatureValuesRule.rsgen_CssGroupingRule.rsgen_CssImportRule.rsgen_CssKeyframeRule.rsgen_CssKeyframesRule.rsgen_CssMediaRule.rsgen_CssNamespaceRule.rsgen_CssPageRule.rsgen_CssPseudoElement.rsgen_CssRule.rsgen_CssRuleList.rsgen_CssStyleDeclaration.rsgen_CssStyleRule.rsgen_CssStyleSheet.rsgen_CssStyleSheetParsingMode.rsgen_CssSupportsRule.rsgen_CssTransition.rsgen_CustomElementRegistry.rsgen_CustomEvent.rsgen_CustomEventInit.rsgen_DataTransfer.rsgen_DataTransferItem.rsgen_DataTransferItemList.rsgen_DateTimeValue.rsgen_DecoderDoctorNotification.rsgen_DecoderDoctorNotificationType.rsgen_DedicatedWorkerGlobalScope.rsgen_DelayNode.rsgen_DelayOptions.rsgen_DeviceAcceleration.rsgen_DeviceAccelerationInit.rsgen_DeviceLightEvent.rsgen_DeviceLightEventInit.rsgen_DeviceMotionEvent.rsgen_DeviceMotionEventInit.rsgen_DeviceOrientationEvent.rsgen_DeviceOrientationEventInit.rsgen_DeviceProximityEvent.rsgen_DeviceProximityEventInit.rsgen_DeviceRotationRate.rsgen_DeviceRotationRateInit.rsgen_DhKeyDeriveParams.rsgen_DirectionSetting.rsgen_Directory.rsgen_DisplayNameOptions.rsgen_DisplayNameResult.rsgen_DistanceModelType.rsgen_DnsCacheDict.rsgen_DnsCacheEntry.rsgen_DnsLookupDict.rsgen_Document.rsgen_DocumentFragment.rsgen_DocumentTimeline.rsgen_DocumentTimelineOptions.rsgen_DocumentType.rsgen_DomError.rsgen_DomException.rsgen_DomImplementation.rsgen_DomMatrix.rsgen_DomMatrixReadOnly.rsgen_DomParser.rsgen_DomPoint.rsgen_DomPointInit.rsgen_DomPointReadOnly.rsgen_DomQuad.rsgen_DomQuadInit.rsgen_DomQuadJson.rsgen_DomRect.rsgen_DomRectInit.rsgen_DomRectList.rsgen_DomRectReadOnly.rsgen_DomRequest.rsgen_DomRequestReadyState.rsgen_DomStringList.rsgen_DomStringMap.rsgen_DomTokenList.rsgen_DomWindowResizeEventDetail.rsgen_DragEvent.rsgen_DragEventInit.rsgen_DynamicsCompressorNode.rsgen_DynamicsCompressorOptions.rsgen_EcKeyAlgorithm.rsgen_EcKeyGenParams.rsgen_EcKeyImportParams.rsgen_EcdhKeyDeriveParams.rsgen_EcdsaParams.rsgen_EffectTiming.rsgen_Element.rsgen_ElementCreationOptions.rsgen_ElementDefinitionOptions.rsgen_EndingTypes.rsgen_ErrorCallback.rsgen_ErrorEvent.rsgen_ErrorEventInit.rsgen_Event.rsgen_EventInit.rsgen_EventListener.rsgen_EventListenerOptions.rsgen_EventModifierInit.rsgen_EventSource.rsgen_EventSourceInit.rsgen_EventTarget.rsgen_Exception.rsgen_ExtBlendMinmax.rsgen_ExtColorBufferFloat.rsgen_ExtColorBufferHalfFloat.rsgen_ExtDisjointTimerQuery.rsgen_ExtFragDepth.rsgen_ExtSRgb.rsgen_ExtShaderTextureLod.rsgen_ExtTextureFilterAnisotropic.rsgen_ExtendableEvent.rsgen_ExtendableEventInit.rsgen_ExtendableMessageEvent.rsgen_ExtendableMessageEventInit.rsgen_External.rsgen_FakePluginMimeEntry.rsgen_FakePluginTagInit.rsgen_FetchEvent.rsgen_FetchEventInit.rsgen_FetchObserver.rsgen_FetchReadableStreamReadDataArray.rsgen_FetchReadableStreamReadDataDone.rsgen_FetchState.rsgen_File.rsgen_FileCallback.rsgen_FileList.rsgen_FilePropertyBag.rsgen_FileReader.rsgen_FileReaderSync.rsgen_FileSystem.rsgen_FileSystemDirectoryEntry.rsgen_FileSystemDirectoryReader.rsgen_FileSystemEntriesCallback.rsgen_FileSystemEntry.rsgen_FileSystemEntryCallback.rsgen_FileSystemFileEntry.rsgen_FileSystemFlags.rsgen_FillMode.rsgen_FlashClassification.rsgen_FlexLineGrowthState.rsgen_FocusEvent.rsgen_FocusEventInit.rsgen_FontFace.rsgen_FontFaceDescriptors.rsgen_FontFaceLoadStatus.rsgen_FontFaceSet.rsgen_FontFaceSetIterator.rsgen_FontFaceSetIteratorResult.rsgen_FontFaceSetLoadEvent.rsgen_FontFaceSetLoadEventInit.rsgen_FontFaceSetLoadStatus.rsgen_FormData.rsgen_FrameType.rsgen_FuzzingFunctions.rsgen_GainNode.rsgen_GainOptions.rsgen_Gamepad.rsgen_GamepadAxisMoveEvent.rsgen_GamepadAxisMoveEventInit.rsgen_GamepadButton.rsgen_GamepadButtonEvent.rsgen_GamepadButtonEventInit.rsgen_GamepadEvent.rsgen_GamepadEventInit.rsgen_GamepadHand.rsgen_GamepadHapticActuator.rsgen_GamepadHapticActuatorType.rsgen_GamepadMappingType.rsgen_GamepadPose.rsgen_GamepadServiceTest.rsgen_Geolocation.rsgen_GetNotificationOptions.rsgen_GetRootNodeOptions.rsgen_GetUserMediaRequest.rsgen_Gpu.rsgen_GpuAdapter.rsgen_GpuAddressMode.rsgen_GpuBindGroup.rsgen_GpuBindGroupBinding.rsgen_GpuBindGroupDescriptor.rsgen_GpuBindGroupLayout.rsgen_GpuBindGroupLayoutBinding.rsgen_GpuBindGroupLayoutDescriptor.rsgen_GpuBindingType.rsgen_GpuBlendDescriptor.rsgen_GpuBlendFactor.rsgen_GpuBlendOperation.rsgen_GpuBuffer.rsgen_GpuBufferBinding.rsgen_GpuBufferCopyView.rsgen_GpuBufferDescriptor.rsgen_GpuBufferUsage.rsgen_GpuCanvasContext.rsgen_GpuColorDict.rsgen_GpuColorStateDescriptor.rsgen_GpuColorWrite.rsgen_GpuCommandBuffer.rsgen_GpuCommandBufferDescriptor.rsgen_GpuCommandEncoder.rsgen_GpuCommandEncoderDescriptor.rsgen_GpuCompareFunction.rsgen_GpuComputePassDescriptor.rsgen_GpuComputePassEncoder.rsgen_GpuComputePipeline.rsgen_GpuComputePipelineDescriptor.rsgen_GpuCullMode.rsgen_GpuDepthStencilStateDescriptor.rsgen_GpuDevice.rsgen_GpuDeviceDescriptor.rsgen_GpuDeviceLostInfo.rsgen_GpuErrorFilter.rsgen_GpuExtensionName.rsgen_GpuExtent3dDict.rsgen_GpuFence.rsgen_GpuFenceDescriptor.rsgen_GpuFilterMode.rsgen_GpuFrontFace.rsgen_GpuImageBitmapCopyView.rsgen_GpuIndexFormat.rsgen_GpuInputStepMode.rsgen_GpuLimits.rsgen_GpuLoadOp.rsgen_GpuObjectDescriptorBase.rsgen_GpuOrigin2dDict.rsgen_GpuOrigin3dDict.rsgen_GpuOutOfMemoryError.rsgen_GpuPipelineDescriptorBase.rsgen_GpuPipelineLayout.rsgen_GpuPipelineLayoutDescriptor.rsgen_GpuPowerPreference.rsgen_GpuPrimitiveTopology.rsgen_GpuProgrammableStageDescriptor.rsgen_GpuQueue.rsgen_GpuRasterizationStateDescriptor.rsgen_GpuRenderBundle.rsgen_GpuRenderBundleDescriptor.rsgen_GpuRenderBundleEncoder.rsgen_GpuRenderBundleEncoderDescriptor.rsgen_GpuRenderPassColorAttachmentDescriptor.rsgen_GpuRenderPassDepthStencilAttachmentDescriptor.rsgen_GpuRenderPassDescriptor.rsgen_GpuRenderPassEncoder.rsgen_GpuRenderPipeline.rsgen_GpuRenderPipelineDescriptor.rsgen_GpuRequestAdapterOptions.rsgen_GpuSampler.rsgen_GpuSamplerDescriptor.rsgen_GpuShaderModule.rsgen_GpuShaderModuleDescriptor.rsgen_GpuShaderStage.rsgen_GpuStencilOperation.rsgen_GpuStencilStateFaceDescriptor.rsgen_GpuStoreOp.rsgen_GpuSwapChain.rsgen_GpuSwapChainDescriptor.rsgen_GpuTexture.rsgen_GpuTextureAspect.rsgen_GpuTextureComponentType.rsgen_GpuTextureCopyView.rsgen_GpuTextureDescriptor.rsgen_GpuTextureDimension.rsgen_GpuTextureFormat.rsgen_GpuTextureUsage.rsgen_GpuTextureView.rsgen_GpuTextureViewDescriptor.rsgen_GpuTextureViewDimension.rsgen_GpuUncapturedErrorEvent.rsgen_GpuUncapturedErrorEventInit.rsgen_GpuValidationError.rsgen_GpuVertexAttributeDescriptor.rsgen_GpuVertexBufferLayoutDescriptor.rsgen_GpuVertexFormat.rsgen_GpuVertexStateDescriptor.rsgen_GridDeclaration.rsgen_GridTrackState.rsgen_GroupedHistoryEventInit.rsgen_HalfOpenInfoDict.rsgen_HashChangeEvent.rsgen_HashChangeEventInit.rsgen_Headers.rsgen_HeadersGuardEnum.rsgen_HiddenPluginEventInit.rsgen_History.rsgen_HitRegionOptions.rsgen_HkdfParams.rsgen_HmacDerivedKeyParams.rsgen_HmacImportParams.rsgen_HmacKeyAlgorithm.rsgen_HmacKeyGenParams.rsgen_HtmlAllCollection.rsgen_HtmlAnchorElement.rsgen_HtmlAreaElement.rsgen_HtmlAudioElement.rsgen_HtmlBaseElement.rsgen_HtmlBodyElement.rsgen_HtmlBrElement.rsgen_HtmlButtonElement.rsgen_HtmlCanvasElement.rsgen_HtmlCollection.rsgen_HtmlDListElement.rsgen_HtmlDataElement.rsgen_HtmlDataListElement.rsgen_HtmlDetailsElement.rsgen_HtmlDialogElement.rsgen_HtmlDirectoryElement.rsgen_HtmlDivElement.rsgen_HtmlDocument.rsgen_HtmlElement.rsgen_HtmlEmbedElement.rsgen_HtmlFieldSetElement.rsgen_HtmlFontElement.rsgen_HtmlFormControlsCollection.rsgen_HtmlFormElement.rsgen_HtmlFrameElement.rsgen_HtmlFrameSetElement.rsgen_HtmlHeadElement.rsgen_HtmlHeadingElement.rsgen_HtmlHrElement.rsgen_HtmlHtmlElement.rsgen_HtmlIFrameElement.rsgen_HtmlImageElement.rsgen_HtmlInputElement.rsgen_HtmlLabelElement.rsgen_HtmlLegendElement.rsgen_HtmlLiElement.rsgen_HtmlLinkElement.rsgen_HtmlMapElement.rsgen_HtmlMediaElement.rsgen_HtmlMenuElement.rsgen_HtmlMenuItemElement.rsgen_HtmlMetaElement.rsgen_HtmlMeterElement.rsgen_HtmlModElement.rsgen_HtmlOListElement.rsgen_HtmlObjectElement.rsgen_HtmlOptGroupElement.rsgen_HtmlOptionElement.rsgen_HtmlOptionsCollection.rsgen_HtmlOutputElement.rsgen_HtmlParagraphElement.rsgen_HtmlParamElement.rsgen_HtmlPictureElement.rsgen_HtmlPreElement.rsgen_HtmlProgressElement.rsgen_HtmlQuoteElement.rsgen_HtmlScriptElement.rsgen_HtmlSelectElement.rsgen_HtmlSlotElement.rsgen_HtmlSourceElement.rsgen_HtmlSpanElement.rsgen_HtmlStyleElement.rsgen_HtmlTableCaptionElement.rsgen_HtmlTableCellElement.rsgen_HtmlTableColElement.rsgen_HtmlTableElement.rsgen_HtmlTableRowElement.rsgen_HtmlTableSectionElement.rsgen_HtmlTemplateElement.rsgen_HtmlTextAreaElement.rsgen_HtmlTimeElement.rsgen_HtmlTitleElement.rsgen_HtmlTrackElement.rsgen_HtmlUListElement.rsgen_HtmlUnknownElement.rsgen_HtmlVideoElement.rsgen_HttpConnDict.rsgen_HttpConnInfo.rsgen_HttpConnectionElement.rsgen_IdbCursor.rsgen_IdbCursorDirection.rsgen_IdbCursorWithValue.rsgen_IdbDatabase.rsgen_IdbFactory.rsgen_IdbFileHandle.rsgen_IdbFileMetadataParameters.rsgen_IdbFileRequest.rsgen_IdbIndex.rsgen_IdbIndexParameters.rsgen_IdbKeyRange.rsgen_IdbLocaleAwareKeyRange.rsgen_IdbMutableFile.rsgen_IdbObjectStore.rsgen_IdbObjectStoreParameters.rsgen_IdbOpenDbOptions.rsgen_IdbOpenDbRequest.rsgen_IdbRequest.rsgen_IdbRequestReadyState.rsgen_IdbTransaction.rsgen_IdbTransactionMode.rsgen_IdbVersionChangeEvent.rsgen_IdbVersionChangeEventInit.rsgen_IdleDeadline.rsgen_IdleRequestOptions.rsgen_IirFilterNode.rsgen_IirFilterOptions.rsgen_ImageBitmap.rsgen_ImageBitmapFormat.rsgen_ImageBitmapRenderingContext.rsgen_ImageCapture.rsgen_ImageCaptureError.rsgen_ImageCaptureErrorEvent.rsgen_ImageCaptureErrorEventInit.rsgen_ImageData.rsgen_InputEvent.rsgen_InputEventInit.rsgen_InstallTriggerData.rsgen_IntersectionObserver.rsgen_IntersectionObserverEntry.rsgen_IntersectionObserverEntryInit.rsgen_IntersectionObserverInit.rsgen_IntlUtils.rsgen_IterableKeyAndValueResult.rsgen_IterableKeyOrValueResult.rsgen_IterationCompositeOperation.rsgen_JsonWebKey.rsgen_KeyAlgorithm.rsgen_KeyEvent.rsgen_KeyIdsInitData.rsgen_KeyboardEvent.rsgen_KeyboardEventInit.rsgen_KeyframeEffect.rsgen_KeyframeEffectOptions.rsgen_L10nElement.rsgen_L10nValue.rsgen_LifecycleCallbacks.rsgen_LineAlignSetting.rsgen_ListBoxObject.rsgen_LocalMediaStream.rsgen_LocaleInfo.rsgen_Location.rsgen_MediaCapabilities.rsgen_MediaCapabilitiesInfo.rsgen_MediaConfiguration.rsgen_MediaDecodingConfiguration.rsgen_MediaDecodingType.rsgen_MediaDeviceInfo.rsgen_MediaDeviceKind.rsgen_MediaDevices.rsgen_MediaElementAudioSourceNode.rsgen_MediaElementAudioSourceOptions.rsgen_MediaEncodingConfiguration.rsgen_MediaEncodingType.rsgen_MediaEncryptedEvent.rsgen_MediaError.rsgen_MediaKeyError.rsgen_MediaKeyMessageEvent.rsgen_MediaKeyMessageEventInit.rsgen_MediaKeyMessageType.rsgen_MediaKeyNeededEventInit.rsgen_MediaKeySession.rsgen_MediaKeySessionType.rsgen_MediaKeyStatus.rsgen_MediaKeyStatusMap.rsgen_MediaKeySystemAccess.rsgen_MediaKeySystemConfiguration.rsgen_MediaKeySystemMediaCapability.rsgen_MediaKeySystemStatus.rsgen_MediaKeys.rsgen_MediaKeysPolicy.rsgen_MediaKeysRequirement.rsgen_MediaList.rsgen_MediaQueryList.rsgen_MediaQueryListEvent.rsgen_MediaQueryListEventInit.rsgen_MediaRecorder.rsgen_MediaRecorderErrorEvent.rsgen_MediaRecorderErrorEventInit.rsgen_MediaRecorderOptions.rsgen_MediaSource.rsgen_MediaSourceEndOfStreamError.rsgen_MediaSourceEnum.rsgen_MediaSourceReadyState.rsgen_MediaStream.rsgen_MediaStreamAudioDestinationNode.rsgen_MediaStreamAudioSourceNode.rsgen_MediaStreamAudioSourceOptions.rsgen_MediaStreamConstraints.rsgen_MediaStreamError.rsgen_MediaStreamEvent.rsgen_MediaStreamEventInit.rsgen_MediaStreamTrack.rsgen_MediaStreamTrackEvent.rsgen_MediaStreamTrackEventInit.rsgen_MediaStreamTrackState.rsgen_MediaTrackConstraintSet.rsgen_MediaTrackConstraints.rsgen_MediaTrackSettings.rsgen_MediaTrackSupportedConstraints.rsgen_MessageChannel.rsgen_MessageEvent.rsgen_MessageEventInit.rsgen_MessagePort.rsgen_MidiAccess.rsgen_MidiConnectionEvent.rsgen_MidiConnectionEventInit.rsgen_MidiInput.rsgen_MidiInputMap.rsgen_MidiMessageEvent.rsgen_MidiMessageEventInit.rsgen_MidiOptions.rsgen_MidiOutput.rsgen_MidiOutputMap.rsgen_MidiPort.rsgen_MidiPortConnectionState.rsgen_MidiPortDeviceState.rsgen_MidiPortType.rsgen_MimeType.rsgen_MimeTypeArray.rsgen_MouseEvent.rsgen_MouseEventInit.rsgen_MouseScrollEvent.rsgen_MozDebug.rsgen_MutationEvent.rsgen_MutationObserver.rsgen_MutationObserverInit.rsgen_MutationObservingInfo.rsgen_MutationRecord.rsgen_NamedNodeMap.rsgen_NativeOsFileReadOptions.rsgen_NativeOsFileWriteAtomicOptions.rsgen_NavigationType.rsgen_Navigator.rsgen_NavigatorAutomationInformation.rsgen_NetworkCommandOptions.rsgen_NetworkInformation.rsgen_NetworkResultOptions.rsgen_Node.rsgen_NodeFilter.rsgen_NodeIterator.rsgen_NodeList.rsgen_Notification.rsgen_NotificationBehavior.rsgen_NotificationDirection.rsgen_NotificationEvent.rsgen_NotificationEventInit.rsgen_NotificationOptions.rsgen_NotificationPermission.rsgen_ObserverCallback.rsgen_OesElementIndexUint.rsgen_OesStandardDerivatives.rsgen_OesTextureFloat.rsgen_OesTextureFloatLinear.rsgen_OesTextureHalfFloat.rsgen_OesTextureHalfFloatLinear.rsgen_OesVertexArrayObject.rsgen_OfflineAudioCompletionEvent.rsgen_OfflineAudioCompletionEventInit.rsgen_OfflineAudioContext.rsgen_OfflineAudioContextOptions.rsgen_OfflineResourceList.rsgen_OffscreenCanvas.rsgen_OpenWindowEventDetail.rsgen_OptionalEffectTiming.rsgen_OrientationLockType.rsgen_OrientationType.rsgen_OscillatorNode.rsgen_OscillatorOptions.rsgen_OscillatorType.rsgen_OverSampleType.rsgen_PageTransitionEvent.rsgen_PageTransitionEventInit.rsgen_PaintRequest.rsgen_PaintRequestList.rsgen_PaintWorkletGlobalScope.rsgen_PannerNode.rsgen_PannerOptions.rsgen_PanningModelType.rsgen_Path2d.rsgen_PaymentAddress.rsgen_PaymentComplete.rsgen_PaymentMethodChangeEvent.rsgen_PaymentMethodChangeEventInit.rsgen_PaymentRequestUpdateEvent.rsgen_PaymentRequestUpdateEventInit.rsgen_PaymentResponse.rsgen_Pbkdf2Params.rsgen_PcImplIceConnectionState.rsgen_PcImplIceGatheringState.rsgen_PcImplSignalingState.rsgen_PcObserverStateType.rsgen_Performance.rsgen_PerformanceEntry.rsgen_PerformanceEntryEventInit.rsgen_PerformanceEntryFilterOptions.rsgen_PerformanceMark.rsgen_PerformanceMeasure.rsgen_PerformanceNavigation.rsgen_PerformanceNavigationTiming.rsgen_PerformanceObserver.rsgen_PerformanceObserverEntryList.rsgen_PerformanceObserverInit.rsgen_PerformanceResourceTiming.rsgen_PerformanceServerTiming.rsgen_PerformanceTiming.rsgen_PeriodicWave.rsgen_PeriodicWaveConstraints.rsgen_PeriodicWaveOptions.rsgen_PermissionDescriptor.rsgen_PermissionName.rsgen_PermissionState.rsgen_PermissionStatus.rsgen_Permissions.rsgen_PlaybackDirection.rsgen_Plugin.rsgen_PluginArray.rsgen_PluginCrashedEventInit.rsgen_PointerEvent.rsgen_PointerEventInit.rsgen_PopStateEvent.rsgen_PopStateEventInit.rsgen_PopupBlockedEvent.rsgen_PopupBlockedEventInit.rsgen_Position.rsgen_PositionAlignSetting.rsgen_PositionError.rsgen_PositionOptions.rsgen_Presentation.rsgen_PresentationAvailability.rsgen_PresentationConnection.rsgen_PresentationConnectionAvailableEvent.rsgen_PresentationConnectionAvailableEventInit.rsgen_PresentationConnectionBinaryType.rsgen_PresentationConnectionCloseEvent.rsgen_PresentationConnectionCloseEventInit.rsgen_PresentationConnectionClosedReason.rsgen_PresentationConnectionList.rsgen_PresentationConnectionState.rsgen_PresentationReceiver.rsgen_PresentationRequest.rsgen_ProcessingInstruction.rsgen_ProfileTimelineLayerRect.rsgen_ProfileTimelineMarker.rsgen_ProfileTimelineMessagePortOperationType.rsgen_ProfileTimelineStackFrame.rsgen_ProfileTimelineWorkerOperationType.rsgen_ProgressEvent.rsgen_ProgressEventInit.rsgen_PromiseNativeHandler.rsgen_PromiseRejectionEvent.rsgen_PromiseRejectionEventInit.rsgen_PublicKeyCredential.rsgen_PublicKeyCredentialCreationOptions.rsgen_PublicKeyCredentialDescriptor.rsgen_PublicKeyCredentialEntity.rsgen_PublicKeyCredentialParameters.rsgen_PublicKeyCredentialRequestOptions.rsgen_PublicKeyCredentialRpEntity.rsgen_PublicKeyCredentialType.rsgen_PublicKeyCredentialUserEntity.rsgen_PushEncryptionKeyName.rsgen_PushEvent.rsgen_PushEventInit.rsgen_PushManager.rsgen_PushMessageData.rsgen_PushPermissionState.rsgen_PushSubscription.rsgen_PushSubscriptionInit.rsgen_PushSubscriptionJson.rsgen_PushSubscriptionKeys.rsgen_PushSubscriptionOptions.rsgen_PushSubscriptionOptionsInit.rsgen_RadioNodeList.rsgen_Range.rsgen_RcwnPerfStats.rsgen_RcwnStatus.rsgen_ReadableStream.rsgen_RecordingState.rsgen_ReferrerPolicy.rsgen_RegisterRequest.rsgen_RegisterResponse.rsgen_RegisteredKey.rsgen_RegistrationOptions.rsgen_Request.rsgen_RequestCache.rsgen_RequestCredentials.rsgen_RequestDestination.rsgen_RequestInit.rsgen_RequestMediaKeySystemAccessNotification.rsgen_RequestMode.rsgen_RequestRedirect.rsgen_Response.rsgen_ResponseInit.rsgen_ResponseType.rsgen_RsaHashedImportParams.rsgen_RsaOaepParams.rsgen_RsaOtherPrimesInfo.rsgen_RsaPssParams.rsgen_RtcAnswerOptions.rsgen_RtcBundlePolicy.rsgen_RtcCertificate.rsgen_RtcCertificateExpiration.rsgen_RtcCodecStats.rsgen_RtcConfiguration.rsgen_RtcDataChannel.rsgen_RtcDataChannelEvent.rsgen_RtcDataChannelEventInit.rsgen_RtcDataChannelInit.rsgen_RtcDataChannelState.rsgen_RtcDataChannelType.rsgen_RtcDegradationPreference.rsgen_RtcFecParameters.rsgen_RtcIceCandidate.rsgen_RtcIceCandidateInit.rsgen_RtcIceCandidatePairStats.rsgen_RtcIceCandidateStats.rsgen_RtcIceComponentStats.rsgen_RtcIceConnectionState.rsgen_RtcIceCredentialType.rsgen_RtcIceGatheringState.rsgen_RtcIceServer.rsgen_RtcIceTransportPolicy.rsgen_RtcIdentityAssertion.rsgen_RtcIdentityAssertionResult.rsgen_RtcIdentityProvider.rsgen_RtcIdentityProviderDetails.rsgen_RtcIdentityProviderOptions.rsgen_RtcIdentityProviderRegistrar.rsgen_RtcIdentityValidationResult.rsgen_RtcInboundRtpStreamStats.rsgen_RtcLifecycleEvent.rsgen_RtcMediaStreamStats.rsgen_RtcMediaStreamTrackStats.rsgen_RtcOfferAnswerOptions.rsgen_RtcOfferOptions.rsgen_RtcOutboundRtpStreamStats.rsgen_RtcPeerConnection.rsgen_RtcPeerConnectionIceEvent.rsgen_RtcPeerConnectionIceEventInit.rsgen_RtcPriorityType.rsgen_RtcRtcpParameters.rsgen_RtcRtpCodecParameters.rsgen_RtcRtpContributingSource.rsgen_RtcRtpEncodingParameters.rsgen_RtcRtpHeaderExtensionParameters.rsgen_RtcRtpParameters.rsgen_RtcRtpReceiver.rsgen_RtcRtpSender.rsgen_RtcRtpSourceEntry.rsgen_RtcRtpSourceEntryType.rsgen_RtcRtpSynchronizationSource.rsgen_RtcRtpTransceiver.rsgen_RtcRtpTransceiverDirection.rsgen_RtcRtpTransceiverInit.rsgen_RtcRtxParameters.rsgen_RtcSdpType.rsgen_RtcSessionDescription.rsgen_RtcSessionDescriptionInit.rsgen_RtcSignalingState.rsgen_RtcStats.rsgen_RtcStatsIceCandidatePairState.rsgen_RtcStatsIceCandidateType.rsgen_RtcStatsReport.rsgen_RtcStatsReportInternal.rsgen_RtcStatsType.rsgen_RtcTrackEvent.rsgen_RtcTrackEventInit.rsgen_RtcTransportStats.rsgen_RtcdtmfSender.rsgen_RtcdtmfToneChangeEvent.rsgen_RtcdtmfToneChangeEventInit.rsgen_RtcrtpContributingSourceStats.rsgen_RtcrtpStreamStats.rsgen_Screen.rsgen_ScreenColorGamut.rsgen_ScreenLuminance.rsgen_ScreenOrientation.rsgen_ScriptProcessorNode.rsgen_ScrollAreaEvent.rsgen_ScrollBehavior.rsgen_ScrollBoxObject.rsgen_ScrollIntoViewOptions.rsgen_ScrollLogicalPosition.rsgen_ScrollOptions.rsgen_ScrollRestoration.rsgen_ScrollSetting.rsgen_ScrollState.rsgen_ScrollToOptions.rsgen_ScrollViewChangeEventInit.rsgen_SecurityPolicyViolationEvent.rsgen_SecurityPolicyViolationEventDisposition.rsgen_SecurityPolicyViolationEventInit.rsgen_Selection.rsgen_ServerSocketOptions.rsgen_ServiceWorker.rsgen_ServiceWorkerContainer.rsgen_ServiceWorkerGlobalScope.rsgen_ServiceWorkerRegistration.rsgen_ServiceWorkerState.rsgen_ServiceWorkerUpdateViaCache.rsgen_ShadowRoot.rsgen_ShadowRootInit.rsgen_ShadowRootMode.rsgen_SharedWorker.rsgen_SharedWorkerGlobalScope.rsgen_SignResponse.rsgen_SocketElement.rsgen_SocketOptions.rsgen_SocketReadyState.rsgen_SocketsDict.rsgen_SourceBuffer.rsgen_SourceBufferAppendMode.rsgen_SourceBufferList.rsgen_SpeechGrammar.rsgen_SpeechGrammarList.rsgen_SpeechRecognition.rsgen_SpeechRecognitionAlternative.rsgen_SpeechRecognitionError.rsgen_SpeechRecognitionErrorCode.rsgen_SpeechRecognitionErrorInit.rsgen_SpeechRecognitionEvent.rsgen_SpeechRecognitionEventInit.rsgen_SpeechRecognitionResult.rsgen_SpeechRecognitionResultList.rsgen_SpeechSynthesis.rsgen_SpeechSynthesisErrorCode.rsgen_SpeechSynthesisErrorEvent.rsgen_SpeechSynthesisErrorEventInit.rsgen_SpeechSynthesisEvent.rsgen_SpeechSynthesisEventInit.rsgen_SpeechSynthesisUtterance.rsgen_SpeechSynthesisVoice.rsgen_StereoPannerNode.rsgen_StereoPannerOptions.rsgen_Storage.rsgen_StorageEstimate.rsgen_StorageEvent.rsgen_StorageEventInit.rsgen_StorageManager.rsgen_StorageType.rsgen_StyleRuleChangeEventInit.rsgen_StyleSheet.rsgen_StyleSheetApplicableStateChangeEventInit.rsgen_StyleSheetChangeEventInit.rsgen_StyleSheetList.rsgen_SubtleCrypto.rsgen_SupportedType.rsgen_SvgAngle.rsgen_SvgAnimateElement.rsgen_SvgAnimateMotionElement.rsgen_SvgAnimateTransformElement.rsgen_SvgAnimatedAngle.rsgen_SvgAnimatedBoolean.rsgen_SvgAnimatedEnumeration.rsgen_SvgAnimatedInteger.rsgen_SvgAnimatedLength.rsgen_SvgAnimatedLengthList.rsgen_SvgAnimatedNumber.rsgen_SvgAnimatedNumberList.rsgen_SvgAnimatedPreserveAspectRatio.rsgen_SvgAnimatedRect.rsgen_SvgAnimatedString.rsgen_SvgAnimatedTransformList.rsgen_SvgAnimationElement.rsgen_SvgBoundingBoxOptions.rsgen_SvgCircleElement.rsgen_SvgClipPathElement.rsgen_SvgComponentTransferFunctionElement.rsgen_SvgDefsElement.rsgen_SvgDescElement.rsgen_SvgElement.rsgen_SvgEllipseElement.rsgen_SvgFilterElement.rsgen_SvgForeignObjectElement.rsgen_SvgGeometryElement.rsgen_SvgGradientElement.rsgen_SvgGraphicsElement.rsgen_SvgImageElement.rsgen_SvgLength.rsgen_SvgLengthList.rsgen_SvgLineElement.rsgen_SvgLinearGradientElement.rsgen_SvgMarkerElement.rsgen_SvgMaskElement.rsgen_SvgMatrix.rsgen_SvgMetadataElement.rsgen_SvgNumber.rsgen_SvgNumberList.rsgen_SvgPathElement.rsgen_SvgPathSeg.rsgen_SvgPathSegArcAbs.rsgen_SvgPathSegArcRel.rsgen_SvgPathSegClosePath.rsgen_SvgPathSegCurvetoCubicAbs.rsgen_SvgPathSegCurvetoCubicRel.rsgen_SvgPathSegCurvetoCubicSmoothAbs.rsgen_SvgPathSegCurvetoCubicSmoothRel.rsgen_SvgPathSegCurvetoQuadraticAbs.rsgen_SvgPathSegCurvetoQuadraticRel.rsgen_SvgPathSegCurvetoQuadraticSmoothAbs.rsgen_SvgPathSegCurvetoQuadraticSmoothRel.rsgen_SvgPathSegLinetoAbs.rsgen_SvgPathSegLinetoHorizontalAbs.rsgen_SvgPathSegLinetoHorizontalRel.rsgen_SvgPathSegLinetoRel.rsgen_SvgPathSegLinetoVerticalAbs.rsgen_SvgPathSegLinetoVerticalRel.rsgen_SvgPathSegList.rsgen_SvgPathSegMovetoAbs.rsgen_SvgPathSegMovetoRel.rsgen_SvgPatternElement.rsgen_SvgPoint.rsgen_SvgPointList.rsgen_SvgPolygonElement.rsgen_SvgPolylineElement.rsgen_SvgPreserveAspectRatio.rsgen_SvgRadialGradientElement.rsgen_SvgRect.rsgen_SvgRectElement.rsgen_SvgScriptElement.rsgen_SvgSetElement.rsgen_SvgStopElement.rsgen_SvgStringList.rsgen_SvgStyleElement.rsgen_SvgSwitchElement.rsgen_SvgSymbolElement.rsgen_SvgTextContentElement.rsgen_SvgTextElement.rsgen_SvgTextPathElement.rsgen_SvgTextPositioningElement.rsgen_SvgTitleElement.rsgen_SvgTransform.rsgen_SvgTransformList.rsgen_SvgUnitTypes.rsgen_SvgUseElement.rsgen_SvgViewElement.rsgen_SvgZoomAndPan.rsgen_SvgaElement.rsgen_SvgfeBlendElement.rsgen_SvgfeColorMatrixElement.rsgen_SvgfeComponentTransferElement.rsgen_SvgfeCompositeElement.rsgen_SvgfeConvolveMatrixElement.rsgen_SvgfeDiffuseLightingElement.rsgen_SvgfeDisplacementMapElement.rsgen_SvgfeDistantLightElement.rsgen_SvgfeDropShadowElement.rsgen_SvgfeFloodElement.rsgen_SvgfeFuncAElement.rsgen_SvgfeFuncBElement.rsgen_SvgfeFuncGElement.rsgen_SvgfeFuncRElement.rsgen_SvgfeGaussianBlurElement.rsgen_SvgfeImageElement.rsgen_SvgfeMergeElement.rsgen_SvgfeMergeNodeElement.rsgen_SvgfeMorphologyElement.rsgen_SvgfeOffsetElement.rsgen_SvgfePointLightElement.rsgen_SvgfeSpecularLightingElement.rsgen_SvgfeSpotLightElement.rsgen_SvgfeTileElement.rsgen_SvgfeTurbulenceElement.rsgen_SvggElement.rsgen_SvgmPathElement.rsgen_SvgsvgElement.rsgen_SvgtSpanElement.rsgen_TcpReadyState.rsgen_TcpServerSocket.rsgen_TcpServerSocketEvent.rsgen_TcpServerSocketEventInit.rsgen_TcpSocket.rsgen_TcpSocketBinaryType.rsgen_TcpSocketErrorEvent.rsgen_TcpSocketErrorEventInit.rsgen_TcpSocketEvent.rsgen_TcpSocketEventInit.rsgen_Text.rsgen_TextDecodeOptions.rsgen_TextDecoder.rsgen_TextDecoderOptions.rsgen_TextEncoder.rsgen_TextMetrics.rsgen_TextTrack.rsgen_TextTrackCue.rsgen_TextTrackCueList.rsgen_TextTrackKind.rsgen_TextTrackList.rsgen_TextTrackMode.rsgen_TimeEvent.rsgen_TimeRanges.rsgen_Touch.rsgen_TouchEvent.rsgen_TouchEventInit.rsgen_TouchInit.rsgen_TouchList.rsgen_TrackEvent.rsgen_TrackEventInit.rsgen_TransitionEvent.rsgen_TransitionEventInit.rsgen_Transport.rsgen_TreeBoxObject.rsgen_TreeCellInfo.rsgen_TreeView.rsgen_TreeWalker.rsgen_U2f.rsgen_U2fClientData.rsgen_UdpMessageEventInit.rsgen_UdpOptions.rsgen_UiEvent.rsgen_UiEventInit.rsgen_Url.rsgen_UrlSearchParams.rsgen_UserProximityEvent.rsgen_UserProximityEventInit.rsgen_UserVerificationRequirement.rsgen_ValidityState.rsgen_VideoConfiguration.rsgen_VideoFacingModeEnum.rsgen_VideoPlaybackQuality.rsgen_VideoStreamTrack.rsgen_VideoTrack.rsgen_VideoTrackList.rsgen_VisibilityState.rsgen_VoidCallback.rsgen_VrDisplay.rsgen_VrDisplayCapabilities.rsgen_VrEye.rsgen_VrEyeParameters.rsgen_VrFieldOfView.rsgen_VrFrameData.rsgen_VrLayer.rsgen_VrMockController.rsgen_VrMockDisplay.rsgen_VrPose.rsgen_VrServiceTest.rsgen_VrStageParameters.rsgen_VrSubmitFrameResult.rsgen_VttCue.rsgen_VttRegion.rsgen_WaveShaperNode.rsgen_WaveShaperOptions.rsgen_WebGl2RenderingContext.rsgen_WebGlActiveInfo.rsgen_WebGlBuffer.rsgen_WebGlContextAttributes.rsgen_WebGlContextEvent.rsgen_WebGlContextEventInit.rsgen_WebGlFramebuffer.rsgen_WebGlPowerPreference.rsgen_WebGlProgram.rsgen_WebGlQuery.rsgen_WebGlRenderbuffer.rsgen_WebGlRenderingContext.rsgen_WebGlSampler.rsgen_WebGlShader.rsgen_WebGlShaderPrecisionFormat.rsgen_WebGlSync.rsgen_WebGlTexture.rsgen_WebGlTransformFeedback.rsgen_WebGlUniformLocation.rsgen_WebGlVertexArrayObject.rsgen_WebKitCssMatrix.rsgen_WebSocket.rsgen_WebSocketDict.rsgen_WebSocketElement.rsgen_WebglColorBufferFloat.rsgen_WebglCompressedTextureAstc.rsgen_WebglCompressedTextureAtc.rsgen_WebglCompressedTextureEtc.rsgen_WebglCompressedTextureEtc1.rsgen_WebglCompressedTexturePvrtc.rsgen_WebglCompressedTextureS3tc.rsgen_WebglCompressedTextureS3tcSrgb.rsgen_WebglDebugRendererInfo.rsgen_WebglDebugShaders.rsgen_WebglDepthTexture.rsgen_WebglDrawBuffers.rsgen_WebglLoseContext.rsgen_WebrtcGlobalStatisticsReport.rsgen_WheelEvent.rsgen_WheelEventInit.rsgen_WidevineCdmManifest.rsgen_Window.rsgen_WindowClient.rsgen_Worker.rsgen_WorkerDebuggerGlobalScope.rsgen_WorkerGlobalScope.rsgen_WorkerLocation.rsgen_WorkerNavigator.rsgen_WorkerOptions.rsgen_Worklet.rsgen_WorkletGlobalScope.rsgen_WorkletOptions.rsgen_XPathExpression.rsgen_XPathNsResolver.rsgen_XPathResult.rsgen_XmlDocument.rsgen_XmlHttpRequest.rsgen_XmlHttpRequestEventTarget.rsgen_XmlHttpRequestResponseType.rsgen_XmlHttpRequestUpload.rsgen_XmlSerializer.rsgen_XsltProcessor.rsgen_console.rsgen_css.rsmod.rs
lib.rs
tests
webidl-tests
webidl
guide/src/reference/attributes/on-js-imports
rustfmt.toml
tests/wasm

@ -4,7 +4,7 @@ use crate::wit::{Adapter, AdapterId, AdapterJsImportKind, AuxValue};
use crate::wit::{AdapterKind, Instruction, InstructionData};
use crate::wit::{AuxEnum, AuxExport, AuxExportKind, AuxImport, AuxStruct};
use crate::wit::{JsImport, JsImportName, NonstandardWitSection, WasmBindgenAux};
use crate::{Bindgen, EncodeInto, OutputMode};
use crate::{reset_indentation, Bindgen, EncodeInto, OutputMode, PLACEHOLDER_MODULE};
use anyhow::{anyhow, bail, Context as _, Error};
use std::borrow::Cow;
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
@ -188,6 +188,85 @@ impl<'a> Context<'a> {
self.finalize_js(module_name, needs_manual_start)
}
fn generate_node_imports(&self) -> String {
let mut imports = BTreeSet::new();
for import in self.module.imports.iter() {
imports.insert(&import.module);
}
let mut shim = String::new();
shim.push_str("let imports = {};\n");
if self.config.mode.nodejs_experimental_modules() {
for (i, module) in imports.iter().enumerate() {
if module.as_str() != PLACEHOLDER_MODULE {
shim.push_str(&format!("import * as import{} from '{}';\n", i, module));
}
}
}
for (i, module) in imports.iter().enumerate() {
if module.as_str() == PLACEHOLDER_MODULE {
shim.push_str(&format!(
"imports['{0}'] = module.exports;\n",
PLACEHOLDER_MODULE
));
} else {
if self.config.mode.nodejs_experimental_modules() {
shim.push_str(&format!("imports['{}'] = import{};\n", module, i));
} else {
shim.push_str(&format!("imports['{0}'] = require('{0}');\n", module));
}
}
}
reset_indentation(&shim)
}
fn generate_node_wasm_loading(&self, path: &Path) -> String {
let mut shim = String::new();
if self.config.mode.nodejs_experimental_modules() {
// On windows skip the leading `/` which comes out when we parse a
// url to use `C:\...` instead of `\C:\...`
shim.push_str(&format!(
"
import * as path from 'path';
import * as fs from 'fs';
import * as url from 'url';
import * as process from 'process';
let file = path.dirname(url.parse(import.meta.url).pathname);
if (process.platform === 'win32') {{
file = file.substring(1);
}}
const bytes = fs.readFileSync(path.join(file, '{}'));
",
path.file_name().unwrap().to_str().unwrap()
));
} else {
shim.push_str(&format!(
"
const path = require('path').join(__dirname, '{}');
const bytes = require('fs').readFileSync(path);
",
path.file_name().unwrap().to_str().unwrap()
));
}
shim.push_str(
"
const wasmModule = new WebAssembly.Module(bytes);
const wasmInstance = new WebAssembly.Instance(wasmModule, imports);
wasm = wasmInstance.exports;
module.exports.__wasm = wasm;
",
);
reset_indentation(&shim)
}
/// Performs the task of actually generating the final JS module, be it
/// `--target no-modules`, `--target web`, or for bundlers. This is the very
/// last step performed in `finalize`.
@ -224,11 +303,12 @@ impl<'a> Context<'a> {
OutputMode::Node {
experimental_modules: false,
} => {
js.push_str(&self.generate_node_imports());
js.push_str("let wasm;\n");
for (id, js) in crate::sorted_iter(&self.wasm_import_definitions) {
let import = self.module.imports.get_mut(*id);
import.module = format!("./{}.js", module_name);
footer.push_str("\nmodule.exports.");
footer.push_str(&import.name);
footer.push_str(" = ");
@ -236,7 +316,13 @@ impl<'a> Context<'a> {
footer.push_str(";\n");
}
footer.push_str(&format!("wasm = require('./{}_bg');\n", module_name));
footer.push_str(
&self.generate_node_wasm_loading(&Path::new(&format!(
"./{}_bg.wasm",
module_name
))),
);
if needs_manual_start {
footer.push_str("wasm.__wbindgen_start();\n");
}