├── .editorconfig ├── .gitignore ├── .travis.yml ├── README.md ├── assets ├── studio.jpg └── web.jpg ├── data └── production.tar.gz ├── dev ├── template-values-development.json └── template-values-production.json ├── package-lock.json ├── package.json ├── renovate.json ├── sanity-template.json └── template ├── .editorconfig ├── .gitignore ├── README.md ├── lerna.json ├── package-lock.json ├── package.json ├── studio ├── .eslintrc.js ├── .gitignore ├── .prettierrc ├── README.md ├── config │ ├── .checksums │ └── @sanity │ │ ├── data-aspects.json │ │ ├── default-layout.json │ │ └── default-login.json ├── dashboardConfig.js ├── deskStructure.js ├── netlify.toml ├── package-lock.json ├── package.json ├── plugins │ └── dashboard-widget-structure-menu │ │ ├── sanity.json │ │ └── src │ │ ├── components │ │ ├── StructureMenuWidget.css │ │ ├── StructureMenuWidget.js │ │ └── index.js │ │ ├── lib │ │ └── structure.js │ │ ├── props.js │ │ └── widget.js ├── sanity.json ├── schemas │ ├── documents │ │ ├── author.js │ │ ├── category.js │ │ ├── post.js │ │ └── siteSettings.js │ ├── objects │ │ ├── authorReference.js │ │ ├── bioPortableText.js │ │ ├── bodyPortableText.js │ │ ├── excerptPortableText.js │ │ └── mainImage.js │ └── schema.js ├── static │ └── favicon.ico ├── studioHintsConfig.js └── yarn.lock └── web ├── .gitignore ├── README.md ├── appveyor.yml ├── cypress.json ├── cypress ├── fixtures │ └── example.json ├── integration │ └── spec.js ├── plugins │ └── index.js └── support │ ├── commands.js │ └── index.js ├── package-lock.json ├── package.json ├── rollup.config.js ├── src ├── client.js ├── components │ ├── Author.svelte │ ├── Code.svelte │ ├── Image.svelte │ ├── Link.svelte │ ├── Nav.svelte │ └── serializers.js ├── routes │ ├── _error.svelte │ ├── _layout.svelte │ ├── about.svelte │ ├── api │ │ └── blog │ │ │ ├── [slug].js │ │ │ └── all.js │ ├── blog │ │ ├── [slug].svelte │ │ └── index.svelte │ └── index.svelte ├── sanityClient.js ├── server.js ├── service-worker.js └── template.html └── static ├── favicon.png ├── global.css ├── great-success.png ├── logo-192.png ├── logo-512.png └── manifest.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /build 3 | /node_modules 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - '8' 4 | - '10' 5 | - '12' 6 | 7 | cache: 8 | directories: 9 | - '$HOME/.npm' 10 | 11 | install: 12 | - npm ci 13 | 14 | script: 15 | - npm test 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sanity-template-sapper-blog 2 | 3 | _Fully customizable blog template with a [Svelte](https://svelte.dev) front-end._ 4 | 5 | This template repo is used by Sanity.io to easily create deployed and configured projects through a web interface. You can test it out by [creating this project](https://www.sanity.io/create/?template=sanity-io%2Fsanity-template-sapper-blog). 6 | 7 | The template contains a [Sapper](https://sapper.svelte.dev) blog frontend and Sanity Studio. It can be deployed on [Netlify](htttps://www.netlify.com). 8 | 9 | Want to make a template for Sanity and your favourite front-end framework? We’re still maturing [sanity.io/create](https://sanity.io/create) and our APIs, but do tell us about it on [slack.sanity.io](https://slack.sanity.io). 10 | 11 | ![The clean template](https://github.com/sanity-io/sanity-template-sapper-blog/blob/master/assets/web.jpg?raw=true) 12 | 13 | ## Local development 14 | 15 | You develop the templates in `/template`, and review your changes in `/build`. 16 | 17 | 1. **Install dependencies with `npm install` in the root folder.** This will install the template development tool that watches changes in the `/template` folder and output the template to `/build`. 18 | 19 | 2. **Run `npm run dev` in root folder.** This will build the template files to `/build`. This is how the code will look for those who install the project later. 20 | 21 | 3. **Run `npm install` in `./build/web` and `sanity install` in `/build/studio`** This will install the necessary dependencies for the Sapper frontend and the Studio. 22 | 23 | 4. **Run `npm run dev` in `./build/web` and `sanity start` in `/build/studio`**. This will start the development servers for the Sapper frontend and Sanity Studio. 24 | 25 | ## Notes 26 | 27 | When developing, you may change `projectId` and `dataset` in `dev/template-values-development.json` to connect with a different Sanity project. 28 | -------------------------------------------------------------------------------- /assets/studio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanity-io/sanity-template-sapper-blog/58b4f9e2f5771b2ea3f62e5a4f6999b753850d5e/assets/studio.jpg -------------------------------------------------------------------------------- /assets/web.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanity-io/sanity-template-sapper-blog/58b4f9e2f5771b2ea3f62e5a4f6999b753850d5e/assets/web.jpg -------------------------------------------------------------------------------- /data/production.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanity-io/sanity-template-sapper-blog/58b4f9e2f5771b2ea3f62e5a4f6999b753850d5e/data/production.tar.gz -------------------------------------------------------------------------------- /dev/template-values-development.json: -------------------------------------------------------------------------------- 1 | { 2 | "repository": { 3 | "name": "dev-sanity-sapper-blog", 4 | "owner": "sanity-io", 5 | "private": false 6 | }, 7 | "sanity": { 8 | "dataset": "blog", 9 | "projectId": "jmhf2rn8", 10 | "projectTitle": "Sapper" 11 | }, 12 | "user": { 13 | "displayName": "Marius Lundgård", 14 | "profileImage": "https://lh3.googleusercontent.com/-a67P3TV8b5g/AAAAAAAAAAI/AAAAAAAAADI/LGBX1ZAjh88/photo.jpg", 15 | "email": "marius@sanity.io" 16 | }, 17 | "userInput": {}, 18 | "deployments": { 19 | "studio": { 20 | "url": "https://sanity-clean-studio-rf4qpk9y.netlify.com/", 21 | "providerName": "netlify", 22 | "providerInfo": { 23 | "buildHookId": "5cc04d5199df1802277a6e91", 24 | "siteId": "b3b7bb87-000f-42a3-9ed3-83358be97dde" 25 | }, 26 | "web": { 27 | "url": "https://sanity-gatsby-blog-web-skupqnos.netlify.com/", 28 | "providerName": "netlify", 29 | "providerInfo": { 30 | "buildHookId": "5caf2962008b0b042f8df19a", 31 | "siteId": "7e740745-2e2e-4427-be81-aded75334337" 32 | } 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /dev/template-values-production.json: -------------------------------------------------------------------------------- 1 | { 2 | "repository": { 3 | "name": "dev-sanity-sapper-blog", 4 | "owner": "sanity-io", 5 | "private": false 6 | }, 7 | "sanity": { 8 | "dataset": "blog", 9 | "projectId": "jmhf2rn8", 10 | "projectTitle": "Sapper" 11 | }, 12 | "user": { 13 | "displayName": "Marius Lundgård", 14 | "profileImage": "https://lh3.googleusercontent.com/-a67P3TV8b5g/AAAAAAAAAAI/AAAAAAAAADI/LGBX1ZAjh88/photo.jpg", 15 | "email": "marius@sanity.io" 16 | }, 17 | "userInput": {}, 18 | "deployments": { 19 | "studio": { 20 | "url": "https://sanity-sapper-blog-studio-rf4qpk9y.netlify.com/", 21 | "providerName": "netlify", 22 | "providerInfo": { 23 | "buildHookId": "5cc04d5199df1802277a6e91", 24 | "siteId": "b3b7bb87-000f-42a3-9ed3-83358be97dde" 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "sanity-template-sapper-blog", 4 | "scripts": { 5 | "build": "sanity-template build --template-values dev/template-values-production.json", 6 | "copy-node-modules": "npm run copy-studio-node-modules", 7 | "copy-studio-node-modules": "cp -R build/studio/node_modules template/studio/node_modules", 8 | "dev": "sanity-template watch --template-values dev/template-values-development.json", 9 | "export": "cd build/studio && sanity dataset export blog ../../data/production.tar.gz", 10 | "lint-build": "npm run build && (cd build && npm install && npm run lint)", 11 | "test": "npm run build && cd build && npm install && npm run build" 12 | }, 13 | "devDependencies": { 14 | "husky": "^3.0.1", 15 | "sanity-template": "^1.0.3" 16 | }, 17 | "husky": { 18 | "hooks": { 19 | "post-commit": "([ -z \"$SKIP_HOOK\" ] && sanity-template lockfiles && git add '*package-lock.json*' && git diff --quiet && SKIP_HOOK=1 git commit -m 'Generate lockfiles') && echo 'Committed lockfiles' || echo ''" 20 | } 21 | }, 22 | "dependencies": {} 23 | } 24 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>sanity-io/renovate-presets:sanity-template"] 3 | } 4 | -------------------------------------------------------------------------------- /sanity-template.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 0, 3 | "title": "Blog with Sapper", 4 | "description": "Fully customizable blog template with a Svelte.js front-end.", 5 | "previewMedia": { 6 | "type": "image", 7 | "src": "assets/web.jpg", 8 | "alt": "A preview image of Sanity Studio." 9 | }, 10 | "technologies": [ 11 | { 12 | "id": "netlify", 13 | "name": "Netlify", 14 | "url": "https://www.netlify.com/" 15 | } 16 | ], 17 | "deployments": [ 18 | { 19 | "id": "studio", 20 | "type": "studio", 21 | "title": "Sanity Studio", 22 | "description": "The Sanity Studio is where you edit and structure your content.", 23 | "dir": "./studio", 24 | "provider": { 25 | "name": "netlify", 26 | "config": { 27 | "base": "/", 28 | "dir": "/studio/dist", 29 | "cmd": "npm run build && cp studio/netlify.toml studio/dist" 30 | }, 31 | "requirements": ["build-hook"] 32 | }, 33 | "previewMedia": { 34 | "type": "image", 35 | "src": "assets/studio.jpg", 36 | "alt": "A preview image of the Sanity Studio." 37 | } 38 | }, 39 | { 40 | "id": "web", 41 | "type": "web", 42 | "title": "Frontend", 43 | "description": "The Sapper blog started adapted for Sanity.io.", 44 | "dir": "./web", 45 | "provider": { 46 | "name": "netlify", 47 | "config": { 48 | "base": "/", 49 | "dir": "/web/__sapper__/export", 50 | "cmd": "npm run build" 51 | }, 52 | "requirements": ["build-hook"] 53 | }, 54 | "previewMedia": { 55 | "type": "image", 56 | "src": "assets/web.jpg", 57 | "alt": "A preview image of the landing pages website." 58 | }, 59 | "requiredCorsOrigins": [ 60 | { 61 | "origin": "http://localhost:3000", 62 | "allowCredentials": false 63 | } 64 | ] 65 | } 66 | ] 67 | } 68 | -------------------------------------------------------------------------------- /template/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /template/.gitignore: -------------------------------------------------------------------------------- 1 | # Mac files 2 | .DS_Store 3 | 4 | # Dependency directories 5 | /node_modules 6 | 7 | # lerna files 8 | /lerna-debug.log 9 | -------------------------------------------------------------------------------- /template/README.md: -------------------------------------------------------------------------------- 1 | # <#< sanity.projectTitle >#> 2 | 3 | _Fully customizable blog template with a Svelte.js front-end._ 4 | 5 | Deployed from [sanity.io/create](https://www.sanity.io/create?template=sanity-io/sanity-template-sapper-blog) 6 | 7 | ## What you have 8 | 9 | - A Military-grade progressive blog with [Sapper](https://sapper.svelte.dev/) 10 | - Structured content using [Sanity.io](https://www.sanity.io) 11 | - Global deployment on [Netlify](https://netlify.com) 12 | 13 | ## Quick start 14 | 15 | 1. Clone this repository 16 | 2. `npm install` in the project root folder on local 17 | 3. `npm run dev` to start the studio and frontend locally 18 | - Your studio should be running on [http://localhost:3333](http://localhost:3333) 19 | - Your frontend should be running on [http://localhost:3000](http://localhost:3000) 20 | 4. `npm run build` to build to production locally 21 | 22 | ## Deploy changes 23 | 24 | Netlify automatically deploys new changes commited to master on GitHub. If you want to change deployment branch, do so in [build & deploy settings on Netlify](https://www.netlify.com/docs/continuous-deployment/#branches-deploys). 25 | 26 | ## Stuck? Get help 27 | 28 | [![Slack Community Button](https://slack.sanity.io/badge.svg)](https://slack.sanity.io/) 29 | 30 | Join [Sanity’s developer community](https://slack.sanity.io) or ping us [on twitter](https://twitter.com/sanity_io). 31 | -------------------------------------------------------------------------------- /template/lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": ["web", "studio"], 3 | "version": "0.0.0" 4 | } 5 | -------------------------------------------------------------------------------- /template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "sanity-sapper-blog", 4 | "version": "1.0.26", 5 | "scripts": { 6 | "build": "lerna run build --parallel", 7 | "build-studio": "lerna bootstrap && (cd studio && npm run build)", 8 | "build-web": "lerna bootstrap && (cd web && npm run export)", 9 | "dev": "lerna run dev --parallel", 10 | "format": "lerna run format", 11 | "graphql-deploy": "lerna run graphql-deploy", 12 | "lint": "lerna run lint", 13 | "postinstall": "lerna bootstrap", 14 | "test": "echo \"Error: no test specified\" && exit 1" 15 | }, 16 | "devDependencies": { 17 | "@sanity/cli": "^2.0.0", 18 | "lerna": "^3.14.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /template/studio/.eslintrc.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | module.exports = { 4 | extends: ['standard', 'standard-react'], 5 | parser: 'babel-eslint', 6 | rules: { 7 | 'react/prop-types': 0, 8 | 'object-curly-spacing': ['error', 'never'] 9 | }, 10 | settings: { 11 | react: { 12 | pragma: 'React', 13 | version: '16.2.0' 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /template/studio/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /node_modules 3 | 4 | -------------------------------------------------------------------------------- /template/studio/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 100, 3 | "singleQuote": true, 4 | "semi": false 5 | } 6 | -------------------------------------------------------------------------------- /template/studio/README.md: -------------------------------------------------------------------------------- 1 | # <#< repository.name >#>-studio 2 | -------------------------------------------------------------------------------- /template/studio/config/.checksums: -------------------------------------------------------------------------------- 1 | { 2 | "#": "Used by Sanity to keep track of configuration file checksums, do not delete or modify!", 3 | "@sanity/default-layout": "bb034f391ba508a6ca8cd971967cbedeb131c4d19b17b28a0895f32db5d568ea", 4 | "@sanity/default-login": "6fb6d3800aa71346e1b84d95bbcaa287879456f2922372bb0294e30b968cd37f", 5 | "@sanity/data-aspects": "d199e2c199b3e26cd28b68dc84d7fc01c9186bf5089580f2e2446994d36b3cb6", 6 | "@sanity/form-builder": "b38478227ba5e22c91981da4b53436df22e48ff25238a55a973ed620be5068aa" 7 | } 8 | -------------------------------------------------------------------------------- /template/studio/config/@sanity/data-aspects.json: -------------------------------------------------------------------------------- 1 | { 2 | "listOptions": {} 3 | } 4 | -------------------------------------------------------------------------------- /template/studio/config/@sanity/default-layout.json: -------------------------------------------------------------------------------- 1 | { 2 | "toolSwitcher": { 3 | "order": [], 4 | "hidden": [] 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /template/studio/config/@sanity/default-login.json: -------------------------------------------------------------------------------- 1 | { 2 | "providers": { 3 | "mode": "append", 4 | "redirectOnSingle": false, 5 | "entries": [] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /template/studio/dashboardConfig.js: -------------------------------------------------------------------------------- 1 | export default { 2 | widgets: [ 3 | { 4 | name: 'sanity-tutorials', 5 | options: { 6 | templateRepoId: 'sanity-io/sanity-template-gatsby-blog' 7 | } 8 | }, 9 | {name: 'structure-menu'}, 10 | { 11 | name: 'project-info', 12 | options: { 13 | __experimental_before: [ 14 | { 15 | name: 'netlify', 16 | options: { 17 | description: 18 | 'NOTE: Because these sites are static builds, they need to be re-deployed to see the changes when documents are published.', 19 | sites: [ 20 | { 21 | buildHookId: '<##>', 22 | title: 'Sanity Studio', 23 | name: '<##>', 24 | apiId: '<##>' 25 | }, 26 | { 27 | buildHookId: '<##>', 28 | title: 'Blog Website', 29 | name: '<##>', 30 | apiId: '<##>' 31 | } 32 | ] 33 | } 34 | } 35 | ], 36 | data: [ 37 | { 38 | title: 'GitHub repo', 39 | value: 'https://github.com/<##>/<##>', 40 | category: 'Code' 41 | }, 42 | {title: 'Frontend', value: '<##>', category: 'apps'} 43 | ] 44 | } 45 | }, 46 | {name: 'project-users', layout: {height: 'auto'}}, 47 | { 48 | name: 'document-list', 49 | options: {title: 'Recent blog posts', order: '_createdAt desc', types: ['post']}, 50 | layout: {width: 'medium'} 51 | } 52 | ] 53 | } 54 | -------------------------------------------------------------------------------- /template/studio/deskStructure.js: -------------------------------------------------------------------------------- 1 | import S from '@sanity/desk-tool/structure-builder' 2 | import { MdSettings } from "react-icons/md"; 3 | import { MdPerson } from "react-icons/md"; 4 | 5 | const hiddenDocTypes = listItem => 6 | !['category', 'author', 'post', 'siteSettings'].includes(listItem.getId()) 7 | 8 | export default () => 9 | S.list() 10 | .title('Content') 11 | .items([ 12 | S.listItem() 13 | .title('Settings') 14 | .icon(MdSettings) 15 | .child( 16 | S.editor() 17 | .id('siteSettings') 18 | .schemaType('siteSettings') 19 | .documentId('siteSettings') 20 | ), 21 | S.listItem() 22 | .title('Blog posts') 23 | .schemaType('post') 24 | .child(S.documentTypeList('post').title('Blog posts')), 25 | S.listItem() 26 | .title('Authors') 27 | .icon(MdPerson) 28 | .schemaType('author') 29 | .child(S.documentTypeList('author').title('Authors')), 30 | S.listItem() 31 | .title('Categories') 32 | .schemaType('category') 33 | .child(S.documentTypeList('category').title('Categories')), 34 | // This returns an array of all the document types 35 | // defined in schema.js. We filter out those that we have 36 | // defined the structure above 37 | ...S.documentTypeListItems().filter(hiddenDocTypes) 38 | ]) 39 | -------------------------------------------------------------------------------- /template/studio/netlify.toml: -------------------------------------------------------------------------------- 1 | [[redirects]] 2 | from = "/*" 3 | to = "/" 4 | status = 200 5 | -------------------------------------------------------------------------------- /template/studio/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "sanity-sapper-blog-studio", 4 | "version": "1.0.49", 5 | "main": "package.json", 6 | "author": "Sanity ", 7 | "scripts": { 8 | "dev": "sanity start", 9 | "format": "prettier-eslint --write \"**/*.js\" \"!node_modules/**\"", 10 | "build": "sanity build", 11 | "graphql-deploy": "sanity graphql deploy --playground", 12 | "lint": "eslint .", 13 | "test": "sanity check" 14 | }, 15 | "dependencies": { 16 | "@sanity/base": "^2.1.3", 17 | "@sanity/cli": "^2.1.0", 18 | "@sanity/code-input": "^2.1.0", 19 | "@sanity/components": "^2.1.0", 20 | "@sanity/core": "^2.1.2", 21 | "@sanity/dashboard": "^2.1.0", 22 | "@sanity/default-layout": "^2.1.3", 23 | "@sanity/default-login": "^2.1.0", 24 | "@sanity/desk-tool": "^2.1.3", 25 | "@sanity/studio-hints": "^2.1.0", 26 | "date-fns": "^1.30.1", 27 | "prop-types": "^15.7.2", 28 | "react": "^17.0.2", 29 | "react-dom": "^17.0.2", 30 | "react-icons": "^3.11.0", 31 | "sanity-plugin-dashboard-widget-document-list": "^0.0.11", 32 | "sanity-plugin-dashboard-widget-netlify": "^1.0.1" 33 | }, 34 | "devDependencies": { 35 | "babel-eslint": "^10.0.3", 36 | "eslint": "^6.7.2", 37 | "eslint-config-standard": "^14.1.0", 38 | "eslint-config-standard-react": "^9.2.0", 39 | "eslint-plugin-import": "^2.19.1", 40 | "eslint-plugin-node": "^10.0.0", 41 | "eslint-plugin-promise": "^4.2.1", 42 | "eslint-plugin-react": "^7.19.0", 43 | "eslint-plugin-standard": "^4.0.1", 44 | "prettier-eslint-cli": "^5.0.0" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/sanity.json: -------------------------------------------------------------------------------- 1 | { 2 | "paths": { 3 | "source": "./src", 4 | "compiled": "./lib" 5 | }, 6 | "parts": [ 7 | { 8 | "name": "part:@sanity/dashboard/widget/create", 9 | "implements": "part:@sanity/dashboard/widget", 10 | "path": "widget.js" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/components/StructureMenuWidget.css: -------------------------------------------------------------------------------- 1 | @import 'part:@sanity/base/theme/variables-style'; 2 | 3 | .root { 4 | composes: container from "part:@sanity/dashboard/widget-styles"; 5 | } 6 | 7 | .header { 8 | composes: header from "part:@sanity/dashboard/widget-styles"; 9 | } 10 | 11 | .title { 12 | composes: title from "part:@sanity/dashboard/widget-styles"; 13 | } 14 | 15 | .content { 16 | display: grid; 17 | padding: var(--small-padding); 18 | grid-gap: var(--small-padding); 19 | grid-template-columns: 1fr 1fr; 20 | overflow-x: auto; 21 | border-top: 1px solid var(--hairline-color); 22 | 23 | @media (--screen-medium) { 24 | grid-template-columns: 1fr 1fr 1fr 1fr; 25 | } 26 | } 27 | 28 | .link { 29 | composes: item from 'part:@sanity/base/theme/layout/selectable-style'; 30 | display: block; 31 | border-radius: 2px; 32 | padding: var(--small-padding); 33 | text-decoration: none; 34 | text-align: center; 35 | box-sizing: border-box; 36 | } 37 | 38 | .iconWrapper { 39 | font-size: 2em; 40 | } 41 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/components/StructureMenuWidget.js: -------------------------------------------------------------------------------- 1 | import {Link} from 'part:@sanity/base/router' 2 | import FolderIcon from 'part:@sanity/base/folder-icon' 3 | import FileIcon from 'part:@sanity/base/file-icon' 4 | import React from 'react' 5 | import styles from './StructureMenuWidget.css' 6 | 7 | function getIconComponent (item) { 8 | if (item.icon) return item.icon 9 | if (!item.schemaType) return FileIcon 10 | return item.schemaType.icon || FolderIcon 11 | } 12 | 13 | function StructureMenuWidget (props) { 14 | return ( 15 |
16 |
17 |

Edit your content

18 |
19 | 20 |
21 | {props.structure.items.map(item => { 22 | const Icon = getIconComponent(item) 23 | return ( 24 |
25 | 26 |
27 | 28 |
29 |
{item.title}
30 | 31 |
32 | ) 33 | })} 34 |
35 |
36 | ) 37 | } 38 | 39 | export default StructureMenuWidget 40 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/components/index.js: -------------------------------------------------------------------------------- 1 | export {default as StructureMenuWidget} from './StructureMenuWidget' 2 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/lib/structure.js: -------------------------------------------------------------------------------- 1 | /* global __DEV__ */ 2 | 3 | import {defer, from as observableFrom, of as observableOf, throwError} from 'rxjs' 4 | import {mergeMap} from 'rxjs/operators' 5 | 6 | // eslint-disable-next-line import/no-commonjs 7 | const {StructureBuilder} = require('@sanity/structure') 8 | 9 | let prevStructureError = null 10 | if (__DEV__) { 11 | if (module.hot && module.hot.data) { 12 | prevStructureError = module.hot.data.prevError 13 | } 14 | } 15 | 16 | export function isSubscribable (thing) { 17 | return thing && (typeof thing.then === 'function' || typeof thing.subscribe === 'function') 18 | } 19 | 20 | export function isStructure (structure) { 21 | return ( 22 | structure && 23 | (typeof structure === 'function' || 24 | typeof structure.serialize !== 'function' || 25 | typeof structure.then !== 'function' || 26 | typeof structure.subscribe !== 'function' || 27 | typeof structure.type !== 'string') 28 | ) 29 | } 30 | 31 | export function serializeStructure (item, context, resolverArgs = []) { 32 | // Lazy 33 | if (typeof item === 'function') { 34 | return serializeStructure(item(...resolverArgs), context, resolverArgs) 35 | } 36 | 37 | // Promise/observable returning a function, builder or plain JSON structure 38 | if (isSubscribable(item)) { 39 | return observableFrom(item).pipe( 40 | mergeMap(val => serializeStructure(val, context, resolverArgs)) 41 | ) 42 | } 43 | 44 | // Builder? 45 | if (item && typeof item.serialize === 'function') { 46 | return serializeStructure(item.serialize(context)) 47 | } 48 | 49 | // Plain value? 50 | return observableOf(item) 51 | } 52 | 53 | export function getDefaultStructure () { 54 | const items = StructureBuilder.documentTypeListItems() 55 | return StructureBuilder.list() 56 | .id('__root__') 57 | .title('Content') 58 | .showIcons(items.some(item => item.getSchemaType().icon)) 59 | .items(items) 60 | } 61 | 62 | // We are lazy-requiring/resolving the structure inside of a function in order to catch errors 63 | // on the root-level of the module. Any loading errors will be caught and emitted as errors 64 | // eslint-disable-next-line complexity 65 | export function loadStructure () { 66 | let structure 67 | try { 68 | const mod = require('part:@sanity/desk-tool/structure?') || getDefaultStructure() 69 | structure = mod && mod.__esModule ? mod.default : mod 70 | 71 | // On invalid modules, when HMR kicks in, we sometimes get an empty object back when the 72 | // source has changed without fixing the problem. In this case, keep showing the error 73 | if ( 74 | __DEV__ && 75 | prevStructureError && 76 | structure && 77 | structure.constructor.name === 'Object' && 78 | Object.keys(structure).length === 0 79 | ) { 80 | return throwError(prevStructureError) 81 | } 82 | 83 | prevStructureError = null 84 | } catch (err) { 85 | prevStructureError = err 86 | return throwError(err) 87 | } 88 | 89 | if (!isStructure(structure)) { 90 | return throwError( 91 | new Error( 92 | `Structure needs to export a function, an observable, a promise or a stucture builder, got ${typeof structure}` 93 | ) 94 | ) 95 | } 96 | 97 | // Defer to catch immediately thrown errors on serialization 98 | return defer(() => serializeStructure(structure)) 99 | } 100 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/props.js: -------------------------------------------------------------------------------- 1 | import {combineLatest} from 'rxjs' 2 | import {map} from 'rxjs/operators' 3 | import {loadStructure} from './lib/structure' 4 | 5 | export function toPropsStream (props$) { 6 | const structure$ = loadStructure() 7 | 8 | return combineLatest(props$, structure$).pipe( 9 | map(([props, structure]) => ({...props, structure})) 10 | ) 11 | } 12 | -------------------------------------------------------------------------------- /template/studio/plugins/dashboard-widget-structure-menu/src/widget.js: -------------------------------------------------------------------------------- 1 | import {withPropsStream} from 'react-props-stream' 2 | import {withRouterHOC} from 'part:@sanity/base/router' 3 | import {StructureMenuWidget} from './components' 4 | import {toPropsStream} from './props' 5 | 6 | export default { 7 | name: 'structure-menu', 8 | component: withRouterHOC(withPropsStream(toPropsStream, StructureMenuWidget)), 9 | layout: {width: 'full'} 10 | } 11 | -------------------------------------------------------------------------------- /template/studio/sanity.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "project": { 4 | "name": "<#< sanity.projectTitle >#>" 5 | }, 6 | "api": { 7 | "projectId": "<#< sanity.projectId >#>", 8 | "dataset": "<#< sanity.dataset >#>" 9 | }, 10 | "plugins": [ 11 | "@sanity/base", 12 | "@sanity/components", 13 | "@sanity/default-layout", 14 | "@sanity/default-login", 15 | "@sanity/dashboard", 16 | "@sanity/desk-tool", 17 | "dashboard-widget-structure-menu", 18 | "dashboard-widget-document-list", 19 | "dashboard-widget-netlify", 20 | "@sanity/code-input", 21 | "@sanity/studio-hints" 22 | ], 23 | "parts": [ 24 | { 25 | "name": "part:@sanity/base/schema", 26 | "path": "./schemas/schema.js" 27 | }, 28 | { 29 | "name": "part:@sanity/desk-tool/structure", 30 | "path": "./deskStructure.js" 31 | }, 32 | { 33 | "implements": "part:@sanity/dashboard/config", 34 | "path": "dashboardConfig.js" 35 | }, 36 | { 37 | "implements": "part:@sanity/default-layout/studio-hints-config", 38 | "path": "./studioHintsConfig.js" 39 | } 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /template/studio/schemas/documents/author.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'author', 3 | type: 'document', 4 | title: 'Author', 5 | fields: [ 6 | { 7 | name: 'name', 8 | type: 'string', 9 | title: 'Name' 10 | }, 11 | { 12 | name: 'slug', 13 | type: 'slug', 14 | title: 'Slug', 15 | description: 'Some frontends will require a slug to be set to be able to show the person', 16 | options: { 17 | source: 'name', 18 | maxLength: 96 19 | } 20 | }, 21 | { 22 | name: 'image', 23 | type: 'mainImage', 24 | title: 'Image' 25 | }, 26 | { 27 | name: 'bio', 28 | type: 'bioPortableText', 29 | title: 'Biography' 30 | } 31 | ], 32 | preview: { 33 | select: { 34 | title: 'name', 35 | subtitle: 'slug.current', 36 | media: 'image' 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /template/studio/schemas/documents/category.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'category', 3 | type: 'document', 4 | title: 'Category', 5 | fields: [ 6 | { 7 | name: 'title', 8 | type: 'string', 9 | title: 'Title' 10 | }, 11 | { 12 | name: 'description', 13 | type: 'text', 14 | title: 'Description' 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /template/studio/schemas/documents/post.js: -------------------------------------------------------------------------------- 1 | import {format} from 'date-fns' 2 | 3 | export default { 4 | name: 'post', 5 | type: 'document', 6 | title: 'Blog Post', 7 | fields: [ 8 | { 9 | name: 'title', 10 | type: 'string', 11 | title: 'Title', 12 | description: 'Titles should be catchy, descriptive, and not too long' 13 | }, 14 | { 15 | name: 'slug', 16 | type: 'slug', 17 | title: 'Slug', 18 | description: 'Some frontends will require a slug to be set to be able to show the post', 19 | options: { 20 | source: 'title', 21 | maxLength: 96 22 | } 23 | }, 24 | { 25 | name: 'publishedAt', 26 | type: 'datetime', 27 | title: 'Published at', 28 | description: 'This can be used to schedule post for publishing' 29 | }, 30 | { 31 | name: 'mainImage', 32 | type: 'mainImage', 33 | title: 'Main image' 34 | }, 35 | { 36 | name: 'excerpt', 37 | type: 'excerptPortableText', 38 | title: 'Excerpt', 39 | description: 40 | 'This ends up on summary pages, on Google, when people share your post in social media.' 41 | }, 42 | { 43 | name: 'authors', 44 | title: 'Authors', 45 | type: 'array', 46 | of: [ 47 | { 48 | type: 'authorReference' 49 | } 50 | ] 51 | }, 52 | { 53 | name: 'categories', 54 | type: 'array', 55 | title: 'Categories', 56 | of: [ 57 | { 58 | type: 'reference', 59 | to: { 60 | type: 'category' 61 | } 62 | } 63 | ] 64 | }, 65 | { 66 | name: 'body', 67 | type: 'bodyPortableText', 68 | title: 'Body' 69 | } 70 | ], 71 | orderings: [ 72 | { 73 | name: 'publishingDateAsc', 74 | title: 'Publishing date new–>old', 75 | by: [ 76 | { 77 | field: 'publishedAt', 78 | direction: 'asc' 79 | }, 80 | { 81 | field: 'title', 82 | direction: 'asc' 83 | } 84 | ] 85 | }, 86 | { 87 | name: 'publishingDateDesc', 88 | title: 'Publishing date old->new', 89 | by: [ 90 | { 91 | field: 'publishedAt', 92 | direction: 'desc' 93 | }, 94 | { 95 | field: 'title', 96 | direction: 'asc' 97 | } 98 | ] 99 | } 100 | ], 101 | preview: { 102 | select: { 103 | title: 'title', 104 | publishedAt: 'publishedAt', 105 | slug: 'slug', 106 | media: 'mainImage' 107 | }, 108 | prepare ({title = 'No title', publishedAt, slug, media}) { 109 | const dateSegment = format(publishedAt, 'YYYY/MM') 110 | const path = `/${dateSegment}/${slug.current}/` 111 | return { 112 | title, 113 | media, 114 | subtitle: publishedAt ? path : 'Missing publishing date' 115 | } 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /template/studio/schemas/documents/siteSettings.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'siteSettings', 3 | type: 'document', 4 | title: 'Site Settings', 5 | __experimental_actions: ['update', /* 'create', 'delete', */ 'publish'], 6 | fields: [ 7 | { 8 | name: 'title', 9 | type: 'string', 10 | title: 'Title' 11 | }, 12 | { 13 | name: 'description', 14 | type: 'text', 15 | title: 'Description', 16 | description: 'Describe your blog for search engines and social media.' 17 | }, 18 | { 19 | name: 'keywords', 20 | type: 'array', 21 | title: 'Keywords', 22 | description: 'Add keywords that describes your blog.', 23 | of: [{type: 'string'}], 24 | options: { 25 | layout: 'tags' 26 | } 27 | }, 28 | { 29 | name: 'author', 30 | type: 'reference', 31 | description: 'Publish an author and set a reference to them here.', 32 | title: 'Author', 33 | to: [{type: 'author'}] 34 | } 35 | ] 36 | } 37 | -------------------------------------------------------------------------------- /template/studio/schemas/objects/authorReference.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'authorReference', 3 | type: 'object', 4 | title: 'Author reference', 5 | fields: [ 6 | { 7 | name: 'author', 8 | type: 'reference', 9 | to: [ 10 | { 11 | type: 'author' 12 | } 13 | ] 14 | } 15 | ], 16 | preview: { 17 | select: { 18 | title: 'author.name', 19 | media: 'author.image.asset' 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /template/studio/schemas/objects/bioPortableText.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'bioPortableText', 3 | type: 'array', 4 | title: 'Excerpt', 5 | of: [ 6 | { 7 | type: 'block', 8 | title: 'Block', 9 | styles: [{title: 'Normal', value: 'normal'}], 10 | lists: [], 11 | marks: { 12 | decorators: [ 13 | {title: 'Strong', value: 'strong'}, 14 | {title: 'Emphasis', value: 'em'}, 15 | {title: 'Code', value: 'code'} 16 | ] 17 | } 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /template/studio/schemas/objects/bodyPortableText.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'bodyPortableText', 3 | type: 'array', 4 | title: 'Post body', 5 | of: [ 6 | { 7 | type: 'block', 8 | title: 'Block', 9 | // Styles let you set what your user can mark up blocks with. These 10 | // corrensponds with HTML tags, but you can set any title or value 11 | // you want and decide how you want to deal with it where you want to 12 | // use your content. 13 | styles: [ 14 | {title: 'Normal', value: 'normal'}, 15 | {title: 'H1', value: 'h1'}, 16 | {title: 'H2', value: 'h2'}, 17 | {title: 'H3', value: 'h3'}, 18 | {title: 'H4', value: 'h4'}, 19 | {title: 'Quote', value: 'blockquote'} 20 | ], 21 | lists: [{title: 'Bullet', value: 'bullet'}, {title: 'Numbered', value: 'number'}], 22 | // Marks let you mark up inline text in the block editor. 23 | marks: { 24 | // Decorators usually describe a single property – e.g. a typographic 25 | // preference or highlighting by editors. 26 | decorators: [{title: 'Strong', value: 'strong'}, {title: 'Emphasis', value: 'em'}], 27 | // Annotations can be any object structure – e.g. a link or a footnote. 28 | annotations: [ 29 | { 30 | name: 'link', 31 | type: 'object', 32 | title: 'URL', 33 | fields: [ 34 | { 35 | title: 'URL', 36 | name: 'href', 37 | type: 'url' 38 | } 39 | ] 40 | } 41 | ] 42 | }, 43 | of: [{type: 'authorReference'}] 44 | }, 45 | // You can add additional types here. Note that you can't use 46 | // primitive types such as 'string' and 'number' in the same array 47 | // as a block type. 48 | { 49 | type: 'mainImage', 50 | options: {hotspot: true} 51 | }, 52 | { 53 | type: 'code' 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /template/studio/schemas/objects/excerptPortableText.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'excerptPortableText', 3 | type: 'array', 4 | title: 'Excerpt', 5 | of: [ 6 | { 7 | title: 'Block', 8 | type: 'block', 9 | styles: [{title: 'Normal', value: 'normal'}], 10 | lists: [], 11 | marks: { 12 | decorators: [ 13 | {title: 'Strong', value: 'strong'}, 14 | {title: 'Emphasis', value: 'em'}, 15 | {title: 'Code', value: 'code'} 16 | ], 17 | annotations: [] 18 | } 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /template/studio/schemas/objects/mainImage.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: 'mainImage', 3 | type: 'image', 4 | title: 'Image', 5 | options: { 6 | hotspot: true 7 | }, 8 | fields: [ 9 | { 10 | name: 'caption', 11 | type: 'string', 12 | title: 'Caption', 13 | options: { 14 | isHighlighted: true 15 | } 16 | }, 17 | { 18 | name: 'alt', 19 | type: 'string', 20 | title: 'Alternative text', 21 | description: 'Important for SEO and accessiblity.', 22 | validation: Rule => Rule.error('You have to fill out the alternative text.').required(), 23 | options: { 24 | isHighlighted: true 25 | } 26 | } 27 | ], 28 | preview: { 29 | select: { 30 | imageUrl: 'asset.url', 31 | title: 'caption' 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /template/studio/schemas/schema.js: -------------------------------------------------------------------------------- 1 | // First, we must import the schema creator 2 | import createSchema from 'part:@sanity/base/schema-creator' 3 | 4 | // Then import schema types from any plugins that might expose them 5 | import schemaTypes from 'all:part:@sanity/base/schema-type' 6 | 7 | // document schemas 8 | import author from './documents/author' 9 | import category from './documents/category' 10 | import post from './documents/post' 11 | import siteSettings from './documents/siteSettings' 12 | 13 | // Object types 14 | import bodyPortableText from './objects/bodyPortableText' 15 | import bioPortableText from './objects/bioPortableText' 16 | import excerptPortableText from './objects/excerptPortableText' 17 | import mainImage from './objects/mainImage' 18 | import authorReference from './objects/authorReference' 19 | 20 | // Then we give our schema to the builder and provide the result to Sanity 21 | export default createSchema({ 22 | // We name our schema 23 | name: 'blog', 24 | // Then proceed to concatenate our our document type 25 | // to the ones provided by any plugins that are installed 26 | types: schemaTypes.concat([ 27 | // The following are document types which will appear 28 | // in the studio. 29 | siteSettings, 30 | post, 31 | category, 32 | author, 33 | mainImage, 34 | authorReference, 35 | bodyPortableText, 36 | bioPortableText, 37 | excerptPortableText 38 | 39 | // When added to this list, object types can be used as 40 | // { type: 'typename' } in other document schemas 41 | ]) 42 | }) 43 | -------------------------------------------------------------------------------- /template/studio/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sanity-io/sanity-template-sapper-blog/58b4f9e2f5771b2ea3f62e5a4f6999b753850d5e/template/studio/static/favicon.ico -------------------------------------------------------------------------------- /template/studio/studioHintsConfig.js: -------------------------------------------------------------------------------- 1 | export default { 2 | templateRepoId: 'sanity-io/sanity-template-sapper-blog' 3 | } 4 | -------------------------------------------------------------------------------- /template/web/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | yarn-error.log 4 | /cypress/screenshots/ 5 | /__sapper__/ 6 | -------------------------------------------------------------------------------- /template/web/README.md: -------------------------------------------------------------------------------- 1 | # sapper-template-sanity-mod 2 | 3 | This is a blog that use [content from sanity.io/create](https://www.sanity.io/create?template=sanity-io%2Fsanity-template-gatsby-blog) with Sapper, a app framework for Svelte.js. 4 | 5 | ## Original Readme 6 | 7 | The default [Sapper](https://github.com/sveltejs/sapper) template, with branches for Rollup and webpack. To clone it and get started: 8 | 9 | ```bash 10 | # for Rollup 11 | npx degit sveltejs/sapper-template#rollup my-app 12 | # for webpack 13 | npx degit sveltejs/sapper-template#webpack my-app 14 | cd my-app 15 | npm install # or yarn! 16 | npm run dev 17 | ``` 18 | 19 | Open up [localhost:3000](http://localhost:3000) and start clicking around. 20 | 21 | Consult [sapper.svelte.dev](https://sapper.svelte.dev) for help getting started. 22 | 23 | ## Structure 24 | 25 | Sapper expects to find two directories in the root of your project — `src` and `static`. 26 | 27 | ### src 28 | 29 | The [src](src) directory contains the entry points for your app — `client.js`, `server.js` and (optionally) a `service-worker.js` — along with a `template.html` file and a `routes` directory. 30 | 31 | #### src/routes 32 | 33 | This is the heart of your Sapper app. There are two kinds of routes — _pages_, and _server routes_. 34 | 35 | **Pages** are Svelte components written in `.html` files. When a user first visits the application, they will be served a server-rendered version of the route in question, plus some JavaScript that 'hydrates' the page and initialises a client-side router. From that point forward, navigating to other pages is handled entirely on the client for a fast, app-like feel. (Sapper will preload and cache the code for these subsequent pages, so that navigation is instantaneous.) 36 | 37 | **Server routes** are modules written in `.js` files, that export functions corresponding to HTTP methods. Each function receives Express `request` and `response` objects as arguments, plus a `next` function. This is useful for creating a JSON API, for example. 38 | 39 | There are three simple rules for naming the files that define your routes: 40 | 41 | - A file called `src/routes/about.html` corresponds to the `/about` route. A file called `src/routes/blog/[slug].html` corresponds to the `/blog/:slug` route, in which case `params.slug` is available to the route 42 | - The file `src/routes/index.html` (or `src/routes/index.js`) corresponds to the root of your app. `src/routes/about/index.html` is treated the same as `src/routes/about.html`. 43 | - Files and directories with a leading underscore do _not_ create routes. This allows you to colocate helper modules and components with the routes that depend on them — for example you could have a file called `src/routes/_helpers/datetime.js` and it would _not_ create a `/_helpers/datetime` route 44 | 45 | ### static 46 | 47 | The [static](static) directory contains any static assets that should be available. These are served using [sirv](https://github.com/lukeed/sirv). 48 | 49 | In your [service-worker.js](app/service-worker.js) file, you can import these as `files` from the generated manifest... 50 | 51 | ```js 52 | import { files } from "../__sapper__/service-worker.js"; 53 | ``` 54 | 55 | ...so that you can cache them (though you can choose not to, for example if you don't want to cache very large files). 56 | 57 | ## Bundler config 58 | 59 | Sapper uses Rollup or webpack to provide code-splitting and dynamic imports, as well as compiling your Svelte components. With webpack, it also provides hot module reloading. As long as you don't do anything daft, you can edit the configuration files to add whatever plugins you'd like. 60 | 61 | ## Production mode and deployment 62 | 63 | To start a production version of your app, run `npm run build && npm start`. This will disable live reloading, and activate the appropriate bundler plugins. 64 | 65 | You can deploy your application to any environment that supports Node 8 or above. As an example, to deploy to [Now](https://zeit.co/now), run these commands: 66 | 67 | ```bash 68 | npm install -g now 69 | now 70 | ``` 71 | 72 | ## Using external components with webpack 73 | 74 | When using Svelte components installed from npm, such as [@sveltejs/svelte-virtual-list](https://github.com/sveltejs/svelte-virtual-list), Svelte needs the original component source (rather than any precompiled JavaScript that ships with the component). This allows the component to be rendered server-side, and also keeps your client-side app smaller. 75 | 76 | Because of that, it's essential that webpack doesn't treat the package as an _external dependency_. You can either modify the `externals` option in [webpack/server.config.js](webpack/server.config.js), or simply install the package to `devDependencies` rather than `dependencies`, which will cause it to get bundled (and therefore compiled) with your app: 77 | 78 | ```bash 79 | yarn add -D @sveltejs/svelte-virtual-list 80 | ``` 81 | 82 | ## Bugs and feedback 83 | 84 | Sapper is in early development, and may have the odd rough edge here and there. Please be vocal over on the [Sapper issue tracker](https://github.com/sveltejs/sapper/issues). 85 | -------------------------------------------------------------------------------- /template/web/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{build}" 2 | 3 | shallow_clone: true 4 | 5 | init: 6 | - git config --global core.autocrlf false 7 | 8 | build: off 9 | 10 | environment: 11 | matrix: 12 | # node.js 13 | - nodejs_version: stable 14 | 15 | install: 16 | - ps: Install-Product node $env:nodejs_version 17 | - npm install cypress 18 | - npm install 19 | -------------------------------------------------------------------------------- /template/web/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "baseUrl": "http://localhost:3000", 3 | "video": false 4 | } -------------------------------------------------------------------------------- /template/web/cypress/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io", 4 | "body": "Fixtures are a great way to mock data for responses to routes" 5 | } -------------------------------------------------------------------------------- /template/web/cypress/integration/spec.js: -------------------------------------------------------------------------------- 1 | describe('Sapper template app', () => { 2 | beforeEach(() => { 3 | cy.visit('/') 4 | }); 5 | 6 | it('has the correct

