Socket
Socket
Sign inDemoInstall

@sanity/client

Package Overview
Dependencies
Maintainers
6
Versions
986
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sanity/client - npm Package Compare versions

Comparing version 0.2.0 to 0.2.1

lib/assets/assetsClient.js

7

lib/sanityClient.js

@@ -9,2 +9,3 @@ 'use strict';

var ProjectsClient = require('./projects/projectsClient');
var AssetsClient = require('./assets/assetsClient');
var UsersClient = require('./users/usersClient');

@@ -26,2 +27,3 @@ var AuthClient = require('./auth/authClient');

this.assets = new AssetsClient(this);
this.datasets = new DatasetsClient(this);

@@ -43,2 +45,5 @@ this.projects = new ProjectsClient(this);

},
getUrl: function getUrl(uri) {
return this.clientConfig.url + '/' + uri.replace(/^\//, '');
},
request: function request(options) {

@@ -48,3 +53,3 @@ return this.requestObservable(options).toPromise();

requestObservable: function requestObservable(options) {
return httpRequest(mergeOptions(getRequestOptions(this.clientConfig), options, { uri: this.clientConfig.url + '/' + options.uri.replace(/^\//, '') }));
return httpRequest(mergeOptions(getRequestOptions(this.clientConfig), options, { uri: this.getUrl(options.uri) }));
}

@@ -51,0 +56,0 @@ });

@@ -5,2 +5,4 @@ 'use strict';

var VALID_ASSET_TYPES = ['image', 'file'];
exports.dataset = function (name) {

@@ -18,2 +20,8 @@ if (!/^[-\w]{1,128}$/.test(name)) {

exports.validateAssetType = function (type) {
if (VALID_ASSET_TYPES.indexOf(type) === -1) {
throw new Error('Invalid asset type: ' + type + '. Must be one of ' + VALID_ASSET_TYPES.join(', '));
}
};
exports.validateObject = function (op, val) {

@@ -20,0 +28,0 @@ if (val === null || (typeof val === 'undefined' ? 'undefined' : _typeof(val)) !== 'object' || Array.isArray(val)) {

2

package.json
{
"name": "@sanity/client",
"version": "0.2.0",
"version": "0.2.1",
"description": "Client for retrieving data from Sanity",

@@ -5,0 +5,0 @@ "main": "lib/sanityClient.js",

@@ -7,2 +7,4 @@ // (Node 4 compat)

const assign = require('xtend')
const path = require('path')
const fs = require('fs')
const sanityClient = require('../src/sanityClient')

@@ -16,2 +18,3 @@ const noop = () => {} // eslint-disable-line no-empty-function

const getClient = conf => sanityClient(assign({}, clientConfig, conf || {}))
const fixture = name => path.join(__dirname, 'fixtures', name)

@@ -59,2 +62,7 @@ /*****************

test('can use getUrl() to get API-relative paths', t => {
t.equal(getClient().getUrl('/foo/bar'), `${projectHost()}/v1/foo/bar`)
t.end()
})
/*****************

@@ -689,2 +697,42 @@ * PROJECTS *

test('uploads images', t => {
const fixturePath = fixture('horsehead-nebula.jpg')
nock(projectHost())
.post('/v1/assets/image/foo', body =>
new Buffer(body, 'hex').compare(fs.readFileSync(fixturePath)) === 0
)
.reply(201, {
url: 'https://some.asset.url'
})
getClient().assets.upload('image', fs.createReadStream(fixturePath))
.filter(event => event.type === 'response') // todo: test progress events too
.map(event => event.body)
.subscribe(body => {
t.equal(body.url, 'https://some.asset.url')
t.end()
})
})
test('uploads files', t => {
const fixturePath = fixture('vildanden.pdf')
nock(projectHost())
.post('/v1/assets/file/foo', body =>
new Buffer(body, 'hex').compare(fs.readFileSync(fixturePath)) === 0
)
.reply(201, {
url: 'https://some.asset.url'
})
getClient().assets.upload('file', fs.createReadStream(fixturePath))
.filter(event => event.type === 'response') // todo: test progress events too
.map(event => event.body)
.subscribe(body => {
t.equal(body.url, 'https://some.asset.url')
t.end()
})
})
test('handles HTTP errors gracefully', t => {

@@ -691,0 +739,0 @@ const doc = {_id: 'foo/bar', visits: 5}

(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.SanityClient = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
"use strict";function AssetsClient(t){this.client=t}var assign=require("xtend/mutable"),validators=require("../validators");assign(AssetsClient.prototype,{upload:function(t,e){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};validators.validateAssetType(t);var n=validators.hasDataset(this.client.clientConfig),i="contentType"in s?{"Content-Type":s.contentType}:{};return this.client.requestObservable({method:"POST",headers:assign({Accept:"application/json"},i),uri:"/assets/"+t+"/"+n,body:e,json:!1,timeout:0}).map(function(t){return"response"!==t.type?t:assign({},t,{body:JSON.parse(t.body)})})}}),module.exports=AssetsClient;
},{"../validators":15,"xtend/mutable":26}],2:[function(require,module,exports){
"use strict";function AuthClient(t){this.client=t}var assign=require("xtend/mutable");assign(AuthClient.prototype,{getLoginProviders:function(){return this.client.request({uri:"/auth/providers"})},logout:function(){return this.client.request({uri:"/auth/logout"})}}),module.exports=AuthClient;
},{"xtend/mutable":25}],2:[function(require,module,exports){
},{"xtend/mutable":26}],3:[function(require,module,exports){
"use strict";var assign=require("xtend/mutable"),validate=require("./validators"),defaultConfig=exports.defaultConfig={apiHost:"https://api.sanity.io",useProjectHostname:!0};exports.initConfig=function(t,e){var o=assign({},defaultConfig,e,t),a=o.useProjectHostname;if("undefined"==typeof Promise)throw new Error("No native `Promise`-implementation found, polyfill needed");if(a&&!o.projectId)throw new Error("Configuration must contain `projectId`");a&&validate.projectId(o.projectId),o.dataset&&validate.dataset(o.dataset);var i=o.apiHost.split("://",2),r=i[0],n=i[1];return o.useProjectHostname?o.url=r+"://"+o.projectId+"."+n+"/v1":o.url=o.apiHost+"/v1",o};
},{"./validators":14,"xtend/mutable":25}],3:[function(require,module,exports){
},{"./validators":15,"xtend/mutable":26}],4:[function(require,module,exports){
"use strict";function _defineProperty(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var assign=require("xtend/mutable"),validators=require("../validators"),encodeQueryString=require("./encodeQueryString"),Transaction=require("./transaction"),Patch=require("./patch"),mutationDefaults={returnIds:!0},getQuerySizeLimit=1948;module.exports={fetch:function(t,e){return this.dataRequest("query",{query:t,params:e}).then(function(t){return t.result||[]})},getDocument:function(t){return this.request({uri:"/data/doc/"+t,json:!0}).then(function(t){return t.documents&&t.documents[0]})},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},patch:function(t,e){return validators.validateDocumentId("patch",t),new Patch(t,e,this)},delete:function(t){return validators.validateDocumentId("delete",t),this.dataRequest("mutate",{delete:{id:t}})},mutate:function(t){return this.dataRequest("mutate",t instanceof Patch?t.serialize():t)},transaction:function(t){return new Transaction(t,this)},dataRequest:function(t,e){var r=this,n="mutate"===t,a=!n&&encodeQueryString(e),i=!n&&a.length<getQuerySizeLimit,u=i?a:"";return validators.promise.hasDataset(this.clientConfig).then(function(a){return r.request({method:i?"GET":"POST",uri:"/data/"+t+"/"+a+u,json:!!i||e,query:n&&mutationDefaults})})},_create:function(t,e){var r=validators.hasDataset(this.clientConfig),n=_defineProperty({},e,assign({},t,{_id:t._id||r+"/"}));return this.dataRequest("mutate",n).then(function(t){return{transactionId:t.transactionId,documentId:t.docIds[0]}})}};
},{"../validators":14,"./encodeQueryString":4,"./patch":5,"./transaction":6,"xtend/mutable":25}],4:[function(require,module,exports){
},{"../validators":15,"./encodeQueryString":5,"./patch":6,"./transaction":7,"xtend/mutable":26}],5:[function(require,module,exports){
"use strict";var enc=encodeURIComponent;module.exports=function(e){var r=e.query,n=e.params,t=void 0===n?{}:n;if(t.query)throw new Error('Parameter "query" is reserved, cannot be used as a parameter');return Object.keys(t).reduce(function(e,r){return e+"&"+enc(r)+"="+enc(JSON.stringify(t[r]))},"?query="+enc(r))};
},{}],5:[function(require,module,exports){
},{}],6:[function(require,module,exports){
"use strict";function _defineProperty(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Patch(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.documentId=e,this.operations=assign({},t),this.client=n}function throwPromiseError(e){return function(){throw new Error(e+"() called on an uncommited patch, did you forget to call commit()?")}}var deepAssign=require("deep-assign"),assign=require("xtend/mutable"),validateObject=require("../validators").validateObject;assign(Patch.prototype,{clone:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new Patch(this.documentId,assign({},this.operations,e),this.client)},merge:function(e){return validateObject("merge",e),this.clone({merge:deepAssign(this.operations.merge||{},e)})},set:function(e){return this._assign("set",e)},setIfMissing:function(e){return this._assign("setIfMissing",e)},replace:function(e){return validateObject("replace",e),this.clone({replace:e})},inc:function(e){return this._assign("inc",e)},dec:function(e){return this._assign("dec",e)},unset:function(e){throw new Error("Not implemented yet")},append:function(e){throw new Error("Not implemented yet")},prepend:function(e){throw new Error("Not implemented yet")},splice:function(e){throw new Error("Not implemented yet")},serialize:function(){return assign({id:this.documentId},this.operations)},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate({patch:this.serialize()});throw new Error("No `client` passed to patch, either provide one or pass the patch to a clients `mutate()` method")},reset:function(){return new Patch(this.documentId,{},this.client)},_assign:function(e,t){return validateObject(e,t),this.clone(_defineProperty({},e,assign({},this.operations[e]||{},t)))},then:throwPromiseError("then"),catch:throwPromiseError("catch")}),module.exports=Patch;
},{"../validators":14,"deep-assign":17,"xtend/mutable":25}],6:[function(require,module,exports){
},{"../validators":15,"deep-assign":18,"xtend/mutable":26}],7:[function(require,module,exports){
"use strict";function _defineProperty(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Transaction(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1];this.operations=t,this.client=e}function throwPromiseError(t){return function(){throw new Error(t+"() called on an uncommited transaction, did you forget to call commit()?")}}var assign=require("xtend/mutable"),validators=require("../validators"),Patch=require("./patch");assign(Transaction.prototype,{clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new Transaction(this.operations.concat(t),this.client)},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},delete:function(t){return validators.validateDocumentId("delete",t),this._add({delete:{id:t}})},patch:function t(e,r){var i="function"==typeof r,n=e instanceof Patch;if(n)return this._add({patch:e.serialize()});if(i){var t=r(new Patch(e,{},this.client));if(!(t instanceof Patch))throw new Error("function passed to `patch()` must return the patch");return this._add({patch:t.serialize()})}return this._add({patch:assign({id:e},r)})},serialize:function(){return this.operations.slice()},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate(this.serialize());throw new Error("No `client` passed to transaction, either provide one or pass the transaction to a clients `mutate()` method")},reset:function(){return this.operations=[],this},_create:function(t,e){if(!t._id&&!this.client)throw new Error('Document needs an _id property when transaction is create outside a client scope. Pass `{_id: "<datasetName>:"}` to have Sanity generate an ID for you.');validators.validateObject(e,t);var r=validators.hasDataset(this.client.clientConfig),i=_defineProperty({},e,assign({},t,{_id:t._id||r+"/"}));return this._add(i)},_add:function(t){return this.clone(t)},then:throwPromiseError("then"),catch:throwPromiseError("catch")}),module.exports=Transaction;
},{"../validators":14,"./patch":5,"xtend/mutable":25}],7:[function(require,module,exports){
},{"../validators":15,"./patch":6,"xtend/mutable":26}],8:[function(require,module,exports){
"use strict";function DatasetsClient(t){this.request=t.request.bind(t)}var assign=require("xtend/mutable"),validate=require("../validators");assign(DatasetsClient.prototype,{create:function(t){return this._modify("PUT",t)},delete:function(t){return this._modify("DELETE",t)},_modify:function(t,e){return validate.dataset(e),this.request({method:t,uri:"/datasets/"+e})}}),module.exports=DatasetsClient;
},{"../validators":14,"xtend/mutable":25}],8:[function(require,module,exports){
},{"../validators":15,"xtend/mutable":26}],9:[function(require,module,exports){
"use strict";function queryString(e){var n=function(n,r){return n.concat(encode(r)+"="+encode(e[r]))};return Object.keys(e).reduce(n,[]).join("&")}var encode=function(e){return encodeURIComponent(e)};exports.stringify=queryString;
},{}],9:[function(require,module,exports){
},{}],10:[function(require,module,exports){
"use strict";function httpError(r){return"Server responded with HTTP "+r.statusCode+" "+(r.statusMessage||"")+", no description"}function stringifyBody(r,e){var o=(e.headers["content-type"]||"").toLowerCase(),t=o.indexOf("application/json")!==-1;return t?JSON.stringify(r,null,2):r}var request=require("@sanity/request"),queryString=require("./queryString"),Observable=require("zen-observable"),debug="".indexOf("sanity")!==-1,log=function(){};module.exports=function(r){r.query&&(r.uri+="?"+queryString.stringify(r.query)),debug&&(log("HTTP %s %s",r.method||"GET",r.uri),"POST"===r.method&&r.json&&log("Request body: %s",JSON.stringify(r.json,null,2)));var e=new Observable(function(e){function o(r){return function(o){var t=o.lengthComputable?o.loaded/o.total:-1;e.next({type:"progress",stage:r,percent:t})}}var t=request(r,function(r,o,t){if(r)return void e.error(r);log("Response code: %s",o.statusCode),debug&&t&&log("Response body: %s",stringifyBody(t,o));var n=o.statusCode>=400;if(n&&t){var s=(t.errors?t.errors.map(function(r){return r.message}):[]).concat([t.error,t.message]).filter(Boolean).join("\n"),u=new Error(s||httpError(o));return u.responseBody=stringifyBody(t,o),u.statusCode=o.statusCode,void e.error(u)}if(n){var i=new Error(httpError(o));return i.statusCode=o.statusCode,void e.error(i)}e.next({type:"response",body:t}),e.complete()});return"upload"in t&&"onprogress"in t.upload&&(t.upload.onprogress=o("upload")),"onprogress"in t&&(t.onprogress=o("download")),t.onabort=function(){e.next({type:"abort"}),e.complete()},function(){return t.abort()}});return e.toPromise=function(){var r=void 0;return e.forEach(function(e){r=e}).then(function(){return r.body})},e};
},{"./queryString":8,"@sanity/request":16,"zen-observable":26}],10:[function(require,module,exports){
},{"./queryString":9,"@sanity/request":17,"zen-observable":27}],11:[function(require,module,exports){
"use strict";var tokenHeader="Sanity-Token",projectHeader="Sanity-Project-ID";module.exports=function(e){var t={};return e.token&&(t[tokenHeader]=e.token),!e.useProjectHostname&&e.projectId&&(t[projectHeader]=e.projectId),{headers:t,timeout:"timeout"in e?e.timeout:15e3,withCredentials:!0,json:!0}};
},{}],11:[function(require,module,exports){
},{}],12:[function(require,module,exports){
"use strict";function ProjectsClient(t){this.client=t}var assign=require("xtend/mutable");assign(ProjectsClient.prototype,{list:function(){return this.client.request({uri:"/projects"})},getById:function(t){return this.client.request({uri:"/projects/"+t})}}),module.exports=ProjectsClient;
},{"xtend/mutable":25}],12:[function(require,module,exports){
"use strict";function SanityClient(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultConfig;this.config(e),this.datasets=new DatasetsClient(this),this.projects=new ProjectsClient(this),this.users=new UsersClient(this),this.auth=new AuthClient(this)}function mergeOptions(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];var n=t.reduce(function(e,t){return e||t.headers?assign(e||{},t.headers||{}):null},null);return assign.apply(void 0,t.concat([n?{headers:n}:{}]))}function createClient(e){return new SanityClient(e)}var assign=require("xtend/mutable"),Patch=require("./data/patch"),Transaction=require("./data/transaction"),dataMethods=require("./data/dataMethods"),DatasetsClient=require("./datasets/datasetsClient"),ProjectsClient=require("./projects/projectsClient"),UsersClient=require("./users/usersClient"),AuthClient=require("./auth/authClient"),httpRequest=require("./http/request"),getRequestOptions=require("./http/requestOptions"),_require=require("./config"),defaultConfig=_require.defaultConfig,initConfig=_require.initConfig;assign(SanityClient.prototype,dataMethods),assign(SanityClient.prototype,{config:function(e){return"undefined"==typeof e?this.clientConfig:(this.clientConfig=initConfig(e,this.clientConfig||{}),this)},request:function(e){return this.requestObservable(e).toPromise()},requestObservable:function(e){return httpRequest(mergeOptions(getRequestOptions(this.clientConfig),e,{uri:this.clientConfig.url+"/"+e.uri.replace(/^\//,"")}))}}),createClient.Patch=Patch,createClient.Transaction=Transaction,module.exports=createClient;
},{"./auth/authClient":1,"./config":2,"./data/dataMethods":3,"./data/patch":5,"./data/transaction":6,"./datasets/datasetsClient":7,"./http/request":9,"./http/requestOptions":10,"./projects/projectsClient":11,"./users/usersClient":13,"xtend/mutable":25}],13:[function(require,module,exports){
},{"xtend/mutable":26}],13:[function(require,module,exports){
"use strict";function SanityClient(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:defaultConfig;this.config(t),this.assets=new AssetsClient(this),this.datasets=new DatasetsClient(this),this.projects=new ProjectsClient(this),this.users=new UsersClient(this),this.auth=new AuthClient(this)}function mergeOptions(){for(var t=arguments.length,e=Array(t),i=0;i<t;i++)e[i]=arguments[i];var n=e.reduce(function(t,e){return t||e.headers?assign(t||{},e.headers||{}):null},null);return assign.apply(void 0,e.concat([n?{headers:n}:{}]))}function createClient(t){return new SanityClient(t)}var assign=require("xtend/mutable"),Patch=require("./data/patch"),Transaction=require("./data/transaction"),dataMethods=require("./data/dataMethods"),DatasetsClient=require("./datasets/datasetsClient"),ProjectsClient=require("./projects/projectsClient"),AssetsClient=require("./assets/assetsClient"),UsersClient=require("./users/usersClient"),AuthClient=require("./auth/authClient"),httpRequest=require("./http/request"),getRequestOptions=require("./http/requestOptions"),_require=require("./config"),defaultConfig=_require.defaultConfig,initConfig=_require.initConfig;assign(SanityClient.prototype,dataMethods),assign(SanityClient.prototype,{config:function(t){return"undefined"==typeof t?this.clientConfig:(this.clientConfig=initConfig(t,this.clientConfig||{}),this)},getUrl:function(t){return this.clientConfig.url+"/"+t.replace(/^\//,"")},request:function(t){return this.requestObservable(t).toPromise()},requestObservable:function(t){return httpRequest(mergeOptions(getRequestOptions(this.clientConfig),t,{uri:this.getUrl(t.uri)}))}}),createClient.Patch=Patch,createClient.Transaction=Transaction,module.exports=createClient;
},{"./assets/assetsClient":1,"./auth/authClient":2,"./config":3,"./data/dataMethods":4,"./data/patch":6,"./data/transaction":7,"./datasets/datasetsClient":8,"./http/request":10,"./http/requestOptions":11,"./projects/projectsClient":12,"./users/usersClient":14,"xtend/mutable":26}],14:[function(require,module,exports){
"use strict";function UsersClient(e){this.client=e}var assign=require("xtend/mutable");assign(UsersClient.prototype,{getById:function(e){return this.client.request({uri:"/users/"+e})}}),module.exports=UsersClient;
},{"xtend/mutable":25}],14:[function(require,module,exports){
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};exports.dataset=function(t){if(!/^[-\w]{1,128}$/.test(t))throw new Error("Datasets can only contain lowercase characters, numbers, underscores and dashes")},exports.projectId=function(t){if(!/^[-a-z0-9]+$/i.test(t))throw new Error("`projectId` can only contain only a-z, 0-9 and dashes")},exports.validateObject=function(t,e){if(null===e||"object"!==("undefined"==typeof e?"undefined":_typeof(e))||Array.isArray(e))throw new Error(t+"() takes an object of properties")},exports.validateDocumentId=function(t,e){if("string"!=typeof e||!/^[-\w]{1,128}\/[-_a-z0-9]+$/i.test(e))throw new Error(t+"() takes a document ID in format dataset/docId")},exports.hasDataset=function(t){if(!t.dataset)throw new Error("`dataset` must be provided to perform queries");return t.dataset},exports.promise={hasDataset:function(t){return new Promise(function(e){return e(exports.hasDataset(t))})}};
},{}],15:[function(require,module,exports){
},{"xtend/mutable":26}],15:[function(require,module,exports){
"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},VALID_ASSET_TYPES=["image","file"];exports.dataset=function(t){if(!/^[-\w]{1,128}$/.test(t))throw new Error("Datasets can only contain lowercase characters, numbers, underscores and dashes")},exports.projectId=function(t){if(!/^[-a-z0-9]+$/i.test(t))throw new Error("`projectId` can only contain only a-z, 0-9 and dashes")},exports.validateAssetType=function(t){if(VALID_ASSET_TYPES.indexOf(t)===-1)throw new Error("Invalid asset type: "+t+". Must be one of "+VALID_ASSET_TYPES.join(", "))},exports.validateObject=function(t,e){if(null===e||"object"!==("undefined"==typeof e?"undefined":_typeof(e))||Array.isArray(e))throw new Error(t+"() takes an object of properties")},exports.validateDocumentId=function(t,e){if("string"!=typeof e||!/^[-\w]{1,128}\/[-_a-z0-9]+$/i.test(e))throw new Error(t+"() takes a document ID in format dataset/docId")},exports.hasDataset=function(t){if(!t.dataset)throw new Error("`dataset` must be provided to perform queries");return t.dataset},exports.promise={hasDataset:function(t){return new Promise(function(e){return e(exports.hasDataset(t))})}};
},{}],16:[function(require,module,exports){
"use strict";function forEachArray(e,t){for(var r=0;r<e.length;r++)t(e[r])}function isEmpty(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}function initParams(e,t,r){var n=e;return isFunction(t)?(r=t,"string"==typeof e&&(n={uri:e})):n=xtend(t,{uri:e}),n.callback=r,n}function createXHR(e,t,r){return t=initParams(e,t,r),_createXHR(t)}function _createXHR(e){function t(){4===u.readyState&&o()}function r(){var e=void 0;if(e=u.response?u.response:u.responseText||getXml(u),h)try{e=JSON.parse(e)}catch(e){}return e}function n(e){return clearTimeout(p),e instanceof Error||(e=new Error(""+(e||"Unknown XMLHttpRequest Error"))),e.statusCode=0,a(e,i)}function o(){if(!d){var t;clearTimeout(p),t=e.useXDR&&void 0===u.status?200:1223===u.status?204:u.status;var n=i,o=null;return 0!==t?(n={body:r(),statusCode:t,method:f,headers:{},url:l,rawRequest:u},u.getAllResponseHeaders&&(n.headers=parseHeaders(u.getAllResponseHeaders()))):o=new Error("Internal XMLHttpRequest Error"),a(o,n,n.body)}}if("undefined"==typeof e.callback)throw new Error("callback argument missing");var s=!1,a=function(t,r,n){s||(s=!0,e.callback(t,r,n))},i={body:void 0,headers:{},statusCode:0,method:f,url:l,rawRequest:u},u=e.xhr||null;u||(u=e.cors||e.useXDR?new createXHR.XDomainRequest:new createXHR.XMLHttpRequest);var c,d,p,l=u.url=e.uri||e.url,f=u.method=e.method||"GET",m=e.body||e.data||null,R=u.headers=e.headers||{},X=!!e.sync,h=!1;if(e.json===!0&&(h=!0,R.accept||R.Accept||(R.Accept="application/json"),"GET"!==f&&"HEAD"!==f&&(R["content-type"]||R["Content-Type"]||(R["Content-Type"]="application/json"),m=JSON.stringify(e.body))),u.onreadystatechange=t,u.onload=o,u.onerror=n,u.onprogress=function(){},u.ontimeout=n,u.open(f,l,!X,e.username,e.password),X||(u.withCredentials=!!e.withCredentials),!X&&e.timeout>0&&(p=setTimeout(function(){d=!0,u.abort("timeout");var e=new Error("XMLHttpRequest timeout");e.code="ETIMEDOUT",n(e)},e.timeout)),u.setRequestHeader)for(c in R)R.hasOwnProperty(c)&&u.setRequestHeader(c,R[c]);else if(e.headers&&!isEmpty(e.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in e&&(u.responseType=e.responseType),"beforeSend"in e&&"function"==typeof e.beforeSend&&e.beforeSend(u),u.send(m),u}function getXml(e){if("document"===e.responseType)return e.responseXML;var t=204===e.status&&e.responseXML&&"parsererror"===e.responseXML.documentElement.nodeName;return""!==e.responseType||t?null:e.responseXML}function noop(){}var window=require("global/window"),isFunction=require("is-function"),parseHeaders=require("parse-headers"),xtend=require("xtend");module.exports=createXHR,createXHR.XMLHttpRequest=window.XMLHttpRequest||noop,createXHR.XDomainRequest="withCredentials"in new createXHR.XMLHttpRequest?createXHR.XMLHttpRequest:window.XDomainRequest,forEachArray(["get","put","post","patch","head","delete"],function(e){createXHR["delete"===e?"del":e]=function(t,r,n){return r=initParams(t,r,n),r.method=e.toUpperCase(),_createXHR(r)}});
},{"global/window":19,"is-function":20,"parse-headers":22,"xtend":24}],16:[function(require,module,exports){
},{"global/window":20,"is-function":21,"parse-headers":23,"xtend":25}],17:[function(require,module,exports){
module.exports=require("@bjoerge/xhr");
},{"@bjoerge/xhr":15}],17:[function(require,module,exports){
},{"@bjoerge/xhr":16}],18:[function(require,module,exports){
"use strict";function toObject(r){if(null===r||void 0===r)throw new TypeError("Sources cannot be null or undefined");return Object(r)}function assignKey(r,e,n){var t=e[n];if(void 0!==t&&null!==t){if(hasOwnProperty.call(r,n)&&(void 0===r[n]||null===r[n]))throw new TypeError("Cannot convert undefined or null to object ("+n+")");hasOwnProperty.call(r,n)&&isObj(t)?r[n]=assign(Object(r[n]),e[n]):r[n]=t}}function assign(r,e){if(r===e)return r;e=Object(e);for(var n in e)hasOwnProperty.call(e,n)&&assignKey(r,e,n);if(Object.getOwnPropertySymbols)for(var t=Object.getOwnPropertySymbols(e),o=0;o<t.length;o++)propIsEnumerable.call(e,t[o])&&assignKey(r,e,t[o]);return r}var isObj=require("is-obj"),hasOwnProperty=Object.prototype.hasOwnProperty,propIsEnumerable=Object.prototype.propertyIsEnumerable;module.exports=function(r){r=toObject(r);for(var e=1;e<arguments.length;e++)assign(r,arguments[e]);return r};
},{"is-obj":21}],18:[function(require,module,exports){
},{"is-obj":22}],19:[function(require,module,exports){
function forEach(r,t,o){if(!isFunction(t))throw new TypeError("iterator must be a function");arguments.length<3&&(o=this),"[object Array]"===toString.call(r)?forEachArray(r,t,o):"string"==typeof r?forEachString(r,t,o):forEachObject(r,t,o)}function forEachArray(r,t,o){for(var n=0,a=r.length;n<a;n++)hasOwnProperty.call(r,n)&&t.call(o,r[n],n,r)}function forEachString(r,t,o){for(var n=0,a=r.length;n<a;n++)t.call(o,r.charAt(n),n,r)}function forEachObject(r,t,o){for(var n in r)hasOwnProperty.call(r,n)&&t.call(o,r[n],n,r)}var isFunction=require("is-function");module.exports=forEach;var toString=Object.prototype.toString,hasOwnProperty=Object.prototype.hasOwnProperty;
},{"is-function":20}],19:[function(require,module,exports){
},{"is-function":21}],20:[function(require,module,exports){
(function (global){
"undefined"!=typeof window?module.exports=window:"undefined"!=typeof global?module.exports=global:"undefined"!=typeof self?module.exports=self:module.exports={};
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],20:[function(require,module,exports){
},{}],21:[function(require,module,exports){
function isFunction(o){var t=toString.call(o);return"[object Function]"===t||"function"==typeof o&&"[object RegExp]"!==t||"undefined"!=typeof window&&(o===window.setTimeout||o===window.alert||o===window.confirm||o===window.prompt)}module.exports=isFunction;var toString=Object.prototype.toString;
},{}],21:[function(require,module,exports){
},{}],22:[function(require,module,exports){
"use strict";module.exports=function(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)};
},{}],22:[function(require,module,exports){
},{}],23:[function(require,module,exports){
var trim=require("trim"),forEach=require("for-each"),isArray=function(r){return"[object Array]"===Object.prototype.toString.call(r)};module.exports=function(r){if(!r)return{};var e={};return forEach(trim(r).split("\n"),function(r){var t=r.indexOf(":"),i=trim(r.slice(0,t)).toLowerCase(),o=trim(r.slice(t+1));"undefined"==typeof e[i]?e[i]=o:isArray(e[i])?e[i].push(o):e[i]=[e[i],o]}),e};
},{"for-each":18,"trim":23}],23:[function(require,module,exports){
},{"for-each":19,"trim":24}],24:[function(require,module,exports){
function trim(r){return r.replace(/^\s*|\s*$/g,"")}exports=module.exports=trim,exports.left=function(r){return r.replace(/^\s*/,"")},exports.right=function(r){return r.replace(/\s*$/,"")};
},{}],24:[function(require,module,exports){
},{}],25:[function(require,module,exports){
function extend(){for(var r={},e=0;e<arguments.length;e++){var t=arguments[e];for(var n in t)hasOwnProperty.call(t,n)&&(r[n]=t[n])}return r}module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;
},{}],25:[function(require,module,exports){
},{}],26:[function(require,module,exports){
function extend(r){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var n in t)hasOwnProperty.call(t,n)&&(r[n]=t[n])}return r}module.exports=extend;var hasOwnProperty=Object.prototype.hasOwnProperty;
},{}],26:[function(require,module,exports){
},{}],27:[function(require,module,exports){
module.exports=require("./zen-observable.js").Observable;
},{"./zen-observable.js":27}],27:[function(require,module,exports){
},{"./zen-observable.js":28}],28:[function(require,module,exports){
"use strict";!function(r,t){"undefined"!=typeof exports?r(exports,module):"undefined"!=typeof self&&r("*"===t?self:t?self[t]={}:{})}(function(r,t){function n(r){return"function"==typeof Symbol&&Boolean(Symbol[r])}function e(r){return n(r)?Symbol[r]:"@@"+r}function o(r,t){var n=r[t];if(null!=n){if("function"!=typeof n)throw new TypeError(n+" is not a function");return n}}function i(r){var t=e("species");return t?r[t]:r}function c(r,t){Object.keys(t).forEach(function(n){var e=Object.getOwnPropertyDescriptor(t,n);e.enumerable=!1,Object.defineProperty(r,n,e)})}function u(r){var t=r._cleanup;t&&(r._cleanup=void 0,t())}function f(r){return void 0===r._observer}function s(r){f(r)||(r._observer=void 0,u(r))}function a(r){return function(t){r.unsubscribe()}}function l(r,t){if(Object(r)!==r)throw new TypeError("Observer must be an object");this._cleanup=void 0,this._observer=r;var n=o(r,"start");if(n&&n.call(r,this),!f(this)){r=new b(this);try{var e=t.call(void 0,r);if(null!=e){if("function"==typeof e.unsubscribe)e=a(e);else if("function"!=typeof e)throw new TypeError(e+" is not a function");this._cleanup=e}}catch(t){return void r.error(t)}f(this)&&u(this)}}function b(r){this._subscription=r}function p(r){if("function"!=typeof r)throw new TypeError("Observable initializer must be a function");this._subscriber=r}c(l.prototype={},{get closed(){return f(this)},unsubscribe:function(){s(this)}}),c(b.prototype={},{get closed(){return f(this._subscription)},next:function(r){var t=this._subscription;if(!f(t)){var n=t._observer;try{var e=o(n,"next");if(!e)return;return e.call(n,r)}catch(r){try{s(t)}finally{throw r}}}},error:function(r){var t=this._subscription;if(f(t))throw r;var n=t._observer;t._observer=void 0;try{var e=o(n,"error");if(!e)throw r;r=e.call(n,r)}catch(r){try{u(t)}finally{throw r}}return u(t),r},complete:function(r){var t=this._subscription;if(!f(t)){var n=t._observer;t._observer=void 0;try{var e=o(n,"complete");r=e?e.call(n,r):void 0}catch(r){try{u(t)}finally{throw r}}return u(t),r}}}),c(p.prototype,{subscribe:function(r){for(var t=[],n=1;n<arguments.length;++n)t.push(arguments[n]);return"function"==typeof r&&(r={next:r,error:t[0],complete:t[1]}),new l(r,this._subscriber)},forEach:function(r){var t=this;return new Promise(function(n,e){return"function"!=typeof r?Promise.reject(new TypeError(r+" is not a function")):void t.subscribe({_subscription:null,start:function(r){if(Object(r)!==r)throw new TypeError(r+" is not an object");this._subscription=r},next:function(t){var n=this._subscription;if(!n.closed)try{return r(t)}catch(r){e(r),n.unsubscribe()}},error:e,complete:n})})},map:function(r){var t=this;if("function"!=typeof r)throw new TypeError(r+" is not a function");var n=i(this.constructor);return new n(function(n){return t.subscribe({next:function(t){if(!n.closed){try{t=r(t)}catch(r){return n.error(r)}return n.next(t)}},error:function(r){return n.error(r)},complete:function(r){return n.complete(r)}})})},filter:function(r){var t=this;if("function"!=typeof r)throw new TypeError(r+" is not a function");var n=i(this.constructor);return new n(function(n){return t.subscribe({next:function(t){if(!n.closed){try{if(!r(t))return}catch(r){return n.error(r)}return n.next(t)}},error:function(r){return n.error(r)},complete:function(){return n.complete()}})})},reduce:function(r){var t=this;if("function"!=typeof r)throw new TypeError(r+" is not a function");var n=i(this.constructor),e=arguments.length>1,o=!1,c=arguments[1],u=c;return new n(function(n){return t.subscribe({next:function(t){if(!n.closed){var i=!o;if(o=!0,!i||e)try{u=r(u,t)}catch(r){return n.error(r)}else u=t}},error:function(r){return n.error(r)},complete:function(){return o||e?(n.next(u),void n.complete()):void n.error(new TypeError("Cannot reduce an empty sequence"))}})})},flatMap:function(r){var t=this;if("function"!=typeof r)throw new TypeError(r+" is not a function");var n=i(this.constructor);return new n(function(n){function e(){o&&0===i.length&&n.complete()}var o=!1,i=[],c=t.subscribe({next:function(t){if(r)try{t=r(t)}catch(r){return void n.error(r)}p.from(t).subscribe({_subscription:null,start:function(r){i.push(this._subscription=r)},next:function(r){n.next(r)},error:function(r){n.error(r)},complete:function(){var r=i.indexOf(this._subscription);r>=0&&i.splice(r,1),e()}})},error:function(r){return n.error(r)},complete:function(){o=!0,e()}});return function(r){i.forEach(function(r){return r.unsubscribe()}),c.unsubscribe()}})}}),Object.defineProperty(p.prototype,e("observable"),{value:function(){return this},writable:!0,configurable:!0}),c(p,{from:function(r){var t="function"==typeof this?this:p;if(null==r)throw new TypeError(r+" is not an object");var i=o(r,e("observable"));if(i){var c=i.call(r);if(Object(c)!==c)throw new TypeError(c+" is not an object");return c.constructor===t?c:new t(function(r){return c.subscribe(r)})}if(n("iterator")&&(i=o(r,e("iterator"))))return new t(function(t){for(var n,e=i.call(r)[Symbol.iterator]();n=e.next(),!n.done;){var o=n.value;if(t.next(o),t.closed)return}t.complete()});if(Array.isArray(r))return new t(function(t){for(var n=0;n<r.length;++n)if(t.next(r[n]),t.closed)return;t.complete()});throw new TypeError(r+" is not observable")},of:function(){for(var r=[],t=0;t<arguments.length;++t)r.push(arguments[t]);var n="function"==typeof this?this:p;return new n(function(t){for(var n=0;n<r.length;++n)if(t.next(r[n]),t.closed)return;t.complete()})}}),Object.defineProperty(p,e("species"),{get:function(){return this},configurable:!0}),r.Observable=p},"*");
},{}]},{},[12])(12)
},{}]},{},[13])(13)
});

