천현우

readme update

Showing 42 changed files with 510 additions and 111 deletions
node_modules
\ No newline at end of file
......@@ -11,8 +11,24 @@
## How to Use
1. **[Google Cloud Platform](https://cloud.google.com)** 에 프로젝트를 생성한 후, **Speech-to-Text**의 서비스 계정을 만든다.
2. 서비스 계정의 서비스 계정 키(JSON)을 다운받고, 시스템 환경 변수에 계정 키 경로를 **GOOGLE_APPLICATION_CREDENTIALS**로 저장한다.
* 직접 path에 입력
* Linux/macOS
`export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"`
* Windows
`$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"`
3. 프로젝트를 Clone한다.
`git clone http://khuhub.khu.ac.kr/2019102168/Voicoding.git`
4. domain, port 등을 변경한 후 실행한다.
## Author
* 민병수(Min byeong-soo)
:email: : qud9783@khu.ac.kr
* 천현우(Chon hyun-woo)
:email: : 2019102233@khu.ac.kr
......
......@@ -23,8 +23,8 @@
<li><a href="">Contact</a></li>
</ul>
<ul class="menu_bar_icons">
<li><a = href="https://www.instagram.com/waterinbottle48/"><i class="fab fa-instagram"></i></a></li>
<li><a = href="http://khuhub.khu.ac.kr/2019102168/Voicoding"><i class="fab fa-github"></i></a></li>
<li><a href="https://www.instagram.com/waterinbottle48/"><i class="fab fa-instagram"></i></a></li>
<li><a href="http://khuhub.khu.ac.kr/2019102168/Voicoding"><i class="fab fa-github"></i></a></li>
</ul>
<a href="#" class="menu_toggle"><i class="fas fa-bars"></i></a>
</nav>
......
......@@ -32,7 +32,7 @@ function uploadSoundData(blob) {
let formData = new FormData();
xhr.onload = function(e) {
if(this.readyState === 4) {
document.getElementById("output").innerHTML += `<br><br><strong>Result: </strong>${e.target.responseText}`
document.getElementById("output").innerHTML += '<br><br><strong>Result: </strong>' + JSON.parse(e.target.responseText);
}
};
formData.append("audio_data", blob, filename);
......
......@@ -4,6 +4,13 @@
[1]: https://www.npmjs.com/package/@google-cloud/speech?activeTab=versions
### [4.5.2](https://www.github.com/googleapis/nodejs-speech/compare/v4.5.1...v4.5.2) (2021-05-25)
### Bug Fixes
* GoogleAdsError missing using generator version after 1.3.0 ([#755](https://www.github.com/googleapis/nodejs-speech/issues/755)) ([0f612f3](https://www.github.com/googleapis/nodejs-speech/commit/0f612f3b7fa2430e3ab17dd258ad8c17e578aad9))
### [4.5.1](https://www.github.com/googleapis/nodejs-speech/compare/v4.5.0...v4.5.1) (2021-05-20)
......
......@@ -112,6 +112,9 @@ class SpeechClient {
if (!opts.fallback) {
clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
else if (opts.fallback === 'rest') {
clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
}
......
......@@ -111,6 +111,9 @@ class AdaptationClient {
if (!opts.fallback) {
clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
else if (opts.fallback === 'rest') {
clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
}
......
......@@ -112,6 +112,9 @@ class SpeechClient {
if (!opts.fallback) {
clientHeader.push(`grpc/${this._gaxGrpc.grpcVersion}`);
}
else if (opts.fallback === 'rest') {
clientHeader.push(`rest/${this._gaxGrpc.grpcVersion}`);
}
if (opts.libName && opts.libVersion) {
clientHeader.push(`${opts.libName}/${opts.libVersion}`);
}
......
{
"_from": "@google-cloud/speech",
"_id": "@google-cloud/speech@4.5.1",
"_id": "@google-cloud/speech@4.5.2",
"_inBundle": false,
"_integrity": "sha512-1wyFQ1UTYIfgoMlBveHGvVSqnVzG9r6fjWxJ+A2Z94gSOf9sKb2yZibi9K8ZBdAXadLMwjwa5KERaD7qyk2hiA==",
"_integrity": "sha512-MAxa6tlXzA0ZDL2Or7U7GTjrlbjU7ZpSxAeu0gUe79Df1W3ALcFl33zMJmBAc/xzKWZ+yQ1XIdPIYq2ydam4WQ==",
"_location": "/@google-cloud/speech",
"_phantomChildren": {},
"_requested": {
......@@ -20,8 +20,8 @@
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/@google-cloud/speech/-/speech-4.5.1.tgz",
"_shasum": "e383a19cb923b6eeea750d35c9712cb185b9fab4",
"_resolved": "https://registry.npmjs.org/@google-cloud/speech/-/speech-4.5.2.tgz",
"_shasum": "96fab034f49ecb319c2ed8531cbcfa02b7b9b87c",
"_spec": "@google-cloud/speech",
"_where": "C:\\Users\\1000c\\이것저것\\옾소\\Voicoding",
"author": {
......@@ -46,7 +46,7 @@
"@microsoft/api-documenter": "^7.8.10",
"@microsoft/api-extractor": "^7.8.10",
"@types/mocha": "^8.0.0",
"@types/node": "^12.0.0",
"@types/node": "^14.0.0",
"@types/sinon": "^10.0.0",
"c8": "^7.0.0",
"codecov": "^3.0.2",
......@@ -58,7 +58,7 @@
"mocha": "^8.0.0",
"null-loader": "^4.0.0",
"pack-n-play": "^1.0.0-2",
"sinon": "^10.0.0",
"sinon": "^11.0.0",
"ts-loader": "^8.0.0",
"typescript": "^3.8.3",
"webpack": "^5.0.0",
......@@ -113,5 +113,5 @@
"system-test": "c8 mocha build/system-test/*.js --timeout 600000",
"test": "c8 mocha build/test/*.js"
},
"version": "4.5.1"
"version": "4.5.2"
}
......
......@@ -8,7 +8,7 @@ This package contains type definitions for Node.js (http://nodejs.org/).
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
### Additional Details
* Last updated: Wed, 02 Jun 2021 07:31:33 GMT
* Last updated: Thu, 03 Jun 2021 14:01:34 GMT
* Dependencies: none
* Global values: `AbortController`, `AbortSignal`, `Buffer`, `__dirname`, `__filename`, `clearImmediate`, `clearInterval`, `clearTimeout`, `console`, `exports`, `global`, `module`, `process`, `queueMicrotask`, `require`, `setImmediate`, `setInterval`, `setTimeout`
......
declare module 'buffer' {
import { BinaryLike } from 'crypto';
export const INSPECT_MAX_BYTES: number;
export const kMaxLength: number;
export const kStringMaxLength: number;
......@@ -19,4 +21,64 @@ declare module 'buffer' {
};
export { BuffType as Buffer };
/**
* @experimental
*/
export interface BlobOptions {
/**
* @default 'utf8'
*/
encoding?: BufferEncoding;
/**
* The Blob content-type. The intent is for `type` to convey
* the MIME media type of the data, however no validation of the type format
* is performed.
*/
type?: string;
}
/**
* @experimental
*/
export class Blob {
/**
* Returns a promise that fulfills with an {ArrayBuffer} containing a copy of the `Blob` data.
*/
readonly size: number;
/**
* The content-type of the `Blob`.
*/
readonly type: string;
/**
* Creates a new `Blob` object containing a concatenation of the given sources.
*
* {ArrayBuffer}, {TypedArray}, {DataView}, and {Buffer} sources are copied into
* the 'Blob' and can therefore be safely modified after the 'Blob' is created.
*
* String sources are also copied into the `Blob`.
*/
constructor(sources: Array<(BinaryLike | Blob)>, options?: BlobOptions);
arrayBuffer(): Promise<ArrayBuffer>;
/**
* @param start The starting index.
* @param end The ending index.
* @param type The content-type for the new `Blob`
*/
slice(start?: number, end?: number, type?: string): Blob;
/**
* Returns a promise that resolves the contents of the `Blob` decoded as a UTF-8 string.
*/
text(): Promise<string>;
}
}
declare module 'node:buffer' {
export * from 'buffer';
}
......
......@@ -4,7 +4,7 @@ declare module 'child_process' {
import * as net from 'net';
import { Writable, Readable, Stream, Pipe } from 'stream';
type Serializable = string | object | number | boolean;
type Serializable = string | object | number | boolean | bigint;
type SendHandle = net.Socket | net.Server;
interface ChildProcess extends EventEmitter {
......@@ -20,7 +20,7 @@ declare module 'child_process' {
Readable | Writable | null | undefined // extra
];
readonly killed: boolean;
readonly pid: number;
readonly pid?: number;
readonly connected: boolean;
readonly exitCode: number | null;
readonly signalCode: NodeJS.Signals | null;
......@@ -135,12 +135,18 @@ declare module 'child_process' {
type SerializationType = 'json' | 'advanced';
interface MessagingOptions {
interface MessagingOptions extends Abortable {
/**
* Specify the kind of serialization used for sending messages between processes.
* @default 'json'
*/
serialization?: SerializationType;
/**
* The signal value to be used when the spawned process will be killed by the abort signal.
* @default 'SIGTERM'
*/
killSignal?: NodeJS.Signals | number;
}
interface ProcessEnvOptions {
......@@ -451,7 +457,6 @@ declare module 'child_process' {
interface SpawnSyncOptions extends CommonSpawnOptions {
input?: string | NodeJS.ArrayBufferView;
killSignal?: NodeJS.Signals | number;
maxBuffer?: number;
encoding?: BufferEncoding | 'buffer' | null;
}
......
......@@ -197,6 +197,45 @@ declare module 'crypto' {
passphrase?: string | Buffer;
}
interface JwkKeyExportOptions {
format: 'jwk';
}
interface JsonWebKey {
crv?: string;
d?: string;
dp?: string;
dq?: string;
e?: string;
k?: string;
kty?: string;
n?: string;
p?: string;
q?: string;
qi?: string;
x?: string;
y?: string;
}
interface AsymmetricKeyDetails {
/**
* Key size in bits (RSA, DSA).
*/
modulusLength?: number;
/**
* Public exponent (RSA).
*/
publicExponent?: bigint;
/**
* Size of q in bits (DSA).
*/
divisorLength?: number;
/**
* Name of the curve (EC).
*/
namedCurve?: string;
}
class KeyObject {
private constructor();
asymmetricKeyType?: KeyType;
......@@ -205,6 +244,13 @@ declare module 'crypto' {
* bytes. This property is `undefined` for symmetric keys.
*/
asymmetricKeySize?: number;
/**
* This property exists only on asymmetric keys. Depending on the type of the key,
* this object contains information about the key. None of the information obtained
* through this property can be used to uniquely identify a key or to compromise the
* security of the key.
*/
asymmetricKeyDetails?: AsymmetricKeyDetails;
export(options: KeyExportOptions<'pem'>): string | Buffer;
export(options?: KeyExportOptions<'der'>): Buffer;
symmetricKeySize?: number;
......@@ -1163,22 +1209,28 @@ declare module 'crypto' {
* algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
* dependent upon the key type (especially Ed25519 and Ed448).
*
* If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
* passed to [`crypto.createPrivateKey()`][].
* If `key` is not a `KeyObject`, this function behaves as if `key` had been
* passed to `crypto.createPrivateKey().
*/
function sign(
algorithm: string | null | undefined,
data: NodeJS.ArrayBufferView,
key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput,
): Buffer;
function sign(
algorithm: string | null | undefined,
data: NodeJS.ArrayBufferView,
key: KeyLike | SignKeyObjectInput | SignPrivateKeyInput,
callback: (error: Error | null, data: Buffer) => void
): void;
/**
* Calculates and returns the signature for `data` using the given private key and
* algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
* dependent upon the key type (especially Ed25519 and Ed448).
*
* If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
* passed to [`crypto.createPublicKey()`][].
* If `key` is not a `KeyObject`, this function behaves as if `key` had been
* passed to `crypto.createPublicKey()`.
*/
function verify(
algorithm: string | null | undefined,
......@@ -1186,6 +1238,13 @@ declare module 'crypto' {
key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput,
signature: NodeJS.ArrayBufferView,
): boolean;
function verify(
algorithm: string | null | undefined,
data: NodeJS.ArrayBufferView,
key: KeyLike | VerifyKeyObjectInput | VerifyPublicKeyInput,
signature: NodeJS.ArrayBufferView,
callback: (error: Error | null, result: boolean) => void
): void;
/**
* Computes the Diffie-Hellman secret based on a privateKey and a publicKey.
......@@ -1254,7 +1313,7 @@ declare module 'crypto' {
*
* The supplied `callback` function is called with two arguments: `err` and `derivedKey`.
* If an errors occurs while deriving the key, `err` will be set; otherwise `err` will be `null`.
* The successfully generated `derivedKey` will be passed to the callback as an [`ArrayBuffer`][].
* The successfully generated `derivedKey` will be passed to the callback as an `ArrayBuffer`.
* An error will be thrown if any of the input aguments specify invalid values or types.
*/
function hkdf(digest: string, key: BinaryLike | KeyObject, salt: BinaryLike, info: BinaryLike, keylen: number, callback: (err: Error | null, derivedKey: ArrayBuffer) => any): void;
......@@ -1263,7 +1322,7 @@ declare module 'crypto' {
* Provides a synchronous HKDF key derivation function as defined in RFC 5869.
* The given `key`, `salt` and `info` are used with the `digest` to derive a key of `keylen` bytes.
*
* The successfully generated `derivedKey` will be returned as an [`ArrayBuffer`][].
* The successfully generated `derivedKey` will be returned as an `ArrayBuffer`.
* An error will be thrown if any of the input aguments specify invalid values or types,
* or if the derived key cannot be generated.
*/
......@@ -1373,6 +1432,16 @@ declare module 'crypto' {
readonly keyUsage: string[];
/**
* The issuer identification included in this certificate.
*/
readonly issuer: string;
/**
* The issuer certificate or `undefined` if the issuer certificate is not available.
*/
readonly issuerCertificate?: X509Certificate;
/**
* The public key for this certificate.
*/
readonly publicKey: KeyObject;
......@@ -1438,7 +1507,7 @@ declare module 'crypto' {
toJSON(): string;
/**
* Returns information about this certificate using the legacy [certificate object][] encoding.
* Returns information about this certificate using the legacy certificate object encoding.
*/
toLegacyObject(): PeerCertificate;
......@@ -1453,4 +1522,57 @@ declare module 'crypto' {
*/
verify(publicKey: KeyObject): boolean;
}
type LargeNumberLike = NodeJS.ArrayBufferView | SharedArrayBuffer | ArrayBuffer | bigint;
interface GeneratePrimeOptions {
add?: LargeNumberLike;
rem?: LargeNumberLike;
/**
* @default false
*/
safe?: boolean;
bigint?: boolean;
}
interface GeneratePrimeOptionsBigInt extends GeneratePrimeOptions {
bigint: true;
}
interface GeneratePrimeOptionsArrayBuffer extends GeneratePrimeOptions {
bigint?: false;
}
function generatePrime(size: number, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
function generatePrime(size: number, options: GeneratePrimeOptionsBigInt, callback: (err: Error | null, prime: bigint) => void): void;
function generatePrime(size: number, options: GeneratePrimeOptionsArrayBuffer, callback: (err: Error | null, prime: ArrayBuffer) => void): void;
function generatePrime(size: number, options: GeneratePrimeOptions, callback: (err: Error | null, prime: ArrayBuffer | bigint) => void): void;
function generatePrimeSync(size: number): ArrayBuffer;
function generatePrimeSync(size: number, options: GeneratePrimeOptionsBigInt): bigint;
function generatePrimeSync(size: number, options: GeneratePrimeOptionsArrayBuffer): ArrayBuffer;
function generatePrimeSync(size: number, options: GeneratePrimeOptions): ArrayBuffer | bigint;
interface CheckPrimeOptions {
/**
* The number of Miller-Rabin probabilistic primality iterations to perform.
* When the value is 0 (zero), a number of checks is used that yields a false positive rate of at most 2-64 for random input.
* Care must be used when selecting a number of checks.
* Refer to the OpenSSL documentation for the BN_is_prime_ex function nchecks options for more details.
*
* @default 0
*/
checks?: number;
}
/**
* Checks the primality of the candidate.
*/
function checkPrime(value: LargeNumberLike, callback: (err: Error | null, result: boolean) => void): void;
function checkPrime(value: LargeNumberLike, options: CheckPrimeOptions, callback: (err: Error | null, result: boolean) => void): void;
/**
* Checks the primality of the candidate.
*/
function checkPrimeSync(value: LargeNumberLike, options?: CheckPrimeOptions): boolean;
}
......
declare module 'dgram' {
import { AddressInfo } from 'net';
import * as dns from 'dns';
import EventEmitter = require('events');
import { EventEmitter, Abortable } from 'events';
interface RemoteInfo {
address: string;
......@@ -19,7 +19,7 @@ declare module 'dgram' {
type SocketType = "udp4" | "udp6";
interface SocketOptions {
interface SocketOptions extends Abortable {
type: SocketType;
reuseAddr?: boolean;
/**
......
This diff is collapsed. Click to expand it.
......@@ -17,6 +17,7 @@ declare module 'fs/promises' {
BufferEncodingOption,
OpenMode,
Mode,
WatchOptions,
} from 'fs';
interface FileHandle {
......@@ -555,4 +556,37 @@ declare module 'fs/promises' {
function readFile(path: PathLike | FileHandle, options?: BaseEncodingOptions & Abortable & { flag?: OpenMode } | BufferEncoding | null): Promise<string | Buffer>;
function opendir(path: string, options?: OpenDirOptions): Promise<Dir>;
/**
* Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
* @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
* @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
* If `encoding` is not supplied, the default of `'utf8'` is used.
* If `persistent` is not supplied, the default of `true` is used.
* If `recursive` is not supplied, the default of `false` is used.
*/
function watch(filename: PathLike, options: WatchOptions & { encoding: "buffer" } | "buffer"): AsyncIterable<Buffer>;
/**
* Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
* @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
* @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
* If `encoding` is not supplied, the default of `'utf8'` is used.
* If `persistent` is not supplied, the default of `true` is used.
* If `recursive` is not supplied, the default of `false` is used.
*/
function watch(
filename: PathLike,
options?: WatchOptions | BufferEncoding
): AsyncIterable<string>;
/**
* Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
* @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
* @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
* If `encoding` is not supplied, the default of `'utf8'` is used.
* If `persistent` is not supplied, the default of `true` is used.
* If `recursive` is not supplied, the default of `false` is used.
*/
function watch(filename: PathLike, options: WatchOptions | string): AsyncIterable<string> | AsyncIterable<Buffer>;
}
......
......@@ -37,9 +37,9 @@ interface ImportMeta {
------------------------------------------------*/
// For backwards compability
interface NodeRequire extends NodeJS.Require {}
interface RequireResolve extends NodeJS.RequireResolve {}
interface NodeModule extends NodeJS.Module {}
interface NodeRequire extends NodeJS.Require { }
interface RequireResolve extends NodeJS.RequireResolve { }
interface NodeModule extends NodeJS.Module { }
declare var process: NodeJS.Process;
declare var console: Console;
......@@ -318,6 +318,7 @@ interface AbortController {
/**
* Returns the AbortSignal object associated with this object.
*/
readonly signal: AbortSignal;
/**
* Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted.
......@@ -331,6 +332,11 @@ interface AbortSignal {
* Returns true if this AbortSignal's AbortController has signaled to abort, and false otherwise.
*/
readonly aborted: boolean;
/**
* Invoking this method will set this object's AbortSignal's aborted flag and signal to any observers that the associated activity is to be aborted.
*/
abort(): void;
}
declare var AbortController: {
......
......@@ -107,7 +107,7 @@ declare module 'http' {
ServerResponse?: typeof ServerResponse;
/**
* Optionally overrides the value of
* [`--max-http-header-size`][] for requests received by this server, i.e.
* `--max-http-header-size` for requests received by this server, i.e.
* the maximum length of request headers in bytes.
* @default 8192
*/
......@@ -156,7 +156,8 @@ declare module 'http' {
// https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js
class OutgoingMessage extends stream.Writable {
upgrading: boolean;
readonly req: IncomingMessage;
chunkedEncoding: boolean;
shouldKeepAlive: boolean;
useChunkedEncodingByDefault: boolean;
......@@ -165,12 +166,12 @@ declare module 'http' {
* @deprecated Use `writableEnded` instead.
*/
finished: boolean;
headersSent: boolean;
readonly headersSent: boolean;
/**
* @deprecated Use `socket` instead.
*/
connection: Socket | null;
socket: Socket | null;
readonly connection: Socket | null;
readonly socket: Socket | null;
constructor();
......@@ -420,7 +421,14 @@ declare module 'http' {
/**
* Read-only property specifying the maximum allowed size of HTTP headers in bytes.
* Defaults to 16KB. Configurable using the [`--max-http-header-size`][] CLI option.
* Defaults to 16KB. Configurable using the `--max-http-header-size` CLI option.
*/
const maxHeaderSize: number;
/**
*
* This utility function converts a URL object into an ordinary options object as
* expected by the `http.request()` and `https.request()` APIs.
*/
function urlToHttpOptions(url: URL): ClientRequestArgs;
}
......
......@@ -438,6 +438,13 @@ declare module 'http2' {
paddingStrategy?: number;
peerMaxConcurrentStreams?: number;
settings?: Settings;
/**
* Specifies a timeout in milliseconds that
* a server should wait when an [`'unknownProtocol'`][] is emitted. If the
* socket has not been destroyed by that time the server will destroy it.
* @default 100000
*/
unknownProtocolTimeout?: number;
selectPadding?(frameLen: number, maxFrameLen: number): number;
createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex;
......
// Type definitions for non-npm package Node.js 15.6
// Type definitions for non-npm package Node.js 15.12
// Project: http://nodejs.org/
// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
// DefinitelyTyped <https://github.com/DefinitelyTyped>
......@@ -50,9 +50,9 @@
// NOTE: TypeScript version-specific augmentations can be found in the following paths:
// - ~/base.d.ts - Shared definitions common to all TypeScript versions
// - ~/index.d.ts - Definitions specific to TypeScript 2.8
// - ~/ts3.5/index.d.ts - Definitions specific to TypeScript 3.5
// - ~/index.d.ts - Definitions specific to TypeScript 3.7
// - ~/ts3.6/index.d.ts - Definitions specific to TypeScript 3.6
// NOTE: Augmentations for TypeScript 3.5 and later should use individual files for overrides
// within the respective ~/ts3.5 (or later) folder. However, this is disallowed for versions
// prior to TypeScript 3.5, so the older definitions will be found here.
// NOTE: Augmentations for TypeScript 3.6 and later should use individual files for overrides
// within the respective ~/ts3.6 (or later) folder. However, this is disallowed for versions
// prior to TypeScript 3.6, so the older definitions will be found here.
......
......@@ -212,7 +212,7 @@ declare module 'os' {
/**
* Returns a string identifying the kernel version.
* On POSIX systems, the operating system release is determined by calling
* [uname(3)][]. On Windows, `pRtlGetVersion` is used, and if it is not available,
* uname(3). On Windows, `pRtlGetVersion` is used, and if it is not available,
* `GetVersionExW()` will be used. See
* https://en.wikipedia.org/wiki/Uname#Examples for more information.
*/
......
{
"_from": "@types/node@*",
"_id": "@types/node@15.6.2",
"_id": "@types/node@15.12.0",
"_inBundle": false,
"_integrity": "sha512-dxcOx8801kMo3KlU+C+/ctWrzREAH7YvoF3aoVpRdqgs+Kf7flp+PJDN/EX5bME3suDUZHsxes9hpvBmzYlWbA==",
"_integrity": "sha512-+aHJvoCsVhO2ZCuT4o5JtcPrCPyDE3+1nvbDprYes+pPkEsbjH7AGUCNtjMOXS0fqH14t+B7yLzaqSz92FPWyw==",
"_location": "/@types/node",
"_phantomChildren": {},
"_requested": {
......@@ -22,8 +22,8 @@
"/@types/pumpify",
"/protobufjs"
],
"_resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.2.tgz",
"_shasum": "c61d49f38af70da32424b5322eee21f97e627175",
"_resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.0.tgz",
"_shasum": "6a459d261450a300e6865faeddb5af01c3389bb3",
"_spec": "@types/node@*",
"_where": "C:\\Users\\1000c\\이것저것\\옾소\\Voicoding\\node_modules\\@types\\pumpify",
"bugs": {
......@@ -211,7 +211,7 @@
"scripts": {},
"typeScriptVersion": "3.6",
"types": "index.d.ts",
"typesPublisherContentHash": "f62422deccbd466260cb63740d207022259eb7fc7b6e7c406be463b9d1b0cd19",
"typesPublisherContentHash": "2af6053c97f2d873b354fa2bd898df70fe2271585814d07e724e3f12c08d719e",
"typesVersions": {
"<=3.6": {
"*": [
......@@ -219,5 +219,5 @@
]
}
},
"version": "15.6.2"
"version": "15.12.0"
}
......
......@@ -3,7 +3,8 @@ declare module 'perf_hooks' {
type EntryType = 'node' | 'mark' | 'measure' | 'gc' | 'function' | 'http2' | 'http';
interface PerformanceEntry {
class PerformanceEntry {
protected constructor();
/**
* The total number of milliseconds elapsed for this entry.
* This value will not be meaningful for all Performance Entry types.
......@@ -41,7 +42,7 @@ declare module 'perf_hooks' {
readonly flags?: number;
}
interface PerformanceNodeTiming extends PerformanceEntry {
class PerformanceNodeTiming extends PerformanceEntry {
/**
* The high resolution millisecond timestamp at which the Node.js process completed bootstrap.
*/
......@@ -221,15 +222,36 @@ declare module 'perf_hooks' {
resolution?: number;
}
interface EventLoopDelayMonitor {
interface Histogram {
/**
* Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started.
* A `Map` object detailing the accumulated percentile distribution.
*/
enable(): boolean;
readonly percentiles: Map<number, number>;
/**
* Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped.
* The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold.
*/
disable(): boolean;
readonly exceeds: number;
/**
* The minimum recorded event loop delay.
*/
readonly min: number;
/**
* The maximum recorded event loop delay.
*/
readonly max: number;
/**
* The mean of the recorded event loop delays.
*/
readonly mean: number;
/**
* The standard deviation of the recorded event loop delays.
*/
readonly stddev: number;
/**
* Resets the collected histogram data.
......@@ -241,37 +263,48 @@ declare module 'perf_hooks' {
* @param percentile A percentile value between 1 and 100.
*/
percentile(percentile: number): number;
}
interface IntervalHistogram extends Histogram {
/**
* A `Map` object detailing the accumulated percentile distribution.
* Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started.
*/
readonly percentiles: Map<number, number>;
enable(): boolean;
/**
* The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold.
* Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped.
*/
readonly exceeds: number;
disable(): boolean;
}
interface RecordableHistogram extends Histogram {
record(val: number | bigint): void;
/**
* The minimum recorded event loop delay.
* Calculates the amount of time (in nanoseconds) that has passed since the previous call to recordDelta() and records that amount in the histogram.
*/
readonly min: number;
recordDelta(): void;
}
function monitorEventLoopDelay(options?: EventLoopMonitorOptions): IntervalHistogram;
interface CreateHistogramOptions {
/**
* The maximum recorded event loop delay.
* The minimum recordable value. Must be an integer value greater than 0.
* @default 1
*/
readonly max: number;
min?: number | bigint;
/**
* The mean of the recorded event loop delays.
* The maximum recordable value. Must be an integer value greater than min.
* @default Number.MAX_SAFE_INTEGER
*/
readonly mean: number;
max?: number | bigint;
/**
* The standard deviation of the recorded event loop delays.
* The number of accuracy digits. Must be a number between 1 and 5.
* @default 3
*/
readonly stddev: number;
figures?: number;
}
function monitorEventLoopDelay(options?: EventLoopMonitorOptions): EventLoopDelayMonitor;
function createHistogram(options?: CreateHistogramOptions): RecordableHistogram;
}
......
......@@ -336,7 +336,7 @@ declare module 'process' {
/**
* The `process.allowedNodeEnvironmentFlags` property is a special,
* read-only `Set` of flags allowable within the [`NODE_OPTIONS`][]
* read-only `Set` of flags allowable within the `NODE_OPTIONS`
* environment variable.
*/
allowedNodeEnvironmentFlags: ReadonlySet<string>;
......
declare module 'readline' {
import EventEmitter = require('events');
import { Abortable, EventEmitter } from 'events';
interface Key {
sequence?: string;
......@@ -42,6 +42,7 @@ declare module 'readline' {
setPrompt(prompt: string): void;
prompt(preserveCursor?: boolean): void;
question(query: string, callback: (answer: string) => void): void;
question(query: string, options: Abortable, callback: (answer: string) => void): void;
pause(): this;
resume(): this;
close(): void;
......@@ -63,8 +64,8 @@ declare module 'readline' {
* 5. SIGCONT
* 6. SIGINT
* 7. SIGTSTP
* 8. history
*/
addListener(event: string, listener: (...args: any[]) => void): this;
addListener(event: "close", listener: () => void): this;
addListener(event: "line", listener: (input: string) => void): this;
......@@ -73,6 +74,7 @@ declare module 'readline' {
addListener(event: "SIGCONT", listener: () => void): this;
addListener(event: "SIGINT", listener: () => void): this;
addListener(event: "SIGTSTP", listener: () => void): this;
addListener(event: "history", listener: (history: string[]) => void): this;
emit(event: string | symbol, ...args: any[]): boolean;
emit(event: "close"): boolean;
......@@ -82,6 +84,7 @@ declare module 'readline' {
emit(event: "SIGCONT"): boolean;
emit(event: "SIGINT"): boolean;
emit(event: "SIGTSTP"): boolean;
emit(event: "history", history: string[]): boolean;
on(event: string, listener: (...args: any[]) => void): this;
on(event: "close", listener: () => void): this;
......@@ -91,6 +94,7 @@ declare module 'readline' {
on(event: "SIGCONT", listener: () => void): this;
on(event: "SIGINT", listener: () => void): this;
on(event: "SIGTSTP", listener: () => void): this;
on(event: "history", listener: (history: string[]) => void): this;
once(event: string, listener: (...args: any[]) => void): this;
once(event: "close", listener: () => void): this;
......@@ -100,6 +104,7 @@ declare module 'readline' {
once(event: "SIGCONT", listener: () => void): this;
once(event: "SIGINT", listener: () => void): this;
once(event: "SIGTSTP", listener: () => void): this;
once(event: "history", listener: (history: string[]) => void): this;
prependListener(event: string, listener: (...args: any[]) => void): this;
prependListener(event: "close", listener: () => void): this;
......@@ -109,6 +114,7 @@ declare module 'readline' {
prependListener(event: "SIGCONT", listener: () => void): this;
prependListener(event: "SIGINT", listener: () => void): this;
prependListener(event: "SIGTSTP", listener: () => void): this;
prependListener(event: "history", listener: (history: string[]) => void): this;
prependOnceListener(event: string, listener: (...args: any[]) => void): this;
prependOnceListener(event: "close", listener: () => void): this;
......@@ -118,6 +124,8 @@ declare module 'readline' {
prependOnceListener(event: "SIGCONT", listener: () => void): this;
prependOnceListener(event: "SIGINT", listener: () => void): this;
prependOnceListener(event: "SIGTSTP", listener: () => void): this;
prependOnceListener(event: "history", listener: (history: string[]) => void): this;
[Symbol.asyncIterator](): AsyncIterableIterator<string>;
}
......@@ -133,9 +141,22 @@ declare module 'readline' {
output?: NodeJS.WritableStream;
completer?: Completer | AsyncCompleter;
terminal?: boolean;
/**
* Initial list of history lines. This option makes sense
* only if `terminal` is set to `true` by the user or by an internal `output`
* check, otherwise the history caching mechanism is not initialized at all.
* @default []
*/
history?: string[];
historySize?: number;
prompt?: string;
crlfDelay?: number;
/**
* If `true`, when a new input line added
* to the history list duplicates an older one, this removes the older line
* from the list.
* @default false
*/
removeHistoryDuplicates?: boolean;
escapeCodeTimeout?: number;
tabSize?: number;
......
......@@ -301,7 +301,7 @@ declare module 'stream' {
*/
function addAbortSignal<T extends Stream>(signal: AbortSignal, stream: T): T;
interface FinishedOptions {
interface FinishedOptions extends Abortable {
error?: boolean;
readable?: boolean;
writable?: boolean;
......
declare module 'timers' {
interface TimerOptions {
import { Abortable } from 'events';
interface TimerOptions extends Abortable {
/**
* Set to `false` to indicate that the scheduled `Timeout`
* should not require the Node.js event loop to remain active.
* @default true
*/
ref?: boolean;
/**
* An optional `AbortSignal` that can be used to cancel the scheduled `Timeout`.
*/
signal?: AbortSignal;
}
function setTimeout(callback: (...args: any[]) => void, ms?: number, ...args: any[]): NodeJS.Timeout;
......
......@@ -3,11 +3,19 @@ declare module 'timers/promises' {
/**
* Returns a promise that resolves after the specified delay in milliseconds.
* @param delay defaults to 1
*/
function setTimeout<T>(delay: number, value?: T, options?: TimerOptions): Promise<T>;
function setTimeout<T = void>(delay?: number, value?: T, options?: TimerOptions): Promise<T>;
/**
* Returns a promise that resolves in the next tick.
*/
function setImmediate<T>(value: T, options?: TimerOptions): Promise<T>;
function setImmediate<T = void>(value?: T, options?: TimerOptions): Promise<T>;
/**
*
* Returns an async iterator that generates values in an interval of delay ms.
* @param delay defaults to 1
*/
function setInterval<T = void>(delay?: number, value?: T, options?: TimerOptions): AsyncIterable<T>;
}
......
declare module 'tls' {
import { X509Certificate } from 'crypto';
import * as net from 'net';
const CLIENT_RENEG_LIMIT: number;
......@@ -296,6 +297,16 @@ declare module 'tls' {
enableTrace(): void;
/**
* If there is no peer certificate, or the socket has been destroyed, `undefined` will be returned.
*/
getPeerX509Certificate(): X509Certificate | undefined;
/**
* If there is no local certificate, or the socket has been destroyed, `undefined` will be returned.
*/
getX509Certificate(): X509Certificate | undefined;
/**
* @param length number of bytes to retrieve from keying material
* @param label an application specific label, typically this will be a value from the
* [IANA Exporter Label Registry](https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#exporter-labels).
......
......@@ -3,8 +3,8 @@
// NOTE: TypeScript version-specific augmentations can be found in the following paths:
// - ~/base.d.ts - Shared definitions common to all TypeScript versions
// - ~/index.d.ts - Definitions specific to TypeScript 3.7 and above
// - ~/ts3.5/base.d.ts - Definitions specific to TypeScript 3.6 and earlier
// - ~/ts3.5/index.d.ts - Definitions specific to TypeScript 3.6 and earlier with assert pulled in
// - ~/ts3.6/base.d.ts - Definitions specific to TypeScript 3.6 and earlier
// - ~/ts3.6/index.d.ts - Definitions specific to TypeScript 3.6 and earlier with assert pulled in
// Reference required types from the default lib:
/// <reference lib="es2018" />
......@@ -61,8 +61,8 @@
/// <reference path="../worker_threads.d.ts" />
/// <reference path="../zlib.d.ts" />
// TypeScript 3.5-specific augmentations:
// TypeScript 3.6-specific augmentations:
/// <reference path="../globals.global.d.ts" />
// TypeScript 3.5-specific augmentations:
// TypeScript 3.6-specific augmentations:
/// <reference path="../wasi.d.ts" />
......
// NOTE: These definitions support NodeJS and TypeScript 3.5 - 3.6.
// NOTE: These definitions support NodeJS and TypeScript 3.6.
// This is required to enable typing assert in ts3.7 without causing errors
// Typically type modifications should be made in base.d.ts instead of here
......
......@@ -58,7 +58,7 @@ declare module 'wasi' {
* invoke the `__wasi_unstable_reactor_start()` export. If neither of those exports
* is present on `instance`, then `start()` does nothing.
*
* `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named
* `start()` requires that `instance` exports a `WebAssembly.Memory` named
* `memory`. If `instance` does not have a `memory` export an exception is thrown.
*
* If `start()` is called more than once, an exception is thrown.
......@@ -69,7 +69,7 @@ declare module 'wasi' {
* Attempt to initialize `instance` as a WASI reactor by invoking its `_initialize()` export, if it is present.
* If `instance` contains a `_start()` export, then an exception is thrown.
*
* `start()` requires that `instance` exports a [`WebAssembly.Memory`][] named
* `start()` requires that `instance` exports a `WebAssembly.Memory` named
* `memory`. If `instance` does not have a `memory` export an exception is thrown.
*
* If `initialize()` is called more than once, an exception is thrown.
......@@ -79,7 +79,7 @@ declare module 'wasi' {
/**
* Is an object that implements the WASI system call API. This object
* should be passed as the `wasi_snapshot_preview1` import during the instantiation of a
* [`WebAssembly.Instance`][].
* `WebAssembly.Instance`.
*/
readonly wasiImport: NodeJS.Dict<any>; // TODO: Narrow to DOM types
}
......
declare module 'worker_threads' {
import { Blob } from 'node:buffer';
import { Context } from 'vm';
import { EventEmitter } from 'events';
import { EventLoopUtilityFunction } from 'perf_hooks';
......@@ -23,7 +24,7 @@ declare module 'worker_threads' {
eventLoopUtilization: EventLoopUtilityFunction;
}
type TransferListItem = ArrayBuffer | MessagePort | FileHandle | X509Certificate;
type TransferListItem = ArrayBuffer | MessagePort | FileHandle | X509Certificate | Blob;
class MessagePort extends EventEmitter {
close(): void;
......@@ -145,11 +146,11 @@ declare module 'worker_threads' {
/**
* Returns a readable stream for a V8 snapshot of the current state of the Worker.
* See [`v8.getHeapSnapshot()`][] for more details.
* See `v8.getHeapSnapshot()` for more details.
*
* If the Worker thread is no longer running, which may occur before the
* [`'exit'` event][] is emitted, the returned `Promise` will be rejected
* immediately with an [`ERR_WORKER_NOT_RUNNING`][] error
* `'exit'` event is emitted, the returned `Promise` will be rejected
* immediately with an `ERR_WORKER_NOT_RUNNING` error
*/
getHeapSnapshot(): Promise<Readable>;
......@@ -261,4 +262,21 @@ declare module 'worker_threads' {
* `MessagePort`’s queue.
*/
function receiveMessageOnPort(port: MessagePort): { message: any } | undefined;
type Serializable = string | object | number | boolean | bigint;
/**
* @param key Any arbitrary, cloneable JavaScript value that can be used as a {Map} key.
* @experimental
*/
function getEnvironmentData(key: Serializable): Serializable;
/**
* @param key Any arbitrary, cloneable JavaScript value that can be used as a {Map} key.
* @param value Any arbitrary, cloneable JavaScript value that will be cloned
* and passed automatically to all new `Worker` instances. If `value` is passed
* as `undefined`, any previously set value for the `key` will be deleted.
* @experimental
*/
function setEnvironmentData(key: Serializable, value: Serializable): void;
}
......
......@@ -4,6 +4,13 @@
[1]: https://www.npmjs.com/package/google-auth-library-nodejs?activeTab=versions
### [7.1.1](https://www.github.com/googleapis/google-auth-library-nodejs/compare/v7.1.0...v7.1.1) (2021-06-02)
### Bug Fixes
* **deps:** update dependency puppeteer to v10 ([#1182](https://www.github.com/googleapis/google-auth-library-nodejs/issues/1182)) ([003e3ee](https://www.github.com/googleapis/google-auth-library-nodejs/commit/003e3ee5d8aeb749c07a4a4db2b75a5882988cc3))
## [7.1.0](https://www.github.com/googleapis/google-auth-library-nodejs/compare/v7.0.4...v7.1.0) (2021-05-21)
......
......@@ -64,7 +64,9 @@ class OAuth2Client extends authclient_1.AuthClient {
opts.scope = opts.scope.join(' ');
}
const rootUrl = OAuth2Client.GOOGLE_OAUTH2_AUTH_BASE_URL_;
return rootUrl + '?' + querystring.stringify(opts);
return (rootUrl +
'?' +
querystring.stringify(opts));
}
generateCodeVerifier() {
// To make the code compatible with browser SubtleCrypto we need to make
......
{
"_from": "google-auth-library@^7.0.2",
"_id": "google-auth-library@7.1.0",
"_id": "google-auth-library@7.1.1",
"_inBundle": false,
"_integrity": "sha512-X+gbkGjnLN3HUZP2W3KBREuA603BXd80ITvL0PeS0QpyDNYz/u0pIZ7aRuGnrSuUc0grk/qxEgtVTFt1ogbP+A==",
"_integrity": "sha512-+Q1linq/To3DYLyPz4UTEkQ0v5EOXadMM/S+taLV3W9611hq9zqg8kgGApqbTQnggtwdO9yU1y2YT7+83wdTRg==",
"_location": "/google-auth-library",
"_phantomChildren": {},
"_requested": {
......@@ -19,8 +19,8 @@
"/@google-cloud/common",
"/google-gax"
],
"_resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.1.0.tgz",
"_shasum": "d83b6bed1d170e30649e15e9b5b17cb375e88919",
"_resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.1.1.tgz",
"_shasum": "aa901f14e97a4ca458f426417216e01b360c2b55",
"_spec": "google-auth-library@^7.0.2",
"_where": "C:\\Users\\1000c\\이것저것\\옾소\\Voicoding\\node_modules\\@google-cloud\\common",
"author": {
......@@ -54,7 +54,7 @@
"@types/mocha": "^8.0.0",
"@types/mv": "^2.1.0",
"@types/ncp": "^2.0.1",
"@types/node": "^10.5.1",
"@types/node": "^14.0.0",
"@types/sinon": "^10.0.0",
"@types/tmp": "^0.2.0",
"assert-rejects": "^1.0.0",
......@@ -79,8 +79,8 @@
"ncp": "^2.0.0",
"nock": "^13.0.0",
"null-loader": "^4.0.0",
"puppeteer": "^8.0.0",
"sinon": "^10.0.0",
"puppeteer": "^10.0.0",
"sinon": "^11.0.0",
"tmp": "^0.2.0",
"ts-loader": "^8.0.0",
"typescript": "^3.8.3",
......@@ -132,5 +132,5 @@
"webpack": "webpack"
},
"types": "./build/src/index.d.ts",
"version": "7.1.0"
"version": "7.1.1"
}
......
{
"requires": true,
"name": "voicoding",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@google-cloud/common": {
"version": "3.6.0",
......@@ -29,9 +31,9 @@
"integrity": "sha512-d4VSA86eL/AFTe5xtyZX+ePUjE8dIFu2T8zmdeNBSa5/kNgXPCx/o/wbFNHAGLJdGnk1vddRuMESD9HbOC8irw=="
},
"@google-cloud/speech": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@google-cloud/speech/-/speech-4.5.1.tgz",
"integrity": "sha512-1wyFQ1UTYIfgoMlBveHGvVSqnVzG9r6fjWxJ+A2Z94gSOf9sKb2yZibi9K8ZBdAXadLMwjwa5KERaD7qyk2hiA==",
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/@google-cloud/speech/-/speech-4.5.2.tgz",
"integrity": "sha512-MAxa6tlXzA0ZDL2Or7U7GTjrlbjU7ZpSxAeu0gUe79Df1W3ALcFl33zMJmBAc/xzKWZ+yQ1XIdPIYq2ydam4WQ==",
"requires": {
"@google-cloud/common": "^3.0.0",
"@types/pumpify": "^1.4.1",
......@@ -135,9 +137,9 @@
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
},
"@types/node": {
"version": "15.6.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.2.tgz",
"integrity": "sha512-dxcOx8801kMo3KlU+C+/ctWrzREAH7YvoF3aoVpRdqgs+Kf7flp+PJDN/EX5bME3suDUZHsxes9hpvBmzYlWbA=="
"version": "15.12.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.0.tgz",
"integrity": "sha512-+aHJvoCsVhO2ZCuT4o5JtcPrCPyDE3+1nvbDprYes+pPkEsbjH7AGUCNtjMOXS0fqH14t+B7yLzaqSz92FPWyw=="
},
"@types/pumpify": {
"version": "1.4.1",
......@@ -622,9 +624,9 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"google-auth-library": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.1.0.tgz",
"integrity": "sha512-X+gbkGjnLN3HUZP2W3KBREuA603BXd80ITvL0PeS0QpyDNYz/u0pIZ7aRuGnrSuUc0grk/qxEgtVTFt1ogbP+A==",
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.1.1.tgz",
"integrity": "sha512-+Q1linq/To3DYLyPz4UTEkQ0v5EOXadMM/S+taLV3W9611hq9zqg8kgGApqbTQnggtwdO9yU1y2YT7+83wdTRg==",
"requires": {
"arrify": "^2.0.0",
"base64-js": "^1.3.0",
......
{
"name": "voicoding",
"version": "1.0.0",
"description": "Voicoding",
"main": "voicoding.js",
"dependencies": {
"@google-cloud/speech": "^4.5.2",
"express": "^4.17.1",
"fs": "^0.0.1-security",
"multer": "^1.4.2",
"node-record-lpcm16": "^1.0.1"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "http://khuhub.khu.ac.kr/2019102168/Voicoding.git"
},
"author": "",
"license": "ISC"
}
No preview for this file type