', () => { 7 | cy.contains('h1', 'Great success!') 8 | }); 9 | 10 | it('navigates to /about', () => { 11 | cy.get('nav a').contains('about').click(); 12 | cy.url().should('include', '/about'); 13 | }); 14 | 15 | it('navigates to /blog', () => { 16 | cy.get('nav a').contains('blog').click(); 17 | cy.url().should('include', '/blog'); 18 | }); 19 | }); -------------------------------------------------------------------------------- /template/web/cypress/plugins/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example plugins/index.js can be used to load plugins 3 | // 4 | // You can change the location of this file or turn off loading 5 | // the plugins file with the 'pluginsFile' configuration option. 6 | // 7 | // You can read more here: 8 | // https://on.cypress.io/plugins-guide 9 | // *********************************************************** 10 | 11 | // This function is called when a project is opened or re-opened (e.g. due to 12 | // the project's config changing) 13 | 14 | module.exports = (on, config) => { 15 | // `on` is used to hook into various events Cypress emits 16 | // `config` is the resolved Cypress config 17 | } 18 | -------------------------------------------------------------------------------- /template/web/cypress/support/commands.js: -------------------------------------------------------------------------------- 1 | // *********************************************** 2 | // This example commands.js shows you how to 3 | // create various custom commands and overwrite 4 | // existing commands. 5 | // 6 | // For more comprehensive examples of custom 7 | // commands please read more here: 8 | // https://on.cypress.io/custom-commands 9 | // *********************************************** 10 | // 11 | // 12 | // -- This is a parent command -- 13 | // Cypress.Commands.add("login", (email, password) => { ... }) 14 | // 15 | // 16 | // -- This is a child command -- 17 | // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) 18 | // 19 | // 20 | // -- This is a dual command -- 21 | // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) 22 | // 23 | // 24 | // -- This is will overwrite an existing command -- 25 | // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) 26 | -------------------------------------------------------------------------------- /template/web/cypress/support/index.js: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands' 18 | 19 | // Alternatively you can use CommonJS syntax: 20 | // require('./commands') 21 | -------------------------------------------------------------------------------- /template/web/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sanity-sapper-blog-web", 3 | "version": "0.0.21", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.5.5", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", 10 | "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", 11 | "dev": true, 12 | "requires": { 13 | "@babel/highlight": "^7.0.0" 14 | } 15 | }, 16 | "@babel/core": { 17 | "version": "7.7.7", 18 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", 19 | "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", 20 | "dev": true, 21 | "requires": { 22 | "@babel/code-frame": "^7.5.5", 23 | "@babel/generator": "^7.7.7", 24 | "@babel/helpers": "^7.7.4", 25 | "@babel/parser": "^7.7.7", 26 | "@babel/template": "^7.7.4", 27 | "@babel/traverse": "^7.7.4", 28 | "@babel/types": "^7.7.4", 29 | "convert-source-map": "^1.7.0", 30 | "debug": "^4.1.0", 31 | "json5": "^2.1.0", 32 | "lodash": "^4.17.13", 33 | "resolve": "^1.3.2", 34 | "semver": "^5.4.1", 35 | "source-map": "^0.5.0" 36 | }, 37 | "dependencies": { 38 | "debug": { 39 | "version": "4.1.1", 40 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 41 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 42 | "dev": true, 43 | "requires": { 44 | "ms": "^2.1.1" 45 | } 46 | }, 47 | "json5": { 48 | "version": "2.1.1", 49 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", 50 | "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", 51 | "dev": true, 52 | "requires": { 53 | "minimist": "^1.2.0" 54 | }, 55 | "dependencies": { 56 | "minimist": { 57 | "version": "1.2.5", 58 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 59 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 60 | "dev": true 61 | } 62 | } 63 | }, 64 | "ms": { 65 | "version": "2.1.2", 66 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 67 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 68 | "dev": true 69 | }, 70 | "source-map": { 71 | "version": "0.5.7", 72 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 73 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 74 | "dev": true 75 | } 76 | } 77 | }, 78 | "@babel/generator": { 79 | "version": "7.7.7", 80 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", 81 | "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", 82 | "dev": true, 83 | "requires": { 84 | "@babel/types": "^7.7.4", 85 | "jsesc": "^2.5.1", 86 | "lodash": "^4.17.13", 87 | "source-map": "^0.5.0" 88 | }, 89 | "dependencies": { 90 | "source-map": { 91 | "version": "0.5.7", 92 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 93 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 94 | "dev": true 95 | } 96 | } 97 | }, 98 | "@babel/helper-annotate-as-pure": { 99 | "version": "7.7.4", 100 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", 101 | "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", 102 | "dev": true, 103 | "requires": { 104 | "@babel/types": "^7.7.4" 105 | } 106 | }, 107 | "@babel/helper-builder-binary-assignment-operator-visitor": { 108 | "version": "7.7.4", 109 | "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", 110 | "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", 111 | "dev": true, 112 | "requires": { 113 | "@babel/helper-explode-assignable-expression": "^7.7.4", 114 | "@babel/types": "^7.7.4" 115 | } 116 | }, 117 | "@babel/helper-call-delegate": { 118 | "version": "7.7.4", 119 | "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.7.4.tgz", 120 | "integrity": "sha512-8JH9/B7J7tCYJ2PpWVpw9JhPuEVHztagNVuQAFBVFYluRMlpG7F1CgKEgGeL6KFqcsIa92ZYVj6DSc0XwmN1ZA==", 121 | "dev": true, 122 | "requires": { 123 | "@babel/helper-hoist-variables": "^7.7.4", 124 | "@babel/traverse": "^7.7.4", 125 | "@babel/types": "^7.7.4" 126 | } 127 | }, 128 | "@babel/helper-create-regexp-features-plugin": { 129 | "version": "7.7.4", 130 | "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", 131 | "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", 132 | "dev": true, 133 | "requires": { 134 | "@babel/helper-regex": "^7.4.4", 135 | "regexpu-core": "^4.6.0" 136 | } 137 | }, 138 | "@babel/helper-define-map": { 139 | "version": "7.7.4", 140 | "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.7.4.tgz", 141 | "integrity": "sha512-v5LorqOa0nVQUvAUTUF3KPastvUt/HzByXNamKQ6RdJRTV7j8rLL+WB5C/MzzWAwOomxDhYFb1wLLxHqox86lg==", 142 | "dev": true, 143 | "requires": { 144 | "@babel/helper-function-name": "^7.7.4", 145 | "@babel/types": "^7.7.4", 146 | "lodash": "^4.17.13" 147 | } 148 | }, 149 | "@babel/helper-explode-assignable-expression": { 150 | "version": "7.7.4", 151 | "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", 152 | "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", 153 | "dev": true, 154 | "requires": { 155 | "@babel/traverse": "^7.7.4", 156 | "@babel/types": "^7.7.4" 157 | } 158 | }, 159 | "@babel/helper-function-name": { 160 | "version": "7.7.4", 161 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", 162 | "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", 163 | "dev": true, 164 | "requires": { 165 | "@babel/helper-get-function-arity": "^7.7.4", 166 | "@babel/template": "^7.7.4", 167 | "@babel/types": "^7.7.4" 168 | } 169 | }, 170 | "@babel/helper-get-function-arity": { 171 | "version": "7.7.4", 172 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", 173 | "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", 174 | "dev": true, 175 | "requires": { 176 | "@babel/types": "^7.7.4" 177 | } 178 | }, 179 | "@babel/helper-hoist-variables": { 180 | "version": "7.7.4", 181 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.7.4.tgz", 182 | "integrity": "sha512-wQC4xyvc1Jo/FnLirL6CEgPgPCa8M74tOdjWpRhQYapz5JC7u3NYU1zCVoVAGCE3EaIP9T1A3iW0WLJ+reZlpQ==", 183 | "dev": true, 184 | "requires": { 185 | "@babel/types": "^7.7.4" 186 | } 187 | }, 188 | "@babel/helper-member-expression-to-functions": { 189 | "version": "7.7.4", 190 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.7.4.tgz", 191 | "integrity": "sha512-9KcA1X2E3OjXl/ykfMMInBK+uVdfIVakVe7W7Lg3wfXUNyS3Q1HWLFRwZIjhqiCGbslummPDnmb7vIekS0C1vw==", 192 | "dev": true, 193 | "requires": { 194 | "@babel/types": "^7.7.4" 195 | } 196 | }, 197 | "@babel/helper-module-imports": { 198 | "version": "7.7.4", 199 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", 200 | "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", 201 | "dev": true, 202 | "requires": { 203 | "@babel/types": "^7.7.4" 204 | } 205 | }, 206 | "@babel/helper-module-transforms": { 207 | "version": "7.7.5", 208 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", 209 | "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", 210 | "dev": true, 211 | "requires": { 212 | "@babel/helper-module-imports": "^7.7.4", 213 | "@babel/helper-simple-access": "^7.7.4", 214 | "@babel/helper-split-export-declaration": "^7.7.4", 215 | "@babel/template": "^7.7.4", 216 | "@babel/types": "^7.7.4", 217 | "lodash": "^4.17.13" 218 | } 219 | }, 220 | "@babel/helper-optimise-call-expression": { 221 | "version": "7.7.4", 222 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.7.4.tgz", 223 | "integrity": "sha512-VB7gWZ2fDkSuqW6b1AKXkJWO5NyNI3bFL/kK79/30moK57blr6NbH8xcl2XcKCwOmJosftWunZqfO84IGq3ZZg==", 224 | "dev": true, 225 | "requires": { 226 | "@babel/types": "^7.7.4" 227 | } 228 | }, 229 | "@babel/helper-plugin-utils": { 230 | "version": "7.0.0", 231 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", 232 | "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", 233 | "dev": true 234 | }, 235 | "@babel/helper-regex": { 236 | "version": "7.5.5", 237 | "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", 238 | "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", 239 | "dev": true, 240 | "requires": { 241 | "lodash": "^4.17.13" 242 | } 243 | }, 244 | "@babel/helper-remap-async-to-generator": { 245 | "version": "7.7.4", 246 | "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", 247 | "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", 248 | "dev": true, 249 | "requires": { 250 | "@babel/helper-annotate-as-pure": "^7.7.4", 251 | "@babel/helper-wrap-function": "^7.7.4", 252 | "@babel/template": "^7.7.4", 253 | "@babel/traverse": "^7.7.4", 254 | "@babel/types": "^7.7.4" 255 | } 256 | }, 257 | "@babel/helper-replace-supers": { 258 | "version": "7.7.4", 259 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.7.4.tgz", 260 | "integrity": "sha512-pP0tfgg9hsZWo5ZboYGuBn/bbYT/hdLPVSS4NMmiRJdwWhP0IznPwN9AE1JwyGsjSPLC364I0Qh5p+EPkGPNpg==", 261 | "dev": true, 262 | "requires": { 263 | "@babel/helper-member-expression-to-functions": "^7.7.4", 264 | "@babel/helper-optimise-call-expression": "^7.7.4", 265 | "@babel/traverse": "^7.7.4", 266 | "@babel/types": "^7.7.4" 267 | } 268 | }, 269 | "@babel/helper-simple-access": { 270 | "version": "7.7.4", 271 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", 272 | "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", 273 | "dev": true, 274 | "requires": { 275 | "@babel/template": "^7.7.4", 276 | "@babel/types": "^7.7.4" 277 | } 278 | }, 279 | "@babel/helper-split-export-declaration": { 280 | "version": "7.7.4", 281 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", 282 | "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", 283 | "dev": true, 284 | "requires": { 285 | "@babel/types": "^7.7.4" 286 | } 287 | }, 288 | "@babel/helper-wrap-function": { 289 | "version": "7.7.4", 290 | "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", 291 | "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", 292 | "dev": true, 293 | "requires": { 294 | "@babel/helper-function-name": "^7.7.4", 295 | "@babel/template": "^7.7.4", 296 | "@babel/traverse": "^7.7.4", 297 | "@babel/types": "^7.7.4" 298 | } 299 | }, 300 | "@babel/helpers": { 301 | "version": "7.7.4", 302 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", 303 | "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", 304 | "dev": true, 305 | "requires": { 306 | "@babel/template": "^7.7.4", 307 | "@babel/traverse": "^7.7.4", 308 | "@babel/types": "^7.7.4" 309 | } 310 | }, 311 | "@babel/highlight": { 312 | "version": "7.5.0", 313 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", 314 | "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", 315 | "dev": true, 316 | "requires": { 317 | "chalk": "^2.0.0", 318 | "esutils": "^2.0.2", 319 | "js-tokens": "^4.0.0" 320 | } 321 | }, 322 | "@babel/parser": { 323 | "version": "7.7.7", 324 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", 325 | "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", 326 | "dev": true 327 | }, 328 | "@babel/plugin-proposal-async-generator-functions": { 329 | "version": "7.7.4", 330 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", 331 | "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", 332 | "dev": true, 333 | "requires": { 334 | "@babel/helper-plugin-utils": "^7.0.0", 335 | "@babel/helper-remap-async-to-generator": "^7.7.4", 336 | "@babel/plugin-syntax-async-generators": "^7.7.4" 337 | } 338 | }, 339 | "@babel/plugin-proposal-dynamic-import": { 340 | "version": "7.7.4", 341 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.7.4.tgz", 342 | "integrity": "sha512-StH+nGAdO6qDB1l8sZ5UBV8AC3F2VW2I8Vfld73TMKyptMU9DY5YsJAS8U81+vEtxcH3Y/La0wG0btDrhpnhjQ==", 343 | "dev": true, 344 | "requires": { 345 | "@babel/helper-plugin-utils": "^7.0.0", 346 | "@babel/plugin-syntax-dynamic-import": "^7.7.4" 347 | } 348 | }, 349 | "@babel/plugin-proposal-json-strings": { 350 | "version": "7.7.4", 351 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.7.4.tgz", 352 | "integrity": "sha512-wQvt3akcBTfLU/wYoqm/ws7YOAQKu8EVJEvHip/mzkNtjaclQoCCIqKXFP5/eyfnfbQCDV3OLRIK3mIVyXuZlw==", 353 | "dev": true, 354 | "requires": { 355 | "@babel/helper-plugin-utils": "^7.0.0", 356 | "@babel/plugin-syntax-json-strings": "^7.7.4" 357 | } 358 | }, 359 | "@babel/plugin-proposal-object-rest-spread": { 360 | "version": "7.7.7", 361 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", 362 | "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", 363 | "dev": true, 364 | "requires": { 365 | "@babel/helper-plugin-utils": "^7.0.0", 366 | "@babel/plugin-syntax-object-rest-spread": "^7.7.4" 367 | } 368 | }, 369 | "@babel/plugin-proposal-optional-catch-binding": { 370 | "version": "7.7.4", 371 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", 372 | "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", 373 | "dev": true, 374 | "requires": { 375 | "@babel/helper-plugin-utils": "^7.0.0", 376 | "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" 377 | } 378 | }, 379 | "@babel/plugin-proposal-unicode-property-regex": { 380 | "version": "7.7.7", 381 | "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.7.7.tgz", 382 | "integrity": "sha512-80PbkKyORBUVm1fbTLrHpYdJxMThzM1UqFGh0ALEhO9TYbG86Ah9zQYAB/84axz2vcxefDLdZwWwZNlYARlu9w==", 383 | "dev": true, 384 | "requires": { 385 | "@babel/helper-create-regexp-features-plugin": "^7.7.4", 386 | "@babel/helper-plugin-utils": "^7.0.0" 387 | } 388 | }, 389 | "@babel/plugin-syntax-async-generators": { 390 | "version": "7.7.4", 391 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", 392 | "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", 393 | "dev": true, 394 | "requires": { 395 | "@babel/helper-plugin-utils": "^7.0.0" 396 | } 397 | }, 398 | "@babel/plugin-syntax-dynamic-import": { 399 | "version": "7.7.4", 400 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.7.4.tgz", 401 | "integrity": "sha512-jHQW0vbRGvwQNgyVxwDh4yuXu4bH1f5/EICJLAhl1SblLs2CDhrsmCk+v5XLdE9wxtAFRyxx+P//Iw+a5L/tTg==", 402 | "dev": true, 403 | "requires": { 404 | "@babel/helper-plugin-utils": "^7.0.0" 405 | } 406 | }, 407 | "@babel/plugin-syntax-json-strings": { 408 | "version": "7.7.4", 409 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.7.4.tgz", 410 | "integrity": "sha512-QpGupahTQW1mHRXddMG5srgpHWqRLwJnJZKXTigB9RPFCCGbDGCgBeM/iC82ICXp414WeYx/tD54w7M2qRqTMg==", 411 | "dev": true, 412 | "requires": { 413 | "@babel/helper-plugin-utils": "^7.0.0" 414 | } 415 | }, 416 | "@babel/plugin-syntax-object-rest-spread": { 417 | "version": "7.7.4", 418 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", 419 | "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", 420 | "dev": true, 421 | "requires": { 422 | "@babel/helper-plugin-utils": "^7.0.0" 423 | } 424 | }, 425 | "@babel/plugin-syntax-optional-catch-binding": { 426 | "version": "7.7.4", 427 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", 428 | "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", 429 | "dev": true, 430 | "requires": { 431 | "@babel/helper-plugin-utils": "^7.0.0" 432 | } 433 | }, 434 | "@babel/plugin-syntax-top-level-await": { 435 | "version": "7.7.4", 436 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.7.4.tgz", 437 | "integrity": "sha512-wdsOw0MvkL1UIgiQ/IFr3ETcfv1xb8RMM0H9wbiDyLaJFyiDg5oZvDLCXosIXmFeIlweML5iOBXAkqddkYNizg==", 438 | "dev": true, 439 | "requires": { 440 | "@babel/helper-plugin-utils": "^7.0.0" 441 | } 442 | }, 443 | "@babel/plugin-transform-arrow-functions": { 444 | "version": "7.7.4", 445 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.7.4.tgz", 446 | "integrity": "sha512-zUXy3e8jBNPiffmqkHRNDdZM2r8DWhCB7HhcoyZjiK1TxYEluLHAvQuYnTT+ARqRpabWqy/NHkO6e3MsYB5YfA==", 447 | "dev": true, 448 | "requires": { 449 | "@babel/helper-plugin-utils": "^7.0.0" 450 | } 451 | }, 452 | "@babel/plugin-transform-async-to-generator": { 453 | "version": "7.7.4", 454 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", 455 | "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", 456 | "dev": true, 457 | "requires": { 458 | "@babel/helper-module-imports": "^7.7.4", 459 | "@babel/helper-plugin-utils": "^7.0.0", 460 | "@babel/helper-remap-async-to-generator": "^7.7.4" 461 | } 462 | }, 463 | "@babel/plugin-transform-block-scoped-functions": { 464 | "version": "7.7.4", 465 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.7.4.tgz", 466 | "integrity": "sha512-kqtQzwtKcpPclHYjLK//3lH8OFsCDuDJBaFhVwf8kqdnF6MN4l618UDlcA7TfRs3FayrHj+svYnSX8MC9zmUyQ==", 467 | "dev": true, 468 | "requires": { 469 | "@babel/helper-plugin-utils": "^7.0.0" 470 | } 471 | }, 472 | "@babel/plugin-transform-block-scoping": { 473 | "version": "7.7.4", 474 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.7.4.tgz", 475 | "integrity": "sha512-2VBe9u0G+fDt9B5OV5DQH4KBf5DoiNkwFKOz0TCvBWvdAN2rOykCTkrL+jTLxfCAm76l9Qo5OqL7HBOx2dWggg==", 476 | "dev": true, 477 | "requires": { 478 | "@babel/helper-plugin-utils": "^7.0.0", 479 | "lodash": "^4.17.13" 480 | } 481 | }, 482 | "@babel/plugin-transform-classes": { 483 | "version": "7.7.4", 484 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.7.4.tgz", 485 | "integrity": "sha512-sK1mjWat7K+buWRuImEzjNf68qrKcrddtpQo3swi9j7dUcG6y6R6+Di039QN2bD1dykeswlagupEmpOatFHHUg==", 486 | "dev": true, 487 | "requires": { 488 | "@babel/helper-annotate-as-pure": "^7.7.4", 489 | "@babel/helper-define-map": "^7.7.4", 490 | "@babel/helper-function-name": "^7.7.4", 491 | "@babel/helper-optimise-call-expression": "^7.7.4", 492 | "@babel/helper-plugin-utils": "^7.0.0", 493 | "@babel/helper-replace-supers": "^7.7.4", 494 | "@babel/helper-split-export-declaration": "^7.7.4", 495 | "globals": "^11.1.0" 496 | } 497 | }, 498 | "@babel/plugin-transform-computed-properties": { 499 | "version": "7.7.4", 500 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.7.4.tgz", 501 | "integrity": "sha512-bSNsOsZnlpLLyQew35rl4Fma3yKWqK3ImWMSC/Nc+6nGjC9s5NFWAer1YQ899/6s9HxO2zQC1WoFNfkOqRkqRQ==", 502 | "dev": true, 503 | "requires": { 504 | "@babel/helper-plugin-utils": "^7.0.0" 505 | } 506 | }, 507 | "@babel/plugin-transform-destructuring": { 508 | "version": "7.7.4", 509 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.7.4.tgz", 510 | "integrity": "sha512-4jFMXI1Cu2aXbcXXl8Lr6YubCn6Oc7k9lLsu8v61TZh+1jny2BWmdtvY9zSUlLdGUvcy9DMAWyZEOqjsbeg/wA==", 511 | "dev": true, 512 | "requires": { 513 | "@babel/helper-plugin-utils": "^7.0.0" 514 | } 515 | }, 516 | "@babel/plugin-transform-dotall-regex": { 517 | "version": "7.7.7", 518 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", 519 | "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", 520 | "dev": true, 521 | "requires": { 522 | "@babel/helper-create-regexp-features-plugin": "^7.7.4", 523 | "@babel/helper-plugin-utils": "^7.0.0" 524 | } 525 | }, 526 | "@babel/plugin-transform-duplicate-keys": { 527 | "version": "7.7.4", 528 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.7.4.tgz", 529 | "integrity": "sha512-g1y4/G6xGWMD85Tlft5XedGaZBCIVN+/P0bs6eabmcPP9egFleMAo65OOjlhcz1njpwagyY3t0nsQC9oTFegJA==", 530 | "dev": true, 531 | "requires": { 532 | "@babel/helper-plugin-utils": "^7.0.0" 533 | } 534 | }, 535 | "@babel/plugin-transform-exponentiation-operator": { 536 | "version": "7.7.4", 537 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", 538 | "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", 539 | "dev": true, 540 | "requires": { 541 | "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", 542 | "@babel/helper-plugin-utils": "^7.0.0" 543 | } 544 | }, 545 | "@babel/plugin-transform-for-of": { 546 | "version": "7.7.4", 547 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.7.4.tgz", 548 | "integrity": "sha512-zZ1fD1B8keYtEcKF+M1TROfeHTKnijcVQm0yO/Yu1f7qoDoxEIc/+GX6Go430Bg84eM/xwPFp0+h4EbZg7epAA==", 549 | "dev": true, 550 | "requires": { 551 | "@babel/helper-plugin-utils": "^7.0.0" 552 | } 553 | }, 554 | "@babel/plugin-transform-function-name": { 555 | "version": "7.7.4", 556 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.7.4.tgz", 557 | "integrity": "sha512-E/x09TvjHNhsULs2IusN+aJNRV5zKwxu1cpirZyRPw+FyyIKEHPXTsadj48bVpc1R5Qq1B5ZkzumuFLytnbT6g==", 558 | "dev": true, 559 | "requires": { 560 | "@babel/helper-function-name": "^7.7.4", 561 | "@babel/helper-plugin-utils": "^7.0.0" 562 | } 563 | }, 564 | "@babel/plugin-transform-literals": { 565 | "version": "7.7.4", 566 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.7.4.tgz", 567 | "integrity": "sha512-X2MSV7LfJFm4aZfxd0yLVFrEXAgPqYoDG53Br/tCKiKYfX0MjVjQeWPIhPHHsCqzwQANq+FLN786fF5rgLS+gw==", 568 | "dev": true, 569 | "requires": { 570 | "@babel/helper-plugin-utils": "^7.0.0" 571 | } 572 | }, 573 | "@babel/plugin-transform-member-expression-literals": { 574 | "version": "7.7.4", 575 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.7.4.tgz", 576 | "integrity": "sha512-9VMwMO7i69LHTesL0RdGy93JU6a+qOPuvB4F4d0kR0zyVjJRVJRaoaGjhtki6SzQUu8yen/vxPKN6CWnCUw6bA==", 577 | "dev": true, 578 | "requires": { 579 | "@babel/helper-plugin-utils": "^7.0.0" 580 | } 581 | }, 582 | "@babel/plugin-transform-modules-amd": { 583 | "version": "7.7.5", 584 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.7.5.tgz", 585 | "integrity": "sha512-CT57FG4A2ZUNU1v+HdvDSDrjNWBrtCmSH6YbbgN3Lrf0Di/q/lWRxZrE72p3+HCCz9UjfZOEBdphgC0nzOS6DQ==", 586 | "dev": true, 587 | "requires": { 588 | "@babel/helper-module-transforms": "^7.7.5", 589 | "@babel/helper-plugin-utils": "^7.0.0", 590 | "babel-plugin-dynamic-import-node": "^2.3.0" 591 | } 592 | }, 593 | "@babel/plugin-transform-modules-commonjs": { 594 | "version": "7.7.5", 595 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", 596 | "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", 597 | "dev": true, 598 | "requires": { 599 | "@babel/helper-module-transforms": "^7.7.5", 600 | "@babel/helper-plugin-utils": "^7.0.0", 601 | "@babel/helper-simple-access": "^7.7.4", 602 | "babel-plugin-dynamic-import-node": "^2.3.0" 603 | } 604 | }, 605 | "@babel/plugin-transform-modules-systemjs": { 606 | "version": "7.7.4", 607 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.7.4.tgz", 608 | "integrity": "sha512-y2c96hmcsUi6LrMqvmNDPBBiGCiQu0aYqpHatVVu6kD4mFEXKjyNxd/drc18XXAf9dv7UXjrZwBVmTTGaGP8iw==", 609 | "dev": true, 610 | "requires": { 611 | "@babel/helper-hoist-variables": "^7.7.4", 612 | "@babel/helper-plugin-utils": "^7.0.0", 613 | "babel-plugin-dynamic-import-node": "^2.3.0" 614 | } 615 | }, 616 | "@babel/plugin-transform-modules-umd": { 617 | "version": "7.7.4", 618 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.7.4.tgz", 619 | "integrity": "sha512-u2B8TIi0qZI4j8q4C51ktfO7E3cQ0qnaXFI1/OXITordD40tt17g/sXqgNNCcMTcBFKrUPcGDx+TBJuZxLx7tw==", 620 | "dev": true, 621 | "requires": { 622 | "@babel/helper-module-transforms": "^7.7.4", 623 | "@babel/helper-plugin-utils": "^7.0.0" 624 | } 625 | }, 626 | "@babel/plugin-transform-named-capturing-groups-regex": { 627 | "version": "7.7.4", 628 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.7.4.tgz", 629 | "integrity": "sha512-jBUkiqLKvUWpv9GLSuHUFYdmHg0ujC1JEYoZUfeOOfNydZXp1sXObgyPatpcwjWgsdBGsagWW0cdJpX/DO2jMw==", 630 | "dev": true, 631 | "requires": { 632 | "@babel/helper-create-regexp-features-plugin": "^7.7.4" 633 | } 634 | }, 635 | "@babel/plugin-transform-new-target": { 636 | "version": "7.7.4", 637 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.7.4.tgz", 638 | "integrity": "sha512-CnPRiNtOG1vRodnsyGX37bHQleHE14B9dnnlgSeEs3ek3fHN1A1SScglTCg1sfbe7sRQ2BUcpgpTpWSfMKz3gg==", 639 | "dev": true, 640 | "requires": { 641 | "@babel/helper-plugin-utils": "^7.0.0" 642 | } 643 | }, 644 | "@babel/plugin-transform-object-super": { 645 | "version": "7.7.4", 646 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.7.4.tgz", 647 | "integrity": "sha512-ho+dAEhC2aRnff2JCA0SAK7V2R62zJd/7dmtoe7MHcso4C2mS+vZjn1Pb1pCVZvJs1mgsvv5+7sT+m3Bysb6eg==", 648 | "dev": true, 649 | "requires": { 650 | "@babel/helper-plugin-utils": "^7.0.0", 651 | "@babel/helper-replace-supers": "^7.7.4" 652 | } 653 | }, 654 | "@babel/plugin-transform-parameters": { 655 | "version": "7.7.7", 656 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.7.7.tgz", 657 | "integrity": "sha512-OhGSrf9ZBrr1fw84oFXj5hgi8Nmg+E2w5L7NhnG0lPvpDtqd7dbyilM2/vR8CKbJ907RyxPh2kj6sBCSSfI9Ew==", 658 | "dev": true, 659 | "requires": { 660 | "@babel/helper-call-delegate": "^7.7.4", 661 | "@babel/helper-get-function-arity": "^7.7.4", 662 | "@babel/helper-plugin-utils": "^7.0.0" 663 | } 664 | }, 665 | "@babel/plugin-transform-property-literals": { 666 | "version": "7.7.4", 667 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.7.4.tgz", 668 | "integrity": "sha512-MatJhlC4iHsIskWYyawl53KuHrt+kALSADLQQ/HkhTjX954fkxIEh4q5slL4oRAnsm/eDoZ4q0CIZpcqBuxhJQ==", 669 | "dev": true, 670 | "requires": { 671 | "@babel/helper-plugin-utils": "^7.0.0" 672 | } 673 | }, 674 | "@babel/plugin-transform-regenerator": { 675 | "version": "7.7.5", 676 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.7.5.tgz", 677 | "integrity": "sha512-/8I8tPvX2FkuEyWbjRCt4qTAgZK0DVy8QRguhA524UH48RfGJy94On2ri+dCuwOpcerPRl9O4ebQkRcVzIaGBw==", 678 | "dev": true, 679 | "requires": { 680 | "regenerator-transform": "^0.14.0" 681 | } 682 | }, 683 | "@babel/plugin-transform-reserved-words": { 684 | "version": "7.7.4", 685 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.7.4.tgz", 686 | "integrity": "sha512-OrPiUB5s5XvkCO1lS7D8ZtHcswIC57j62acAnJZKqGGnHP+TIc/ljQSrgdX/QyOTdEK5COAhuc820Hi1q2UgLQ==", 687 | "dev": true, 688 | "requires": { 689 | "@babel/helper-plugin-utils": "^7.0.0" 690 | } 691 | }, 692 | "@babel/plugin-transform-runtime": { 693 | "version": "7.7.6", 694 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.7.6.tgz", 695 | "integrity": "sha512-tajQY+YmXR7JjTwRvwL4HePqoL3DYxpYXIHKVvrOIvJmeHe2y1w4tz5qz9ObUDC9m76rCzIMPyn4eERuwA4a4A==", 696 | "dev": true, 697 | "requires": { 698 | "@babel/helper-module-imports": "^7.7.4", 699 | "@babel/helper-plugin-utils": "^7.0.0", 700 | "resolve": "^1.8.1", 701 | "semver": "^5.5.1" 702 | } 703 | }, 704 | "@babel/plugin-transform-shorthand-properties": { 705 | "version": "7.7.4", 706 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.7.4.tgz", 707 | "integrity": "sha512-q+suddWRfIcnyG5YiDP58sT65AJDZSUhXQDZE3r04AuqD6d/XLaQPPXSBzP2zGerkgBivqtQm9XKGLuHqBID6Q==", 708 | "dev": true, 709 | "requires": { 710 | "@babel/helper-plugin-utils": "^7.0.0" 711 | } 712 | }, 713 | "@babel/plugin-transform-spread": { 714 | "version": "7.7.4", 715 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.7.4.tgz", 716 | "integrity": "sha512-8OSs0FLe5/80cndziPlg4R0K6HcWSM0zyNhHhLsmw/Nc5MaA49cAsnoJ/t/YZf8qkG7fD+UjTRaApVDB526d7Q==", 717 | "dev": true, 718 | "requires": { 719 | "@babel/helper-plugin-utils": "^7.0.0" 720 | } 721 | }, 722 | "@babel/plugin-transform-sticky-regex": { 723 | "version": "7.7.4", 724 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.7.4.tgz", 725 | "integrity": "sha512-Ls2NASyL6qtVe1H1hXts9yuEeONV2TJZmplLONkMPUG158CtmnrzW5Q5teibM5UVOFjG0D3IC5mzXR6pPpUY7A==", 726 | "dev": true, 727 | "requires": { 728 | "@babel/helper-plugin-utils": "^7.0.0", 729 | "@babel/helper-regex": "^7.0.0" 730 | } 731 | }, 732 | "@babel/plugin-transform-template-literals": { 733 | "version": "7.7.4", 734 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.7.4.tgz", 735 | "integrity": "sha512-sA+KxLwF3QwGj5abMHkHgshp9+rRz+oY9uoRil4CyLtgEuE/88dpkeWgNk5qKVsJE9iSfly3nvHapdRiIS2wnQ==", 736 | "dev": true, 737 | "requires": { 738 | "@babel/helper-annotate-as-pure": "^7.7.4", 739 | "@babel/helper-plugin-utils": "^7.0.0" 740 | } 741 | }, 742 | "@babel/plugin-transform-typeof-symbol": { 743 | "version": "7.7.4", 744 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.7.4.tgz", 745 | "integrity": "sha512-KQPUQ/7mqe2m0B8VecdyaW5XcQYaePyl9R7IsKd+irzj6jvbhoGnRE+M0aNkyAzI07VfUQ9266L5xMARitV3wg==", 746 | "dev": true, 747 | "requires": { 748 | "@babel/helper-plugin-utils": "^7.0.0" 749 | } 750 | }, 751 | "@babel/plugin-transform-unicode-regex": { 752 | "version": "7.7.4", 753 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.4.tgz", 754 | "integrity": "sha512-N77UUIV+WCvE+5yHw+oks3m18/umd7y392Zv7mYTpFqHtkpcc+QUz+gLJNTWVlWROIWeLqY0f3OjZxV5TcXnRw==", 755 | "dev": true, 756 | "requires": { 757 | "@babel/helper-create-regexp-features-plugin": "^7.7.4", 758 | "@babel/helper-plugin-utils": "^7.0.0" 759 | } 760 | }, 761 | "@babel/preset-env": { 762 | "version": "7.7.7", 763 | "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.7.7.tgz", 764 | "integrity": "sha512-pCu0hrSSDVI7kCVUOdcMNQEbOPJ52E+LrQ14sN8uL2ALfSqePZQlKrOy+tM4uhEdYlCHi4imr8Zz2cZe9oSdIg==", 765 | "dev": true, 766 | "requires": { 767 | "@babel/helper-module-imports": "^7.7.4", 768 | "@babel/helper-plugin-utils": "^7.0.0", 769 | "@babel/plugin-proposal-async-generator-functions": "^7.7.4", 770 | "@babel/plugin-proposal-dynamic-import": "^7.7.4", 771 | "@babel/plugin-proposal-json-strings": "^7.7.4", 772 | "@babel/plugin-proposal-object-rest-spread": "^7.7.7", 773 | "@babel/plugin-proposal-optional-catch-binding": "^7.7.4", 774 | "@babel/plugin-proposal-unicode-property-regex": "^7.7.7", 775 | "@babel/plugin-syntax-async-generators": "^7.7.4", 776 | "@babel/plugin-syntax-dynamic-import": "^7.7.4", 777 | "@babel/plugin-syntax-json-strings": "^7.7.4", 778 | "@babel/plugin-syntax-object-rest-spread": "^7.7.4", 779 | "@babel/plugin-syntax-optional-catch-binding": "^7.7.4", 780 | "@babel/plugin-syntax-top-level-await": "^7.7.4", 781 | "@babel/plugin-transform-arrow-functions": "^7.7.4", 782 | "@babel/plugin-transform-async-to-generator": "^7.7.4", 783 | "@babel/plugin-transform-block-scoped-functions": "^7.7.4", 784 | "@babel/plugin-transform-block-scoping": "^7.7.4", 785 | "@babel/plugin-transform-classes": "^7.7.4", 786 | "@babel/plugin-transform-computed-properties": "^7.7.4", 787 | "@babel/plugin-transform-destructuring": "^7.7.4", 788 | "@babel/plugin-transform-dotall-regex": "^7.7.7", 789 | "@babel/plugin-transform-duplicate-keys": "^7.7.4", 790 | "@babel/plugin-transform-exponentiation-operator": "^7.7.4", 791 | "@babel/plugin-transform-for-of": "^7.7.4", 792 | "@babel/plugin-transform-function-name": "^7.7.4", 793 | "@babel/plugin-transform-literals": "^7.7.4", 794 | "@babel/plugin-transform-member-expression-literals": "^7.7.4", 795 | "@babel/plugin-transform-modules-amd": "^7.7.5", 796 | "@babel/plugin-transform-modules-commonjs": "^7.7.5", 797 | "@babel/plugin-transform-modules-systemjs": "^7.7.4", 798 | "@babel/plugin-transform-modules-umd": "^7.7.4", 799 | "@babel/plugin-transform-named-capturing-groups-regex": "^7.7.4", 800 | "@babel/plugin-transform-new-target": "^7.7.4", 801 | "@babel/plugin-transform-object-super": "^7.7.4", 802 | "@babel/plugin-transform-parameters": "^7.7.7", 803 | "@babel/plugin-transform-property-literals": "^7.7.4", 804 | "@babel/plugin-transform-regenerator": "^7.7.5", 805 | "@babel/plugin-transform-reserved-words": "^7.7.4", 806 | "@babel/plugin-transform-shorthand-properties": "^7.7.4", 807 | "@babel/plugin-transform-spread": "^7.7.4", 808 | "@babel/plugin-transform-sticky-regex": "^7.7.4", 809 | "@babel/plugin-transform-template-literals": "^7.7.4", 810 | "@babel/plugin-transform-typeof-symbol": "^7.7.4", 811 | "@babel/plugin-transform-unicode-regex": "^7.7.4", 812 | "@babel/types": "^7.7.4", 813 | "browserslist": "^4.6.0", 814 | "core-js-compat": "^3.6.0", 815 | "invariant": "^2.2.2", 816 | "js-levenshtein": "^1.1.3", 817 | "semver": "^5.5.0" 818 | } 819 | }, 820 | "@babel/runtime": { 821 | "version": "7.7.7", 822 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.7.tgz", 823 | "integrity": "sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA==", 824 | "dev": true, 825 | "requires": { 826 | "regenerator-runtime": "^0.13.2" 827 | } 828 | }, 829 | "@babel/template": { 830 | "version": "7.7.4", 831 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", 832 | "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", 833 | "dev": true, 834 | "requires": { 835 | "@babel/code-frame": "^7.0.0", 836 | "@babel/parser": "^7.7.4", 837 | "@babel/types": "^7.7.4" 838 | } 839 | }, 840 | "@babel/traverse": { 841 | "version": "7.7.4", 842 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", 843 | "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", 844 | "dev": true, 845 | "requires": { 846 | "@babel/code-frame": "^7.5.5", 847 | "@babel/generator": "^7.7.4", 848 | "@babel/helper-function-name": "^7.7.4", 849 | "@babel/helper-split-export-declaration": "^7.7.4", 850 | "@babel/parser": "^7.7.4", 851 | "@babel/types": "^7.7.4", 852 | "debug": "^4.1.0", 853 | "globals": "^11.1.0", 854 | "lodash": "^4.17.13" 855 | }, 856 | "dependencies": { 857 | "debug": { 858 | "version": "4.1.1", 859 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 860 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 861 | "dev": true, 862 | "requires": { 863 | "ms": "^2.1.1" 864 | } 865 | }, 866 | "ms": { 867 | "version": "2.1.2", 868 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 869 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 870 | "dev": true 871 | } 872 | } 873 | }, 874 | "@babel/types": { 875 | "version": "7.7.4", 876 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", 877 | "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", 878 | "dev": true, 879 | "requires": { 880 | "esutils": "^2.0.2", 881 | "lodash": "^4.17.13", 882 | "to-fast-properties": "^2.0.0" 883 | } 884 | }, 885 | "@movingbrands/svelte-portable-text": { 886 | "version": "0.0.7", 887 | "resolved": "https://registry.npmjs.org/@movingbrands/svelte-portable-text/-/svelte-portable-text-0.0.7.tgz", 888 | "integrity": "sha512-77BFCCwBrjWbsNBH4grkZ6MWRgdpHi2KSoAeeSMteY43X1jcmm1BRrnPkhzzPA55GMtOOyFIE79uadpPRU9IiA==", 889 | "dev": true 890 | }, 891 | "@polka/url": { 892 | "version": "1.0.0-next.11", 893 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.11.tgz", 894 | "integrity": "sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==" 895 | }, 896 | "@rexxars/eventsource-polyfill": { 897 | "version": "1.0.0", 898 | "resolved": "https://registry.npmjs.org/@rexxars/eventsource-polyfill/-/eventsource-polyfill-1.0.0.tgz", 899 | "integrity": "sha512-YnrybIoM9WFqmeK1D8p/gutqjJnmXCVFWAU3ucka9M7Dzpen3f2Dy4KsC6k1wDHrCtHQuUHHwZovh3i5UPDaZw==" 900 | }, 901 | "@rollup/plugin-commonjs": { 902 | "version": "11.0.2", 903 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.0.2.tgz", 904 | "integrity": "sha512-MPYGZr0qdbV5zZj8/2AuomVpnRVXRU5XKXb3HVniwRoRCreGlf5kOE081isNWeiLIi6IYkwTX9zE0/c7V8g81g==", 905 | "dev": true, 906 | "requires": { 907 | "@rollup/pluginutils": "^3.0.0", 908 | "estree-walker": "^1.0.1", 909 | "is-reference": "^1.1.2", 910 | "magic-string": "^0.25.2", 911 | "resolve": "^1.11.0" 912 | }, 913 | "dependencies": { 914 | "estree-walker": { 915 | "version": "1.0.1", 916 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 917 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 918 | "dev": true 919 | } 920 | } 921 | }, 922 | "@rollup/plugin-json": { 923 | "version": "4.0.0", 924 | "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.0.0.tgz", 925 | "integrity": "sha512-Z65CtEVWv40+ri4CvmswyhtuUtki9yP5p0UJN/GyCKKyU4jRuDS9CG0ZuV7/XuS7zGkoajyE7E4XBEaC4GW62A==", 926 | "dev": true, 927 | "requires": { 928 | "rollup-pluginutils": "^2.5.0" 929 | } 930 | }, 931 | "@rollup/plugin-node-resolve": { 932 | "version": "7.1.1", 933 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.1.tgz", 934 | "integrity": "sha512-14ddhD7TnemeHE97a4rLOhobfYvUVcaYuqTnL8Ti7Jxi9V9Jr5LY7Gko4HZ5k4h4vqQM0gBQt6tsp9xXW94WPA==", 935 | "dev": true, 936 | "requires": { 937 | "@rollup/pluginutils": "^3.0.6", 938 | "@types/resolve": "0.0.8", 939 | "builtin-modules": "^3.1.0", 940 | "is-module": "^1.0.0", 941 | "resolve": "^1.14.2" 942 | }, 943 | "dependencies": { 944 | "resolve": { 945 | "version": "1.15.1", 946 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", 947 | "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", 948 | "dev": true, 949 | "requires": { 950 | "path-parse": "^1.0.6" 951 | } 952 | } 953 | } 954 | }, 955 | "@rollup/plugin-replace": { 956 | "version": "2.2.1", 957 | "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.2.1.tgz", 958 | "integrity": "sha512-dgq5ijT8fK18KTb1inenZ61ivTayV7pvbz2+ivT+VN20BOgJVM1fqoBETqGHKgFVm/J9BhR82mQyAtxfpPv1lQ==", 959 | "dev": true, 960 | "requires": { 961 | "magic-string": "^0.25.2", 962 | "rollup-pluginutils": "^2.6.0" 963 | } 964 | }, 965 | "@rollup/pluginutils": { 966 | "version": "3.0.8", 967 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.0.8.tgz", 968 | "integrity": "sha512-rYGeAc4sxcZ+kPG/Tw4/fwJODC3IXHYDH4qusdN/b6aLw5LPUbzpecYbEJh4sVQGPFJxd2dBU4kc1H3oy9/bnw==", 969 | "dev": true, 970 | "requires": { 971 | "estree-walker": "^1.0.1" 972 | }, 973 | "dependencies": { 974 | "estree-walker": { 975 | "version": "1.0.1", 976 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", 977 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", 978 | "dev": true 979 | } 980 | } 981 | }, 982 | "@sanity/block-content-to-hyperscript": { 983 | "version": "2.0.10", 984 | "resolved": "https://registry.npmjs.org/@sanity/block-content-to-hyperscript/-/block-content-to-hyperscript-2.0.10.tgz", 985 | "integrity": "sha512-xT3iEmZkK0fvO5PDFpn9GMWGfvOopvbrRCBU48XxpFoTxRrfsHhxbRy8J0eND1HGXHUENkIKv5jbohtGd1MiVg==", 986 | "dev": true, 987 | "requires": { 988 | "@sanity/generate-help-url": "^0.140.0", 989 | "@sanity/image-url": "^0.140.15", 990 | "hyperscript": "^2.0.2", 991 | "object-assign": "^4.1.1" 992 | } 993 | }, 994 | "@sanity/client": { 995 | "version": "2.1.0", 996 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-2.1.0.tgz", 997 | "integrity": "sha512-CrxBa0h8Ov0cW09w35dh8gYOMyMlC6g/rqPQpyUS6Yo08uUOO/6nX8cJh+jug+TBb/V72yD0WpxRNhBWAFXU7w==", 998 | "requires": { 999 | "@sanity/eventsource": "2.0.1", 1000 | "@sanity/generate-help-url": "2.0.9", 1001 | "@sanity/observable": "2.0.9", 1002 | "deep-assign": "^2.0.0", 1003 | "get-it": "^5.0.3", 1004 | "make-error": "^1.3.0", 1005 | "object-assign": "^4.1.1" 1006 | }, 1007 | "dependencies": { 1008 | "@sanity/generate-help-url": { 1009 | "version": "2.0.9", 1010 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-2.0.9.tgz", 1011 | "integrity": "sha512-Ibr4fEL3McAtvScwVPi5IpnLT+fXfY5NMxjmX0IyLHTod1iwOVpVlPBjWdLiiWiaMqX7Kf9CtoNcjFhtsVj2UA==" 1012 | } 1013 | } 1014 | }, 1015 | "@sanity/eventsource": { 1016 | "version": "2.0.1", 1017 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-2.0.1.tgz", 1018 | "integrity": "sha512-5FjMSEdXEv8QDyHeY82SMqL95wmGkDtLT5VPOrok/hqmc5MyfH0g/yo6HLfVwZbqmdQxnCZ37YUJ5vkyixfLTw==", 1019 | "requires": { 1020 | "@rexxars/eventsource-polyfill": "^1.0.0", 1021 | "eventsource": "^1.0.6" 1022 | } 1023 | }, 1024 | "@sanity/generate-help-url": { 1025 | "version": "0.140.0", 1026 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.140.0.tgz", 1027 | "integrity": "sha512-H/G/WA9S22TXcXST52CIiTsHx3S2hH0gvK7LnI5w76vfKS0obnDPh8jrPg4xeNRYGPuV9MHYRlyERGpRGoo4Qw==", 1028 | "dev": true 1029 | }, 1030 | "@sanity/image-url": { 1031 | "version": "0.140.19", 1032 | "resolved": "https://registry.npmjs.org/@sanity/image-url/-/image-url-0.140.19.tgz", 1033 | "integrity": "sha512-itPCTXNyF2MFdXMlwmpcXEiZU7AvSxyQpOaCQ3x8uODIl3GY22KAHYzz6rIGzWU63u0DN/Y8O1ChsblPLqnI5Q==", 1034 | "requires": { 1035 | "@sanity/client": "^1.149.13" 1036 | }, 1037 | "dependencies": { 1038 | "@sanity/client": { 1039 | "version": "1.150.7", 1040 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-1.150.7.tgz", 1041 | "integrity": "sha512-tqIi2MDE8MTJU6N2su0Ct7n+fioYe+tI9ZM2xVrvIUxU1wPxlBEs4f01rRdCttLRp6CoXUmRC7F0j68ZQWMcdA==", 1042 | "requires": { 1043 | "@sanity/eventsource": "1.150.1", 1044 | "@sanity/generate-help-url": "1.150.1", 1045 | "@sanity/observable": "1.150.1", 1046 | "deep-assign": "^2.0.0", 1047 | "get-it": "^5.0.3", 1048 | "make-error": "^1.3.0", 1049 | "object-assign": "^4.1.1" 1050 | } 1051 | }, 1052 | "@sanity/eventsource": { 1053 | "version": "1.150.1", 1054 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-1.150.1.tgz", 1055 | "integrity": "sha512-Sqkfr1+X5aJvDYnE6i0ZO5FlFw/wOxLwlSLbWEBWq/l3fvArj2qQp5rH6YNRsg2Dl4hQHOPajUlHbnFPM6SUfA==", 1056 | "requires": { 1057 | "@rexxars/eventsource-polyfill": "^1.0.0", 1058 | "eventsource": "^1.0.6" 1059 | } 1060 | }, 1061 | "@sanity/generate-help-url": { 1062 | "version": "1.150.1", 1063 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-1.150.1.tgz", 1064 | "integrity": "sha512-IK54U7j161Ks6l/4eIg8d9LV4UW968vZr+SsYTa2pzXb3ktDPKcerCx12eDX6HkWGsETZsp0J48QHP3ocVzo9A==" 1065 | }, 1066 | "@sanity/observable": { 1067 | "version": "1.150.1", 1068 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-1.150.1.tgz", 1069 | "integrity": "sha512-GXlXsNOJZ6p4aoMManRQnaL9qy1uXEcS5X1bGZCpKgcX5Rbyku6vYvxNFSGyrRRJRJKLwtUBrLNAjm92jpHFMQ==", 1070 | "requires": { 1071 | "object-assign": "^4.1.1", 1072 | "rxjs": "^6.5.3" 1073 | } 1074 | } 1075 | } 1076 | }, 1077 | "@sanity/observable": { 1078 | "version": "2.0.9", 1079 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-2.0.9.tgz", 1080 | "integrity": "sha512-IUpzsEbhOhofTBUu2tiQ4Ymbkmhr6oe4UC4Ds1khZ9Td4t4mzzPGmGQIr5SBEDawz0UD7ZgZAb4LeEzV3hUrtA==", 1081 | "requires": { 1082 | "object-assign": "^4.1.1", 1083 | "rxjs": "^6.5.3" 1084 | } 1085 | }, 1086 | "@sanity/timed-out": { 1087 | "version": "4.0.2", 1088 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz", 1089 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==" 1090 | }, 1091 | "@types/node": { 1092 | "version": "12.12.21", 1093 | "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.21.tgz", 1094 | "integrity": "sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA==", 1095 | "dev": true 1096 | }, 1097 | "@types/resolve": { 1098 | "version": "0.0.8", 1099 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", 1100 | "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", 1101 | "dev": true, 1102 | "requires": { 1103 | "@types/node": "*" 1104 | } 1105 | }, 1106 | "accepts": { 1107 | "version": "1.3.7", 1108 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 1109 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 1110 | "requires": { 1111 | "mime-types": "~2.1.24", 1112 | "negotiator": "0.6.2" 1113 | } 1114 | }, 1115 | "ansi-styles": { 1116 | "version": "3.2.1", 1117 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1118 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1119 | "dev": true, 1120 | "requires": { 1121 | "color-convert": "^1.9.0" 1122 | } 1123 | }, 1124 | "array-filter": { 1125 | "version": "0.0.1", 1126 | "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", 1127 | "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", 1128 | "dev": true 1129 | }, 1130 | "array-map": { 1131 | "version": "0.0.0", 1132 | "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", 1133 | "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", 1134 | "dev": true 1135 | }, 1136 | "array-reduce": { 1137 | "version": "0.0.0", 1138 | "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", 1139 | "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", 1140 | "dev": true 1141 | }, 1142 | "babel-plugin-dynamic-import-node": { 1143 | "version": "2.3.0", 1144 | "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", 1145 | "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", 1146 | "dev": true, 1147 | "requires": { 1148 | "object.assign": "^4.1.0" 1149 | } 1150 | }, 1151 | "balanced-match": { 1152 | "version": "1.0.0", 1153 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1154 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 1155 | "dev": true 1156 | }, 1157 | "big.js": { 1158 | "version": "5.2.2", 1159 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 1160 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 1161 | "dev": true 1162 | }, 1163 | "brace-expansion": { 1164 | "version": "1.1.11", 1165 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1166 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1167 | "dev": true, 1168 | "requires": { 1169 | "balanced-match": "^1.0.0", 1170 | "concat-map": "0.0.1" 1171 | } 1172 | }, 1173 | "browser-split": { 1174 | "version": "0.0.0", 1175 | "resolved": "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz", 1176 | "integrity": "sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E=", 1177 | "dev": true 1178 | }, 1179 | "browserslist": { 1180 | "version": "4.8.2", 1181 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", 1182 | "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", 1183 | "dev": true, 1184 | "requires": { 1185 | "caniuse-lite": "^1.0.30001015", 1186 | "electron-to-chromium": "^1.3.322", 1187 | "node-releases": "^1.1.42" 1188 | } 1189 | }, 1190 | "buffer-from": { 1191 | "version": "1.1.1", 1192 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 1193 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", 1194 | "dev": true 1195 | }, 1196 | "builtin-modules": { 1197 | "version": "3.1.0", 1198 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", 1199 | "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", 1200 | "dev": true 1201 | }, 1202 | "bytes": { 1203 | "version": "3.0.0", 1204 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 1205 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 1206 | }, 1207 | "camel-case": { 1208 | "version": "3.0.0", 1209 | "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", 1210 | "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", 1211 | "dev": true, 1212 | "requires": { 1213 | "no-case": "^2.2.0", 1214 | "upper-case": "^1.1.1" 1215 | } 1216 | }, 1217 | "caniuse-lite": { 1218 | "version": "1.0.30001016", 1219 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001016.tgz", 1220 | "integrity": "sha512-yYQ2QfotceRiH4U+h1Us86WJXtVHDmy3nEKIdYPsZCYnOV5/tMgGbmoIlrMzmh2VXlproqYtVaKeGDBkMZifFA==", 1221 | "dev": true 1222 | }, 1223 | "capture-stack-trace": { 1224 | "version": "1.0.1", 1225 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", 1226 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" 1227 | }, 1228 | "chalk": { 1229 | "version": "2.4.2", 1230 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1231 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1232 | "dev": true, 1233 | "requires": { 1234 | "ansi-styles": "^3.2.1", 1235 | "escape-string-regexp": "^1.0.5", 1236 | "supports-color": "^5.3.0" 1237 | } 1238 | }, 1239 | "class-list": { 1240 | "version": "0.1.1", 1241 | "resolved": "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz", 1242 | "integrity": "sha1-m5dFGSxBebXaCg12M2WOPHDXlss=", 1243 | "dev": true, 1244 | "requires": { 1245 | "indexof": "0.0.1" 1246 | } 1247 | }, 1248 | "clean-css": { 1249 | "version": "4.2.3", 1250 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", 1251 | "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", 1252 | "dev": true, 1253 | "requires": { 1254 | "source-map": "~0.6.0" 1255 | } 1256 | }, 1257 | "color-convert": { 1258 | "version": "1.9.3", 1259 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1260 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1261 | "dev": true, 1262 | "requires": { 1263 | "color-name": "1.1.3" 1264 | } 1265 | }, 1266 | "color-name": { 1267 | "version": "1.1.3", 1268 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1269 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1270 | "dev": true 1271 | }, 1272 | "commander": { 1273 | "version": "2.20.3", 1274 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1275 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", 1276 | "dev": true 1277 | }, 1278 | "compressible": { 1279 | "version": "2.0.18", 1280 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", 1281 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", 1282 | "requires": { 1283 | "mime-db": ">= 1.43.0 < 2" 1284 | } 1285 | }, 1286 | "compression": { 1287 | "version": "1.7.4", 1288 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", 1289 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", 1290 | "requires": { 1291 | "accepts": "~1.3.5", 1292 | "bytes": "3.0.0", 1293 | "compressible": "~2.0.16", 1294 | "debug": "2.6.9", 1295 | "on-headers": "~1.0.2", 1296 | "safe-buffer": "5.1.2", 1297 | "vary": "~1.1.2" 1298 | } 1299 | }, 1300 | "concat-map": { 1301 | "version": "0.0.1", 1302 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1303 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 1304 | "dev": true 1305 | }, 1306 | "convert-source-map": { 1307 | "version": "1.7.0", 1308 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1309 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1310 | "dev": true, 1311 | "requires": { 1312 | "safe-buffer": "~5.1.1" 1313 | } 1314 | }, 1315 | "core-js-compat": { 1316 | "version": "3.6.0", 1317 | "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.0.tgz", 1318 | "integrity": "sha512-Z3eCNjGgoYluH89Jt4wVkfYsc/VdLrA2/woX5lm0isO/pCT+P+Y+o65bOuEnjDJLthdwTBxbCVzptTXtc18fJg==", 1319 | "dev": true, 1320 | "requires": { 1321 | "browserslist": "^4.8.2", 1322 | "semver": "7.0.0" 1323 | }, 1324 | "dependencies": { 1325 | "semver": { 1326 | "version": "7.0.0", 1327 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1328 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 1329 | "dev": true 1330 | } 1331 | } 1332 | }, 1333 | "core-util-is": { 1334 | "version": "1.0.2", 1335 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1336 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1337 | }, 1338 | "create-error-class": { 1339 | "version": "3.0.2", 1340 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", 1341 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", 1342 | "requires": { 1343 | "capture-stack-trace": "^1.0.0" 1344 | } 1345 | }, 1346 | "cross-spawn": { 1347 | "version": "6.0.5", 1348 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 1349 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 1350 | "dev": true, 1351 | "requires": { 1352 | "nice-try": "^1.0.4", 1353 | "path-key": "^2.0.1", 1354 | "semver": "^5.5.0", 1355 | "shebang-command": "^1.2.0", 1356 | "which": "^1.2.9" 1357 | } 1358 | }, 1359 | "debug": { 1360 | "version": "2.6.9", 1361 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1362 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1363 | "requires": { 1364 | "ms": "2.0.0" 1365 | } 1366 | }, 1367 | "decompress-response": { 1368 | "version": "3.3.0", 1369 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", 1370 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", 1371 | "requires": { 1372 | "mimic-response": "^1.0.0" 1373 | } 1374 | }, 1375 | "deep-assign": { 1376 | "version": "2.0.0", 1377 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", 1378 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", 1379 | "requires": { 1380 | "is-obj": "^1.0.0" 1381 | } 1382 | }, 1383 | "define-properties": { 1384 | "version": "1.1.3", 1385 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 1386 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 1387 | "dev": true, 1388 | "requires": { 1389 | "object-keys": "^1.0.12" 1390 | } 1391 | }, 1392 | "electron-to-chromium": { 1393 | "version": "1.3.322", 1394 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", 1395 | "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", 1396 | "dev": true 1397 | }, 1398 | "emojis-list": { 1399 | "version": "3.0.0", 1400 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1401 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 1402 | "dev": true 1403 | }, 1404 | "error-ex": { 1405 | "version": "1.3.2", 1406 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 1407 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 1408 | "dev": true, 1409 | "requires": { 1410 | "is-arrayish": "^0.2.1" 1411 | } 1412 | }, 1413 | "es-abstract": { 1414 | "version": "1.13.0", 1415 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", 1416 | "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", 1417 | "dev": true, 1418 | "requires": { 1419 | "es-to-primitive": "^1.2.0", 1420 | "function-bind": "^1.1.1", 1421 | "has": "^1.0.3", 1422 | "is-callable": "^1.1.4", 1423 | "is-regex": "^1.0.4", 1424 | "object-keys": "^1.0.12" 1425 | } 1426 | }, 1427 | "es-to-primitive": { 1428 | "version": "1.2.0", 1429 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", 1430 | "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", 1431 | "dev": true, 1432 | "requires": { 1433 | "is-callable": "^1.1.4", 1434 | "is-date-object": "^1.0.1", 1435 | "is-symbol": "^1.0.2" 1436 | } 1437 | }, 1438 | "escape-string-regexp": { 1439 | "version": "1.0.5", 1440 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1441 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1442 | "dev": true 1443 | }, 1444 | "estree-walker": { 1445 | "version": "0.6.1", 1446 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", 1447 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", 1448 | "dev": true 1449 | }, 1450 | "esutils": { 1451 | "version": "2.0.3", 1452 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 1453 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 1454 | "dev": true 1455 | }, 1456 | "eventsource": { 1457 | "version": "1.0.7", 1458 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", 1459 | "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", 1460 | "requires": { 1461 | "original": "^1.0.0" 1462 | } 1463 | }, 1464 | "follow-redirects": { 1465 | "version": "1.13.1", 1466 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz", 1467 | "integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==" 1468 | }, 1469 | "form-urlencoded": { 1470 | "version": "2.0.9", 1471 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz", 1472 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA==" 1473 | }, 1474 | "from2": { 1475 | "version": "2.3.0", 1476 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 1477 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 1478 | "requires": { 1479 | "inherits": "^2.0.1", 1480 | "readable-stream": "^2.0.0" 1481 | } 1482 | }, 1483 | "fsevents": { 1484 | "version": "2.1.2", 1485 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", 1486 | "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", 1487 | "dev": true, 1488 | "optional": true 1489 | }, 1490 | "function-bind": { 1491 | "version": "1.1.1", 1492 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1493 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1494 | "dev": true 1495 | }, 1496 | "get-it": { 1497 | "version": "5.0.3", 1498 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.0.3.tgz", 1499 | "integrity": "sha512-S/QxA9/P4e0tHPILIdf92FVYrE0vre7ChXXMZoILuU4/keatMqnW1KAzCEOH8toJVbj+hgrOnZdUxd9ruG7lsQ==", 1500 | "requires": { 1501 | "@sanity/timed-out": "^4.0.2", 1502 | "create-error-class": "^3.0.2", 1503 | "debug": "^2.6.8", 1504 | "decompress-response": "^3.3.0", 1505 | "follow-redirects": "^1.2.4", 1506 | "form-urlencoded": "^2.0.7", 1507 | "in-publish": "^2.0.0", 1508 | "into-stream": "^3.1.0", 1509 | "is-plain-object": "^2.0.4", 1510 | "is-retry-allowed": "^1.1.0", 1511 | "is-stream": "^1.1.0", 1512 | "nano-pubsub": "^1.0.2", 1513 | "object-assign": "^4.1.1", 1514 | "parse-headers": "^2.0.1", 1515 | "progress-stream": "^2.0.0", 1516 | "same-origin": "^0.1.1", 1517 | "simple-concat": "^1.0.0", 1518 | "tunnel-agent": "^0.6.0", 1519 | "url-parse": "^1.1.9" 1520 | } 1521 | }, 1522 | "globals": { 1523 | "version": "11.12.0", 1524 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1525 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1526 | "dev": true 1527 | }, 1528 | "graceful-fs": { 1529 | "version": "4.2.0", 1530 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", 1531 | "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", 1532 | "dev": true 1533 | }, 1534 | "groq": { 1535 | "version": "0.147.8", 1536 | "resolved": "https://registry.npmjs.org/groq/-/groq-0.147.8.tgz", 1537 | "integrity": "sha512-Han2ly7DYS/B0elOP+EI2SkrK7+uTyW5iAZ5xa7YJRAW0Z3gj89LlRcCPSmU6sODp+x2//Lo8OUFD0gjAfeJnw==" 1538 | }, 1539 | "has": { 1540 | "version": "1.0.3", 1541 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1542 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1543 | "dev": true, 1544 | "requires": { 1545 | "function-bind": "^1.1.1" 1546 | } 1547 | }, 1548 | "has-flag": { 1549 | "version": "3.0.0", 1550 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1551 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1552 | "dev": true 1553 | }, 1554 | "has-symbols": { 1555 | "version": "1.0.0", 1556 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", 1557 | "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", 1558 | "dev": true 1559 | }, 1560 | "he": { 1561 | "version": "1.2.0", 1562 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1563 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1564 | "dev": true 1565 | }, 1566 | "hosted-git-info": { 1567 | "version": "2.7.1", 1568 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", 1569 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", 1570 | "dev": true 1571 | }, 1572 | "html-element": { 1573 | "version": "2.3.0", 1574 | "resolved": "https://registry.npmjs.org/html-element/-/html-element-2.3.0.tgz", 1575 | "integrity": "sha512-axsAv89JAxk/zSSOn+jK5dJ1eAUVSkienyIcruAe/kD5skC/E/HxjFfCfNYv8+A9m7BXR9kfL4ZD1ZobUfUWzQ==", 1576 | "dev": true, 1577 | "requires": { 1578 | "class-list": "~0.1.1" 1579 | } 1580 | }, 1581 | "html-minifier": { 1582 | "version": "4.0.0", 1583 | "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-4.0.0.tgz", 1584 | "integrity": "sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==", 1585 | "dev": true, 1586 | "requires": { 1587 | "camel-case": "^3.0.0", 1588 | "clean-css": "^4.2.1", 1589 | "commander": "^2.19.0", 1590 | "he": "^1.2.0", 1591 | "param-case": "^2.1.1", 1592 | "relateurl": "^0.2.7", 1593 | "uglify-js": "^3.5.1" 1594 | } 1595 | }, 1596 | "http-link-header": { 1597 | "version": "1.0.2", 1598 | "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.0.2.tgz", 1599 | "integrity": "sha512-z6YOZ8ZEnejkcCWlGZzYXNa6i+ZaTfiTg3WhlV/YvnNya3W/RbX1bMVUMTuCrg/DrtTCQxaFCkXCz4FtLpcebg==", 1600 | "dev": true 1601 | }, 1602 | "hyperscript": { 1603 | "version": "2.0.2", 1604 | "resolved": "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz", 1605 | "integrity": "sha1-ODnLpFVUvf4nu4HCFC0WhPgTWvU=", 1606 | "dev": true, 1607 | "requires": { 1608 | "browser-split": "0.0.0", 1609 | "class-list": "~0.1.0", 1610 | "html-element": "^2.0.0" 1611 | } 1612 | }, 1613 | "in-publish": { 1614 | "version": "2.0.1", 1615 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", 1616 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" 1617 | }, 1618 | "indexof": { 1619 | "version": "0.0.1", 1620 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 1621 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 1622 | "dev": true 1623 | }, 1624 | "inherits": { 1625 | "version": "2.0.4", 1626 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1627 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1628 | }, 1629 | "into-stream": { 1630 | "version": "3.1.0", 1631 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", 1632 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=", 1633 | "requires": { 1634 | "from2": "^2.1.1", 1635 | "p-is-promise": "^1.1.0" 1636 | } 1637 | }, 1638 | "invariant": { 1639 | "version": "2.2.4", 1640 | "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", 1641 | "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", 1642 | "dev": true, 1643 | "requires": { 1644 | "loose-envify": "^1.0.0" 1645 | } 1646 | }, 1647 | "is-arrayish": { 1648 | "version": "0.2.1", 1649 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1650 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1651 | "dev": true 1652 | }, 1653 | "is-callable": { 1654 | "version": "1.1.4", 1655 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", 1656 | "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", 1657 | "dev": true 1658 | }, 1659 | "is-date-object": { 1660 | "version": "1.0.1", 1661 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", 1662 | "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", 1663 | "dev": true 1664 | }, 1665 | "is-module": { 1666 | "version": "1.0.0", 1667 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 1668 | "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", 1669 | "dev": true 1670 | }, 1671 | "is-obj": { 1672 | "version": "1.0.1", 1673 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", 1674 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" 1675 | }, 1676 | "is-plain-object": { 1677 | "version": "2.0.4", 1678 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1679 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1680 | "requires": { 1681 | "isobject": "^3.0.1" 1682 | } 1683 | }, 1684 | "is-reference": { 1685 | "version": "1.1.4", 1686 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.1.4.tgz", 1687 | "integrity": "sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw==", 1688 | "dev": true, 1689 | "requires": { 1690 | "@types/estree": "0.0.39" 1691 | }, 1692 | "dependencies": { 1693 | "@types/estree": { 1694 | "version": "0.0.39", 1695 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", 1696 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", 1697 | "dev": true 1698 | } 1699 | } 1700 | }, 1701 | "is-regex": { 1702 | "version": "1.0.4", 1703 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", 1704 | "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", 1705 | "dev": true, 1706 | "requires": { 1707 | "has": "^1.0.1" 1708 | } 1709 | }, 1710 | "is-retry-allowed": { 1711 | "version": "1.2.0", 1712 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", 1713 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" 1714 | }, 1715 | "is-stream": { 1716 | "version": "1.1.0", 1717 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1718 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 1719 | }, 1720 | "is-symbol": { 1721 | "version": "1.0.2", 1722 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", 1723 | "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", 1724 | "dev": true, 1725 | "requires": { 1726 | "has-symbols": "^1.0.0" 1727 | } 1728 | }, 1729 | "isarray": { 1730 | "version": "1.0.0", 1731 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1732 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1733 | }, 1734 | "isexe": { 1735 | "version": "2.0.0", 1736 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1737 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1738 | "dev": true 1739 | }, 1740 | "isobject": { 1741 | "version": "3.0.1", 1742 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1743 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" 1744 | }, 1745 | "jest-worker": { 1746 | "version": "24.9.0", 1747 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", 1748 | "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", 1749 | "dev": true, 1750 | "requires": { 1751 | "merge-stream": "^2.0.0", 1752 | "supports-color": "^6.1.0" 1753 | }, 1754 | "dependencies": { 1755 | "supports-color": { 1756 | "version": "6.1.0", 1757 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", 1758 | "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", 1759 | "dev": true, 1760 | "requires": { 1761 | "has-flag": "^3.0.0" 1762 | } 1763 | } 1764 | } 1765 | }, 1766 | "js-levenshtein": { 1767 | "version": "1.1.6", 1768 | "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", 1769 | "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", 1770 | "dev": true 1771 | }, 1772 | "js-tokens": { 1773 | "version": "4.0.0", 1774 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1775 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1776 | "dev": true 1777 | }, 1778 | "jsesc": { 1779 | "version": "2.5.2", 1780 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1781 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1782 | "dev": true 1783 | }, 1784 | "json-parse-better-errors": { 1785 | "version": "1.0.2", 1786 | "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", 1787 | "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", 1788 | "dev": true 1789 | }, 1790 | "json5": { 1791 | "version": "1.0.1", 1792 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1793 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1794 | "dev": true, 1795 | "requires": { 1796 | "minimist": "^1.2.0" 1797 | } 1798 | }, 1799 | "jsonify": { 1800 | "version": "0.0.0", 1801 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1802 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1803 | "dev": true 1804 | }, 1805 | "load-json-file": { 1806 | "version": "4.0.0", 1807 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", 1808 | "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", 1809 | "dev": true, 1810 | "requires": { 1811 | "graceful-fs": "^4.1.2", 1812 | "parse-json": "^4.0.0", 1813 | "pify": "^3.0.0", 1814 | "strip-bom": "^3.0.0" 1815 | } 1816 | }, 1817 | "loader-utils": { 1818 | "version": "1.4.0", 1819 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 1820 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 1821 | "dev": true, 1822 | "requires": { 1823 | "big.js": "^5.2.2", 1824 | "emojis-list": "^3.0.0", 1825 | "json5": "^1.0.1" 1826 | } 1827 | }, 1828 | "lodash": { 1829 | "version": "4.17.20", 1830 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 1831 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", 1832 | "dev": true 1833 | }, 1834 | "loose-envify": { 1835 | "version": "1.4.0", 1836 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1837 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1838 | "dev": true, 1839 | "requires": { 1840 | "js-tokens": "^3.0.0 || ^4.0.0" 1841 | } 1842 | }, 1843 | "lower-case": { 1844 | "version": "1.1.4", 1845 | "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", 1846 | "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", 1847 | "dev": true 1848 | }, 1849 | "magic-string": { 1850 | "version": "0.25.4", 1851 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.4.tgz", 1852 | "integrity": "sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw==", 1853 | "dev": true, 1854 | "requires": { 1855 | "sourcemap-codec": "^1.4.4" 1856 | } 1857 | }, 1858 | "make-error": { 1859 | "version": "1.3.6", 1860 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1861 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1862 | }, 1863 | "memorystream": { 1864 | "version": "0.3.1", 1865 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", 1866 | "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", 1867 | "dev": true 1868 | }, 1869 | "merge-stream": { 1870 | "version": "2.0.0", 1871 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1872 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", 1873 | "dev": true 1874 | }, 1875 | "mime": { 1876 | "version": "2.4.7", 1877 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz", 1878 | "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==" 1879 | }, 1880 | "mime-db": { 1881 | "version": "1.44.0", 1882 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", 1883 | "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" 1884 | }, 1885 | "mime-types": { 1886 | "version": "2.1.27", 1887 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", 1888 | "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", 1889 | "requires": { 1890 | "mime-db": "1.44.0" 1891 | } 1892 | }, 1893 | "mimic-response": { 1894 | "version": "1.0.1", 1895 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1896 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1897 | }, 1898 | "minimatch": { 1899 | "version": "3.0.4", 1900 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1901 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1902 | "dev": true, 1903 | "requires": { 1904 | "brace-expansion": "^1.1.7" 1905 | } 1906 | }, 1907 | "minimist": { 1908 | "version": "1.2.5", 1909 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1910 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1911 | "dev": true 1912 | }, 1913 | "ms": { 1914 | "version": "2.0.0", 1915 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1916 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1917 | }, 1918 | "nano-pubsub": { 1919 | "version": "1.0.2", 1920 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz", 1921 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek=" 1922 | }, 1923 | "negotiator": { 1924 | "version": "0.6.2", 1925 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1926 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1927 | }, 1928 | "nice-try": { 1929 | "version": "1.0.5", 1930 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1931 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1932 | "dev": true 1933 | }, 1934 | "no-case": { 1935 | "version": "2.3.2", 1936 | "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", 1937 | "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", 1938 | "dev": true, 1939 | "requires": { 1940 | "lower-case": "^1.1.1" 1941 | } 1942 | }, 1943 | "node-releases": { 1944 | "version": "1.1.43", 1945 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.43.tgz", 1946 | "integrity": "sha512-Rmfnj52WNhvr83MvuAWHEqXVoZXCcDQssSOffU4n4XOL9sPrP61mSZ88g25NqmABDvH7PiAlFCzoSCSdzA293w==", 1947 | "dev": true, 1948 | "requires": { 1949 | "semver": "^6.3.0" 1950 | }, 1951 | "dependencies": { 1952 | "semver": { 1953 | "version": "6.3.0", 1954 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1955 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1956 | "dev": true 1957 | } 1958 | } 1959 | }, 1960 | "normalize-package-data": { 1961 | "version": "2.5.0", 1962 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", 1963 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", 1964 | "dev": true, 1965 | "requires": { 1966 | "hosted-git-info": "^2.1.4", 1967 | "resolve": "^1.10.0", 1968 | "semver": "2 || 3 || 4 || 5", 1969 | "validate-npm-package-license": "^3.0.1" 1970 | } 1971 | }, 1972 | "npm-run-all": { 1973 | "version": "4.1.5", 1974 | "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", 1975 | "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", 1976 | "dev": true, 1977 | "requires": { 1978 | "ansi-styles": "^3.2.1", 1979 | "chalk": "^2.4.1", 1980 | "cross-spawn": "^6.0.5", 1981 | "memorystream": "^0.3.1", 1982 | "minimatch": "^3.0.4", 1983 | "pidtree": "^0.3.0", 1984 | "read-pkg": "^3.0.0", 1985 | "shell-quote": "^1.6.1", 1986 | "string.prototype.padend": "^3.0.0" 1987 | } 1988 | }, 1989 | "object-assign": { 1990 | "version": "4.1.1", 1991 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1992 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1993 | }, 1994 | "object-keys": { 1995 | "version": "1.1.1", 1996 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1997 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1998 | "dev": true 1999 | }, 2000 | "object.assign": { 2001 | "version": "4.1.0", 2002 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", 2003 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", 2004 | "dev": true, 2005 | "requires": { 2006 | "define-properties": "^1.1.2", 2007 | "function-bind": "^1.1.1", 2008 | "has-symbols": "^1.0.0", 2009 | "object-keys": "^1.0.11" 2010 | } 2011 | }, 2012 | "on-headers": { 2013 | "version": "1.0.2", 2014 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", 2015 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" 2016 | }, 2017 | "original": { 2018 | "version": "1.0.2", 2019 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", 2020 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", 2021 | "requires": { 2022 | "url-parse": "^1.4.3" 2023 | } 2024 | }, 2025 | "p-is-promise": { 2026 | "version": "1.1.0", 2027 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", 2028 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" 2029 | }, 2030 | "param-case": { 2031 | "version": "2.1.1", 2032 | "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", 2033 | "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", 2034 | "dev": true, 2035 | "requires": { 2036 | "no-case": "^2.2.0" 2037 | } 2038 | }, 2039 | "parse-headers": { 2040 | "version": "2.0.3", 2041 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", 2042 | "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" 2043 | }, 2044 | "parse-json": { 2045 | "version": "4.0.0", 2046 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", 2047 | "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", 2048 | "dev": true, 2049 | "requires": { 2050 | "error-ex": "^1.3.1", 2051 | "json-parse-better-errors": "^1.0.1" 2052 | } 2053 | }, 2054 | "path-key": { 2055 | "version": "2.0.1", 2056 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 2057 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 2058 | "dev": true 2059 | }, 2060 | "path-parse": { 2061 | "version": "1.0.6", 2062 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 2063 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 2064 | "dev": true 2065 | }, 2066 | "path-type": { 2067 | "version": "3.0.0", 2068 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", 2069 | "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", 2070 | "dev": true, 2071 | "requires": { 2072 | "pify": "^3.0.0" 2073 | } 2074 | }, 2075 | "pidtree": { 2076 | "version": "0.3.0", 2077 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", 2078 | "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", 2079 | "dev": true 2080 | }, 2081 | "pify": { 2082 | "version": "3.0.0", 2083 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 2084 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 2085 | "dev": true 2086 | }, 2087 | "polka": { 2088 | "version": "1.0.0-next.11", 2089 | "resolved": "https://registry.npmjs.org/polka/-/polka-1.0.0-next.11.tgz", 2090 | "integrity": "sha512-M/HBkS6ILksrDq7uvktCTev81OzuLwNtpxMyYdUhxLKQlMWdsu789XMotQU+p8JY8CM8vx8ML0HudyWjRus/lg==", 2091 | "requires": { 2092 | "@polka/url": "^1.0.0-next.11", 2093 | "trouter": "^3.1.0" 2094 | } 2095 | }, 2096 | "private": { 2097 | "version": "0.1.8", 2098 | "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", 2099 | "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", 2100 | "dev": true 2101 | }, 2102 | "process-nextick-args": { 2103 | "version": "2.0.1", 2104 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2105 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2106 | }, 2107 | "progress-stream": { 2108 | "version": "2.0.0", 2109 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz", 2110 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=", 2111 | "requires": { 2112 | "speedometer": "~1.0.0", 2113 | "through2": "~2.0.3" 2114 | } 2115 | }, 2116 | "querystringify": { 2117 | "version": "2.2.0", 2118 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 2119 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 2120 | }, 2121 | "read-pkg": { 2122 | "version": "3.0.0", 2123 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", 2124 | "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", 2125 | "dev": true, 2126 | "requires": { 2127 | "load-json-file": "^4.0.0", 2128 | "normalize-package-data": "^2.3.2", 2129 | "path-type": "^3.0.0" 2130 | } 2131 | }, 2132 | "readable-stream": { 2133 | "version": "2.3.7", 2134 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 2135 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 2136 | "requires": { 2137 | "core-util-is": "~1.0.0", 2138 | "inherits": "~2.0.3", 2139 | "isarray": "~1.0.0", 2140 | "process-nextick-args": "~2.0.0", 2141 | "safe-buffer": "~5.1.1", 2142 | "string_decoder": "~1.1.1", 2143 | "util-deprecate": "~1.0.1" 2144 | } 2145 | }, 2146 | "regenerate": { 2147 | "version": "1.4.0", 2148 | "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", 2149 | "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", 2150 | "dev": true 2151 | }, 2152 | "regenerate-unicode-properties": { 2153 | "version": "8.1.0", 2154 | "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", 2155 | "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", 2156 | "dev": true, 2157 | "requires": { 2158 | "regenerate": "^1.4.0" 2159 | } 2160 | }, 2161 | "regenerator-runtime": { 2162 | "version": "0.13.3", 2163 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", 2164 | "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", 2165 | "dev": true 2166 | }, 2167 | "regenerator-transform": { 2168 | "version": "0.14.1", 2169 | "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", 2170 | "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", 2171 | "dev": true, 2172 | "requires": { 2173 | "private": "^0.1.6" 2174 | } 2175 | }, 2176 | "regexparam": { 2177 | "version": "1.3.0", 2178 | "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", 2179 | "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==" 2180 | }, 2181 | "regexpu-core": { 2182 | "version": "4.6.0", 2183 | "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", 2184 | "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", 2185 | "dev": true, 2186 | "requires": { 2187 | "regenerate": "^1.4.0", 2188 | "regenerate-unicode-properties": "^8.1.0", 2189 | "regjsgen": "^0.5.0", 2190 | "regjsparser": "^0.6.0", 2191 | "unicode-match-property-ecmascript": "^1.0.4", 2192 | "unicode-match-property-value-ecmascript": "^1.1.0" 2193 | } 2194 | }, 2195 | "regjsgen": { 2196 | "version": "0.5.1", 2197 | "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", 2198 | "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", 2199 | "dev": true 2200 | }, 2201 | "regjsparser": { 2202 | "version": "0.6.1", 2203 | "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.1.tgz", 2204 | "integrity": "sha512-7LutE94sz/NKSYegK+/4E77+8DipxF+Qn2Tmu362AcmsF2NYq/wx3+ObvU90TKEhjf7hQoFXo23ajjrXP7eUgg==", 2205 | "dev": true, 2206 | "requires": { 2207 | "jsesc": "~0.5.0" 2208 | }, 2209 | "dependencies": { 2210 | "jsesc": { 2211 | "version": "0.5.0", 2212 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", 2213 | "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", 2214 | "dev": true 2215 | } 2216 | } 2217 | }, 2218 | "relateurl": { 2219 | "version": "0.2.7", 2220 | "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", 2221 | "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", 2222 | "dev": true 2223 | }, 2224 | "require-relative": { 2225 | "version": "0.8.7", 2226 | "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", 2227 | "integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=", 2228 | "dev": true 2229 | }, 2230 | "requires-port": { 2231 | "version": "1.0.0", 2232 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2233 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" 2234 | }, 2235 | "resolve": { 2236 | "version": "1.11.1", 2237 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", 2238 | "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", 2239 | "dev": true, 2240 | "requires": { 2241 | "path-parse": "^1.0.6" 2242 | } 2243 | }, 2244 | "rollup": { 2245 | "version": "2.2.0", 2246 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.2.0.tgz", 2247 | "integrity": "sha512-iAu/j9/WJ0i+zT0sAMuQnsEbmOKzdQ4Yxu5rbPs9aUCyqveI1Kw3H4Fi9NWfCOpb8luEySD2lDyFWL9CrLE8iw==", 2248 | "dev": true, 2249 | "requires": { 2250 | "fsevents": "~2.1.2" 2251 | } 2252 | }, 2253 | "rollup-plugin-babel": { 2254 | "version": "4.3.3", 2255 | "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.3.3.tgz", 2256 | "integrity": "sha512-tKzWOCmIJD/6aKNz0H1GMM+lW1q9KyFubbWzGiOG540zxPPifnEAHTZwjo0g991Y+DyOZcLqBgqOdqazYE5fkw==", 2257 | "dev": true, 2258 | "requires": { 2259 | "@babel/helper-module-imports": "^7.0.0", 2260 | "rollup-pluginutils": "^2.8.1" 2261 | } 2262 | }, 2263 | "rollup-plugin-svelte": { 2264 | "version": "5.1.1", 2265 | "resolved": "https://registry.npmjs.org/rollup-plugin-svelte/-/rollup-plugin-svelte-5.1.1.tgz", 2266 | "integrity": "sha512-wP3CnKHjR4fZUgNm5Iey7eItnxwnH/nAw568WJ8dpMSchBxxZ/DmKSx8e6h8k/B6SwG1wfGvWehadFJHcuFFSw==", 2267 | "dev": true, 2268 | "requires": { 2269 | "require-relative": "^0.8.7", 2270 | "rollup-pluginutils": "^2.3.3", 2271 | "sourcemap-codec": "^1.4.4" 2272 | } 2273 | }, 2274 | "rollup-plugin-terser": { 2275 | "version": "4.0.4", 2276 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-4.0.4.tgz", 2277 | "integrity": "sha512-wPANT5XKVJJ8RDUN0+wIr7UPd0lIXBo4UdJ59VmlPCtlFsE20AM+14pe+tk7YunCsWEiuzkDBY3QIkSCjtrPXg==", 2278 | "dev": true, 2279 | "requires": { 2280 | "@babel/code-frame": "^7.0.0", 2281 | "jest-worker": "^24.0.0", 2282 | "serialize-javascript": "^1.6.1", 2283 | "terser": "^3.14.1" 2284 | }, 2285 | "dependencies": { 2286 | "serialize-javascript": { 2287 | "version": "1.9.1", 2288 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.1.tgz", 2289 | "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==", 2290 | "dev": true 2291 | }, 2292 | "terser": { 2293 | "version": "3.17.0", 2294 | "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", 2295 | "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", 2296 | "dev": true, 2297 | "requires": { 2298 | "commander": "^2.19.0", 2299 | "source-map": "~0.6.1", 2300 | "source-map-support": "~0.5.10" 2301 | } 2302 | } 2303 | } 2304 | }, 2305 | "rollup-pluginutils": { 2306 | "version": "2.8.2", 2307 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", 2308 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", 2309 | "dev": true, 2310 | "requires": { 2311 | "estree-walker": "^0.6.1" 2312 | } 2313 | }, 2314 | "rxjs": { 2315 | "version": "6.6.3", 2316 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", 2317 | "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", 2318 | "requires": { 2319 | "tslib": "^1.9.0" 2320 | } 2321 | }, 2322 | "safe-buffer": { 2323 | "version": "5.1.2", 2324 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2325 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 2326 | }, 2327 | "same-origin": { 2328 | "version": "0.1.1", 2329 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz", 2330 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU=" 2331 | }, 2332 | "sapper": { 2333 | "version": "0.27.11", 2334 | "resolved": "https://registry.npmjs.org/sapper/-/sapper-0.27.11.tgz", 2335 | "integrity": "sha512-5EaPZhlc8OnyN3UCI6dRSM1Gz5sxyzLZG/1z5nMvZhg9Ng+rSvEvJx/rW/tSHcnQPa8or7+YcbfvQHKS5oPHiw==", 2336 | "dev": true, 2337 | "requires": { 2338 | "html-minifier": "^4.0.0", 2339 | "http-link-header": "^1.0.2", 2340 | "shimport": "^1.0.1", 2341 | "sourcemap-codec": "^1.4.6", 2342 | "string-hash": "^1.1.3" 2343 | } 2344 | }, 2345 | "semver": { 2346 | "version": "5.7.0", 2347 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", 2348 | "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", 2349 | "dev": true 2350 | }, 2351 | "shebang-command": { 2352 | "version": "1.2.0", 2353 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 2354 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 2355 | "dev": true, 2356 | "requires": { 2357 | "shebang-regex": "^1.0.0" 2358 | } 2359 | }, 2360 | "shebang-regex": { 2361 | "version": "1.0.0", 2362 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 2363 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 2364 | "dev": true 2365 | }, 2366 | "shell-quote": { 2367 | "version": "1.6.1", 2368 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", 2369 | "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", 2370 | "dev": true, 2371 | "requires": { 2372 | "array-filter": "~0.0.0", 2373 | "array-map": "~0.0.0", 2374 | "array-reduce": "~0.0.0", 2375 | "jsonify": "~0.0.0" 2376 | } 2377 | }, 2378 | "shimport": { 2379 | "version": "1.0.1", 2380 | "resolved": "https://registry.npmjs.org/shimport/-/shimport-1.0.1.tgz", 2381 | "integrity": "sha512-Imf4gH+8WQmT1GvxS/x79qpmfnE6m50hyN1ucatX+7oMCgmaF8obZWCPIzSUe6+P+YmXM46lkP2pxiV2/lt9Og==", 2382 | "dev": true 2383 | }, 2384 | "simple-concat": { 2385 | "version": "1.0.1", 2386 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 2387 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 2388 | }, 2389 | "sirv": { 2390 | "version": "0.4.6", 2391 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-0.4.6.tgz", 2392 | "integrity": "sha512-rYpOXlNbpHiY4nVXxuDf4mXPvKz1reZGap/LkWp9TvcZ84qD/nPBjjH/6GZsgIjVMbOslnY8YYULAyP8jMn1GQ==", 2393 | "requires": { 2394 | "@polka/url": "^0.5.0", 2395 | "mime": "^2.3.1" 2396 | }, 2397 | "dependencies": { 2398 | "@polka/url": { 2399 | "version": "0.5.0", 2400 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", 2401 | "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==" 2402 | } 2403 | } 2404 | }, 2405 | "source-map": { 2406 | "version": "0.6.1", 2407 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2408 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2409 | "dev": true 2410 | }, 2411 | "source-map-support": { 2412 | "version": "0.5.16", 2413 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", 2414 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", 2415 | "dev": true, 2416 | "requires": { 2417 | "buffer-from": "^1.0.0", 2418 | "source-map": "^0.6.0" 2419 | } 2420 | }, 2421 | "sourcemap-codec": { 2422 | "version": "1.4.6", 2423 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz", 2424 | "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==", 2425 | "dev": true 2426 | }, 2427 | "spdx-correct": { 2428 | "version": "3.1.0", 2429 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", 2430 | "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", 2431 | "dev": true, 2432 | "requires": { 2433 | "spdx-expression-parse": "^3.0.0", 2434 | "spdx-license-ids": "^3.0.0" 2435 | } 2436 | }, 2437 | "spdx-exceptions": { 2438 | "version": "2.2.0", 2439 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", 2440 | "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", 2441 | "dev": true 2442 | }, 2443 | "spdx-expression-parse": { 2444 | "version": "3.0.0", 2445 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 2446 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 2447 | "dev": true, 2448 | "requires": { 2449 | "spdx-exceptions": "^2.1.0", 2450 | "spdx-license-ids": "^3.0.0" 2451 | } 2452 | }, 2453 | "spdx-license-ids": { 2454 | "version": "3.0.5", 2455 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", 2456 | "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", 2457 | "dev": true 2458 | }, 2459 | "speedometer": { 2460 | "version": "1.0.0", 2461 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", 2462 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI=" 2463 | }, 2464 | "string-hash": { 2465 | "version": "1.1.3", 2466 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2467 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 2468 | "dev": true 2469 | }, 2470 | "string.prototype.padend": { 2471 | "version": "3.0.0", 2472 | "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz", 2473 | "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=", 2474 | "dev": true, 2475 | "requires": { 2476 | "define-properties": "^1.1.2", 2477 | "es-abstract": "^1.4.3", 2478 | "function-bind": "^1.0.2" 2479 | } 2480 | }, 2481 | "string_decoder": { 2482 | "version": "1.1.1", 2483 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2484 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2485 | "requires": { 2486 | "safe-buffer": "~5.1.0" 2487 | } 2488 | }, 2489 | "strip-bom": { 2490 | "version": "3.0.0", 2491 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2492 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2493 | "dev": true 2494 | }, 2495 | "supports-color": { 2496 | "version": "5.5.0", 2497 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2498 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2499 | "dev": true, 2500 | "requires": { 2501 | "has-flag": "^3.0.0" 2502 | } 2503 | }, 2504 | "svelte": { 2505 | "version": "3.20.1", 2506 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.20.1.tgz", 2507 | "integrity": "sha512-m/dw52BZf+p6KYnyKLErIcGalu4pwJrQbUM7VZriRw6ZlJj1qMAZsLcIWzEB3I0hhdJwkKb7LrrvUIeqmbO92Q==", 2508 | "dev": true 2509 | }, 2510 | "svelte-dev-helper": { 2511 | "version": "1.1.9", 2512 | "resolved": "https://registry.npmjs.org/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz", 2513 | "integrity": "sha1-fRh9tcbNu9ZNdaMvkbiZi94yc8M=", 2514 | "dev": true 2515 | }, 2516 | "svelte-loader": { 2517 | "version": "2.13.6", 2518 | "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-2.13.6.tgz", 2519 | "integrity": "sha512-7uf7ZQdPAl+lwb1ldUYJFY/raZRUCuaNx7lMJ+F16jrVwN1+c35C2pBMGIY0mCqdKm5sm45jqELJJLGM3UG9Pw==", 2520 | "dev": true, 2521 | "requires": { 2522 | "loader-utils": "^1.1.0", 2523 | "svelte-dev-helper": "^1.1.9" 2524 | } 2525 | }, 2526 | "through2": { 2527 | "version": "2.0.5", 2528 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", 2529 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", 2530 | "requires": { 2531 | "readable-stream": "~2.3.6", 2532 | "xtend": "~4.0.1" 2533 | } 2534 | }, 2535 | "to-fast-properties": { 2536 | "version": "2.0.0", 2537 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2538 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 2539 | "dev": true 2540 | }, 2541 | "trouter": { 2542 | "version": "3.1.0", 2543 | "resolved": "https://registry.npmjs.org/trouter/-/trouter-3.1.0.tgz", 2544 | "integrity": "sha512-3Swwu638QQWOefHLss9cdyLi5/9BKYmXZEXpH0KOFfB9YZwUAwHbDAcoYxaHfqAeFvbi/LqAK7rGkhCr1v1BJA==", 2545 | "requires": { 2546 | "regexparam": "^1.3.0" 2547 | } 2548 | }, 2549 | "tslib": { 2550 | "version": "1.14.1", 2551 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 2552 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 2553 | }, 2554 | "tunnel-agent": { 2555 | "version": "0.6.0", 2556 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 2557 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 2558 | "requires": { 2559 | "safe-buffer": "^5.0.1" 2560 | } 2561 | }, 2562 | "uglify-js": { 2563 | "version": "3.8.1", 2564 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.8.1.tgz", 2565 | "integrity": "sha512-W7KxyzeaQmZvUFbGj4+YFshhVrMBGSg2IbcYAjGWGvx8DHvJMclbTDMpffdxFUGPBHjIytk7KJUR/KUXstUGDw==", 2566 | "dev": true, 2567 | "requires": { 2568 | "commander": "~2.20.3", 2569 | "source-map": "~0.6.1" 2570 | } 2571 | }, 2572 | "unicode-canonical-property-names-ecmascript": { 2573 | "version": "1.0.4", 2574 | "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", 2575 | "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", 2576 | "dev": true 2577 | }, 2578 | "unicode-match-property-ecmascript": { 2579 | "version": "1.0.4", 2580 | "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", 2581 | "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", 2582 | "dev": true, 2583 | "requires": { 2584 | "unicode-canonical-property-names-ecmascript": "^1.0.4", 2585 | "unicode-property-aliases-ecmascript": "^1.0.4" 2586 | } 2587 | }, 2588 | "unicode-match-property-value-ecmascript": { 2589 | "version": "1.1.0", 2590 | "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", 2591 | "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", 2592 | "dev": true 2593 | }, 2594 | "unicode-property-aliases-ecmascript": { 2595 | "version": "1.0.5", 2596 | "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", 2597 | "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", 2598 | "dev": true 2599 | }, 2600 | "upper-case": { 2601 | "version": "1.1.3", 2602 | "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", 2603 | "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", 2604 | "dev": true 2605 | }, 2606 | "url-parse": { 2607 | "version": "1.4.7", 2608 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", 2609 | "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", 2610 | "requires": { 2611 | "querystringify": "^2.1.1", 2612 | "requires-port": "^1.0.0" 2613 | } 2614 | }, 2615 | "util-deprecate": { 2616 | "version": "1.0.2", 2617 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2618 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2619 | }, 2620 | "validate-npm-package-license": { 2621 | "version": "3.0.4", 2622 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 2623 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 2624 | "dev": true, 2625 | "requires": { 2626 | "spdx-correct": "^3.0.0", 2627 | "spdx-expression-parse": "^3.0.0" 2628 | } 2629 | }, 2630 | "vary": { 2631 | "version": "1.1.2", 2632 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2633 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2634 | }, 2635 | "which": { 2636 | "version": "1.3.1", 2637 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2638 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2639 | "dev": true, 2640 | "requires": { 2641 | "isexe": "^2.0.0" 2642 | } 2643 | }, 2644 | "xtend": { 2645 | "version": "4.0.2", 2646 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2647 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 2648 | } 2649 | } 2650 | } 2651 | -------------------------------------------------------------------------------- /template/web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "name": "sanity-sapper-blog-web", 4 | "description": "Sapper frontend", 5 | "version": "0.0.21", 6 | "scripts": { 7 | "dev": "sapper dev", 8 | "build": "sapper export", 9 | "export": "sapper export", 10 | "start": "node __sapper__/build", 11 | "cy:run": "cypress run", 12 | "cy:open": "cypress open", 13 | "test": "run-p --race dev cy:run" 14 | }, 15 | "dependencies": { 16 | "@sanity/client": "^2.1.0", 17 | "@sanity/image-url": "^0.140.19", 18 | "compression": "^1.7.4", 19 | "groq": "^0.147.0", 20 | "polka": "^1.0.0-next.11", 21 | "sirv": "^0.4.2" 22 | }, 23 | "devDependencies": { 24 | "@babel/core": "^7.0.0", 25 | "@babel/plugin-syntax-dynamic-import": "^7.0.0", 26 | "@babel/plugin-transform-runtime": "^7.0.0", 27 | "@babel/preset-env": "^7.0.0", 28 | "@babel/runtime": "^7.0.0", 29 | "@movingbrands/svelte-portable-text": "0.0.7", 30 | "@rollup/plugin-commonjs": "11.0.2", 31 | "@rollup/plugin-json": "^4.0.0", 32 | "@rollup/plugin-node-resolve": "^7.1.1", 33 | "@rollup/plugin-replace": "^2.2.0", 34 | "@sanity/block-content-to-hyperscript": "^2.0.10", 35 | "npm-run-all": "^4.1.5", 36 | "rollup": "^2.2.0", 37 | "rollup-plugin-babel": "^4.0.2", 38 | "rollup-plugin-svelte": "^5.1.1", 39 | "rollup-plugin-terser": "^4.0.4", 40 | "sapper": "^0.27.11", 41 | "svelte": "^3.20.1", 42 | "svelte-loader": "^2.13.6" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /template/web/rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from '@rollup/plugin-node-resolve'; 2 | import replace from '@rollup/plugin-replace'; 3 | import commonjs from '@rollup/plugin-commonjs'; 4 | import svelte from 'rollup-plugin-svelte'; 5 | import babel from 'rollup-plugin-babel'; 6 | import { terser } from 'rollup-plugin-terser'; 7 | import json from '@rollup/plugin-json'; 8 | import config from 'sapper/config/rollup.js'; 9 | import pkg from './package.json'; 10 | 11 | const mode = process.env.NODE_ENV; 12 | const dev = mode === 'development'; 13 | const legacy = !!process.env.SAPPER_LEGACY_BUILD; 14 | 15 | const onwarn = (warning, onwarn) => 16 | (warning.code === 'CIRCULAR_DEPENDENCY' && 17 | /[/\\]@sapper[/\\]/.test(warning.message)) || 18 | onwarn(warning); 19 | const dedupe = ['svelte']; 20 | 21 | export default { 22 | client: { 23 | input: config.client.input(), 24 | output: config.client.output(), 25 | plugins: [ 26 | replace({ 27 | 'process.browser': true, 28 | 'process.env.NODE_ENV': JSON.stringify(mode), 29 | }), 30 | svelte({ 31 | dev, 32 | hydratable: true, 33 | emitCss: true, 34 | }), 35 | resolve({ 36 | browser: true, 37 | dedupe, 38 | }), 39 | commonjs(), 40 | json(), 41 | 42 | legacy && 43 | babel({ 44 | extensions: ['.js', '.mjs', '.html', '.svelte'], 45 | runtimeHelpers: true, 46 | exclude: ['node_modules/@babel/**'], 47 | presets: [ 48 | [ 49 | '@babel/preset-env', 50 | { 51 | targets: '> 0.25%, not dead', 52 | }, 53 | ], 54 | ], 55 | plugins: [ 56 | '@babel/plugin-syntax-dynamic-import', 57 | [ 58 | '@babel/plugin-transform-runtime', 59 | { 60 | useESModules: true, 61 | }, 62 | ], 63 | ], 64 | }), 65 | 66 | !dev && 67 | terser({ 68 | module: true, 69 | }), 70 | ], 71 | 72 | onwarn, 73 | }, 74 | 75 | server: { 76 | input: config.server.input(), 77 | output: config.server.output(), 78 | plugins: [ 79 | replace({ 80 | 'process.browser': false, 81 | 'process.env.NODE_ENV': JSON.stringify(mode), 82 | }), 83 | svelte({ 84 | generate: 'ssr', 85 | dev, 86 | }), 87 | resolve({ 88 | dedupe, 89 | }), 90 | commonjs(), 91 | json(), 92 | ], 93 | external: Object.keys(pkg.dependencies).concat( 94 | require('module').builtinModules || 95 | Object.keys(process.binding('natives')) 96 | ), 97 | 98 | onwarn, 99 | }, 100 | 101 | serviceworker: { 102 | input: config.serviceworker.input(), 103 | output: config.serviceworker.output(), 104 | plugins: [ 105 | resolve(), 106 | replace({ 107 | 'process.browser': true, 108 | 'process.env.NODE_ENV': JSON.stringify(mode), 109 | }), 110 | commonjs(), 111 | !dev && terser(), 112 | ], 113 | 114 | onwarn, 115 | }, 116 | }; 117 | -------------------------------------------------------------------------------- /template/web/src/client.js: -------------------------------------------------------------------------------- 1 | import * as sapper from '@sapper/app'; 2 | 3 | sapper.start({ 4 | target: document.querySelector('#sapper') 5 | }); -------------------------------------------------------------------------------- /template/web/src/components/Author.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | {author.name} 6 | -------------------------------------------------------------------------------- /template/web/src/components/Code.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 29 | 30 |
31 |   {code}
32 | 
33 | -------------------------------------------------------------------------------- /template/web/src/components/Image.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /template/web/src/components/Link.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /template/web/src/components/Nav.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 50 | 51 | -------------------------------------------------------------------------------- /template/web/src/components/serializers.js: -------------------------------------------------------------------------------- 1 | // https://www.sanity.io/docs/what-you-need-to-know-about-block-text/presenting-block-text 2 | // https://github.com/movingbrands/svelte-portable-text 3 | import BlockContent from '@movingbrands/svelte-portable-text'; 4 | // https://www.npmjs.com/package/@sanity/image-url 5 | import urlBuilder from '@sanity/image-url'; 6 | import client from '../sanityClient'; 7 | import Image from './Image.svelte'; 8 | import Code from './Code.svelte'; 9 | import Author from './Author.svelte'; 10 | import Link from './Link.svelte'; 11 | 12 | const urlFor = source => urlBuilder(client).image(source); 13 | 14 | export default { 15 | marks: { 16 | link: ({ children, mark }) => ({ 17 | component: Link, 18 | childNodes: children, 19 | props: mark, 20 | }), 21 | }, 22 | types: { 23 | mainImage: ({ node, children }) => ({ 24 | component: Image, 25 | childNodes: children, 26 | props: { 27 | url: urlFor(node) 28 | .width(800) 29 | .auto('format') 30 | .url(), 31 | alt: node.alt, 32 | }, 33 | }), 34 | code: ({ node: { code, language } }) => ({ 35 | component: Code, 36 | childNodes: [], 37 | props: { 38 | code, 39 | language, 40 | }, 41 | }), 42 | authorReference: ({ children, node: { author } }) => ({ 43 | component: Author, 44 | childNodes: children, 45 | props: { 46 | author, 47 | }, 48 | }), 49 | }, 50 | }; 51 | -------------------------------------------------------------------------------- /template/web/src/routes/_error.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 | 29 | 30 | 31 | {status} 32 | 33 | 34 |

{status}

35 | 36 |

{error.message}

37 | 38 | {#if dev && error.stack} 39 |
{error.stack}
40 | {/if} 41 | -------------------------------------------------------------------------------- /template/web/src/routes/_layout.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 | 17 | 18 |