2 /* --------------------------------------------------------------------------------------------
3 * Copyright (c) Microsoft Corporation. All rights reserved.
4 * Licensed under the MIT License. See License.txt in the project root for license information.
5 * ------------------------------------------------------------------------------------------ */
6 Object.defineProperty(exports, "__esModule", { value: true });
7 const ral_1 = require("../common/ral");
8 const util_1 = require("util");
9 const disposable_1 = require("../common/disposable");
10 const messageBuffer_1 = require("../common/messageBuffer");
11 class MessageBuffer extends messageBuffer_1.AbstractMessageBuffer {
12 constructor(encoding = 'utf-8') {
16 return MessageBuffer.emptyBuffer;
18 fromString(value, encoding) {
19 return Buffer.from(value, encoding);
21 toString(value, encoding) {
22 if (value instanceof Buffer) {
23 return value.toString(encoding);
26 return new util_1.TextDecoder(encoding).decode(value);
29 asNative(buffer, length) {
30 if (length === undefined) {
31 return buffer instanceof Buffer ? buffer : Buffer.from(buffer);
34 return buffer instanceof Buffer ? buffer.slice(0, length) : Buffer.from(buffer, 0, length);
38 return Buffer.allocUnsafe(length);
41 MessageBuffer.emptyBuffer = Buffer.allocUnsafe(0);
42 class ReadableStreamWrapper {
47 this.stream.on('close', listener);
48 return disposable_1.Disposable.create(() => this.stream.off('close', listener));
51 this.stream.on('error', listener);
52 return disposable_1.Disposable.create(() => this.stream.off('error', listener));
55 this.stream.on('end', listener);
56 return disposable_1.Disposable.create(() => this.stream.off('end', listener));
59 this.stream.on('data', listener);
60 return disposable_1.Disposable.create(() => this.stream.off('data', listener));
63 class WritableStreamWrapper {
68 this.stream.on('close', listener);
69 return disposable_1.Disposable.create(() => this.stream.off('close', listener));
72 this.stream.on('error', listener);
73 return disposable_1.Disposable.create(() => this.stream.off('error', listener));
76 this.stream.on('end', listener);
77 return disposable_1.Disposable.create(() => this.stream.off('end', listener));
79 write(data, encoding) {
80 return new Promise((resolve, reject) => {
81 const callback = (error) => {
82 if (error === undefined || error === null) {
89 if (typeof data === 'string') {
90 this.stream.write(data, encoding, callback);
93 this.stream.write(data, callback);
101 const _ril = Object.freeze({
102 messageBuffer: Object.freeze({
103 create: (encoding) => new MessageBuffer(encoding)
105 applicationJson: Object.freeze({
106 encoder: Object.freeze({
107 name: 'application/json',
108 encode: (msg, options) => {
110 return Promise.resolve(Buffer.from(JSON.stringify(msg, undefined, 0), options.charset));
113 return Promise.reject(err);
117 decoder: Object.freeze({
118 name: 'application/json',
119 decode: (buffer, options) => {
121 if (buffer instanceof Buffer) {
122 return Promise.resolve(JSON.parse(buffer.toString(options.charset)));
125 return Promise.resolve(JSON.parse(new util_1.TextDecoder(options.charset).decode(buffer)));
129 return Promise.reject(err);
134 stream: Object.freeze({
135 asReadableStream: (stream) => new ReadableStreamWrapper(stream),
136 asWritableStream: (stream) => new WritableStreamWrapper(stream)
139 timer: Object.freeze({
140 setTimeout(callback, ms, ...args) {
141 return setTimeout(callback, ms, ...args);
143 clearTimeout(handle) {
144 clearTimeout(handle);
146 setImmediate(callback, ...args) {
147 return setImmediate(callback, ...args);
149 clearImmediate(handle) {
150 clearImmediate(handle);
159 ral_1.default.install(_ril);
161 RIL.install = install;
162 })(RIL || (RIL = {}));
163 exports.default = RIL;
164 //# sourceMappingURL=ril.js.map