Back to Deno

deno web

ext/web/README.md

2.7.149.0 KB
Original Source

deno web

Implements timers, as well as the following APIs:

Note: Testing for text encoding is done via WPT in cli/.

Usage Example

From javascript, include the extension's source:

javascript
import * as infra from "ext:deno_web/00_infra.js";
import * as DOMException from "ext:deno_web/01_dom_exception.js";
import * as mimesniff from "ext:deno_web/01_mimesniff.js";
import * as event from "ext:deno_web/02_event.js";
import * as structuredClone from "ext:deno_web/02_structured_clone.js";
import * as timers from "ext:deno_web/02_timers.js";
import * as abortSignal from "ext:deno_web/03_abort_signal.js";
import * as globalInterfaces from "ext:deno_web/04_global_interfaces.js";
import * as base64 from "ext:deno_web/05_base64.js";
import * as streams from "ext:deno_web/06_streams.js";
import * as encoding from "ext:deno_web/08_text_encoding.js";
import * as file from "ext:deno_web/09_file.js";
import * as fileReader from "ext:deno_web/10_filereader.js";
import * as location from "ext:deno_web/12_location.js";
import * as messagePort from "ext:deno_web/13_message_port.js";
import * as compression from "ext:deno_web/14_compression.js";
import * as performance from "ext:deno_web/15_performance.js";
import * as imageData from "ext:deno_web/16_image_data.js";

Then assign the properties below to the global scope like this example:

javascript
Object.defineProperty(globalThis, "AbortController", {
  value: abortSignal.AbortController,
  enumerable: false,
  configurable: true,
  writable: true,
});
NameValueenumerableconfigurablewriteable
AbortControllerabortSignal.AbortControllerfalsetruetrue
AbortSignalabortSignal.AbortSignalfalsetruetrue
Blobfile.Blobfalsetruetrue
ByteLengthQueuingStrategystreams.ByteLengthQueuingStrategy
CloseEventevent.CloseEventfalsetruetrue
CompressionStreamcompression.CompressionStreamfalsetruetrue
CountQueuingStrategystreams.CountQueuingStrategy
CustomEventevent.CustomEventfalsetruetrue
DecompressionStreamcompression.DecompressionStreamfalsetruetrue
DOMExceptionDOMExceptionfalsetruetrue
ErrorEventevent.ErrorEventfalsetruetrue
Eventevent.Eventfalsetruetrue
EventTargetevent.EventTargetfalsetruetrue
Filefile.Filefalsetruetrue
FileReaderfileReader.FileReaderfalsetruetrue
MessageEventevent.MessageEventfalsetruetrue
Performanceperformance.Performancefalsetruetrue
PerformanceEntryperformance.PerformanceEntryfalsetruetrue
PerformanceMarkperformance.PerformanceMarkfalsetruetrue
PerformanceMeasureperformance.PerformanceMeasurefalsetruetrue
PromiseRejectionEventevent.PromiseRejectionEventfalsetruetrue
ProgressEventevent.ProgressEventfalsetruetrue
ReadableStreamstreams.ReadableStreamfalsetruetrue
ReadableStreamDefaultReaderstreams.ReadableStreamDefaultReader
TextDecoderencoding.TextDecoderfalsetruetrue
TextEncoderencoding.TextEncoderfalsetruetrue
TextDecoderStreamencoding.TextDecoderStreamfalsetruetrue
TextEncoderStreamencoding.TextEncoderStreamfalsetruetrue
TransformStreamstreams.TransformStreamfalsetruetrue
MessageChannelmessagePort.MessageChannelfalsetruetrue
MessagePortmessagePort.MessagePortfalsetruetrue
WritableStreamstreams.WritableStreamfalsetruetrue
WritableStreamDefaultWriterstreams.WritableStreamDefaultWriter
WritableStreamDefaultControllerstreams.WritableStreamDefaultController
ReadableByteStreamControllerstreams.ReadableByteStreamController
ReadableStreamBYOBReaderstreams.ReadableStreamBYOBReader
ReadableStreamBYOBRequeststreams.ReadableStreamBYOBRequest
ReadableStreamDefaultControllerstreams.ReadableStreamDefaultController
TransformStreamDefaultControllerstreams.TransformStreamDefaultController
ImageDataimageData.ImageDatafalsetruetrue
atobbase64.atobtruetruetrue
btoabase64.btoatruetruetrue
clearIntervaltimers.clearIntervaltruetruetrue
clearTimeouttimers.clearTimeouttruetruetrue
performanceperformance.performancetruetruetrue
reportErrorevent.reportErrortruetruetrue
setIntervaltimers.setIntervaltruetruetrue
setTimeouttimers.setTimeouttruetruetrue
structuredClonemessagePort.structuredClonetruetruetrue

Then from rust, provide: deno_web::deno_web::init::<Permissions>(Arc<BlobStore>, Option<Url>) in the extensions field of your RuntimeOptions

Where:

  • Permissions is a struct implementing deno_web::TimersPermission
  • Arc<BlobStore> can be provided by Default::default()
  • Option<Url> provides an optional base URL for certain ops

Dependencies

  • deno_webidl: Provided by the deno_webidl crate

Provided ops

Following ops are provided, which can be accessed through Deno.ops:

  • op_base64_decode
  • op_base64_encode
  • op_base64_atob
  • op_base64_btoa
  • op_encoding_normalize_label
  • op_encoding_decode_single
  • op_encoding_decode_utf8
  • op_encoding_new_decoder
  • op_encoding_decode
  • op_encoding_encode_into
  • op_blob_create_part
  • op_blob_slice_part
  • op_blob_read_part
  • op_blob_remove_part
  • op_blob_create_object_url
  • op_blob_revoke_object_url
  • op_blob_from_object_url
  • op_message_port_create_entangled
  • op_message_port_post_message
  • op_message_port_recv_message
  • op_message_port_recv_message_sync
  • op_compression_new
  • op_compression_write
  • op_compression_finish
  • op_now
  • op_defer
  • op_readable_stream_resource_allocate
  • op_readable_stream_resource_allocate_sized
  • op_readable_stream_resource_get_sink
  • op_readable_stream_resource_write_error
  • op_readable_stream_resource_write_buf
  • op_readable_stream_resource_write_sync
  • op_readable_stream_resource_close
  • op_readable_stream_resource_await_close