From ff8567534907d3cb165d847a6faab43084b124a2 Mon Sep 17 00:00:00 2001 From: Yulong Date: Thu, 7 Jun 2018 01:40:59 +0800 Subject: [PATCH] try typescript in kibana `plugin (#2) * try typescript in kibana `plugin * compile js and ts from protobuf message --- kibana-extra/castro/build.gradle | 14 +- kibana-extra/castro/package.json | 8 +- kibana-extra/castro/proto/Example.proto | 18 + .../castro/public/components/main/main.js | 104 ------ .../castro/public/components/main/main.tsx | 116 +++++++ kibana-extra/castro/server/routes/example.js | 43 --- kibana-extra/castro/server/routes/example.ts | 48 +++ kibana-extra/castro/tsconfig.json | 47 +++ kibana-extra/castro/yarn.lock | 325 +++++++++++++++++- 9 files changed, 569 insertions(+), 154 deletions(-) create mode 100644 kibana-extra/castro/proto/Example.proto delete mode 100644 kibana-extra/castro/public/components/main/main.js create mode 100644 kibana-extra/castro/public/components/main/main.tsx delete mode 100644 kibana-extra/castro/server/routes/example.js create mode 100644 kibana-extra/castro/server/routes/example.ts create mode 100644 kibana-extra/castro/tsconfig.json diff --git a/kibana-extra/castro/build.gradle b/kibana-extra/castro/build.gradle index 82dd9acb9d0f2f..b5ecca999e7ec8 100644 --- a/kibana-extra/castro/build.gradle +++ b/kibana-extra/castro/build.gradle @@ -9,11 +9,21 @@ node { download = true } +task generateProtoJs(type: NodeTask) { + script = file('node_modules/.bin/pbjs') + args = ['-t', 'static-module', '-w', 'commonjs', '--no-delimited', '--no-encode', '--no-decode', '--es6', '-o', 'common/proto.js', 'proto/*.proto'] +} + +task generateProto(type: NodeTask, dependsOn: [generateProtoJs]) { + script = file('node_modules/.bin/pbts') + args = ['-o', 'common/proto.d.ts', 'common/proto.js'] +} + task bootstrap(type: YarnTask) { args = ['kbn', 'bootstrap'] } -task startKibana(type: YarnTask) { +task startKibana(type: YarnTask, dependsOn: [generateProto]) { args = ['start', '--elasticsearch.url', 'http://localhost:9201'] } @@ -31,7 +41,7 @@ task setupKibana(type: Sync, dependsOn: downloadKibana) { eachFile { FileCopyDetails fcp -> if (fcp.relativePath.pathString.startsWith("kibana-${kibanaVersion}/")) { def segments = fcp.relativePath.segments - def pathsegments =segments[1..-1] as String[] + def pathsegments = segments[1..-1] as String[] fcp.relativePath = new RelativePath(!fcp.file.isDirectory(), pathsegments) } else { fcp.exclude() diff --git a/kibana-extra/castro/package.json b/kibana-extra/castro/package.json index 6d57586bb25923..c1d27f9f14f548 100644 --- a/kibana-extra/castro/package.json +++ b/kibana-extra/castro/package.json @@ -19,7 +19,11 @@ "devDependencies": { "@elastic/eslint-config-kibana": "link:../../kibana/packages/eslint-config-kibana", "@elastic/eslint-import-resolver-kibana": "^0.9.0", + "@elastic/eui": "^0.0.51", "@kbn/plugin-helpers": "link:../../kibana/packages/kbn-plugin-helpers", + "@types/hapi": "^17.0.12", + "@types/nodegit": "^0.18.8", + "@types/react": "^16.3.16", "babel-eslint": "^8.0.2", "eslint": "^4.11.0", "eslint-plugin-babel": "^4.1.1", @@ -29,8 +33,10 @@ "eslint-plugin-prefer-object-spread": "^1.2.1", "eslint-plugin-react": "^7.0.1", "expect.js": "^0.3.1" + }, "dependencies": { - "nodegit": "^0.22.1" + "nodegit": "^0.22.1", + "protobufjs": "^6.8.6" } } diff --git a/kibana-extra/castro/proto/Example.proto b/kibana-extra/castro/proto/Example.proto new file mode 100644 index 00000000000000..d77f2a28f7bacc --- /dev/null +++ b/kibana-extra/castro/proto/Example.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +option java_package = "castro"; +option java_multiple_files = true; + +message Commit { + string commit = 1; + string committer = 2; + string date = 3; + string message= 4; + repeated Entry entries = 5; +} + +message Entry { + string path = 1; + string blob = 2; + bool isBinary = 3; +} diff --git a/kibana-extra/castro/public/components/main/main.js b/kibana-extra/castro/public/components/main/main.js deleted file mode 100644 index 41ea68ceb604e8..00000000000000 --- a/kibana-extra/castro/public/components/main/main.js +++ /dev/null @@ -1,104 +0,0 @@ -import React from "react"; -import { - EuiPage, - EuiPageHeader, - EuiTitle, - EuiPageBody, - EuiPageContent, - EuiPageContentHeader, - EuiPageContentBody, - EuiText, - EuiDescriptionList, - EuiAccordion, - EuiCodeBlock, - EuiSpacer -} from "@elastic/eui"; - -export class Main extends React.Component { - constructor(props) { - super(props); - this.state = { - commitInfo: [], - entries: [] - }; - } - - componentDidMount() { - /* - FOR EXAMPLE PURPOSES ONLY. There are much better ways to - manage state and update your UI than this. - */ - const { httpClient } = this.props; - httpClient.get("../api/castro/example").then((resp) => { - const data = resp.data; - const commitInfo = [ - { - title: "Commit", - description: data.commit - }, - { - title: "Date", - description: data.date - }, - { - title: "Committer", - description: data.committer - }, - { - title: "Message", - description: data.message - } - ] - - this.setState({ commitInfo, entries: data.entries }); - }); - } - render() { - const { title } = this.props; - return ( - - - -

{title} Hello World!

-
-
- - - - -

Current Commit

-
-
- - - - -

Changed files

-
- - { - this.state.entries.map((entry,idx) => - - - {entry.blob} - - - - ) - } -
-
-
-
- ); - } - -}; diff --git a/kibana-extra/castro/public/components/main/main.tsx b/kibana-extra/castro/public/components/main/main.tsx new file mode 100644 index 00000000000000..638bfa3dc4ff77 --- /dev/null +++ b/kibana-extra/castro/public/components/main/main.tsx @@ -0,0 +1,116 @@ +import React from "react"; +import { + EuiPage, + EuiPageHeader, + EuiTitle, + EuiPageBody, + EuiPageContent, + EuiPageContentHeader, + EuiPageContentBody, + EuiText, + EuiDescriptionList, + EuiAccordion, + EuiCodeBlock, + EuiSpacer +} from "@elastic/eui"; +import {ICommit, IEntry} from '../../../common/proto' + +interface MainProps { + title: String, + httpClient: any +} + +interface MainState { + entries: IEntry[], + commitInfo: Array<{title: string, description?: string | null }> +} + +export class Main extends React.Component { + constructor(props: MainProps) { + super(props); + this.state = { + commitInfo: [], + entries: [] + }; + } + + componentDidMount() { + /* + FOR EXAMPLE PURPOSES ONLY. There are much better ways to + manage state and update your UI than this. + */ + const {httpClient} = this.props; + httpClient.get("../api/castro/example").then((resp) => { + const data: ICommit = resp.data; + const commitInfo = [ + { + title: "Commit", + description: data.commit + }, + { + title: "Date", + description: data.date + }, + { + title: "Committer", + description: data.committer + }, + { + title: "Message", + description: data.message + } + ]; + + this.setState({commitInfo, entries: data.entries || []}); + }); + } + + render() { + const {title} = this.props; + return ( + + + +

Hello {title}!

+
+
+ + + + +

Current Commit

+
+
+ + + + +

Changed files

+
+ + { + this.state.entries.map((entry, idx) => + + + {entry.blob} + + + + ) + } +
+
+
+
+ ); + } + +}; diff --git a/kibana-extra/castro/server/routes/example.js b/kibana-extra/castro/server/routes/example.js deleted file mode 100644 index a710364c9e2fcc..00000000000000 --- a/kibana-extra/castro/server/routes/example.js +++ /dev/null @@ -1,43 +0,0 @@ -const Git = require("nodegit"); -const Path = require("path"); - -export default function (server) { - - server.route({ - path: '/api/castro/example', - method: 'GET', - handler(req, reply) { - const repodir = Path.join(__dirname, "../../../../"); - console.log("repodir is " + repodir) - const result = {} - Git.Repository.open(repodir).then(function (repo) { - return repo.getMasterCommit(); - }).then(function(commit){ - console.log("commit is "+ commit) - result["commit"] = commit.id().tostrS(); - result["committer"] = commit.committer().toString(); - result["message"] = commit.message(); - result["date"] = commit.date().toLocaleDateString(); - return commit.getTree(); - }).then(function (tree) { - result["entries"] = []; - var walker = tree.walk(); - walker.on("entry", function(entry) { - entry.getBlob().then(function(blob){ - const isBinary = blob.isBinary === 1 - result.entries.push({ path: entry.path(), - blob: isBinary ? "binary" : blob.toString(), - isBinary: isBinary - }); - }) - }); - walker.on("end", function(){ - reply(result) - }) - walker.start(); - - }); - } - }) - -} diff --git a/kibana-extra/castro/server/routes/example.ts b/kibana-extra/castro/server/routes/example.ts new file mode 100644 index 00000000000000..a10043c3a94d6f --- /dev/null +++ b/kibana-extra/castro/server/routes/example.ts @@ -0,0 +1,48 @@ +import {TreeEntry} from "nodegit"; +import * as Hapi from 'hapi'; +import {Commit} from '../../common/proto' + +const Git = require("nodegit"); +const Path = require("path"); + + +async function getHeadCommit(): Promise { + const repodir = Path.join(__dirname, "../../../../"); + + const repo = await Git.Repository.open(repodir); + const commit = await repo.getMasterCommit(); + + const result = Commit.create({ + commit: commit.id().tostrS(), + committer: commit.committer().toString(), + message: commit.message(), + date: commit.date().toLocaleDateString() + }); + const tree = await commit.getTree(); + const walker = tree.walk(true); + walker.on("entry", async (entry: TreeEntry) => { + const blob = await entry.getBlob(); + result.entries.push({ + path: entry.path(), + isBinary: blob.isBinary() === 1, + blob: blob.isBinary() === 1 ? "binary" : blob.toString() + }) + }); + walker.start(); + return await (new Promise(function (resolve, reject) { + walker.on("end", () => { + resolve(result) + }) + })); +} + +export default function (server: Hapi.Server) { + server.route({ + path: '/api/castro/example', + method: 'GET', + handler(req: Hapi.Request, reply: any) { + getHeadCommit().then((result: Commit) => reply(result)) + } + }) + +} diff --git a/kibana-extra/castro/tsconfig.json b/kibana-extra/castro/tsconfig.json new file mode 100644 index 00000000000000..46ff93065bb9f3 --- /dev/null +++ b/kibana-extra/castro/tsconfig.json @@ -0,0 +1,47 @@ +{ + "compilerOptions": { + "baseUrl": ".", + + // Support .tsx files and transform JSX into calls to React.createElement + "jsx": "react", + + // Enables all strict type checking options. + "strict": true, + + // enables "core language features" + "lib": [ + // ESNext auto includes previous versions all the way back to es5 + "esnext", + // includes support for browser APIs + "dom" + ], + + // Node 8 should support everything output by esnext, we override this + // in webpack with loader-level compiler options + "target": "esnext", + + // Use commonjs for node, overriden in webpack to keep import statements + // to maintain support for things like `await import()` + "module": "commonjs", + + // Allows default imports from modules with no default export. This does not affect code emit, just type checking. + // We have to enable this option explicitly since `esModuleInterop` doesn't enable it automatically when ES2015 or + // ESNext module format is used. + "allowSyntheticDefaultImports": true, + + // Emits __importStar and __importDefault helpers for runtime babel ecosystem compatibility. + "esModuleInterop": true, + + // Resolve modules in the same way as Node.js. Aka make `require` works the + // same in TypeScript as it does in Node.js. + "moduleResolution": "node", + + // Disallow inconsistently-cased references to the same file. + "forceConsistentCasingInFileNames": true + }, + "include": [ + "server/**/*", + "public/**/*", + "common/**/*" + ] +} diff --git a/kibana-extra/castro/yarn.lock b/kibana-extra/castro/yarn.lock index 7d25992da6da1f..2cbd5599055c1c 100644 --- a/kibana-extra/castro/yarn.lock +++ b/kibana-extra/castro/yarn.lock @@ -92,10 +92,155 @@ glob-all "^3.1.0" webpack "3.6.0" +"@elastic/eui@^0.0.51": + version "0.0.51" + resolved "http://registry.npm.taobao.org/@elastic/eui/download/@elastic/eui-0.0.51.tgz#5d809af270dd9994a609fd01eaa84e21a62fff98" + dependencies: + brace "^0.10.0" + classnames "^2.2.5" + core-js "^2.5.1" + focus-trap-react "^3.0.4" + highlight.js "^9.12.0" + html "^1.0.0" + keymirror "^0.1.1" + lodash "^3.10.1" + numeral "^2.0.6" + prop-types "^15.6.0" + react-ace "^5.5.0" + react-color "^2.13.8" + react-datepicker v1.4.1 + react-input-autosize "^2.2.1" + react-virtualized "^9.18.5" + tabbable "^1.1.0" + uuid "^3.1.0" + "@kbn/plugin-helpers@link:../../kibana/packages/kbn-plugin-helpers": version "0.0.0" uid "" +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + +"@types/boom@*": + version "7.2.0" + resolved "http://registry.npm.taobao.org/@types/boom/download/@types/boom-7.2.0.tgz#19c36cbb5811a7493f0f2e37f31d42b28df1abc1" + +"@types/catbox@*": + version "10.0.0" + resolved "http://registry.npm.taobao.org/@types/catbox/download/@types/catbox-10.0.0.tgz#1e01e5ad83e224f110cc59f6f57c56558f7eeb61" + +"@types/events@*": + version "1.2.0" + resolved "http://registry.npm.taobao.org/@types/events/download/@types/events-1.2.0.tgz#81a6731ce4df43619e5c8c945383b3e62a89ea86" + +"@types/hapi@^17.0.12": + version "17.0.12" + resolved "http://registry.npm.taobao.org/@types/hapi/download/@types/hapi-17.0.12.tgz#5751f4d8db4decb4eae6671a4efbeae671278ceb" + dependencies: + "@types/boom" "*" + "@types/catbox" "*" + "@types/iron" "*" + "@types/joi" "*" + "@types/mimos" "*" + "@types/node" "*" + "@types/podium" "*" + "@types/shot" "*" + +"@types/iron@*": + version "5.0.1" + resolved "http://registry.npm.taobao.org/@types/iron/download/@types/iron-5.0.1.tgz#5420bbda8623c48ee51b9a78ebad05d7305b4b24" + dependencies: + "@types/node" "*" + +"@types/joi@*": + version "13.0.8" + resolved "http://registry.npm.taobao.org/@types/joi/download/@types/joi-13.0.8.tgz#224d5da224036f0c15b35e6980ba9de63b8ea374" + +"@types/long@^3.0.32": + version "3.0.32" + resolved "https://registry.yarnpkg.com/@types/long/-/long-3.0.32.tgz#f4e5af31e9e9b196d8e5fca8a5e2e20aa3d60b69" + +"@types/mime-db@*": + version "1.27.0" + resolved "http://registry.npm.taobao.org/@types/mime-db/download/@types/mime-db-1.27.0.tgz#9bc014a1fd1fdf47649c1a54c6dd7966b8284792" + +"@types/mimos@*": + version "3.0.1" + resolved "http://registry.npm.taobao.org/@types/mimos/download/@types/mimos-3.0.1.tgz#59d96abe1c9e487e7463fe41e8d86d76b57a441a" + dependencies: + "@types/mime-db" "*" + +"@types/node@*": + version "10.3.1" + resolved "http://registry.npm.taobao.org/@types/node/download/@types/node-10.3.1.tgz#51092fbacaed768a122a293814474fbf6e5e8b6d" + +"@types/node@^8.9.4": + version "8.10.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.18.tgz#eb9ad8b0723d13fa9bc8b42543e3661ed805f2bb" + +"@types/nodegit@^0.18.8": + version "0.18.8" + resolved "http://registry.npm.taobao.org/@types/nodegit/download/@types/nodegit-0.18.8.tgz#183ceb43fd494cc413d36c54014c8639f1fe60db" + dependencies: + "@types/events" "*" + "@types/node" "*" + +"@types/podium@*": + version "1.0.0" + resolved "http://registry.npm.taobao.org/@types/podium/download/@types/podium-1.0.0.tgz#bfaa2151be2b1d6109cc69f7faa9dac2cba3bb20" + +"@types/react@^16.3.16": + version "16.3.16" + resolved "http://registry.npm.taobao.org/@types/react/download/@types/react-16.3.16.tgz#78fc44a90b45701f50c8a7008f733680ba51fc86" + dependencies: + csstype "^2.2.0" + +"@types/shot@*": + version "3.4.0" + resolved "http://registry.npm.taobao.org/@types/shot/download/@types/shot-3.4.0.tgz#459477c5187d3ebd303660ab099e7e9e0f3b656f" + dependencies: + "@types/node" "*" + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -490,6 +635,16 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace@^0.10.0: + version "0.10.0" + resolved "http://registry.npm.taobao.org/brace/download/brace-0.10.0.tgz#edef4eb9b0928ba1ee5f717ffc157749a6dd5d76" + dependencies: + w3c-blob "0.0.1" + +brace@^0.11.0: + version "0.11.1" + resolved "http://registry.npm.taobao.org/brace/download/brace-0.11.1.tgz#4896fcc9d544eef45f4bb7660db320d3b379fe58" + braces@^2.3.0, braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -734,6 +889,10 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +classnames@^2.2.3, classnames@^2.2.5: + version "2.2.5" + resolved "http://registry.npm.taobao.org/classnames/download/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -887,7 +1046,7 @@ core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" -core-js@^2.4.0: +core-js@^2.4.0, core-js@^2.5.1: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" @@ -970,6 +1129,10 @@ crypto-random-string@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" +csstype@^2.2.0: + version "2.5.3" + resolved "http://registry.npm.taobao.org/csstype/download/csstype-2.5.3.tgz#2504152e6e1cc59b32098b7f5d6a63f16294c1f7" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" @@ -1122,6 +1285,10 @@ doctrine@^2.0.2, doctrine@^2.1.0: dependencies: esutils "^2.0.2" +"dom-helpers@^2.4.0 || ^3.0.0": + version "3.3.1" + resolved "http://registry.npm.taobao.org/dom-helpers/download/dom-helpers-3.3.1.tgz#fc1a4e15ffdf60ddde03a480a9c0fece821dd4a6" + domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" @@ -1668,6 +1835,18 @@ flush-write-stream@^1.0.2: inherits "^2.0.1" readable-stream "^2.0.4" +focus-trap-react@^3.0.4: + version "3.1.2" + resolved "http://registry.npm.taobao.org/focus-trap-react/download/focus-trap-react-3.1.2.tgz#4dd021ccd028bbd3321147d132cdf7585d6d1394" + dependencies: + focus-trap "^2.0.1" + +focus-trap@^2.0.1: + version "2.4.5" + resolved "http://registry.npm.taobao.org/focus-trap/download/focus-trap-2.4.5.tgz#91c9c9ffb907f8f4446d80202dda9c12c2853ddb" + dependencies: + tabbable "^1.0.3" + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2046,6 +2225,10 @@ highlight-es@^1.0.0: is-es2016-keyword "^1.0.0" js-tokens "^3.0.0" +highlight.js@^9.12.0: + version "9.12.0" + resolved "http://registry.npm.taobao.org/highlight.js/download/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" + hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -2068,6 +2251,12 @@ hosted-git-info@^2.1.4: version "2.6.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" +html@^1.0.0: + version "1.0.0" + resolved "http://registry.npm.taobao.org/html/download/html-1.0.0.tgz#a544fa9ea5492bfb3a2cca8210a10be7b5af1f61" + dependencies: + concat-stream "^1.4.7" + http-signature@~1.1.0: version "1.1.1" resolved "http://registry.npm.taobao.org/http-signature/download/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -2583,6 +2772,10 @@ jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" +keymirror@^0.1.1: + version "0.1.1" + resolved "http://registry.npm.taobao.org/keymirror/download/keymirror-0.1.1.tgz#918889ea13f8d0a42e7c557250eee713adc95c35" + kind-of@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" @@ -2703,23 +2896,39 @@ lodash.get@^3.7.0: lodash._baseget "^3.0.0" lodash._topath "^3.0.0" +lodash.get@^4.4.2: + version "4.4.2" + resolved "http://registry.npm.taobao.org/lodash.get/download/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isequal@^4.1.1: + version "4.5.0" + resolved "http://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" -"lodash@4.6.1 || ^4.16.1", lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.7.0: +"lodash@4.6.1 || ^4.16.1", lodash@^4.0.1, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.7.0: version "4.17.10" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" +lodash@^3.10.1: + version "3.10.1" + resolved "http://registry.npm.taobao.org/lodash/download/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" -loose-envify@^1.0.0, loose-envify@^1.3.1: +loose-envify@^1.0.0, loose-envify@^1.3.0, loose-envify@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" dependencies: @@ -2763,6 +2972,10 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +material-colors@^1.2.1: + version "1.2.6" + resolved "http://registry.npm.taobao.org/material-colors/download/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" + md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" @@ -3157,6 +3370,10 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +numeral@^2.0.6: + version "2.0.6" + resolved "http://registry.npm.taobao.org/numeral/download/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506" + oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -3436,6 +3653,10 @@ pluralize@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" +popper.js@^1.14.1: + version "1.14.3" + resolved "http://registry.npm.taobao.org/popper.js/download/popper.js-1.14.3.tgz#1438f98d046acf7b4d78cd502bf418ac64d4f095" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -3472,7 +3693,7 @@ promisify-node@~0.3.0: dependencies: nodegit-promise "~4.0.0" -prop-types@^15.6.0: +prop-types@^15.5.10, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1: version "15.6.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.1.tgz#36644453564255ddda391191fb3a125cbdf654ca" dependencies: @@ -3480,6 +3701,24 @@ prop-types@^15.6.0: loose-envify "^1.3.1" object-assign "^4.1.1" +protobufjs@^6.8.6: + version "6.8.6" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.6.tgz#ce3cf4fff9625b62966c455fc4c15e4331a11ca2" + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^3.0.32" + "@types/node" "^8.9.4" + long "^4.0.0" + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -3563,6 +3802,72 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.1.7: minimist "^1.2.0" strip-json-comments "~2.0.1" +react-ace@^5.5.0: + version "5.10.0" + resolved "http://registry.npm.taobao.org/react-ace/download/react-ace-5.10.0.tgz#e328b37ac52759f700be5afdb86ada2f5ec84c5e" + dependencies: + brace "^0.11.0" + lodash.get "^4.4.2" + lodash.isequal "^4.1.1" + prop-types "^15.5.8" + +react-color@^2.13.8: + version "2.14.1" + resolved "http://registry.npm.taobao.org/react-color/download/react-color-2.14.1.tgz#db8ad4f45d81e74896fc2e1c99508927c6d084e0" + dependencies: + lodash "^4.0.1" + material-colors "^1.2.1" + prop-types "^15.5.10" + reactcss "^1.2.0" + tinycolor2 "^1.4.1" + +react-datepicker@v1.4.1: + version "1.4.1" + resolved "http://registry.npm.taobao.org/react-datepicker/download/react-datepicker-1.4.1.tgz#ee171b71d9853e56f9eece5fc3186402f4648683" + dependencies: + classnames "^2.2.5" + prop-types "^15.6.0" + react-onclickoutside "^6.7.1" + react-popper "^0.9.1" + +react-input-autosize@^2.2.1: + version "2.2.1" + resolved "http://registry.npm.taobao.org/react-input-autosize/download/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" + dependencies: + prop-types "^15.5.8" + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "http://registry.npm.taobao.org/react-lifecycles-compat/download/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + +react-onclickoutside@^6.7.1: + version "6.7.1" + resolved "http://registry.npm.taobao.org/react-onclickoutside/download/react-onclickoutside-6.7.1.tgz#6a5b5b8b4eae6b776259712c89c8a2b36b17be93" + +react-popper@^0.9.1: + version "0.9.5" + resolved "http://registry.npm.taobao.org/react-popper/download/react-popper-0.9.5.tgz#02a24ef3eec33af9e54e8358ab70eb0e331edd05" + dependencies: + popper.js "^1.14.1" + prop-types "^15.6.1" + +react-virtualized@^9.18.5: + version "9.19.1" + resolved "http://registry.npm.taobao.org/react-virtualized/download/react-virtualized-9.19.1.tgz#84b53253df2d9df61c85ce037141edccc70a73fd" + dependencies: + babel-runtime "^6.26.0" + classnames "^2.2.3" + dom-helpers "^2.4.0 || ^3.0.0" + loose-envify "^1.3.0" + prop-types "^15.6.0" + react-lifecycles-compat "^3.0.4" + +reactcss@^1.2.0: + version "1.2.3" + resolved "http://registry.npm.taobao.org/reactcss/download/reactcss-1.2.3.tgz#c00013875e557b1cf0dfd9a368a1c3dab3b548dd" + dependencies: + lodash "^4.0.1" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -4169,6 +4474,10 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" +tabbable@^1.0.3, tabbable@^1.1.0: + version "1.1.3" + resolved "http://registry.npm.taobao.org/tabbable/download/tabbable-1.1.3.tgz#0e4ee376f3631e42d7977a074dbd2b3827843081" + table@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" @@ -4270,6 +4579,10 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +tinycolor2@^1.4.1: + version "1.4.1" + resolved "http://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + tmp@^0.0.29: version "0.0.29" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.29.tgz#f25125ff0dd9da3ccb0c2dd371ee1288bb9128c0" @@ -4565,6 +4878,10 @@ vm-browserify@0.0.4: dependencies: indexof "0.0.1" +w3c-blob@0.0.1: + version "0.0.1" + resolved "http://registry.npm.taobao.org/w3c-blob/download/w3c-blob-0.0.1.tgz#b0cd352a1a50f515563420ffd5861f950f1d85b8" + walkdir@0.0.11: version "0.0.11" resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.0.11.tgz#a16d025eb931bd03b52f308caed0f40fcebe9532"