Merge pull request #1 from grpc/kjin

Initial import
This commit is contained in:
Nicolas Noble 2017-08-02 15:16:24 -07:00 committed by GitHub
commit e33881e80f
9 changed files with 197 additions and 0 deletions

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
.DS_Store
.vscode
build/
node_modules/
npm-debug.log
yarn-error.log
yarn.lock

86
gulpfile.js Normal file
View File

@ -0,0 +1,86 @@
const gulp = require('gulp');
const merge2 = require('merge2');
const path = require('path');
const sourcemaps = require('gulp-sourcemaps');
const tslint = require('gulp-tslint');
const typescript = require('gulp-typescript');
const tslintPath = './tslint.json'
const tsconfigPath = './tsconfig.json';
const outDir = 'build';
const srcGlob = 'src/**/*.ts';
function onError() {}
function makeCompileFn(dev) {
const tsSettings = dev ? {
noEmitOnError: false,
noUnusedParameters: false
} : {};
return () => {
const { dts, js } = gulp.src(srcGlob)
.pipe(sourcemaps.init())
.pipe(typescript.createProject(tsconfigPath, tsSettings)())
.on('error', onError);
const jsMap = js.pipe(sourcemaps.write('.', {
includeContent: false,
sourceRoot: path.relative(outDir, 'src')
}));
return merge2([
js.pipe(gulp.dest(`${outDir}/src`)),
dts.pipe(gulp.dest(`${outDir}/types`)),
jsMap.pipe(gulp.dest(`${outDir}/src`))
]);
};
}
/**
* Runs tslint on files in src/, with linting rules defined in tslint.json.
*/
gulp.task('lint', () => {
const program = require('tslint').Linter.createProgram(tsconfigPath);
gulp.src(srcGlob)
.pipe(tslint({
configuration: tslintPath,
formatter: 'prose',
program
}))
.pipe(tslint.report())
.on('warning', onError);
});
/**
* Transpiles TypeScript files in src/ to JavaScript according to the settings
* found in tsconfig.json.
* Currently, all errors are emitted twice. This is being tracked here:
* https://github.com/ivogabe/gulp-typescript/issues/438
*/
gulp.task('compile', makeCompileFn(false));
/**
* Starts watching files in src/, running the 'compile' step whenever a file
* changes.
*/
gulp.task('watch', () => {
gulp.start(['compile']);
return gulp.watch(srcGlob, ['compile']);
});
/**
* Transpiles source code with relaxed requirements:
* - Emit output even if there are type-checking errors (this is a workaround
* for the twice-emitted errors in the 'compile' step)
* - Do not emit errors for unused parameters
*/
gulp.task('dev.compile', makeCompileFn(true));
/**
* Watches files similar to the 'watch' step, but runs the 'dev.compile' step
* instead.
*/
gulp.task('dev.watch', () => {
gulp.start(['dev.compile']);
return gulp.watch(srcGlob, ['dev.compile']);
});
gulp.task('default', ['compile']);

24
package.json Normal file
View File

@ -0,0 +1,24 @@
{
"name": "grpc-js",
"version": "0.1.0",
"description": "gRPC Library for Node - pure JS",
"homepage": "https://grpc.io/",
"main": "index.js",
"private": true,
"engines": {
"node": ">=8.3"
},
"keywords": [],
"author": "Google Inc.",
"license": "Apache-2.0",
"devDependencies": {
"@types/node": "^8.0.17",
"clang-format": "^1.0.53",
"gulp": "^3.9.1",
"gulp-sourcemaps": "^2.6.0",
"gulp-tslint": "^8.1.1",
"gulp-typescript": "^3.2.1",
"merge2": "^1.1.0",
"typescript": "^2.4.2"
}
}

1
src/call-credentials.ts Normal file
View File

@ -0,0 +1 @@
export class CallCredentials {}

14
src/call-stream.ts Normal file
View File

@ -0,0 +1,14 @@
import * as stream from 'stream';
import { Status } from './constants';
/**
* This class represents a duplex stream associated with a single gRPC call.
*/
export class CallStream extends stream.Duplex {
/**
* Cancels the call associated with this stream with a given status.
*/
cancelWithStatus(status: Status) {
throw new Error();
}
}

View File

@ -0,0 +1,20 @@
import { CallCredentials } from './call-credentials';
/**
* A class that contains credentials for communicating over a channel.
*/
export class ChannelCredentials {
private constructor() {}
static createSsl(rootCerts: Buffer, privateKey?: Buffer, certChain?: Buffer) : ChannelCredentials {
throw new Error();
}
static createInsecure() : ChannelCredentials {
throw new Error();
}
compose(callCredentials: CallCredentials) : ChannelCredentials {
throw new Error();
}
}

25
src/channel.ts Normal file
View File

@ -0,0 +1,25 @@
import { CallStream } from './call-stream';
import { ChannelCredentials } from './channel-credentials';
import { Metadata } from './metadata';
/**
* An interface that contains options used when initializing a Channel instance.
*/
export interface ChannelOptions {}
/**
* A class that represents a communication channel to a server specified by a given address.
*/
export class Channel {
constructor(address: string, credentials?: ChannelCredentials, options?: ChannelOptions) {
throw new Error();
}
createStream(methodName: string, metadata: Metadata) : CallStream {
throw new Error();
}
close() {
throw new Error();
}
}

19
src/constants.ts Normal file
View File

@ -0,0 +1,19 @@
export enum Status {
OK = 0,
CANCELLED,
UNKNOWN,
INVALID_ARGUMENT,
DEADLINE_EXCEEDED,
NOT_FOUND,
ALREADY_EXISTS,
PERMISSION_DENIED,
RESOURCE_EXHAUSTED,
FAILED_PRECONDITION,
ABORTED,
OUT_OF_RANGE,
UNIMPLEMENTED,
INTERNAL,
UNAVAILABLE,
DATA_LOSS,
UNAUTHENTICATED
}

1
src/metadata.ts Normal file
View File

@ -0,0 +1 @@
export class Metadata {}