JavaScript実装の詳細

JavaScriptのMLE実装は、ECMAScript 2023に準拠しています。

このECMA標準に従って、MLEに見られるJavaScript実装は、純粋な実装として意識的に作成されます。ネイティブJavaScriptネットワークおよびファイルI/O操作は、セキュリティ上の理由からNode.jsおよびDenoと同じ方法ではサポートされていません。MLEではネットワークおよびファイルI/Oを使用できますが、UTL_HTTPUTL_FILEなどのPL/SQL APIを使用する必要があります。

WEB APIのFetchは、デフォルトではグローバル領域で使用できませんが、mle-js-fetchをインポートすることで有効にできます。

Windowオブジェクトなどのフロントエンド・コードで使用される共通オブジェクトを含め、ECMA標準に含まれていないオブジェクトもMLEでは使用できません。ただし、MLEでは、SQLへの簡単かつ効率的なアクセスが可能であり、それをデータの近くで実行できます。コンソール出力は、デフォルトではDBMS_OUTPUTに渡されますが、必要に応じてユーザー指定のCLOBにリダイレクトして格納できます。

ユーザーがMLEと対話するには、特定の権限が必要です。これらは、大まかに次のように分類できます:

  • MLEを使用し、JavaScriptコードを実行する権限

  • データベースでの動的JavaScriptの実行

  • JavaScriptモジュールの作成と、PL/SQLコードによるそれらの外部化

JavaScriptの使用に必要な十分な権限がない場合、データベース・エンジンはエラーをスローします。

互換性のあるWeb API

JavaScript標準ライブラリ内で定義されている多数のWeb APIは、データベース内JavaScriptにおいて直接使用できます。次のリストには、サポートされているAPIと、それぞれで使用可能な特定のシンボルが含まれています。

各Web APIおよび関連するシンボルの詳細は、MDNドキュメントを参照してください。

  • URL API: URL、ドメイン、IPアドレス、application/x-www-form-urlencoded形式およびそれらのAPIを定義します。
    • URL
    • URLSearchParams
  • Streams API: 低レベルI/Oプリミティブに効率的にマップされるデータのストリームを作成、構成および消費するためのAPIを提供します。
    • ReadableStream
    • ReadableByteStreamController
    • ReadableStreamBYOBReader
    • ReadableStreamBYOBRequest
    • ReadableStreamDefaultReader
    • ReadableStreamDefaultController
    • WritableStream
    • WritableStreamDefaultController
    • ByteLengthQueuingStrategy
    • CountQueuingStrategy
    • TransformStream
    • TransformStreamDefaultController
  • Encoding API: テキスト・エンコーディングとそれらのJavaScript APIを定義します。
    • TextEncoderStream
    • TextDecoderStream
  • Compression Streams API: バイナリ・データのストリームを圧縮および圧縮解除する一連のJavaScript APIを定義します。
    • CompressionStream
    • DecompressionStream
  • Document Object Model (DOM)標準: イベント、中断アクティビティおよびノード・ツリーのための、プラットフォームに依存しないモデルを定義します。その他のAPI (たとえば、streams)は、イベント用と中断アクティビティ用のモデルに依存します。次の内容が実装されています:
    • DOMexception
    • AbortSignal
    • AbortController
    • Event
    • EventTarget
    • CustomEvent
  • Windowインタフェース:
    • atob
    • btoa
    • navigator.useragent (ここでのnavigatorはオブジェクトであり、useragentの値は"OracleMLE"です)
    • queueMicrotask
    • structuredClone
  • Performance API:
    • performance.now
    • performance.timeOrigin
  • File API: Webアプリケーション内のファイル・オブジェクトを表すためと、それらをプログラム的に選択するためと、それらのデータにアクセスするためAPIを提供します。
    • Blob (上限1 GB)