@@ -1,1 +0,1 @@

!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.SanityClient=t()}}(function(){return function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var c="function"==typeof require&&require;if(!u&&c)return c(s,!0);if(i)return i(s,!0);var a=new Error("Cannot find module '"+s+"'");throw a.code="MODULE_NOT_FOUND",a}var f=n[s]={exports:{}};e[s][0].call(f.exports,function(t){var n=e[s][1][t];return o(n?n:t)},f,f.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)o(r[s]);return o}({1:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{getLoginProviders:function(){return this.client.request({uri:"/auth/providers"})},logout:function(){return this.client.request({uri:"/auth/logout"})}}),e.exports=r},{"xtend/mutable":25}],2:[function(t,e,n){"use strict";var r=t("xtend/mutable"),o=t("./validators"),i=n.defaultConfig={apiHost:"https://api.sanity.io",useProjectHostname:!0};n.initConfig=function(t,e){var n=r({},i,e,t),s=n.useProjectHostname;if("undefined"==typeof Promise)throw new Error("No native `Promise`-implementation found, polyfill needed");if(s&&!n.projectId)throw new Error("Configuration must contain `projectId`");s&&o.projectId(n.projectId),n.dataset&&o.dataset(n.dataset);var u=n.apiHost.split("://",2),c=u[0],a=u[1];return n.useProjectHostname?n.url=c+"://"+n.projectId+"."+a+"/v1":n.url=n.apiHost+"/v1",n}},{"./validators":14,"xtend/mutable":25}],3:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("xtend/mutable"),i=t("../validators"),s=t("./encodeQueryString"),u=t("./transaction"),c=t("./patch"),a={returnIds:!0},f=1948;e.exports={fetch:function(t,e){return this.dataRequest("query",{query:t,params:e}).then(function(t){return t.result||[]})},getDocument:function(t){return this.request({uri:"/data/doc/"+t,json:!0}).then(function(t){return t.documents&&t.documents[0]})},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},patch:function(t,e){return i.validateDocumentId("patch",t),new c(t,e,this)},delete:function(t){return i.validateDocumentId("delete",t),this.dataRequest("mutate",{delete:{id:t}})},mutate:function(t){return this.dataRequest("mutate",t instanceof c?t.serialize():t)},transaction:function(t){return new u(t,this)},dataRequest:function(t,e){var n=this,r="mutate"===t,o=!r&&s(e),u=!r&&o.length<f,c=u?o:"";return i.promise.hasDataset(this.clientConfig).then(function(o){return n.request({method:u?"GET":"POST",uri:"/data/"+t+"/"+o+c,json:!!u||e,query:r&&a})})},_create:function(t,e){var n=i.hasDataset(this.clientConfig),s=r({},e,o({},t,{_id:t._id||n+"/"}));return this.dataRequest("mutate",s).then(function(t){return{transactionId:t.transactionId,documentId:t.docIds[0]}})}}},{"../validators":14,"./encodeQueryString":4,"./patch":5,"./transaction":6,"xtend/mutable":25}],4:[function(t,e,n){"use strict";var r=encodeURIComponent;e.exports=function(t){var e=t.query,n=t.params,o=void 0===n?{}:n;if(o.query)throw new Error('Parameter "query" is reserved, cannot be used as a parameter');return Object.keys(o).reduce(function(t,e){return t+"&"+r(e)+"="+r(JSON.stringify(o[e]))},"?query="+r(e))}},{}],5:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.documentId=t,this.operations=u({},e),this.client=n}function i(t){return function(){throw new Error(t+"() called on an uncommited patch, did you forget to call commit()?")}}var s=t("deep-assign"),u=t("xtend/mutable"),c=t("../validators").validateObject;u(o.prototype,{clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new o(this.documentId,u({},this.operations,t),this.client)},merge:function(t){return c("merge",t),this.clone({merge:s(this.operations.merge||{},t)})},set:function(t){return this._assign("set",t)},setIfMissing:function(t){return this._assign("setIfMissing",t)},replace:function(t){return c("replace",t),this.clone({replace:t})},inc:function(t){return this._assign("inc",t)},dec:function(t){return this._assign("dec",t)},unset:function(t){throw new Error("Not implemented yet")},append:function(t){throw new Error("Not implemented yet")},prepend:function(t){throw new Error("Not implemented yet")},splice:function(t){throw new Error("Not implemented yet")},serialize:function(){return u({id:this.documentId},this.operations)},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate({patch:this.serialize()});throw new Error("No `client` passed to patch, either provide one or pass the patch to a clients `mutate()` method")},reset:function(){return new o(this.documentId,{},this.client)},_assign:function(t,e){return c(t,e),this.clone(r({},t,u({},this.operations[t]||{},e)))},then:i("then"),catch:i("catch")}),e.exports=o},{"../validators":14,"deep-assign":17,"xtend/mutable":25}],6:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1];this.operations=t,this.client=e}function i(t){return function(){throw new Error(t+"() called on an uncommited transaction, did you forget to call commit()?")}}var s=t("xtend/mutable"),u=t("../validators"),c=t("./patch");s(o.prototype,{clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new o(this.operations.concat(t),this.client)},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},delete:function(t){return u.validateDocumentId("delete",t),this._add({delete:{id:t}})},patch:function t(e,n){var r="function"==typeof n,o=e instanceof c;if(o)return this._add({patch:e.serialize()});if(r){var t=n(new c(e,{},this.client));if(!(t instanceof c))throw new Error("function passed to `patch()` must return the patch");return this._add({patch:t.serialize()})}return this._add({patch:s({id:e},n)})},serialize:function(){return this.operations.slice()},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate(this.serialize());throw new Error("No `client` passed to transaction, either provide one or pass the transaction to a clients `mutate()` method")},reset:function(){return this.operations=[],this},_create:function(t,e){if(!t._id&&!this.client)throw new Error('Document needs an _id property when transaction is create outside a client scope. Pass `{_id: "<datasetName>:"}` to have Sanity generate an ID for you.');u.validateObject(e,t);var n=u.hasDataset(this.client.clientConfig),o=r({},e,s({},t,{_id:t._id||n+"/"}));return this._add(o)},_add:function(t){return this.clone(t)},then:i("then"),catch:i("catch")}),e.exports=o},{"../validators":14,"./patch":5,"xtend/mutable":25}],7:[function(t,e,n){"use strict";function r(t){this.request=t.request.bind(t)}var o=t("xtend/mutable"),i=t("../validators");o(r.prototype,{create:function(t){return this._modify("PUT",t)},delete:function(t){return this._modify("DELETE",t)},_modify:function(t,e){return i.dataset(e),this.request({method:t,uri:"/datasets/"+e})}}),e.exports=r},{"../validators":14,"xtend/mutable":25}],8:[function(t,e,n){"use strict";function r(t){var e=function(e,n){return e.concat(o(n)+"="+o(t[n]))};return Object.keys(t).reduce(e,[]).join("&")}var o=function(t){return encodeURIComponent(t)};n.stringify=r},{}],9:[function(t,e,n){"use strict";function r(t){return"Server responded with HTTP "+t.statusCode+" "+(t.statusMessage||"")+", no description"}function o(t,e){var n=(e.headers["content-type"]||"").toLowerCase(),r=n.indexOf("application/json")!==-1;return r?JSON.stringify(t,null,2):t}var i=t("@sanity/request"),s=t("./queryString"),u=t("zen-observable"),c="".indexOf("sanity")!==-1,a=function(){};e.exports=function(t){t.query&&(t.uri+="?"+s.stringify(t.query)),c&&(a("HTTP %s %s",t.method||"GET",t.uri),"POST"===t.method&&t.json&&a("Request body: %s",JSON.stringify(t.json,null,2)));var e=new u(function(e){function n(t){return function(n){var r=n.lengthComputable?n.loaded/n.total:-1;e.next({type:"progress",stage:t,percent:r})}}var s=i(t,function(t,n,i){if(t)return void e.error(t);a("Response code: %s",n.statusCode),c&&i&&a("Response body: %s",o(i,n));var s=n.statusCode>=400;if(s&&i){var u=(i.errors?i.errors.map(function(t){return t.message}):[]).concat([i.error,i.message]).filter(Boolean).join("\n"),f=new Error(u||r(n));return f.responseBody=o(i,n),f.statusCode=n.statusCode,void e.error(f)}if(s){var l=new Error(r(n));return l.statusCode=n.statusCode,void e.error(l)}e.next({type:"response",body:i}),e.complete()});return"upload"in s&&"onprogress"in s.upload&&(s.upload.onprogress=n("upload")),"onprogress"in s&&(s.onprogress=n("download")),s.onabort=function(){e.next({type:"abort"}),e.complete()},function(){return s.abort()}});return e.toPromise=function(){var t=void 0;return e.forEach(function(e){t=e}).then(function(){return t.body})},e}},{"./queryString":8,"@sanity/request":16,"zen-observable":26}],10:[function(t,e,n){"use strict";var r="Sanity-Token",o="Sanity-Project-ID";e.exports=function(t){var e={};return t.token&&(e[r]=t.token),!t.useProjectHostname&&t.projectId&&(e[o]=t.projectId),{headers:e,timeout:"timeout"in t?t.timeout:15e3,withCredentials:!0,json:!0}}},{}],11:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{list:function(){return this.client.request({uri:"/projects"})},getById:function(t){return this.client.request({uri:"/projects/"+t})}}),e.exports=r},{"xtend/mutable":25}],12:[function(t,e,n){"use strict";function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v;this.config(t),this.datasets=new f(this),this.projects=new l(this),this.users=new d(this),this.auth=new p(this)}function o(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce(function(t,e){return t||e.headers?s(t||{},e.headers||{}):null},null);return s.apply(void 0,e.concat([r?{headers:r}:{}]))}function i(t){return new r(t)}var s=t("xtend/mutable"),u=t("./data/patch"),c=t("./data/transaction"),a=t("./data/dataMethods"),f=t("./datasets/datasetsClient"),l=t("./projects/projectsClient"),d=t("./users/usersClient"),p=t("./auth/authClient"),h=t("./http/request"),y=t("./http/requestOptions"),b=t("./config"),v=b.defaultConfig,m=b.initConfig;s(r.prototype,a),s(r.prototype,{config:function(t){return"undefined"==typeof t?this.clientConfig:(this.clientConfig=m(t,this.clientConfig||{}),this)},request:function(t){return this.requestObservable(t).toPromise()},requestObservable:function(t){return h(o(y(this.clientConfig),t,{uri:this.clientConfig.url+"/"+t.uri.replace(/^\//,"")}))}}),i.Patch=u,i.Transaction=c,e.exports=i},{"./auth/authClient":1,"./config":2,"./data/dataMethods":3,"./data/patch":5,"./data/transaction":6,"./datasets/datasetsClient":7,"./http/request":9,"./http/requestOptions":10,"./projects/projectsClient":11,"./users/usersClient":13,"xtend/mutable":25}],13:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{getById:function(t){return this.client.request({uri:"/users/"+t})}}),e.exports=r},{"xtend/mutable":25}],14:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};n.dataset=function(t){if(!/^[-\w]{1,128}$/.test(t))throw new Error("Datasets can only contain lowercase characters, numbers, underscores and dashes")},n.projectId=function(t){if(!/^[-a-z0-9]+$/i.test(t))throw new Error("`projectId` can only contain only a-z, 0-9 and dashes")},n.validateObject=function(t,e){if(null===e||"object"!==("undefined"==typeof e?"undefined":r(e))||Array.isArray(e))throw new Error(t+"() takes an object of properties")},n.validateDocumentId=function(t,e){if("string"!=typeof e||!/^[-\w]{1,128}\/[-_a-z0-9]+$/i.test(e))throw new Error(t+"() takes a document ID in format dataset/docId")},n.hasDataset=function(t){if(!t.dataset)throw new Error("`dataset` must be provided to perform queries");return t.dataset},n.promise={hasDataset:function(t){return new Promise(function(e){return e(n.hasDataset(t))})}}},{}],15:[function(t,e,n){"use strict";function r(t,e){for(var n=0;n<t.length;n++)e(t[n])}function o(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function i(t,e,n){var r=t;return l(e)?(n=e,"string"==typeof t&&(r={uri:t})):r=p(e,{uri:t}),r.callback=n,r}function s(t,e,n){return e=i(t,e,n),u(e)}function u(t){function e(){4===l.readyState&&i()}function n(){var t=void 0;if(t=l.response?l.response:l.responseText||c(l),j)try{t=JSON.parse(t)}catch(t){}return t}function r(t){return clearTimeout(y),t instanceof Error||(t=new Error(""+(t||"Unknown XMLHttpRequest Error"))),t.statusCode=0,a(t,f)}function i(){if(!h){var e;clearTimeout(y),e=t.useXDR&&void 0===l.status?200:1223===l.status?204:l.status;var r=f,o=null;return 0!==e?(r={body:n(),statusCode:e,method:v,headers:{},url:b,rawRequest:l},l.getAllResponseHeaders&&(r.headers=d(l.getAllResponseHeaders()))):o=new Error("Internal XMLHttpRequest Error"),a(o,r,r.body)}}if("undefined"==typeof t.callback)throw new Error("callback argument missing");var u=!1,a=function(e,n,r){u||(u=!0,t.callback(e,n,r))},f={body:void 0,headers:{},statusCode:0,method:v,url:b,rawRequest:l},l=t.xhr||null;l||(l=t.cors||t.useXDR?new s.XDomainRequest:new s.XMLHttpRequest);var p,h,y,b=l.url=t.uri||t.url,v=l.method=t.method||"GET",m=t.body||t.data||null,w=l.headers=t.headers||{},g=!!t.sync,j=!1;if(t.json===!0&&(j=!0,w.accept||w.Accept||(w.Accept="application/json"),"GET"!==v&&"HEAD"!==v&&(w["content-type"]||w["Content-Type"]||(w["Content-Type"]="application/json"),m=JSON.stringify(t.body))),l.onreadystatechange=e,l.onload=i,l.onerror=r,l.onprogress=function(){},l.ontimeout=r,l.open(v,b,!g,t.username,t.password),g||(l.withCredentials=!!t.withCredentials),!g&&t.timeout>0&&(y=setTimeout(function(){h=!0,l.abort("timeout");var t=new Error("XMLHttpRequest timeout");t.code="ETIMEDOUT",r(t)},t.timeout)),l.setRequestHeader)for(p in w)w.hasOwnProperty(p)&&l.setRequestHeader(p,w[p]);else if(t.headers&&!o(t.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in t&&(l.responseType=t.responseType),"beforeSend"in t&&"function"==typeof t.beforeSend&&t.beforeSend(l),l.send(m),l}function c(t){if("document"===t.responseType)return t.responseXML;var e=204===t.status&&t.responseXML&&"parsererror"===t.responseXML.documentElement.nodeName;return""!==t.responseType||e?null:t.responseXML}function a(){}var f=t("global/window"),l=t("is-function"),d=t("parse-headers"),p=t("xtend");e.exports=s,s.XMLHttpRequest=f.XMLHttpRequest||a,s.XDomainRequest="withCredentials"in new s.XMLHttpRequest?s.XMLHttpRequest:f.XDomainRequest,r(["get","put","post","patch","head","delete"],function(t){s["delete"===t?"del":t]=function(e,n,r){return n=i(e,n,r),n.method=t.toUpperCase(),u(n)}})},{"global/window":19,"is-function":20,"parse-headers":22,xtend:24}],16:[function(t,e,n){e.exports=t("@bjoerge/xhr")},{"@bjoerge/xhr":15}],17:[function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Sources cannot be null or undefined");return Object(t)}function o(t,e,n){var r=e[n];if(void 0!==r&&null!==r){if(u.call(t,n)&&(void 0===t[n]||null===t[n]))throw new TypeError("Cannot convert undefined or null to object ("+n+")");u.call(t,n)&&s(r)?t[n]=i(Object(t[n]),e[n]):t[n]=r}}function i(t,e){if(t===e)return t;e=Object(e);for(var n in e)u.call(e,n)&&o(t,e,n);if(Object.getOwnPropertySymbols)for(var r=Object.getOwnPropertySymbols(e),i=0;i<r.length;i++)c.call(e,r[i])&&o(t,e,r[i]);return t}var s=t("is-obj"),u=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;e.exports=function(t){t=r(t);for(var e=1;e<arguments.length;e++)i(t,arguments[e]);return t}},{"is-obj":21}],18:[function(t,e,n){function r(t,e,n){if(!u(e))throw new TypeError("iterator must be a function");arguments.length<3&&(n=this),"[object Array]"===c.call(t)?o(t,e,n):"string"==typeof t?i(t,e,n):s(t,e,n)}function o(t,e,n){for(var r=0,o=t.length;r<o;r++)a.call(t,r)&&e.call(n,t[r],r,t)}function i(t,e,n){for(var r=0,o=t.length;r<o;r++)e.call(n,t.charAt(r),r,t)}function s(t,e,n){for(var r in t)a.call(t,r)&&e.call(n,t[r],r,t)}var u=t("is-function");e.exports=r;var c=Object.prototype.toString,a=Object.prototype.hasOwnProperty},{"is-function":20}],19:[function(t,e,n){(function(t){"undefined"!=typeof window?e.exports=window:"undefined"!=typeof t?e.exports=t:"undefined"!=typeof self?e.exports=self:e.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],20:[function(t,e,n){function r(t){var e=o.call(t);return"[object Function]"===e||"function"==typeof t&&"[object RegExp]"!==e||"undefined"!=typeof window&&(t===window.setTimeout||t===window.alert||t===window.confirm||t===window.prompt)}e.exports=r;var o=Object.prototype.toString},{}],21:[function(t,e,n){"use strict";e.exports=function(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}},{}],22:[function(t,e,n){var r=t("trim"),o=t("for-each"),i=function(t){return"[object Array]"===Object.prototype.toString.call(t)};e.exports=function(t){if(!t)return{};var e={};return o(r(t).split("\n"),function(t){var n=t.indexOf(":"),o=r(t.slice(0,n)).toLowerCase(),s=r(t.slice(n+1));"undefined"==typeof e[o]?e[o]=s:i(e[o])?e[o].push(s):e[o]=[e[o],s]}),e}},{"for-each":18,trim:23}],23:[function(t,e,n){function r(t){return t.replace(/^\s*|\s*$/g,"")}n=e.exports=r,n.left=function(t){return t.replace(/^\s*/,"")},n.right=function(t){return t.replace(/\s*$/,"")}},{}],24:[function(t,e,n){function r(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var r in n)o.call(n,r)&&(t[r]=n[r])}return t}e.exports=r;var o=Object.prototype.hasOwnProperty},{}],25:[function(t,e,n){function r(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)o.call(n,r)&&(t[r]=n[r])}return t}e.exports=r;var o=Object.prototype.hasOwnProperty},{}],26:[function(t,e,n){e.exports=t("./zen-observable.js").Observable},{"./zen-observable.js":27}],27:[function(t,e,n){"use strict";!function(t,r){"undefined"!=typeof n?t(n,e):"undefined"!=typeof self&&t("*"===r?self:r?self[r]={}:{})}(function(t,e){function n(t){return"function"==typeof Symbol&&Boolean(Symbol[t])}function r(t){return n(t)?Symbol[t]:"@@"+t}function o(t,e){var n=t[e];if(null!=n){if("function"!=typeof n)throw new TypeError(n+" is not a function");return n}}function i(t){var e=r("species");return e?t[e]:t}function s(t,e){Object.keys(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n);r.enumerable=!1,Object.defineProperty(t,n,r)})}function u(t){var e=t._cleanup;e&&(t._cleanup=void 0,e())}function c(t){return void 0===t._observer}function a(t){c(t)||(t._observer=void 0,u(t))}function f(t){return function(e){t.unsubscribe()}}function l(t,e){if(Object(t)!==t)throw new TypeError("Observer must be an object");this._cleanup=void 0,this._observer=t;var n=o(t,"start");if(n&&n.call(t,this),!c(this)){t=new d(this);try{var r=e.call(void 0,t);if(null!=r){if("function"==typeof r.unsubscribe)r=f(r);else if("function"!=typeof r)throw new TypeError(r+" is not a function");this._cleanup=r}}catch(e){return void t.error(e)}c(this)&&u(this)}}function d(t){this._subscription=t}function p(t){if("function"!=typeof t)throw new TypeError("Observable initializer must be a function");this._subscriber=t}s(l.prototype={},{get closed(){return c(this)},unsubscribe:function(){a(this)}}),s(d.prototype={},{get closed(){return c(this._subscription)},next:function(t){var e=this._subscription;if(!c(e)){var n=e._observer;try{var r=o(n,"next");if(!r)return;return r.call(n,t)}catch(t){try{a(e)}finally{throw t}}}},error:function(t){var e=this._subscription;if(c(e))throw t;var n=e._observer;e._observer=void 0;try{var r=o(n,"error");if(!r)throw t;t=r.call(n,t)}catch(t){try{u(e)}finally{throw t}}return u(e),t},complete:function(t){var e=this._subscription;if(!c(e)){var n=e._observer;e._observer=void 0;try{var r=o(n,"complete");t=r?r.call(n,t):void 0}catch(t){try{u(e)}finally{throw t}}return u(e),t}}}),s(p.prototype,{subscribe:function(t){for(var e=[],n=1;n<arguments.length;++n)e.push(arguments[n]);return"function"==typeof t&&(t={next:t,error:e[0],complete:e[1]}),new l(t,this._subscriber)},forEach:function(t){var e=this;return new Promise(function(n,r){return"function"!=typeof t?Promise.reject(new TypeError(t+" is not a function")):void e.subscribe({_subscription:null,start:function(t){if(Object(t)!==t)throw new TypeError(t+" is not an object");this._subscription=t},next:function(e){var n=this._subscription;if(!n.closed)try{return t(e)}catch(t){r(t),n.unsubscribe()}},error:r,complete:n})})},map:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){try{e=t(e)}catch(t){return n.error(t)}return n.next(e)}},error:function(t){return n.error(t)},complete:function(t){return n.complete(t)}})})},filter:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){try{if(!t(e))return}catch(t){return n.error(t)}return n.next(e)}},error:function(t){return n.error(t)},complete:function(){return n.complete()}})})},reduce:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor),r=arguments.length>1,o=!1,s=arguments[1],u=s;return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){var i=!o;if(o=!0,!i||r)try{u=t(u,e)}catch(t){return n.error(t)}else u=e}},error:function(t){return n.error(t)},complete:function(){return o||r?(n.next(u),void n.complete()):void n.error(new TypeError("Cannot reduce an empty sequence"))}})})},flatMap:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){function r(){o&&0===i.length&&n.complete()}var o=!1,i=[],s=e.subscribe({next:function(e){if(t)try{e=t(e)}catch(t){return void n.error(t)}p.from(e).subscribe({_subscription:null,start:function(t){i.push(this._subscription=t)},next:function(t){n.next(t)},error:function(t){n.error(t)},complete:function(){var t=i.indexOf(this._subscription);t>=0&&i.splice(t,1),r()}})},error:function(t){return n.error(t)},complete:function(){o=!0,r()}});return function(t){i.forEach(function(t){return t.unsubscribe()}),s.unsubscribe()}})}}),Object.defineProperty(p.prototype,r("observable"),{value:function(){return this},writable:!0,configurable:!0}),s(p,{from:function(t){var e="function"==typeof this?this:p;if(null==t)throw new TypeError(t+" is not an object");var i=o(t,r("observable"));if(i){var s=i.call(t);if(Object(s)!==s)throw new TypeError(s+" is not an object");return s.constructor===e?s:new e(function(t){return s.subscribe(t)})}if(n("iterator")&&(i=o(t,r("iterator"))))return new e(function(e){for(var n,r=i.call(t)[Symbol.iterator]();n=r.next(),!n.done;){var o=n.value;if(e.next(o),e.closed)return}e.complete()});if(Array.isArray(t))return new e(function(e){for(var n=0;n<t.length;++n)if(e.next(t[n]),e.closed)return;e.complete()});throw new TypeError(t+" is not observable")},of:function(){for(var t=[],e=0;e<arguments.length;++e)t.push(arguments[e]);var n="function"==typeof this?this:p;return new n(function(e){for(var n=0;n<t.length;++n)if(e.next(t[n]),e.closed)return;e.complete()})}}),Object.defineProperty(p,r("species"),{get:function(){return this},configurable:!0}),t.Observable=p},"*")},{}]},{},[12])(12)});
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.SanityClient=t()}}(function(){return function t(e,n,r){function o(s,u){if(!n[s]){if(!e[s]){var a="function"==typeof require&&require;if(!u&&a)return a(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=n[s]={exports:{}};e[s][0].call(f.exports,function(t){var n=e[s][1][t];return o(n?n:t)},f,f.exports,t,e,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s<r.length;s++)o(r[s]);return o}({1:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable"),i=t("../validators");o(r.prototype,{upload:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};i.validateAssetType(t);var r=i.hasDataset(this.client.clientConfig),s="contentType"in n?{"Content-Type":n.contentType}:{};return this.client.requestObservable({method:"POST",headers:o({Accept:"application/json"},s),uri:"/assets/"+t+"/"+r,body:e,json:!1,timeout:0}).map(function(t){return"response"!==t.type?t:o({},t,{body:JSON.parse(t.body)})})}}),e.exports=r},{"../validators":15,"xtend/mutable":26}],2:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{getLoginProviders:function(){return this.client.request({uri:"/auth/providers"})},logout:function(){return this.client.request({uri:"/auth/logout"})}}),e.exports=r},{"xtend/mutable":26}],3:[function(t,e,n){"use strict";var r=t("xtend/mutable"),o=t("./validators"),i=n.defaultConfig={apiHost:"https://api.sanity.io",useProjectHostname:!0};n.initConfig=function(t,e){var n=r({},i,e,t),s=n.useProjectHostname;if("undefined"==typeof Promise)throw new Error("No native `Promise`-implementation found, polyfill needed");if(s&&!n.projectId)throw new Error("Configuration must contain `projectId`");s&&o.projectId(n.projectId),n.dataset&&o.dataset(n.dataset);var u=n.apiHost.split("://",2),a=u[0],c=u[1];return n.useProjectHostname?n.url=a+"://"+n.projectId+"."+c+"/v1":n.url=n.apiHost+"/v1",n}},{"./validators":15,"xtend/mutable":26}],4:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var o=t("xtend/mutable"),i=t("../validators"),s=t("./encodeQueryString"),u=t("./transaction"),a=t("./patch"),c={returnIds:!0},f=1948;e.exports={fetch:function(t,e){return this.dataRequest("query",{query:t,params:e}).then(function(t){return t.result||[]})},getDocument:function(t){return this.request({uri:"/data/doc/"+t,json:!0}).then(function(t){return t.documents&&t.documents[0]})},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},patch:function(t,e){return i.validateDocumentId("patch",t),new a(t,e,this)},delete:function(t){return i.validateDocumentId("delete",t),this.dataRequest("mutate",{delete:{id:t}})},mutate:function(t){return this.dataRequest("mutate",t instanceof a?t.serialize():t)},transaction:function(t){return new u(t,this)},dataRequest:function(t,e){var n=this,r="mutate"===t,o=!r&&s(e),u=!r&&o.length<f,a=u?o:"";return i.promise.hasDataset(this.clientConfig).then(function(o){return n.request({method:u?"GET":"POST",uri:"/data/"+t+"/"+o+a,json:!!u||e,query:r&&c})})},_create:function(t,e){var n=i.hasDataset(this.clientConfig),s=r({},e,o({},t,{_id:t._id||n+"/"}));return this.dataRequest("mutate",s).then(function(t){return{transactionId:t.transactionId,documentId:t.docIds[0]}})}}},{"../validators":15,"./encodeQueryString":5,"./patch":6,"./transaction":7,"xtend/mutable":26}],5:[function(t,e,n){"use strict";var r=encodeURIComponent;e.exports=function(t){var e=t.query,n=t.params,o=void 0===n?{}:n;if(o.query)throw new Error('Parameter "query" is reserved, cannot be used as a parameter');return Object.keys(o).reduce(function(t,e){return t+"&"+r(e)+"="+r(JSON.stringify(o[e]))},"?query="+r(e))}},{}],6:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this.documentId=t,this.operations=u({},e),this.client=n}function i(t){return function(){throw new Error(t+"() called on an uncommited patch, did you forget to call commit()?")}}var s=t("deep-assign"),u=t("xtend/mutable"),a=t("../validators").validateObject;u(o.prototype,{clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new o(this.documentId,u({},this.operations,t),this.client)},merge:function(t){return a("merge",t),this.clone({merge:s(this.operations.merge||{},t)})},set:function(t){return this._assign("set",t)},setIfMissing:function(t){return this._assign("setIfMissing",t)},replace:function(t){return a("replace",t),this.clone({replace:t})},inc:function(t){return this._assign("inc",t)},dec:function(t){return this._assign("dec",t)},unset:function(t){throw new Error("Not implemented yet")},append:function(t){throw new Error("Not implemented yet")},prepend:function(t){throw new Error("Not implemented yet")},splice:function(t){throw new Error("Not implemented yet")},serialize:function(){return u({id:this.documentId},this.operations)},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate({patch:this.serialize()});throw new Error("No `client` passed to patch, either provide one or pass the patch to a clients `mutate()` method")},reset:function(){return new o(this.documentId,{},this.client)},_assign:function(t,e){return a(t,e),this.clone(r({},t,u({},this.operations[t]||{},e)))},then:i("then"),catch:i("catch")}),e.exports=o},{"../validators":15,"deep-assign":18,"xtend/mutable":26}],7:[function(t,e,n){"use strict";function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments[1];this.operations=t,this.client=e}function i(t){return function(){throw new Error(t+"() called on an uncommited transaction, did you forget to call commit()?")}}var s=t("xtend/mutable"),u=t("../validators"),a=t("./patch");s(o.prototype,{clone:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return new o(this.operations.concat(t),this.client)},create:function(t){return this._create(t,"create")},createIfNotExists:function(t){return this._create(t,"createIfNotExists")},createOrReplace:function(t){return this._create(t,"createOrReplace")},delete:function(t){return u.validateDocumentId("delete",t),this._add({delete:{id:t}})},patch:function t(e,n){var r="function"==typeof n,o=e instanceof a;if(o)return this._add({patch:e.serialize()});if(r){var t=n(new a(e,{},this.client));if(!(t instanceof a))throw new Error("function passed to `patch()` must return the patch");return this._add({patch:t.serialize()})}return this._add({patch:s({id:e},n)})},serialize:function(){return this.operations.slice()},toJSON:function(){return this.serialize()},commit:function(){if(this.client)return this.client.mutate(this.serialize());throw new Error("No `client` passed to transaction, either provide one or pass the transaction to a clients `mutate()` method")},reset:function(){return this.operations=[],this},_create:function(t,e){if(!t._id&&!this.client)throw new Error('Document needs an _id property when transaction is create outside a client scope. Pass `{_id: "<datasetName>:"}` to have Sanity generate an ID for you.');u.validateObject(e,t);var n=u.hasDataset(this.client.clientConfig),o=r({},e,s({},t,{_id:t._id||n+"/"}));return this._add(o)},_add:function(t){return this.clone(t)},then:i("then"),catch:i("catch")}),e.exports=o},{"../validators":15,"./patch":6,"xtend/mutable":26}],8:[function(t,e,n){"use strict";function r(t){this.request=t.request.bind(t)}var o=t("xtend/mutable"),i=t("../validators");o(r.prototype,{create:function(t){return this._modify("PUT",t)},delete:function(t){return this._modify("DELETE",t)},_modify:function(t,e){return i.dataset(e),this.request({method:t,uri:"/datasets/"+e})}}),e.exports=r},{"../validators":15,"xtend/mutable":26}],9:[function(t,e,n){"use strict";function r(t){var e=function(e,n){return e.concat(o(n)+"="+o(t[n]))};return Object.keys(t).reduce(e,[]).join("&")}var o=function(t){return encodeURIComponent(t)};n.stringify=r},{}],10:[function(t,e,n){"use strict";function r(t){return"Server responded with HTTP "+t.statusCode+" "+(t.statusMessage||"")+", no description"}function o(t,e){var n=(e.headers["content-type"]||"").toLowerCase(),r=n.indexOf("application/json")!==-1;return r?JSON.stringify(t,null,2):t}var i=t("@sanity/request"),s=t("./queryString"),u=t("zen-observable"),a="".indexOf("sanity")!==-1,c=function(){};e.exports=function(t){t.query&&(t.uri+="?"+s.stringify(t.query)),a&&(c("HTTP %s %s",t.method||"GET",t.uri),"POST"===t.method&&t.json&&c("Request body: %s",JSON.stringify(t.json,null,2)));var e=new u(function(e){function n(t){return function(n){var r=n.lengthComputable?n.loaded/n.total:-1;e.next({type:"progress",stage:t,percent:r})}}var s=i(t,function(t,n,i){if(t)return void e.error(t);c("Response code: %s",n.statusCode),a&&i&&c("Response body: %s",o(i,n));var s=n.statusCode>=400;if(s&&i){var u=(i.errors?i.errors.map(function(t){return t.message}):[]).concat([i.error,i.message]).filter(Boolean).join("\n"),f=new Error(u||r(n));return f.responseBody=o(i,n),f.statusCode=n.statusCode,void e.error(f)}if(s){var l=new Error(r(n));return l.statusCode=n.statusCode,void e.error(l)}e.next({type:"response",body:i}),e.complete()});return"upload"in s&&"onprogress"in s.upload&&(s.upload.onprogress=n("upload")),"onprogress"in s&&(s.onprogress=n("download")),s.onabort=function(){e.next({type:"abort"}),e.complete()},function(){return s.abort()}});return e.toPromise=function(){var t=void 0;return e.forEach(function(e){t=e}).then(function(){return t.body})},e}},{"./queryString":9,"@sanity/request":17,"zen-observable":27}],11:[function(t,e,n){"use strict";var r="Sanity-Token",o="Sanity-Project-ID";e.exports=function(t){var e={};return t.token&&(e[r]=t.token),!t.useProjectHostname&&t.projectId&&(e[o]=t.projectId),{headers:e,timeout:"timeout"in t?t.timeout:15e3,withCredentials:!0,json:!0}}},{}],12:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{list:function(){return this.client.request({uri:"/projects"})},getById:function(t){return this.client.request({uri:"/projects/"+t})}}),e.exports=r},{"xtend/mutable":26}],13:[function(t,e,n){"use strict";function r(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;this.config(t),this.assets=new d(this),this.datasets=new f(this),this.projects=new l(this),this.users=new p(this),this.auth=new h(this)}function o(){for(var t=arguments.length,e=Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce(function(t,e){return t||e.headers?s(t||{},e.headers||{}):null},null);return s.apply(void 0,e.concat([r?{headers:r}:{}]))}function i(t){return new r(t)}var s=t("xtend/mutable"),u=t("./data/patch"),a=t("./data/transaction"),c=t("./data/dataMethods"),f=t("./datasets/datasetsClient"),l=t("./projects/projectsClient"),d=t("./assets/assetsClient"),p=t("./users/usersClient"),h=t("./auth/authClient"),y=t("./http/request"),b=t("./http/requestOptions"),v=t("./config"),m=v.defaultConfig,w=v.initConfig;s(r.prototype,c),s(r.prototype,{config:function(t){return"undefined"==typeof t?this.clientConfig:(this.clientConfig=w(t,this.clientConfig||{}),this)},getUrl:function(t){return this.clientConfig.url+"/"+t.replace(/^\//,"")},request:function(t){return this.requestObservable(t).toPromise()},requestObservable:function(t){return y(o(b(this.clientConfig),t,{uri:this.getUrl(t.uri)}))}}),i.Patch=u,i.Transaction=a,e.exports=i},{"./assets/assetsClient":1,"./auth/authClient":2,"./config":3,"./data/dataMethods":4,"./data/patch":6,"./data/transaction":7,"./datasets/datasetsClient":8,"./http/request":10,"./http/requestOptions":11,"./projects/projectsClient":12,"./users/usersClient":14,"xtend/mutable":26}],14:[function(t,e,n){"use strict";function r(t){this.client=t}var o=t("xtend/mutable");o(r.prototype,{getById:function(t){return this.client.request({uri:"/users/"+t})}}),e.exports=r},{"xtend/mutable":26}],15:[function(t,e,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=["image","file"];n.dataset=function(t){if(!/^[-\w]{1,128}$/.test(t))throw new Error("Datasets can only contain lowercase characters, numbers, underscores and dashes")},n.projectId=function(t){if(!/^[-a-z0-9]+$/i.test(t))throw new Error("`projectId` can only contain only a-z, 0-9 and dashes")},n.validateAssetType=function(t){if(o.indexOf(t)===-1)throw new Error("Invalid asset type: "+t+". Must be one of "+o.join(", "))},n.validateObject=function(t,e){if(null===e||"object"!==("undefined"==typeof e?"undefined":r(e))||Array.isArray(e))throw new Error(t+"() takes an object of properties")},n.validateDocumentId=function(t,e){if("string"!=typeof e||!/^[-\w]{1,128}\/[-_a-z0-9]+$/i.test(e))throw new Error(t+"() takes a document ID in format dataset/docId")},n.hasDataset=function(t){if(!t.dataset)throw new Error("`dataset` must be provided to perform queries");return t.dataset},n.promise={hasDataset:function(t){return new Promise(function(e){return e(n.hasDataset(t))})}}},{}],16:[function(t,e,n){"use strict";function r(t,e){for(var n=0;n<t.length;n++)e(t[n])}function o(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function i(t,e,n){var r=t;return l(e)?(n=e,"string"==typeof t&&(r={uri:t})):r=p(e,{uri:t}),r.callback=n,r}function s(t,e,n){return e=i(t,e,n),u(e)}function u(t){function e(){4===l.readyState&&i()}function n(){var t=void 0;if(t=l.response?l.response:l.responseText||a(l),j)try{t=JSON.parse(t)}catch(t){}return t}function r(t){return clearTimeout(y),t instanceof Error||(t=new Error(""+(t||"Unknown XMLHttpRequest Error"))),t.statusCode=0,c(t,f)}function i(){if(!h){var e;clearTimeout(y),e=t.useXDR&&void 0===l.status?200:1223===l.status?204:l.status;var r=f,o=null;return 0!==e?(r={body:n(),statusCode:e,method:v,headers:{},url:b,rawRequest:l},l.getAllResponseHeaders&&(r.headers=d(l.getAllResponseHeaders()))):o=new Error("Internal XMLHttpRequest Error"),c(o,r,r.body)}}if("undefined"==typeof t.callback)throw new Error("callback argument missing");var u=!1,c=function(e,n,r){u||(u=!0,t.callback(e,n,r))},f={body:void 0,headers:{},statusCode:0,method:v,url:b,rawRequest:l},l=t.xhr||null;l||(l=t.cors||t.useXDR?new s.XDomainRequest:new s.XMLHttpRequest);var p,h,y,b=l.url=t.uri||t.url,v=l.method=t.method||"GET",m=t.body||t.data||null,w=l.headers=t.headers||{},g=!!t.sync,j=!1;if(t.json===!0&&(j=!0,w.accept||w.Accept||(w.Accept="application/json"),"GET"!==v&&"HEAD"!==v&&(w["content-type"]||w["Content-Type"]||(w["Content-Type"]="application/json"),m=JSON.stringify(t.body))),l.onreadystatechange=e,l.onload=i,l.onerror=r,l.onprogress=function(){},l.ontimeout=r,l.open(v,b,!g,t.username,t.password),g||(l.withCredentials=!!t.withCredentials),!g&&t.timeout>0&&(y=setTimeout(function(){h=!0,l.abort("timeout");var t=new Error("XMLHttpRequest timeout");t.code="ETIMEDOUT",r(t)},t.timeout)),l.setRequestHeader)for(p in w)w.hasOwnProperty(p)&&l.setRequestHeader(p,w[p]);else if(t.headers&&!o(t.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in t&&(l.responseType=t.responseType),"beforeSend"in t&&"function"==typeof t.beforeSend&&t.beforeSend(l),l.send(m),l}function a(t){if("document"===t.responseType)return t.responseXML;var e=204===t.status&&t.responseXML&&"parsererror"===t.responseXML.documentElement.nodeName;return""!==t.responseType||e?null:t.responseXML}function c(){}var f=t("global/window"),l=t("is-function"),d=t("parse-headers"),p=t("xtend");e.exports=s,s.XMLHttpRequest=f.XMLHttpRequest||c,s.XDomainRequest="withCredentials"in new s.XMLHttpRequest?s.XMLHttpRequest:f.XDomainRequest,r(["get","put","post","patch","head","delete"],function(t){s["delete"===t?"del":t]=function(e,n,r){return n=i(e,n,r),n.method=t.toUpperCase(),u(n)}})},{"global/window":20,"is-function":21,"parse-headers":23,xtend:25}],17:[function(t,e,n){e.exports=t("@bjoerge/xhr")},{"@bjoerge/xhr":16}],18:[function(t,e,n){"use strict";function r(t){if(null===t||void 0===t)throw new TypeError("Sources cannot be null or undefined");return Object(t)}function o(t,e,n){var r=e[n];if(void 0!==r&&null!==r){if(u.call(t,n)&&(void 0===t[n]||null===t[n]))throw new TypeError("Cannot convert undefined or null to object ("+n+")");u.call(t,n)&&s(r)?t[n]=i(Object(t[n]),e[n]):t[n]=r}}function i(t,e){if(t===e)return t;e=Object(e);for(var n in e)u.call(e,n)&&o(t,e,n);if(Object.getOwnPropertySymbols)for(var r=Object.getOwnPropertySymbols(e),i=0;i<r.length;i++)a.call(e,r[i])&&o(t,e,r[i]);return t}var s=t("is-obj"),u=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(t){t=r(t);for(var e=1;e<arguments.length;e++)i(t,arguments[e]);return t}},{"is-obj":22}],19:[function(t,e,n){function r(t,e,n){if(!u(e))throw new TypeError("iterator must be a function");arguments.length<3&&(n=this),"[object Array]"===a.call(t)?o(t,e,n):"string"==typeof t?i(t,e,n):s(t,e,n)}function o(t,e,n){for(var r=0,o=t.length;r<o;r++)c.call(t,r)&&e.call(n,t[r],r,t)}function i(t,e,n){for(var r=0,o=t.length;r<o;r++)e.call(n,t.charAt(r),r,t)}function s(t,e,n){for(var r in t)c.call(t,r)&&e.call(n,t[r],r,t)}var u=t("is-function");e.exports=r;var a=Object.prototype.toString,c=Object.prototype.hasOwnProperty},{"is-function":21}],20:[function(t,e,n){(function(t){"undefined"!=typeof window?e.exports=window:"undefined"!=typeof t?e.exports=t:"undefined"!=typeof self?e.exports=self:e.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],21:[function(t,e,n){function r(t){var e=o.call(t);return"[object Function]"===e||"function"==typeof t&&"[object RegExp]"!==e||"undefined"!=typeof window&&(t===window.setTimeout||t===window.alert||t===window.confirm||t===window.prompt)}e.exports=r;var o=Object.prototype.toString},{}],22:[function(t,e,n){"use strict";e.exports=function(t){var e=typeof t;return null!==t&&("object"===e||"function"===e)}},{}],23:[function(t,e,n){var r=t("trim"),o=t("for-each"),i=function(t){return"[object Array]"===Object.prototype.toString.call(t)};e.exports=function(t){if(!t)return{};var e={};return o(r(t).split("\n"),function(t){var n=t.indexOf(":"),o=r(t.slice(0,n)).toLowerCase(),s=r(t.slice(n+1));"undefined"==typeof e[o]?e[o]=s:i(e[o])?e[o].push(s):e[o]=[e[o],s]}),e}},{"for-each":19,trim:24}],24:[function(t,e,n){function r(t){return t.replace(/^\s*|\s*$/g,"")}n=e.exports=r,n.left=function(t){return t.replace(/^\s*/,"")},n.right=function(t){return t.replace(/\s*$/,"")}},{}],25:[function(t,e,n){function r(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var r in n)o.call(n,r)&&(t[r]=n[r])}return t}e.exports=r;var o=Object.prototype.hasOwnProperty},{}],26:[function(t,e,n){function r(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)o.call(n,r)&&(t[r]=n[r])}return t}e.exports=r;var o=Object.prototype.hasOwnProperty},{}],27:[function(t,e,n){e.exports=t("./zen-observable.js").Observable},{"./zen-observable.js":28}],28:[function(t,e,n){"use strict";!function(t,r){"undefined"!=typeof n?t(n,e):"undefined"!=typeof self&&t("*"===r?self:r?self[r]={}:{})}(function(t,e){function n(t){return"function"==typeof Symbol&&Boolean(Symbol[t])}function r(t){return n(t)?Symbol[t]:"@@"+t}function o(t,e){var n=t[e];if(null!=n){if("function"!=typeof n)throw new TypeError(n+" is not a function");return n}}function i(t){var e=r("species");return e?t[e]:t}function s(t,e){Object.keys(e).forEach(function(n){var r=Object.getOwnPropertyDescriptor(e,n);r.enumerable=!1,Object.defineProperty(t,n,r)})}function u(t){var e=t._cleanup;e&&(t._cleanup=void 0,e())}function a(t){return void 0===t._observer}function c(t){a(t)||(t._observer=void 0,u(t))}function f(t){return function(e){t.unsubscribe()}}function l(t,e){if(Object(t)!==t)throw new TypeError("Observer must be an object");this._cleanup=void 0,this._observer=t;var n=o(t,"start");if(n&&n.call(t,this),!a(this)){t=new d(this);try{var r=e.call(void 0,t);if(null!=r){if("function"==typeof r.unsubscribe)r=f(r);else if("function"!=typeof r)throw new TypeError(r+" is not a function");this._cleanup=r}}catch(e){return void t.error(e)}a(this)&&u(this)}}function d(t){this._subscription=t}function p(t){if("function"!=typeof t)throw new TypeError("Observable initializer must be a function");this._subscriber=t}s(l.prototype={},{get closed(){return a(this)},unsubscribe:function(){c(this)}}),s(d.prototype={},{get closed(){return a(this._subscription)},next:function(t){var e=this._subscription;if(!a(e)){var n=e._observer;try{var r=o(n,"next");if(!r)return;return r.call(n,t)}catch(t){try{c(e)}finally{throw t}}}},error:function(t){var e=this._subscription;if(a(e))throw t;var n=e._observer;e._observer=void 0;try{var r=o(n,"error");if(!r)throw t;t=r.call(n,t)}catch(t){try{u(e)}finally{throw t}}return u(e),t},complete:function(t){var e=this._subscription;if(!a(e)){var n=e._observer;e._observer=void 0;try{var r=o(n,"complete");t=r?r.call(n,t):void 0}catch(t){try{u(e)}finally{throw t}}return u(e),t}}}),s(p.prototype,{subscribe:function(t){for(var e=[],n=1;n<arguments.length;++n)e.push(arguments[n]);return"function"==typeof t&&(t={next:t,error:e[0],complete:e[1]}),new l(t,this._subscriber)},forEach:function(t){var e=this;return new Promise(function(n,r){return"function"!=typeof t?Promise.reject(new TypeError(t+" is not a function")):void e.subscribe({_subscription:null,start:function(t){if(Object(t)!==t)throw new TypeError(t+" is not an object");this._subscription=t},next:function(e){var n=this._subscription;if(!n.closed)try{return t(e)}catch(t){r(t),n.unsubscribe()}},error:r,complete:n})})},map:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){try{e=t(e)}catch(t){return n.error(t)}return n.next(e)}},error:function(t){return n.error(t)},complete:function(t){return n.complete(t)}})})},filter:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){try{if(!t(e))return}catch(t){return n.error(t)}return n.next(e)}},error:function(t){return n.error(t)},complete:function(){return n.complete()}})})},reduce:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor),r=arguments.length>1,o=!1,s=arguments[1],u=s;return new n(function(n){return e.subscribe({next:function(e){if(!n.closed){var i=!o;if(o=!0,!i||r)try{u=t(u,e)}catch(t){return n.error(t)}else u=e}},error:function(t){return n.error(t)},complete:function(){return o||r?(n.next(u),void n.complete()):void n.error(new TypeError("Cannot reduce an empty sequence"))}})})},flatMap:function(t){var e=this;if("function"!=typeof t)throw new TypeError(t+" is not a function");var n=i(this.constructor);return new n(function(n){function r(){o&&0===i.length&&n.complete()}var o=!1,i=[],s=e.subscribe({next:function(e){if(t)try{e=t(e)}catch(t){return void n.error(t)}p.from(e).subscribe({_subscription:null,start:function(t){i.push(this._subscription=t)},next:function(t){n.next(t)},error:function(t){n.error(t)},complete:function(){var t=i.indexOf(this._subscription);t>=0&&i.splice(t,1),r()}})},error:function(t){return n.error(t)},complete:function(){o=!0,r()}});return function(t){i.forEach(function(t){return t.unsubscribe()}),s.unsubscribe()}})}}),Object.defineProperty(p.prototype,r("observable"),{value:function(){return this},writable:!0,configurable:!0}),s(p,{from:function(t){var e="function"==typeof this?this:p;if(null==t)throw new TypeError(t+" is not an object");var i=o(t,r("observable"));if(i){var s=i.call(t);if(Object(s)!==s)throw new TypeError(s+" is not an object");return s.constructor===e?s:new e(function(t){return s.subscribe(t)})}if(n("iterator")&&(i=o(t,r("iterator"))))return new e(function(e){for(var n,r=i.call(t)[Symbol.iterator]();n=r.next(),!n.done;){var o=n.value;if(e.next(o),e.closed)return}e.complete()});if(Array.isArray(t))return new e(function(e){for(var n=0;n<t.length;++n)if(e.next(t[n]),e.closed)return;e.complete()});throw new TypeError(t+" is not observable")},of:function(){for(var t=[],e=0;e<arguments.length;++e)t.push(arguments[e]);var n="function"==typeof this?this:p;return new n(function(e){for(var n=0;n<t.length;++n)if(e.next(t[n]),e.closed)return;e.complete()})}}),Object.defineProperty(p,r("species"),{get:function(){return this},configurable:!0}),t.Observable=p},"*")},{}]},{},[13])(13)});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc