--- /dev/null
+"use strict";
+/* --------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ * ------------------------------------------------------------------------------------------ */
+Object.defineProperty(exports, "__esModule", { value: true });
+const ral_1 = require("../common/ral");
+const util_1 = require("util");
+const disposable_1 = require("../common/disposable");
+const messageBuffer_1 = require("../common/messageBuffer");
+class MessageBuffer extends messageBuffer_1.AbstractMessageBuffer {
+ constructor(encoding = 'utf-8') {
+ super(encoding);
+ }
+ emptyBuffer() {
+ return MessageBuffer.emptyBuffer;
+ }
+ fromString(value, encoding) {
+ return Buffer.from(value, encoding);
+ }
+ toString(value, encoding) {
+ if (value instanceof Buffer) {
+ return value.toString(encoding);
+ }
+ else {
+ return new util_1.TextDecoder(encoding).decode(value);
+ }
+ }
+ asNative(buffer, length) {
+ if (length === undefined) {
+ return buffer instanceof Buffer ? buffer : Buffer.from(buffer);
+ }
+ else {
+ return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);
+ }
+ }
+ allocNative(length) {
+ return Buffer.allocUnsafe(length);
+ }
+}
+MessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);
+class ReadableStreamWrapper {
+ constructor(stream) {
+ this.stream = stream;
+ }
+ onClose(listener) {
+ this.stream.on('close', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('close', listener));
+ }
+ onError(listener) {
+ this.stream.on('error', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('error', listener));
+ }
+ onEnd(listener) {
+ this.stream.on('end', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('end', listener));
+ }
+ onData(listener) {
+ this.stream.on('data', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('data', listener));
+ }
+}
+class WritableStreamWrapper {
+ constructor(stream) {
+ this.stream = stream;
+ }
+ onClose(listener) {
+ this.stream.on('close', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('close', listener));
+ }
+ onError(listener) {
+ this.stream.on('error', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('error', listener));
+ }
+ onEnd(listener) {
+ this.stream.on('end', listener);
+ return disposable_1.Disposable.create(() => this.stream.off('end', listener));
+ }
+ write(data, encoding) {
+ return new Promise((resolve, reject) => {
+ const callback = (error) => {
+ if (error === undefined || error === null) {
+ resolve();
+ }
+ else {
+ reject(error);
+ }
+ };
+ if (typeof data === 'string') {
+ this.stream.write(data, encoding, callback);
+ }
+ else {
+ this.stream.write(data, callback);
+ }
+ });
+ }
+ end() {
+ this.stream.end();
+ }
+}
+const _ril = Object.freeze({
+ messageBuffer: Object.freeze({
+ create: (encoding) => new MessageBuffer(encoding)
+ }),
+ applicationJson: Object.freeze({
+ encoder: Object.freeze({
+ name: 'application/json',
+ encode: (msg, options) => {
+ try {
+ return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));
+ }
+ catch (err) {
+ return Promise.reject(err);
+ }
+ }
+ }),
+ decoder: Object.freeze({
+ name: 'application/json',
+ decode: (buffer, options) => {
+ try {
+ if (buffer instanceof Buffer) {
+ return Promise.resolve(JSON.parse(buffer.toString(options.charset)));
+ }
+ else {
+ return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));
+ }
+ }
+ catch (err) {
+ return Promise.reject(err);
+ }
+ }
+ })
+ }),
+ stream: Object.freeze({
+ asReadableStream: (stream) => new ReadableStreamWrapper(stream),
+ asWritableStream: (stream) => new WritableStreamWrapper(stream)
+ }),
+ console: console,
+ timer: Object.freeze({
+ setTimeout(callback, ms, ...args) {
+ return setTimeout(callback, ms, ...args);
+ },
+ clearTimeout(handle) {
+ clearTimeout(handle);
+ },
+ setImmediate(callback, ...args) {
+ return setImmediate(callback, ...args);
+ },
+ clearImmediate(handle) {
+ clearImmediate(handle);
+ }
+ })
+});
+function RIL() {
+ return _ril;
+}
+(function (RIL) {
+ function install() {
+ ral_1.default.install(_ril);
+ }
+ RIL.install = install;
+})(RIL || (RIL = {}));
+exports.default = RIL;
+//# sourceMappingURL=ril.js.map
\ No newline at end of file