├── .gitignore
├── LICENSE
├── README.md
├── branding
└── ui-labeller-branding-cover-1.png
├── docs
└── example.png
├── figma
├── .gitignore
├── README.md
├── manifest.json
├── package.json
├── src
│ ├── code.ts
│ ├── ui.css
│ ├── ui.css.d.ts
│ ├── ui.html
│ └── ui.tsx
├── tsconfig.json
└── webpack.config.js
├── package-lock.json
├── package.json
├── tsconfig.json
└── yarn.lock
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | .DS_Store
10 |
11 | # Diagnostic reports (https://nodejs.org/api/report.html)
12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
13 |
14 | # Runtime data
15 | pids
16 | *.pid
17 | *.seed
18 | *.pid.lock
19 |
20 | # Directory for instrumented libs generated by jscoverage/JSCover
21 | lib-cov
22 |
23 | # Coverage directory used by tools like istanbul
24 | coverage
25 | *.lcov
26 |
27 | # nyc test coverage
28 | .nyc_output
29 |
30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
31 | .grunt
32 |
33 | # Bower dependency directory (https://bower.io/)
34 | bower_components
35 |
36 | # node-waf configuration
37 | .lock-wscript
38 |
39 | # Compiled binary addons (https://nodejs.org/api/addons.html)
40 | build/Release
41 | build
42 |
43 | # Dependency directories
44 | node_modules/
45 | jspm_packages/
46 |
47 | # Snowpack dependency directory (https://snowpack.dev/)
48 | web_modules/
49 |
50 | # TypeScript cache
51 | *.tsbuildinfo
52 |
53 | # Optional npm cache directory
54 | .npm
55 |
56 | # Optional eslint cache
57 | .eslintcache
58 |
59 | # Microbundle cache
60 | .rpt2_cache/
61 | .rts2_cache_cjs/
62 | .rts2_cache_es/
63 | .rts2_cache_umd/
64 |
65 | # Optional REPL history
66 | .node_repl_history
67 |
68 | # Output of 'npm pack'
69 | *.tgz
70 |
71 | # Yarn Integrity file
72 | .yarn-integrity
73 |
74 | # dotenv environment variables file
75 | .env
76 | .env.test
77 |
78 | # parcel-bundler cache (https://parceljs.org/)
79 | .cache
80 | .parcel-cache
81 |
82 | # Next.js build output
83 | .next
84 | out
85 |
86 | # Nuxt.js build / generate output
87 | .nuxt
88 | dist
89 |
90 | # Gatsby files
91 | .cache/
92 | # Comment in the public line in if your project uses Gatsby and not Next.js
93 | # https://nextjs.org/blog/next-9-1#public-directory-support
94 | # public
95 |
96 | # vuepress build output
97 | .vuepress/dist
98 |
99 | # Serverless directories
100 | .serverless/
101 |
102 | # FuseBox cache
103 | .fusebox/
104 |
105 | # DynamoDB Local files
106 | .dynamodb/
107 |
108 | # TernJS port file
109 | .tern-port
110 |
111 | # Stores VSCode versions used for testing VSCode extensions
112 | .vscode-test
113 |
114 | # yarn v2
115 | .yarn/cache
116 | .yarn/unplugged
117 | .yarn/build-state.yml
118 | .yarn/install-state.gz
119 | .pnp.*
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 bridged.xyz
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | 
4 |
5 | # ui-labeller (plugin for figma / sketch)
6 |
7 | label your image dataset on figma for realtime collaboration and data centralization
8 |
9 | > there is powerful tool called figma. why use other tools just for data labelling?
10 |
11 | ## Installation
12 | figma - read [this guide](./figma/README.md)
13 |
14 |
15 | ## Design
16 | openned design file for ui-labeller available at [figma](https://www.figma.com/file/U0gKxMTiLgk6uB08qeTzoa/ui-labeller-plugin?node-id=0%3A1)
17 |
18 |
19 | ## Features
20 | - Load you data from S3 / GCP
21 | - Organize workspace (Makes Artboards for your loaded images, and make them as a user-friendly grid)
22 | - Make your own labelling preferences
23 | - Box / Ellipse / Custom shape labellings are supported
24 | - Multi tag in single label is supported
25 |
26 |
27 |
28 | ## Example
29 |
30 | 
31 |
32 |
33 |
34 |
35 | ## Why to use Bridged's Labeller instead of other labelling tools?
36 | - It's Live - Best collaboration experience.
37 | - It's Visual - You can see your work in one place. (You don't get lost. You know where you are.)
38 | - It's easy to edit your labels preferense.
39 | - It's easy to share
40 | - use built-in UI building experience
41 | - margin checking
42 | - moving in pixel-level
43 | - checking grid
44 | - It's all Open and Free
45 | - Add comments right above your design.
46 | - It just makes sense when your data is ui design.
47 |
48 |
49 |
50 | ## How to use
51 |
52 | *Example usage - [here](https://www.figma.com/file/01QCgPwNc7DLqmgNvVgJaF/?node-id=37%3A0)*
53 |
54 | 1. Make @labels page and make your labels as Components.
55 | 2. Make any page to load your dataset.
56 | 3. Load your data via providing S3 credentials, and wait for it to sync.
57 | 4. Label it via the plugin interface!
58 | 5. Download or sync the labelled data set.
59 | 6. Make awesome models.
60 |
61 |
62 | ## Contribution
63 | [contributing guideline](https://github.com/bridgedxyz/contributing-and-license)
64 |
--------------------------------------------------------------------------------
/branding/ui-labeller-branding-cover-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gridaco/ui-labeller/53729192e35e9327b359ee55b2703b7337c41c7b/branding/ui-labeller-branding-cover-1.png
--------------------------------------------------------------------------------
/docs/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gridaco/ui-labeller/53729192e35e9327b359ee55b2703b7337c41c7b/docs/example.png
--------------------------------------------------------------------------------
/figma/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | lerna-debug.log*
8 |
9 | # Diagnostic reports (https://nodejs.org/api/report.html)
10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
11 |
12 | # Runtime data
13 | pids
14 | *.pid
15 | *.seed
16 | *.pid.lock
17 |
18 | # Directory for instrumented libs generated by jscoverage/JSCover
19 | lib-cov
20 |
21 | # Coverage directory used by tools like istanbul
22 | coverage
23 | *.lcov
24 |
25 | # nyc test coverage
26 | .nyc_output
27 |
28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
29 | .grunt
30 |
31 | # Bower dependency directory (https://bower.io/)
32 | bower_components
33 |
34 | # node-waf configuration
35 | .lock-wscript
36 |
37 | # Compiled binary addons (https://nodejs.org/api/addons.html)
38 | build/Release
39 | build
40 |
41 | # Dependency directories
42 | node_modules/
43 | jspm_packages/
44 |
45 | # Snowpack dependency directory (https://snowpack.dev/)
46 | web_modules/
47 |
48 | # TypeScript cache
49 | *.tsbuildinfo
50 |
51 | # Optional npm cache directory
52 | .npm
53 |
54 | # Optional eslint cache
55 | .eslintcache
56 |
57 | # Microbundle cache
58 | .rpt2_cache/
59 | .rts2_cache_cjs/
60 | .rts2_cache_es/
61 | .rts2_cache_umd/
62 |
63 | # Optional REPL history
64 | .node_repl_history
65 |
66 | # Output of 'npm pack'
67 | *.tgz
68 |
69 | # Yarn Integrity file
70 | .yarn-integrity
71 |
72 | # dotenv environment variables file
73 | .env
74 | .env.test
75 |
76 | # parcel-bundler cache (https://parceljs.org/)
77 | .cache
78 | .parcel-cache
79 |
80 | # Next.js build output
81 | .next
82 | out
83 |
84 | # Nuxt.js build / generate output
85 | .nuxt
86 | dist
87 |
88 | # Gatsby files
89 | .cache/
90 | # Comment in the public line in if your project uses Gatsby and not Next.js
91 | # https://nextjs.org/blog/next-9-1#public-directory-support
92 | # public
93 |
94 | # vuepress build output
95 | .vuepress/dist
96 |
97 | # Serverless directories
98 | .serverless/
99 |
100 | # FuseBox cache
101 | .fusebox/
102 |
103 | # DynamoDB Local files
104 | .dynamodb/
105 |
106 | # TernJS port file
107 | .tern-port
108 |
109 | # Stores VSCode versions used for testing VSCode extensions
110 | .vscode-test
111 |
112 | # yarn v2
113 | .yarn/cache
114 | .yarn/unplugged
115 | .yarn/build-state.yml
116 | .yarn/install-state.gz
117 | .pnp.*
--------------------------------------------------------------------------------
/figma/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | # ui labeller figma plugin (label your design for ML where your designs are at)
6 | > a figma ui design labeller for humans
7 |
8 | ## Development guide
9 |
10 |
11 | ### Pre-requisites
12 |
13 | - [Node.js](https://nodejs.org/)
14 | - [Figma desktop app](https://figma.com/downloads/)
15 |
16 | ### Building the plugin
17 |
18 | First:
19 |
20 | ```
21 | $ yarn install
22 | ```
23 |
24 | ```
25 | $ yarn run dev
26 | ```
27 |
28 | ### Installing the plugin
29 |
30 | In the Figma desktop app:
31 |
32 | - Open a Figma document.
33 | - Go to `Plugins` → `Development` → `New Plugin…`.
34 | - Click the `Click to choose a manifest.json file` box, and select the `manifest.json` file that was generated.
35 |
36 | ### Debugging
37 |
38 | Use `console.log` statements to inspect values in your code.
39 |
40 | To open the developer console in the Figma desktop app, go to `Plugins` → `Development` → `Open Console`.
41 |
42 | ### Docs
43 |
44 | - [Create Figma Plugin docs](https://github.com/yuanqing/create-figma-plugin#docs)
45 | - [Figma plugin API docs](https://figma.com/plugin-docs/api/)
46 | - [React plugin](https://www.figma.com/plugin-docs/bundling-react/)
47 | - [Create Figma Plugin](https://github.com/yuanqing/create-figma-plugin)
48 |
--------------------------------------------------------------------------------
/figma/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "api": "1.0.0",
3 | "id": "903855708086375422",
4 | "name": "labeller",
5 | "main": "dist/code.js",
6 | "ui": "dist/ui.html"
7 | }
--------------------------------------------------------------------------------
/figma/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "figma",
3 | "version": "0.1.0",
4 | "keywords": [
5 | "figma",
6 | "bridged",
7 | "reflect",
8 | "ML",
9 | "ui",
10 | "labelling"
11 | ],
12 | "license": "MIT",
13 | "author": "bridged.xyz by softmarshmallow ",
14 | "scripts": {
15 | "webpack:watch": "webpack --watch",
16 | "build": "webpack -p --mode=production",
17 | "dev": "webpack --watch"
18 | },
19 | "dependencies": {
20 | "@material-ui/core": "^4.11.0",
21 | "css-loader": "^3.1.0",
22 | "dart-services": "^0.1.10",
23 | "dotenv": "^8.2.0",
24 | "firebase": "^7.23.0",
25 | "open": "^7.3.0",
26 | "react": "^16.13.1",
27 | "react-dom": "^16.13.1",
28 | "recoil": "^0.0.13",
29 | "style-loader": "^0.23.1",
30 | "ts-loader": "^6.0.4"
31 | },
32 | "devDependencies": {
33 | "@figma/plugin-typings": "^1.17.1",
34 | "@types/node": "^14.11.8",
35 | "@types/react": "^16.9.49",
36 | "@types/react-dom": "^16.9.8",
37 | "dotenv-webpack": "^2.0.0",
38 | "html-webpack-inline-source-plugin": "0.0.10",
39 | "html-webpack-plugin": "^3.2.0",
40 | "terser-webpack-plugin": "^4.2.3",
41 | "typescript": "^4.0.3",
42 | "webpack": "^4.38.0",
43 | "webpack-cli": "^3.3.6"
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/figma/src/code.ts:
--------------------------------------------------------------------------------
1 | async function showUI() {
2 | // load plugin with confugured w/h
3 | const rawWidth = await figma.clientStorage.getAsync("width")
4 | const rawHeight = await figma.clientStorage.getAsync("height")
5 | let width = 375
6 | if (rawWidth) {
7 | width = parseInt(rawWidth)
8 | }
9 | let height = 812
10 | if (rawHeight) {
11 | height = parseInt(rawHeight)
12 | }
13 | figma.showUI(__html__, { width: width, height: height });
14 | }
15 |
16 |
17 | showUI()
18 |
19 | function run() {
20 |
21 | }
22 |
23 | figma.on("selectionchange", () => {
24 | run();
25 | });
26 |
27 | figma.ui.onmessage = (msg) => {
28 |
29 | };
--------------------------------------------------------------------------------
/figma/src/ui.css:
--------------------------------------------------------------------------------
1 | /* body {
2 | font: 12px;
3 | text-align: left;
4 | margin: 16;
5 | } */
6 | button {
7 | border-radius: 4px;
8 | background: white;
9 | color: black;
10 | border: 2px;
11 | padding: 8px 15px;
12 | margin: 0 5px;
13 | box-shadow: inset 0 0 0 1px black;
14 | outline: none;
15 | }
16 |
17 | #create {
18 | box-shadow: none;
19 | background: #18A0FB;
20 | color: white;
21 | }
22 |
23 | input {
24 | border: none;
25 | outline: none;
26 | padding: 8px;
27 | }
28 |
29 | input:hover {
30 | box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
31 | }
32 |
33 | button:focus {
34 | box-shadow: inset 0 0 0 2px #18A0FB;
35 | }
36 |
37 | #create:focus {
38 | box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.3);
39 | }
40 |
41 | input:focus {
42 | box-shadow: inset 0 0 0 2px #18A0FB;
43 | }
44 |
45 | h1,
46 | h2,
47 | h3,
48 | h4,
49 | h5,
50 | h6,
51 | sub,
52 | p {
53 | font-family: "Roboto";
54 | }
--------------------------------------------------------------------------------
/figma/src/ui.css.d.ts:
--------------------------------------------------------------------------------
1 | declare const styles: {
2 | readonly "create": string;
3 | };
4 | export = styles;
5 |
6 |
--------------------------------------------------------------------------------
/figma/src/ui.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/figma/src/ui.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react'
2 | import * as ReactDOM from 'react-dom'
3 | import './ui.css'
4 |
5 | function App() {
6 | return (
7 |
8 | hi there
9 |
10 | );
11 | }
12 |
13 | ReactDOM.render(, document.getElementById('react-page'))
--------------------------------------------------------------------------------
/figma/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "ES2016",
4 | "module": "commonjs",
5 | "lib": [
6 | "es2017",
7 | "es7",
8 | "es6",
9 | "dom"
10 | ],
11 | "jsx": "react",
12 | "esModuleInterop": true,
13 | "outDir": "dist",
14 | "declaration": true,
15 | "allowSyntheticDefaultImports": true,
16 | "sourceMap": true,
17 | "experimentalDecorators": true,
18 | "noUnusedLocals": false,
19 | "typeRoots": [
20 | "./node_modules/@types",
21 | "../node_modules/@types",
22 | "../node_modules/@figma",
23 | ]
24 | },
25 | "exclude": [
26 | "node_modules",
27 | "dist",
28 | "example",
29 | "tests"
30 | ]
31 | }
--------------------------------------------------------------------------------
/figma/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin')
2 | const HtmlWebpackPlugin = require('html-webpack-plugin')
3 | const path = require('path')
4 | const Dotenv = require('dotenv-webpack');
5 | const TerserPlugin = require('terser-webpack-plugin');
6 |
7 | module.exports = (env, argv) => ({
8 | mode: argv.mode === 'production' ? 'production' : 'development',
9 |
10 | // https://github.com/webpack-contrib/css-loader/issues/447#issuecomment-285598881
11 | node: {
12 | fs: 'empty',
13 | },
14 | // This is necessary because Figma's 'eval' works differently than normal eval
15 | devtool: argv.mode === 'production' ? false : 'inline-source-map',
16 |
17 | entry: {
18 | ui: './src/ui.tsx', // The entry point for your UI code
19 | code: './src/code.ts', // The entry point for your plugin code
20 | },
21 |
22 | module: {
23 | rules: [
24 | // Converts TypeScript code to JavaScript
25 | { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
26 |
27 | // Enables including CSS by doing "import './file.css'" in your TypeScript code
28 | { test: /\.css$/, loader: [{ loader: 'style-loader' }, { loader: 'css-loader' }] },
29 |
30 | // Allows you to use "<%= require('./file.svg') %>" in your HTML code to get a data URI
31 | { test: /\.(png|jpg|gif|webp|svg|zip)$/, loader: [{ loader: 'url-loader' }] },
32 |
33 | { test: /\.pug$/, use: ["pug-loader"], }
34 | ],
35 | },
36 |
37 | // Webpack tries these extensions for you if you omit the extension like "import './file'"
38 | resolve: { extensions: ['.tsx', '.ts', '.jsx', '.js'] },
39 |
40 | output: {
41 | filename: '[name].js',
42 | path: path.resolve(__dirname, 'dist'), // Compile into a folder called "dist"
43 | },
44 |
45 | // minimize
46 | optimization: {
47 | minimize: false,
48 | minimizer: [new TerserPlugin({
49 | terserOptions: {
50 | sourceMap: true,
51 | compress: {
52 | keep_classnames: true, // keep class name cause, flutter-builder uses class name reflection.
53 | keep_fnames: true,
54 | drop_console: true,
55 | conditionals: true,
56 | unused: true,
57 | comparisons: true,
58 | dead_code: true,
59 | if_return: true,
60 | join_vars: true,
61 | warnings: false
62 | },
63 | output: {
64 | comments: false
65 | }
66 | }
67 | })],
68 | },
69 |
70 | // Tells Webpack to generate "ui.html" and to inline "ui.ts" into it
71 | plugins: [
72 | new HtmlWebpackPlugin({
73 | template: './src/ui.html',
74 | filename: 'ui.html',
75 | inlineSource: '.(js)$',
76 | chunks: ['ui'],
77 | }),
78 | new HtmlWebpackInlineSourcePlugin(),
79 | new Dotenv(),
80 | ],
81 | })
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@bridged.xyz/ui-labeller",
3 | "version": "0.1.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@webpack-cli/info": {
8 | "version": "1.0.2",
9 | "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.0.2.tgz",
10 | "integrity": "sha512-FEfLQwmN4pXZSYSrtp+KC84rFanoCIxXFpS2wUvviDCE2fnajwxw2GXzbj83IlH4Dl8Wq8kJjavVwvxv3YJmnw==",
11 | "requires": {
12 | "envinfo": "^7.7.3"
13 | }
14 | },
15 | "@webpack-cli/serve": {
16 | "version": "1.0.1",
17 | "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.0.1.tgz",
18 | "integrity": "sha512-WGMaTMTK6NOe29Hw1WBEok9vGLfKg5C6jWzNOS/6HH1YadR+RL+TRWRcSyc81Dzulljhk/Ree9mrDM4Np9GGOQ=="
19 | },
20 | "ansi-colors": {
21 | "version": "4.1.1",
22 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
23 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA=="
24 | },
25 | "ansi-escapes": {
26 | "version": "4.3.1",
27 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
28 | "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
29 | "requires": {
30 | "type-fest": "^0.11.0"
31 | }
32 | },
33 | "ansi-styles": {
34 | "version": "3.2.1",
35 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
36 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
37 | "requires": {
38 | "color-convert": "^1.9.0"
39 | }
40 | },
41 | "array-back": {
42 | "version": "4.0.1",
43 | "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.1.tgz",
44 | "integrity": "sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg=="
45 | },
46 | "chalk": {
47 | "version": "2.4.2",
48 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
49 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
50 | "requires": {
51 | "ansi-styles": "^3.2.1",
52 | "escape-string-regexp": "^1.0.5",
53 | "supports-color": "^5.3.0"
54 | }
55 | },
56 | "color-convert": {
57 | "version": "1.9.3",
58 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
59 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
60 | "requires": {
61 | "color-name": "1.1.3"
62 | }
63 | },
64 | "color-name": {
65 | "version": "1.1.3",
66 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
67 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
68 | },
69 | "colorette": {
70 | "version": "1.2.1",
71 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz",
72 | "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
73 | },
74 | "command-line-usage": {
75 | "version": "6.1.0",
76 | "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.0.tgz",
77 | "integrity": "sha512-Ew1clU4pkUeo6AFVDFxCbnN7GIZfXl48HIOQeFQnkO3oOqvpI7wdqtLRwv9iOCZ/7A+z4csVZeiDdEcj8g6Wiw==",
78 | "requires": {
79 | "array-back": "^4.0.0",
80 | "chalk": "^2.4.2",
81 | "table-layout": "^1.0.0",
82 | "typical": "^5.2.0"
83 | }
84 | },
85 | "cross-spawn": {
86 | "version": "7.0.3",
87 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
88 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
89 | "requires": {
90 | "path-key": "^3.1.0",
91 | "shebang-command": "^2.0.0",
92 | "which": "^2.0.1"
93 | }
94 | },
95 | "deep-extend": {
96 | "version": "0.6.0",
97 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
98 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
99 | },
100 | "dom-walk": {
101 | "version": "0.1.2",
102 | "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
103 | "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
104 | },
105 | "end-of-stream": {
106 | "version": "1.4.4",
107 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
108 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
109 | "requires": {
110 | "once": "^1.4.0"
111 | }
112 | },
113 | "enquirer": {
114 | "version": "2.3.6",
115 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
116 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
117 | "requires": {
118 | "ansi-colors": "^4.1.1"
119 | }
120 | },
121 | "envinfo": {
122 | "version": "7.7.3",
123 | "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.3.tgz",
124 | "integrity": "sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA=="
125 | },
126 | "escape-string-regexp": {
127 | "version": "1.0.5",
128 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
129 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
130 | },
131 | "execa": {
132 | "version": "4.1.0",
133 | "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
134 | "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
135 | "requires": {
136 | "cross-spawn": "^7.0.0",
137 | "get-stream": "^5.0.0",
138 | "human-signals": "^1.1.1",
139 | "is-stream": "^2.0.0",
140 | "merge-stream": "^2.0.0",
141 | "npm-run-path": "^4.0.0",
142 | "onetime": "^5.1.0",
143 | "signal-exit": "^3.0.2",
144 | "strip-final-newline": "^2.0.0"
145 | }
146 | },
147 | "find-up": {
148 | "version": "4.1.0",
149 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
150 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
151 | "requires": {
152 | "locate-path": "^5.0.0",
153 | "path-exists": "^4.0.0"
154 | }
155 | },
156 | "function-bind": {
157 | "version": "1.1.1",
158 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
159 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
160 | },
161 | "get-stream": {
162 | "version": "5.2.0",
163 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
164 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
165 | "requires": {
166 | "pump": "^3.0.0"
167 | }
168 | },
169 | "global": {
170 | "version": "4.4.0",
171 | "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
172 | "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
173 | "requires": {
174 | "min-document": "^2.19.0",
175 | "process": "^0.11.10"
176 | }
177 | },
178 | "has": {
179 | "version": "1.0.3",
180 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
181 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
182 | "requires": {
183 | "function-bind": "^1.1.1"
184 | }
185 | },
186 | "has-flag": {
187 | "version": "3.0.0",
188 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
189 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
190 | },
191 | "human-signals": {
192 | "version": "1.1.1",
193 | "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
194 | "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw=="
195 | },
196 | "import-local": {
197 | "version": "3.0.2",
198 | "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz",
199 | "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==",
200 | "requires": {
201 | "pkg-dir": "^4.2.0",
202 | "resolve-cwd": "^3.0.0"
203 | }
204 | },
205 | "interpret": {
206 | "version": "2.2.0",
207 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz",
208 | "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
209 | },
210 | "is-core-module": {
211 | "version": "2.0.0",
212 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz",
213 | "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==",
214 | "requires": {
215 | "has": "^1.0.3"
216 | }
217 | },
218 | "is-stream": {
219 | "version": "2.0.0",
220 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
221 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
222 | },
223 | "isexe": {
224 | "version": "2.0.0",
225 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
226 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
227 | },
228 | "locate-path": {
229 | "version": "5.0.0",
230 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
231 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
232 | "requires": {
233 | "p-locate": "^4.1.0"
234 | }
235 | },
236 | "lodash": {
237 | "version": "4.17.20",
238 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
239 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
240 | },
241 | "merge-stream": {
242 | "version": "2.0.0",
243 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
244 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
245 | },
246 | "mimic-fn": {
247 | "version": "2.1.0",
248 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
249 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
250 | },
251 | "min-document": {
252 | "version": "2.19.0",
253 | "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
254 | "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
255 | "requires": {
256 | "dom-walk": "^0.1.0"
257 | }
258 | },
259 | "npm-run-path": {
260 | "version": "4.0.1",
261 | "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
262 | "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
263 | "requires": {
264 | "path-key": "^3.0.0"
265 | }
266 | },
267 | "once": {
268 | "version": "1.4.0",
269 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
270 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
271 | "requires": {
272 | "wrappy": "1"
273 | }
274 | },
275 | "onetime": {
276 | "version": "5.1.2",
277 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
278 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
279 | "requires": {
280 | "mimic-fn": "^2.1.0"
281 | }
282 | },
283 | "p-limit": {
284 | "version": "2.3.0",
285 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
286 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
287 | "requires": {
288 | "p-try": "^2.0.0"
289 | }
290 | },
291 | "p-locate": {
292 | "version": "4.1.0",
293 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
294 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
295 | "requires": {
296 | "p-limit": "^2.2.0"
297 | }
298 | },
299 | "p-try": {
300 | "version": "2.2.0",
301 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
302 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
303 | },
304 | "path-exists": {
305 | "version": "4.0.0",
306 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
307 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
308 | },
309 | "path-key": {
310 | "version": "3.1.1",
311 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
312 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
313 | },
314 | "path-parse": {
315 | "version": "1.0.6",
316 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
317 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
318 | },
319 | "pkg-dir": {
320 | "version": "4.2.0",
321 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
322 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
323 | "requires": {
324 | "find-up": "^4.0.0"
325 | }
326 | },
327 | "process": {
328 | "version": "0.11.10",
329 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
330 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
331 | },
332 | "pump": {
333 | "version": "3.0.0",
334 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
335 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
336 | "requires": {
337 | "end-of-stream": "^1.1.0",
338 | "once": "^1.3.1"
339 | }
340 | },
341 | "rechoir": {
342 | "version": "0.7.0",
343 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz",
344 | "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
345 | "requires": {
346 | "resolve": "^1.9.0"
347 | }
348 | },
349 | "reduce-flatten": {
350 | "version": "2.0.0",
351 | "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz",
352 | "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w=="
353 | },
354 | "resolve": {
355 | "version": "1.18.1",
356 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz",
357 | "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==",
358 | "requires": {
359 | "is-core-module": "^2.0.0",
360 | "path-parse": "^1.0.6"
361 | }
362 | },
363 | "resolve-cwd": {
364 | "version": "3.0.0",
365 | "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
366 | "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
367 | "requires": {
368 | "resolve-from": "^5.0.0"
369 | }
370 | },
371 | "resolve-from": {
372 | "version": "5.0.0",
373 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
374 | "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
375 | },
376 | "shebang-command": {
377 | "version": "2.0.0",
378 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
379 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
380 | "requires": {
381 | "shebang-regex": "^3.0.0"
382 | }
383 | },
384 | "shebang-regex": {
385 | "version": "3.0.0",
386 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
387 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
388 | },
389 | "signal-exit": {
390 | "version": "3.0.3",
391 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
392 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
393 | },
394 | "strip-final-newline": {
395 | "version": "2.0.0",
396 | "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
397 | "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
398 | },
399 | "supports-color": {
400 | "version": "5.5.0",
401 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
402 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
403 | "requires": {
404 | "has-flag": "^3.0.0"
405 | }
406 | },
407 | "table-layout": {
408 | "version": "1.0.1",
409 | "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz",
410 | "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==",
411 | "requires": {
412 | "array-back": "^4.0.1",
413 | "deep-extend": "~0.6.0",
414 | "typical": "^5.2.0",
415 | "wordwrapjs": "^4.0.0"
416 | }
417 | },
418 | "type-fest": {
419 | "version": "0.11.0",
420 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
421 | "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ=="
422 | },
423 | "typical": {
424 | "version": "5.2.0",
425 | "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz",
426 | "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg=="
427 | },
428 | "v8-compile-cache": {
429 | "version": "2.2.0",
430 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz",
431 | "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q=="
432 | },
433 | "webpack-cli": {
434 | "version": "4.1.0",
435 | "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.1.0.tgz",
436 | "integrity": "sha512-NdhxXMZmoik62Y05t0h1y65LjBM7BwFPq311ihXuMM3RY6dlc4KkCTyHLzTuBEc+bqq6d3xh+CWmU0xRexNJBA==",
437 | "requires": {
438 | "@webpack-cli/info": "^1.0.2",
439 | "@webpack-cli/serve": "^1.0.1",
440 | "ansi-escapes": "^4.3.1",
441 | "colorette": "^1.2.1",
442 | "command-line-usage": "^6.1.0",
443 | "commander": "^6.0.0",
444 | "enquirer": "^2.3.4",
445 | "execa": "^4.0.0",
446 | "import-local": "^3.0.2",
447 | "interpret": "^2.0.0",
448 | "rechoir": "^0.7.0",
449 | "v8-compile-cache": "^2.1.0",
450 | "webpack-merge": "^4.2.2"
451 | },
452 | "dependencies": {
453 | "commander": {
454 | "version": "6.2.0",
455 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz",
456 | "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q=="
457 | }
458 | }
459 | },
460 | "webpack-merge": {
461 | "version": "4.2.2",
462 | "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
463 | "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
464 | "requires": {
465 | "lodash": "^4.17.15"
466 | }
467 | },
468 | "which": {
469 | "version": "2.0.2",
470 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
471 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
472 | "requires": {
473 | "isexe": "^2.0.0"
474 | }
475 | },
476 | "wordwrapjs": {
477 | "version": "4.0.0",
478 | "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.0.tgz",
479 | "integrity": "sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ==",
480 | "requires": {
481 | "reduce-flatten": "^2.0.0",
482 | "typical": "^5.0.0"
483 | }
484 | },
485 | "wrappy": {
486 | "version": "1.0.2",
487 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
488 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
489 | }
490 | }
491 | }
492 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@bridged.xyz/ui-labeller",
3 | "version": "0.1.0",
4 | "private": true,
5 | "license": "MIT",
6 | "description": "Bridged's UI Labelling plugin for human on figma and sketch",
7 | "workspaces": [
8 | "packages/*",
9 | "figma",
10 | "sketch"
11 | ],
12 | "repository": "https://github.com/bridgedxyz/ui-labeller",
13 | "author": "bridged.xyz softmarshmallow ",
14 | "scripts": {
15 | "figma": "yarn workspace figma run webpack:watch",
16 | "sketch": "yarn workspace sketch run render"
17 | },
18 | "dependencies": {
19 | "global": "^4.4.0",
20 | "webpack-cli": "^4.1.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "lib": ["es6", "dom", "es2017"],
5 | "outDir": "dist",
6 | "jsx": "react",
7 | "experimentalDecorators": true,
8 | "allowSyntheticDefaultImports": true,
9 | "removeComments": true,
10 | "noImplicitAny": false,
11 | "moduleResolution": "node",
12 | "typeRoots": [
13 | "./node_modules/@types",
14 | "./node_modules/@figma"
15 | ]
16 | }
17 | }
--------------------------------------------------------------------------------