diff --git a/kibana-extra/castro/build.gradle b/kibana-extra/castro/build.gradle
index 82dd9acb9d0f2..b5ecca999e7ec 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 6d57586bb2592..c1d27f9f14f54 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 0000000000000..d77f2a28f7bac
--- /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 41ea68ceb604e..0000000000000
--- 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 0000000000000..638bfa3dc4ff7
--- /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 a710364c9e2fc..0000000000000
--- 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 0000000000000..a10043c3a94d6
--- /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 0000000000000..46ff93065bb9f
--- /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 7d25992da6da1..2cbd5599055c1 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"