├── .env.sample
├── .gitignore
├── favicon.ico
├── images
├── better_screenshot_2.png
├── fetching_data.png
├── github.svg
├── hourglass-solid.svg
├── netlify.svg
├── sanityicon.png
├── signing_up.png
├── twitter.svg
└── working_screenshot.png
├── index.html
├── lib.js
├── netlify.toml
├── netlify
└── functions
│ ├── create-note
│ ├── create-note.js
│ ├── package-lock.json
│ └── package.json
│ ├── delete-note
│ └── delete-note.js
│ ├── identity-signup
│ └── identity-signup.js
│ └── user-notes
│ ├── package-lock.json
│ ├── package.json
│ └── user-notes.js
├── package-lock.json
├── package.json
├── readme.md
└── style.css
/.env.sample:
--------------------------------------------------------------------------------
1 | SANITY_PROJECT="abc123"
2 | SANITY_TOKEN="abcdefghijklmnopqrstuvwxyz1234567890"
3 | SANITY_DATASET="production"
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Local Netlify folder
3 | .netlify
4 | dist
5 | .env
6 | node_modules
7 | notes.md
8 | netlify/functions/auth-fetch-example
9 | netlify/functions/protected-function-example
10 | netlify/functions/sanity-create-example
11 | netlify/functions/sanity-groq-example
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/favicon.ico
--------------------------------------------------------------------------------
/images/better_screenshot_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/images/better_screenshot_2.png
--------------------------------------------------------------------------------
/images/fetching_data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/images/fetching_data.png
--------------------------------------------------------------------------------
/images/github.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/hourglass-solid.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/netlify.svg:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/images/sanityicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/images/sanityicon.png
--------------------------------------------------------------------------------
/images/signing_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/images/signing_up.png
--------------------------------------------------------------------------------
/images/twitter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/images/working_screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bacalj/netlify-auth-sanity-data/bb91f01504e5b3c60ef15a94801e2cc88b2c9b35/images/working_screenshot.png
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Netlify Auth & Sanity Data
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |

16 |
Authenticate with Netlify
17 |
18 |
19 |
20 | *You really can sign up and create notes if you want to.
All users and data will be deleted automatically every few days.
21 |
22 |
23 |
24 |
25 |

26 |
Read & Write to Sanity
27 |
28 |
29 |
30 | login on the left to access your data
31 |
32 |
33 |
34 |
35 |
36 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |

