├── .DS_Store ├── .firebaserc ├── .gitignore ├── Makefile ├── docs ├── .nojekyll ├── Product Sans Bold Italic.ttf ├── Product Sans Bold.ttf ├── Product Sans Italic.ttf ├── Product Sans Regular.ttf ├── README.md ├── _navbar.md ├── _sidebar.md ├── api │ └── intro.md ├── auth │ ├── images │ │ ├── intro │ │ │ ├── adappios.png │ │ │ ├── addfirebasetoappandroid.png │ │ │ ├── createproject.png │ │ │ ├── downloadgoogle-services.json.png │ │ │ ├── downloadgoogleservice-info.plist.png │ │ │ ├── firebaseconfigflutterflow.png │ │ │ ├── firebaseconsole.png │ │ │ ├── packagenameinflutterflow.png │ │ │ ├── registerappandroid.png │ │ │ ├── registerappios.png │ │ │ └── uploadconfigfiles.png │ │ └── setup │ │ │ ├── authpageinflutterflow.png │ │ │ ├── enable_email.png │ │ │ ├── firebaseauthscreen.png │ │ │ ├── getstartedfirebaseauth.png │ │ │ ├── googlesignininflutterflow.png │ │ │ ├── selectauthinfirebaseconsole.png │ │ │ └── selectsigninmethod.png │ ├── intro.md │ ├── setup.md │ └── social.md ├── deployment │ ├── intro.md │ ├── previewing.md │ └── running.md ├── documentation │ ├── UI Builder_Widgets.md │ ├── UI_BuilderWidgets_BaseElements.md │ └── images │ │ ├── Description.md │ │ ├── boxFit_examples.png │ │ ├── dropdownValues.png │ │ ├── endDrawerEdit.png │ │ └── textField_options.png ├── faq │ ├── account.md │ ├── contact.md │ ├── faq.md │ ├── payments.md │ ├── privacy.md │ ├── product.md │ └── subscriptions.md ├── ff_full_logo_light-p-500.png ├── ff_logo.png ├── firebase-logo.png ├── firestore │ ├── pt1.md │ └── pt2.md ├── github │ ├── connecting.md │ ├── intro.md │ └── modifying.md ├── guides │ ├── images │ │ ├── Add new page for pageview.png │ │ ├── Flutterflow onboarding 1.png │ │ ├── Pageview properties bar.png │ │ ├── create project flutterflow.png │ │ ├── dialog wrap stack widget.png │ │ ├── empty screen flutterflow.png │ │ ├── pageview flutterflow.png │ │ ├── textfield.png │ │ ├── uncheck safe area flutterflow.png │ │ └── wrap widget.png │ └── pageview.md ├── index.html ├── layers_icon.png ├── quickstart │ ├── firstapp.md │ ├── intro.md │ ├── navigation.md │ ├── nextsteps.md │ ├── templates.md │ └── uicomponents.md ├── settings_icon.png ├── style.css ├── styles.css └── welcome.md ├── firebase.json └── package-lock.json /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/.DS_Store -------------------------------------------------------------------------------- /.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "flutterflow-io-6f20" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | **/.DS_Store 3 | 4 | # Logs 5 | logs 6 | *.log 7 | npm-debug.log* 8 | yarn-debug.log* 9 | yarn-error.log* 10 | firebase-debug.log* 11 | firebase-debug.*.log* 12 | 13 | # Firebase cache 14 | .firebase/ 15 | 16 | # Firebase config 17 | 18 | # Uncomment this if you'd like others to create their own Firebase project. 19 | # For a team working on the same Firebase project(s), it is recommended to leave 20 | # it commented so all members can deploy to the same project(s) in .firebaserc. 21 | # .firebaserc 22 | 23 | # Runtime data 24 | pids 25 | *.pid 26 | *.seed 27 | *.pid.lock 28 | 29 | # Directory for instrumented libs generated by jscoverage/JSCover 30 | lib-cov 31 | 32 | # Coverage directory used by tools like istanbul 33 | coverage 34 | 35 | # nyc test coverage 36 | .nyc_output 37 | 38 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 39 | .grunt 40 | 41 | # Bower dependency directory (https://bower.io/) 42 | bower_components 43 | 44 | # node-waf configuration 45 | .lock-wscript 46 | 47 | # Compiled binary addons (http://nodejs.org/api/addons.html) 48 | build/Release 49 | 50 | # Dependency directories 51 | node_modules/ 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Optional REPL history 60 | .node_repl_history 61 | 62 | # Output of 'npm pack' 63 | *.tgz 64 | 65 | # Yarn Integrity file 66 | .yarn-integrity 67 | 68 | # dotenv environment variables file 69 | .env 70 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | serve: 2 | cd functions && npm run build 3 | firebase serve 4 | 5 | deploy: 6 | firebase deploy --only hosting -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/.nojekyll -------------------------------------------------------------------------------- /docs/Product Sans Bold Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/Product Sans Bold Italic.ttf -------------------------------------------------------------------------------- /docs/Product Sans Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/Product Sans Bold.ttf -------------------------------------------------------------------------------- /docs/Product Sans Italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/Product Sans Italic.ttf -------------------------------------------------------------------------------- /docs/Product Sans Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/Product Sans Regular.ttf -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Welcome to FlutterFlow Docs! 2 | 3 | [View the FAQ](https://docs.flutterflow.io/#/faq/faq) 4 | 5 | ## Contributions 6 | 7 | Feel free to make suggestions and improve the FlutterFlow docs. Every month we'll reward the top contributors FlutterFlow swag! 8 | 9 | We are looking to expand the written portion of our docs to include step-by-step guides, in addition to the already available video tutorials. 10 | 11 | To contact us directly, email support@flutterflow.io and we'll try to get back to you! Thank you for being a part of the FlutterFlow journey. 12 | 13 | ## License 14 | 15 | The FlutterFlow Docs repository is made using Docsify and is under the MIT License. -------------------------------------------------------------------------------- /docs/_navbar.md: -------------------------------------------------------------------------------- 1 | - [Account](http://app.flutterflow.io) 2 | - [FlutterFlow](http://flutterflow.io) 3 | - [Contribute](https://github.com/FlutterFlow/flutterflow-docs) 4 | -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | - [Welcome to FlutterFlow](welcome.md) 2 | - [Frequently Asked Questions](faq/faq.md) 3 | - [Subscriptions](faq/subscriptions.md) 4 | - [Payments / Billing](faq/payments.md) 5 | - [Account](faq/account.md) 6 | - [Privacy & Terms of Service](faq/privacy.md) 7 | - [Product and Features](faq/product.md) 8 | - [Contact](faq/contact.md) 9 | - Quickstart Guide 10 | - [1. Intro to FlutterFlow](quickstart/intro.md) 11 | - [2. Building an Art Gallery App (FlutterMet)](quickstart/firstapp.md) 12 | - [3. Custom UI Components](quickstart/uicomponents.md) 13 | - [4. Navigation and Nav Bars](quickstart/navigation.md) 14 | - [5. PageViews](guides/pageview.md) 15 | 16 | 17 | - ---- 18 | - [Getting Started With Firebase](auth/intro.md) 19 | - [1. Setting Up Firebase Authentication](auth/setup.md) 20 | - [2. Apple, Google, and Facebook Sign In](auth/social.md) 21 | - Firestore Databases 22 | - [1. Reading Data](firestore/pt1.md) 23 | - [2. Writing Data](firestore/pt2.md) 24 | - [API Integration](api/intro.md) 25 | - ---- 26 | - [Deployment](deployment/intro.md) 27 | 29 | - [GitHub Version Control](github/intro.md) 30 | -------------------------------------------------------------------------------- /docs/api/intro.md: -------------------------------------------------------------------------------- 1 | # API Integration 2 | 3 | The FlutterMet video has a section dedicate to API Integrations: 4 | 5 | -------------------------------------------------------------------------------- /docs/auth/images/intro/adappios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/adappios.png -------------------------------------------------------------------------------- /docs/auth/images/intro/addfirebasetoappandroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/addfirebasetoappandroid.png -------------------------------------------------------------------------------- /docs/auth/images/intro/createproject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/createproject.png -------------------------------------------------------------------------------- /docs/auth/images/intro/downloadgoogle-services.json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/downloadgoogle-services.json.png -------------------------------------------------------------------------------- /docs/auth/images/intro/downloadgoogleservice-info.plist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/downloadgoogleservice-info.plist.png -------------------------------------------------------------------------------- /docs/auth/images/intro/firebaseconfigflutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/firebaseconfigflutterflow.png -------------------------------------------------------------------------------- /docs/auth/images/intro/firebaseconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/firebaseconsole.png -------------------------------------------------------------------------------- /docs/auth/images/intro/packagenameinflutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/packagenameinflutterflow.png -------------------------------------------------------------------------------- /docs/auth/images/intro/registerappandroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/registerappandroid.png -------------------------------------------------------------------------------- /docs/auth/images/intro/registerappios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/registerappios.png -------------------------------------------------------------------------------- /docs/auth/images/intro/uploadconfigfiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/intro/uploadconfigfiles.png -------------------------------------------------------------------------------- /docs/auth/images/setup/authpageinflutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/authpageinflutterflow.png -------------------------------------------------------------------------------- /docs/auth/images/setup/enable_email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/enable_email.png -------------------------------------------------------------------------------- /docs/auth/images/setup/firebaseauthscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/firebaseauthscreen.png -------------------------------------------------------------------------------- /docs/auth/images/setup/getstartedfirebaseauth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/getstartedfirebaseauth.png -------------------------------------------------------------------------------- /docs/auth/images/setup/googlesignininflutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/googlesignininflutterflow.png -------------------------------------------------------------------------------- /docs/auth/images/setup/selectauthinfirebaseconsole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/selectauthinfirebaseconsole.png -------------------------------------------------------------------------------- /docs/auth/images/setup/selectsigninmethod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/auth/images/setup/selectsigninmethod.png -------------------------------------------------------------------------------- /docs/auth/intro.md: -------------------------------------------------------------------------------- 1 | # Getting Started With Firebase 2 | 3 | 4 | 5 | # For a Written Tutorial, Look Below 6 | 7 | To set up Firebase in FlutterFlow, you must first create a new project in your [Firebase Console](https://console.firebase.google.com) by pressing "Add Project." 8 | ![Firebase Console](./images/intro/firebaseconsole.png) 9 | 10 | Follow the instructions in the Firebase Console until you see a button that says "Create Project." 11 | ![Create Project](./images/intro/createproject.png) 12 | 13 | Wait for that to finish, and press continue. 14 | 15 | For the next part of the tutorial, you must refer to your package name in FlutterFlow. This can be done by looking in your App Settings. 16 | ![Find Package Name](./images/intro/packagenameinflutterflow.png) 17 | 18 | In the Project Overview of the Firebase Console, under "Get Started By Adding Firebase to Your App," click the Android Button. 19 | ![Add Firebase to Android App](./images/intro/addfirebasetoappandroid.png) 20 | 21 | Under where it says "Android Package Name," paste the package name from FlutterFlow. 22 | ![Register Android App](./images/intro/registerappandroid.png) 23 | 24 | Next, you can add an App Nickname if you'd like to. 25 | 26 | Once you are done, click "Register App." 27 | 28 | Wait a few seconds, and click the button that says "Download google-services.json." 29 | ![Download google-services.json](./images/intro/downloadgoogle-services.json.png) 30 | 31 | After this, you can keep clicking "Next" until you see a button that says "Continue to Console." Click this. 32 | 33 | Now, your project overview page will be a little different. Click "Add App" and press the IOS button. 34 | ![Add IOS App](./images/intro/adappios.png) 35 | 36 | Under "IOS Bundle ID," paste the package name from FlutterFlow, and add an App Nickname if you want. 37 | ![Register IOS App](./images/intro/registerappios.png) 38 | 39 | Afer this, click "Register App" and press the button that says "Download GoogleService-Info.plist." 40 | ![Download GoogleService-info.plist](./images/intro/downloadgoogleservice-info.plist.png) 41 | 42 | Just like last time, click "Next" until you see a button that says "Continue to Console," and click it. 43 | 44 | Now, you can go back to FlutterFlow, and press the "Firebase Config" button in the sidebar. 45 | 46 | ![Firebase Config in FlutterFlow](./images/intro/firebaseconfigflutterflow.png) 47 | 48 | Here, it will tell you to upload your configuration files. 49 | ![Upload Config Files to FlutterFlow](./images/intro/uploadconfigfiles.png) 50 | 51 | Under "Android Configuration," select the google-services.json you just downloaded. 52 | 53 | Under "IOS Configuration," select the GoogleService-Info.plist you just downloaded. 54 | screenshot 55 | 56 | Congratulations, you just set up Firebase in your FlutterFlow project! 57 | -------------------------------------------------------------------------------- /docs/auth/setup.md: -------------------------------------------------------------------------------- 1 | # Setting Up Firebase Authentication 2 | 3 | 4 | 5 | 6 | # For a Written Turorial, Look Below 7 | 8 | Under the Firebase Auth Tab in FlutterFlow, select a login page and homepage. These can be empty for the time being, but you will need to add login widgets to the login screen in order for Firebase Auth to work. 9 | ![Select Login and Home Pages](./images/setup/firebaseauthscreen.png) 10 | 11 | Next, go to your [Firebase Console](https://console.firebase.google.com) and click the Authentication tab in the sidebar. 12 | ![Select Authentication Tab](./images/setup/selectauthinfirebaseconsole.png) 13 | 14 | Next, press "Get Started." 15 | ![Get Started](./images/setup/getstartedfirebaseauth.png) 16 | 17 | After this, go to the Sign in Method tab and select a sign in method (you can choose multiple). 18 | ![Select Sign In Method](./images/setup/selectsigninmethod.png) 19 | 20 | Once you click it, a pop-up will appear. For example, if you click "Email," it will look like this.. 21 | ![Email](./images/setup/enable_email.png) 22 | 23 | Toggle "Enable" to on, and press "Save." 24 | 25 | Now all you need to do is create a login screen. For an easy one, you can enable google sign in in Firebase, and in the UI builder, click "Components" and drag a "Google Sign In" widget on to the screen. It's as easy as that! 26 | ![Google Sign In](./images/setup/googlesignininflutterflow.png) 27 | -------------------------------------------------------------------------------- /docs/auth/social.md: -------------------------------------------------------------------------------- 1 | # Apple, Google, and Facebook Sign In 2 | 3 | The following video goes over adding Apple sign in to your app: 4 | 5 | 6 | 7 | ## Google 8 | 9 | The following video goes over adding Google sign in to your app: 10 | 11 | 12 | 13 | ## Facebook 14 | 15 | The following video goes over adding Facebook sign in to your app: 16 | 17 | -------------------------------------------------------------------------------- /docs/deployment/intro.md: -------------------------------------------------------------------------------- 1 | # Deployment 2 | 3 | Deployment steps are provided within the Preview, Sharing, and Download pages in FlutterFlow. More documentation **_coming Soon!_** -------------------------------------------------------------------------------- /docs/deployment/previewing.md: -------------------------------------------------------------------------------- 1 | 1. Previewing your app 2 | -------------------------------------------------------------------------------- /docs/deployment/running.md: -------------------------------------------------------------------------------- 1 | 2. Running on device 2 | -------------------------------------------------------------------------------- /docs/documentation/UI Builder_Widgets.md: -------------------------------------------------------------------------------- 1 | # Page Elements 2 | 3 | 4 | # 1. App Bar 5 | 6 | An app bar is a traditional navigation widget that appears at the top of the page. You can configure this widget a variety of ways: 7 | 8 | 9 | ### Background Color: 10 | 11 | You can change the background color to match the theme of your application by default it shows the primary color. 12 | 13 | 14 | ### Default Button Color: 15 | 16 | This will change the color of the default back arrow that appears in the top left. 17 | 18 | 19 | ### App Bar Height: 20 | 21 | By Default this is a standard height; you can leave it as is to be consistent or you can change the height to match your custom designs. 22 | 23 | 24 | ### Elevation: 25 | 26 | You can add an elevation to your app bar which simply provides a drop-shadow, if you don’t want a drop-shadow simply put the elevation at 0. 27 | 28 | 29 | ### Show Default Button: 30 | 31 | This toggle will show the default back arrow in the top left. You can toggle this off in order to add a custom icon in its place. 32 | 33 | 34 | ### Center Title: 35 | 36 | This will be on by default and it will center your title text like a sub page in the Cupertino design system. If you toggle this off you can add a text element to the top nav bar and it will align left by default to match Google Material Design and some designs in the Cupertino system. 37 | 38 | 39 | # 2. Floating Action Button (FAB) 40 | 41 | A floating action button can be dragged into the scaffold of a page. The FAB will automatically align to the bottom right corner of the page and it will appear above a “Nav Bar” if one appears on the page. By default we have set up the FAB widget to receive an “icon” widget inside it. 42 | 43 | 44 | ### Extended: 45 | 46 | You can also drag a text element inside the FAB and then toggle the “Extended” checkbox to on, which will bring up an icon selector to add to the left of the text. 47 | 48 | 49 | ### Color: 50 | 51 | You can adjust the color of the FAB background here. The default is the primary color within your app settings. 52 | 53 | 54 | ### Elevation: 55 | 56 | You can add an elevation to your FAB by selecting an integer, Google Material Design recommends a 6 for floating action buttons. 57 | 58 | 59 | # 3. Drawer & End Drawer 60 | 61 | A draw is a side menu that will appear on the left side of an application. If you want one that slides in from the right see (EndDrawer). This drawer can be completely customizable by dragging in a column, row and other widgets. The widget itself will have to be triggered by an action in order to be open. 62 | 63 | 64 | ### Editing the Drawer: 65 | 66 | Once you drag a draw onto a page you will see a button that appears in the parameters tab on the right. You can edit the drawer’s content by tapping “Edit Drawer”, note: you must have the scaffold selected in order to see this option. 67 | 68 | 69 | ![Drawer view in scaffold](images/endDrawerEdit.png "image_tooltip") 70 | 71 | 72 | 73 | ### Customizing the Look of a Drawer: 74 | 75 | You are able to drag any Base Element or Layout Element you want into the drawer in order to provide a view for your users. You are only able to use one Drawer & one End Drawer per page in FlutterFlow at this time. 76 | 77 | 78 | ### Showing a Drawer: 79 | 80 | In order for your drawer to appear in your UI when you preview/share your project you will need to hook up an action to an element on your page. In order to do this drag a Button or an Icon Button onto your page. 81 | 82 | 83 | 84 | 1. Add an Action 85 | 2. For Action Type select: Drawer 86 | 3. In Drawer Action Type: Select “Open Drawer” or “Open End Drawer”. 87 | 4. In order to close a drawer follow steps 1-3 but instead of the above options select “Close Drawers”. 88 | -------------------------------------------------------------------------------- /docs/documentation/UI_BuilderWidgets_BaseElements.md: -------------------------------------------------------------------------------- 1 | # Base Elements 2 | 3 | 4 | # 1. Text 5 | 6 | The text element allows you to show text on a page, use this in order to add text to an app bar, or your page, you can change the theme styling or look and feel in the properties panel. 7 | 8 | 9 | ### Editing Text Value 10 | 11 | After dragging your text onto the page, you can edit the text from the right side bar, there is an input that appears at the top of the properties panel. You can type in a value or you can set the text from a variable. 12 | 13 | 14 | ### Editing Text Look & Feel - Theme Styles 15 | 16 | After you have the text that you want on the page, you can change the Theme Text Style in order to set from your theme, we provide Title 1, Title 2, Title 3, Subtitle 1, Subtitle 2, Body Text 1, Body Text 2 and custom which allows you to break the rules of your theme. 17 | 18 | Note: You can select a theme style, i.e. “Title 1” and then adjust the size, color, weight etc. on your page and your styles will override the theme style. 19 | 20 | 21 | ### Editing Text Look & Feel - Custom 22 | 23 | You can also select custom which allows you to manually set the font family, font weight, size & color. As well as align your text. 24 | 25 | 26 | ### Text Alignment 27 | 28 | In order for your text to follow the “Text-Align” selection. You will need to select the text on the page and in the property pane on the right go to the Alignment section and select “Expanded”. This will make sure your text wraps and fills the parent widget it is inside. This also allows you to adjust the align property to make it align left, center, right or justified. 29 | 30 | 31 | # 2. Textfield 32 | 33 | A textfield or input allows a user to input text in your interface, these text fields are used for authentication, search, creating records etc. You have a variety of options when editing a text field. 34 | 35 | 36 | ### Textfield Properties 37 | 38 | 39 | #### Password Field 40 | 41 | You will be able to toggle a Password field on; this will hide what the user inputs initially and provide an additional option to show an icon on the right side of the input. You can set the icon size and color. 42 | 43 | 44 | #### Show Clear Icon 45 | 46 | This toggle will provide a small “X” at the end of your input, a user can tap this “X” to clear the value currently in the textfield. 47 | 48 | 49 | #### Keyboard Type 50 | 51 | This dropdown allows you to choose what keyboard should show up by default. This is beneficial for when your textfield is suppose to capture an email instead of a standard text input, or number rather than text. 52 | 53 | ![Dropdown values for keyboard types](images/dropdownValues.png "image_tooltip") 54 | 55 | 56 | #### Initial Value 57 | 58 | This is for when you are expecting the input to have a value already populated -- you can set this value from a variable. For example if you go through a creation process where you capture a name -- an input could have an initial value of [authenticated user] which would be the user's full name. For an unauthenticated user they would have to input their name. 59 | 60 | 61 | #### Label Text 62 | 63 | The label can also be placeholder text and will show even after a user has entered a value. You can type in your label text here; if you want your label text to be styled differently; scroll down and uncheck the box for “Label Style Same as above”. When you uncheck this box you will be able to adjust the styling separate from the initial value and hint text. 64 | 65 | 66 | ![Text Field options showing different label, hint and initial value options](images/textField_options.png "image_tooltip") 67 | 68 | 69 | #### Hint Text 70 | 71 | If no label text is defined the hint text will act as a placeholder. If a label is defined the hint text will appear as you make the input active as shown above. 72 | 73 | 74 | ### Text Input Validation 75 | 76 | After you set the values for initial, label & hint. You have the ability to set a text field as “required” in the validation section. Toggle the “Required Field” checkbox to on, and set the text that appears if a user doesn’t fill it out. 77 | 78 | ### Text Input Validation 79 | 80 | After you set the values for initial, label & hint. You have the ability to set a text field as “required” in the validation section. Toggle the “Required Field” checkbox to on, and set the text that appears if a user doesn’t fill it out. 81 | 82 | 83 | #### Minimum required characters 84 | 85 | You can set the amount of characters needed for a certain input to be valid, this is helpful for passwords or email addresses. 86 | 87 | 88 | #### Automatically Validate 89 | 90 | When this is toggled on, the input will be validated with every character change instead of after submitting the form. 91 | 92 | 93 | ### Leading Icon 94 | 95 | You can set an icon to appear before you input -- this is beneficial to help spice up your designs or to add one more indicator of what each input refers to in a form. 96 | 97 | 98 | ### Input Decoration Properties 99 | 100 | You may think how do I change the input style type? Well you will find that at the bottom. 101 | 102 | 103 | #### Input Border Type 104 | 105 | This property will allow you to switch between an input with a bottom border, or an input with a full border where the label floats above. You can also toggle the “Filled” Property in order to give your input a background color. 106 | 107 | Note: Fill color will not show up if the “Filled” Checkbox is unchecked. 108 | 109 | You can also edit the border radius, border color and content padding of an input in this bottom section. 110 | 111 | 112 | # 3. Image 113 | 114 | Images allow you to upload an image from your device or set the link to an image on a network, you can also set the image as a variable from your firestore database. 115 | 116 | 117 | ### Displaying your Image 118 | 119 | 120 | #### Width & Height 121 | 122 | You are able to set a fixed width and height by setting both properties by exact pixels; this typically works well when the image won’t change or when whichever image is fed into this element will be the same size. 123 | 124 | You can also set the image Width & Height as % which will be responsive to layout but could display the image differently depending on the screen size. 125 | 126 | 127 | #### Border Radius 128 | 129 | You can set the border radius of your image here, if you want a circle image you can also use the “Circle Image” widget as well. 130 | 131 | 132 | #### Box Fit 133 | 134 | You are able to set a fixed width and height by setting both properties by exact pixels; this typically works well when the image won’t change or when whichever image is fed into this element will be the same size. 135 | 136 | 137 | ![Boxfit Examples for images](images/boxFit_examples.png "image_tooltip") 138 | 139 | 140 | -------------------------------------------------------------------------------- /docs/documentation/images/Description.md: -------------------------------------------------------------------------------- 1 | # This is a folder for the images in documentation. 2 | -------------------------------------------------------------------------------- /docs/documentation/images/boxFit_examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/documentation/images/boxFit_examples.png -------------------------------------------------------------------------------- /docs/documentation/images/dropdownValues.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/documentation/images/dropdownValues.png -------------------------------------------------------------------------------- /docs/documentation/images/endDrawerEdit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/documentation/images/endDrawerEdit.png -------------------------------------------------------------------------------- /docs/documentation/images/textField_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/documentation/images/textField_options.png -------------------------------------------------------------------------------- /docs/faq/account.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Account 5 | 6 | >How do I create an account 7 | 8 | To create a FlutterFlow account, please follow the steps: 9 | 10 | 1. From flutterflow.io select “Create Account” in the top right corner 11 | 2. Enter your Name, email address, and password and select “Create Account” 12 | 13 | >I can't log into my account / forgot my login details. What do I do? 14 | 15 | To reset your account password: 16 | 17 | 1. From flutterflow.io select “Login” in the top right corner 18 | 2. At the bottom of the page, select “Reset Password” 19 | 3. You will receive an email with a link to reset your password 20 | 4. Click the reset link and enter your new password 21 | 22 | If you can’t remember your username or are experiencing any other issues, please reach out to as at support@flutterflow.i 23 | 24 | >How do I update my password? 25 | 26 | To update your password, please use the following steps: 27 | 28 | 1. After logging into your FlutterFlow account, select “Account” from the top right 29 | 2. Select “Reset Password” 30 | 3. You will receive an email with a link to reset your password 31 | 4. Click the reset link and enter your new password 32 | 33 | >How do I delete my account? 34 | 35 | To delete your FlutterFlow account, please follow these steps: 36 | 37 | 1. After logging into your FlutterFlow account, select “Account” from the top right 38 | 2. Select “Delete Account 39 | -------------------------------------------------------------------------------- /docs/faq/contact.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Other 5 | 6 | >I have a question that isn’t answered here. How can I get help? 7 | 8 | Please reach out to us at support@flutterflow.io 9 | 10 | We're here to help! 11 | 12 | -------------------------------------------------------------------------------- /docs/faq/faq.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | Welcome to the FAQ! Choose any of the following sections to get your questions answered: 5 | 6 | - [Subscriptions](faq/subscriptions.md) 7 | - [Payments / Billing](faq/payments.md) 8 | - [Account](faq/account.md) 9 | - [Privacy & Terms of Service](faq/privacy.md) 10 | - [Product and Features](faq/product.md) 11 | - [Contact](faq/contact.md) 12 | -------------------------------------------------------------------------------- /docs/faq/payments.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Payments & Billing 5 | 6 | >What payment methods do you accept? 7 | 8 | We currently accept Visa, Mastercard, American Express, and JCB. 9 | 10 | 11 | >When will my credit card be charged? 12 | 13 | If you upgraded your account to a paid plan, we will charge your credit card on the same day each month. This typically will fall on the day that you originally upgraded your plan. If you received a free trial, your card will be charged on the day following the end of your trial period. 14 | 15 | 16 | >Can I use a Gift Card from Amex or Visa in addition to my credit card?
17 | 18 | At this time we are unable to process Gift Card payments. 19 | 20 | 21 | > I used the wrong credit card. Can I change it?
22 | 23 | Unfortunately, once your subscription has been purchased we are unable to change your payment method for this month. You can update future payments by changing your payment details. 24 | 25 | -------------------------------------------------------------------------------- /docs/faq/privacy.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Privacy & Terms of Service 5 | 6 | >Where can I view your Privacy Policy? 7 | 8 | You can review the most recent version of our Privacy Policy [here](https://flutterflow.io/pp) 9 | 10 | 11 | >Where can I view your Terms of Service? 12 | 13 | You can review the most recent version of our Terms of Service [here](https://flutterflow.io/tos) 14 | 15 | 16 | >How do I unsubscribe from your email communications? 17 | 18 | To unsubscribe from FlutterFlow emails, please click the “Unsubscribe” link in the footer of our emails. 19 | 20 | 21 | >How do I request deletion of my personal data? 22 | 23 | To request deletion of your personal data, please reach out to our support team at support@flutterflow.io 24 | 25 | 26 | > How do I request a copy of my personal data? 27 | 28 | To request deletion of your personal data, please reach out to our support team at support@flutterflow.io 29 | 30 | -------------------------------------------------------------------------------- /docs/faq/product.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Product and Features 5 | 6 | 7 | >I’m new to FlutterFlow. Where can I learn more about the product and features? 8 | 9 | To learn more about our product and features, please visit our [documentation site](https://docs.flutterflow.io/#/welcome). 10 | 11 | For product introductions and tutorials, please visit our [YouTube Page](https://www.youtube.com/channel/UC5LueiosDVInA6yXE_38i9Q/featured). 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /docs/faq/subscriptions.md: -------------------------------------------------------------------------------- 1 | # Frequently Answered Questions 2 | ---- 3 | 4 | ## Subscriptions 5 | 6 | >Which plan should I choose? What’s the difference between plans? 7 | 8 | Please visit our [Pricing Page](https://flutterflow.io/pricing.html) for a full overview of our plans. If you aren't sure which plan is best for you, please reach out to us at support@flutterflow.io 9 | 10 | 11 | >Do subscriptions renew automatically? 12 | 13 | Yes, our subscriptions renew automatically to avoid disrupting your app development. Monthly subscriptions renew on the same day each month (typically the day you subscribed). 14 | 15 | >Can I pause my subscription? 16 | 17 | We do not currently offer the option to pause your subscription. 18 | 19 | 20 | >How do I upgrade my paid subscription? 21 | To upgrade your subscription, please use the following steps: 22 | 23 | 1. After logging into your FlutterFlow account, select “Account” from the top right 24 | 2. Under My Plan select “Manage” 25 | 3. Select “Upgrade” under the plan you would like to upgrade to 26 | 4. Enter your payment information 27 | 28 | 29 | >How do I cancel my paid subscription? 30 | To cancel your paid subscription, please use the following steps: 31 | 32 | 1. After logging into your FlutterFlow account, select “Account” from the top right 33 | 2. Under My Plan select “Manage” 34 | 3. Select “Switch To Free” under the free plan 35 | 4. Please note you will continue to have a Free account after cancelling your paid subscription 36 | 37 | 38 | >Can I transfer my subscription to another account? 39 | 40 | We are unable to transfer a paid FlutterFlow subscription to another FlutterFlow account. 41 | 42 | 43 | >What’s your refund policy? 44 | 45 | For details on our refund policy, please visit our Terms of Service site [here](https://flutterflow.io/tos) 46 | For any additional details, please reach out to our support team at support@flutterflow.io 47 | 48 | -------------------------------------------------------------------------------- /docs/ff_full_logo_light-p-500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/ff_full_logo_light-p-500.png -------------------------------------------------------------------------------- /docs/ff_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/ff_logo.png -------------------------------------------------------------------------------- /docs/firebase-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/firebase-logo.png -------------------------------------------------------------------------------- /docs/firestore/pt1.md: -------------------------------------------------------------------------------- 1 | # Reading Data 2 | 3 | The following is a video introduction to Firebase and Firestore: 4 | 5 | -------------------------------------------------------------------------------- /docs/firestore/pt2.md: -------------------------------------------------------------------------------- 1 | # Writing Data 2 | 3 | The following is the second video introduction to Firebase and Firestore: 4 | 5 | -------------------------------------------------------------------------------- /docs/github/connecting.md: -------------------------------------------------------------------------------- 1 | 1. Connecting to GitHub 2 | -------------------------------------------------------------------------------- /docs/github/intro.md: -------------------------------------------------------------------------------- 1 | # GitHub Version Control 2 | 3 | GitHub integration steps are provided within the FlutterFlow app sidebar. More documentation **_coming Soon!_** -------------------------------------------------------------------------------- /docs/github/modifying.md: -------------------------------------------------------------------------------- 1 | 2. Modifying generated code 2 | -------------------------------------------------------------------------------- /docs/guides/images/Add new page for pageview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/Add new page for pageview.png -------------------------------------------------------------------------------- /docs/guides/images/Flutterflow onboarding 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/Flutterflow onboarding 1.png -------------------------------------------------------------------------------- /docs/guides/images/Pageview properties bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/Pageview properties bar.png -------------------------------------------------------------------------------- /docs/guides/images/create project flutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/create project flutterflow.png -------------------------------------------------------------------------------- /docs/guides/images/dialog wrap stack widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/dialog wrap stack widget.png -------------------------------------------------------------------------------- /docs/guides/images/empty screen flutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/empty screen flutterflow.png -------------------------------------------------------------------------------- /docs/guides/images/pageview flutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/pageview flutterflow.png -------------------------------------------------------------------------------- /docs/guides/images/textfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/textfield.png -------------------------------------------------------------------------------- /docs/guides/images/uncheck safe area flutterflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/uncheck safe area flutterflow.png -------------------------------------------------------------------------------- /docs/guides/images/wrap widget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/guides/images/wrap widget.png -------------------------------------------------------------------------------- /docs/guides/pageview.md: -------------------------------------------------------------------------------- 1 | # PageView 2 | --- 3 | 4 | > This guide was written by a member of the FlutterFlow community! 5 | > 6 | > If you would like to contribute to docs, visit https://github.com/FlutterFlow/flutterflow-docs 7 | > 8 | > Credits to Cynthia Peter [@CynthiaPeter](https://github.com/CynthiaPeter) 9 | 10 | ### Introduction 11 | 12 | A PageView widget is a common widget that handles a scrollable list of pages. A PageView is very similar to a carousel. 13 | 14 | This is a step-by-step guide to show you how to make use of the PageView Component in Flutterflow. 15 | 16 | The Pageview widget can be used to create onboarding pages, Instagram carousels, and custom features. There are no boundaries to what you can create with the PageView component. 17 | 18 | > What you’ll need 19 | 20 | To follow along, you’d need to [Sign-In](https://app.flutterflow.io/) to a flutterflow.io account or [create a new account](https://app.flutterflow.io/create-account). 21 | 22 | > Things you can do with the Pageview component 23 | 24 | * Add, delete, and style the Pageview. 25 | * You can change the scroll direction of a Pageview. 26 | * You can cusomize the indicator dots of a PageView. 27 | * Using a stack component, you can add more components on a pageview. 28 | 29 | 30 | ## PageView Component in Flutterflow 31 | The image below shows an onboarding screen that can be created with the PageView component. 32 | 33 | 34 | 35 | **Note**: If you don’t have a previous project, you’ll be seeing a screen that prompts you to create a new project or open a previous one. If you open a previous project, you can just add a new screen. 36 | 37 | Otherwise, you create a new project and give it a name. 38 | 39 | 40 | 41 | After creating a project successfully, you will be introduced to the flutterflow workspace. Like this 42 | 43 | 44 | 45 | > Creating a new PageView 46 | You have a workspace to build your application. The next thing you need to do is search for the PageView from the component section on your left. 47 | 48 | If by any chance you can’t find it at a first glance, on the search bar above the Widgets/Components tab, type in 'PageView'. The PageView component/widget can be found under the Layout components. 49 | 50 | Drag and drop the PageView component onto the empty screen. You should have something similar to this: 51 | 52 | 53 | 54 | The pageview currently has three pages. To add a new page, look to the right-hand side of the screen to see the properties page for a PageView component. 55 | 56 | 57 | 58 | 59 | > Adding a new Page to the PageView 60 | Click on ‘Page 1’ and you get a dropdown option to add a new page or click through the number of pages on the screen. 61 | 62 | > Deleting a Page from the PageView 63 | You can delete a page by clicking on the page of a PageView and pressing your delete button. This deletes the image. Press the delete button again to delete the placeholder. 64 | 65 | >Changing the Size Of A PageView 66 | Still on the properties page by your right, under the PageView properties, there is a width and height property that can be set either in pixel(PX) or percentage(%). 67 | 68 | To Make the PageView take up the full screen, take the following steps: 69 | 1. Click on the scaffold(*the blank part of the mobile screen*). On the properties bar, uncheck the SafeArea. 70 | 2. Right-click on the mobile view to switch back to Page View Properties. 71 | 72 | Under the Page View Property, set the height and width to infinity by clicking on the infinity symbol on the text field. 73 | To remove the margin at the bottom, change the number from 50 to 0 on the bottom(**B**) text field under the margin properties. 74 | 75 | We have a full-screen PageView. 76 | 77 | > Changing the scroll direction of the PageView 78 | 79 | You can change the scroll direction of the PageView by switching the Axis dropdown values from horizontal(left to right) to vertical(top to bottom). 80 | 81 | ### Customizing the PageView Indicator 82 | You can move the indicator around by moving the slider either left to right to position horizontally or top to bottom to position vertically. 83 | 84 | > Changing the color of an indicator 85 | Under the Indicator properties, click on the active color box and use the color picker to select the color you want. 86 | 87 | To edit an inactive color, click on the inactive color box and use the color picker to select the color you want. 88 | 89 | Customizing the indicator can be done by changing the values in the ‘Dot height and Dot width’ textboxes. 90 | 91 | To control the spacing, you can edit the value in the spacing textfield. 92 | 93 | To give the indicator dots custom borderRadius, you can edit the value on the Border Radius textfield. 94 | 95 | 96 | ### Adding components on the Pageview 97 | 98 | To add a button component on a Pageview you can take the following steps: 99 | 100 | * Wrap the Pageview in a stack. To do this, you have to click on the mobile view/Scaffold or right click to select the current page. 101 | 102 | Ensure that the page is selected. Right click and select ‘wrap widget’ or Ctrl + B to show a dialog box like this: 103 | 104 | 105 | 106 | You have successfully wrapped our Pageview in a stack widget. This allows you to stack components onto the pageview. 107 | 108 | To add a button, you can drag an ‘icon button’ onto the Pageview. Click on the Icon properties on the left to choose a specific icon button and style. 109 | 110 | **Note**: Ensure that you select the widget/component you want to work on before you try to stack any components on it. 111 | 112 | 113 | 114 | Finally, you have a beautiful and custom PageView. 115 | 116 | You can always learn by watching or reading through the documentation, but to make this work, it is important that you practice, play arround with components and if there is a feature you would want to be added, send a mail to support@flutterflow.io. 117 | 118 | 119 | ### Next steps 120 | 121 | Check out other guides to learn more about how to make use of components. 122 | 123 | * [Frequently Asked Questions](faq/faq.md) 124 | 125 | Happy building! 126 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /docs/layers_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/layers_icon.png -------------------------------------------------------------------------------- /docs/quickstart/firstapp.md: -------------------------------------------------------------------------------- 1 | # Building an Art Gallery App (FlutterMet) 2 | 3 | In this video tutorial, you will learn how to build FlutterMet. 4 | 5 | -------------------------------------------------------------------------------- /docs/quickstart/intro.md: -------------------------------------------------------------------------------- 1 | # Quickstart Guide: Intro to FlutterFlow 2 | 3 | Let's start by learning the basics: 4 | 5 | -------------------------------------------------------------------------------- /docs/quickstart/navigation.md: -------------------------------------------------------------------------------- 1 | # Navigation 2 | 3 | The following video goes over navigation within FlutterFlow: 4 | 5 | 6 | 7 | 8 | ## How to build a NavBar: 9 | 10 | The following video goes over building a NavBar within FlutterFlow: 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/quickstart/nextsteps.md: -------------------------------------------------------------------------------- 1 | 5. Next Steps 2 | -------------------------------------------------------------------------------- /docs/quickstart/templates.md: -------------------------------------------------------------------------------- 1 | 4. Templates 2 | -------------------------------------------------------------------------------- /docs/quickstart/uicomponents.md: -------------------------------------------------------------------------------- 1 | # Custom UI Components 2 | 3 | In this video, we'll cover how to build and use your own custom components: 4 | 5 | -------------------------------------------------------------------------------- /docs/settings_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlutterFlow/flutterflow-docs/8a9fbb5f8ad0642d9755daa97b3799d3240ce153/docs/settings_icon.png -------------------------------------------------------------------------------- /docs/style.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600"); 2 | * { 3 | -webkit-font-smoothing: antialiased; 4 | -webkit-overflow-scrolling: touch; 5 | -webkit-tap-highlight-color: rgba(0,0,0,0); 6 | -webkit-text-size-adjust: none; 7 | -webkit-touch-callout: none; 8 | box-sizing: border-box; 9 | } 10 | @font-face { 11 | font-family: 'Product Sans'; /*a name to be used later*/ 12 | src: url('Product\ Sans\ Regular.ttf'); /*URL to font*/ 13 | } 14 | 15 | @font-face { 16 | font-family: 'Product Sans Bold'; /*a name to be used later*/ 17 | src: url('Product\ Sans\ Bold.ttf'); /*URL to font*/ 18 | } 19 | 20 | body:not(.ready) { 21 | overflow: hidden; 22 | } 23 | body:not(.ready) [data-cloak], 24 | body:not(.ready) .app-nav, 25 | body:not(.ready) > nav { 26 | display: none; 27 | } 28 | div#app { 29 | font-size: 30px; 30 | font-weight: lighter; 31 | margin: 40vh auto; 32 | text-align: center; 33 | } 34 | div#app:empty::before { 35 | content: 'Loading...'; 36 | } 37 | .emoji { 38 | height: 1.2rem; 39 | vertical-align: middle; 40 | } 41 | .progress { 42 | background-color: var(--theme-color, #ea6f5a); 43 | height: 2px; 44 | left: 0px; 45 | position: fixed; 46 | right: 0px; 47 | top: 0px; 48 | transition: width 0.2s, opacity 0.4s; 49 | width: 0%; 50 | z-index: 999999; 51 | } 52 | .search a:hover { 53 | color: var(--theme-color, #ea6f5a); 54 | } 55 | .search .search-keyword { 56 | color: var(--theme-color, #ea6f5a); 57 | font-style: normal; 58 | font-weight: bold; 59 | } 60 | html, 61 | body { 62 | height: 100%; 63 | } 64 | body { 65 | -moz-osx-font-smoothing: grayscale; 66 | -webkit-font-smoothing: antialiased; 67 | color: #ffffff; 68 | font-family: 'Product Sans'; 69 | font-size: 15px; 70 | letter-spacing: 0; 71 | margin: 0; 72 | overflow-x: hidden; 73 | } 74 | img { 75 | max-width: 100%; 76 | } 77 | a[disabled] { 78 | cursor: not-allowed; 79 | opacity: 0.6; 80 | } 81 | kbd { 82 | border: solid 1px #ccc; 83 | border-radius: 3px; 84 | display: inline-block; 85 | font-size: 12px !important; 86 | line-height: 12px; 87 | margin-bottom: 3px; 88 | padding: 3px 5px; 89 | vertical-align: middle; 90 | } 91 | li input[type='checkbox'] { 92 | margin: 0 0.2em 0.25em 0; 93 | vertical-align: middle; 94 | } 95 | .app-nav { 96 | margin: 25px 60px 0 0; 97 | position: absolute; 98 | right: 0; 99 | text-align: right; 100 | z-index: 10; 101 | /* navbar dropdown */ 102 | } 103 | .app-nav.no-badge { 104 | margin-right: 25px; 105 | } 106 | .app-nav p { 107 | margin: 0; 108 | } 109 | .app-nav > a { 110 | margin: 0 1rem; 111 | padding: 5px 0; 112 | } 113 | .app-nav ul, 114 | .app-nav li { 115 | display: inline-block; 116 | list-style: none; 117 | margin: 0; 118 | } 119 | .app-nav a { 120 | color: inherit; 121 | font-size: 16px; 122 | text-decoration: none; 123 | transition: color 0.3s; 124 | } 125 | .app-nav a:hover { 126 | color: var(--theme-color, #ea6f5a); 127 | } 128 | .app-nav a.active { 129 | border-bottom: 2px solid var(--theme-color, #ea6f5a); 130 | color: var(--theme-color, #ea6f5a); 131 | } 132 | .app-nav li { 133 | display: inline-block; 134 | margin: 0 1rem; 135 | padding: 5px 0; 136 | position: relative; 137 | cursor: pointer; 138 | } 139 | .app-nav li ul { 140 | background-color: #fff; 141 | border: 1px solid #ddd; 142 | border-bottom-color: #ccc; 143 | border-radius: 4px; 144 | box-sizing: border-box; 145 | display: none; 146 | max-height: calc(100vh - 61px); 147 | overflow-y: auto; 148 | padding: 10px 0; 149 | position: absolute; 150 | right: -15px; 151 | text-align: left; 152 | top: 100%; 153 | white-space: nowrap; 154 | } 155 | .app-nav li ul li { 156 | display: block; 157 | font-size: 14px; 158 | line-height: 1rem; 159 | margin: 0; 160 | margin: 8px 14px; 161 | white-space: nowrap; 162 | } 163 | .app-nav li ul a { 164 | display: block; 165 | font-size: inherit; 166 | margin: 0; 167 | padding: 0; 168 | } 169 | .app-nav li ul a.active { 170 | border-bottom: 0; 171 | } 172 | .app-nav li:hover ul { 173 | display: block; 174 | } 175 | .github-corner { 176 | border-bottom: 0; 177 | position: fixed; 178 | right: 0; 179 | text-decoration: none; 180 | top: 0; 181 | z-index: 1; 182 | } 183 | .github-corner:hover .octo-arm { 184 | -webkit-animation: octocat-wave 560ms ease-in-out; 185 | animation: octocat-wave 560ms ease-in-out; 186 | } 187 | .github-corner svg { 188 | color: #57636C; 189 | fill: var(--theme-color, #202427); 190 | height: 80px; 191 | width: 80px; 192 | } 193 | main { 194 | display: block; 195 | position: relative; 196 | width: 100vw; 197 | height: 100%; 198 | z-index: 0; 199 | } 200 | main.hidden { 201 | display: none; 202 | } 203 | .anchor { 204 | display: inline-block; 205 | text-decoration: none; 206 | transition: all 0.3s; 207 | } 208 | .anchor span { 209 | color: #c8c8c8; 210 | } 211 | .anchor:hover { 212 | text-decoration: underline; 213 | } 214 | .sidebar { 215 | border-right: 1px solid rgba(0,0,0,0.07); 216 | overflow-y: auto; 217 | padding: 40px 0 0; 218 | position: absolute; 219 | top: 0; 220 | bottom: 0; 221 | left: 0; 222 | transition: transform 250ms ease-out; 223 | width: 300px; 224 | z-index: 20; 225 | } 226 | .sidebar > h1 { 227 | margin: 0 auto 1rem; 228 | font-size: 1.5rem; 229 | font-weight: 300; 230 | text-align: left; 231 | padding-left: 14px; 232 | } 233 | .sidebar > h1 a { 234 | color: inherit; 235 | text-decoration: none; 236 | } 237 | .sidebar > h1 .app-nav { 238 | display: block; 239 | position: static; 240 | } 241 | .sidebar .sidebar-nav { 242 | line-height: 2em; 243 | padding-bottom: 40px; 244 | } 245 | .sidebar li.collapse .app-sub-sidebar { 246 | display: none; 247 | } 248 | .sidebar ul { 249 | margin: 0 0 0 15px; 250 | padding: 0; 251 | } 252 | .sidebar li > p { 253 | font-weight: 700; 254 | margin: 0; 255 | } 256 | .sidebar ul, 257 | .sidebar ul li { 258 | list-style: none; 259 | } 260 | .sidebar ul li a { 261 | border-bottom: none; 262 | display: block; 263 | } 264 | .sidebar ul li ul { 265 | padding-left: 20px; 266 | } 267 | .sidebar::-webkit-scrollbar { 268 | width: 4px; 269 | } 270 | .sidebar::-webkit-scrollbar-thumb { 271 | background: transparent; 272 | border-radius: 4px; 273 | } 274 | .sidebar:hover::-webkit-scrollbar-thumb { 275 | background: rgba(136,136,136,0.4); 276 | } 277 | .sidebar:hover::-webkit-scrollbar-track { 278 | background: rgba(136,136,136,0.1); 279 | } 280 | .sidebar-toggle { 281 | background-color: transparent; 282 | /* background-color: #3124a1; */ 283 | border: 0; 284 | outline: none; 285 | padding: 10px; 286 | position: absolute; 287 | bottom: 0; 288 | left: 300px; 289 | text-align: center; 290 | transition: opacity 0.3s; 291 | width: 284px; 292 | z-index: 30; 293 | cursor: pointer; 294 | } 295 | .sidebar-toggle:hover .sidebar-toggle-button { 296 | opacity: 0.4; 297 | } 298 | .sidebar-toggle span { 299 | background-color: var(--theme-color, #ea6f5a); 300 | display: block; 301 | margin-bottom: 4px; 302 | width: 16px; 303 | height: 2px; 304 | } 305 | body.sticky .sidebar, 306 | body.sticky .sidebar-toggle { 307 | position: fixed; 308 | } 309 | .content { 310 | padding-top: 60px; 311 | position: absolute; 312 | top: 0; 313 | right: 0; 314 | bottom: 0; 315 | left: 300px; 316 | transition: left 250ms ease; 317 | } 318 | .markdown-section { 319 | margin: 0 auto; 320 | max-width: 80%; 321 | padding: 30px 15px 40px 15px; 322 | position: relative; 323 | } 324 | .markdown-section > * { 325 | box-sizing: border-box; 326 | font-size: inherit; 327 | } 328 | .markdown-section > :first-child { 329 | margin-top: 0 !important; 330 | } 331 | .markdown-section hr { 332 | border: none; 333 | border-bottom: 1px solid #eee; 334 | margin: 2em 0; 335 | } 336 | .markdown-section iframe { 337 | border: 1px solid #eee; 338 | /* fix horizontal overflow on iOS Safari */ 339 | width: 1px; 340 | min-width: 100%; 341 | } 342 | .markdown-section table { 343 | border-collapse: collapse; 344 | border-spacing: 0; 345 | display: block; 346 | margin-bottom: 1rem; 347 | overflow: auto; 348 | width: 100%; 349 | } 350 | .markdown-section th { 351 | border: 1px solid #ddd; 352 | font-weight: bold; 353 | padding: 6px 13px; 354 | } 355 | .markdown-section td { 356 | border: 1px solid #ddd; 357 | padding: 6px 13px; 358 | } 359 | .markdown-section tr { 360 | border-top: 1px solid #ccc; 361 | } 362 | .markdown-section tr:nth-child(2n) { 363 | background-color: #f8f8f8; 364 | } 365 | .markdown-section p.tip { 366 | background-color: #f8f8f8; 367 | border-bottom-right-radius: 2px; 368 | border-left: 4px solid #f66; 369 | border-top-right-radius: 2px; 370 | margin: 2em 0; 371 | padding: 12px 24px 12px 30px; 372 | position: relative; 373 | } 374 | .markdown-section p.tip:before { 375 | background-color: #f66; 376 | border-radius: 100%; 377 | color: #3f3f3f; 378 | content: '!'; 379 | font-family: 'Dosis', 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif; 380 | font-size: 14px; 381 | font-weight: bold; 382 | left: -12px; 383 | line-height: 20px; 384 | position: absolute; 385 | height: 20px; 386 | width: 20px; 387 | text-align: center; 388 | top: 14px; 389 | } 390 | .markdown-section p.tip code { 391 | background-color: #efefef; 392 | } 393 | .markdown-section p.tip em { 394 | color: #c8c8c8; 395 | } 396 | .markdown-section p.warn { 397 | background: rgba(234,111,90,0.1); 398 | border-radius: 2px; 399 | padding: 1rem; 400 | } 401 | .markdown-section ul.task-list > li { 402 | list-style-type: none; 403 | } 404 | body.close .sidebar { 405 | transform: translateX(-300px); 406 | } 407 | body.close .sidebar-toggle { 408 | width: auto; 409 | left: auto; 410 | } 411 | body.close .content { 412 | left: 0; 413 | } 414 | @media print { 415 | .github-corner, 416 | .sidebar-toggle, 417 | .sidebar, 418 | .app-nav { 419 | display: none; 420 | } 421 | } 422 | @media screen and (max-width: 768px) { 423 | .github-corner, 424 | .sidebar-toggle, 425 | .sidebar { 426 | position: fixed; 427 | } 428 | .app-nav { 429 | margin-top: 16px; 430 | } 431 | .app-nav li ul { 432 | top: 30px; 433 | } 434 | main { 435 | height: auto; 436 | overflow-x: hidden; 437 | } 438 | .sidebar { 439 | left: -300px; 440 | transition: transform 250ms ease-out; 441 | } 442 | .content { 443 | left: 0; 444 | max-width: 100vw; 445 | position: static; 446 | padding-top: 20px; 447 | transition: transform 250ms ease; 448 | } 449 | .app-nav, 450 | .github-corner { 451 | transition: transform 250ms ease-out; 452 | } 453 | .sidebar-toggle { 454 | background-color: transparent; 455 | width: auto; 456 | padding: 30px 30px 10px 10px; 457 | } 458 | body.close .sidebar { 459 | transform: translateX(300px); 460 | } 461 | body.close .sidebar-toggle { 462 | background-color: rgba(63,63,63,0.8); 463 | transition: 1s background-color; 464 | width: 284px; 465 | padding: 10px; 466 | } 467 | body.close .content { 468 | transform: translateX(300px); 469 | } 470 | body.close .app-nav, 471 | body.close .github-corner { 472 | display: none; 473 | } 474 | .github-corner:hover .octo-arm { 475 | -webkit-animation: none; 476 | animation: none; 477 | } 478 | .github-corner .octo-arm { 479 | -webkit-animation: octocat-wave 560ms ease-in-out; 480 | animation: octocat-wave 560ms ease-in-out; 481 | } 482 | } 483 | @-webkit-keyframes octocat-wave { 484 | 0%, 100% { 485 | transform: rotate(0); 486 | } 487 | 20%, 60% { 488 | transform: rotate(-25deg); 489 | } 490 | 40%, 80% { 491 | transform: rotate(10deg); 492 | } 493 | } 494 | @keyframes octocat-wave { 495 | 0%, 100% { 496 | transform: rotate(0); 497 | } 498 | 20%, 60% { 499 | transform: rotate(-25deg); 500 | } 501 | 40%, 80% { 502 | transform: rotate(10deg); 503 | } 504 | } 505 | section.cover { 506 | align-items: center; 507 | background-position: center center; 508 | background-repeat: no-repeat; 509 | background-size: cover; 510 | height: 100vh; 511 | width: 100vw; 512 | display: none; 513 | } 514 | section.cover.show { 515 | display: flex; 516 | } 517 | section.cover.has-mask .mask { 518 | background-color: #3f3f3f; 519 | opacity: 0.8; 520 | position: absolute; 521 | top: 0; 522 | height: 100%; 523 | width: 100%; 524 | } 525 | section.cover .cover-main { 526 | flex: 1; 527 | margin: -20px 16px 0; 528 | text-align: center; 529 | position: relative; 530 | } 531 | section.cover a { 532 | color: inherit; 533 | text-decoration: none; 534 | } 535 | section.cover a:hover { 536 | text-decoration: none; 537 | } 538 | section.cover p { 539 | line-height: 1.5rem; 540 | margin: 1em 0; 541 | } 542 | section.cover h1 { 543 | color: inherit; 544 | font-size: 2.5rem; 545 | font-weight: 300; 546 | margin: 0.625rem 0 2.5rem; 547 | position: relative; 548 | text-align: center; 549 | } 550 | section.cover h1 a { 551 | display: block; 552 | } 553 | section.cover h1 small { 554 | bottom: -0.4375rem; 555 | font-size: 1rem; 556 | position: absolute; 557 | } 558 | section.cover blockquote { 559 | font-size: 1.5rem; 560 | text-align: center; 561 | } 562 | section.cover ul { 563 | line-height: 1.8; 564 | list-style-type: none; 565 | margin: 1em auto; 566 | max-width: 500px; 567 | padding: 0; 568 | } 569 | section.cover .cover-main > p:last-child a { 570 | border-color: var(--theme-color, #ea6f5a); 571 | border-radius: 2rem; 572 | border-style: solid; 573 | border-width: 1px; 574 | box-sizing: border-box; 575 | color: var(--theme-color, #ea6f5a); 576 | display: inline-block; 577 | font-size: 1.05rem; 578 | letter-spacing: 0.1rem; 579 | margin: 0.5rem 1rem; 580 | padding: 0.75em 2rem; 581 | text-decoration: none; 582 | transition: all 0.15s ease; 583 | } 584 | section.cover .cover-main > p:last-child a:last-child { 585 | background-color: var(--theme-color, #ea6f5a); 586 | color: #fff; 587 | } 588 | section.cover .cover-main > p:last-child a:last-child:hover { 589 | color: inherit; 590 | opacity: 0.8; 591 | } 592 | section.cover .cover-main > p:last-child a:hover { 593 | color: inherit; 594 | } 595 | section.cover blockquote > p > a { 596 | border-bottom: 2px solid var(--theme-color, #ea6f5a); 597 | transition: color 0.3s; 598 | } 599 | section.cover blockquote > p > a:hover { 600 | color: var(--theme-color, #ea6f5a); 601 | } 602 | body { 603 | background-color: #1E2428; 604 | } 605 | /* sidebar */ 606 | .sidebar { 607 | background-color: #14181B; 608 | color: #ffffff; 609 | font-weight: 500; 610 | } 611 | .sidebar li { 612 | margin: 6px 15px 6px 0; 613 | font-weight: 500; 614 | } 615 | .sidebar ul li a { 616 | color: #ffffff; 617 | font-size: 14px; 618 | font-weight: 500; 619 | overflow: hidden; 620 | text-decoration: none; 621 | text-overflow: ellipsis; 622 | white-space: nowrap; 623 | } 624 | .sidebar ul li a:hover { 625 | text-decoration: underline; 626 | font-weight: 500; 627 | } 628 | .sidebar ul li ul { 629 | padding: 0; 630 | } 631 | .sidebar ul li.active > a { 632 | color: var(--theme-color, #ea6f5a); 633 | font-weight: 500; 634 | } 635 | /* markdown content found on pages */ 636 | .markdown-section h1, 637 | .markdown-section h2, 638 | .markdown-section h3, 639 | .markdown-section h4, 640 | .markdown-section strong { 641 | color: #f3f3f3; 642 | font-weight: 800; 643 | } 644 | .markdown-section a { 645 | color: var(--theme-color, #ea6f5a); 646 | font-weight: 600; 647 | } 648 | .markdown-section h1 { 649 | font-size: 2rem; 650 | margin: 0 0 1rem; 651 | } 652 | .markdown-section h2 { 653 | font-size: 1.75rem; 654 | margin: 45px 0 0.8rem; 655 | } 656 | .markdown-section h3 { 657 | font-size: 1.5rem; 658 | margin: 40px 0 0.6rem; 659 | } 660 | .markdown-section h4 { 661 | font-size: 1.25rem; 662 | } 663 | .markdown-section h5 { 664 | font-size: 1rem; 665 | } 666 | .markdown-section h6 { 667 | color: #777; 668 | font-size: 1rem; 669 | } 670 | .markdown-section figure, 671 | .markdown-section p, 672 | .markdown-section ul, 673 | .markdown-section ol { 674 | margin: 1.2em 0; 675 | } 676 | .markdown-section p, 677 | .markdown-section ul, 678 | .markdown-section ol { 679 | line-height: 1.6rem; 680 | word-spacing: 0.05rem; 681 | } 682 | .markdown-section ul, 683 | .markdown-section ol { 684 | padding-left: 1.5rem; 685 | } 686 | .markdown-section blockquote { 687 | border-left: 4px solid var(--theme-color, #ea6f5a); 688 | color: #bbf; 689 | font-style: italic; 690 | margin: 2em 0; 691 | padding-left: 20px; 692 | } 693 | .markdown-section blockquote p { 694 | font-weight: 600; 695 | margin-left: 0; 696 | } 697 | .markdown-section iframe { 698 | margin: 1em 0; 699 | } 700 | .markdown-section em { 701 | color: #7f8c8d; 702 | } 703 | .markdown-section code { 704 | background-color: #282828; 705 | border-radius: 2px; 706 | color: #657b83; 707 | font-family: 'Roboto Mono', Monaco, courier, monospace; 708 | margin: 0 2px; 709 | padding: 3px 5px; 710 | white-space: pre-wrap; 711 | } 712 | .markdown-section > :not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) code { 713 | font-size: 0.8rem; 714 | } 715 | .markdown-section pre { 716 | -moz-osx-font-smoothing: initial; 717 | -webkit-font-smoothing: initial; 718 | background-color: #282828; 719 | font-family: 'Roboto Mono', Monaco, courier, monospace; 720 | line-height: 1.5rem; 721 | margin: 1.2em 0; 722 | overflow: auto; 723 | padding: 0 1.4rem; 724 | position: relative; 725 | word-wrap: normal; 726 | } 727 | /* code highlight */ 728 | .token.comment, 729 | .token.prolog, 730 | .token.doctype, 731 | .token.cdata { 732 | color: #8e908c; 733 | } 734 | .token.namespace { 735 | opacity: 0.7; 736 | } 737 | .token.boolean, 738 | .token.number { 739 | color: #c76b29; 740 | } 741 | .token.punctuation { 742 | color: #525252; 743 | } 744 | .token.property { 745 | color: #c08b30; 746 | } 747 | .token.tag { 748 | color: #2973b7; 749 | } 750 | .token.string { 751 | color: var(--theme-color, #ea6f5a); 752 | } 753 | .token.selector { 754 | color: #6679cc; 755 | } 756 | .token.attr-name { 757 | color: #2973b7; 758 | } 759 | .token.entity, 760 | .token.url, 761 | .language-css .token.string, 762 | .style .token.string { 763 | color: #22a2c9; 764 | } 765 | .token.attr-value, 766 | .token.control, 767 | .token.directive, 768 | .token.unit { 769 | color: var(--theme-color, #ea6f5a); 770 | } 771 | .token.keyword { 772 | color: #e96900; 773 | } 774 | .token.statement, 775 | .token.regex, 776 | .token.atrule { 777 | color: #22a2c9; 778 | } 779 | .token.placeholder, 780 | .token.variable { 781 | color: #3d8fd1; 782 | } 783 | .token.deleted { 784 | text-decoration: line-through; 785 | } 786 | .token.inserted { 787 | border-bottom: 1px dotted #202746; 788 | text-decoration: none; 789 | } 790 | .token.italic { 791 | font-style: italic; 792 | } 793 | .token.important, 794 | .token.bold { 795 | font-weight: bold; 796 | } 797 | .token.important { 798 | color: #c94922; 799 | } 800 | .token.entity { 801 | cursor: help; 802 | } 803 | .markdown-section pre > code { 804 | -moz-osx-font-smoothing: initial; 805 | -webkit-font-smoothing: initial; 806 | background-color: #282828; 807 | border-radius: 2px; 808 | color: #657b83; 809 | display: block; 810 | font-family: 'Roboto Mono', Monaco, courier, monospace; 811 | font-size: 0.8rem; 812 | line-height: inherit; 813 | margin: 0 2px; 814 | max-width: inherit; 815 | overflow: inherit; 816 | padding: 2.2em 5px; 817 | white-space: inherit; 818 | } 819 | .markdown-section code::after, 820 | .markdown-section code::before { 821 | letter-spacing: 0.05rem; 822 | } 823 | code .token { 824 | -moz-osx-font-smoothing: initial; 825 | -webkit-font-smoothing: initial; 826 | min-height: 1.5rem; 827 | position: relative; 828 | left: auto; 829 | } 830 | pre::after { 831 | color: #ccc; 832 | content: attr(data-lang); 833 | font-size: 0.6rem; 834 | font-weight: 600; 835 | height: 15px; 836 | line-height: 15px; 837 | padding: 5px 10px 0; 838 | position: absolute; 839 | right: 0; 840 | text-align: right; 841 | top: 0; 842 | } 843 | .markdown-section p.tip { 844 | background-color: #282828; 845 | color: #657b83; 846 | } 847 | input[type='search'] { 848 | background: #262D34; 849 | border-color: #262D34; 850 | color: #9AA6B6; 851 | border-radius: 8px; 852 | } 853 | -------------------------------------------------------------------------------- /docs/styles.css: -------------------------------------------------------------------------------- 1 | .sidebar > h1 { 2 | text-align: left; 3 | padding-left: 14px; 4 | } -------------------------------------------------------------------------------- /docs/welcome.md: -------------------------------------------------------------------------------- 1 | # Welcome to FlutterFlow! 2 | 3 | 4 | We're so excited to have you onboard! FlutterFlow is a super easy way to build cross-platform apps. Take a look at the demo yourself! 5 | 6 | 7 | 8 | We have developed a series of videos to get you started. We hope you enjoy our platform, and please let us know if you have any questions! -------------------------------------------------------------------------------- /firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "hosting": { 3 | "site": "flutterflow-docs", 4 | "public": "docs", 5 | "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], 6 | "rewrites": [ 7 | { 8 | "source": "**", 9 | "destination": "index.html" 10 | } 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "@sindresorhus/is": { 6 | "version": "0.14.0", 7 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", 8 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" 9 | }, 10 | "@szmarczak/http-timer": { 11 | "version": "1.1.2", 12 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", 13 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", 14 | "requires": { 15 | "defer-to-connect": "^1.0.1" 16 | } 17 | }, 18 | "ansi-align": { 19 | "version": "3.0.0", 20 | "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", 21 | "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", 22 | "requires": { 23 | "string-width": "^3.0.0" 24 | }, 25 | "dependencies": { 26 | "string-width": { 27 | "version": "3.1.0", 28 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 29 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 30 | "requires": { 31 | "emoji-regex": "^7.0.1", 32 | "is-fullwidth-code-point": "^2.0.0", 33 | "strip-ansi": "^5.1.0" 34 | } 35 | } 36 | } 37 | }, 38 | "ansi-colors": { 39 | "version": "4.1.1", 40 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", 41 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" 42 | }, 43 | "ansi-regex": { 44 | "version": "4.1.0", 45 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 46 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" 47 | }, 48 | "ansi-styles": { 49 | "version": "3.2.1", 50 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 51 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 52 | "requires": { 53 | "color-convert": "^1.9.0" 54 | } 55 | }, 56 | "anymatch": { 57 | "version": "3.1.2", 58 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 59 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 60 | "requires": { 61 | "normalize-path": "^3.0.0", 62 | "picomatch": "^2.0.4" 63 | } 64 | }, 65 | "binary-extensions": { 66 | "version": "2.2.0", 67 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 68 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 69 | }, 70 | "boxen": { 71 | "version": "4.2.0", 72 | "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", 73 | "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", 74 | "requires": { 75 | "ansi-align": "^3.0.0", 76 | "camelcase": "^5.3.1", 77 | "chalk": "^3.0.0", 78 | "cli-boxes": "^2.2.0", 79 | "string-width": "^4.1.0", 80 | "term-size": "^2.1.0", 81 | "type-fest": "^0.8.1", 82 | "widest-line": "^3.1.0" 83 | }, 84 | "dependencies": { 85 | "ansi-styles": { 86 | "version": "4.3.0", 87 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 88 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 89 | "requires": { 90 | "color-convert": "^2.0.1" 91 | } 92 | }, 93 | "chalk": { 94 | "version": "3.0.0", 95 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 96 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 97 | "requires": { 98 | "ansi-styles": "^4.1.0", 99 | "supports-color": "^7.1.0" 100 | } 101 | }, 102 | "color-convert": { 103 | "version": "2.0.1", 104 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 105 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 106 | "requires": { 107 | "color-name": "~1.1.4" 108 | } 109 | }, 110 | "color-name": { 111 | "version": "1.1.4", 112 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 113 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 114 | }, 115 | "has-flag": { 116 | "version": "4.0.0", 117 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 118 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 119 | }, 120 | "supports-color": { 121 | "version": "7.2.0", 122 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 123 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 124 | "requires": { 125 | "has-flag": "^4.0.0" 126 | } 127 | } 128 | } 129 | }, 130 | "braces": { 131 | "version": "3.0.2", 132 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 133 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 134 | "requires": { 135 | "fill-range": "^7.0.1" 136 | } 137 | }, 138 | "cacheable-request": { 139 | "version": "6.1.0", 140 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", 141 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", 142 | "requires": { 143 | "clone-response": "^1.0.2", 144 | "get-stream": "^5.1.0", 145 | "http-cache-semantics": "^4.0.0", 146 | "keyv": "^3.0.0", 147 | "lowercase-keys": "^2.0.0", 148 | "normalize-url": "^4.1.0", 149 | "responselike": "^1.0.2" 150 | }, 151 | "dependencies": { 152 | "get-stream": { 153 | "version": "5.2.0", 154 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 155 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 156 | "requires": { 157 | "pump": "^3.0.0" 158 | } 159 | }, 160 | "lowercase-keys": { 161 | "version": "2.0.0", 162 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 163 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 164 | } 165 | } 166 | }, 167 | "camelcase": { 168 | "version": "5.3.1", 169 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", 170 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" 171 | }, 172 | "chalk": { 173 | "version": "2.4.2", 174 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 175 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 176 | "requires": { 177 | "ansi-styles": "^3.2.1", 178 | "escape-string-regexp": "^1.0.5", 179 | "supports-color": "^5.3.0" 180 | } 181 | }, 182 | "chokidar": { 183 | "version": "3.5.1", 184 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 185 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 186 | "requires": { 187 | "anymatch": "~3.1.1", 188 | "braces": "~3.0.2", 189 | "fsevents": "~2.3.1", 190 | "glob-parent": "~5.1.0", 191 | "is-binary-path": "~2.1.0", 192 | "is-glob": "~4.0.1", 193 | "normalize-path": "~3.0.0", 194 | "readdirp": "~3.5.0" 195 | } 196 | }, 197 | "ci-info": { 198 | "version": "2.0.0", 199 | "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", 200 | "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" 201 | }, 202 | "cli-boxes": { 203 | "version": "2.2.1", 204 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", 205 | "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" 206 | }, 207 | "clipboard": { 208 | "version": "2.0.8", 209 | "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz", 210 | "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==", 211 | "optional": true, 212 | "requires": { 213 | "good-listener": "^1.2.2", 214 | "select": "^1.1.2", 215 | "tiny-emitter": "^2.0.0" 216 | } 217 | }, 218 | "cliui": { 219 | "version": "5.0.0", 220 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", 221 | "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", 222 | "requires": { 223 | "string-width": "^3.1.0", 224 | "strip-ansi": "^5.2.0", 225 | "wrap-ansi": "^5.1.0" 226 | }, 227 | "dependencies": { 228 | "string-width": { 229 | "version": "3.1.0", 230 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 231 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 232 | "requires": { 233 | "emoji-regex": "^7.0.1", 234 | "is-fullwidth-code-point": "^2.0.0", 235 | "strip-ansi": "^5.1.0" 236 | } 237 | } 238 | } 239 | }, 240 | "clone-response": { 241 | "version": "1.0.2", 242 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", 243 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", 244 | "requires": { 245 | "mimic-response": "^1.0.0" 246 | } 247 | }, 248 | "color-convert": { 249 | "version": "1.9.3", 250 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 251 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 252 | "requires": { 253 | "color-name": "1.1.3" 254 | } 255 | }, 256 | "color-name": { 257 | "version": "1.1.3", 258 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 259 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 260 | }, 261 | "configstore": { 262 | "version": "5.0.1", 263 | "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", 264 | "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", 265 | "requires": { 266 | "dot-prop": "^5.2.0", 267 | "graceful-fs": "^4.1.2", 268 | "make-dir": "^3.0.0", 269 | "unique-string": "^2.0.0", 270 | "write-file-atomic": "^3.0.0", 271 | "xdg-basedir": "^4.0.0" 272 | } 273 | }, 274 | "connect": { 275 | "version": "3.7.0", 276 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", 277 | "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", 278 | "requires": { 279 | "debug": "2.6.9", 280 | "finalhandler": "1.1.2", 281 | "parseurl": "~1.3.3", 282 | "utils-merge": "1.0.1" 283 | } 284 | }, 285 | "connect-livereload": { 286 | "version": "0.6.1", 287 | "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", 288 | "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==" 289 | }, 290 | "cp-file": { 291 | "version": "7.0.0", 292 | "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", 293 | "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", 294 | "requires": { 295 | "graceful-fs": "^4.1.2", 296 | "make-dir": "^3.0.0", 297 | "nested-error-stacks": "^2.0.0", 298 | "p-event": "^4.1.0" 299 | } 300 | }, 301 | "crypto-random-string": { 302 | "version": "2.0.0", 303 | "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", 304 | "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" 305 | }, 306 | "debug": { 307 | "version": "2.6.9", 308 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 309 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 310 | "requires": { 311 | "ms": "2.0.0" 312 | } 313 | }, 314 | "decamelize": { 315 | "version": "1.2.0", 316 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 317 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" 318 | }, 319 | "decompress-response": { 320 | "version": "3.3.0", 321 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 322 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 323 | "requires": { 324 | "mimic-response": "^1.0.0" 325 | } 326 | }, 327 | "deep-extend": { 328 | "version": "0.6.0", 329 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 330 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 331 | }, 332 | "defer-to-connect": { 333 | "version": "1.1.3", 334 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", 335 | "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" 336 | }, 337 | "delegate": { 338 | "version": "3.2.0", 339 | "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", 340 | "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", 341 | "optional": true 342 | }, 343 | "depd": { 344 | "version": "1.1.2", 345 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 346 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 347 | }, 348 | "destroy": { 349 | "version": "1.0.4", 350 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 351 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 352 | }, 353 | "docsify": { 354 | "version": "4.12.1", 355 | "resolved": "https://registry.npmjs.org/docsify/-/docsify-4.12.1.tgz", 356 | "integrity": "sha512-7v4UlCYLTmb83leJLIlheQlQ8kDTbTxcpMttRg0Uf92Nl//m0AcKFHoLLo5HHS4UhnO0KhDV8SKCdTR279zI9A==", 357 | "requires": { 358 | "dompurify": "^2.2.6", 359 | "marked": "^1.2.9", 360 | "medium-zoom": "^1.0.6", 361 | "opencollective-postinstall": "^2.0.2", 362 | "prismjs": "^1.23.0", 363 | "strip-indent": "^3.0.0", 364 | "tinydate": "^1.3.0", 365 | "tweezer.js": "^1.4.0" 366 | } 367 | }, 368 | "docsify-cli": { 369 | "version": "4.4.3", 370 | "resolved": "https://registry.npmjs.org/docsify-cli/-/docsify-cli-4.4.3.tgz", 371 | "integrity": "sha512-oI/cD04b+hklNd9yKiN9p9EqGx9UKL6p4D0J3fS9L5fpwOti1F8p2rshGJTyArxUlw6EeEBtaJd4rzPzBkK+Lw==", 372 | "requires": { 373 | "chalk": "^2.4.2", 374 | "connect": "^3.6.0", 375 | "connect-livereload": "^0.6.0", 376 | "cp-file": "^7.0.0", 377 | "docsify": "^4.12.1", 378 | "docsify-server-renderer": ">=4.10.0", 379 | "enquirer": "^2.3.6", 380 | "fs-extra": "^8.1.0", 381 | "get-port": "^5.0.0", 382 | "livereload": "^0.9.1", 383 | "lru-cache": "^5.1.1", 384 | "open": "^6.4.0", 385 | "serve-static": "^1.12.1", 386 | "update-notifier": "^4.1.0", 387 | "yargonaut": "^1.1.2", 388 | "yargs": "^14.2.0" 389 | } 390 | }, 391 | "docsify-server-renderer": { 392 | "version": "4.12.1", 393 | "resolved": "https://registry.npmjs.org/docsify-server-renderer/-/docsify-server-renderer-4.12.1.tgz", 394 | "integrity": "sha512-IYakkc+UxPS89N/Mq8MF4SKTQ1gtxN5nDEFAnJPf5TvQO+1fuxszHgv/hMprG5z/ms7PJb1w4nMykUfRW36+/A==", 395 | "requires": { 396 | "debug": "^4.3.2", 397 | "docsify": "^4.12.0", 398 | "dompurify": "^2.2.6", 399 | "node-fetch": "^2.6.0", 400 | "resolve-pathname": "^3.0.0" 401 | }, 402 | "dependencies": { 403 | "debug": { 404 | "version": "4.3.2", 405 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 406 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 407 | "requires": { 408 | "ms": "2.1.2" 409 | } 410 | }, 411 | "ms": { 412 | "version": "2.1.2", 413 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 414 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 415 | } 416 | } 417 | }, 418 | "dompurify": { 419 | "version": "2.2.8", 420 | "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.2.8.tgz", 421 | "integrity": "sha512-9H0UL59EkDLgY3dUFjLV6IEUaHm5qp3mxSqWw7Yyx4Zhk2Jn2cmLe+CNPP3xy13zl8Bqg+0NehQzkdMoVhGRww==" 422 | }, 423 | "dot-prop": { 424 | "version": "5.3.0", 425 | "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", 426 | "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", 427 | "requires": { 428 | "is-obj": "^2.0.0" 429 | } 430 | }, 431 | "duplexer3": { 432 | "version": "0.1.4", 433 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", 434 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" 435 | }, 436 | "ee-first": { 437 | "version": "1.1.1", 438 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 439 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 440 | }, 441 | "emoji-regex": { 442 | "version": "7.0.3", 443 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 444 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" 445 | }, 446 | "encodeurl": { 447 | "version": "1.0.2", 448 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 449 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 450 | }, 451 | "end-of-stream": { 452 | "version": "1.4.4", 453 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 454 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 455 | "requires": { 456 | "once": "^1.4.0" 457 | } 458 | }, 459 | "enquirer": { 460 | "version": "2.3.6", 461 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", 462 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", 463 | "requires": { 464 | "ansi-colors": "^4.1.1" 465 | } 466 | }, 467 | "escape-goat": { 468 | "version": "2.1.1", 469 | "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", 470 | "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" 471 | }, 472 | "escape-html": { 473 | "version": "1.0.3", 474 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 475 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 476 | }, 477 | "escape-string-regexp": { 478 | "version": "1.0.5", 479 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 480 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 481 | }, 482 | "etag": { 483 | "version": "1.8.1", 484 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 485 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 486 | }, 487 | "figlet": { 488 | "version": "1.5.0", 489 | "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", 490 | "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==" 491 | }, 492 | "fill-range": { 493 | "version": "7.0.1", 494 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 495 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 496 | "requires": { 497 | "to-regex-range": "^5.0.1" 498 | } 499 | }, 500 | "finalhandler": { 501 | "version": "1.1.2", 502 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 503 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 504 | "requires": { 505 | "debug": "2.6.9", 506 | "encodeurl": "~1.0.2", 507 | "escape-html": "~1.0.3", 508 | "on-finished": "~2.3.0", 509 | "parseurl": "~1.3.3", 510 | "statuses": "~1.5.0", 511 | "unpipe": "~1.0.0" 512 | } 513 | }, 514 | "find-up": { 515 | "version": "3.0.0", 516 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", 517 | "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", 518 | "requires": { 519 | "locate-path": "^3.0.0" 520 | } 521 | }, 522 | "fresh": { 523 | "version": "0.5.2", 524 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 525 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 526 | }, 527 | "fs-extra": { 528 | "version": "8.1.0", 529 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 530 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 531 | "requires": { 532 | "graceful-fs": "^4.2.0", 533 | "jsonfile": "^4.0.0", 534 | "universalify": "^0.1.0" 535 | } 536 | }, 537 | "fsevents": { 538 | "version": "2.3.2", 539 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 540 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 541 | "optional": true 542 | }, 543 | "get-caller-file": { 544 | "version": "2.0.5", 545 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 546 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 547 | }, 548 | "get-port": { 549 | "version": "5.1.1", 550 | "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", 551 | "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==" 552 | }, 553 | "get-stream": { 554 | "version": "4.1.0", 555 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", 556 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", 557 | "requires": { 558 | "pump": "^3.0.0" 559 | } 560 | }, 561 | "glob-parent": { 562 | "version": "5.1.2", 563 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 564 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 565 | "requires": { 566 | "is-glob": "^4.0.1" 567 | } 568 | }, 569 | "global-dirs": { 570 | "version": "2.1.0", 571 | "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", 572 | "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", 573 | "requires": { 574 | "ini": "1.3.7" 575 | } 576 | }, 577 | "good-listener": { 578 | "version": "1.2.2", 579 | "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", 580 | "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", 581 | "optional": true, 582 | "requires": { 583 | "delegate": "^3.1.2" 584 | } 585 | }, 586 | "got": { 587 | "version": "9.6.0", 588 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", 589 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", 590 | "requires": { 591 | "@sindresorhus/is": "^0.14.0", 592 | "@szmarczak/http-timer": "^1.1.2", 593 | "cacheable-request": "^6.0.0", 594 | "decompress-response": "^3.3.0", 595 | "duplexer3": "^0.1.4", 596 | "get-stream": "^4.1.0", 597 | "lowercase-keys": "^1.0.1", 598 | "mimic-response": "^1.0.1", 599 | "p-cancelable": "^1.0.0", 600 | "to-readable-stream": "^1.0.0", 601 | "url-parse-lax": "^3.0.0" 602 | } 603 | }, 604 | "graceful-fs": { 605 | "version": "4.2.6", 606 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", 607 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" 608 | }, 609 | "has-ansi": { 610 | "version": "2.0.0", 611 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 612 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 613 | "requires": { 614 | "ansi-regex": "^2.0.0" 615 | }, 616 | "dependencies": { 617 | "ansi-regex": { 618 | "version": "2.1.1", 619 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 620 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 621 | } 622 | } 623 | }, 624 | "has-flag": { 625 | "version": "3.0.0", 626 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 627 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 628 | }, 629 | "has-yarn": { 630 | "version": "2.1.0", 631 | "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", 632 | "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" 633 | }, 634 | "http-cache-semantics": { 635 | "version": "4.1.0", 636 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", 637 | "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" 638 | }, 639 | "http-errors": { 640 | "version": "1.7.3", 641 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 642 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 643 | "requires": { 644 | "depd": "~1.1.2", 645 | "inherits": "2.0.4", 646 | "setprototypeof": "1.1.1", 647 | "statuses": ">= 1.5.0 < 2", 648 | "toidentifier": "1.0.0" 649 | } 650 | }, 651 | "import-lazy": { 652 | "version": "2.1.0", 653 | "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", 654 | "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" 655 | }, 656 | "imurmurhash": { 657 | "version": "0.1.4", 658 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 659 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" 660 | }, 661 | "inherits": { 662 | "version": "2.0.4", 663 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 664 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 665 | }, 666 | "ini": { 667 | "version": "1.3.7", 668 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", 669 | "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==" 670 | }, 671 | "is-binary-path": { 672 | "version": "2.1.0", 673 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 674 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 675 | "requires": { 676 | "binary-extensions": "^2.0.0" 677 | } 678 | }, 679 | "is-ci": { 680 | "version": "2.0.0", 681 | "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", 682 | "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", 683 | "requires": { 684 | "ci-info": "^2.0.0" 685 | } 686 | }, 687 | "is-extglob": { 688 | "version": "2.1.1", 689 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 690 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 691 | }, 692 | "is-fullwidth-code-point": { 693 | "version": "2.0.0", 694 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 695 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" 696 | }, 697 | "is-glob": { 698 | "version": "4.0.1", 699 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 700 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 701 | "requires": { 702 | "is-extglob": "^2.1.1" 703 | } 704 | }, 705 | "is-installed-globally": { 706 | "version": "0.3.2", 707 | "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", 708 | "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", 709 | "requires": { 710 | "global-dirs": "^2.0.1", 711 | "is-path-inside": "^3.0.1" 712 | } 713 | }, 714 | "is-npm": { 715 | "version": "4.0.0", 716 | "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", 717 | "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==" 718 | }, 719 | "is-number": { 720 | "version": "7.0.0", 721 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 722 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 723 | }, 724 | "is-obj": { 725 | "version": "2.0.0", 726 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", 727 | "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" 728 | }, 729 | "is-path-inside": { 730 | "version": "3.0.3", 731 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 732 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" 733 | }, 734 | "is-typedarray": { 735 | "version": "1.0.0", 736 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 737 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 738 | }, 739 | "is-wsl": { 740 | "version": "1.1.0", 741 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", 742 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" 743 | }, 744 | "is-yarn-global": { 745 | "version": "0.3.0", 746 | "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", 747 | "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" 748 | }, 749 | "json-buffer": { 750 | "version": "3.0.0", 751 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", 752 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" 753 | }, 754 | "jsonfile": { 755 | "version": "4.0.0", 756 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 757 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 758 | "requires": { 759 | "graceful-fs": "^4.1.6" 760 | } 761 | }, 762 | "keyv": { 763 | "version": "3.1.0", 764 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", 765 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", 766 | "requires": { 767 | "json-buffer": "3.0.0" 768 | } 769 | }, 770 | "latest-version": { 771 | "version": "5.1.0", 772 | "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", 773 | "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", 774 | "requires": { 775 | "package-json": "^6.3.0" 776 | } 777 | }, 778 | "livereload": { 779 | "version": "0.9.3", 780 | "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", 781 | "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", 782 | "requires": { 783 | "chokidar": "^3.5.0", 784 | "livereload-js": "^3.3.1", 785 | "opts": ">= 1.2.0", 786 | "ws": "^7.4.3" 787 | } 788 | }, 789 | "livereload-js": { 790 | "version": "3.3.2", 791 | "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", 792 | "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==" 793 | }, 794 | "locate-path": { 795 | "version": "3.0.0", 796 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", 797 | "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", 798 | "requires": { 799 | "p-locate": "^3.0.0", 800 | "path-exists": "^3.0.0" 801 | } 802 | }, 803 | "lowercase-keys": { 804 | "version": "1.0.1", 805 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", 806 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" 807 | }, 808 | "lru-cache": { 809 | "version": "5.1.1", 810 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 811 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 812 | "requires": { 813 | "yallist": "^3.0.2" 814 | } 815 | }, 816 | "make-dir": { 817 | "version": "3.1.0", 818 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 819 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 820 | "requires": { 821 | "semver": "^6.0.0" 822 | } 823 | }, 824 | "marked": { 825 | "version": "1.2.9", 826 | "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz", 827 | "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==" 828 | }, 829 | "medium-zoom": { 830 | "version": "1.0.6", 831 | "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", 832 | "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==" 833 | }, 834 | "mime": { 835 | "version": "1.6.0", 836 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 837 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 838 | }, 839 | "mimic-response": { 840 | "version": "1.0.1", 841 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 842 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 843 | }, 844 | "min-indent": { 845 | "version": "1.0.1", 846 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", 847 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" 848 | }, 849 | "minimist": { 850 | "version": "1.2.5", 851 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 852 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 853 | }, 854 | "ms": { 855 | "version": "2.0.0", 856 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 857 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 858 | }, 859 | "nested-error-stacks": { 860 | "version": "2.1.0", 861 | "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", 862 | "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==" 863 | }, 864 | "node-fetch": { 865 | "version": "2.6.1", 866 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 867 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 868 | }, 869 | "normalize-path": { 870 | "version": "3.0.0", 871 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 872 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 873 | }, 874 | "normalize-url": { 875 | "version": "4.5.0", 876 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", 877 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" 878 | }, 879 | "on-finished": { 880 | "version": "2.3.0", 881 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 882 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 883 | "requires": { 884 | "ee-first": "1.1.1" 885 | } 886 | }, 887 | "once": { 888 | "version": "1.4.0", 889 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 890 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 891 | "requires": { 892 | "wrappy": "1" 893 | } 894 | }, 895 | "open": { 896 | "version": "6.4.0", 897 | "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", 898 | "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", 899 | "requires": { 900 | "is-wsl": "^1.1.0" 901 | } 902 | }, 903 | "opencollective-postinstall": { 904 | "version": "2.0.3", 905 | "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", 906 | "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" 907 | }, 908 | "opts": { 909 | "version": "2.0.2", 910 | "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", 911 | "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==" 912 | }, 913 | "p-cancelable": { 914 | "version": "1.1.0", 915 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", 916 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" 917 | }, 918 | "p-event": { 919 | "version": "4.2.0", 920 | "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", 921 | "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", 922 | "requires": { 923 | "p-timeout": "^3.1.0" 924 | } 925 | }, 926 | "p-finally": { 927 | "version": "1.0.0", 928 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", 929 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" 930 | }, 931 | "p-limit": { 932 | "version": "2.3.0", 933 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 934 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 935 | "requires": { 936 | "p-try": "^2.0.0" 937 | } 938 | }, 939 | "p-locate": { 940 | "version": "3.0.0", 941 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", 942 | "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", 943 | "requires": { 944 | "p-limit": "^2.0.0" 945 | } 946 | }, 947 | "p-timeout": { 948 | "version": "3.2.0", 949 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", 950 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", 951 | "requires": { 952 | "p-finally": "^1.0.0" 953 | } 954 | }, 955 | "p-try": { 956 | "version": "2.2.0", 957 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 958 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 959 | }, 960 | "package-json": { 961 | "version": "6.5.0", 962 | "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", 963 | "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", 964 | "requires": { 965 | "got": "^9.6.0", 966 | "registry-auth-token": "^4.0.0", 967 | "registry-url": "^5.0.0", 968 | "semver": "^6.2.0" 969 | } 970 | }, 971 | "parent-require": { 972 | "version": "1.0.0", 973 | "resolved": "https://registry.npmjs.org/parent-require/-/parent-require-1.0.0.tgz", 974 | "integrity": "sha1-dGoWdjgIOoYLDu9nMssn7UbDKXc=" 975 | }, 976 | "parseurl": { 977 | "version": "1.3.3", 978 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 979 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 980 | }, 981 | "path-exists": { 982 | "version": "3.0.0", 983 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", 984 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" 985 | }, 986 | "picomatch": { 987 | "version": "2.2.3", 988 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", 989 | "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==" 990 | }, 991 | "prepend-http": { 992 | "version": "2.0.0", 993 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", 994 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" 995 | }, 996 | "prismjs": { 997 | "version": "1.23.0", 998 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.23.0.tgz", 999 | "integrity": "sha512-c29LVsqOaLbBHuIbsTxaKENh1N2EQBOHaWv7gkHN4dgRbxSREqDnDbtFJYdpPauS4YCplMSNCABQ6Eeor69bAA==", 1000 | "requires": { 1001 | "clipboard": "^2.0.0" 1002 | } 1003 | }, 1004 | "pump": { 1005 | "version": "3.0.0", 1006 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1007 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1008 | "requires": { 1009 | "end-of-stream": "^1.1.0", 1010 | "once": "^1.3.1" 1011 | } 1012 | }, 1013 | "pupa": { 1014 | "version": "2.1.1", 1015 | "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", 1016 | "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", 1017 | "requires": { 1018 | "escape-goat": "^2.0.0" 1019 | } 1020 | }, 1021 | "range-parser": { 1022 | "version": "1.2.1", 1023 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1024 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1025 | }, 1026 | "rc": { 1027 | "version": "1.2.8", 1028 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 1029 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 1030 | "requires": { 1031 | "deep-extend": "^0.6.0", 1032 | "ini": "~1.3.0", 1033 | "minimist": "^1.2.0", 1034 | "strip-json-comments": "~2.0.1" 1035 | } 1036 | }, 1037 | "readdirp": { 1038 | "version": "3.5.0", 1039 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 1040 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 1041 | "requires": { 1042 | "picomatch": "^2.2.1" 1043 | } 1044 | }, 1045 | "registry-auth-token": { 1046 | "version": "4.2.1", 1047 | "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", 1048 | "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", 1049 | "requires": { 1050 | "rc": "^1.2.8" 1051 | } 1052 | }, 1053 | "registry-url": { 1054 | "version": "5.1.0", 1055 | "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", 1056 | "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", 1057 | "requires": { 1058 | "rc": "^1.2.8" 1059 | } 1060 | }, 1061 | "require-directory": { 1062 | "version": "2.1.1", 1063 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1064 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" 1065 | }, 1066 | "require-main-filename": { 1067 | "version": "2.0.0", 1068 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", 1069 | "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" 1070 | }, 1071 | "resolve-pathname": { 1072 | "version": "3.0.0", 1073 | "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", 1074 | "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" 1075 | }, 1076 | "responselike": { 1077 | "version": "1.0.2", 1078 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", 1079 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", 1080 | "requires": { 1081 | "lowercase-keys": "^1.0.0" 1082 | } 1083 | }, 1084 | "select": { 1085 | "version": "1.1.2", 1086 | "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", 1087 | "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", 1088 | "optional": true 1089 | }, 1090 | "semver": { 1091 | "version": "6.3.0", 1092 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1093 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 1094 | }, 1095 | "semver-diff": { 1096 | "version": "3.1.1", 1097 | "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", 1098 | "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", 1099 | "requires": { 1100 | "semver": "^6.3.0" 1101 | } 1102 | }, 1103 | "send": { 1104 | "version": "0.17.1", 1105 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 1106 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 1107 | "requires": { 1108 | "debug": "2.6.9", 1109 | "depd": "~1.1.2", 1110 | "destroy": "~1.0.4", 1111 | "encodeurl": "~1.0.2", 1112 | "escape-html": "~1.0.3", 1113 | "etag": "~1.8.1", 1114 | "fresh": "0.5.2", 1115 | "http-errors": "~1.7.2", 1116 | "mime": "1.6.0", 1117 | "ms": "2.1.1", 1118 | "on-finished": "~2.3.0", 1119 | "range-parser": "~1.2.1", 1120 | "statuses": "~1.5.0" 1121 | }, 1122 | "dependencies": { 1123 | "ms": { 1124 | "version": "2.1.1", 1125 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 1126 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 1127 | } 1128 | } 1129 | }, 1130 | "serve-static": { 1131 | "version": "1.14.1", 1132 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 1133 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 1134 | "requires": { 1135 | "encodeurl": "~1.0.2", 1136 | "escape-html": "~1.0.3", 1137 | "parseurl": "~1.3.3", 1138 | "send": "0.17.1" 1139 | } 1140 | }, 1141 | "set-blocking": { 1142 | "version": "2.0.0", 1143 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1144 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 1145 | }, 1146 | "setprototypeof": { 1147 | "version": "1.1.1", 1148 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1149 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1150 | }, 1151 | "signal-exit": { 1152 | "version": "3.0.3", 1153 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1154 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 1155 | }, 1156 | "statuses": { 1157 | "version": "1.5.0", 1158 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1159 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 1160 | }, 1161 | "string-width": { 1162 | "version": "4.2.2", 1163 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1164 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1165 | "requires": { 1166 | "emoji-regex": "^8.0.0", 1167 | "is-fullwidth-code-point": "^3.0.0", 1168 | "strip-ansi": "^6.0.0" 1169 | }, 1170 | "dependencies": { 1171 | "ansi-regex": { 1172 | "version": "5.0.0", 1173 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 1174 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" 1175 | }, 1176 | "emoji-regex": { 1177 | "version": "8.0.0", 1178 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1179 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1180 | }, 1181 | "is-fullwidth-code-point": { 1182 | "version": "3.0.0", 1183 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1184 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1185 | }, 1186 | "strip-ansi": { 1187 | "version": "6.0.0", 1188 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1189 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1190 | "requires": { 1191 | "ansi-regex": "^5.0.0" 1192 | } 1193 | } 1194 | } 1195 | }, 1196 | "strip-ansi": { 1197 | "version": "5.2.0", 1198 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1199 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1200 | "requires": { 1201 | "ansi-regex": "^4.1.0" 1202 | } 1203 | }, 1204 | "strip-indent": { 1205 | "version": "3.0.0", 1206 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", 1207 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", 1208 | "requires": { 1209 | "min-indent": "^1.0.0" 1210 | } 1211 | }, 1212 | "strip-json-comments": { 1213 | "version": "2.0.1", 1214 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1215 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 1216 | }, 1217 | "supports-color": { 1218 | "version": "5.5.0", 1219 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1220 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1221 | "requires": { 1222 | "has-flag": "^3.0.0" 1223 | } 1224 | }, 1225 | "term-size": { 1226 | "version": "2.2.1", 1227 | "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", 1228 | "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==" 1229 | }, 1230 | "tiny-emitter": { 1231 | "version": "2.1.0", 1232 | "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", 1233 | "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", 1234 | "optional": true 1235 | }, 1236 | "tinydate": { 1237 | "version": "1.3.0", 1238 | "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", 1239 | "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==" 1240 | }, 1241 | "to-readable-stream": { 1242 | "version": "1.0.0", 1243 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", 1244 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" 1245 | }, 1246 | "to-regex-range": { 1247 | "version": "5.0.1", 1248 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1249 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1250 | "requires": { 1251 | "is-number": "^7.0.0" 1252 | } 1253 | }, 1254 | "toidentifier": { 1255 | "version": "1.0.0", 1256 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1257 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1258 | }, 1259 | "tweezer.js": { 1260 | "version": "1.5.0", 1261 | "resolved": "https://registry.npmjs.org/tweezer.js/-/tweezer.js-1.5.0.tgz", 1262 | "integrity": "sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ==" 1263 | }, 1264 | "type-fest": { 1265 | "version": "0.8.1", 1266 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1267 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" 1268 | }, 1269 | "typedarray-to-buffer": { 1270 | "version": "3.1.5", 1271 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1272 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1273 | "requires": { 1274 | "is-typedarray": "^1.0.0" 1275 | } 1276 | }, 1277 | "unique-string": { 1278 | "version": "2.0.0", 1279 | "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", 1280 | "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", 1281 | "requires": { 1282 | "crypto-random-string": "^2.0.0" 1283 | } 1284 | }, 1285 | "universalify": { 1286 | "version": "0.1.2", 1287 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1288 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 1289 | }, 1290 | "unpipe": { 1291 | "version": "1.0.0", 1292 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1293 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1294 | }, 1295 | "update-notifier": { 1296 | "version": "4.1.3", 1297 | "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", 1298 | "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", 1299 | "requires": { 1300 | "boxen": "^4.2.0", 1301 | "chalk": "^3.0.0", 1302 | "configstore": "^5.0.1", 1303 | "has-yarn": "^2.1.0", 1304 | "import-lazy": "^2.1.0", 1305 | "is-ci": "^2.0.0", 1306 | "is-installed-globally": "^0.3.1", 1307 | "is-npm": "^4.0.0", 1308 | "is-yarn-global": "^0.3.0", 1309 | "latest-version": "^5.0.0", 1310 | "pupa": "^2.0.1", 1311 | "semver-diff": "^3.1.1", 1312 | "xdg-basedir": "^4.0.0" 1313 | }, 1314 | "dependencies": { 1315 | "ansi-styles": { 1316 | "version": "4.3.0", 1317 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1318 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1319 | "requires": { 1320 | "color-convert": "^2.0.1" 1321 | } 1322 | }, 1323 | "chalk": { 1324 | "version": "3.0.0", 1325 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", 1326 | "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", 1327 | "requires": { 1328 | "ansi-styles": "^4.1.0", 1329 | "supports-color": "^7.1.0" 1330 | } 1331 | }, 1332 | "color-convert": { 1333 | "version": "2.0.1", 1334 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1335 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1336 | "requires": { 1337 | "color-name": "~1.1.4" 1338 | } 1339 | }, 1340 | "color-name": { 1341 | "version": "1.1.4", 1342 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1343 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1344 | }, 1345 | "has-flag": { 1346 | "version": "4.0.0", 1347 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1348 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1349 | }, 1350 | "supports-color": { 1351 | "version": "7.2.0", 1352 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1353 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1354 | "requires": { 1355 | "has-flag": "^4.0.0" 1356 | } 1357 | } 1358 | } 1359 | }, 1360 | "url-parse-lax": { 1361 | "version": "3.0.0", 1362 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", 1363 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", 1364 | "requires": { 1365 | "prepend-http": "^2.0.0" 1366 | } 1367 | }, 1368 | "utils-merge": { 1369 | "version": "1.0.1", 1370 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1371 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1372 | }, 1373 | "which-module": { 1374 | "version": "2.0.0", 1375 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", 1376 | "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" 1377 | }, 1378 | "widest-line": { 1379 | "version": "3.1.0", 1380 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", 1381 | "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", 1382 | "requires": { 1383 | "string-width": "^4.0.0" 1384 | } 1385 | }, 1386 | "wrap-ansi": { 1387 | "version": "5.1.0", 1388 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", 1389 | "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", 1390 | "requires": { 1391 | "ansi-styles": "^3.2.0", 1392 | "string-width": "^3.0.0", 1393 | "strip-ansi": "^5.0.0" 1394 | }, 1395 | "dependencies": { 1396 | "string-width": { 1397 | "version": "3.1.0", 1398 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1399 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1400 | "requires": { 1401 | "emoji-regex": "^7.0.1", 1402 | "is-fullwidth-code-point": "^2.0.0", 1403 | "strip-ansi": "^5.1.0" 1404 | } 1405 | } 1406 | } 1407 | }, 1408 | "wrappy": { 1409 | "version": "1.0.2", 1410 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1411 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1412 | }, 1413 | "write-file-atomic": { 1414 | "version": "3.0.3", 1415 | "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", 1416 | "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", 1417 | "requires": { 1418 | "imurmurhash": "^0.1.4", 1419 | "is-typedarray": "^1.0.0", 1420 | "signal-exit": "^3.0.2", 1421 | "typedarray-to-buffer": "^3.1.5" 1422 | } 1423 | }, 1424 | "ws": { 1425 | "version": "7.4.5", 1426 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", 1427 | "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==" 1428 | }, 1429 | "xdg-basedir": { 1430 | "version": "4.0.0", 1431 | "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", 1432 | "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" 1433 | }, 1434 | "y18n": { 1435 | "version": "4.0.3", 1436 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", 1437 | "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" 1438 | }, 1439 | "yallist": { 1440 | "version": "3.1.1", 1441 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1442 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 1443 | }, 1444 | "yargonaut": { 1445 | "version": "1.1.4", 1446 | "resolved": "https://registry.npmjs.org/yargonaut/-/yargonaut-1.1.4.tgz", 1447 | "integrity": "sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA==", 1448 | "requires": { 1449 | "chalk": "^1.1.1", 1450 | "figlet": "^1.1.1", 1451 | "parent-require": "^1.0.0" 1452 | }, 1453 | "dependencies": { 1454 | "ansi-regex": { 1455 | "version": "2.1.1", 1456 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 1457 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 1458 | }, 1459 | "ansi-styles": { 1460 | "version": "2.2.1", 1461 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 1462 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" 1463 | }, 1464 | "chalk": { 1465 | "version": "1.1.3", 1466 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 1467 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 1468 | "requires": { 1469 | "ansi-styles": "^2.2.1", 1470 | "escape-string-regexp": "^1.0.2", 1471 | "has-ansi": "^2.0.0", 1472 | "strip-ansi": "^3.0.0", 1473 | "supports-color": "^2.0.0" 1474 | } 1475 | }, 1476 | "strip-ansi": { 1477 | "version": "3.0.1", 1478 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1479 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1480 | "requires": { 1481 | "ansi-regex": "^2.0.0" 1482 | } 1483 | }, 1484 | "supports-color": { 1485 | "version": "2.0.0", 1486 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1487 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" 1488 | } 1489 | } 1490 | }, 1491 | "yargs": { 1492 | "version": "14.2.3", 1493 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", 1494 | "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", 1495 | "requires": { 1496 | "cliui": "^5.0.0", 1497 | "decamelize": "^1.2.0", 1498 | "find-up": "^3.0.0", 1499 | "get-caller-file": "^2.0.1", 1500 | "require-directory": "^2.1.1", 1501 | "require-main-filename": "^2.0.0", 1502 | "set-blocking": "^2.0.0", 1503 | "string-width": "^3.0.0", 1504 | "which-module": "^2.0.0", 1505 | "y18n": "^4.0.0", 1506 | "yargs-parser": "^15.0.1" 1507 | }, 1508 | "dependencies": { 1509 | "string-width": { 1510 | "version": "3.1.0", 1511 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1512 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1513 | "requires": { 1514 | "emoji-regex": "^7.0.1", 1515 | "is-fullwidth-code-point": "^2.0.0", 1516 | "strip-ansi": "^5.1.0" 1517 | } 1518 | } 1519 | } 1520 | }, 1521 | "yargs-parser": { 1522 | "version": "15.0.1", 1523 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", 1524 | "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", 1525 | "requires": { 1526 | "camelcase": "^5.0.0", 1527 | "decamelize": "^1.2.0" 1528 | } 1529 | } 1530 | } 1531 | } 1532 | --------------------------------------------------------------------------------