diff --git a/.dockerignore b/.dockerignore index a60741c..2b0bdde 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,12 +1,11 @@ node_modules/** npm-debug.log +yarn-error.log Dockerfile* docker-compose* .dockerignore -.git/** -.gitignore -README.md -LICENSE .vscode/** .idea/** -build/** \ No newline at end of file +build/** +dist/** +build.sh \ No newline at end of file diff --git a/.gitignore b/.gitignore index b15ee03..3ff8b70 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules/** build/** .idea/** yarn-error.log -*.tgz \ No newline at end of file +*.tgz +dist/** diff --git a/.travis.yml b/.travis.yml index bd99e6e..39a2744 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,5 +2,12 @@ language: minimal dist: trusty sudo: false services: - - docker +- docker script: "./build.sh" +git: + depth: false +env: + global: + - secure: HbNBtNiGTLcQQa8/ifX5cJJYj+8Kj7kZagO5aBi3MXkArzTb7V6qi33h8o6A6KaKDW9P+Z58AuJ85/+dMJMW0UAEWzNyGCddzXGVhIyqnu3og0WfWNPsUQZ+A7Qdid//tRpOyX+CfZzQNqWezStJPg0y0RaSJt/dCMCIhVq1YbZzjQijGEE3AdpjZJKWsXhaOofYksVRYoemPmnb5Emb0DHCZkQVl1J+00NKPdHOlFK7Jb/VRtJsLhlQ6oB2/xpXBbVHMa6ogG+sAaj/Qa8SyYhWvwUj9HP2mqKL5t85PmF7zBtG/yh85dKiQDKVGZgFEO9ZAh9i7MWMaJxdiPV/LN2+QA9IDtDjmdWJGsH9kSA24QzSxe/mv5B+MsiOU0trsBlJq2AnCProJSbKmeKavhtnuZ8W+KvBH7BI1LNyVBCRCh2YrCk5fbQQ2Te9ZwaBZd0mjNpsxjze1JYMjWXpgm/64zM8Mn0dmoU3WWmL+C8ZXZpi7/sdtroMFbcx5xxnqXojXUa1IHhCsO+hGmgHCOlpevMaOz+Ct4MYb5gmIAaEx3XpjSakmu5vHInvGrxTTAlq3Jf17OC/dWfOvVtRCNBnGWDSfojtZKrU85HzitDUPFVgLkLgt/btFI8O8OHZgJgb4wA/NGtpAdFzTuBN8kQCH0cvwVtXThTatgHqfGc= + - secure: EDzsth0OgLpG72wHRdtxpjImD/OHbe+7rYt9BHHQ9hAIauLJmND1+6uQmumWIxfIn2ulEhBKIp92OsV6XNpjU/WoKbGTnX3uR8ADjnS+/rlZgvGKP4SGdwhdZFwFlUV5BZeGL1bS6avWbMWb81kl0+RUArDPdN8nb5nx7tPLbeZmPF5zKJSRQHUzCN8vyEMpr1pDCNclU+S9awcibKa1EHKNDh5aZe1rpimwWlbx+xd3I1TRE2/n6TZ7GhBP6TTtLZGGsNlOF7rjCX9eRWYG+a4AD1h8htTT0Ag7DF/LCh5RFK+XCTA7MmQnc+CtPf34VUz9ftK+22EONMPv3P7hheZt4jZpc3qQ2SYu4rbI9bmzY9x8VyDtk60BLXoOmM99Q63rnzyRzawqrETGMyEIP1DCu8E6Fw4SVSzDSq+SBlbX7+oN8mj9+jR1d2yOax9QfwAJ+b5z9vSYc7g+rLCQgaoT5dOgNTZ7TvMnpJPB0VkdIWCuI5TfVBYa64PmYR2zZelVN9EWQ/Uqmgw1SR/FmwKwaaxxDFsfwR7vJynooWKyX6BIxrQH86DVCPFdsorT2ytZwPYNWymLiF/uV8bc4Awp0UYY82GKJ18QjWxEiQJf/mgY/OKpqvJ1EDnfXdhDkz+0BEi4hLByaprYy6brpbLo5RrH9DpRVwltK+zatmM= + - secure: dfbEiecPuE4pgqkWzEQQ7m5ZB0MPZ8QCeKKaO2LTqnUIaby9fdsmAcnD3dGNL1F28GVErSB6ySEmyglOdMY5cnvW0FZvKAg4awS7rMcsHMfVX0xgXp9kNzeH1wQBNB6nx4d9fcZUdpjC8V+6QCjNGs/Y/tmdOiwjuNyWR3tQkY4tvs1Qyg884lg3AS3e0qKw9gmX2Oe2Qe44Qkr/yCBwrXcOYTIut9mqF4Nzux+dY9wsbC2L3Qf8AegcjLVPEoT3UYcgtqZfHHFKcnTitDmKRQqzdi1mQW6QXfA8hzMkL5CZIiixvFj8iD4re4r68gcUNCfgP8HhuemvMQ3tmZYUix8TS7mgwZJpvc7GkADKtKvyKMS9zfnlYEOfsVUW8rAEvfUkSpjqaixq3M6Gz/fEuHZu5FW0S9Imcm3YLumLNV+J1gxW4UKkLYgLVFkOizw3CQG7+I90C/LS5zUwTRBGuj1B+Hf4QqmPOj3qtM/eCSbuGbOwEC5YV6s69UVl7nYmphza58Ha5RswsYiDOKiPO2yejMqaiCTS3B3+0F/LgGVvIZP2BVbIrG+6/eKLi/fMjzEEU8jI9Sg60hhaa4O3EtI2JjJN899pyxKQBYYdaNhSBkEDOMB5ydfbWwqr7T88BN/EQWHS7WWf3K+SHCWUiDvlFw2e4JLkWQ4Y2E0rN2k= diff --git a/Dockerfile b/Dockerfile index 9e3dc9f..e77cc21 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,15 @@ -FROM node:10.12.0-alpine AS build +FROM microsoft/dotnet:2.1.500-sdk-alpine3.7 as version + +WORKDIR /src + +COPY .git ./ + +RUN apk add libcurl --no-cache && \ + dotnet tool install -g minver-cli --version 1.0.0-beta.1 && \ + /root/.dotnet/tools/minver > .version -RUN apk add --no-cache git +FROM node:10.12.0-alpine AS build +ARG MYGET_API_KEY WORKDIR /app @@ -10,17 +19,28 @@ RUN yarn --frozen-lockfile COPY . . -RUN yarn build && \ +COPY --from=version /src/.version ./ + +RUN REACT_APP_CLIENT_VERSION=$(cat .version) yarn build && \ + yarn build:dist && \ yarn cache clean +RUN echo "https://www.myget.org/F/sqlstreamstore/npm/:_authToken=${MYGET_API_KEY}" > .npmrc && \ + echo "@sql-stream-store:registry=https://www.myget.org/F/sqlstreamstore/npm/" >> .npmrc + +RUN test -z "$MYGET_API_KEY" || \ + yarn publish --new-version $(cat .version) && \ + echo "No API key found, skipping publishing..." + FROM nginx:1.15.5-alpine AS runtime -COPY ./nginx.conf /etc/nginx/nginx.conf +COPY ./nginx/nginx.conf /etc/nginx/nginx.conf -COPY ./mime.types /etc/nginx/mime.types +COPY ./nginx/mime.types /etc/nginx/mime.types COPY --from=build /app/build/ /var/www/ +COPY --from=version /src/.version /var/www EXPOSE 80 -ENTRYPOINT ["nginx", "-g", "daemon off;"] \ No newline at end of file +ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/build.sh b/build.sh index 7a1565a..87a12c8 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,45 @@ #!/usr/bin/env bash -DOCKERTAG=${TRAVIS_TAG:-latest} -docker build --build-arg semver=TRAVIS_TAG --tag sql-stream-store-browser:${DOCKERTAG} . +set -e -docker images --filter=reference="sql-stream-store-browser:${DOCKERTAG}" +LOCAL_IMAGE="sql-stream-store-browser" +LOCAL="${LOCAL_IMAGE}:latest" + +REMOTE_IMAGE="sqlstreamstore/browser" + +docker build \ + --build-arg MYGET_API_KEY=$MYGET_API_KEY \ + --tag ${LOCAL} \ + . + +VERSION=$(docker run --entrypoint=cat ${LOCAL} /var/www/.version) + +SEMVER_REGEX="^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$" + +[[ $VERSION =~ $SEMVER_REGEX ]] + +MAJOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}" +MAJOR_MINOR="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}" +MAJOR_MINOR_PATCH="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}" +MAJOR_MINOR_PATCH_PRE="${REMOTE_IMAGE}:${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${BASH_REMATCH[3]}${BASH_REMATCH[4]}" + +if [[ -n $TRAVIS_TAG && -z ${BASH_REMATCH[4]} ]]; then + echo "Detected a tag with no prerelease." + docker tag $LOCAL $MAJOR_MINOR_PATCH + docker tag $LOCAL $MAJOR_MINOR + if [[ ${BASH_REMATCH[1]} != "0" ]]; then + docker tag $LOCAL $MAJOR + else + echo "Detected unstable version." + fi +else + echo "Detected a prerelease." + docker tag $LOCAL $MAJOR_MINOR_PATCH_PRE +fi + +if [[ -n $DOCKER_USER ]]; then + echo "${DOCKER_PASS}" | docker login --username "${DOCKER_USER}" --password-stdin + docker push $REMOTE_IMAGE +fi + +docker images --filter=reference="${REMOTE_IMAGE}" \ No newline at end of file diff --git a/mime.types b/nginx/mime.types similarity index 100% rename from mime.types rename to nginx/mime.types diff --git a/nginx.conf b/nginx/nginx.conf similarity index 100% rename from nginx.conf rename to nginx/nginx.conf diff --git a/package.json b/package.json index 0461ab5..bc2e4d4 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,22 @@ { - "name": "sql-stream-store-browser", - "version": "0.1.0", + "name": "@sqlstreamstore/browser", "description": "Sql Stream Store User Interface", - "repository": "https://github.com/thefringeninja/sql-stream-store-browser.git", + "repository": "https://github.com/SQLStreamStore/sql-stream-store-browser.git", "scripts": { "analyze": "source-map-explorer build/static/js/main.*", "start": "react-scripts-ts start", "build": "prettier --list-different \"src/**/*.js\" \"src/**/*.ts\" \"src/**/*.tsx\" && tslint --project ./ && react-scripts-ts build", + "build:dist": "rm -rf dist && tsc --project tsconfig.publish.json && cp src/index.d.ts ./dist", "eject": "react-scripts-ts eject", "format": "prettier --write \"src/**/*.js\" \"src/**/*.ts\" \"src/**/*.tsx\" && tslint --project ./ --fix" }, - "main": "src/index.tsx", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "README.md", + "src" + ], "private": false, "devDependencies": { "@types/array.prototype.flatmap": "^1.2.0", @@ -27,32 +33,31 @@ "@types/remarkable": "^1.7.1", "@types/uuid": "^3.4.4", "babel-plugin-module-resolver": "3.1.1", - "prettier": "1.15.1", + "prettier": "1.15.2", "react-scripts-ts": "3.1.0", "source-map-explorer": "1.6.0", - "tslint-config-prettier": "1.15.0", - "tslint-immutable": "4.8.0", + "tslint-config-prettier": "1.17.0", + "tslint-immutable": "5.0.0", "tslint-react": "3.6.0", "typescript": "3.1.6", "typesync": "0.4.0" }, "dependencies": { - "@material-ui/core": "3.2.1", + "@material-ui/core": "3.6.0", "@material-ui/icons": "3.0.1", "array.prototype.flatmap": "1.2.1", "base16": "1.0.0", "classnames": "2.2.6", "history": "4.7.2", "inflector-js": "1.0.1", - "invert-color": "1.5.0", + "invert-color": "2.0.0", "json-schema": "0.2.3", "jss": "9.4.0", - "react": "16.5.2", - "react-dom": "16.5.2", + "react": "16.6.3", + "react-dom": "16.6.3", "react-json-view": "1.19.1", "react-remarkable": "1.1.3", - "react-schema-form": "0.5.0", - "react-tap-event-plugin": "3.0.2", + "react-schema-form": "0.6.2", "rxjs": "5.4.3", "uri-js": "4.2.2", "uri-template": "1.0.1", diff --git a/src/components/HyperMediaControls/TextAreaField.tsx b/src/components/HyperMediaControls/TextAreaField.tsx index 3422bea..f2c5dd7 100644 --- a/src/components/HyperMediaControls/TextAreaField.tsx +++ b/src/components/HyperMediaControls/TextAreaField.tsx @@ -29,4 +29,4 @@ const TextAreaField: StatelessComponent = ({ ); -export default ComposedComponent.default(TextAreaField); +export default ComposedComponent(TextAreaField); diff --git a/src/components/HyperMediaControls/UuidField.tsx b/src/components/HyperMediaControls/UuidField.tsx index bbf9b75..851430e 100644 --- a/src/components/HyperMediaControls/UuidField.tsx +++ b/src/components/HyperMediaControls/UuidField.tsx @@ -48,4 +48,4 @@ class UuidField extends React.PureComponent { } } -export default ComposedComponent.default(UuidField); +export default ComposedComponent(UuidField); diff --git a/src/index.d.ts b/src/index.d.ts new file mode 100644 index 0000000..3e87484 --- /dev/null +++ b/src/index.d.ts @@ -0,0 +1,5 @@ +import { ComponentType } from 'react'; + +export type SqlStreamStoreBrowser = ComponentType<{ + authorization?: string; +}>; diff --git a/src/stream-store/Viewer/HalViewer/Home.tsx b/src/stream-store/Viewer/HalViewer/Home.tsx index e06e1ab..050dc80 100644 --- a/src/stream-store/Viewer/HalViewer/Home.tsx +++ b/src/stream-store/Viewer/HalViewer/Home.tsx @@ -6,19 +6,47 @@ import { Observable as obs } from 'rxjs'; import rels from 'stream-store/rels'; import store from 'stream-store/store'; import { HalResource } from 'types'; +import { clientVersion } from 'utils'; import { HalViewerProps } from './types'; const provider$ = store.hal$.body$.map(({ provider }) => provider); const versions$ = store.hal$.body$.map(({ versions }) => versions); +const info$ = provider$.zip(versions$).map(([provider, versions]) => + [ + { + id: 'Provider', + value: inflector.camel2words( + inflector.underscore(provider), + ) as string, + }, + ] + .concat( + Object.keys(versions).map(key => ({ + id: `${inflector.camel2words( + inflector.underscore(key), + )} Version`, + value: versions[key] as string, + })), + ) + .concat({ + id: 'Client Version', + value: clientVersion as string, + }), +); + interface RecentState { recent: HalResource[]; } +interface InfoLineProps { + id: string; + value: string; +} + interface InfoState { - provider: string; - versions: { [key: string]: string }; + info: InfoLineProps[]; } interface IndexState extends RecentState, InfoState {} @@ -29,14 +57,22 @@ const recent$ = store.hal$.body$.map( const state$ = createState( obs.merge( - provider$.map(provider => ['provider', () => provider]), - versions$.map(versions => ['versions', () => versions]), + info$.map(info => ['info', () => info]), recent$.map(recent => ['recent', () => recent]), ), - obs.of({ recent: [], provider: '', versions: {} }), + obs.of({ recent: [], info: [] }), ); -const Info: StatelessComponent = ({ provider, versions }) => ( +const InfoLine: StatelessComponent = ({ id, value }) => ( + + + {id} + + {value} + +); + +const Info: StatelessComponent = ({ info }) => ( @@ -44,35 +80,16 @@ const Info: StatelessComponent = ({ provider, versions }) => ( - - - {'Provider'} - - - {inflector.camel2words(inflector.underscore(provider))} - - - {Object.keys(versions).map(key => ( - - - - {inflector.camel2words(inflector.underscore(key))}{' '} - {'Version'} - - - {versions[key]} - + {info.map(({ id, value }) => ( + ))}
); -const Index: ComponentType = ({ - provider, - versions, -}) => ( +const Index: ComponentType = ({ info }) => (
- +
); diff --git a/src/types/react-schema-form.d.ts b/src/types/react-schema-form.d.ts index e53992d..633ba18 100644 --- a/src/types/react-schema-form.d.ts +++ b/src/types/react-schema-form.d.ts @@ -42,9 +42,7 @@ declare module 'react-schema-form' { export const SchemaForm: ComponentType; - export const ComposedComponent: { - default: ( - component: ComponentType, - ) => ComponentType; - }; + export const ComposedComponent: ( + component: ComponentType, + ) => ComponentType; } diff --git a/src/utils/clientVersion.ts b/src/utils/clientVersion.ts new file mode 100644 index 0000000..af7bdc9 --- /dev/null +++ b/src/utils/clientVersion.ts @@ -0,0 +1,3 @@ +const clientVersion: string | undefined = process.env.REACT_APP_CLIENT_VERSION; + +export default clientVersion; diff --git a/src/utils/index.ts b/src/utils/index.ts index 548f39a..7d65be7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -9,3 +9,5 @@ export { default as mediaTypes } from './mediaTypes'; export { default as hal } from './hal'; export { default as reactJsonTheme } from './reactJsonTheme'; + +export { default as clientVersion } from './clientVersion'; diff --git a/tsconfig.publish.json b/tsconfig.publish.json new file mode 100644 index 0000000..a8235e5 --- /dev/null +++ b/tsconfig.publish.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": false, + "declarationMap": false, + "outDir": "dist" + } +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 78ccd04..bf4c22b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28,11 +28,13 @@ dependencies: regenerator-runtime "^0.12.0" -"@material-ui/core@3.2.1": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-3.2.1.tgz#3c772d5458a5bee2928a773a21ec6dbce36af18f" +"@material-ui/core@3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@material-ui/core/-/core-3.6.0.tgz#15d602e9316659368e33dd43279b7995b26423ea" + integrity sha512-Erg9PI1xYa8pQFZf6tvWMGyoKCup+P3HJ6phagKGGPzNQ8dswpgW/qNkTOJNG2DaTtXDmkOswpjWcceHqURwYw== dependencies: "@babel/runtime" "7.1.2" + "@material-ui/utils" "^3.0.0-alpha.0" "@types/jss" "^9.5.6" "@types/react-transition-group" "^2.0.8" brcast "^3.0.1" @@ -41,7 +43,7 @@ debounce "^1.1.0" deepmerge "^2.0.1" dom-helpers "^3.2.1" - hoist-non-react-statics "^2.5.0" + hoist-non-react-statics "^3.0.0" is-plain-object "^2.0.4" jss "^9.3.3" jss-camel-case "^6.0.0" @@ -66,6 +68,13 @@ "@babel/runtime" "7.0.0" recompose "^0.29.0" +"@material-ui/utils@^3.0.0-alpha.0": + version "3.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@material-ui/utils/-/utils-3.0.0-alpha.0.tgz#506fcaf531a9a8f58a73ff2d3dfaa36c0f238506" + integrity sha512-HwC/pBcPG81UP4Jh0BaH2i4wAY9aDOrvL5+B/7J6cyFlG/Wip5Li+qI+GDlk9MR3kpG8v0sxfpWA0IlQYcHK6g== + dependencies: + "@babel/runtime" "7.1.2" + "@types/array.prototype.flatmap@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@types/array.prototype.flatmap/-/array.prototype.flatmap-1.2.0.tgz#e11283ae3bf9b432173756764064f2d8a7a377b1" @@ -98,22 +107,25 @@ indefinite-observable "^1.0.1" "@types/node@*": - version "10.12.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.0.tgz#ea6dcbddbc5b584c83f06c60e82736d8fbb0c235" + version "10.12.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.10.tgz#4fa76e6598b7de3f0cb6ec3abacc4f59e5b3a2ce" + integrity sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w== "@types/prettier@^1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.13.2.tgz#ffe96278e712a8d4e467e367a338b05e22872646" + version "1.15.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.15.2.tgz#91594ea7cb6f3b1f7ea69f32621246654c7cc231" + integrity sha512-XIB0ZCaFZmWUHAa9dBqP5UKXXHwuukmVlP+XcyU94dui2k+l2lG+CHAbt2ffenHPUqoIs5Beh8Pdf2YEq/CZ7A== "@types/prop-types@*": version "15.5.6" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c" + integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ== "@types/react-dom@^16.0.9": - version "16.0.9" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.9.tgz#73ceb7abe6703822eab6600e65c5c52efd07fb91" + version "16.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.0.11.tgz#bd10ccb0d9260343f4b9a49d4f7a8330a5c1f081" + integrity sha512-x6zUx9/42B5Kl2Vl9HlopV8JF64wLpX3c+Pst9kc1HgzrsH+mkehe/zmHMQTplIrR48H2gpU7ZqurQolYu8XBA== dependencies: - "@types/node" "*" "@types/react" "*" "@types/react-tap-event-plugin@^0.0.30": @@ -127,8 +139,9 @@ "@types/react" "*" "@types/react@*", "@types/react@^16.4.18": - version "16.4.18" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.4.18.tgz#2e28a2e7f92d3fa7d6a65f2b73275c3e3138a13d" + version "16.7.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.7.8.tgz#ca24ba280f79debfc86578278a503c6d917d402e" + integrity sha512-7Vua2IYokMiPBk0WWXaDt4Cg3XVcwU6HpkuPhvwhBrVEy4SafpcvEfGYByoY9jxyFMiegYQPaSOT+H+AY00CPw== dependencies: "@types/prop-types" "*" csstype "^2.2.0" @@ -2835,7 +2848,7 @@ fbemitter@^2.0.0: dependencies: fbjs "^0.8.4" -fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.4, fbjs@^0.8.6: +fbjs@^0.8.0, fbjs@^0.8.1, fbjs@^0.8.4: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" dependencies: @@ -3345,10 +3358,17 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0: +hoist-non-react-statics@^2.3.1: version "2.5.5" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" +hoist-non-react-statics@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.2.0.tgz#d21b9fc72b50fdc38c5d88f6e2c52f2c2dbe5ee2" + integrity sha512-3IascCRfaEkbmHjJnUxWSspIUE1okLPjGTMVXW8zraUo1t3yg1BadKAxAGILHwgoBzmMnzrgeeaDGBvpuPz6dA== + dependencies: + react-is "^16.3.2" + hoister@~0.0: version "0.0.2" resolved "https://registry.yarnpkg.com/hoister/-/hoister-0.0.2.tgz#0d0d8b1ce0f191553e61afec654f6b180eb96e5d" @@ -3604,9 +3624,10 @@ invariant@^2.2.1, invariant@^2.2.2: dependencies: loose-envify "^1.0.0" -invert-color@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/invert-color/-/invert-color-1.5.0.tgz#d0cf98ec5a2d0e879c63d063ac9c33476c3b9bf2" +invert-color@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-color/-/invert-color-2.0.0.tgz#894ab1f7494a6e45f5e74c2f99ec042cd67dd23e" + integrity sha512-9s6IATlhOAr0/0MPUpLdMpk81ixIu8IqwPwORssXBauFT/4ff/iyEOcojd0UYuPwkDbJvL1+blIZGhqVIaAm5Q== invert-kv@^1.0.0: version "1.0.0" @@ -5269,9 +5290,10 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -objectpath@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/objectpath/-/objectpath-1.2.1.tgz#c87433bdd352aea014e4f9c0b52d70a42652052e" +objectpath@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/objectpath/-/objectpath-1.2.2.tgz#743d3d15bae909c1087a0036295d9102936521b4" + integrity sha512-ie+GY5tJsKt7daHH6qGROf3JqxfD2XhfBPLY+HQrVuRY8MQE1ySKVSqQ/TQz/Dx7jDwuy3etQALDE1cRJAC0cg== obuf@^1.0.0, obuf@^1.1.1: version "1.1.2" @@ -5896,9 +5918,10 @@ preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -prettier@1.15.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.1.tgz#06c67106afb1b40e74b002353b2079cc7e0e67bf" +prettier@1.15.2: + version "1.15.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e" + integrity sha512-YgPLFFA0CdKL4Eg2IHtUSjzj/BWgszDHiNQAe0VAIBse34148whfdzLagRL+QiKS+YfK5ftB6X4v/MBw8yCoug== pretty-bytes@^4.0.2: version "4.0.2" @@ -6145,14 +6168,15 @@ react-dev-utils@^5.0.2: strip-ansi "3.0.1" text-table "0.2.0" -react-dom@16.5.2, react-dom@^16.4.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7" +react-dom@16.6.3: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.3.tgz#8fa7ba6883c85211b8da2d0efeffc9d3825cccc0" + integrity sha512-8ugJWRCWLGXy+7PmNh8WJz3g1TaTUt1XyoIcFN+x0Zbkoz+KKdUyx1AQLYJdbFXjuF41Nmjn5+j//rxvhFjgSQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.11.2" react-error-overlay@^4.0.1: version "4.0.1" @@ -6166,9 +6190,10 @@ react-event-listener@^0.6.2: prop-types "^15.6.0" warning "^4.0.1" -react-is@^16.5.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.5.2.tgz#e2a7b7c3f5d48062eb769fcb123505eb928722e3" +react-is@^16.3.2: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.6.3.tgz#d2d7462fcfcbe6ec0da56ad69047e47e56e7eac0" + integrity sha512-u7FDWtthB4rWibG/+mFbVd5FvdI20yde86qKGx4lVUTWmPlSWQ4QxbBIrrs+HnXGbxOUlUzTAP/VDmvCwaP2yA== react-json-view@1.19.1: version "1.19.1" @@ -6189,18 +6214,16 @@ react-remarkable@1.1.3: dependencies: remarkable "^1.x" -react-schema-form@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/react-schema-form/-/react-schema-form-0.5.0.tgz#77b4865d2f1c25f00e166f940ca376bfbfacfb6c" +react-schema-form@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/react-schema-form/-/react-schema-form-0.6.2.tgz#1a733d40f1ea89cc5caac4865610ac8e6e2a5959" + integrity sha512-fsuTsTNnq2eEYR5kPEDVDJF0FJB4GNqeBsmvZrvuBGx23z0/6t3VCYuxsNQQtzb+nWfkCREQTV3yKHuG7nFHlA== dependencies: classnames "^2.2.6" lodash "^4.17.11" notevil "^1.1.0" - objectpath "^1.2.1" - react "^16.4.2" + objectpath "1.2.2" react-autosuggest "^9.3.4" - react-dom "^16.4.2" - react-test-renderer "^16.4.2" supports-color "^5.4.0" tv4 "^1.2.7" webpack-config "^7.5.0" @@ -6249,21 +6272,6 @@ react-scripts-ts@3.1.0: optionalDependencies: fsevents "^1.1.3" -react-tap-event-plugin@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/react-tap-event-plugin/-/react-tap-event-plugin-3.0.2.tgz#280371677b881c31376e0027a0b86d2c6de039ee" - dependencies: - fbjs "^0.8.6" - -react-test-renderer@^16.4.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.5.2.tgz#92e9d2c6f763b9821b2e0b22f994ee675068b5ae" - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.5.2" - schedule "^0.5.0" - react-textarea-autosize@^6.1.0: version "6.1.0" resolved "http://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-6.1.0.tgz#df91387f8a8f22020b77e3833c09829d706a09a5" @@ -6285,14 +6293,15 @@ react-transition-group@^2.2.1: prop-types "^15.6.2" react-lifecycles-compat "^3.0.4" -react@16.5.2, react@^16.4.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42" +react@16.6.3: + version "16.6.3" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c" + integrity sha512-zCvmH2vbEolgKxtqXL2wmGCUxUyNheYn/C+PD1YAjfxHC54+MhdruyhO7QieQrYsYeTxrn93PM2y0jRH1zEExw== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.11.2" read-pkg-up@^1.0.1: version "1.0.1" @@ -6709,10 +6718,12 @@ sax@^1.2.1, sax@^1.2.4, sax@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" -schedule@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.5.0.tgz#c128fffa0b402488b08b55ae74bb9df55cc29cc8" +scheduler@^0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.11.2.tgz#a8db5399d06eba5abac51b705b7151d2319d33d3" + integrity sha512-+WCP3s3wOaW4S7C1tl3TEXp4l9lJn0ZK8G3W3WKRWmw77Z2cIFUW2MiNTMHn5sCjxN+t7N43HAOOgMjyAg5hlg== dependencies: + loose-envify "^1.1.0" object-assign "^4.1.1" schema-utils@^0.3.0: @@ -7457,13 +7468,21 @@ tslib@^1.8.0, tslib@^1.8.1: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tslint-config-prettier@1.15.0, tslint-config-prettier@^1.10.0: +tslint-config-prettier@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.17.0.tgz#946ed6117f98f3659a65848279156d87628c33dc" + integrity sha512-NKWNkThwqE4Snn4Cm6SZB7lV5RMDDFsBwz6fWUkTxOKGjMx8ycOHnjIbhn7dZd5XmssW3CwqUjlANR6EhP9YQw== + +tslint-config-prettier@^1.10.0: version "1.15.0" resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.15.0.tgz#76b9714399004ab6831fdcf76d89b73691c812cf" -tslint-immutable@4.8.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/tslint-immutable/-/tslint-immutable-4.8.0.tgz#1e378daeb7e01ef37f5e6ba7e291887e973936cd" +tslint-immutable@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/tslint-immutable/-/tslint-immutable-5.0.0.tgz#6c0c23be1949a80a344576378aa499f05ef8bd22" + integrity sha512-bfp/8ey9qgVpJZZvpm58ql5Cks1Xo1VEajFSNoYv/jrUxFQQvQtyxJlksuMPJ1L80bbgD6oFBE8ixr0fq0E6VQ== + dependencies: + tsutils "^2.28.0 || ^3.0.0" tslint-react@3.6.0, tslint-react@^3.2.0: version "3.6.0" @@ -7494,6 +7513,13 @@ tsutils@^2.13.1, tsutils@^2.27.2: dependencies: tslib "^1.8.1" +"tsutils@^2.28.0 || ^3.0.0": + version "3.5.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.5.1.tgz#2219e5f0ad728aef94bd6634a5b4d8ce6b2e2eea" + integrity sha512-g9kwRQRpVDhjS3qfrDsnYv7QkBtsNRm1Ln5539hq9Y2ysndnlaWf8+3zTdaa1YB5ko7dpV9XATlP0KmYPsLc+Q== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"