47 |
48 |
59 |
60 |
61 |
62 |
63 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/lib.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Renders notes in the DOM.
3 | * @param {Array} arr array of note objects
4 | * promised by fetch in {@function netlify/functions/user-notes}
5 | */
6 |
7 | function renderNotes(arr){
8 |
9 | document.getElementById("notes").innerHTML = ""
10 |
11 | let notes = arr.filter((n) => n.title.length > 0 )
12 |
13 | notes.forEach(obj => {
14 |
15 | let newItem = document.createElement('li');
16 | newItem.id = obj.id
17 |
18 | let newButton = document.createElement('button');
19 | newButton.addEventListener('click', deleteUserNote)
20 | newButton.innerHTML = '×';
21 | newButton.setAttribute('data-delete-id', obj.id)
22 |
23 | newItem.appendChild(newButton)
24 | newItem.appendChild(document.createTextNode(obj.title));
25 |
26 | document.getElementById("notes").appendChild(newItem);
27 | });
28 | }
29 |
30 | /**
31 | * Takes text value from DOM input
32 | * and sends it to {@function netlify/functions/create-note} with token
33 | * If ok calls {@function renderNotes} otherwise alerts error
34 | * Zeros out DOM input
35 | */
36 | async function createUserNote(){
37 |
38 | showAnimation()
39 |
40 | let noteText = document.getElementById('new-note').value.replace(/[^\w\s!?]/g,'');
41 |
42 | if (netlifyIdentity.currentUser() !== null){
43 |
44 | await fetch(`/.netlify/functions/create-note?note=${noteText}`, {
45 | headers: {
46 | Authorization: `Bearer ${theToken()}`
47 | }
48 | }).then((r) => {
49 |
50 | removeAnimation()
51 |
52 | if (r.ok){
53 | getAndRenderUserNotes()
54 | }
55 | if (!r.ok){
56 | alert('Something is messed up. You could try logging out and back in.')
57 | }
58 | })
59 | }
60 |
61 | document.getElementById('new-note').value = ''
62 | }
63 |
64 | /**
65 | * Orders the getting and rendering
66 | * of the users notes by calling
67 | * {@function netlify/functions/user-notes} and
68 | * passes result to {@function renderNotes}
69 | */
70 | async function getAndRenderUserNotes(){
71 |
72 | if (netlifyIdentity.currentUser() !== null){
73 |
74 | await fetch(`/.netlify/functions/user-notes`, {
75 | headers: {
76 | Authorization: `Bearer ${theToken()}`
77 | }
78 | })
79 | .then((response) => {
80 | return response.json()
81 | }).then((data) => {
82 | //console.log(data)
83 | renderNotes(data)
84 | })
85 |
86 | }
87 | }
88 |
89 |
90 | async function deleteUserNote(e){
91 |
92 | showAnimation(e)
93 |
94 | const deleteMe = e.target.dataset.deleteId
95 |
96 | if (netlifyIdentity.currentUser() !== null){
97 |
98 | await fetch(`/.netlify/functions/delete-note?id=${deleteMe}`, {
99 | headers: {
100 | Authorization: `Bearer ${theToken()}`
101 | }
102 | }).then((r) => {
103 |
104 | removeAnimation()
105 |
106 | if (r.ok){
107 | getAndRenderUserNotes()
108 | }
109 | if (!r.ok){
110 | alert('Something is messed up. You could try logging out and back in.')
111 | }
112 | })
113 | }
114 | }
115 |
116 | function theToken(){
117 | if (netlifyIdentity.currentUser() !== null){
118 | const localUser = JSON.parse(localStorage.getItem('gotrue.user'))
119 | return localUser.token.access_token
120 | } else {
121 | return false
122 | }
123 | }
124 |
125 | function showAnimation(){
126 | document.getElementById('animation').style.display = "grid"
127 | }
128 |
129 | function removeAnimation(){
130 | document.getElementById('animation').style.display = "none"
131 | }
132 |
133 | window.netlifyIdentity.on('init', () => {
134 | console.log('netlifyIdentity local object ready')
135 | })
136 |
137 | window.netlifyIdentity.on('login', (u) => {
138 | console.log('logging in a user, giving them a token, here they are: ')
139 | console.log(u)
140 | applyBodyClass('logged-in')
141 | getAndRenderUserNotes()
142 | })
143 |
144 | window.netlifyIdentity.on('logout', () => {
145 | console.log('user logged out')
146 | applyBodyClass('logged-out')
147 | })
148 |
149 | applyBodyClass = (str) => {
150 | document.querySelector('body').className = ''
151 | document.querySelector('body').classList.add(str)
152 | }
153 |
154 | window.addEventListener('DOMContentLoaded', (event) => {
155 | removeAnimation()
156 | });
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | # example netlify.toml
2 | [build]
3 | command = "# no build command"
4 | functions = "netlify/functions"
5 | publish = "."
6 |
7 | ## Uncomment to use this redirect for Single Page Applications like create-react-app.
8 | ## Not needed for static site generators.
9 | #[[redirects]]
10 | # from = "/*"
11 | # to = "/index.html"
12 | # status = 200
13 |
14 | ## (optional) Settings for Netlify Dev
15 | ## https://github.com/netlify/cli/blob/main/docs/netlify-dev.md#project-detection
16 | #[dev]
17 | # command = "yarn start" # Command to start your dev server
18 | # port = 3000 # Port that the dev server will be listening on
19 | # publish = "dist" # Folder with the static content for _redirect file
20 |
21 | ## more info on configuring this file: https://www.netlify.com/docs/netlify-toml-reference/
22 |
--------------------------------------------------------------------------------
/netlify/functions/create-note/create-note.js:
--------------------------------------------------------------------------------
1 | const process = require('process')
2 |
3 | const sanityClient = require('@sanity/client')
4 |
5 | const client = sanityClient({
6 | projectId: process.env.SANITY_PROJECT,
7 | dataset: process.env.SANITY_DATASET,
8 | token: process.env.SANITY_TOKEN,
9 | apiVersion: '2022-01-01',
10 | useCdn: false,
11 | })
12 |
13 | const handler = async (event, context) => {
14 |
15 | const noteText = event.queryStringParameters.note
16 | const uId = context.clientContext.user.sub
17 | const uRoles = context.clientContext.user.app_metadata.roles
18 |
19 | /* no user, no go */
20 | if (!uId) {
21 | console.log('No user!')
22 | return {
23 | statusCode: 401,
24 | body: JSON.stringify({
25 | data: 'no go',
26 | }),
27 | }
28 | }
29 |
30 | /* no basic role, no go */
31 | if (uRoles[0] !== 'basic') {
32 | console.log('No basic role!')
33 | return {
34 | statusCode: 401,
35 | body: JSON.stringify({
36 | data: 'no go',
37 | }),
38 | }
39 | }
40 |
41 | const newNote = {
42 | _type: 'note',
43 | title: noteText,
44 | belongsTo: {
45 | _type: 'reference',
46 | _ref: uId
47 | }
48 | }
49 |
50 | try {
51 |
52 | const result = await client.create(newNote).then((res) => {
53 | console.log('RESULT FROM SANITY: ', res)
54 | })
55 |
56 | return {
57 | statusCode: 200,
58 | headers: { 'Content-Type': 'application/json' },
59 | body: JSON.stringify(result)
60 | }
61 | }
62 |
63 | catch (error) {
64 | console.log(error)
65 | return {
66 | headers: { 'Content-Type': 'application/json' },
67 | statusCode: 500,
68 | body: error.responseBody || JSON.stringify({ error: 'An error occurred' }),
69 | }
70 | }
71 | }
72 |
73 | module.exports = { handler }
--------------------------------------------------------------------------------
/netlify/functions/create-note/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sanity-create",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "sanity-create",
9 | "version": "1.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "@sanity/client": "^0.147.3"
13 | }
14 | },
15 | "node_modules/@sanity/client": {
16 | "version": "0.147.3",
17 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-0.147.3.tgz",
18 | "integrity": "sha512-wXWL1mPyQZB+1te2KPtSX2zQ0rc+/Ol4DsQYUQ7gY0N/ESWXqLuD14ixWAkLNGy1SbK3ZDLuTrGOstpb7va+Gw==",
19 | "dependencies": {
20 | "@sanity/eventsource": "0.147.0",
21 | "@sanity/generate-help-url": "0.147.0",
22 | "@sanity/observable": "0.147.0",
23 | "deep-assign": "^2.0.0",
24 | "get-it": "^5.0.0",
25 | "make-error": "^1.3.0",
26 | "object-assign": "^4.1.1"
27 | }
28 | },
29 | "node_modules/@sanity/eventsource": {
30 | "version": "0.147.0",
31 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-0.147.0.tgz",
32 | "integrity": "sha512-06XsHijSkIyz39Pkx/nNKOVDwXhLtUoYx98WirCUF3TdRt8tGQ6W/GCOSufcv4RdyQRi1d8FRwBS+kE3lxf5Fg==",
33 | "dependencies": {
34 | "eventsource": "^1.0.6",
35 | "eventsource-polyfill": "^0.9.6"
36 | }
37 | },
38 | "node_modules/@sanity/generate-help-url": {
39 | "version": "0.147.0",
40 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.147.0.tgz",
41 | "integrity": "sha512-jf0PWK7dpSSJUI0zJdh+PFUODmsP5dS6P9iYv/ufhyYzmD+2iV7YCpA6weNhsmNGnil2+CTj6Eg43tSKxiClRA=="
42 | },
43 | "node_modules/@sanity/observable": {
44 | "version": "0.147.0",
45 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-0.147.0.tgz",
46 | "integrity": "sha512-sQZD1fyEP8HxW3wIT9M90myg1yp4BcMr3/Q9Cu+D3ubIliTFIefi3z0WetQwEvUNq0SQE99242a+lhDFmcmTEg==",
47 | "dependencies": {
48 | "object-assign": "^4.1.1",
49 | "rxjs": "^6.5.3"
50 | }
51 | },
52 | "node_modules/@sanity/timed-out": {
53 | "version": "4.0.2",
54 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
55 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==",
56 | "engines": {
57 | "node": ">=0.10.0"
58 | }
59 | },
60 | "node_modules/capture-stack-trace": {
61 | "version": "1.0.1",
62 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
63 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
64 | "engines": {
65 | "node": ">=0.10.0"
66 | }
67 | },
68 | "node_modules/core-util-is": {
69 | "version": "1.0.3",
70 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
71 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
72 | },
73 | "node_modules/create-error-class": {
74 | "version": "3.0.2",
75 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
76 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
77 | "dependencies": {
78 | "capture-stack-trace": "^1.0.0"
79 | },
80 | "engines": {
81 | "node": ">=0.10.0"
82 | }
83 | },
84 | "node_modules/debug": {
85 | "version": "2.6.9",
86 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
87 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
88 | "dependencies": {
89 | "ms": "2.0.0"
90 | }
91 | },
92 | "node_modules/decompress-response": {
93 | "version": "3.3.0",
94 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
95 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
96 | "dependencies": {
97 | "mimic-response": "^1.0.0"
98 | },
99 | "engines": {
100 | "node": ">=4"
101 | }
102 | },
103 | "node_modules/deep-assign": {
104 | "version": "2.0.0",
105 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
106 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
107 | "dependencies": {
108 | "is-obj": "^1.0.0"
109 | },
110 | "engines": {
111 | "node": ">=0.10.0"
112 | }
113 | },
114 | "node_modules/eventsource": {
115 | "version": "1.1.0",
116 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
117 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
118 | "dependencies": {
119 | "original": "^1.0.0"
120 | },
121 | "engines": {
122 | "node": ">=0.12.0"
123 | }
124 | },
125 | "node_modules/eventsource-polyfill": {
126 | "version": "0.9.6",
127 | "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz",
128 | "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw="
129 | },
130 | "node_modules/follow-redirects": {
131 | "version": "1.14.5",
132 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
133 | "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==",
134 | "funding": [
135 | {
136 | "type": "individual",
137 | "url": "https://github.com/sponsors/RubenVerborgh"
138 | }
139 | ],
140 | "engines": {
141 | "node": ">=4.0"
142 | },
143 | "peerDependenciesMeta": {
144 | "debug": {
145 | "optional": true
146 | }
147 | }
148 | },
149 | "node_modules/form-urlencoded": {
150 | "version": "2.0.9",
151 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
152 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
153 | },
154 | "node_modules/from2": {
155 | "version": "2.3.0",
156 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
157 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
158 | "dependencies": {
159 | "inherits": "^2.0.1",
160 | "readable-stream": "^2.0.0"
161 | }
162 | },
163 | "node_modules/get-it": {
164 | "version": "5.0.5",
165 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.0.5.tgz",
166 | "integrity": "sha512-P5McakQI/9611hP0cYqyF0VlhxQj49ok21TvCbNEqBfsVVC/ZnmYPP91bky4N4/Oy1HmXFZ/CMh6CCH8nAgLpQ==",
167 | "dependencies": {
168 | "@sanity/timed-out": "^4.0.2",
169 | "create-error-class": "^3.0.2",
170 | "debug": "^2.6.8",
171 | "decompress-response": "^3.3.0",
172 | "follow-redirects": "^1.2.4",
173 | "form-urlencoded": "^2.0.7",
174 | "in-publish": "^2.0.0",
175 | "into-stream": "^3.1.0",
176 | "is-plain-object": "^2.0.4",
177 | "is-retry-allowed": "^1.1.0",
178 | "is-stream": "^1.1.0",
179 | "nano-pubsub": "^1.0.2",
180 | "object-assign": "^4.1.1",
181 | "parse-headers": "^2.0.1",
182 | "progress-stream": "^2.0.0",
183 | "same-origin": "^0.1.1",
184 | "simple-concat": "^1.0.0",
185 | "tunnel-agent": "^0.6.0",
186 | "url-parse": "^1.1.9"
187 | },
188 | "engines": {
189 | "node": ">=8.0.0"
190 | }
191 | },
192 | "node_modules/in-publish": {
193 | "version": "2.0.1",
194 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
195 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
196 | "bin": {
197 | "in-install": "in-install.js",
198 | "in-publish": "in-publish.js",
199 | "not-in-install": "not-in-install.js",
200 | "not-in-publish": "not-in-publish.js"
201 | }
202 | },
203 | "node_modules/inherits": {
204 | "version": "2.0.4",
205 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
206 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
207 | },
208 | "node_modules/into-stream": {
209 | "version": "3.1.0",
210 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
211 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
212 | "dependencies": {
213 | "from2": "^2.1.1",
214 | "p-is-promise": "^1.1.0"
215 | },
216 | "engines": {
217 | "node": ">=4"
218 | }
219 | },
220 | "node_modules/is-obj": {
221 | "version": "1.0.1",
222 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
223 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
224 | "engines": {
225 | "node": ">=0.10.0"
226 | }
227 | },
228 | "node_modules/is-plain-object": {
229 | "version": "2.0.4",
230 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
231 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
232 | "dependencies": {
233 | "isobject": "^3.0.1"
234 | },
235 | "engines": {
236 | "node": ">=0.10.0"
237 | }
238 | },
239 | "node_modules/is-retry-allowed": {
240 | "version": "1.2.0",
241 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
242 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
243 | "engines": {
244 | "node": ">=0.10.0"
245 | }
246 | },
247 | "node_modules/is-stream": {
248 | "version": "1.1.0",
249 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
250 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
251 | "engines": {
252 | "node": ">=0.10.0"
253 | }
254 | },
255 | "node_modules/isarray": {
256 | "version": "1.0.0",
257 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
258 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
259 | },
260 | "node_modules/isobject": {
261 | "version": "3.0.1",
262 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
263 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
264 | "engines": {
265 | "node": ">=0.10.0"
266 | }
267 | },
268 | "node_modules/make-error": {
269 | "version": "1.3.6",
270 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
271 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
272 | },
273 | "node_modules/mimic-response": {
274 | "version": "1.0.1",
275 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
276 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
277 | "engines": {
278 | "node": ">=4"
279 | }
280 | },
281 | "node_modules/ms": {
282 | "version": "2.0.0",
283 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
284 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
285 | },
286 | "node_modules/nano-pubsub": {
287 | "version": "1.0.2",
288 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
289 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
290 | },
291 | "node_modules/object-assign": {
292 | "version": "4.1.1",
293 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
294 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
295 | "engines": {
296 | "node": ">=0.10.0"
297 | }
298 | },
299 | "node_modules/original": {
300 | "version": "1.0.2",
301 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
302 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
303 | "dependencies": {
304 | "url-parse": "^1.4.3"
305 | }
306 | },
307 | "node_modules/p-is-promise": {
308 | "version": "1.1.0",
309 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
310 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
311 | "engines": {
312 | "node": ">=4"
313 | }
314 | },
315 | "node_modules/parse-headers": {
316 | "version": "2.0.4",
317 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
318 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
319 | },
320 | "node_modules/process-nextick-args": {
321 | "version": "2.0.1",
322 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
323 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
324 | },
325 | "node_modules/progress-stream": {
326 | "version": "2.0.0",
327 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
328 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
329 | "dependencies": {
330 | "speedometer": "~1.0.0",
331 | "through2": "~2.0.3"
332 | }
333 | },
334 | "node_modules/querystringify": {
335 | "version": "2.2.0",
336 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
337 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
338 | },
339 | "node_modules/readable-stream": {
340 | "version": "2.3.7",
341 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
342 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
343 | "dependencies": {
344 | "core-util-is": "~1.0.0",
345 | "inherits": "~2.0.3",
346 | "isarray": "~1.0.0",
347 | "process-nextick-args": "~2.0.0",
348 | "safe-buffer": "~5.1.1",
349 | "string_decoder": "~1.1.1",
350 | "util-deprecate": "~1.0.1"
351 | }
352 | },
353 | "node_modules/requires-port": {
354 | "version": "1.0.0",
355 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
356 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
357 | },
358 | "node_modules/rxjs": {
359 | "version": "6.6.7",
360 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
361 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
362 | "dependencies": {
363 | "tslib": "^1.9.0"
364 | },
365 | "engines": {
366 | "npm": ">=2.0.0"
367 | }
368 | },
369 | "node_modules/safe-buffer": {
370 | "version": "5.1.2",
371 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
372 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
373 | },
374 | "node_modules/same-origin": {
375 | "version": "0.1.1",
376 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
377 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
378 | },
379 | "node_modules/simple-concat": {
380 | "version": "1.0.1",
381 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
382 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
383 | "funding": [
384 | {
385 | "type": "github",
386 | "url": "https://github.com/sponsors/feross"
387 | },
388 | {
389 | "type": "patreon",
390 | "url": "https://www.patreon.com/feross"
391 | },
392 | {
393 | "type": "consulting",
394 | "url": "https://feross.org/support"
395 | }
396 | ]
397 | },
398 | "node_modules/speedometer": {
399 | "version": "1.0.0",
400 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
401 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
402 | },
403 | "node_modules/string_decoder": {
404 | "version": "1.1.1",
405 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
406 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
407 | "dependencies": {
408 | "safe-buffer": "~5.1.0"
409 | }
410 | },
411 | "node_modules/through2": {
412 | "version": "2.0.5",
413 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
414 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
415 | "dependencies": {
416 | "readable-stream": "~2.3.6",
417 | "xtend": "~4.0.1"
418 | }
419 | },
420 | "node_modules/tslib": {
421 | "version": "1.14.1",
422 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
423 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
424 | },
425 | "node_modules/tunnel-agent": {
426 | "version": "0.6.0",
427 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
428 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
429 | "dependencies": {
430 | "safe-buffer": "^5.0.1"
431 | },
432 | "engines": {
433 | "node": "*"
434 | }
435 | },
436 | "node_modules/url-parse": {
437 | "version": "1.5.3",
438 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
439 | "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
440 | "dependencies": {
441 | "querystringify": "^2.1.1",
442 | "requires-port": "^1.0.0"
443 | }
444 | },
445 | "node_modules/util-deprecate": {
446 | "version": "1.0.2",
447 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
448 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
449 | },
450 | "node_modules/xtend": {
451 | "version": "4.0.2",
452 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
453 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
454 | "engines": {
455 | "node": ">=0.4"
456 | }
457 | }
458 | },
459 | "dependencies": {
460 | "@sanity/client": {
461 | "version": "0.147.3",
462 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-0.147.3.tgz",
463 | "integrity": "sha512-wXWL1mPyQZB+1te2KPtSX2zQ0rc+/Ol4DsQYUQ7gY0N/ESWXqLuD14ixWAkLNGy1SbK3ZDLuTrGOstpb7va+Gw==",
464 | "requires": {
465 | "@sanity/eventsource": "0.147.0",
466 | "@sanity/generate-help-url": "0.147.0",
467 | "@sanity/observable": "0.147.0",
468 | "deep-assign": "^2.0.0",
469 | "get-it": "^5.0.0",
470 | "make-error": "^1.3.0",
471 | "object-assign": "^4.1.1"
472 | }
473 | },
474 | "@sanity/eventsource": {
475 | "version": "0.147.0",
476 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-0.147.0.tgz",
477 | "integrity": "sha512-06XsHijSkIyz39Pkx/nNKOVDwXhLtUoYx98WirCUF3TdRt8tGQ6W/GCOSufcv4RdyQRi1d8FRwBS+kE3lxf5Fg==",
478 | "requires": {
479 | "eventsource": "^1.0.6",
480 | "eventsource-polyfill": "^0.9.6"
481 | }
482 | },
483 | "@sanity/generate-help-url": {
484 | "version": "0.147.0",
485 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.147.0.tgz",
486 | "integrity": "sha512-jf0PWK7dpSSJUI0zJdh+PFUODmsP5dS6P9iYv/ufhyYzmD+2iV7YCpA6weNhsmNGnil2+CTj6Eg43tSKxiClRA=="
487 | },
488 | "@sanity/observable": {
489 | "version": "0.147.0",
490 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-0.147.0.tgz",
491 | "integrity": "sha512-sQZD1fyEP8HxW3wIT9M90myg1yp4BcMr3/Q9Cu+D3ubIliTFIefi3z0WetQwEvUNq0SQE99242a+lhDFmcmTEg==",
492 | "requires": {
493 | "object-assign": "^4.1.1",
494 | "rxjs": "^6.5.3"
495 | }
496 | },
497 | "@sanity/timed-out": {
498 | "version": "4.0.2",
499 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
500 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w=="
501 | },
502 | "capture-stack-trace": {
503 | "version": "1.0.1",
504 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
505 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw=="
506 | },
507 | "core-util-is": {
508 | "version": "1.0.3",
509 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
510 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
511 | },
512 | "create-error-class": {
513 | "version": "3.0.2",
514 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
515 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
516 | "requires": {
517 | "capture-stack-trace": "^1.0.0"
518 | }
519 | },
520 | "debug": {
521 | "version": "2.6.9",
522 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
523 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
524 | "requires": {
525 | "ms": "2.0.0"
526 | }
527 | },
528 | "decompress-response": {
529 | "version": "3.3.0",
530 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
531 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
532 | "requires": {
533 | "mimic-response": "^1.0.0"
534 | }
535 | },
536 | "deep-assign": {
537 | "version": "2.0.0",
538 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
539 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
540 | "requires": {
541 | "is-obj": "^1.0.0"
542 | }
543 | },
544 | "eventsource": {
545 | "version": "1.1.0",
546 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
547 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
548 | "requires": {
549 | "original": "^1.0.0"
550 | }
551 | },
552 | "eventsource-polyfill": {
553 | "version": "0.9.6",
554 | "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz",
555 | "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw="
556 | },
557 | "follow-redirects": {
558 | "version": "1.14.5",
559 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
560 | "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA=="
561 | },
562 | "form-urlencoded": {
563 | "version": "2.0.9",
564 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
565 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
566 | },
567 | "from2": {
568 | "version": "2.3.0",
569 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
570 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
571 | "requires": {
572 | "inherits": "^2.0.1",
573 | "readable-stream": "^2.0.0"
574 | }
575 | },
576 | "get-it": {
577 | "version": "5.0.5",
578 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.0.5.tgz",
579 | "integrity": "sha512-P5McakQI/9611hP0cYqyF0VlhxQj49ok21TvCbNEqBfsVVC/ZnmYPP91bky4N4/Oy1HmXFZ/CMh6CCH8nAgLpQ==",
580 | "requires": {
581 | "@sanity/timed-out": "^4.0.2",
582 | "create-error-class": "^3.0.2",
583 | "debug": "^2.6.8",
584 | "decompress-response": "^3.3.0",
585 | "follow-redirects": "^1.2.4",
586 | "form-urlencoded": "^2.0.7",
587 | "in-publish": "^2.0.0",
588 | "into-stream": "^3.1.0",
589 | "is-plain-object": "^2.0.4",
590 | "is-retry-allowed": "^1.1.0",
591 | "is-stream": "^1.1.0",
592 | "nano-pubsub": "^1.0.2",
593 | "object-assign": "^4.1.1",
594 | "parse-headers": "^2.0.1",
595 | "progress-stream": "^2.0.0",
596 | "same-origin": "^0.1.1",
597 | "simple-concat": "^1.0.0",
598 | "tunnel-agent": "^0.6.0",
599 | "url-parse": "^1.1.9"
600 | }
601 | },
602 | "in-publish": {
603 | "version": "2.0.1",
604 | "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
605 | "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
606 | },
607 | "inherits": {
608 | "version": "2.0.4",
609 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
610 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
611 | },
612 | "into-stream": {
613 | "version": "3.1.0",
614 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
615 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
616 | "requires": {
617 | "from2": "^2.1.1",
618 | "p-is-promise": "^1.1.0"
619 | }
620 | },
621 | "is-obj": {
622 | "version": "1.0.1",
623 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
624 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
625 | },
626 | "is-plain-object": {
627 | "version": "2.0.4",
628 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
629 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
630 | "requires": {
631 | "isobject": "^3.0.1"
632 | }
633 | },
634 | "is-retry-allowed": {
635 | "version": "1.2.0",
636 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
637 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="
638 | },
639 | "is-stream": {
640 | "version": "1.1.0",
641 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
642 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
643 | },
644 | "isarray": {
645 | "version": "1.0.0",
646 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
647 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
648 | },
649 | "isobject": {
650 | "version": "3.0.1",
651 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
652 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
653 | },
654 | "make-error": {
655 | "version": "1.3.6",
656 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
657 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
658 | },
659 | "mimic-response": {
660 | "version": "1.0.1",
661 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
662 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
663 | },
664 | "ms": {
665 | "version": "2.0.0",
666 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
667 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
668 | },
669 | "nano-pubsub": {
670 | "version": "1.0.2",
671 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
672 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
673 | },
674 | "object-assign": {
675 | "version": "4.1.1",
676 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
677 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
678 | },
679 | "original": {
680 | "version": "1.0.2",
681 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
682 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
683 | "requires": {
684 | "url-parse": "^1.4.3"
685 | }
686 | },
687 | "p-is-promise": {
688 | "version": "1.1.0",
689 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
690 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4="
691 | },
692 | "parse-headers": {
693 | "version": "2.0.4",
694 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
695 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
696 | },
697 | "process-nextick-args": {
698 | "version": "2.0.1",
699 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
700 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
701 | },
702 | "progress-stream": {
703 | "version": "2.0.0",
704 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
705 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
706 | "requires": {
707 | "speedometer": "~1.0.0",
708 | "through2": "~2.0.3"
709 | }
710 | },
711 | "querystringify": {
712 | "version": "2.2.0",
713 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
714 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
715 | },
716 | "readable-stream": {
717 | "version": "2.3.7",
718 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
719 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
720 | "requires": {
721 | "core-util-is": "~1.0.0",
722 | "inherits": "~2.0.3",
723 | "isarray": "~1.0.0",
724 | "process-nextick-args": "~2.0.0",
725 | "safe-buffer": "~5.1.1",
726 | "string_decoder": "~1.1.1",
727 | "util-deprecate": "~1.0.1"
728 | }
729 | },
730 | "requires-port": {
731 | "version": "1.0.0",
732 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
733 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
734 | },
735 | "rxjs": {
736 | "version": "6.6.7",
737 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
738 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
739 | "requires": {
740 | "tslib": "^1.9.0"
741 | }
742 | },
743 | "safe-buffer": {
744 | "version": "5.1.2",
745 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
746 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
747 | },
748 | "same-origin": {
749 | "version": "0.1.1",
750 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
751 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
752 | },
753 | "simple-concat": {
754 | "version": "1.0.1",
755 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
756 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
757 | },
758 | "speedometer": {
759 | "version": "1.0.0",
760 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
761 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
762 | },
763 | "string_decoder": {
764 | "version": "1.1.1",
765 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
766 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
767 | "requires": {
768 | "safe-buffer": "~5.1.0"
769 | }
770 | },
771 | "through2": {
772 | "version": "2.0.5",
773 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
774 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
775 | "requires": {
776 | "readable-stream": "~2.3.6",
777 | "xtend": "~4.0.1"
778 | }
779 | },
780 | "tslib": {
781 | "version": "1.14.1",
782 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
783 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
784 | },
785 | "tunnel-agent": {
786 | "version": "0.6.0",
787 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
788 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
789 | "requires": {
790 | "safe-buffer": "^5.0.1"
791 | }
792 | },
793 | "url-parse": {
794 | "version": "1.5.3",
795 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz",
796 | "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==",
797 | "requires": {
798 | "querystringify": "^2.1.1",
799 | "requires-port": "^1.0.0"
800 | }
801 | },
802 | "util-deprecate": {
803 | "version": "1.0.2",
804 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
805 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
806 | },
807 | "xtend": {
808 | "version": "4.0.2",
809 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
810 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
811 | }
812 | }
813 | }
814 |
--------------------------------------------------------------------------------
/netlify/functions/create-note/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sanity-create",
3 | "version": "1.0.0",
4 | "description": "netlify functions:create - Create documents in Sanity.io",
5 | "main": "sanity-create.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [
10 | "netlify",
11 | "serverless",
12 | "js",
13 | "sanity"
14 | ],
15 | "author": "Sanity.io",
16 | "license": "MIT",
17 | "dependencies": {
18 | "@sanity/client": "^0.147.3"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/netlify/functions/delete-note/delete-note.js:
--------------------------------------------------------------------------------
1 | const process = require('process')
2 |
3 | const sanityClient = require('@sanity/client')
4 |
5 | const client = sanityClient({
6 | projectId: process.env.SANITY_PROJECT,
7 | dataset: process.env.SANITY_DATASET,
8 | token: process.env.SANITY_TOKEN,
9 | apiVersion: '2022-01-01',
10 | useCdn: false,
11 | })
12 |
13 | const handler = async (event, context) => {
14 |
15 | const deleteThisId = event.queryStringParameters.id
16 | const uId = context.clientContext.user.sub
17 | const uRoles = context.clientContext.user.app_metadata.roles
18 |
19 | /* no user, no go */
20 | if (!uId) {
21 | console.log('No user!')
22 | return {
23 | statusCode: 401,
24 | body: JSON.stringify({
25 | data: 'no go',
26 | }),
27 | }
28 | }
29 |
30 | /* no basic role, no go */
31 | if (uRoles[0] !== 'basic') {
32 | console.log('No basic role!')
33 | return {
34 | statusCode: 401,
35 | body: JSON.stringify({
36 | data: 'no go',
37 | }),
38 | }
39 | }
40 |
41 | try {
42 |
43 | const result = await client.delete(deleteThisId).then((res) => {
44 | console.log('RESULT FROM SANITY: ', res)
45 | })
46 |
47 | return {
48 | statusCode: 200,
49 | headers: { 'Content-Type': 'application/json' },
50 | body: JSON.stringify(result)
51 | }
52 | }
53 |
54 | catch (error) {
55 | console.log(error)
56 | return {
57 | headers: { 'Content-Type': 'application/json' },
58 | statusCode: 500,
59 | body: error.responseBody || JSON.stringify({ error: 'An error occurred' }),
60 | }
61 | }
62 | }
63 |
64 | module.exports = { handler }
--------------------------------------------------------------------------------
/netlify/functions/identity-signup/identity-signup.js:
--------------------------------------------------------------------------------
1 | const process = require('process')
2 |
3 | const sanityClient = require('@sanity/client')
4 |
5 | const client = sanityClient({
6 | projectId: process.env.SANITY_PROJECT,
7 | dataset: process.env.SANITY_DATASET,
8 | token: process.env.SANITY_TOKEN,
9 | apiVersion: '2022-01-01',
10 | useCdn: false,
11 | })
12 |
13 | const handler = async function (event) {
14 | const data = JSON.parse(event.body)
15 | const { user } = data
16 |
17 | /*
18 | prepare data to pass through to netlify as user is created
19 | */
20 | const netlifyResponseBody = {
21 |
22 | app_metadata: {
23 | roles: ['basic'],
24 | app_other_thing: 'some app value'
25 | },
26 | user_metadata: {
27 | ...user.user_metadata,
28 | user_other_thing: 'some user value'
29 | },
30 | }
31 |
32 | /*
33 | create the user in sanity with the new users id as the sanity document id
34 | */
35 | const doc = {
36 | _id: user.id,
37 | _type: 'webUser',
38 | email: user.email,
39 | fullName: user.user_metadata.full_name,
40 | }
41 |
42 | try {
43 | const result = await client.createIfNotExists(doc).then((res) => {
44 | console.log('SANITY RESPONSE: ', res)
45 | })
46 | return {
47 | statusCode: 200,
48 | headers: { 'Content-Type': 'application/json' },
49 | body: JSON.stringify(netlifyResponseBody),
50 | }
51 | } catch (error) {
52 | return {
53 | headers: { 'Content-Type': 'application/json' },
54 | statusCode: 500,
55 | body: error.responseBody || JSON.stringify({ error: 'An error occurred' }),
56 | }
57 | }
58 | }
59 |
60 | module.exports = { handler }
61 |
--------------------------------------------------------------------------------
/netlify/functions/user-notes/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sanity-groq",
3 | "version": "1.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "sanity-groq",
9 | "version": "1.0.0",
10 | "license": "MIT",
11 | "dependencies": {
12 | "@sanity/client": "^0.147.3"
13 | }
14 | },
15 | "node_modules/@sanity/client": {
16 | "version": "0.147.3",
17 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-0.147.3.tgz",
18 | "integrity": "sha512-wXWL1mPyQZB+1te2KPtSX2zQ0rc+/Ol4DsQYUQ7gY0N/ESWXqLuD14ixWAkLNGy1SbK3ZDLuTrGOstpb7va+Gw==",
19 | "dependencies": {
20 | "@sanity/eventsource": "0.147.0",
21 | "@sanity/generate-help-url": "0.147.0",
22 | "@sanity/observable": "0.147.0",
23 | "deep-assign": "^2.0.0",
24 | "get-it": "^5.0.0",
25 | "make-error": "^1.3.0",
26 | "object-assign": "^4.1.1"
27 | }
28 | },
29 | "node_modules/@sanity/eventsource": {
30 | "version": "0.147.0",
31 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-0.147.0.tgz",
32 | "integrity": "sha512-06XsHijSkIyz39Pkx/nNKOVDwXhLtUoYx98WirCUF3TdRt8tGQ6W/GCOSufcv4RdyQRi1d8FRwBS+kE3lxf5Fg==",
33 | "dependencies": {
34 | "eventsource": "^1.0.6",
35 | "eventsource-polyfill": "^0.9.6"
36 | }
37 | },
38 | "node_modules/@sanity/generate-help-url": {
39 | "version": "0.147.0",
40 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.147.0.tgz",
41 | "integrity": "sha512-jf0PWK7dpSSJUI0zJdh+PFUODmsP5dS6P9iYv/ufhyYzmD+2iV7YCpA6weNhsmNGnil2+CTj6Eg43tSKxiClRA=="
42 | },
43 | "node_modules/@sanity/observable": {
44 | "version": "0.147.0",
45 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-0.147.0.tgz",
46 | "integrity": "sha512-sQZD1fyEP8HxW3wIT9M90myg1yp4BcMr3/Q9Cu+D3ubIliTFIefi3z0WetQwEvUNq0SQE99242a+lhDFmcmTEg==",
47 | "dependencies": {
48 | "object-assign": "^4.1.1",
49 | "rxjs": "^6.5.3"
50 | }
51 | },
52 | "node_modules/@sanity/timed-out": {
53 | "version": "4.0.2",
54 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
55 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==",
56 | "engines": {
57 | "node": ">=0.10.0"
58 | }
59 | },
60 | "node_modules/capture-stack-trace": {
61 | "version": "1.0.1",
62 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
63 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
64 | "engines": {
65 | "node": ">=0.10.0"
66 | }
67 | },
68 | "node_modules/core-util-is": {
69 | "version": "1.0.3",
70 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
71 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
72 | },
73 | "node_modules/create-error-class": {
74 | "version": "3.0.2",
75 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
76 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
77 | "dependencies": {
78 | "capture-stack-trace": "^1.0.0"
79 | },
80 | "engines": {
81 | "node": ">=0.10.0"
82 | }
83 | },
84 | "node_modules/debug": {
85 | "version": "2.6.9",
86 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
87 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
88 | "dependencies": {
89 | "ms": "2.0.0"
90 | }
91 | },
92 | "node_modules/decompress-response": {
93 | "version": "3.3.0",
94 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
95 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
96 | "dependencies": {
97 | "mimic-response": "^1.0.0"
98 | },
99 | "engines": {
100 | "node": ">=4"
101 | }
102 | },
103 | "node_modules/deep-assign": {
104 | "version": "2.0.0",
105 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
106 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
107 | "dependencies": {
108 | "is-obj": "^1.0.0"
109 | },
110 | "engines": {
111 | "node": ">=0.10.0"
112 | }
113 | },
114 | "node_modules/eventsource": {
115 | "version": "1.1.0",
116 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
117 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
118 | "dependencies": {
119 | "original": "^1.0.0"
120 | },
121 | "engines": {
122 | "node": ">=0.12.0"
123 | }
124 | },
125 | "node_modules/eventsource-polyfill": {
126 | "version": "0.9.6",
127 | "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz",
128 | "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw="
129 | },
130 | "node_modules/follow-redirects": {
131 | "version": "1.14.6",
132 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
133 | "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
134 | "funding": [
135 | {
136 | "type": "individual",
137 | "url": "https://github.com/sponsors/RubenVerborgh"
138 | }
139 | ],
140 | "engines": {
141 | "node": ">=4.0"
142 | },
143 | "peerDependenciesMeta": {
144 | "debug": {
145 | "optional": true
146 | }
147 | }
148 | },
149 | "node_modules/form-urlencoded": {
150 | "version": "2.0.9",
151 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
152 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
153 | },
154 | "node_modules/from2": {
155 | "version": "2.3.0",
156 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
157 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
158 | "dependencies": {
159 | "inherits": "^2.0.1",
160 | "readable-stream": "^2.0.0"
161 | }
162 | },
163 | "node_modules/get-it": {
164 | "version": "5.2.1",
165 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.2.1.tgz",
166 | "integrity": "sha512-KDR5lTKmxKd/XyP3egZ8ieIdKLxKrQPKUFxk86MSoytGjxX4STigaFuwtFGmGx/lBPc1YSpi9wyuQJ5uP8WcRA==",
167 | "dependencies": {
168 | "@sanity/timed-out": "^4.0.2",
169 | "create-error-class": "^3.0.2",
170 | "debug": "^2.6.8",
171 | "decompress-response": "^3.3.0",
172 | "follow-redirects": "^1.2.4",
173 | "form-urlencoded": "^2.0.7",
174 | "into-stream": "^3.1.0",
175 | "is-plain-object": "^2.0.4",
176 | "is-retry-allowed": "^1.1.0",
177 | "is-stream": "^1.1.0",
178 | "nano-pubsub": "^1.0.2",
179 | "object-assign": "^4.1.1",
180 | "parse-headers": "^2.0.1",
181 | "progress-stream": "^2.0.0",
182 | "same-origin": "^0.1.1",
183 | "simple-concat": "^1.0.0",
184 | "tunnel-agent": "^0.6.0",
185 | "url-parse": "^1.1.9"
186 | },
187 | "engines": {
188 | "node": ">=8.0.0"
189 | }
190 | },
191 | "node_modules/inherits": {
192 | "version": "2.0.4",
193 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
194 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
195 | },
196 | "node_modules/into-stream": {
197 | "version": "3.1.0",
198 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
199 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
200 | "dependencies": {
201 | "from2": "^2.1.1",
202 | "p-is-promise": "^1.1.0"
203 | },
204 | "engines": {
205 | "node": ">=4"
206 | }
207 | },
208 | "node_modules/is-obj": {
209 | "version": "1.0.1",
210 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
211 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
212 | "engines": {
213 | "node": ">=0.10.0"
214 | }
215 | },
216 | "node_modules/is-plain-object": {
217 | "version": "2.0.4",
218 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
219 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
220 | "dependencies": {
221 | "isobject": "^3.0.1"
222 | },
223 | "engines": {
224 | "node": ">=0.10.0"
225 | }
226 | },
227 | "node_modules/is-retry-allowed": {
228 | "version": "1.2.0",
229 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
230 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
231 | "engines": {
232 | "node": ">=0.10.0"
233 | }
234 | },
235 | "node_modules/is-stream": {
236 | "version": "1.1.0",
237 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
238 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
239 | "engines": {
240 | "node": ">=0.10.0"
241 | }
242 | },
243 | "node_modules/isarray": {
244 | "version": "1.0.0",
245 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
246 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
247 | },
248 | "node_modules/isobject": {
249 | "version": "3.0.1",
250 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
251 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
252 | "engines": {
253 | "node": ">=0.10.0"
254 | }
255 | },
256 | "node_modules/make-error": {
257 | "version": "1.3.6",
258 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
259 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
260 | },
261 | "node_modules/mimic-response": {
262 | "version": "1.0.1",
263 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
264 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
265 | "engines": {
266 | "node": ">=4"
267 | }
268 | },
269 | "node_modules/ms": {
270 | "version": "2.0.0",
271 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
272 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
273 | },
274 | "node_modules/nano-pubsub": {
275 | "version": "1.0.2",
276 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
277 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
278 | },
279 | "node_modules/object-assign": {
280 | "version": "4.1.1",
281 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
282 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
283 | "engines": {
284 | "node": ">=0.10.0"
285 | }
286 | },
287 | "node_modules/original": {
288 | "version": "1.0.2",
289 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
290 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
291 | "dependencies": {
292 | "url-parse": "^1.4.3"
293 | }
294 | },
295 | "node_modules/p-is-promise": {
296 | "version": "1.1.0",
297 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
298 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
299 | "engines": {
300 | "node": ">=4"
301 | }
302 | },
303 | "node_modules/parse-headers": {
304 | "version": "2.0.4",
305 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
306 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
307 | },
308 | "node_modules/process-nextick-args": {
309 | "version": "2.0.1",
310 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
311 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
312 | },
313 | "node_modules/progress-stream": {
314 | "version": "2.0.0",
315 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
316 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
317 | "dependencies": {
318 | "speedometer": "~1.0.0",
319 | "through2": "~2.0.3"
320 | }
321 | },
322 | "node_modules/querystringify": {
323 | "version": "2.2.0",
324 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
325 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
326 | },
327 | "node_modules/readable-stream": {
328 | "version": "2.3.7",
329 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
330 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
331 | "dependencies": {
332 | "core-util-is": "~1.0.0",
333 | "inherits": "~2.0.3",
334 | "isarray": "~1.0.0",
335 | "process-nextick-args": "~2.0.0",
336 | "safe-buffer": "~5.1.1",
337 | "string_decoder": "~1.1.1",
338 | "util-deprecate": "~1.0.1"
339 | }
340 | },
341 | "node_modules/requires-port": {
342 | "version": "1.0.0",
343 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
344 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
345 | },
346 | "node_modules/rxjs": {
347 | "version": "6.6.7",
348 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
349 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
350 | "dependencies": {
351 | "tslib": "^1.9.0"
352 | },
353 | "engines": {
354 | "npm": ">=2.0.0"
355 | }
356 | },
357 | "node_modules/safe-buffer": {
358 | "version": "5.1.2",
359 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
360 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
361 | },
362 | "node_modules/same-origin": {
363 | "version": "0.1.1",
364 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
365 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
366 | },
367 | "node_modules/simple-concat": {
368 | "version": "1.0.1",
369 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
370 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
371 | "funding": [
372 | {
373 | "type": "github",
374 | "url": "https://github.com/sponsors/feross"
375 | },
376 | {
377 | "type": "patreon",
378 | "url": "https://www.patreon.com/feross"
379 | },
380 | {
381 | "type": "consulting",
382 | "url": "https://feross.org/support"
383 | }
384 | ]
385 | },
386 | "node_modules/speedometer": {
387 | "version": "1.0.0",
388 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
389 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
390 | },
391 | "node_modules/string_decoder": {
392 | "version": "1.1.1",
393 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
394 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
395 | "dependencies": {
396 | "safe-buffer": "~5.1.0"
397 | }
398 | },
399 | "node_modules/through2": {
400 | "version": "2.0.5",
401 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
402 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
403 | "dependencies": {
404 | "readable-stream": "~2.3.6",
405 | "xtend": "~4.0.1"
406 | }
407 | },
408 | "node_modules/tslib": {
409 | "version": "1.14.1",
410 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
411 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
412 | },
413 | "node_modules/tunnel-agent": {
414 | "version": "0.6.0",
415 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
416 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
417 | "dependencies": {
418 | "safe-buffer": "^5.0.1"
419 | },
420 | "engines": {
421 | "node": "*"
422 | }
423 | },
424 | "node_modules/url-parse": {
425 | "version": "1.5.4",
426 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz",
427 | "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==",
428 | "dependencies": {
429 | "querystringify": "^2.1.1",
430 | "requires-port": "^1.0.0"
431 | }
432 | },
433 | "node_modules/util-deprecate": {
434 | "version": "1.0.2",
435 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
436 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
437 | },
438 | "node_modules/xtend": {
439 | "version": "4.0.2",
440 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
441 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
442 | "engines": {
443 | "node": ">=0.4"
444 | }
445 | }
446 | },
447 | "dependencies": {
448 | "@sanity/client": {
449 | "version": "0.147.3",
450 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-0.147.3.tgz",
451 | "integrity": "sha512-wXWL1mPyQZB+1te2KPtSX2zQ0rc+/Ol4DsQYUQ7gY0N/ESWXqLuD14ixWAkLNGy1SbK3ZDLuTrGOstpb7va+Gw==",
452 | "requires": {
453 | "@sanity/eventsource": "0.147.0",
454 | "@sanity/generate-help-url": "0.147.0",
455 | "@sanity/observable": "0.147.0",
456 | "deep-assign": "^2.0.0",
457 | "get-it": "^5.0.0",
458 | "make-error": "^1.3.0",
459 | "object-assign": "^4.1.1"
460 | }
461 | },
462 | "@sanity/eventsource": {
463 | "version": "0.147.0",
464 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-0.147.0.tgz",
465 | "integrity": "sha512-06XsHijSkIyz39Pkx/nNKOVDwXhLtUoYx98WirCUF3TdRt8tGQ6W/GCOSufcv4RdyQRi1d8FRwBS+kE3lxf5Fg==",
466 | "requires": {
467 | "eventsource": "^1.0.6",
468 | "eventsource-polyfill": "^0.9.6"
469 | }
470 | },
471 | "@sanity/generate-help-url": {
472 | "version": "0.147.0",
473 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.147.0.tgz",
474 | "integrity": "sha512-jf0PWK7dpSSJUI0zJdh+PFUODmsP5dS6P9iYv/ufhyYzmD+2iV7YCpA6weNhsmNGnil2+CTj6Eg43tSKxiClRA=="
475 | },
476 | "@sanity/observable": {
477 | "version": "0.147.0",
478 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-0.147.0.tgz",
479 | "integrity": "sha512-sQZD1fyEP8HxW3wIT9M90myg1yp4BcMr3/Q9Cu+D3ubIliTFIefi3z0WetQwEvUNq0SQE99242a+lhDFmcmTEg==",
480 | "requires": {
481 | "object-assign": "^4.1.1",
482 | "rxjs": "^6.5.3"
483 | }
484 | },
485 | "@sanity/timed-out": {
486 | "version": "4.0.2",
487 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
488 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w=="
489 | },
490 | "capture-stack-trace": {
491 | "version": "1.0.1",
492 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
493 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw=="
494 | },
495 | "core-util-is": {
496 | "version": "1.0.3",
497 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
498 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
499 | },
500 | "create-error-class": {
501 | "version": "3.0.2",
502 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
503 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
504 | "requires": {
505 | "capture-stack-trace": "^1.0.0"
506 | }
507 | },
508 | "debug": {
509 | "version": "2.6.9",
510 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
511 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
512 | "requires": {
513 | "ms": "2.0.0"
514 | }
515 | },
516 | "decompress-response": {
517 | "version": "3.3.0",
518 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
519 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
520 | "requires": {
521 | "mimic-response": "^1.0.0"
522 | }
523 | },
524 | "deep-assign": {
525 | "version": "2.0.0",
526 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
527 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
528 | "requires": {
529 | "is-obj": "^1.0.0"
530 | }
531 | },
532 | "eventsource": {
533 | "version": "1.1.0",
534 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
535 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
536 | "requires": {
537 | "original": "^1.0.0"
538 | }
539 | },
540 | "eventsource-polyfill": {
541 | "version": "0.9.6",
542 | "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz",
543 | "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw="
544 | },
545 | "follow-redirects": {
546 | "version": "1.14.6",
547 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
548 | "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
549 | },
550 | "form-urlencoded": {
551 | "version": "2.0.9",
552 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
553 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
554 | },
555 | "from2": {
556 | "version": "2.3.0",
557 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
558 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
559 | "requires": {
560 | "inherits": "^2.0.1",
561 | "readable-stream": "^2.0.0"
562 | }
563 | },
564 | "get-it": {
565 | "version": "5.2.1",
566 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.2.1.tgz",
567 | "integrity": "sha512-KDR5lTKmxKd/XyP3egZ8ieIdKLxKrQPKUFxk86MSoytGjxX4STigaFuwtFGmGx/lBPc1YSpi9wyuQJ5uP8WcRA==",
568 | "requires": {
569 | "@sanity/timed-out": "^4.0.2",
570 | "create-error-class": "^3.0.2",
571 | "debug": "^2.6.8",
572 | "decompress-response": "^3.3.0",
573 | "follow-redirects": "^1.2.4",
574 | "form-urlencoded": "^2.0.7",
575 | "into-stream": "^3.1.0",
576 | "is-plain-object": "^2.0.4",
577 | "is-retry-allowed": "^1.1.0",
578 | "is-stream": "^1.1.0",
579 | "nano-pubsub": "^1.0.2",
580 | "object-assign": "^4.1.1",
581 | "parse-headers": "^2.0.1",
582 | "progress-stream": "^2.0.0",
583 | "same-origin": "^0.1.1",
584 | "simple-concat": "^1.0.0",
585 | "tunnel-agent": "^0.6.0",
586 | "url-parse": "^1.1.9"
587 | }
588 | },
589 | "inherits": {
590 | "version": "2.0.4",
591 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
592 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
593 | },
594 | "into-stream": {
595 | "version": "3.1.0",
596 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
597 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
598 | "requires": {
599 | "from2": "^2.1.1",
600 | "p-is-promise": "^1.1.0"
601 | }
602 | },
603 | "is-obj": {
604 | "version": "1.0.1",
605 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
606 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
607 | },
608 | "is-plain-object": {
609 | "version": "2.0.4",
610 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
611 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
612 | "requires": {
613 | "isobject": "^3.0.1"
614 | }
615 | },
616 | "is-retry-allowed": {
617 | "version": "1.2.0",
618 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
619 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="
620 | },
621 | "is-stream": {
622 | "version": "1.1.0",
623 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
624 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
625 | },
626 | "isarray": {
627 | "version": "1.0.0",
628 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
629 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
630 | },
631 | "isobject": {
632 | "version": "3.0.1",
633 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
634 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
635 | },
636 | "make-error": {
637 | "version": "1.3.6",
638 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
639 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
640 | },
641 | "mimic-response": {
642 | "version": "1.0.1",
643 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
644 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
645 | },
646 | "ms": {
647 | "version": "2.0.0",
648 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
649 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
650 | },
651 | "nano-pubsub": {
652 | "version": "1.0.2",
653 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
654 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
655 | },
656 | "object-assign": {
657 | "version": "4.1.1",
658 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
659 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
660 | },
661 | "original": {
662 | "version": "1.0.2",
663 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
664 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
665 | "requires": {
666 | "url-parse": "^1.4.3"
667 | }
668 | },
669 | "p-is-promise": {
670 | "version": "1.1.0",
671 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
672 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4="
673 | },
674 | "parse-headers": {
675 | "version": "2.0.4",
676 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
677 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
678 | },
679 | "process-nextick-args": {
680 | "version": "2.0.1",
681 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
682 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
683 | },
684 | "progress-stream": {
685 | "version": "2.0.0",
686 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
687 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
688 | "requires": {
689 | "speedometer": "~1.0.0",
690 | "through2": "~2.0.3"
691 | }
692 | },
693 | "querystringify": {
694 | "version": "2.2.0",
695 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
696 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
697 | },
698 | "readable-stream": {
699 | "version": "2.3.7",
700 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
701 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
702 | "requires": {
703 | "core-util-is": "~1.0.0",
704 | "inherits": "~2.0.3",
705 | "isarray": "~1.0.0",
706 | "process-nextick-args": "~2.0.0",
707 | "safe-buffer": "~5.1.1",
708 | "string_decoder": "~1.1.1",
709 | "util-deprecate": "~1.0.1"
710 | }
711 | },
712 | "requires-port": {
713 | "version": "1.0.0",
714 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
715 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
716 | },
717 | "rxjs": {
718 | "version": "6.6.7",
719 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
720 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
721 | "requires": {
722 | "tslib": "^1.9.0"
723 | }
724 | },
725 | "safe-buffer": {
726 | "version": "5.1.2",
727 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
728 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
729 | },
730 | "same-origin": {
731 | "version": "0.1.1",
732 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
733 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
734 | },
735 | "simple-concat": {
736 | "version": "1.0.1",
737 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
738 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
739 | },
740 | "speedometer": {
741 | "version": "1.0.0",
742 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
743 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
744 | },
745 | "string_decoder": {
746 | "version": "1.1.1",
747 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
748 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
749 | "requires": {
750 | "safe-buffer": "~5.1.0"
751 | }
752 | },
753 | "through2": {
754 | "version": "2.0.5",
755 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
756 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
757 | "requires": {
758 | "readable-stream": "~2.3.6",
759 | "xtend": "~4.0.1"
760 | }
761 | },
762 | "tslib": {
763 | "version": "1.14.1",
764 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
765 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
766 | },
767 | "tunnel-agent": {
768 | "version": "0.6.0",
769 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
770 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
771 | "requires": {
772 | "safe-buffer": "^5.0.1"
773 | }
774 | },
775 | "url-parse": {
776 | "version": "1.5.4",
777 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz",
778 | "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==",
779 | "requires": {
780 | "querystringify": "^2.1.1",
781 | "requires-port": "^1.0.0"
782 | }
783 | },
784 | "util-deprecate": {
785 | "version": "1.0.2",
786 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
787 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
788 | },
789 | "xtend": {
790 | "version": "4.0.2",
791 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
792 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
793 | }
794 | }
795 | }
796 |
--------------------------------------------------------------------------------
/netlify/functions/user-notes/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sanity-groq",
3 | "version": "1.0.0",
4 | "description": "netlify functions:create - Query a Sanity.io dataset with GROQ",
5 | "main": "sanity-groq.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "keywords": [
10 | "netlify",
11 | "serverless",
12 | "js",
13 | "sanity",
14 | "GROQ"
15 | ],
16 | "author": "Sanity.io",
17 | "license": "MIT",
18 | "dependencies": {
19 | "@sanity/client": "^0.147.3"
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/netlify/functions/user-notes/user-notes.js:
--------------------------------------------------------------------------------
1 | const process = require('process')
2 |
3 | const sanityClient = require('@sanity/client')
4 |
5 | const client = sanityClient({
6 | projectId: process.env.SANITY_PROJECT,
7 | dataset: process.env.SANITY_DATASET,
8 | token: process.env.SANITY_TOKEN,
9 | apiVersion: '2022-01-01',
10 | useCdn: false,
11 | })
12 |
13 | const handler = async (event, context) => {
14 |
15 | const uId = context.clientContext.user.sub
16 | const uRoles = context.clientContext.user.app_metadata.roles
17 |
18 | /* no user, no go */
19 | if (!uId) {
20 | console.log('No user!')
21 | return {
22 | statusCode: 401,
23 | body: JSON.stringify({
24 | data: 'no go',
25 | }),
26 | }
27 | }
28 |
29 | /* no basic role, no go */
30 | if (uRoles[0] !== 'basic') {
31 | console.log('No basic role!')
32 | return {
33 | statusCode: 401,
34 | body: JSON.stringify({
35 | data: 'no go',
36 | }),
37 | }
38 | }
39 |
40 | try {
41 | const query = `*[_type == "note" && references("${uId}")]{title, _updatedAt, _id}`
42 |
43 | let notes
44 |
45 | await client.fetch(query).then((r) => {
46 | notes = r.map((n) => {
47 | return {
48 | title: n.title,
49 | updated: n._updatedAt,
50 | id: n._id
51 | }
52 | })
53 | })
54 |
55 | return {
56 | statusCode: 200,
57 | headers: { 'Content-Type': 'application/json' },
58 | body: JSON.stringify(notes),
59 | }
60 | }
61 |
62 | catch (error) {
63 | return {
64 | headers: { 'Content-Type': 'application/json' },
65 | statusCode: 500,
66 | body: error.responseBody || JSON.stringify({ error: 'An error occurred' }),
67 | }
68 | }
69 |
70 | }
71 |
72 | module.exports = { handler }
73 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "authy-web",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "@sanity/client": "^2.23.2",
9 | "node-fetch": "^2.6.6"
10 | }
11 | },
12 | "node_modules/@rexxars/eventsource-polyfill": {
13 | "version": "1.0.0",
14 | "resolved": "https://registry.npmjs.org/@rexxars/eventsource-polyfill/-/eventsource-polyfill-1.0.0.tgz",
15 | "integrity": "sha512-YnrybIoM9WFqmeK1D8p/gutqjJnmXCVFWAU3ucka9M7Dzpen3f2Dy4KsC6k1wDHrCtHQuUHHwZovh3i5UPDaZw=="
16 | },
17 | "node_modules/@sanity/client": {
18 | "version": "2.23.2",
19 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-2.23.2.tgz",
20 | "integrity": "sha512-t0IbBYTLAWs5U3bi0pCcIcaQay6IakS+EVSoX6/zcGoEEgxj1KdLWx7ozXMPj9O/IGztRRifyNEWLkclazmqyQ==",
21 | "dependencies": {
22 | "@sanity/eventsource": "2.23.0",
23 | "@sanity/generate-help-url": "2.18.0",
24 | "@sanity/observable": "2.0.9",
25 | "deep-assign": "^2.0.0",
26 | "get-it": "^5.2.1",
27 | "make-error": "^1.3.0",
28 | "object-assign": "^4.1.1"
29 | }
30 | },
31 | "node_modules/@sanity/eventsource": {
32 | "version": "2.23.0",
33 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-2.23.0.tgz",
34 | "integrity": "sha512-MpQoV8FqnwnfBPQ29qcI1WA6MPZI1Z8rACFky5yU/8hol/Vv9g38PJbvHsGXsDkDartRXN5Wx5OjFk2imG4QPQ==",
35 | "dependencies": {
36 | "@rexxars/eventsource-polyfill": "^1.0.0",
37 | "eventsource": "^1.0.6"
38 | }
39 | },
40 | "node_modules/@sanity/generate-help-url": {
41 | "version": "2.18.0",
42 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-2.18.0.tgz",
43 | "integrity": "sha512-If8Qkw32LWPes16UzqwUsTLgfxF5d4ACdUvCLMl6grJc/5G8LKPAGCQUuA/d1F4W16yCJVV7Zv31HDRDXJSJkg=="
44 | },
45 | "node_modules/@sanity/observable": {
46 | "version": "2.0.9",
47 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-2.0.9.tgz",
48 | "integrity": "sha512-IUpzsEbhOhofTBUu2tiQ4Ymbkmhr6oe4UC4Ds1khZ9Td4t4mzzPGmGQIr5SBEDawz0UD7ZgZAb4LeEzV3hUrtA==",
49 | "dependencies": {
50 | "object-assign": "^4.1.1",
51 | "rxjs": "^6.5.3"
52 | }
53 | },
54 | "node_modules/@sanity/timed-out": {
55 | "version": "4.0.2",
56 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
57 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==",
58 | "engines": {
59 | "node": ">=0.10.0"
60 | }
61 | },
62 | "node_modules/capture-stack-trace": {
63 | "version": "1.0.1",
64 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
65 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==",
66 | "engines": {
67 | "node": ">=0.10.0"
68 | }
69 | },
70 | "node_modules/core-util-is": {
71 | "version": "1.0.3",
72 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
73 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
74 | },
75 | "node_modules/create-error-class": {
76 | "version": "3.0.2",
77 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
78 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
79 | "dependencies": {
80 | "capture-stack-trace": "^1.0.0"
81 | },
82 | "engines": {
83 | "node": ">=0.10.0"
84 | }
85 | },
86 | "node_modules/debug": {
87 | "version": "2.6.9",
88 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
89 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
90 | "dependencies": {
91 | "ms": "2.0.0"
92 | }
93 | },
94 | "node_modules/decompress-response": {
95 | "version": "3.3.0",
96 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
97 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
98 | "dependencies": {
99 | "mimic-response": "^1.0.0"
100 | },
101 | "engines": {
102 | "node": ">=4"
103 | }
104 | },
105 | "node_modules/deep-assign": {
106 | "version": "2.0.0",
107 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
108 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
109 | "dependencies": {
110 | "is-obj": "^1.0.0"
111 | },
112 | "engines": {
113 | "node": ">=0.10.0"
114 | }
115 | },
116 | "node_modules/eventsource": {
117 | "version": "1.1.0",
118 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
119 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
120 | "dependencies": {
121 | "original": "^1.0.0"
122 | },
123 | "engines": {
124 | "node": ">=0.12.0"
125 | }
126 | },
127 | "node_modules/follow-redirects": {
128 | "version": "1.14.6",
129 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
130 | "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
131 | "funding": [
132 | {
133 | "type": "individual",
134 | "url": "https://github.com/sponsors/RubenVerborgh"
135 | }
136 | ],
137 | "engines": {
138 | "node": ">=4.0"
139 | },
140 | "peerDependenciesMeta": {
141 | "debug": {
142 | "optional": true
143 | }
144 | }
145 | },
146 | "node_modules/form-urlencoded": {
147 | "version": "2.0.9",
148 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
149 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
150 | },
151 | "node_modules/from2": {
152 | "version": "2.3.0",
153 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
154 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
155 | "dependencies": {
156 | "inherits": "^2.0.1",
157 | "readable-stream": "^2.0.0"
158 | }
159 | },
160 | "node_modules/get-it": {
161 | "version": "5.2.1",
162 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.2.1.tgz",
163 | "integrity": "sha512-KDR5lTKmxKd/XyP3egZ8ieIdKLxKrQPKUFxk86MSoytGjxX4STigaFuwtFGmGx/lBPc1YSpi9wyuQJ5uP8WcRA==",
164 | "dependencies": {
165 | "@sanity/timed-out": "^4.0.2",
166 | "create-error-class": "^3.0.2",
167 | "debug": "^2.6.8",
168 | "decompress-response": "^3.3.0",
169 | "follow-redirects": "^1.2.4",
170 | "form-urlencoded": "^2.0.7",
171 | "into-stream": "^3.1.0",
172 | "is-plain-object": "^2.0.4",
173 | "is-retry-allowed": "^1.1.0",
174 | "is-stream": "^1.1.0",
175 | "nano-pubsub": "^1.0.2",
176 | "object-assign": "^4.1.1",
177 | "parse-headers": "^2.0.1",
178 | "progress-stream": "^2.0.0",
179 | "same-origin": "^0.1.1",
180 | "simple-concat": "^1.0.0",
181 | "tunnel-agent": "^0.6.0",
182 | "url-parse": "^1.1.9"
183 | },
184 | "engines": {
185 | "node": ">=8.0.0"
186 | }
187 | },
188 | "node_modules/inherits": {
189 | "version": "2.0.4",
190 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
191 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
192 | },
193 | "node_modules/into-stream": {
194 | "version": "3.1.0",
195 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
196 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
197 | "dependencies": {
198 | "from2": "^2.1.1",
199 | "p-is-promise": "^1.1.0"
200 | },
201 | "engines": {
202 | "node": ">=4"
203 | }
204 | },
205 | "node_modules/is-obj": {
206 | "version": "1.0.1",
207 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
208 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
209 | "engines": {
210 | "node": ">=0.10.0"
211 | }
212 | },
213 | "node_modules/is-plain-object": {
214 | "version": "2.0.4",
215 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
216 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
217 | "dependencies": {
218 | "isobject": "^3.0.1"
219 | },
220 | "engines": {
221 | "node": ">=0.10.0"
222 | }
223 | },
224 | "node_modules/is-retry-allowed": {
225 | "version": "1.2.0",
226 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
227 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
228 | "engines": {
229 | "node": ">=0.10.0"
230 | }
231 | },
232 | "node_modules/is-stream": {
233 | "version": "1.1.0",
234 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
235 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
236 | "engines": {
237 | "node": ">=0.10.0"
238 | }
239 | },
240 | "node_modules/isarray": {
241 | "version": "1.0.0",
242 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
243 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
244 | },
245 | "node_modules/isobject": {
246 | "version": "3.0.1",
247 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
248 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
249 | "engines": {
250 | "node": ">=0.10.0"
251 | }
252 | },
253 | "node_modules/make-error": {
254 | "version": "1.3.6",
255 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
256 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
257 | },
258 | "node_modules/mimic-response": {
259 | "version": "1.0.1",
260 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
261 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
262 | "engines": {
263 | "node": ">=4"
264 | }
265 | },
266 | "node_modules/ms": {
267 | "version": "2.0.0",
268 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
269 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
270 | },
271 | "node_modules/nano-pubsub": {
272 | "version": "1.0.2",
273 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
274 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
275 | },
276 | "node_modules/node-fetch": {
277 | "version": "2.6.6",
278 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
279 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
280 | "dependencies": {
281 | "whatwg-url": "^5.0.0"
282 | },
283 | "engines": {
284 | "node": "4.x || >=6.0.0"
285 | }
286 | },
287 | "node_modules/object-assign": {
288 | "version": "4.1.1",
289 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
290 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
291 | "engines": {
292 | "node": ">=0.10.0"
293 | }
294 | },
295 | "node_modules/original": {
296 | "version": "1.0.2",
297 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
298 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
299 | "dependencies": {
300 | "url-parse": "^1.4.3"
301 | }
302 | },
303 | "node_modules/p-is-promise": {
304 | "version": "1.1.0",
305 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
306 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
307 | "engines": {
308 | "node": ">=4"
309 | }
310 | },
311 | "node_modules/parse-headers": {
312 | "version": "2.0.4",
313 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
314 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
315 | },
316 | "node_modules/process-nextick-args": {
317 | "version": "2.0.1",
318 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
319 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
320 | },
321 | "node_modules/progress-stream": {
322 | "version": "2.0.0",
323 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
324 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
325 | "dependencies": {
326 | "speedometer": "~1.0.0",
327 | "through2": "~2.0.3"
328 | }
329 | },
330 | "node_modules/querystringify": {
331 | "version": "2.2.0",
332 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
333 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
334 | },
335 | "node_modules/readable-stream": {
336 | "version": "2.3.7",
337 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
338 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
339 | "dependencies": {
340 | "core-util-is": "~1.0.0",
341 | "inherits": "~2.0.3",
342 | "isarray": "~1.0.0",
343 | "process-nextick-args": "~2.0.0",
344 | "safe-buffer": "~5.1.1",
345 | "string_decoder": "~1.1.1",
346 | "util-deprecate": "~1.0.1"
347 | }
348 | },
349 | "node_modules/requires-port": {
350 | "version": "1.0.0",
351 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
352 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
353 | },
354 | "node_modules/rxjs": {
355 | "version": "6.6.7",
356 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
357 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
358 | "dependencies": {
359 | "tslib": "^1.9.0"
360 | },
361 | "engines": {
362 | "npm": ">=2.0.0"
363 | }
364 | },
365 | "node_modules/safe-buffer": {
366 | "version": "5.1.2",
367 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
368 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
369 | },
370 | "node_modules/same-origin": {
371 | "version": "0.1.1",
372 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
373 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
374 | },
375 | "node_modules/simple-concat": {
376 | "version": "1.0.1",
377 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
378 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
379 | "funding": [
380 | {
381 | "type": "github",
382 | "url": "https://github.com/sponsors/feross"
383 | },
384 | {
385 | "type": "patreon",
386 | "url": "https://www.patreon.com/feross"
387 | },
388 | {
389 | "type": "consulting",
390 | "url": "https://feross.org/support"
391 | }
392 | ]
393 | },
394 | "node_modules/speedometer": {
395 | "version": "1.0.0",
396 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
397 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
398 | },
399 | "node_modules/string_decoder": {
400 | "version": "1.1.1",
401 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
402 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
403 | "dependencies": {
404 | "safe-buffer": "~5.1.0"
405 | }
406 | },
407 | "node_modules/through2": {
408 | "version": "2.0.5",
409 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
410 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
411 | "dependencies": {
412 | "readable-stream": "~2.3.6",
413 | "xtend": "~4.0.1"
414 | }
415 | },
416 | "node_modules/tr46": {
417 | "version": "0.0.3",
418 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
419 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
420 | },
421 | "node_modules/tslib": {
422 | "version": "1.14.1",
423 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
424 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
425 | },
426 | "node_modules/tunnel-agent": {
427 | "version": "0.6.0",
428 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
429 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
430 | "dependencies": {
431 | "safe-buffer": "^5.0.1"
432 | },
433 | "engines": {
434 | "node": "*"
435 | }
436 | },
437 | "node_modules/url-parse": {
438 | "version": "1.5.4",
439 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz",
440 | "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==",
441 | "dependencies": {
442 | "querystringify": "^2.1.1",
443 | "requires-port": "^1.0.0"
444 | }
445 | },
446 | "node_modules/util-deprecate": {
447 | "version": "1.0.2",
448 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
449 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
450 | },
451 | "node_modules/webidl-conversions": {
452 | "version": "3.0.1",
453 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
454 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
455 | },
456 | "node_modules/whatwg-url": {
457 | "version": "5.0.0",
458 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
459 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
460 | "dependencies": {
461 | "tr46": "~0.0.3",
462 | "webidl-conversions": "^3.0.0"
463 | }
464 | },
465 | "node_modules/xtend": {
466 | "version": "4.0.2",
467 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
468 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
469 | "engines": {
470 | "node": ">=0.4"
471 | }
472 | }
473 | },
474 | "dependencies": {
475 | "@rexxars/eventsource-polyfill": {
476 | "version": "1.0.0",
477 | "resolved": "https://registry.npmjs.org/@rexxars/eventsource-polyfill/-/eventsource-polyfill-1.0.0.tgz",
478 | "integrity": "sha512-YnrybIoM9WFqmeK1D8p/gutqjJnmXCVFWAU3ucka9M7Dzpen3f2Dy4KsC6k1wDHrCtHQuUHHwZovh3i5UPDaZw=="
479 | },
480 | "@sanity/client": {
481 | "version": "2.23.2",
482 | "resolved": "https://registry.npmjs.org/@sanity/client/-/client-2.23.2.tgz",
483 | "integrity": "sha512-t0IbBYTLAWs5U3bi0pCcIcaQay6IakS+EVSoX6/zcGoEEgxj1KdLWx7ozXMPj9O/IGztRRifyNEWLkclazmqyQ==",
484 | "requires": {
485 | "@sanity/eventsource": "2.23.0",
486 | "@sanity/generate-help-url": "2.18.0",
487 | "@sanity/observable": "2.0.9",
488 | "deep-assign": "^2.0.0",
489 | "get-it": "^5.2.1",
490 | "make-error": "^1.3.0",
491 | "object-assign": "^4.1.1"
492 | }
493 | },
494 | "@sanity/eventsource": {
495 | "version": "2.23.0",
496 | "resolved": "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-2.23.0.tgz",
497 | "integrity": "sha512-MpQoV8FqnwnfBPQ29qcI1WA6MPZI1Z8rACFky5yU/8hol/Vv9g38PJbvHsGXsDkDartRXN5Wx5OjFk2imG4QPQ==",
498 | "requires": {
499 | "@rexxars/eventsource-polyfill": "^1.0.0",
500 | "eventsource": "^1.0.6"
501 | }
502 | },
503 | "@sanity/generate-help-url": {
504 | "version": "2.18.0",
505 | "resolved": "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-2.18.0.tgz",
506 | "integrity": "sha512-If8Qkw32LWPes16UzqwUsTLgfxF5d4ACdUvCLMl6grJc/5G8LKPAGCQUuA/d1F4W16yCJVV7Zv31HDRDXJSJkg=="
507 | },
508 | "@sanity/observable": {
509 | "version": "2.0.9",
510 | "resolved": "https://registry.npmjs.org/@sanity/observable/-/observable-2.0.9.tgz",
511 | "integrity": "sha512-IUpzsEbhOhofTBUu2tiQ4Ymbkmhr6oe4UC4Ds1khZ9Td4t4mzzPGmGQIr5SBEDawz0UD7ZgZAb4LeEzV3hUrtA==",
512 | "requires": {
513 | "object-assign": "^4.1.1",
514 | "rxjs": "^6.5.3"
515 | }
516 | },
517 | "@sanity/timed-out": {
518 | "version": "4.0.2",
519 | "resolved": "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz",
520 | "integrity": "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w=="
521 | },
522 | "capture-stack-trace": {
523 | "version": "1.0.1",
524 | "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz",
525 | "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw=="
526 | },
527 | "core-util-is": {
528 | "version": "1.0.3",
529 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
530 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
531 | },
532 | "create-error-class": {
533 | "version": "3.0.2",
534 | "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
535 | "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
536 | "requires": {
537 | "capture-stack-trace": "^1.0.0"
538 | }
539 | },
540 | "debug": {
541 | "version": "2.6.9",
542 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
543 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
544 | "requires": {
545 | "ms": "2.0.0"
546 | }
547 | },
548 | "decompress-response": {
549 | "version": "3.3.0",
550 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
551 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
552 | "requires": {
553 | "mimic-response": "^1.0.0"
554 | }
555 | },
556 | "deep-assign": {
557 | "version": "2.0.0",
558 | "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz",
559 | "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=",
560 | "requires": {
561 | "is-obj": "^1.0.0"
562 | }
563 | },
564 | "eventsource": {
565 | "version": "1.1.0",
566 | "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
567 | "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
568 | "requires": {
569 | "original": "^1.0.0"
570 | }
571 | },
572 | "follow-redirects": {
573 | "version": "1.14.6",
574 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
575 | "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A=="
576 | },
577 | "form-urlencoded": {
578 | "version": "2.0.9",
579 | "resolved": "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz",
580 | "integrity": "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA=="
581 | },
582 | "from2": {
583 | "version": "2.3.0",
584 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
585 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
586 | "requires": {
587 | "inherits": "^2.0.1",
588 | "readable-stream": "^2.0.0"
589 | }
590 | },
591 | "get-it": {
592 | "version": "5.2.1",
593 | "resolved": "https://registry.npmjs.org/get-it/-/get-it-5.2.1.tgz",
594 | "integrity": "sha512-KDR5lTKmxKd/XyP3egZ8ieIdKLxKrQPKUFxk86MSoytGjxX4STigaFuwtFGmGx/lBPc1YSpi9wyuQJ5uP8WcRA==",
595 | "requires": {
596 | "@sanity/timed-out": "^4.0.2",
597 | "create-error-class": "^3.0.2",
598 | "debug": "^2.6.8",
599 | "decompress-response": "^3.3.0",
600 | "follow-redirects": "^1.2.4",
601 | "form-urlencoded": "^2.0.7",
602 | "into-stream": "^3.1.0",
603 | "is-plain-object": "^2.0.4",
604 | "is-retry-allowed": "^1.1.0",
605 | "is-stream": "^1.1.0",
606 | "nano-pubsub": "^1.0.2",
607 | "object-assign": "^4.1.1",
608 | "parse-headers": "^2.0.1",
609 | "progress-stream": "^2.0.0",
610 | "same-origin": "^0.1.1",
611 | "simple-concat": "^1.0.0",
612 | "tunnel-agent": "^0.6.0",
613 | "url-parse": "^1.1.9"
614 | }
615 | },
616 | "inherits": {
617 | "version": "2.0.4",
618 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
619 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
620 | },
621 | "into-stream": {
622 | "version": "3.1.0",
623 | "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz",
624 | "integrity": "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=",
625 | "requires": {
626 | "from2": "^2.1.1",
627 | "p-is-promise": "^1.1.0"
628 | }
629 | },
630 | "is-obj": {
631 | "version": "1.0.1",
632 | "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
633 | "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
634 | },
635 | "is-plain-object": {
636 | "version": "2.0.4",
637 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
638 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
639 | "requires": {
640 | "isobject": "^3.0.1"
641 | }
642 | },
643 | "is-retry-allowed": {
644 | "version": "1.2.0",
645 | "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
646 | "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg=="
647 | },
648 | "is-stream": {
649 | "version": "1.1.0",
650 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
651 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
652 | },
653 | "isarray": {
654 | "version": "1.0.0",
655 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
656 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
657 | },
658 | "isobject": {
659 | "version": "3.0.1",
660 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
661 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
662 | },
663 | "make-error": {
664 | "version": "1.3.6",
665 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
666 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="
667 | },
668 | "mimic-response": {
669 | "version": "1.0.1",
670 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
671 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
672 | },
673 | "ms": {
674 | "version": "2.0.0",
675 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
676 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
677 | },
678 | "nano-pubsub": {
679 | "version": "1.0.2",
680 | "resolved": "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz",
681 | "integrity": "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek="
682 | },
683 | "node-fetch": {
684 | "version": "2.6.6",
685 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz",
686 | "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==",
687 | "requires": {
688 | "whatwg-url": "^5.0.0"
689 | }
690 | },
691 | "object-assign": {
692 | "version": "4.1.1",
693 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
694 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
695 | },
696 | "original": {
697 | "version": "1.0.2",
698 | "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
699 | "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
700 | "requires": {
701 | "url-parse": "^1.4.3"
702 | }
703 | },
704 | "p-is-promise": {
705 | "version": "1.1.0",
706 | "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
707 | "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4="
708 | },
709 | "parse-headers": {
710 | "version": "2.0.4",
711 | "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz",
712 | "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw=="
713 | },
714 | "process-nextick-args": {
715 | "version": "2.0.1",
716 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
717 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
718 | },
719 | "progress-stream": {
720 | "version": "2.0.0",
721 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz",
722 | "integrity": "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=",
723 | "requires": {
724 | "speedometer": "~1.0.0",
725 | "through2": "~2.0.3"
726 | }
727 | },
728 | "querystringify": {
729 | "version": "2.2.0",
730 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
731 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
732 | },
733 | "readable-stream": {
734 | "version": "2.3.7",
735 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
736 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
737 | "requires": {
738 | "core-util-is": "~1.0.0",
739 | "inherits": "~2.0.3",
740 | "isarray": "~1.0.0",
741 | "process-nextick-args": "~2.0.0",
742 | "safe-buffer": "~5.1.1",
743 | "string_decoder": "~1.1.1",
744 | "util-deprecate": "~1.0.1"
745 | }
746 | },
747 | "requires-port": {
748 | "version": "1.0.0",
749 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
750 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
751 | },
752 | "rxjs": {
753 | "version": "6.6.7",
754 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
755 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
756 | "requires": {
757 | "tslib": "^1.9.0"
758 | }
759 | },
760 | "safe-buffer": {
761 | "version": "5.1.2",
762 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
763 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
764 | },
765 | "same-origin": {
766 | "version": "0.1.1",
767 | "resolved": "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz",
768 | "integrity": "sha1-wih9MZJXffUXrLvW0UUanDw5FPU="
769 | },
770 | "simple-concat": {
771 | "version": "1.0.1",
772 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
773 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
774 | },
775 | "speedometer": {
776 | "version": "1.0.0",
777 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz",
778 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI="
779 | },
780 | "string_decoder": {
781 | "version": "1.1.1",
782 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
783 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
784 | "requires": {
785 | "safe-buffer": "~5.1.0"
786 | }
787 | },
788 | "through2": {
789 | "version": "2.0.5",
790 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
791 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
792 | "requires": {
793 | "readable-stream": "~2.3.6",
794 | "xtend": "~4.0.1"
795 | }
796 | },
797 | "tr46": {
798 | "version": "0.0.3",
799 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
800 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
801 | },
802 | "tslib": {
803 | "version": "1.14.1",
804 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
805 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
806 | },
807 | "tunnel-agent": {
808 | "version": "0.6.0",
809 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
810 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
811 | "requires": {
812 | "safe-buffer": "^5.0.1"
813 | }
814 | },
815 | "url-parse": {
816 | "version": "1.5.4",
817 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.4.tgz",
818 | "integrity": "sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg==",
819 | "requires": {
820 | "querystringify": "^2.1.1",
821 | "requires-port": "^1.0.0"
822 | }
823 | },
824 | "util-deprecate": {
825 | "version": "1.0.2",
826 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
827 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
828 | },
829 | "webidl-conversions": {
830 | "version": "3.0.1",
831 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
832 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
833 | },
834 | "whatwg-url": {
835 | "version": "5.0.0",
836 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
837 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
838 | "requires": {
839 | "tr46": "~0.0.3",
840 | "webidl-conversions": "^3.0.0"
841 | }
842 | },
843 | "xtend": {
844 | "version": "4.0.2",
845 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
846 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
847 | }
848 | }
849 | }
850 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "@sanity/client": "^2.23.2",
4 | "node-fetch": "^2.6.6"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # Netlify Auth & Sanity Data
2 |
3 | A bare minimum app that allows a Netlify identity user to sign up, log in, and securely read and write data scoped to their user in a private Sanity datastore.
4 |
5 | 
6 |
7 | This repo is *not* something you should fork to use for your next production project. It's just a thing I made to learn/demonstrate one way this can work.
8 |
9 | ## Outline of how it works
10 |
11 | ### Signing Up
12 |
13 | 1. Front End User signs up with [Netlify identity widget](https://github.com/netlify/netlify-identity-widget) and confirms their email
14 | 2. Front end user gets a token, and at the same time netlify sends the new user's id to Sanity. Sanity creates a document mapped to the Netlify user by id.
15 |
16 | 
17 |
18 | ### Reading and Writing User-Scoped Data
19 |
20 | 1. Front End requests the users stuff, presenting token to netlify function
21 | 2. Netlify (with Sanity key in server-side ENV var) uses user info in token and queries Sanity for the user's data
22 | 3. Sanity sends the user's stuff back to a serverless function
23 | 4. The serverless function returns it to the browser
24 |
25 | 
26 |
27 | ### Some Details
28 |
29 | This is for demonstration purposes, so it has some slow, but simple-on-the-brain patterns like:
30 |
31 | - No frontend framework nor front-end compilation steps
32 | - Standard browser `fetch()` calls that only result in UI updates when the new data is really back from Sanity.
33 | - The npm stuff you see in the top-level directory is there for Netlify functions to access when this is deployed
34 |
35 | ## Where's the Sanity part?
36 |
37 | It's [this repo](https://github.com/bacalj/authy-studio) but there's not much to see. It's an out-of-the-box Sanity studio. The document schemas for the studio are pasted below for quick reference.
38 |
39 | ### note.js
40 |
41 | ```js
42 |
43 | import { MdNote } from 'react-icons/md'
44 |
45 | export default {
46 | name: 'note',
47 | title: 'Notes',
48 | type: 'document',
49 | icon: MdNote,
50 | fields: [
51 | {
52 | name: 'title',
53 | title: 'Title',
54 | type: 'string',
55 | },
56 | {
57 | name: 'belongsTo',
58 | title: 'User',
59 | type: 'reference',
60 | to: [ { type: 'webUser' } ]
61 | }
62 | ]
63 | }
64 |
65 | ```
66 |
67 | ### webUser.js
68 |
69 | ```js
70 |
71 |
72 | import { MdNote } from 'react-icons/md'
73 |
74 | export default {
75 | name: 'note',
76 | title: 'Notes',
77 | type: 'document',
78 | icon: MdNote,
79 | fields: [
80 | {
81 | name: 'title',
82 | title: 'Title',
83 | type: 'string',
84 | },
85 | {
86 | name: 'belongsTo',
87 | title: 'User',
88 | type: 'reference',
89 | to: [ { type: 'webUser' } ]
90 | }
91 | ],
92 | preview: {
93 | select: {
94 | title: 'title',
95 | subtitle: 'belongsTo.email'
96 | }
97 | }
98 | }
99 |
100 | ```
101 |
102 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Fuzzy+Bubbles&display=swap');
2 |
3 | body {
4 | color:#1a0909;
5 | margin:0px;
6 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
7 | background-color: rgb(247, 246, 243);
8 | }
9 |
10 | .grid {
11 | display:grid;
12 | width:100%;
13 | grid-template-columns: 50% 50%;
14 | height: 100%;
15 | }
16 |
17 | .box, .log {
18 | padding:20px 30px 20px 40px;
19 | }
20 |
21 | .box > img {
22 | opacity: .5;
23 | height: 50px;
24 | display: inline-block;
25 | }
26 |
27 | a {
28 | color: #1a0909;
29 | }
30 |
31 | li {
32 | list-style: none;
33 | }
34 |
35 | ul {
36 | padding:0px;
37 | }
38 |
39 | body.logged-out h2.sanity-title {
40 | color: silver;
41 | }
42 |
43 | body.logged-in .sanity-no-go {
44 | display:none;
45 | }
46 |
47 | body.logged-out .sanity-operations {
48 | display:none;
49 | }
50 |
51 | .sanity-no-go {
52 | border:4px dashed silver;
53 | border-radius: 6px;
54 | height: 300px;
55 | display:grid;
56 | }
57 |
58 | .sanity-no-go > div {
59 | align-self: center;
60 | justify-self: center;
61 | }
62 |
63 | .sanity-operations input {
64 | background-color: white;
65 | border:1px solid #6B6B6B;
66 | padding:4px;
67 | border-radius: 1px;
68 | width:200px;
69 | }
70 |
71 | button, .data-netlify a, #notes li {
72 | background-color: white;
73 | border:1px solid #6B6B6B;
74 | padding:4px 6px;
75 | border-radius: 3px;
76 | text-decoration: none;
77 | font-size:16px;
78 | }
79 |
80 | li > button {
81 | border:0px;
82 | margin-right:10px;
83 | font-size:16px;
84 | line-height:16px;
85 | }
86 |
87 | .data-netlify li {
88 | display: inline-block;
89 | margin-right:6px;
90 | margin-top:6px;
91 | }
92 |
93 | p, div, span, a {
94 | font-size:14px;
95 | }
96 |
97 | #notes li {
98 | margin-bottom:4px;
99 | }
100 |
101 | .sanity-operations button:hover {
102 | cursor:pointer;
103 | background-color: rgb(240, 200, 200);
104 | }
105 |
106 | .netlify a:hover {
107 | cursor: pointer;
108 | background-color: rgb(170, 200, 215);
109 | }
110 |
111 | #animation {
112 | position: absolute;
113 | top: 0;
114 | width: 100vw;
115 | height: 100vh;
116 | z-index:100000;
117 | background-color: rgba(100,100,100,.74);
118 | text-align:center;
119 | }
120 |
121 | #animation img {
122 | width:10%;
123 | margin: 0 auto;
124 | position: relative;
125 | top: 50%;
126 | transform: translateY(-50%);
127 | opacity: .5;
128 | animation: 2s rocking infinite ease-in-out
129 | }
130 |
131 | @keyframes rocking {
132 | 0% {
133 | transform: rotate(0deg)
134 | }
135 | 25% {
136 | transform: rotate(10deg)
137 | }
138 | 75% {
139 | transform: rotate(-10deg)
140 | }
141 | 100% {
142 | transform: rotate(0deg)
143 | }
144 | }
145 |
146 | footer {
147 | position: fixed;
148 | bottom: 0;
149 | text-align:center;
150 | width: 100%;
151 | padding:10px;
152 | }
153 |
154 | footer div {
155 | display: inline-block;
156 | padding:10px;
157 | }
158 |
159 | footer img {
160 | width:22px;
161 | }
162 |
163 | .nota {
164 | margin-top:60px;
165 | font-size: 11px;
166 | color:#1a0909;
167 | width:330px;
168 | }
169 |
170 | .netlify-identity-signup:after {
171 | content: "*";
172 | width:20px;
173 | height:20px;
174 | }
175 |
176 | .sanity-link img {
177 | filter: grayscale(100%);
178 | opacity: 0.8;
179 | }
--------------------------------------------------------------------------------