├── .npmignore ├── .babelrc ├── lib └── cosmic.d.ts ├── test ├── .env.example ├── mocha.opts ├── logo.jpg ├── setup.js ├── constants.js └── unit_tests │ ├── t_auth.js │ ├── t_project_methods.js │ └── t_bucket_methods.js ├── .eslintignore ├── index-browser.js ├── index.js ├── src ├── helpers │ ├── http_methods.js │ ├── constants.js │ ├── promiser.js │ ├── request_handler_promise.js │ └── request_handler.js ├── index.js ├── bucket.js ├── bucket │ ├── user.js │ ├── webhook.js │ ├── object-type.js │ ├── extension.js │ ├── media.js │ └── object.js └── main.js ├── .editorconfig ├── examples ├── server │ ├── get-objects.js │ ├── add-extension-url.js │ ├── import-bucket.js │ ├── deploy-app.js │ └── add-media.js └── browser │ ├── add-media.html │ └── get-objects.html ├── .eslintrc.js ├── webpack.config.js ├── .circleci └── config.yml ├── dist ├── helpers │ ├── http_methods.js │ ├── constants.js │ ├── promiser.js │ ├── request_handler_promise.js │ └── request_handler.js ├── index.js ├── bucket │ ├── user.js │ ├── webhook.js │ ├── object-type.js │ ├── extension.js │ ├── media.js │ └── object.js ├── bucket.js └── main.js ├── LICENSE ├── .gitignore ├── package.json └── README.md /.npmignore: -------------------------------------------------------------------------------- 1 | examples -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { "presets": ["@babel/preset-env"] } -------------------------------------------------------------------------------- /lib/cosmic.d.ts: -------------------------------------------------------------------------------- 1 | declare module "cosmicjs"; 2 | -------------------------------------------------------------------------------- /test/.env.example: -------------------------------------------------------------------------------- 1 | # Move to .env 2 | EMAIL= 3 | PASSWORD= -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --ui tdd 2 | --recursive 3 | --require test/setup.js 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | # Ignore everything 2 | /** 3 | 4 | # Except index.js 5 | !src 6 | -------------------------------------------------------------------------------- /index-browser.js: -------------------------------------------------------------------------------- 1 | import Cosmic from './src/index' 2 | 3 | window.Cosmic = Cosmic 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const Cosmic = require('./dist/index') 2 | 3 | module.exports = Cosmic 4 | -------------------------------------------------------------------------------- /test/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cosmicjs/cosmicjs-node/master/test/logo.jpg -------------------------------------------------------------------------------- /test/setup.js: -------------------------------------------------------------------------------- 1 | var chai = require('chai') 2 | 3 | // Setup chai plugins 4 | chai.use(require('dirty-chai')) 5 | -------------------------------------------------------------------------------- /test/constants.js: -------------------------------------------------------------------------------- 1 | const envPath = __dirname + `/.env` 2 | require('dotenv').config({ path: envPath }) 3 | module.exports = process.env -------------------------------------------------------------------------------- /src/helpers/http_methods.js: -------------------------------------------------------------------------------- 1 | const HTTP_METHODS = { 2 | POST: 'post', 3 | GET: 'get', 4 | FETCH: 'fetch', 5 | PUT: 'put', 6 | PATCH: 'patch', 7 | DELETE: 'delete' 8 | } 9 | 10 | module.exports = HTTP_METHODS 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | indent_size = 2 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | end_of_line = lf 10 | # editorconfig-tools is unable to ignore longs strings or urls 11 | max_line_length = null 12 | -------------------------------------------------------------------------------- /src/helpers/constants.js: -------------------------------------------------------------------------------- 1 | const API_URL = process.env.COSMIC_API_URL || 'https://api.cosmicjs.com' 2 | const UPLOAD_API_URL = process.env.UPLOAD_API_URL || 'https://upload.cosmicjs.com' 3 | const API_VERSION = process.env.COSMIC_API_VERSION || 'v2' 4 | const URI = `${API_URL}/${API_VERSION}` 5 | 6 | module.exports = { 7 | API_URL, 8 | UPLOAD_API_URL, 9 | API_VERSION, 10 | URI 11 | } 12 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | const { init } = require('./helpers/request_handler') 2 | const mainMethods = require('./main') 3 | const bucketMethods = require('./bucket') 4 | 5 | const Cosmic = (config) => { 6 | init(config) 7 | // Combine methods 8 | const methods = { 9 | bucket: bucketMethods 10 | } 11 | return Object.assign(mainMethods, methods) 12 | } 13 | 14 | module.exports = Cosmic 15 | -------------------------------------------------------------------------------- /src/helpers/promiser.js: -------------------------------------------------------------------------------- 1 | const HTTP_METHODS = require('./http_methods') 2 | const { requestHandler } = require('./request_handler_promise') 3 | 4 | const promiser = (endpoint) => new Promise((resolve, reject) => { 5 | requestHandler(HTTP_METHODS.GET, endpoint) 6 | .then((response) => resolve(response.data)) 7 | .catch((err) => reject(err.response ? err.response.data : err.response)) 8 | }) 9 | module.exports = promiser 10 | -------------------------------------------------------------------------------- /examples/server/get-objects.js: -------------------------------------------------------------------------------- 1 | const Cosmic = require('../../dist/index')() 2 | 3 | const express = require('express') 4 | const app = express() 5 | app.get('/', function(req, res, next) { 6 | const bucket = Cosmic.bucket({ 7 | slug: 'wedding-site' 8 | }) 9 | bucket.getObjects().then(data => { 10 | res.json(data) 11 | }).catch(err => { 12 | res.send('Uh Oh!') 13 | }) 14 | }) 15 | app.listen(8080, () => console.log('Example app listening on port 8080!')) -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "extends": "airbnb-base", 3 | "rules": { 4 | // enable additional rules 5 | "no-tabs": "off", 6 | "semi": ["error", "never"], 7 | "linebreak-style": ["error", "unix"], 8 | "quotes": ["error", "single"], 9 | 10 | // override default options for rules from base configurations 11 | "comma-dangle": ["error", "never"], 12 | "no-cond-assign": ["error", "always"], 13 | "no-param-reassign": [2, { "props": false }], 14 | 15 | // disable rules from base configurations 16 | "no-console": "off", 17 | "camelcase": "off", 18 | "indent": ["error", 2] 19 | } 20 | }; -------------------------------------------------------------------------------- /src/helpers/request_handler_promise.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios') 2 | 3 | const init = (config) => { 4 | // Accept Encoding in Node 5 | if (typeof window === 'undefined') { 6 | axios.defaults.headers.common['Accept-Encoding'] = 'gzip, deflate' 7 | } 8 | if (config && config.token) { 9 | axios.defaults.headers.common.Authorization = config.token 10 | } 11 | } 12 | 13 | const requestHandler = (method, url, data, headers) => { 14 | const config = { 15 | method, 16 | url, 17 | data, 18 | headers 19 | } 20 | return axios(config) 21 | } 22 | 23 | module.exports = { 24 | init, 25 | requestHandler 26 | } 27 | -------------------------------------------------------------------------------- /examples/server/add-extension-url.js: -------------------------------------------------------------------------------- 1 | process.env.COSMIC_API_URL = 'http://localhost:3000' 2 | const Cosmic = require('../../dist/index') 3 | 4 | const fileName = `c12a4150-de2c-11e9-aae6-2b062e8daa4e-extension.zip` 5 | const zipDownloadUrl = `https://cosmic-s3.imgix.net/${fileName}` 6 | 7 | const api = Cosmic() 8 | 9 | const bucket = api.bucket({ 10 | slug: 'extension-api-test', 11 | read_key: '', 12 | write_key: '' 13 | }) 14 | 15 | const addExtension = async (url) => { 16 | const createExtensionResponse = await bucket.addExtension({ 17 | zip_url: url 18 | }) 19 | console.log(createExtensionResponse) 20 | } 21 | 22 | addExtension(zipDownloadUrl) 23 | -------------------------------------------------------------------------------- /examples/server/import-bucket.js: -------------------------------------------------------------------------------- 1 | // const Cosmic = require('../../dist/index')() 2 | 3 | const express = require('express') 4 | const app = express() 5 | const Cosmic = require('../../dist/index')({ 6 | token: "token-here" 7 | }) 8 | 9 | const bodyParser = require('body-parser') 10 | app.use(bodyParser.urlencoded()) 11 | app.use(bodyParser.json()) 12 | 13 | app.post('/', function(req, res, next) { 14 | Cosmic.importBucket({ id: req.body.id, bucket: req.body.bucket }) 15 | .then((response) => { 16 | res.json(response) 17 | }) 18 | .catch((err) => { 19 | res.json(err) 20 | }) 21 | }) 22 | 23 | app.listen(8080, () => console.log('Example app listening on port 8080!')) 24 | -------------------------------------------------------------------------------- /examples/server/deploy-app.js: -------------------------------------------------------------------------------- 1 | // const Cosmic = require('../../dist/index')() 2 | 3 | const express = require('express') 4 | const app = express() 5 | const Cosmic = require('../../dist/index')({ 6 | token: "token-here" 7 | }) 8 | 9 | const bodyParser = require('body-parser') 10 | app.use(bodyParser.urlencoded()) 11 | app.use(bodyParser.json()) 12 | 13 | app.post('/', function(req, res, next) { 14 | Cosmic.deployApp({ id: req.body.id, repo_url: req.body.repo_url, repo_branch: req.body.repo_branch }) 15 | .then((response) => { 16 | res.json(response) 17 | }) 18 | .catch((err) => { 19 | res.json(err) 20 | }) 21 | }) 22 | 23 | app.listen(8080, () => console.log('Example app listening on port 8080!')) 24 | -------------------------------------------------------------------------------- /src/bucket.js: -------------------------------------------------------------------------------- 1 | const objectMethods = require('./bucket/object') 2 | const objectTypeMethods = require('./bucket/object-type') 3 | const mediaMethods = require('./bucket/media') 4 | const userMethods = require('./bucket/user') 5 | // const webhookMethods = require('./bucket/webhook') // TODO 6 | // const extensionMethods = require('./bucket/extension') // TODO 7 | 8 | const bucket_methods = (bucket_config) => ({ 9 | ...objectMethods(bucket_config), 10 | ...objectTypeMethods((bucket_config)), 11 | ...mediaMethods((bucket_config)), 12 | ...userMethods(bucket_config) 13 | // ...webhookMethods(bucket_config), // TODO 14 | // ...extensionMethods(bucket_config) // TODO 15 | }) 16 | 17 | module.exports = bucket_methods 18 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | entry: { 3 | browser: './index-browser.js', 4 | }, 5 | output: { 6 | path: __dirname, 7 | filename: 'cosmicjs.browser.min.js', 8 | }, 9 | module: { 10 | rules: [{ 11 | enforce: 'pre', 12 | test: /\index.js?$/, 13 | exclude: /node_modules/, 14 | loader: "eslint-loader" 15 | }, 16 | { 17 | test: /\.js?$/, 18 | exclude: /node_modules/, 19 | loader: 'babel-loader', 20 | query: { 21 | presets: [ 22 | '@babel/preset-env', 23 | ], 24 | } 25 | }] 26 | }, 27 | } -------------------------------------------------------------------------------- /src/helpers/request_handler.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios') 2 | 3 | const init = (config) => { 4 | // Accept Encoding in Node 5 | if (typeof window === 'undefined') { 6 | axios.defaults.headers.common['Accept-Encoding'] = 'gzip, deflate' 7 | } 8 | if (config && config.token) { 9 | axios.defaults.headers.common.Authorization = config.token 10 | } 11 | } 12 | 13 | const requestHandler = (method, url, data, headers) => { 14 | const config = { 15 | method, 16 | url, 17 | data, 18 | headers 19 | } 20 | return axios(config).then((response) => response.data).catch((error) => { 21 | throw (error.response ? error.response.data : error.response) 22 | }) 23 | } 24 | 25 | module.exports = { 26 | init, 27 | requestHandler 28 | } 29 | -------------------------------------------------------------------------------- /examples/server/add-media.js: -------------------------------------------------------------------------------- 1 | // const Cosmic = require('../../dist/index')() 2 | 3 | const express = require('express') 4 | const app = express() 5 | var multer = require('multer') 6 | const Cosmic = require('../../dist/index') 7 | 8 | const api = Cosmic() 9 | const bucket = api.bucket({ 10 | slug: 'test-new-api', 11 | write_key: '' 12 | }) 13 | const upload = multer() 14 | const bodyParser = require('body-parser') 15 | app.use(bodyParser.urlencoded()) 16 | app.use(bodyParser.json()) 17 | 18 | app.post('/', upload.any(), function(req, res, next) { 19 | bucket.addMedia({ media: req.files[0] }) 20 | .then((response) => { 21 | res.json(response) 22 | }) 23 | .catch((err) => { 24 | res.json(err) 25 | }) 26 | }) 27 | 28 | app.listen(8080, () => console.log('Example app listening on port 8080!')) 29 | -------------------------------------------------------------------------------- /src/bucket/user.js: -------------------------------------------------------------------------------- 1 | const { URI } = require('../helpers/constants') 2 | const HTTP_METHODS = require('../helpers/http_methods') 3 | const { requestHandler } = require('../helpers/request_handler') 4 | 5 | const userMethods = (bucket_config) => ({ 6 | getUsers: () => { 7 | const endpoint = `${URI}/buckets/${bucket_config.slug}/users` 8 | return requestHandler(HTTP_METHODS.GET, endpoint, null) 9 | }, 10 | getUser: (params) => { 11 | const endpoint = `${URI}/buckets/${bucket_config.slug}/users/${params.id}` 12 | return requestHandler(HTTP_METHODS.GET, endpoint, null) 13 | }, 14 | addUser: (params) => { 15 | const endpoint = `${URI}/buckets/${bucket_config.slug}/users` 16 | return requestHandler(HTTP_METHODS.POST, endpoint, params) 17 | } 18 | }) 19 | 20 | module.exports = userMethods 21 | -------------------------------------------------------------------------------- /examples/browser/add-media.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

Add Media

7 | 8 | 9 | 10 | 11 | 29 | 30 | -------------------------------------------------------------------------------- /examples/browser/get-objects.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |

Get Objects

7 |
8 | 9 | 10 | 28 | 29 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | # Javascript Node CircleCI 2.0 configuration file 2 | # 3 | # Check https://circleci.com/docs/2.0/language-javascript/ for more details 4 | # 5 | version: 2 6 | jobs: 7 | build: 8 | docker: 9 | # specify the version you desire here 10 | - image: circleci/node:10 11 | 12 | working_directory: ~/repo 13 | 14 | steps: 15 | - checkout 16 | 17 | # Download and cache dependencies 18 | - restore_cache: 19 | keys: 20 | - v1-dependencies-{{ checksum "package.json" }} 21 | # fallback to using the latest cache if no exact match is found 22 | - v1-dependencies- 23 | 24 | - run: npm install 25 | 26 | - save_cache: 27 | paths: 28 | - node_modules 29 | key: v1-dependencies-{{ checksum "package.json" }} 30 | 31 | # run tests! 32 | - run: npm test 33 | -------------------------------------------------------------------------------- /src/bucket/webhook.js: -------------------------------------------------------------------------------- 1 | const { URI } = require('../helpers/constants') 2 | const HTTP_METHODS = require('../helpers/http_methods') 3 | const { requestHandler } = require('../helpers/request_handler') 4 | 5 | const webhookMethods = (bucket_config) => ({ 6 | getWebhooks: () => { 7 | const endpoint = `${URI}/${bucket_config.slug}/webhooks` 8 | return requestHandler(HTTP_METHODS.GET, endpoint) 9 | }, 10 | addWebhook: (params) => { 11 | const endpoint = `${URI}/${bucket_config.slug}/webhooks` 12 | if (bucket_config.write_key) { 13 | params.write_key = bucket_config.write_key 14 | } 15 | return requestHandler(HTTP_METHODS.POST, endpoint, params) 16 | }, 17 | deleteWebhook: (params) => { 18 | const endpoint = `${URI}/${bucket_config.slug}/webhooks/${params.id}` 19 | return requestHandler(HTTP_METHODS.DELETE, endpoint, bucket_config) 20 | } 21 | }) 22 | 23 | module.exports = webhookMethods 24 | -------------------------------------------------------------------------------- /test/unit_tests/t_auth.js: -------------------------------------------------------------------------------- 1 | const expect = require('chai').expect 2 | const Cosmic = require('../../src/index') 3 | const { EMAIL, PASSWORD } = require('../constants') 4 | 5 | suite('Test Authenticate.', function() { 6 | this.timeout(30000); 7 | let config = {}; 8 | test('authenticate hits expected url and returns data from request', function(done) { 9 | Cosmic().authenticate({ 10 | email: EMAIL, 11 | password: PASSWORD 12 | }).then(data => { 13 | config.token = data.token; 14 | expect(data.token).to.be.a('string') /* response was as expected */ 15 | done() 16 | }).catch(err => { 17 | console.log(err) 18 | done(err) 19 | }) 20 | }) 21 | test('getUser', function(done) { 22 | Cosmic({ token: config.token }).getUser() 23 | .then(data => { 24 | expect(data.user).to.be.an('object') 25 | done() 26 | }).catch(err => { 27 | done(err) 28 | }) 29 | }) 30 | }) 31 | -------------------------------------------------------------------------------- /dist/helpers/http_methods.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var HTTP_METHODS = { 4 | POST: 'post', 5 | GET: 'get', 6 | FETCH: 'fetch', 7 | PUT: 'put', 8 | PATCH: 'patch', 9 | DELETE: 'delete' 10 | }; 11 | module.exports = HTTP_METHODS; 12 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2h0dHBfbWV0aG9kcy5qcyJdLCJuYW1lcyI6WyJIVFRQX01FVEhPRFMiLCJQT1NUIiwiR0VUIiwiRkVUQ0giLCJQVVQiLCJQQVRDSCIsIkRFTEVURSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBTUEsWUFBWSxHQUFHO0FBQ25CQyxFQUFBQSxJQUFJLEVBQUUsTUFEYTtBQUVuQkMsRUFBQUEsR0FBRyxFQUFFLEtBRmM7QUFHbkJDLEVBQUFBLEtBQUssRUFBRSxPQUhZO0FBSW5CQyxFQUFBQSxHQUFHLEVBQUUsS0FKYztBQUtuQkMsRUFBQUEsS0FBSyxFQUFFLE9BTFk7QUFNbkJDLEVBQUFBLE1BQU0sRUFBRTtBQU5XLENBQXJCO0FBU0FDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsWUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIVFRQX01FVEhPRFMgPSB7XG4gIFBPU1Q6ICdwb3N0JyxcbiAgR0VUOiAnZ2V0JyxcbiAgRkVUQ0g6ICdmZXRjaCcsXG4gIFBVVDogJ3B1dCcsXG4gIFBBVENIOiAncGF0Y2gnLFxuICBERUxFVEU6ICdkZWxldGUnXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSFRUUF9NRVRIT0RTXG4iXX0= -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Cosmic JS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # Typescript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | test.js -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _require = require('./helpers/request_handler'), 4 | init = _require.init; 5 | 6 | var mainMethods = require('./main'); 7 | 8 | var bucketMethods = require('./bucket'); 9 | 10 | var Cosmic = function Cosmic(config) { 11 | init(config); // Combine methods 12 | 13 | var methods = { 14 | bucket: bucketMethods 15 | }; 16 | return Object.assign(mainMethods, methods); 17 | }; 18 | 19 | module.exports = Cosmic; 20 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiaW5pdCIsIm1haW5NZXRob2RzIiwiYnVja2V0TWV0aG9kcyIsIkNvc21pYyIsImNvbmZpZyIsIm1ldGhvZHMiLCJidWNrZXQiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztlQUFpQkEsT0FBTyxDQUFDLDJCQUFELEM7SUFBaEJDLEksWUFBQUEsSTs7QUFDUixJQUFNQyxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxRQUFELENBQTNCOztBQUNBLElBQU1HLGFBQWEsR0FBR0gsT0FBTyxDQUFDLFVBQUQsQ0FBN0I7O0FBRUEsSUFBTUksTUFBTSxHQUFHLFNBQVRBLE1BQVMsQ0FBQ0MsTUFBRCxFQUFZO0FBQ3pCSixFQUFBQSxJQUFJLENBQUNJLE1BQUQsQ0FBSixDQUR5QixDQUV6Qjs7QUFDQSxNQUFNQyxPQUFPLEdBQUc7QUFDZEMsSUFBQUEsTUFBTSxFQUFFSjtBQURNLEdBQWhCO0FBR0EsU0FBT0ssTUFBTSxDQUFDQyxNQUFQLENBQWNQLFdBQWQsRUFBMkJJLE9BQTNCLENBQVA7QUFDRCxDQVBEOztBQVNBSSxNQUFNLENBQUNDLE9BQVAsR0FBaUJQLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBpbml0IH0gPSByZXF1aXJlKCcuL2hlbHBlcnMvcmVxdWVzdF9oYW5kbGVyJylcbmNvbnN0IG1haW5NZXRob2RzID0gcmVxdWlyZSgnLi9tYWluJylcbmNvbnN0IGJ1Y2tldE1ldGhvZHMgPSByZXF1aXJlKCcuL2J1Y2tldCcpXG5cbmNvbnN0IENvc21pYyA9IChjb25maWcpID0+IHtcbiAgaW5pdChjb25maWcpXG4gIC8vIENvbWJpbmUgbWV0aG9kc1xuICBjb25zdCBtZXRob2RzID0ge1xuICAgIGJ1Y2tldDogYnVja2V0TWV0aG9kc1xuICB9XG4gIHJldHVybiBPYmplY3QuYXNzaWduKG1haW5NZXRob2RzLCBtZXRob2RzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvc21pY1xuIl19 -------------------------------------------------------------------------------- /dist/helpers/constants.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var API_URL = process.env.COSMIC_API_URL || 'https://api.cosmicjs.com'; 4 | var UPLOAD_API_URL = process.env.UPLOAD_API_URL || 'https://upload.cosmicjs.com'; 5 | var API_VERSION = process.env.COSMIC_API_VERSION || 'v2'; 6 | var URI = "".concat(API_URL, "/").concat(API_VERSION); 7 | module.exports = { 8 | API_URL: API_URL, 9 | UPLOAD_API_URL: UPLOAD_API_URL, 10 | API_VERSION: API_VERSION, 11 | URI: URI 12 | }; 13 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL2NvbnN0YW50cy5qcyJdLCJuYW1lcyI6WyJBUElfVVJMIiwicHJvY2VzcyIsImVudiIsIkNPU01JQ19BUElfVVJMIiwiVVBMT0FEX0FQSV9VUkwiLCJBUElfVkVSU0lPTiIsIkNPU01JQ19BUElfVkVSU0lPTiIsIlVSSSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsY0FBWixJQUE4QiwwQkFBOUM7QUFDQSxJQUFNQyxjQUFjLEdBQUdILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRSxjQUFaLElBQThCLDZCQUFyRDtBQUNBLElBQU1DLFdBQVcsR0FBR0osT0FBTyxDQUFDQyxHQUFSLENBQVlJLGtCQUFaLElBQWtDLElBQXREO0FBQ0EsSUFBTUMsR0FBRyxhQUFNUCxPQUFOLGNBQWlCSyxXQUFqQixDQUFUO0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNmVCxFQUFBQSxPQUFPLEVBQVBBLE9BRGU7QUFFZkksRUFBQUEsY0FBYyxFQUFkQSxjQUZlO0FBR2ZDLEVBQUFBLFdBQVcsRUFBWEEsV0FIZTtBQUlmRSxFQUFBQSxHQUFHLEVBQUhBO0FBSmUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBBUElfVVJMID0gcHJvY2Vzcy5lbnYuQ09TTUlDX0FQSV9VUkwgfHwgJ2h0dHBzOi8vYXBpLmNvc21pY2pzLmNvbSdcbmNvbnN0IFVQTE9BRF9BUElfVVJMID0gcHJvY2Vzcy5lbnYuVVBMT0FEX0FQSV9VUkwgfHwgJ2h0dHBzOi8vdXBsb2FkLmNvc21pY2pzLmNvbSdcbmNvbnN0IEFQSV9WRVJTSU9OID0gcHJvY2Vzcy5lbnYuQ09TTUlDX0FQSV9WRVJTSU9OIHx8ICd2MidcbmNvbnN0IFVSSSA9IGAke0FQSV9VUkx9LyR7QVBJX1ZFUlNJT059YFxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQVBJX1VSTCxcbiAgVVBMT0FEX0FQSV9VUkwsXG4gIEFQSV9WRVJTSU9OLFxuICBVUklcbn1cbiJdfQ== -------------------------------------------------------------------------------- /src/bucket/object-type.js: -------------------------------------------------------------------------------- 1 | const { URI } = require('../helpers/constants') 2 | const HTTP_METHODS = require('../helpers/http_methods') 3 | const { requestHandler } = require('../helpers/request_handler') 4 | 5 | let headers 6 | 7 | const objectTypeMethods = (bucket_config) => ({ 8 | getObjectTypes: () => { 9 | const endpoint = `${URI}/buckets/${bucket_config.slug}/object-types?read_key=${bucket_config.read_key}` 10 | return requestHandler(HTTP_METHODS.GET, endpoint) 11 | }, 12 | getObjectType: (params) => { 13 | const endpoint = `${URI}/buckets/${bucket_config.slug}/object-types/${params.slug}?read_key=${bucket_config.read_key}` 14 | return requestHandler(HTTP_METHODS.GET, endpoint) 15 | }, 16 | addObjectType: (params) => { 17 | const endpoint = `${URI}/buckets/${bucket_config.slug}/object-types` 18 | if (bucket_config.write_key) { 19 | headers = { 20 | Authorization: `Bearer ${bucket_config.write_key}` 21 | } 22 | } 23 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers) 24 | }, 25 | editObjectType: (params) => { 26 | const endpoint = `${URI}/buckets/${bucket_config.slug}/object-types/${params.slug}` 27 | if (bucket_config.write_key) { 28 | headers = { 29 | Authorization: `Bearer ${bucket_config.write_key}` 30 | } 31 | } 32 | // Remove slug 33 | delete params.slug 34 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers) 35 | }, 36 | deleteObjectType: (params) => { 37 | const endpoint = `${URI}/buckets/${bucket_config.slug}/object-types/${params.slug}` 38 | if (bucket_config.write_key) { 39 | headers = { 40 | Authorization: `Bearer ${bucket_config.write_key}` 41 | } 42 | } 43 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers) 44 | } 45 | }) 46 | 47 | module.exports = objectTypeMethods 48 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | const HTTP_METHODS = require('./helpers/http_methods') 2 | const { requestHandler } = require('./helpers/request_handler') 3 | const { URI } = require('./helpers/constants') 4 | 5 | const mainMethods = { 6 | authenticate: (params) => { 7 | const endpoint = `${URI}/authenticate` 8 | return requestHandler(HTTP_METHODS.POST, endpoint, params) 9 | }, 10 | getUser: () => { 11 | const endpoint = `${URI}/user` 12 | return requestHandler(HTTP_METHODS.GET, endpoint) 13 | }, 14 | getProjects: () => { 15 | const endpoint = `${URI}/projects` 16 | return requestHandler(HTTP_METHODS.GET, endpoint) 17 | }, 18 | addProject: (params) => { 19 | const endpoint = `${URI}/projects` 20 | return requestHandler(HTTP_METHODS.POST, endpoint, params) 21 | }, 22 | getProject: (params) => { 23 | const endpoint = `${URI}/projects/${params.id}` 24 | return requestHandler(HTTP_METHODS.GET, endpoint) 25 | }, 26 | editProject: (params) => { 27 | const endpoint = `${URI}/projects/${params.id}` 28 | delete params.id 29 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params) 30 | }, 31 | deleteProject: (params) => { 32 | const endpoint = `${URI}/projects/${params.id}` 33 | return requestHandler(HTTP_METHODS.DELETE, endpoint, params) 34 | }, 35 | getBuckets: () => { 36 | const endpoint = `${URI}/buckets` 37 | return requestHandler(HTTP_METHODS.GET, endpoint) 38 | }, 39 | getBucket: (params) => { 40 | const endpoint = `${URI}/buckets/${params.slug}` 41 | return requestHandler(HTTP_METHODS.GET, endpoint) 42 | }, 43 | addBucket: (params) => { 44 | const endpoint = `${URI}/buckets` 45 | return requestHandler(HTTP_METHODS.POST, endpoint, params) 46 | }, 47 | editBucket: (params) => { 48 | const endpoint = `${URI}/buckets/${params.slug}` 49 | delete params.slug 50 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params) 51 | }, 52 | deleteBucket: (params) => { 53 | const endpoint = `${URI}/buckets/${params.slug}` 54 | return requestHandler(HTTP_METHODS.DELETE, endpoint, params) 55 | } 56 | } 57 | 58 | module.exports = mainMethods 59 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cosmicjs", 3 | "version": "4.3.7", 4 | "description": "The official client module for Cosmic. This module helps you easily add dynamic content to your website or application using the Cosmic headless CMS.", 5 | "keywords": [ 6 | "headlesscms", 7 | "cms", 8 | "node", 9 | "content", 10 | "api", 11 | "react", 12 | "reactjs", 13 | "vue", 14 | "vuejs", 15 | "nextjs" 16 | ], 17 | "homepage": "https://www.cosmicjs.com", 18 | "bugs": { 19 | "url": "https://github.com/cosmicjs/cosmicjs-node/issues" 20 | }, 21 | "repository": { 22 | "type": "git", 23 | "url": "git+https://github.com/cosmicjs/cosmicjs-node.git" 24 | }, 25 | "license": "MIT", 26 | "author": "Tony Spiro ", 27 | "main": "dist/index.js", 28 | "types": "lib/cosmic.d.ts", 29 | "scripts": { 30 | "build": "npm run clean; webpack -p; babel src --out-dir dist --source-maps inline --copy-files", 31 | "clean": "rm -f ./cosmicjs.browser.min.js; rm -rf dist/*", 32 | "dev": "nodemon test.js && eslint test.js", 33 | "prepublish": "npm run build", 34 | "lint": "eslint src", 35 | "test": "mocha -u tdd test/**/*.js --reporter spec --timeout 5000" 36 | }, 37 | "dependencies": { 38 | "axios": "^0.21.1", 39 | "form-data": "^3.0.0", 40 | "regenerator-runtime": "^0.13.9", 41 | "typescript": "^4.6.3" 42 | }, 43 | "devDependencies": { 44 | "@babel/cli": "^7.10.4", 45 | "@babel/core": "^7.10.4", 46 | "@babel/preset-env": "^7.10.4", 47 | "archiver": "^4.0.1", 48 | "babel-loader": "^8.1.0", 49 | "blanket": "^1.2.3", 50 | "body-parser": "^1.18.2", 51 | "chai": "^4.1.2", 52 | "dirty-chai": "^2.0.1", 53 | "dotenv": "^8.2.0", 54 | "eslint": "^7.3.1", 55 | "eslint-config-airbnb-base": "^14.2.0", 56 | "eslint-loader": "^4.0.2", 57 | "eslint-plugin-import": "^2.22.0", 58 | "express": "^4.16.3", 59 | "mocha": "^8.0.1", 60 | "multer": "^1.3.0", 61 | "nock": "^13.0.2", 62 | "nodemon": "^2.0.4", 63 | "nyc": "^15.1.0", 64 | "rewire": "^5.0.0", 65 | "webpack": "^4.43.0", 66 | "webpack-cli": "^3.3.12", 67 | "webpack-dev-server": "^3.11.0" 68 | }, 69 | "engines": { 70 | "node": ">=6.0" 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /dist/helpers/promiser.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var HTTP_METHODS = require('./http_methods'); 4 | 5 | var _require = require('./request_handler_promise'), 6 | requestHandler = _require.requestHandler; 7 | 8 | var promiser = function promiser(endpoint) { 9 | return new Promise(function (resolve, reject) { 10 | requestHandler(HTTP_METHODS.GET, endpoint).then(function (response) { 11 | return resolve(response.data); 12 | })["catch"](function (err) { 13 | return reject(err.response ? err.response.data : err.response); 14 | }); 15 | }); 16 | }; 17 | 18 | module.exports = promiser; 19 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3Byb21pc2VyLmpzIl0sIm5hbWVzIjpbIkhUVFBfTUVUSE9EUyIsInJlcXVpcmUiLCJyZXF1ZXN0SGFuZGxlciIsInByb21pc2VyIiwiZW5kcG9pbnQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIkdFVCIsInRoZW4iLCJyZXNwb25zZSIsImRhdGEiLCJlcnIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLFlBQVksR0FBR0MsT0FBTyxDQUFDLGdCQUFELENBQTVCOztlQUMyQkEsT0FBTyxDQUFDLDJCQUFELEM7SUFBMUJDLGMsWUFBQUEsYzs7QUFFUixJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxRQUFEO0FBQUEsU0FBYyxJQUFJQyxPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQzlETCxJQUFBQSxjQUFjLENBQUNGLFlBQVksQ0FBQ1EsR0FBZCxFQUFtQkosUUFBbkIsQ0FBZCxDQUNHSyxJQURILENBQ1EsVUFBQ0MsUUFBRDtBQUFBLGFBQWNKLE9BQU8sQ0FBQ0ksUUFBUSxDQUFDQyxJQUFWLENBQXJCO0FBQUEsS0FEUixXQUVTLFVBQUNDLEdBQUQ7QUFBQSxhQUFTTCxNQUFNLENBQUNLLEdBQUcsQ0FBQ0YsUUFBSixHQUFlRSxHQUFHLENBQUNGLFFBQUosQ0FBYUMsSUFBNUIsR0FBbUNDLEdBQUcsQ0FBQ0YsUUFBeEMsQ0FBZjtBQUFBLEtBRlQ7QUFHRCxHQUo4QixDQUFkO0FBQUEsQ0FBakI7O0FBS0FHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlgsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIVFRQX01FVEhPRFMgPSByZXF1aXJlKCcuL2h0dHBfbWV0aG9kcycpXG5jb25zdCB7IHJlcXVlc3RIYW5kbGVyIH0gPSByZXF1aXJlKCcuL3JlcXVlc3RfaGFuZGxlcl9wcm9taXNlJylcblxuY29uc3QgcHJvbWlzZXIgPSAoZW5kcG9pbnQpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQpXG4gICAgLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNvbHZlKHJlc3BvbnNlLmRhdGEpKVxuICAgIC5jYXRjaCgoZXJyKSA9PiByZWplY3QoZXJyLnJlc3BvbnNlID8gZXJyLnJlc3BvbnNlLmRhdGEgOiBlcnIucmVzcG9uc2UpKVxufSlcbm1vZHVsZS5leHBvcnRzID0gcHJvbWlzZXJcbiJdfQ== -------------------------------------------------------------------------------- /test/unit_tests/t_project_methods.js: -------------------------------------------------------------------------------- 1 | const expect = require('chai').expect 2 | const Cosmic = require('../../src/index') 3 | const { EMAIL, PASSWORD } = require('../constants') 4 | 5 | let config = {}; 6 | suite('Test Project Methods.', function() { 7 | this.timeout(10000); 8 | setup(function(done) { 9 | Cosmic().authenticate({ 10 | email: EMAIL, 11 | password: PASSWORD 12 | }).then(data => { 13 | config.token = data.token; 14 | done() 15 | }).catch(err => { 16 | console.log(err) 17 | done(err) 18 | }) 19 | }) 20 | test('addProject', function(done) { 21 | Cosmic({ token: config.token }).addProject({ 22 | title: 'My New Project' 23 | }) 24 | .then(data => { 25 | expect(data.project).to.be.an('object') 26 | config.project = data.project; 27 | done() 28 | }).catch(err => { 29 | console.log(err) 30 | done(err) 31 | }) 32 | }) 33 | test('getProjects', function(done) { 34 | Cosmic({ token: config.token }).getProjects() 35 | .then(data => { 36 | expect(data.projects).to.be.an('array') 37 | done() 38 | }).catch(err => { 39 | console.log(err) 40 | done(err) 41 | }) 42 | }) 43 | test('getProject', function(done) { 44 | Cosmic({ token: config.token }).getProject({ id: config.project.id }) 45 | .then(data => { 46 | expect(data.project).to.be.an('object') 47 | done() 48 | }).catch(err => { 49 | console.log(err) 50 | done(err) 51 | }) 52 | }) 53 | test('editProject', function(done) { 54 | Cosmic({ token: config.token }).editProject({ 55 | id: config.project.id, 56 | title: 'New Project Edit' 57 | }) 58 | .then(data => { 59 | expect(data.project).to.be.an('object') 60 | done() 61 | }).catch(err => { 62 | console.log(err) 63 | done(err) 64 | }) 65 | }) 66 | test('deleteProject', function(done) { 67 | Cosmic({ token: config.token }).deleteProject({ id: config.project.id }) 68 | .then(data => { 69 | expect(data.message).to.be.a('string') 70 | done() 71 | }).catch(err => { 72 | console.log(err) 73 | done(err) 74 | }) 75 | }) 76 | }) -------------------------------------------------------------------------------- /src/bucket/extension.js: -------------------------------------------------------------------------------- 1 | const FormData = require('form-data') 2 | const { URI } = require('../helpers/constants') 3 | const HTTP_METHODS = require('../helpers/http_methods') 4 | const { requestHandler } = require('../helpers/request_handler') 5 | 6 | const extensionMethods = (bucket_config) => ({ 7 | getExtensions: () => { 8 | const endpoint = `${URI}/${bucket_config.slug}/extensions` 9 | return requestHandler(HTTP_METHODS.GET, endpoint) 10 | }, 11 | addExtension: (params) => { 12 | const endpoint = `${URI}/${bucket_config.slug}/extensions` 13 | let data 14 | if (params.zip) { 15 | data = new FormData() 16 | if (params.zip.buffer) { 17 | data.append('zip', params.zip.buffer, params.zip.originalname) 18 | } else { 19 | data.append('zip', params.zip, params.zip.name) 20 | } 21 | if (bucket_config.write_key) { 22 | data.append('write_key', bucket_config.write_key) 23 | } 24 | } else { 25 | data = params 26 | if (bucket_config.write_key) { 27 | data.write_key = bucket_config.write_key 28 | } 29 | } 30 | const getHeaders = ((form) => new Promise((resolve, reject) => { 31 | if (params.zip) { 32 | if (params.zip.buffer) { 33 | form.getLength((err, length) => { 34 | if (err) reject(err) 35 | const headers = { 'Content-Length': length, ...form.getHeaders() } 36 | resolve(headers) 37 | }) 38 | } else { 39 | resolve({ 'Content-Type': 'multipart/form-data' }) 40 | } 41 | } else { 42 | resolve({ 'Content-Type': 'application/json' }) 43 | } 44 | }) 45 | ) 46 | return getHeaders(data) 47 | .then((headers) => requestHandler(HTTP_METHODS.POST, endpoint, data, headers) 48 | .catch((error) => { 49 | throw error.response.data 50 | })) 51 | }, 52 | editExtension: (params) => { 53 | const endpoint = `${URI}/${bucket_config.slug}/extensions/${params.id}` 54 | if (bucket_config.write_key) { 55 | params.write_key = bucket_config.write_key 56 | } 57 | return requestHandler(HTTP_METHODS.PUT, endpoint, params) 58 | }, 59 | deleteExtension: (params) => { 60 | const endpoint = `${URI}/${bucket_config.slug}/extensions/${params.id}` 61 | return requestHandler(HTTP_METHODS.DELETE, endpoint, bucket_config) 62 | } 63 | }) 64 | 65 | module.exports = extensionMethods 66 | -------------------------------------------------------------------------------- /dist/helpers/request_handler_promise.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var axios = require('axios'); 4 | 5 | var init = function init(config) { 6 | // Accept Encoding in Node 7 | if (typeof window === 'undefined') { 8 | axios.defaults.headers.common['Accept-Encoding'] = 'gzip, deflate'; 9 | } 10 | 11 | if (config && config.token) { 12 | axios.defaults.headers.common.Authorization = config.token; 13 | } 14 | }; 15 | 16 | var requestHandler = function requestHandler(method, url, data, headers) { 17 | var config = { 18 | method: method, 19 | url: url, 20 | data: data, 21 | headers: headers 22 | }; 23 | return axios(config); 24 | }; 25 | 26 | module.exports = { 27 | init: init, 28 | requestHandler: requestHandler 29 | }; 30 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3JlcXVlc3RfaGFuZGxlcl9wcm9taXNlLmpzIl0sIm5hbWVzIjpbImF4aW9zIiwicmVxdWlyZSIsImluaXQiLCJjb25maWciLCJ3aW5kb3ciLCJkZWZhdWx0cyIsImhlYWRlcnMiLCJjb21tb24iLCJ0b2tlbiIsIkF1dGhvcml6YXRpb24iLCJyZXF1ZXN0SGFuZGxlciIsIm1ldGhvZCIsInVybCIsImRhdGEiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBRUEsSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQU8sQ0FBQ0MsTUFBRCxFQUFZO0FBQ3ZCO0FBQ0EsTUFBSSxPQUFPQyxNQUFQLEtBQWtCLFdBQXRCLEVBQW1DO0FBQ2pDSixJQUFBQSxLQUFLLENBQUNLLFFBQU4sQ0FBZUMsT0FBZixDQUF1QkMsTUFBdkIsQ0FBOEIsaUJBQTlCLElBQW1ELGVBQW5EO0FBQ0Q7O0FBQ0QsTUFBSUosTUFBTSxJQUFJQSxNQUFNLENBQUNLLEtBQXJCLEVBQTRCO0FBQzFCUixJQUFBQSxLQUFLLENBQUNLLFFBQU4sQ0FBZUMsT0FBZixDQUF1QkMsTUFBdkIsQ0FBOEJFLGFBQTlCLEdBQThDTixNQUFNLENBQUNLLEtBQXJEO0FBQ0Q7QUFDRixDQVJEOztBQVVBLElBQU1FLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsTUFBRCxFQUFTQyxHQUFULEVBQWNDLElBQWQsRUFBb0JQLE9BQXBCLEVBQWdDO0FBQ3JELE1BQU1ILE1BQU0sR0FBRztBQUNiUSxJQUFBQSxNQUFNLEVBQU5BLE1BRGE7QUFFYkMsSUFBQUEsR0FBRyxFQUFIQSxHQUZhO0FBR2JDLElBQUFBLElBQUksRUFBSkEsSUFIYTtBQUliUCxJQUFBQSxPQUFPLEVBQVBBO0FBSmEsR0FBZjtBQU1BLFNBQU9OLEtBQUssQ0FBQ0csTUFBRCxDQUFaO0FBQ0QsQ0FSRDs7QUFVQVcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2ZiLEVBQUFBLElBQUksRUFBSkEsSUFEZTtBQUVmUSxFQUFBQSxjQUFjLEVBQWRBO0FBRmUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBheGlvcyA9IHJlcXVpcmUoJ2F4aW9zJylcblxuY29uc3QgaW5pdCA9IChjb25maWcpID0+IHtcbiAgLy8gQWNjZXB0IEVuY29kaW5nIGluIE5vZGVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0FjY2VwdC1FbmNvZGluZyddID0gJ2d6aXAsIGRlZmxhdGUnXG4gIH1cbiAgaWYgKGNvbmZpZyAmJiBjb25maWcudG9rZW4pIHtcbiAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vbi5BdXRob3JpemF0aW9uID0gY29uZmlnLnRva2VuXG4gIH1cbn1cblxuY29uc3QgcmVxdWVzdEhhbmRsZXIgPSAobWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRlcnMpID0+IHtcbiAgY29uc3QgY29uZmlnID0ge1xuICAgIG1ldGhvZCxcbiAgICB1cmwsXG4gICAgZGF0YSxcbiAgICBoZWFkZXJzXG4gIH1cbiAgcmV0dXJuIGF4aW9zKGNvbmZpZylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluaXQsXG4gIHJlcXVlc3RIYW5kbGVyXG59XG4iXX0= -------------------------------------------------------------------------------- /dist/helpers/request_handler.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var axios = require('axios'); 4 | 5 | var init = function init(config) { 6 | // Accept Encoding in Node 7 | if (typeof window === 'undefined') { 8 | axios.defaults.headers.common['Accept-Encoding'] = 'gzip, deflate'; 9 | } 10 | 11 | if (config && config.token) { 12 | axios.defaults.headers.common.Authorization = config.token; 13 | } 14 | }; 15 | 16 | var requestHandler = function requestHandler(method, url, data, headers) { 17 | var config = { 18 | method: method, 19 | url: url, 20 | data: data, 21 | headers: headers 22 | }; 23 | return axios(config).then(function (response) { 24 | return response.data; 25 | })["catch"](function (error) { 26 | throw error.response ? error.response.data : error.response; 27 | }); 28 | }; 29 | 30 | module.exports = { 31 | init: init, 32 | requestHandler: requestHandler 33 | }; 34 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3JlcXVlc3RfaGFuZGxlci5qcyJdLCJuYW1lcyI6WyJheGlvcyIsInJlcXVpcmUiLCJpbml0IiwiY29uZmlnIiwid2luZG93IiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIiwidG9rZW4iLCJBdXRob3JpemF0aW9uIiwicmVxdWVzdEhhbmRsZXIiLCJtZXRob2QiLCJ1cmwiLCJkYXRhIiwidGhlbiIsInJlc3BvbnNlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBRUEsSUFBTUMsSUFBSSxHQUFHLFNBQVBBLElBQU8sQ0FBQ0MsTUFBRCxFQUFZO0FBQ3ZCO0FBQ0EsTUFBSSxPQUFPQyxNQUFQLEtBQWtCLFdBQXRCLEVBQW1DO0FBQ2pDSixJQUFBQSxLQUFLLENBQUNLLFFBQU4sQ0FBZUMsT0FBZixDQUF1QkMsTUFBdkIsQ0FBOEIsaUJBQTlCLElBQW1ELGVBQW5EO0FBQ0Q7O0FBQ0QsTUFBSUosTUFBTSxJQUFJQSxNQUFNLENBQUNLLEtBQXJCLEVBQTRCO0FBQzFCUixJQUFBQSxLQUFLLENBQUNLLFFBQU4sQ0FBZUMsT0FBZixDQUF1QkMsTUFBdkIsQ0FBOEJFLGFBQTlCLEdBQThDTixNQUFNLENBQUNLLEtBQXJEO0FBQ0Q7QUFDRixDQVJEOztBQVVBLElBQU1FLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsTUFBRCxFQUFTQyxHQUFULEVBQWNDLElBQWQsRUFBb0JQLE9BQXBCLEVBQWdDO0FBQ3JELE1BQU1ILE1BQU0sR0FBRztBQUNiUSxJQUFBQSxNQUFNLEVBQU5BLE1BRGE7QUFFYkMsSUFBQUEsR0FBRyxFQUFIQSxHQUZhO0FBR2JDLElBQUFBLElBQUksRUFBSkEsSUFIYTtBQUliUCxJQUFBQSxPQUFPLEVBQVBBO0FBSmEsR0FBZjtBQU1BLFNBQU9OLEtBQUssQ0FBQ0csTUFBRCxDQUFMLENBQWNXLElBQWQsQ0FBbUIsVUFBQ0MsUUFBRDtBQUFBLFdBQWNBLFFBQVEsQ0FBQ0YsSUFBdkI7QUFBQSxHQUFuQixXQUFzRCxVQUFDRyxLQUFELEVBQVc7QUFDdEUsVUFBT0EsS0FBSyxDQUFDRCxRQUFOLEdBQWlCQyxLQUFLLENBQUNELFFBQU4sQ0FBZUYsSUFBaEMsR0FBdUNHLEtBQUssQ0FBQ0QsUUFBcEQ7QUFDRCxHQUZNLENBQVA7QUFHRCxDQVZEOztBQVlBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDZmhCLEVBQUFBLElBQUksRUFBSkEsSUFEZTtBQUVmUSxFQUFBQSxjQUFjLEVBQWRBO0FBRmUsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBheGlvcyA9IHJlcXVpcmUoJ2F4aW9zJylcblxuY29uc3QgaW5pdCA9IChjb25maWcpID0+IHtcbiAgLy8gQWNjZXB0IEVuY29kaW5nIGluIE5vZGVcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgYXhpb3MuZGVmYXVsdHMuaGVhZGVycy5jb21tb25bJ0FjY2VwdC1FbmNvZGluZyddID0gJ2d6aXAsIGRlZmxhdGUnXG4gIH1cbiAgaWYgKGNvbmZpZyAmJiBjb25maWcudG9rZW4pIHtcbiAgICBheGlvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vbi5BdXRob3JpemF0aW9uID0gY29uZmlnLnRva2VuXG4gIH1cbn1cblxuY29uc3QgcmVxdWVzdEhhbmRsZXIgPSAobWV0aG9kLCB1cmwsIGRhdGEsIGhlYWRlcnMpID0+IHtcbiAgY29uc3QgY29uZmlnID0ge1xuICAgIG1ldGhvZCxcbiAgICB1cmwsXG4gICAgZGF0YSxcbiAgICBoZWFkZXJzXG4gIH1cbiAgcmV0dXJuIGF4aW9zKGNvbmZpZykudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIHRocm93IChlcnJvci5yZXNwb25zZSA/IGVycm9yLnJlc3BvbnNlLmRhdGEgOiBlcnJvci5yZXNwb25zZSlcbiAgfSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGluaXQsXG4gIHJlcXVlc3RIYW5kbGVyXG59XG4iXX0= -------------------------------------------------------------------------------- /dist/bucket/user.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _require = require('../helpers/constants'), 4 | URI = _require.URI; 5 | 6 | var HTTP_METHODS = require('../helpers/http_methods'); 7 | 8 | var _require2 = require('../helpers/request_handler'), 9 | requestHandler = _require2.requestHandler; 10 | 11 | var userMethods = function userMethods(bucket_config) { 12 | return { 13 | getUsers: function getUsers() { 14 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/users"); 15 | return requestHandler(HTTP_METHODS.GET, endpoint, null); 16 | }, 17 | getUser: function getUser(params) { 18 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/users/").concat(params.id); 19 | return requestHandler(HTTP_METHODS.GET, endpoint, null); 20 | }, 21 | addUser: function addUser(params) { 22 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/users"); 23 | return requestHandler(HTTP_METHODS.POST, endpoint, params); 24 | } 25 | }; 26 | }; 27 | 28 | module.exports = userMethods; 29 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvdXNlci5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiVVJJIiwiSFRUUF9NRVRIT0RTIiwicmVxdWVzdEhhbmRsZXIiLCJ1c2VyTWV0aG9kcyIsImJ1Y2tldF9jb25maWciLCJnZXRVc2VycyIsImVuZHBvaW50Iiwic2x1ZyIsIkdFVCIsImdldFVzZXIiLCJwYXJhbXMiLCJpZCIsImFkZFVzZXIiLCJQT1NUIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7ZUFBZ0JBLE9BQU8sQ0FBQyxzQkFBRCxDO0lBQWZDLEcsWUFBQUEsRzs7QUFDUixJQUFNQyxZQUFZLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7Z0JBQzJCQSxPQUFPLENBQUMsNEJBQUQsQztJQUExQkcsYyxhQUFBQSxjOztBQUVSLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUNDLGFBQUQ7QUFBQSxTQUFvQjtBQUN0Q0MsSUFBQUEsUUFBUSxFQUFFLG9CQUFNO0FBQ2QsVUFBTUMsUUFBUSxhQUFNTixHQUFOLHNCQUFxQkksYUFBYSxDQUFDRyxJQUFuQyxXQUFkO0FBQ0EsYUFBT0wsY0FBYyxDQUFDRCxZQUFZLENBQUNPLEdBQWQsRUFBbUJGLFFBQW5CLEVBQTZCLElBQTdCLENBQXJCO0FBQ0QsS0FKcUM7QUFLdENHLElBQUFBLE9BQU8sRUFBRSxpQkFBQ0MsTUFBRCxFQUFZO0FBQ25CLFVBQU1KLFFBQVEsYUFBTU4sR0FBTixzQkFBcUJJLGFBQWEsQ0FBQ0csSUFBbkMsb0JBQWlERyxNQUFNLENBQUNDLEVBQXhELENBQWQ7QUFDQSxhQUFPVCxjQUFjLENBQUNELFlBQVksQ0FBQ08sR0FBZCxFQUFtQkYsUUFBbkIsRUFBNkIsSUFBN0IsQ0FBckI7QUFDRCxLQVJxQztBQVN0Q00sSUFBQUEsT0FBTyxFQUFFLGlCQUFDRixNQUFELEVBQVk7QUFDbkIsVUFBTUosUUFBUSxhQUFNTixHQUFOLHNCQUFxQkksYUFBYSxDQUFDRyxJQUFuQyxXQUFkO0FBQ0EsYUFBT0wsY0FBYyxDQUFDRCxZQUFZLENBQUNZLElBQWQsRUFBb0JQLFFBQXBCLEVBQThCSSxNQUE5QixDQUFyQjtBQUNEO0FBWnFDLEdBQXBCO0FBQUEsQ0FBcEI7O0FBZUFJLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlosV0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IFVSSSB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuXG5jb25zdCB1c2VyTWV0aG9kcyA9IChidWNrZXRfY29uZmlnKSA9PiAoe1xuICBnZXRVc2VyczogKCkgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS91c2Vyc2BcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQsIG51bGwpXG4gIH0sXG4gIGdldFVzZXI6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vdXNlcnMvJHtwYXJhbXMuaWR9YFxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludCwgbnVsbClcbiAgfSxcbiAgYWRkVXNlcjogKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS91c2Vyc2BcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMpXG4gIH1cbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gdXNlck1ldGhvZHNcbiJdfQ== -------------------------------------------------------------------------------- /dist/bucket.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 4 | 5 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 6 | 7 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 8 | 9 | var objectMethods = require('./bucket/object'); 10 | 11 | var objectTypeMethods = require('./bucket/object-type'); 12 | 13 | var mediaMethods = require('./bucket/media'); 14 | 15 | var userMethods = require('./bucket/user'); // const webhookMethods = require('./bucket/webhook') // TODO 16 | // const extensionMethods = require('./bucket/extension') // TODO 17 | 18 | 19 | var bucket_methods = function bucket_methods(bucket_config) { 20 | return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, objectMethods(bucket_config)), objectTypeMethods(bucket_config)), mediaMethods(bucket_config)), userMethods(bucket_config)); 21 | }; 22 | 23 | module.exports = bucket_methods; 24 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9idWNrZXQuanMiXSwibmFtZXMiOlsib2JqZWN0TWV0aG9kcyIsInJlcXVpcmUiLCJvYmplY3RUeXBlTWV0aG9kcyIsIm1lZGlhTWV0aG9kcyIsInVzZXJNZXRob2RzIiwiYnVja2V0X21ldGhvZHMiLCJidWNrZXRfY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSxhQUFhLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUE3Qjs7QUFDQSxJQUFNQyxpQkFBaUIsR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQWpDOztBQUNBLElBQU1FLFlBQVksR0FBR0YsT0FBTyxDQUFDLGdCQUFELENBQTVCOztBQUNBLElBQU1HLFdBQVcsR0FBR0gsT0FBTyxDQUFDLGVBQUQsQ0FBM0IsQyxDQUNBO0FBQ0E7OztBQUVBLElBQU1JLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsYUFBRDtBQUFBLHFFQUNsQk4sYUFBYSxDQUFDTSxhQUFELENBREssR0FFbEJKLGlCQUFpQixDQUFFSSxhQUFGLENBRkMsR0FHbEJILFlBQVksQ0FBRUcsYUFBRixDQUhNLEdBSWxCRixXQUFXLENBQUNFLGFBQUQsQ0FKTztBQUFBLENBQXZCOztBQVNBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJILGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgb2JqZWN0TWV0aG9kcyA9IHJlcXVpcmUoJy4vYnVja2V0L29iamVjdCcpXG5jb25zdCBvYmplY3RUeXBlTWV0aG9kcyA9IHJlcXVpcmUoJy4vYnVja2V0L29iamVjdC10eXBlJylcbmNvbnN0IG1lZGlhTWV0aG9kcyA9IHJlcXVpcmUoJy4vYnVja2V0L21lZGlhJylcbmNvbnN0IHVzZXJNZXRob2RzID0gcmVxdWlyZSgnLi9idWNrZXQvdXNlcicpXG4vLyBjb25zdCB3ZWJob29rTWV0aG9kcyA9IHJlcXVpcmUoJy4vYnVja2V0L3dlYmhvb2snKSAvLyBUT0RPXG4vLyBjb25zdCBleHRlbnNpb25NZXRob2RzID0gcmVxdWlyZSgnLi9idWNrZXQvZXh0ZW5zaW9uJykgLy8gVE9ET1xuXG5jb25zdCBidWNrZXRfbWV0aG9kcyA9IChidWNrZXRfY29uZmlnKSA9PiAoe1xuICAuLi5vYmplY3RNZXRob2RzKGJ1Y2tldF9jb25maWcpLFxuICAuLi5vYmplY3RUeXBlTWV0aG9kcygoYnVja2V0X2NvbmZpZykpLFxuICAuLi5tZWRpYU1ldGhvZHMoKGJ1Y2tldF9jb25maWcpKSxcbiAgLi4udXNlck1ldGhvZHMoYnVja2V0X2NvbmZpZylcbiAgLy8gLi4ud2ViaG9va01ldGhvZHMoYnVja2V0X2NvbmZpZyksIC8vIFRPRE9cbiAgLy8gLi4uZXh0ZW5zaW9uTWV0aG9kcyhidWNrZXRfY29uZmlnKSAvLyBUT0RPXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1Y2tldF9tZXRob2RzXG4iXX0= -------------------------------------------------------------------------------- /dist/bucket/webhook.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _require = require('../helpers/constants'), 4 | URI = _require.URI; 5 | 6 | var HTTP_METHODS = require('../helpers/http_methods'); 7 | 8 | var _require2 = require('../helpers/request_handler'), 9 | requestHandler = _require2.requestHandler; 10 | 11 | var webhookMethods = function webhookMethods(bucket_config) { 12 | return { 13 | getWebhooks: function getWebhooks() { 14 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/webhooks"); 15 | return requestHandler(HTTP_METHODS.GET, endpoint); 16 | }, 17 | addWebhook: function addWebhook(params) { 18 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/webhooks"); 19 | 20 | if (bucket_config.write_key) { 21 | params.write_key = bucket_config.write_key; 22 | } 23 | 24 | return requestHandler(HTTP_METHODS.POST, endpoint, params); 25 | }, 26 | deleteWebhook: function deleteWebhook(params) { 27 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/webhooks/").concat(params.id); 28 | return requestHandler(HTTP_METHODS.DELETE, endpoint, bucket_config); 29 | } 30 | }; 31 | }; 32 | 33 | module.exports = webhookMethods; 34 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvd2ViaG9vay5qcyJdLCJuYW1lcyI6WyJyZXF1aXJlIiwiVVJJIiwiSFRUUF9NRVRIT0RTIiwicmVxdWVzdEhhbmRsZXIiLCJ3ZWJob29rTWV0aG9kcyIsImJ1Y2tldF9jb25maWciLCJnZXRXZWJob29rcyIsImVuZHBvaW50Iiwic2x1ZyIsIkdFVCIsImFkZFdlYmhvb2siLCJwYXJhbXMiLCJ3cml0ZV9rZXkiLCJQT1NUIiwiZGVsZXRlV2ViaG9vayIsImlkIiwiREVMRVRFIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7ZUFBZ0JBLE9BQU8sQ0FBQyxzQkFBRCxDO0lBQWZDLEcsWUFBQUEsRzs7QUFDUixJQUFNQyxZQUFZLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7Z0JBQzJCQSxPQUFPLENBQUMsNEJBQUQsQztJQUExQkcsYyxhQUFBQSxjOztBQUVSLElBQU1DLGNBQWMsR0FBRyxTQUFqQkEsY0FBaUIsQ0FBQ0MsYUFBRDtBQUFBLFNBQW9CO0FBQ3pDQyxJQUFBQSxXQUFXLEVBQUUsdUJBQU07QUFDakIsVUFBTUMsUUFBUSxhQUFNTixHQUFOLGNBQWFJLGFBQWEsQ0FBQ0csSUFBM0IsY0FBZDtBQUNBLGFBQU9MLGNBQWMsQ0FBQ0QsWUFBWSxDQUFDTyxHQUFkLEVBQW1CRixRQUFuQixDQUFyQjtBQUNELEtBSndDO0FBS3pDRyxJQUFBQSxVQUFVLEVBQUUsb0JBQUNDLE1BQUQsRUFBWTtBQUN0QixVQUFNSixRQUFRLGFBQU1OLEdBQU4sY0FBYUksYUFBYSxDQUFDRyxJQUEzQixjQUFkOztBQUNBLFVBQUlILGFBQWEsQ0FBQ08sU0FBbEIsRUFBNkI7QUFDM0JELFFBQUFBLE1BQU0sQ0FBQ0MsU0FBUCxHQUFtQlAsYUFBYSxDQUFDTyxTQUFqQztBQUNEOztBQUNELGFBQU9ULGNBQWMsQ0FBQ0QsWUFBWSxDQUFDVyxJQUFkLEVBQW9CTixRQUFwQixFQUE4QkksTUFBOUIsQ0FBckI7QUFDRCxLQVh3QztBQVl6Q0csSUFBQUEsYUFBYSxFQUFFLHVCQUFDSCxNQUFELEVBQVk7QUFDekIsVUFBTUosUUFBUSxhQUFNTixHQUFOLGNBQWFJLGFBQWEsQ0FBQ0csSUFBM0IsdUJBQTRDRyxNQUFNLENBQUNJLEVBQW5ELENBQWQ7QUFDQSxhQUFPWixjQUFjLENBQUNELFlBQVksQ0FBQ2MsTUFBZCxFQUFzQlQsUUFBdEIsRUFBZ0NGLGFBQWhDLENBQXJCO0FBQ0Q7QUFmd0MsR0FBcEI7QUFBQSxDQUF2Qjs7QUFrQkFZLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmQsY0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IFVSSSB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuXG5jb25zdCB3ZWJob29rTWV0aG9kcyA9IChidWNrZXRfY29uZmlnKSA9PiAoe1xuICBnZXRXZWJob29rczogKCkgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS8ke2J1Y2tldF9jb25maWcuc2x1Z30vd2ViaG9va3NgXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBhZGRXZWJob29rOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9LyR7YnVja2V0X2NvbmZpZy5zbHVnfS93ZWJob29rc2BcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIHBhcmFtcy53cml0ZV9rZXkgPSBidWNrZXRfY29uZmlnLndyaXRlX2tleVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMpXG4gIH0sXG4gIGRlbGV0ZVdlYmhvb2s6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vJHtidWNrZXRfY29uZmlnLnNsdWd9L3dlYmhvb2tzLyR7cGFyYW1zLmlkfWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkRFTEVURSwgZW5kcG9pbnQsIGJ1Y2tldF9jb25maWcpXG4gIH1cbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gd2ViaG9va01ldGhvZHNcbiJdfQ== -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cosmic NPM module (dashboard v1) 2 | ## IMPORTANT 3 | This package connects to projects on the old Cosmic dashboard and API v2 only. To connect to projects on the [new Cosmic dashboard](https://app.cosmicjs.com/signup) and API v3 use the [Cosmic JavaScript SDK](https://www.npmjs.com/package/@cosmicjs/sdk). 4 | 5 | 6 | ## Content management made simple, fast, and secure. 7 | 8 | [Cosmic](https://www.cosmicjs.com/) is a [headless CMS](https://www.cosmicjs.com/headless-cms) (content management system) that provides a web dashboard to create content and an API toolkit to deliver content to any website or application. Build nearly any type of content model using our admin dashboard then deliver your content powered by our [reliable infrastructure](https://cosmicjs.statuspage.io/) and global CDN. 9 | 10 | ### Save time and launch faster 11 | 12 | Avoid the pain of building, configuring, and maintaining your own CMS infrastructure. Cosmic has all of the features you need out of the box optimized and ready. Plug into Cosmic, save time, and launch your content-powered apps faster. 13 | 14 | ### **Features include** 15 | 16 | 🛠️  Powerful content modeling
17 | 🔍  Flexible queries
18 | ⚡  Customized API response
19 | 🌎  Localization
20 | 🎨  Image optimization
21 | …and more! [See more features →](https://www.cosmicjs.com/features) 22 | 23 | ## Get started 24 | 25 | Start by going to [https://www.cosmicjs.com](https://www.cosmicjs.com/), create your **free account** and set up a project. You can get started from scratch, or start with a [pre-built template](https://www.cosmicjs.com/apps). Then follow the steps below to use this NPM package. 26 | 27 | ## Install 28 | 29 | Install the Cosmic NPM module: 30 | 31 | ```bash 32 | pnpm install cosmicjs 33 | # OR 34 | yarn add cosmicjs 35 | # OR 36 | npm install cosmicjs 37 | ``` 38 | 39 | ## Import 40 | 41 | Import Cosmic into your app: 42 | 43 | ```jsx 44 | const Cosmic = require("cosmicjs") 45 | const api = Cosmic() 46 | ``` 47 | 48 | ## Connect 49 | 50 | In your [Cosmic admin dashboard](https://app.cosmicjs.com/login) go to _Your Bucket > Settings > API Access_ and get your Bucket slug and read key then set the variables in your app to connect to your Bucket: 51 | 52 | ```jsx 53 | const bucket = api.bucket({ 54 | slug: "YOUR_BUCKET_SLUG", 55 | read_key: "YOUR_BUCKET_READ_KEY", 56 | }) 57 | ``` 58 | 59 | ## Get content 60 | 61 | Delivering content to your app is simple using the `objects.find` method. 62 | 63 | **Get multiple Objects** 64 | 65 | Use the `objects.find` method and set the `type` property to any Object Type slug. Additional options noted below. 66 | 67 | ```jsx 68 | const data = await bucket.objects.find({ 69 | type: "products" // Object Type slug 70 | }) 71 | .props("title,slug,metadata") // response properties 72 | .limit(10) // number of Objects to be returned 73 | ``` 74 | 75 | **Get single Object by slug** 76 | 77 | Use the `objects.find` method and set the `slug` property to any Object slug. 78 | 79 | ```jsx 80 | const data = await bucket.objects.find({ 81 | type: "pages", // Object Type slug 82 | slug: "home", // Object slug 83 | locale: "en", // optional, if localization set on Objects 84 | }) 85 | .props("title,slug,metadata") // response properties 86 | ``` 87 | 88 | ### More examples 89 | 90 | For more in-depth guides on getting Cosmic data into your app, you can view these [basic query examples](https://docs.cosmicjs.com/examples/basic-queries). When you are ready to level up, check out [advanced query examples](https://docs.cosmicjs.com/examples/advanced-queries). 91 | 92 | ## Add content 93 | 94 | The Cosmic API is fully CRUD (create, read, update, delete) capable, enabling user-generated content and file uploads. Check out the [add Object](https://docs.cosmicjs.com/examples/add-object) and [add media](https://docs.cosmicjs.com/examples/add-media) examples in the documentation. 95 | 96 | ## Further documentation 97 | 98 | See the [full documentation](https://docs.cosmicjs.com/) for more requests and capabilities. 99 | 100 | ## Community support 101 | 102 | For general help, please refer to [the official Cosmic documentation](https://docs.cosmicjs.com). For additional help, you can use one of these channels to ask a question: 103 | 104 | - [Slack](https://www.cosmicjs.com/community) (For live discussions with the Cosmic community and team) 105 | - [GitHub](https://github.com/cosmicjs/cosmicjs-node) (Bug reports, contributions) 106 | - [Twitter](https://twitter.com/cosmicjs) (Get the latest news about Cosmic features and notifications) 107 | - [YouTube](https://www.youtube.com/cosmicjs) (Learn from video tutorials) 108 | 109 | ## License 110 | 111 | This project is published under the [MIT](https://github.com/cosmicjs/cosmicjs-node/blob/HEAD/LICENSE) license. 112 | -------------------------------------------------------------------------------- /src/bucket/media.js: -------------------------------------------------------------------------------- 1 | require('regenerator-runtime/runtime') 2 | 3 | const FormData = require('form-data') 4 | const { URI, UPLOAD_API_URL, API_VERSION } = require('../helpers/constants') 5 | const HTTP_METHODS = require('../helpers/http_methods') 6 | const { requestHandler } = require('../helpers/request_handler') 7 | const promiser = require('../helpers/promiser') 8 | 9 | const mediaChainMethods = (bucket_config) => ({ 10 | // Get 11 | find(query) { 12 | this.endpoint = `${URI}/buckets/${bucket_config.slug}/media?read_key=${bucket_config.read_key}${query ? `&query=${encodeURI(JSON.stringify(query))}` : ''}` 13 | return this 14 | }, 15 | // findOne 16 | findOne(query) { 17 | this.endpoint = `${URI}/buckets/${bucket_config.slug}/media/${query.id}?read_key=${bucket_config.read_key}` 18 | return this 19 | }, 20 | props(props) { 21 | this.endpoint += `&props=${props}` 22 | return this 23 | }, 24 | sort(sort) { 25 | this.endpoint += `&sort=${sort}` 26 | return this 27 | }, 28 | limit(limit) { 29 | this.endpoint += `&limit=${limit}` 30 | return this 31 | }, 32 | skip(skip) { 33 | this.endpoint += `&skip=${skip}` 34 | return this 35 | }, 36 | // insertOne 37 | async insertOne(params) { 38 | const endpoint = `${UPLOAD_API_URL}/${API_VERSION}/buckets/${bucket_config.slug}/media` 39 | const data = new FormData() 40 | if (params.media.buffer) { 41 | data.append('media', params.media.buffer, params.media.originalname) 42 | } else { 43 | data.append('media', params.media, params.media.name) 44 | } 45 | if (bucket_config.write_key) { 46 | data.append('write_key', bucket_config.write_key) 47 | } 48 | if (params.folder) { 49 | data.append('folder', params.folder) 50 | } 51 | if (params.metadata) { 52 | data.append('metadata', JSON.stringify(params.metadata)) 53 | } 54 | if (params.trigger_webhook) { 55 | data.append('trigger_webhook', params.trigger_webhook.toString()) 56 | } 57 | const getHeaders = ((form) => new Promise((resolve, reject) => { 58 | if (params.media.buffer) { 59 | form.getLength((err, length) => { 60 | if (err) reject(err) 61 | const headers = { 'Content-Length': length, ...form.getHeaders() } 62 | resolve(headers) 63 | }) 64 | } else { 65 | resolve({ 'Content-Type': 'multipart/form-data' }) 66 | } 67 | }) 68 | ) 69 | return getHeaders(data) 70 | .then((headers) => { 71 | headers.Authorization = `Bearer ${bucket_config.write_key}` 72 | return requestHandler(HTTP_METHODS.POST, endpoint, data, headers) 73 | }).catch((error) => { 74 | throw error.response.data 75 | }) 76 | }, 77 | // Delete 78 | async deleteOne(params) { 79 | const endpoint = `${URI}/buckets/${bucket_config.slug}/media/${params.id}${params.trigger_webhook ? '?trigger_webhook=true' : ''}` 80 | let headers 81 | if (bucket_config.write_key) { 82 | headers = { 83 | Authorization: `Bearer ${bucket_config.write_key}` 84 | } 85 | } 86 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers) 87 | }, 88 | async then(resolve, reject) { 89 | promiser(this.endpoint).then((res) => resolve(res, null)).catch((err) => { 90 | if (typeof reject === 'function') { 91 | reject(err) 92 | } else { 93 | resolve(null, err) 94 | } 95 | }) 96 | } 97 | }) 98 | 99 | const mediaMethods = (bucket_config) => ({ 100 | media: mediaChainMethods(bucket_config), 101 | addMedia: (params) => { 102 | const endpoint = `${UPLOAD_API_URL}/${API_VERSION}/buckets/${bucket_config.slug}/media` 103 | const data = new FormData() 104 | if (params.media.buffer) { 105 | data.append('media', params.media.buffer, params.media.originalname) 106 | } else { 107 | data.append('media', params.media, params.media.name) 108 | } 109 | if (bucket_config.write_key) { 110 | data.append('write_key', bucket_config.write_key) 111 | } 112 | if (params.folder) { 113 | data.append('folder', params.folder) 114 | } 115 | if (params.metadata) { 116 | data.append('metadata', JSON.stringify(params.metadata)) 117 | } 118 | if (params.trigger_webhook) { 119 | data.append('trigger_webhook', params.trigger_webhook.toString()) 120 | } 121 | const getHeaders = ((form) => new Promise((resolve, reject) => { 122 | if (params.media.buffer) { 123 | form.getLength((err, length) => { 124 | if (err) reject(err) 125 | const headers = { 'Content-Length': length, ...form.getHeaders() } 126 | resolve(headers) 127 | }) 128 | } else { 129 | resolve({ 'Content-Type': 'multipart/form-data' }) 130 | } 131 | }) 132 | ) 133 | return getHeaders(data) 134 | .then((headers) => { 135 | headers.Authorization = `Bearer ${bucket_config.write_key}` 136 | return requestHandler(HTTP_METHODS.POST, endpoint, data, headers) 137 | }).catch((error) => { 138 | throw error.response.data 139 | }) 140 | }, 141 | getMedia: (params) => { 142 | let endpoint = `${URI}/buckets/${bucket_config.slug}/media?read_key=${bucket_config.read_key}` 143 | if (params && params.limit) { 144 | endpoint += `&limit=${params.limit}` 145 | } 146 | if (params && params.skip) { 147 | endpoint += `&skip=${params.skip}` 148 | } 149 | if (params && params.query) { 150 | endpoint += `&query=${encodeURI(JSON.stringify(params.query))}` 151 | } 152 | if (params && params.props) { 153 | endpoint += `&props=${params.props}` 154 | } 155 | return requestHandler(HTTP_METHODS.GET, endpoint) 156 | }, 157 | getSingleMedia: (params) => { 158 | let endpoint = `${URI}/buckets/${bucket_config.slug}/media/${params.id}?read_key=${bucket_config.read_key}` 159 | if (params && params.props) { 160 | endpoint += `&props=${params.props}` 161 | } 162 | return requestHandler(HTTP_METHODS.GET, endpoint) 163 | }, 164 | deleteMedia: (params) => { 165 | const endpoint = `${URI}/buckets/${bucket_config.slug}/media/${params.id}${params.trigger_webhook ? '?trigger_webhook=true' : ''}` 166 | let headers 167 | if (bucket_config.write_key) { 168 | headers = { 169 | Authorization: `Bearer ${bucket_config.write_key}` 170 | } 171 | } 172 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers) 173 | } 174 | }) 175 | 176 | module.exports = mediaMethods 177 | -------------------------------------------------------------------------------- /dist/bucket/object-type.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var _require = require('../helpers/constants'), 4 | URI = _require.URI; 5 | 6 | var HTTP_METHODS = require('../helpers/http_methods'); 7 | 8 | var _require2 = require('../helpers/request_handler'), 9 | requestHandler = _require2.requestHandler; 10 | 11 | var headers; 12 | 13 | var objectTypeMethods = function objectTypeMethods(bucket_config) { 14 | return { 15 | getObjectTypes: function getObjectTypes() { 16 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/object-types?read_key=").concat(bucket_config.read_key); 17 | return requestHandler(HTTP_METHODS.GET, endpoint); 18 | }, 19 | getObjectType: function getObjectType(params) { 20 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/object-types/").concat(params.slug, "?read_key=").concat(bucket_config.read_key); 21 | return requestHandler(HTTP_METHODS.GET, endpoint); 22 | }, 23 | addObjectType: function addObjectType(params) { 24 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/object-types"); 25 | 26 | if (bucket_config.write_key) { 27 | headers = { 28 | Authorization: "Bearer ".concat(bucket_config.write_key) 29 | }; 30 | } 31 | 32 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers); 33 | }, 34 | editObjectType: function editObjectType(params) { 35 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/object-types/").concat(params.slug); 36 | 37 | if (bucket_config.write_key) { 38 | headers = { 39 | Authorization: "Bearer ".concat(bucket_config.write_key) 40 | }; 41 | } // Remove slug 42 | 43 | 44 | delete params.slug; 45 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers); 46 | }, 47 | deleteObjectType: function deleteObjectType(params) { 48 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/object-types/").concat(params.slug); 49 | 50 | if (bucket_config.write_key) { 51 | headers = { 52 | Authorization: "Bearer ".concat(bucket_config.write_key) 53 | }; 54 | } 55 | 56 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers); 57 | } 58 | }; 59 | }; 60 | 61 | module.exports = objectTypeMethods; 62 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvb2JqZWN0LXR5cGUuanMiXSwibmFtZXMiOlsicmVxdWlyZSIsIlVSSSIsIkhUVFBfTUVUSE9EUyIsInJlcXVlc3RIYW5kbGVyIiwiaGVhZGVycyIsIm9iamVjdFR5cGVNZXRob2RzIiwiYnVja2V0X2NvbmZpZyIsImdldE9iamVjdFR5cGVzIiwiZW5kcG9pbnQiLCJzbHVnIiwicmVhZF9rZXkiLCJHRVQiLCJnZXRPYmplY3RUeXBlIiwicGFyYW1zIiwiYWRkT2JqZWN0VHlwZSIsIndyaXRlX2tleSIsIkF1dGhvcml6YXRpb24iLCJQT1NUIiwiZWRpdE9iamVjdFR5cGUiLCJQQVRDSCIsImRlbGV0ZU9iamVjdFR5cGUiLCJERUxFVEUiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztlQUFnQkEsT0FBTyxDQUFDLHNCQUFELEM7SUFBZkMsRyxZQUFBQSxHOztBQUNSLElBQU1DLFlBQVksR0FBR0YsT0FBTyxDQUFDLHlCQUFELENBQTVCOztnQkFDMkJBLE9BQU8sQ0FBQyw0QkFBRCxDO0lBQTFCRyxjLGFBQUFBLGM7O0FBRVIsSUFBSUMsT0FBSjs7QUFFQSxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUNDLGFBQUQ7QUFBQSxTQUFvQjtBQUM1Q0MsSUFBQUEsY0FBYyxFQUFFLDBCQUFNO0FBQ3BCLFVBQU1DLFFBQVEsYUFBTVAsR0FBTixzQkFBcUJLLGFBQWEsQ0FBQ0csSUFBbkMsb0NBQWlFSCxhQUFhLENBQUNJLFFBQS9FLENBQWQ7QUFDQSxhQUFPUCxjQUFjLENBQUNELFlBQVksQ0FBQ1MsR0FBZCxFQUFtQkgsUUFBbkIsQ0FBckI7QUFDRCxLQUoyQztBQUs1Q0ksSUFBQUEsYUFBYSxFQUFFLHVCQUFDQyxNQUFELEVBQVk7QUFDekIsVUFBTUwsUUFBUSxhQUFNUCxHQUFOLHNCQUFxQkssYUFBYSxDQUFDRyxJQUFuQywyQkFBd0RJLE1BQU0sQ0FBQ0osSUFBL0QsdUJBQWdGSCxhQUFhLENBQUNJLFFBQTlGLENBQWQ7QUFDQSxhQUFPUCxjQUFjLENBQUNELFlBQVksQ0FBQ1MsR0FBZCxFQUFtQkgsUUFBbkIsQ0FBckI7QUFDRCxLQVIyQztBQVM1Q00sSUFBQUEsYUFBYSxFQUFFLHVCQUFDRCxNQUFELEVBQVk7QUFDekIsVUFBTUwsUUFBUSxhQUFNUCxHQUFOLHNCQUFxQkssYUFBYSxDQUFDRyxJQUFuQyxrQkFBZDs7QUFDQSxVQUFJSCxhQUFhLENBQUNTLFNBQWxCLEVBQTZCO0FBQzNCWCxRQUFBQSxPQUFPLEdBQUc7QUFDUlksVUFBQUEsYUFBYSxtQkFBWVYsYUFBYSxDQUFDUyxTQUExQjtBQURMLFNBQVY7QUFHRDs7QUFDRCxhQUFPWixjQUFjLENBQUNELFlBQVksQ0FBQ2UsSUFBZCxFQUFvQlQsUUFBcEIsRUFBOEJLLE1BQTlCLEVBQXNDVCxPQUF0QyxDQUFyQjtBQUNELEtBakIyQztBQWtCNUNjLElBQUFBLGNBQWMsRUFBRSx3QkFBQ0wsTUFBRCxFQUFZO0FBQzFCLFVBQU1MLFFBQVEsYUFBTVAsR0FBTixzQkFBcUJLLGFBQWEsQ0FBQ0csSUFBbkMsMkJBQXdESSxNQUFNLENBQUNKLElBQS9ELENBQWQ7O0FBQ0EsVUFBSUgsYUFBYSxDQUFDUyxTQUFsQixFQUE2QjtBQUMzQlgsUUFBQUEsT0FBTyxHQUFHO0FBQ1JZLFVBQUFBLGFBQWEsbUJBQVlWLGFBQWEsQ0FBQ1MsU0FBMUI7QUFETCxTQUFWO0FBR0QsT0FOeUIsQ0FPMUI7OztBQUNBLGFBQU9GLE1BQU0sQ0FBQ0osSUFBZDtBQUNBLGFBQU9OLGNBQWMsQ0FBQ0QsWUFBWSxDQUFDaUIsS0FBZCxFQUFxQlgsUUFBckIsRUFBK0JLLE1BQS9CLEVBQXVDVCxPQUF2QyxDQUFyQjtBQUNELEtBNUIyQztBQTZCNUNnQixJQUFBQSxnQkFBZ0IsRUFBRSwwQkFBQ1AsTUFBRCxFQUFZO0FBQzVCLFVBQU1MLFFBQVEsYUFBTVAsR0FBTixzQkFBcUJLLGFBQWEsQ0FBQ0csSUFBbkMsMkJBQXdESSxNQUFNLENBQUNKLElBQS9ELENBQWQ7O0FBQ0EsVUFBSUgsYUFBYSxDQUFDUyxTQUFsQixFQUE2QjtBQUMzQlgsUUFBQUEsT0FBTyxHQUFHO0FBQ1JZLFVBQUFBLGFBQWEsbUJBQVlWLGFBQWEsQ0FBQ1MsU0FBMUI7QUFETCxTQUFWO0FBR0Q7O0FBQ0QsYUFBT1osY0FBYyxDQUFDRCxZQUFZLENBQUNtQixNQUFkLEVBQXNCYixRQUF0QixFQUFnQyxJQUFoQyxFQUFzQ0osT0FBdEMsQ0FBckI7QUFDRDtBQXJDMkMsR0FBcEI7QUFBQSxDQUExQjs7QUF3Q0FrQixNQUFNLENBQUNDLE9BQVAsR0FBaUJsQixpQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IFVSSSB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuXG5sZXQgaGVhZGVyc1xuXG5jb25zdCBvYmplY3RUeXBlTWV0aG9kcyA9IChidWNrZXRfY29uZmlnKSA9PiAoe1xuICBnZXRPYmplY3RUeXBlczogKCkgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3QtdHlwZXM/cmVhZF9rZXk9JHtidWNrZXRfY29uZmlnLnJlYWRfa2V5fWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQpXG4gIH0sXG4gIGdldE9iamVjdFR5cGU6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0LXR5cGVzLyR7cGFyYW1zLnNsdWd9P3JlYWRfa2V5PSR7YnVja2V0X2NvbmZpZy5yZWFkX2tleX1gXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBhZGRPYmplY3RUeXBlOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdC10eXBlc2BcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUE9TVCwgZW5kcG9pbnQsIHBhcmFtcywgaGVhZGVycylcbiAgfSxcbiAgZWRpdE9iamVjdFR5cGU6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0LXR5cGVzLyR7cGFyYW1zLnNsdWd9YFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIHNsdWdcbiAgICBkZWxldGUgcGFyYW1zLnNsdWdcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBBVENILCBlbmRwb2ludCwgcGFyYW1zLCBoZWFkZXJzKVxuICB9LFxuICBkZWxldGVPYmplY3RUeXBlOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdC10eXBlcy8ke3BhcmFtcy5zbHVnfWBcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuREVMRVRFLCBlbmRwb2ludCwgbnVsbCwgaGVhZGVycylcbiAgfVxufSlcblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUeXBlTWV0aG9kc1xuIl19 -------------------------------------------------------------------------------- /dist/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | var HTTP_METHODS = require('./helpers/http_methods'); 4 | 5 | var _require = require('./helpers/request_handler'), 6 | requestHandler = _require.requestHandler; 7 | 8 | var _require2 = require('./helpers/constants'), 9 | URI = _require2.URI; 10 | 11 | var mainMethods = { 12 | authenticate: function authenticate(params) { 13 | var endpoint = "".concat(URI, "/authenticate"); 14 | return requestHandler(HTTP_METHODS.POST, endpoint, params); 15 | }, 16 | getUser: function getUser() { 17 | var endpoint = "".concat(URI, "/user"); 18 | return requestHandler(HTTP_METHODS.GET, endpoint); 19 | }, 20 | getProjects: function getProjects() { 21 | var endpoint = "".concat(URI, "/projects"); 22 | return requestHandler(HTTP_METHODS.GET, endpoint); 23 | }, 24 | addProject: function addProject(params) { 25 | var endpoint = "".concat(URI, "/projects"); 26 | return requestHandler(HTTP_METHODS.POST, endpoint, params); 27 | }, 28 | getProject: function getProject(params) { 29 | var endpoint = "".concat(URI, "/projects/").concat(params.id); 30 | return requestHandler(HTTP_METHODS.GET, endpoint); 31 | }, 32 | editProject: function editProject(params) { 33 | var endpoint = "".concat(URI, "/projects/").concat(params.id); 34 | delete params.id; 35 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params); 36 | }, 37 | deleteProject: function deleteProject(params) { 38 | var endpoint = "".concat(URI, "/projects/").concat(params.id); 39 | return requestHandler(HTTP_METHODS.DELETE, endpoint, params); 40 | }, 41 | getBuckets: function getBuckets() { 42 | var endpoint = "".concat(URI, "/buckets"); 43 | return requestHandler(HTTP_METHODS.GET, endpoint); 44 | }, 45 | getBucket: function getBucket(params) { 46 | var endpoint = "".concat(URI, "/buckets/").concat(params.slug); 47 | return requestHandler(HTTP_METHODS.GET, endpoint); 48 | }, 49 | addBucket: function addBucket(params) { 50 | var endpoint = "".concat(URI, "/buckets"); 51 | return requestHandler(HTTP_METHODS.POST, endpoint, params); 52 | }, 53 | editBucket: function editBucket(params) { 54 | var endpoint = "".concat(URI, "/buckets/").concat(params.slug); 55 | delete params.slug; 56 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params); 57 | }, 58 | deleteBucket: function deleteBucket(params) { 59 | var endpoint = "".concat(URI, "/buckets/").concat(params.slug); 60 | return requestHandler(HTTP_METHODS.DELETE, endpoint, params); 61 | } 62 | }; 63 | module.exports = mainMethods; 64 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLmpzIl0sIm5hbWVzIjpbIkhUVFBfTUVUSE9EUyIsInJlcXVpcmUiLCJyZXF1ZXN0SGFuZGxlciIsIlVSSSIsIm1haW5NZXRob2RzIiwiYXV0aGVudGljYXRlIiwicGFyYW1zIiwiZW5kcG9pbnQiLCJQT1NUIiwiZ2V0VXNlciIsIkdFVCIsImdldFByb2plY3RzIiwiYWRkUHJvamVjdCIsImdldFByb2plY3QiLCJpZCIsImVkaXRQcm9qZWN0IiwiUEFUQ0giLCJkZWxldGVQcm9qZWN0IiwiREVMRVRFIiwiZ2V0QnVja2V0cyIsImdldEJ1Y2tldCIsInNsdWciLCJhZGRCdWNrZXQiLCJlZGl0QnVja2V0IiwiZGVsZXRlQnVja2V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFNQSxZQUFZLEdBQUdDLE9BQU8sQ0FBQyx3QkFBRCxDQUE1Qjs7ZUFDMkJBLE9BQU8sQ0FBQywyQkFBRCxDO0lBQTFCQyxjLFlBQUFBLGM7O2dCQUNRRCxPQUFPLENBQUMscUJBQUQsQztJQUFmRSxHLGFBQUFBLEc7O0FBRVIsSUFBTUMsV0FBVyxHQUFHO0FBQ2xCQyxFQUFBQSxZQUFZLEVBQUUsc0JBQUNDLE1BQUQsRUFBWTtBQUN4QixRQUFNQyxRQUFRLGFBQU1KLEdBQU4sa0JBQWQ7QUFDQSxXQUFPRCxjQUFjLENBQUNGLFlBQVksQ0FBQ1EsSUFBZCxFQUFvQkQsUUFBcEIsRUFBOEJELE1BQTlCLENBQXJCO0FBQ0QsR0FKaUI7QUFLbEJHLEVBQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNiLFFBQU1GLFFBQVEsYUFBTUosR0FBTixVQUFkO0FBQ0EsV0FBT0QsY0FBYyxDQUFDRixZQUFZLENBQUNVLEdBQWQsRUFBbUJILFFBQW5CLENBQXJCO0FBQ0QsR0FSaUI7QUFTbEJJLEVBQUFBLFdBQVcsRUFBRSx1QkFBTTtBQUNqQixRQUFNSixRQUFRLGFBQU1KLEdBQU4sY0FBZDtBQUNBLFdBQU9ELGNBQWMsQ0FBQ0YsWUFBWSxDQUFDVSxHQUFkLEVBQW1CSCxRQUFuQixDQUFyQjtBQUNELEdBWmlCO0FBYWxCSyxFQUFBQSxVQUFVLEVBQUUsb0JBQUNOLE1BQUQsRUFBWTtBQUN0QixRQUFNQyxRQUFRLGFBQU1KLEdBQU4sY0FBZDtBQUNBLFdBQU9ELGNBQWMsQ0FBQ0YsWUFBWSxDQUFDUSxJQUFkLEVBQW9CRCxRQUFwQixFQUE4QkQsTUFBOUIsQ0FBckI7QUFDRCxHQWhCaUI7QUFpQmxCTyxFQUFBQSxVQUFVLEVBQUUsb0JBQUNQLE1BQUQsRUFBWTtBQUN0QixRQUFNQyxRQUFRLGFBQU1KLEdBQU4sdUJBQXNCRyxNQUFNLENBQUNRLEVBQTdCLENBQWQ7QUFDQSxXQUFPWixjQUFjLENBQUNGLFlBQVksQ0FBQ1UsR0FBZCxFQUFtQkgsUUFBbkIsQ0FBckI7QUFDRCxHQXBCaUI7QUFxQmxCUSxFQUFBQSxXQUFXLEVBQUUscUJBQUNULE1BQUQsRUFBWTtBQUN2QixRQUFNQyxRQUFRLGFBQU1KLEdBQU4sdUJBQXNCRyxNQUFNLENBQUNRLEVBQTdCLENBQWQ7QUFDQSxXQUFPUixNQUFNLENBQUNRLEVBQWQ7QUFDQSxXQUFPWixjQUFjLENBQUNGLFlBQVksQ0FBQ2dCLEtBQWQsRUFBcUJULFFBQXJCLEVBQStCRCxNQUEvQixDQUFyQjtBQUNELEdBekJpQjtBQTBCbEJXLEVBQUFBLGFBQWEsRUFBRSx1QkFBQ1gsTUFBRCxFQUFZO0FBQ3pCLFFBQU1DLFFBQVEsYUFBTUosR0FBTix1QkFBc0JHLE1BQU0sQ0FBQ1EsRUFBN0IsQ0FBZDtBQUNBLFdBQU9aLGNBQWMsQ0FBQ0YsWUFBWSxDQUFDa0IsTUFBZCxFQUFzQlgsUUFBdEIsRUFBZ0NELE1BQWhDLENBQXJCO0FBQ0QsR0E3QmlCO0FBOEJsQmEsRUFBQUEsVUFBVSxFQUFFLHNCQUFNO0FBQ2hCLFFBQU1aLFFBQVEsYUFBTUosR0FBTixhQUFkO0FBQ0EsV0FBT0QsY0FBYyxDQUFDRixZQUFZLENBQUNVLEdBQWQsRUFBbUJILFFBQW5CLENBQXJCO0FBQ0QsR0FqQ2lCO0FBa0NsQmEsRUFBQUEsU0FBUyxFQUFFLG1CQUFDZCxNQUFELEVBQVk7QUFDckIsUUFBTUMsUUFBUSxhQUFNSixHQUFOLHNCQUFxQkcsTUFBTSxDQUFDZSxJQUE1QixDQUFkO0FBQ0EsV0FBT25CLGNBQWMsQ0FBQ0YsWUFBWSxDQUFDVSxHQUFkLEVBQW1CSCxRQUFuQixDQUFyQjtBQUNELEdBckNpQjtBQXNDbEJlLEVBQUFBLFNBQVMsRUFBRSxtQkFBQ2hCLE1BQUQsRUFBWTtBQUNyQixRQUFNQyxRQUFRLGFBQU1KLEdBQU4sYUFBZDtBQUNBLFdBQU9ELGNBQWMsQ0FBQ0YsWUFBWSxDQUFDUSxJQUFkLEVBQW9CRCxRQUFwQixFQUE4QkQsTUFBOUIsQ0FBckI7QUFDRCxHQXpDaUI7QUEwQ2xCaUIsRUFBQUEsVUFBVSxFQUFFLG9CQUFDakIsTUFBRCxFQUFZO0FBQ3RCLFFBQU1DLFFBQVEsYUFBTUosR0FBTixzQkFBcUJHLE1BQU0sQ0FBQ2UsSUFBNUIsQ0FBZDtBQUNBLFdBQU9mLE1BQU0sQ0FBQ2UsSUFBZDtBQUNBLFdBQU9uQixjQUFjLENBQUNGLFlBQVksQ0FBQ2dCLEtBQWQsRUFBcUJULFFBQXJCLEVBQStCRCxNQUEvQixDQUFyQjtBQUNELEdBOUNpQjtBQStDbEJrQixFQUFBQSxZQUFZLEVBQUUsc0JBQUNsQixNQUFELEVBQVk7QUFDeEIsUUFBTUMsUUFBUSxhQUFNSixHQUFOLHNCQUFxQkcsTUFBTSxDQUFDZSxJQUE1QixDQUFkO0FBQ0EsV0FBT25CLGNBQWMsQ0FBQ0YsWUFBWSxDQUFDa0IsTUFBZCxFQUFzQlgsUUFBdEIsRUFBZ0NELE1BQWhDLENBQXJCO0FBQ0Q7QUFsRGlCLENBQXBCO0FBcURBbUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdEIsV0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBIVFRQX01FVEhPRFMgPSByZXF1aXJlKCcuL2hlbHBlcnMvaHR0cF9tZXRob2RzJylcbmNvbnN0IHsgcmVxdWVzdEhhbmRsZXIgfSA9IHJlcXVpcmUoJy4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuY29uc3QgeyBVUkkgfSA9IHJlcXVpcmUoJy4vaGVscGVycy9jb25zdGFudHMnKVxuXG5jb25zdCBtYWluTWV0aG9kcyA9IHtcbiAgYXV0aGVudGljYXRlOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2F1dGhlbnRpY2F0ZWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMpXG4gIH0sXG4gIGdldFVzZXI6ICgpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vdXNlcmBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQpXG4gIH0sXG4gIGdldFByb2plY3RzOiAoKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L3Byb2plY3RzYFxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludClcbiAgfSxcbiAgYWRkUHJvamVjdDogKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9wcm9qZWN0c2BcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMpXG4gIH0sXG4gIGdldFByb2plY3Q6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vcHJvamVjdHMvJHtwYXJhbXMuaWR9YFxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludClcbiAgfSxcbiAgZWRpdFByb2plY3Q6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vcHJvamVjdHMvJHtwYXJhbXMuaWR9YFxuICAgIGRlbGV0ZSBwYXJhbXMuaWRcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBBVENILCBlbmRwb2ludCwgcGFyYW1zKVxuICB9LFxuICBkZWxldGVQcm9qZWN0OiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L3Byb2plY3RzLyR7cGFyYW1zLmlkfWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkRFTEVURSwgZW5kcG9pbnQsIHBhcmFtcylcbiAgfSxcbiAgZ2V0QnVja2V0czogKCkgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzYFxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludClcbiAgfSxcbiAgZ2V0QnVja2V0OiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtwYXJhbXMuc2x1Z31gXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBhZGRCdWNrZXQ6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0c2BcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMpXG4gIH0sXG4gIGVkaXRCdWNrZXQ6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke3BhcmFtcy5zbHVnfWBcbiAgICBkZWxldGUgcGFyYW1zLnNsdWdcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBBVENILCBlbmRwb2ludCwgcGFyYW1zKVxuICB9LFxuICBkZWxldGVCdWNrZXQ6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke3BhcmFtcy5zbHVnfWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkRFTEVURSwgZW5kcG9pbnQsIHBhcmFtcylcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1haW5NZXRob2RzXG4iXX0= -------------------------------------------------------------------------------- /src/bucket/object.js: -------------------------------------------------------------------------------- 1 | require('regenerator-runtime/runtime') 2 | 3 | const { URI } = require('../helpers/constants') 4 | const HTTP_METHODS = require('../helpers/http_methods') 5 | const { requestHandler } = require('../helpers/request_handler') 6 | const promiser = require('../helpers/promiser') 7 | 8 | let headers 9 | 10 | const addParamsToObjectsEndpoint = (endpoint, params) => { 11 | let ep = endpoint 12 | if (params && params.limit) { 13 | ep += `&limit=${params.limit}` 14 | } 15 | if (params && params.skip) { 16 | ep += `&skip=${params.skip}` 17 | } 18 | if (params && params.status) { 19 | ep += `&status=${params.status}` 20 | } 21 | if (params && params.after) { 22 | ep += `&after=${params.after}` 23 | } 24 | if (params && params.sort) { 25 | ep += `&sort=${params.sort}` 26 | } 27 | if (params && params.show_metafields) { 28 | ep += `&show_metafields=${params.show_metafields}` 29 | } 30 | if (params && params.pretty) { 31 | ep += `&pretty=${params.pretty}` 32 | } 33 | if (params && params.props) { 34 | ep += `&props=${params.props}` 35 | } 36 | if (params && params.query) { 37 | ep += `&query=${encodeURI(JSON.stringify(params.query))}` 38 | } 39 | if (params && typeof params.use_cache !== 'undefined') { 40 | ep += `&use_cache=${params.use_cache}` 41 | } 42 | return ep 43 | } 44 | 45 | class FindChaining { 46 | constructor(endpoint) { 47 | this.endpoint = endpoint 48 | } 49 | 50 | props(props) { 51 | this.endpoint += `&props=${props}` 52 | return this 53 | } 54 | 55 | depth(depth) { 56 | this.endpoint += `&depth=${depth}` 57 | return this 58 | } 59 | 60 | sort(sort) { 61 | this.endpoint += `&sort=${sort}` 62 | return this 63 | } 64 | 65 | limit(limit) { 66 | this.endpoint += `&limit=${limit}` 67 | return this 68 | } 69 | 70 | skip(skip) { 71 | this.endpoint += `&skip=${skip}` 72 | return this 73 | } 74 | 75 | status(status) { 76 | this.endpoint += `&status=${status}` 77 | return this 78 | } 79 | 80 | after(after) { 81 | this.endpoint += `&after=${after}` 82 | return this 83 | } 84 | 85 | showMetafields(show_metafields) { 86 | this.endpoint += `&show_metafields=${show_metafields}` 87 | return this 88 | } 89 | 90 | useCache(use_cache) { 91 | this.endpoint += `&use_cache=${use_cache}` 92 | return this 93 | } 94 | 95 | async then(resolve, reject) { 96 | promiser(this.endpoint).then((res) => resolve(res, null)).catch((err) => { 97 | if (typeof reject === 'function') { 98 | reject(err) 99 | } else { 100 | resolve(null, err) 101 | } 102 | }) 103 | } 104 | } 105 | 106 | const objectsChainMethods = (bucket_config) => ({ 107 | // Get 108 | find(query) { 109 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects?read_key=${bucket_config.read_key}${query ? `&query=${encodeURI(JSON.stringify(query))}` : ''}` 110 | return new FindChaining(endpoint) 111 | }, 112 | // findOne 113 | findOne(query) { 114 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${query.id}?read_key=${bucket_config.read_key}` 115 | return new FindChaining(endpoint) 116 | }, 117 | // Add 118 | async insertOne(params) { 119 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects` 120 | if (bucket_config.write_key) { 121 | headers = { 122 | Authorization: `Bearer ${bucket_config.write_key}` 123 | } 124 | } 125 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers) 126 | }, 127 | // Edit 128 | async updateOne(params, set) { 129 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}` 130 | const updates = set.$set 131 | if (bucket_config.write_key) { 132 | headers = { 133 | Authorization: `Bearer ${bucket_config.write_key}` 134 | } 135 | } 136 | return requestHandler(HTTP_METHODS.PATCH, endpoint, updates, headers) 137 | }, 138 | // Delete 139 | async deleteOne(params) { 140 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}${params.trigger_webhook ? '?trigger_webhook=true' : ''}` 141 | if (bucket_config.write_key) { 142 | headers = { 143 | Authorization: `Bearer ${bucket_config.write_key}` 144 | } 145 | } 146 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers) 147 | } 148 | }) 149 | 150 | const objectMethods = (bucket_config) => ({ 151 | objects: objectsChainMethods(bucket_config), 152 | getObjects: (params) => { 153 | let endpoint = `${URI}/buckets/${bucket_config.slug}/objects?read_key=${bucket_config.read_key}` 154 | endpoint = addParamsToObjectsEndpoint(endpoint, params) 155 | return requestHandler(HTTP_METHODS.GET, endpoint) 156 | }, 157 | getObject: (params) => { 158 | if (!params) { 159 | throw new Error('Must supply params object with object id') 160 | } 161 | let endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}?read_key=${bucket_config.read_key}` 162 | if (params && params.status) { 163 | endpoint += `&status=${params.status}` 164 | } 165 | if (params && params.props) { 166 | endpoint += `&props=${params.props}` 167 | } 168 | if (params && typeof params.use_cache !== 'undefined') { 169 | endpoint += `&use_cache=${params.use_cache}` 170 | } 171 | return requestHandler(HTTP_METHODS.GET, endpoint) 172 | }, 173 | getObjectRevisions: (params) => { 174 | let endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}/revisions?read_key=${bucket_config.read_key}` 175 | endpoint = addParamsToObjectsEndpoint(endpoint, params) 176 | return requestHandler(HTTP_METHODS.GET, endpoint) 177 | }, 178 | getMergeRequestObjects: (params) => { 179 | let endpoint = `${URI}/buckets/${bucket_config.slug}/merge-requests/${params.id}/objects?read_key=${bucket_config.read_key}` 180 | endpoint = addParamsToObjectsEndpoint(endpoint, params) 181 | return requestHandler(HTTP_METHODS.GET, endpoint) 182 | }, 183 | addObject: (params) => { 184 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects` 185 | if (bucket_config.write_key) { 186 | headers = { 187 | Authorization: `Bearer ${bucket_config.write_key}` 188 | } 189 | } 190 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers) 191 | }, 192 | addObjectRevision: (params) => { 193 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}/revisions` 194 | delete params.id 195 | delete params.type 196 | if (bucket_config.write_key) { 197 | headers = { 198 | Authorization: `Bearer ${bucket_config.write_key}` 199 | } 200 | } 201 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers) 202 | }, 203 | editObject: (params) => { 204 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}` 205 | if (bucket_config.write_key) { 206 | headers = { 207 | Authorization: `Bearer ${bucket_config.write_key}` 208 | } 209 | } 210 | // Remove id 211 | delete params.id 212 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers) 213 | }, 214 | getObjectMetafields: (params) => { 215 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}/metafields?read_key=${bucket_config.read_key}` 216 | return requestHandler(HTTP_METHODS.GET, endpoint) 217 | }, 218 | /// DEPRECATED 219 | editObjectMetafields: (params) => { 220 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}/metafields` 221 | if (bucket_config.write_key) { 222 | headers = { 223 | Authorization: `Bearer ${bucket_config.write_key}` 224 | } 225 | } 226 | // Remove id 227 | delete params.id 228 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers) 229 | }, 230 | editObjectMetafield: (params) => { 231 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}/metafields/${params.key}` 232 | if (bucket_config.write_key) { 233 | headers = { 234 | Authorization: `Bearer ${bucket_config.write_key}` 235 | } 236 | } 237 | // Remove id 238 | delete params.id 239 | delete params.key 240 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers) 241 | }, 242 | deleteObject: (params) => { 243 | const endpoint = `${URI}/buckets/${bucket_config.slug}/objects/${params.id}` 244 | if (bucket_config.write_key) { 245 | headers = { 246 | Authorization: `Bearer ${bucket_config.write_key}` 247 | } 248 | } 249 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers) 250 | } 251 | }) 252 | 253 | module.exports = objectMethods 254 | -------------------------------------------------------------------------------- /dist/bucket/extension.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 4 | 5 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 6 | 7 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 8 | 9 | var FormData = require('form-data'); 10 | 11 | var _require = require('../helpers/constants'), 12 | URI = _require.URI; 13 | 14 | var HTTP_METHODS = require('../helpers/http_methods'); 15 | 16 | var _require2 = require('../helpers/request_handler'), 17 | requestHandler = _require2.requestHandler; 18 | 19 | var extensionMethods = function extensionMethods(bucket_config) { 20 | return { 21 | getExtensions: function getExtensions() { 22 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/extensions"); 23 | return requestHandler(HTTP_METHODS.GET, endpoint); 24 | }, 25 | addExtension: function addExtension(params) { 26 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/extensions"); 27 | var data; 28 | 29 | if (params.zip) { 30 | data = new FormData(); 31 | 32 | if (params.zip.buffer) { 33 | data.append('zip', params.zip.buffer, params.zip.originalname); 34 | } else { 35 | data.append('zip', params.zip, params.zip.name); 36 | } 37 | 38 | if (bucket_config.write_key) { 39 | data.append('write_key', bucket_config.write_key); 40 | } 41 | } else { 42 | data = params; 43 | 44 | if (bucket_config.write_key) { 45 | data.write_key = bucket_config.write_key; 46 | } 47 | } 48 | 49 | var getHeaders = function getHeaders(form) { 50 | return new Promise(function (resolve, reject) { 51 | if (params.zip) { 52 | if (params.zip.buffer) { 53 | form.getLength(function (err, length) { 54 | if (err) reject(err); 55 | 56 | var headers = _objectSpread({ 57 | 'Content-Length': length 58 | }, form.getHeaders()); 59 | 60 | resolve(headers); 61 | }); 62 | } else { 63 | resolve({ 64 | 'Content-Type': 'multipart/form-data' 65 | }); 66 | } 67 | } else { 68 | resolve({ 69 | 'Content-Type': 'application/json' 70 | }); 71 | } 72 | }); 73 | }; 74 | 75 | return getHeaders(data).then(function (headers) { 76 | return requestHandler(HTTP_METHODS.POST, endpoint, data, headers)["catch"](function (error) { 77 | throw error.response.data; 78 | }); 79 | }); 80 | }, 81 | editExtension: function editExtension(params) { 82 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/extensions/").concat(params.id); 83 | 84 | if (bucket_config.write_key) { 85 | params.write_key = bucket_config.write_key; 86 | } 87 | 88 | return requestHandler(HTTP_METHODS.PUT, endpoint, params); 89 | }, 90 | deleteExtension: function deleteExtension(params) { 91 | var endpoint = "".concat(URI, "/").concat(bucket_config.slug, "/extensions/").concat(params.id); 92 | return requestHandler(HTTP_METHODS.DELETE, endpoint, bucket_config); 93 | } 94 | }; 95 | }; 96 | 97 | module.exports = extensionMethods; 98 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvZXh0ZW5zaW9uLmpzIl0sIm5hbWVzIjpbIkZvcm1EYXRhIiwicmVxdWlyZSIsIlVSSSIsIkhUVFBfTUVUSE9EUyIsInJlcXVlc3RIYW5kbGVyIiwiZXh0ZW5zaW9uTWV0aG9kcyIsImJ1Y2tldF9jb25maWciLCJnZXRFeHRlbnNpb25zIiwiZW5kcG9pbnQiLCJzbHVnIiwiR0VUIiwiYWRkRXh0ZW5zaW9uIiwicGFyYW1zIiwiZGF0YSIsInppcCIsImJ1ZmZlciIsImFwcGVuZCIsIm9yaWdpbmFsbmFtZSIsIm5hbWUiLCJ3cml0ZV9rZXkiLCJnZXRIZWFkZXJzIiwiZm9ybSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZ2V0TGVuZ3RoIiwiZXJyIiwibGVuZ3RoIiwiaGVhZGVycyIsInRoZW4iLCJQT1NUIiwiZXJyb3IiLCJyZXNwb25zZSIsImVkaXRFeHRlbnNpb24iLCJpZCIsIlBVVCIsImRlbGV0ZUV4dGVuc2lvbiIsIkRFTEVURSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsSUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsV0FBRCxDQUF4Qjs7ZUFDZ0JBLE9BQU8sQ0FBQyxzQkFBRCxDO0lBQWZDLEcsWUFBQUEsRzs7QUFDUixJQUFNQyxZQUFZLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7Z0JBQzJCQSxPQUFPLENBQUMsNEJBQUQsQztJQUExQkcsYyxhQUFBQSxjOztBQUVSLElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBbUIsQ0FBQ0MsYUFBRDtBQUFBLFNBQW9CO0FBQzNDQyxJQUFBQSxhQUFhLEVBQUUseUJBQU07QUFDbkIsVUFBTUMsUUFBUSxhQUFNTixHQUFOLGNBQWFJLGFBQWEsQ0FBQ0csSUFBM0IsZ0JBQWQ7QUFDQSxhQUFPTCxjQUFjLENBQUNELFlBQVksQ0FBQ08sR0FBZCxFQUFtQkYsUUFBbkIsQ0FBckI7QUFDRCxLQUowQztBQUszQ0csSUFB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ckI7QUFDRCxLQXBEMEM7QUFxRDNDd0IsSUFBQUEsZUFBZSxFQUFFLHlCQUFDeEIsTUFBRCxFQUFZO0FBQzNCLFVBQU1KLFFBQVEsYUFBTU4sR0FBTixjQUFhSSxhQUFhLENBQUNHLElBQTNCLHlCQUE4Q0csTUFBTSxDQUFDc0IsRUFBckQsQ0FBZDtBQUNBLGFBQU85QixjQUFjLENBQUNELFlBQVksQ0FBQ2tDLE1BQWQsRUFBc0I3QixRQUF0QixFQUFnQ0YsYUFBaEMsQ0FBckI7QUFDRDtBQXhEMEMsR0FBcEI7QUFBQSxDQUF6Qjs7QUEyREFnQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJsQyxnQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBGb3JtRGF0YSA9IHJlcXVpcmUoJ2Zvcm0tZGF0YScpXG5jb25zdCB7IFVSSSB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuXG5jb25zdCBleHRlbnNpb25NZXRob2RzID0gKGJ1Y2tldF9jb25maWcpID0+ICh7XG4gIGdldEV4dGVuc2lvbnM6ICgpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vJHtidWNrZXRfY29uZmlnLnNsdWd9L2V4dGVuc2lvbnNgXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBhZGRFeHRlbnNpb246IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vJHtidWNrZXRfY29uZmlnLnNsdWd9L2V4dGVuc2lvbnNgXG4gICAgbGV0IGRhdGFcbiAgICBpZiAocGFyYW1zLnppcCkge1xuICAgICAgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgICBpZiAocGFyYW1zLnppcC5idWZmZXIpIHtcbiAgICAgICAgZGF0YS5hcHBlbmQoJ3ppcCcsIHBhcmFtcy56aXAuYnVmZmVyLCBwYXJhbXMuemlwLm9yaWdpbmFsbmFtZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGEuYXBwZW5kKCd6aXAnLCBwYXJhbXMuemlwLCBwYXJhbXMuemlwLm5hbWUpXG4gICAgICB9XG4gICAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgICAgZGF0YS5hcHBlbmQoJ3dyaXRlX2tleScsIGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRhID0gcGFyYW1zXG4gICAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgICAgZGF0YS53cml0ZV9rZXkgPSBidWNrZXRfY29uZmlnLndyaXRlX2tleVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBnZXRIZWFkZXJzID0gKChmb3JtKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLnppcCkge1xuICAgICAgICBpZiAocGFyYW1zLnppcC5idWZmZXIpIHtcbiAgICAgICAgICBmb3JtLmdldExlbmd0aCgoZXJyLCBsZW5ndGgpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJlamVjdChlcnIpXG4gICAgICAgICAgICBjb25zdCBoZWFkZXJzID0geyAnQ29udGVudC1MZW5ndGgnOiBsZW5ndGgsIC4uLmZvcm0uZ2V0SGVhZGVycygpIH1cbiAgICAgICAgICAgIHJlc29sdmUoaGVhZGVycylcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoeyAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnIH0pXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0pXG4gICAgICB9XG4gICAgfSlcbiAgICApXG4gICAgcmV0dXJuIGdldEhlYWRlcnMoZGF0YSlcbiAgICAgIC50aGVuKChoZWFkZXJzKSA9PiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUE9TVCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvci5yZXNwb25zZS5kYXRhXG4gICAgICAgIH0pKVxuICB9LFxuICBlZGl0RXh0ZW5zaW9uOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9LyR7YnVja2V0X2NvbmZpZy5zbHVnfS9leHRlbnNpb25zLyR7cGFyYW1zLmlkfWBcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIHBhcmFtcy53cml0ZV9rZXkgPSBidWNrZXRfY29uZmlnLndyaXRlX2tleVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBVVCwgZW5kcG9pbnQsIHBhcmFtcylcbiAgfSxcbiAgZGVsZXRlRXh0ZW5zaW9uOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9LyR7YnVja2V0X2NvbmZpZy5zbHVnfS9leHRlbnNpb25zLyR7cGFyYW1zLmlkfWBcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkRFTEVURSwgZW5kcG9pbnQsIGJ1Y2tldF9jb25maWcpXG4gIH1cbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gZXh0ZW5zaW9uTWV0aG9kc1xuIl19 -------------------------------------------------------------------------------- /test/unit_tests/t_bucket_methods.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs') 2 | const expect = require('chai').expect 3 | const Cosmic = require('../../src/index') 4 | const { EMAIL, PASSWORD } = require('../constants') 5 | 6 | let config = {}; 7 | let CosmicBucket = {}; 8 | suite('Test Bucket Methods.', function() { 9 | this.timeout(10000); 10 | setup(function(done) { 11 | Cosmic().authenticate({ 12 | email: EMAIL, 13 | password: PASSWORD 14 | }).then(data => { 15 | config.token = data.token; 16 | done() 17 | }).catch(err => { 18 | console.log(err) 19 | done(err) 20 | }) 21 | }) 22 | test('getBuckets', function(done) { 23 | Cosmic({ token: config.token }).getBuckets() 24 | .then(data => { 25 | expect(data.buckets).to.be.an('array') 26 | done() 27 | }).catch(err => { 28 | done(err) 29 | }) 30 | }) 31 | 32 | test('addBucket', function(done) { 33 | Cosmic({ token: config.token }).addBucket({ 34 | title: "My Super Awesome Bucket" 35 | }) 36 | .then(data => { 37 | expect(data.bucket).to.be.an('object') 38 | // Set Bucket 39 | config.bucket = data.bucket 40 | done() 41 | }).catch(err => { 42 | done(err) 43 | }) 44 | }) 45 | 46 | test('editBucket', function(done) { 47 | Cosmic({ token: config.token }).editBucket({ 48 | slug: config.bucket.slug, 49 | title: "My Super Awesome Bucket EDIT" 50 | }) 51 | .then(data => { 52 | expect(data.bucket).to.be.an('object') 53 | done() 54 | }).catch(err => { 55 | done(err) 56 | }) 57 | }) 58 | 59 | test('addObjectType', function(done) { 60 | CosmicBucket = Cosmic().bucket({ 61 | slug: config.bucket.slug, 62 | read_key: config.bucket.api_access.read_key, 63 | write_key: config.bucket.api_access.write_key 64 | }) 65 | CosmicBucket.addObjectType({ 66 | title: 'Posts', 67 | metafields: [{ 68 | type: 'text', 69 | title: 'Headline', 70 | key: 'headline', 71 | value: '' 72 | }] 73 | }) 74 | .then(data => { 75 | expect(data.object_type).to.be.an('object') 76 | config.object_type = data.object_type 77 | done() 78 | }).catch(err => { 79 | done(err) 80 | }) 81 | }) 82 | 83 | test('editObjectType', function(done) { 84 | CosmicBucket.editObjectType({ 85 | slug: config.object_type.slug, 86 | title: 'Posts EDITED', 87 | metafields: [{ 88 | type: 'text', 89 | title: 'Headline EDITED', 90 | key: 'headline', 91 | value: '' 92 | }] 93 | }) 94 | .then(data => { 95 | expect(data.object_type).to.be.an('object') 96 | done() 97 | }).catch(err => { 98 | done(err) 99 | }) 100 | }) 101 | }) 102 | 103 | suite('Test Object Methods.', function() { 104 | test('addObject', function(done) { 105 | CosmicBucket.addObject({ 106 | type: config.object_type.slug, 107 | title: 'My New Awesome Post', 108 | metafields: [{ 109 | type: 'text', 110 | title: 'Headline', 111 | key: 'headline', 112 | value: 'This is AMAZING!' 113 | }] 114 | }) 115 | .then(data => { 116 | config.object = data.object 117 | expect(data.object).to.be.an('object') 118 | done() 119 | }).catch(err => { 120 | done(err) 121 | }) 122 | }) 123 | 124 | test('objects.insertOne', function(done) { 125 | CosmicBucket.objects.insertOne({ 126 | type: config.object_type.slug, 127 | title: 'My New Awesome Post', 128 | metafields: [{ 129 | type: 'text', 130 | title: 'Headline', 131 | key: 'headline', 132 | value: 'This is AMAZING!' 133 | }] 134 | }) 135 | .then(data => { 136 | config.object2 = data.object 137 | expect(data.object).to.be.an('object') 138 | done() 139 | }).catch(err => { 140 | done(err) 141 | }) 142 | }) 143 | 144 | test('getObject', function(done) { 145 | CosmicBucket.getObject({ 146 | id: config.object.id, 147 | props: 'title,slug' 148 | }) 149 | .then(data => { 150 | expect(data.object).to.be.an('object') 151 | done() 152 | }).catch(err => { 153 | done(err) 154 | }) 155 | }) 156 | 157 | test('getObjects', function(done) { 158 | CosmicBucket.getObjects({ 159 | type: config.object.type, 160 | props: 'title,slug' 161 | }) 162 | .then(data => { 163 | expect(data.objects).to.be.an('array') 164 | done() 165 | }).catch(err => { 166 | done(err) 167 | }) 168 | }) 169 | 170 | test('objects.find', function(done) { 171 | CosmicBucket.objects.find({ 172 | type: config.object2.type 173 | }) 174 | .props('title,slug') 175 | .then(data => { 176 | expect(data.objects).to.be.an('array') 177 | done() 178 | }).catch(err => { 179 | done(err) 180 | }) 181 | }) 182 | 183 | test('objects.findOne', function(done) { 184 | CosmicBucket.objects.findOne({ 185 | id: config.object2.id 186 | }) 187 | .props('title,slug') 188 | .then(data => { 189 | expect(data.object).to.be.an('object') 190 | done() 191 | }).catch(err => { 192 | done(err) 193 | }) 194 | }) 195 | 196 | test('addObjectRevision', function(done) { 197 | CosmicBucket.addObjectRevision({ 198 | id: config.object.id, 199 | type: config.object_type.slug, 200 | title: 'My New Awesome Post REVISION', 201 | metafields: [{ 202 | type: 'text', 203 | title: 'Headline', 204 | key: 'headline', 205 | value: 'This is AMAZING!' 206 | }] 207 | }) 208 | .then(data => { 209 | expect(data.revision).to.be.an('object') 210 | done() 211 | }).catch(err => { 212 | done(err) 213 | }) 214 | }) 215 | // NEEDS FURTHER DEVELOPMENT (addMergeRequest, etc) 216 | // test('getMergeRequestObjects', function(done) { 217 | // MergeCosmicBucket.getMergeRequestObjects({ 218 | // id: 'merge-request-id', 219 | // props: 'title' 220 | // }) 221 | // .then(data => { 222 | // expect(data.objects).to.be.an('array') 223 | // done() 224 | // }).catch(err => { 225 | // done(err) 226 | // }) 227 | // }) 228 | 229 | test('getObjectMetafields', function(done) { 230 | CosmicBucket.getObjectMetafields({ 231 | id: config.object.id 232 | }) 233 | .then(data => { 234 | expect(data.metafields).to.be.an('array') 235 | done() 236 | }).catch(err => { 237 | done(err) 238 | }) 239 | }) 240 | 241 | test('editObjectMetafield', function(done) { 242 | CosmicBucket.editObjectMetafield({ 243 | id: config.object.id, 244 | key: 'headline', 245 | value: 'New Metafield Value' 246 | }) 247 | .then(data => { 248 | expect(data.metafield).to.be.an('object') 249 | done() 250 | }).catch(err => { 251 | done(err) 252 | }) 253 | }) 254 | 255 | test('editObject', function(done) { 256 | CosmicBucket.editObject({ 257 | id: config.object.id, 258 | title: 'EDITED My New Awesome Post' 259 | }) 260 | .then(data => { 261 | expect(data.object).to.be.an('object') 262 | done() 263 | }).catch(err => { 264 | done(err) 265 | }) 266 | }) 267 | 268 | test('objects.updateOne', function(done) { 269 | CosmicBucket.objects.updateOne({ 270 | id: config.object2.id 271 | }, { 272 | $set: { 273 | title: 'UPDATE ONE My New Awesome Post' 274 | } 275 | }) 276 | .then(data => { 277 | expect(data.object).to.be.an('object') 278 | done() 279 | }).catch(err => { 280 | done(err) 281 | }) 282 | }) 283 | 284 | test('deleteObject', function(done) { 285 | CosmicBucket.deleteObject({ 286 | id: config.object.id 287 | }) 288 | .then(data => { 289 | expect(data.message).to.be.a('string') 290 | done() 291 | }).catch(err => { 292 | done(err) 293 | }) 294 | }) 295 | 296 | test('objects.deleteOne', function(done) { 297 | CosmicBucket.objects.deleteOne({ 298 | id: config.object2.id 299 | }) 300 | .then(data => { 301 | expect(data.message).to.be.a('string') 302 | done() 303 | }).catch(err => { 304 | done(err) 305 | }) 306 | }) 307 | 308 | test('deleteObjectType', function(done) { 309 | CosmicBucket.deleteObjectType({ 310 | slug: config.object_type.slug 311 | }) 312 | .then(data => { 313 | expect(data.message).to.be.a('string') 314 | done() 315 | }).catch(err => { 316 | done(err) 317 | }) 318 | }) 319 | }) 320 | 321 | suite('Test Media Methods.', function() { 322 | test('addMedia', function(done) { 323 | const media_object = { 324 | originalname: 'logo.jpg', 325 | buffer: fs.createReadStream('./test/logo.jpg') 326 | }; 327 | CosmicBucket.addMedia({ 328 | media: media_object 329 | }) 330 | .then(data => { 331 | config.media = data.media 332 | expect(data.media).to.be.an('object') 333 | done() 334 | }).catch(err => { 335 | done(err) 336 | }) 337 | }) 338 | 339 | test('media.insertOne', function(done) { 340 | const media_object = { 341 | originalname: 'logo.jpg', 342 | buffer: fs.createReadStream('./test/logo.jpg') 343 | }; 344 | CosmicBucket.media.insertOne({ 345 | media: media_object 346 | }) 347 | .then(data => { 348 | config.media2 = data.media 349 | expect(data.media).to.be.an('object') 350 | done() 351 | }).catch(err => { 352 | done(err) 353 | }) 354 | }) 355 | 356 | test('getMedia', function(done) { 357 | CosmicBucket.getMedia({ 358 | limit: 2 359 | }) 360 | .then(data => { 361 | expect(data.media).to.be.an('array') 362 | done() 363 | }).catch(err => { 364 | done(err) 365 | }) 366 | }) 367 | 368 | test('media.find', function(done) { 369 | CosmicBucket.media.find() 370 | .limit(2) 371 | .then(data => { 372 | expect(data.media).to.be.an('array') 373 | done() 374 | }).catch(err => { 375 | done(err) 376 | }) 377 | }) 378 | 379 | test('media.findOne', function(done) { 380 | CosmicBucket.media.findOne({ 381 | id: config.media2.id 382 | }) 383 | .limit(2) 384 | .then(data => { 385 | expect(data.media).to.be.an('object') 386 | done() 387 | }).catch(err => { 388 | done(err) 389 | }) 390 | }) 391 | 392 | test('deleteMedia', function(done) { 393 | CosmicBucket.deleteMedia({ 394 | id: config.media.id 395 | }) 396 | .then(data => { 397 | expect(data.message).to.be.a('string') 398 | done() 399 | }).catch(err => { 400 | console.log(err) 401 | done(err) 402 | }) 403 | }) 404 | 405 | test('media.deleteOne', function(done) { 406 | CosmicBucket.media.deleteOne({ 407 | id: config.media2.id 408 | }) 409 | .then(data => { 410 | expect(data.message).to.be.a('string') 411 | done() 412 | }).catch(err => { 413 | console.log(err) 414 | done(err) 415 | }) 416 | }) 417 | }) 418 | 419 | suite('Delete Bucket.', function() { 420 | test('deleteBucket', function(done) { 421 | Cosmic({ token: config.token }).deleteBucket({ 422 | slug: config.bucket.slug 423 | }) 424 | .then(data => { 425 | expect(data.message).to.be.a('string') 426 | done() 427 | }).catch(err => { 428 | done(err) 429 | }) 430 | }) 431 | }) -------------------------------------------------------------------------------- /dist/bucket/media.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 4 | 5 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 6 | 7 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 8 | 9 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } 10 | 11 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } 12 | 13 | require('regenerator-runtime/runtime'); 14 | 15 | var FormData = require('form-data'); 16 | 17 | var _require = require('../helpers/constants'), 18 | URI = _require.URI, 19 | UPLOAD_API_URL = _require.UPLOAD_API_URL, 20 | API_VERSION = _require.API_VERSION; 21 | 22 | var HTTP_METHODS = require('../helpers/http_methods'); 23 | 24 | var _require2 = require('../helpers/request_handler'), 25 | requestHandler = _require2.requestHandler; 26 | 27 | var promiser = require('../helpers/promiser'); 28 | 29 | var mediaChainMethods = function mediaChainMethods(bucket_config) { 30 | return { 31 | // Get 32 | find: function find(query) { 33 | this.endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media?read_key=").concat(bucket_config.read_key).concat(query ? "&query=".concat(encodeURI(JSON.stringify(query))) : ''); 34 | return this; 35 | }, 36 | // findOne 37 | findOne: function findOne(query) { 38 | this.endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media/").concat(query.id, "?read_key=").concat(bucket_config.read_key); 39 | return this; 40 | }, 41 | props: function props(_props) { 42 | this.endpoint += "&props=".concat(_props); 43 | return this; 44 | }, 45 | sort: function sort(_sort) { 46 | this.endpoint += "&sort=".concat(_sort); 47 | return this; 48 | }, 49 | limit: function limit(_limit) { 50 | this.endpoint += "&limit=".concat(_limit); 51 | return this; 52 | }, 53 | skip: function skip(_skip) { 54 | this.endpoint += "&skip=".concat(_skip); 55 | return this; 56 | }, 57 | // insertOne 58 | insertOne: function insertOne(params) { 59 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { 60 | var endpoint, data, getHeaders; 61 | return regeneratorRuntime.wrap(function _callee$(_context) { 62 | while (1) { 63 | switch (_context.prev = _context.next) { 64 | case 0: 65 | endpoint = "".concat(UPLOAD_API_URL, "/").concat(API_VERSION, "/buckets/").concat(bucket_config.slug, "/media"); 66 | data = new FormData(); 67 | 68 | if (params.media.buffer) { 69 | data.append('media', params.media.buffer, params.media.originalname); 70 | } else { 71 | data.append('media', params.media, params.media.name); 72 | } 73 | 74 | if (bucket_config.write_key) { 75 | data.append('write_key', bucket_config.write_key); 76 | } 77 | 78 | if (params.folder) { 79 | data.append('folder', params.folder); 80 | } 81 | 82 | if (params.metadata) { 83 | data.append('metadata', JSON.stringify(params.metadata)); 84 | } 85 | 86 | if (params.trigger_webhook) { 87 | data.append('trigger_webhook', params.trigger_webhook.toString()); 88 | } 89 | 90 | getHeaders = function getHeaders(form) { 91 | return new Promise(function (resolve, reject) { 92 | if (params.media.buffer) { 93 | form.getLength(function (err, length) { 94 | if (err) reject(err); 95 | 96 | var headers = _objectSpread({ 97 | 'Content-Length': length 98 | }, form.getHeaders()); 99 | 100 | resolve(headers); 101 | }); 102 | } else { 103 | resolve({ 104 | 'Content-Type': 'multipart/form-data' 105 | }); 106 | } 107 | }); 108 | }; 109 | 110 | return _context.abrupt("return", getHeaders(data).then(function (headers) { 111 | headers.Authorization = "Bearer ".concat(bucket_config.write_key); 112 | return requestHandler(HTTP_METHODS.POST, endpoint, data, headers); 113 | })["catch"](function (error) { 114 | throw error.response.data; 115 | })); 116 | 117 | case 9: 118 | case "end": 119 | return _context.stop(); 120 | } 121 | } 122 | }, _callee); 123 | }))(); 124 | }, 125 | // Delete 126 | deleteOne: function deleteOne(params) { 127 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { 128 | var endpoint, headers; 129 | return regeneratorRuntime.wrap(function _callee2$(_context2) { 130 | while (1) { 131 | switch (_context2.prev = _context2.next) { 132 | case 0: 133 | endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media/").concat(params.id).concat(params.trigger_webhook ? '?trigger_webhook=true' : ''); 134 | 135 | if (bucket_config.write_key) { 136 | headers = { 137 | Authorization: "Bearer ".concat(bucket_config.write_key) 138 | }; 139 | } 140 | 141 | return _context2.abrupt("return", requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers)); 142 | 143 | case 3: 144 | case "end": 145 | return _context2.stop(); 146 | } 147 | } 148 | }, _callee2); 149 | }))(); 150 | }, 151 | then: function then(resolve, reject) { 152 | var _this = this; 153 | 154 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { 155 | return regeneratorRuntime.wrap(function _callee3$(_context3) { 156 | while (1) { 157 | switch (_context3.prev = _context3.next) { 158 | case 0: 159 | promiser(_this.endpoint).then(function (res) { 160 | return resolve(res, null); 161 | })["catch"](function (err) { 162 | if (typeof reject === 'function') { 163 | reject(err); 164 | } else { 165 | resolve(null, err); 166 | } 167 | }); 168 | 169 | case 1: 170 | case "end": 171 | return _context3.stop(); 172 | } 173 | } 174 | }, _callee3); 175 | }))(); 176 | } 177 | }; 178 | }; 179 | 180 | var mediaMethods = function mediaMethods(bucket_config) { 181 | return { 182 | media: mediaChainMethods(bucket_config), 183 | addMedia: function addMedia(params) { 184 | var endpoint = "".concat(UPLOAD_API_URL, "/").concat(API_VERSION, "/buckets/").concat(bucket_config.slug, "/media"); 185 | var data = new FormData(); 186 | 187 | if (params.media.buffer) { 188 | data.append('media', params.media.buffer, params.media.originalname); 189 | } else { 190 | data.append('media', params.media, params.media.name); 191 | } 192 | 193 | if (bucket_config.write_key) { 194 | data.append('write_key', bucket_config.write_key); 195 | } 196 | 197 | if (params.folder) { 198 | data.append('folder', params.folder); 199 | } 200 | 201 | if (params.metadata) { 202 | data.append('metadata', JSON.stringify(params.metadata)); 203 | } 204 | 205 | if (params.trigger_webhook) { 206 | data.append('trigger_webhook', params.trigger_webhook.toString()); 207 | } 208 | 209 | var getHeaders = function getHeaders(form) { 210 | return new Promise(function (resolve, reject) { 211 | if (params.media.buffer) { 212 | form.getLength(function (err, length) { 213 | if (err) reject(err); 214 | 215 | var headers = _objectSpread({ 216 | 'Content-Length': length 217 | }, form.getHeaders()); 218 | 219 | resolve(headers); 220 | }); 221 | } else { 222 | resolve({ 223 | 'Content-Type': 'multipart/form-data' 224 | }); 225 | } 226 | }); 227 | }; 228 | 229 | return getHeaders(data).then(function (headers) { 230 | headers.Authorization = "Bearer ".concat(bucket_config.write_key); 231 | return requestHandler(HTTP_METHODS.POST, endpoint, data, headers); 232 | })["catch"](function (error) { 233 | throw error.response.data; 234 | }); 235 | }, 236 | getMedia: function getMedia(params) { 237 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media?read_key=").concat(bucket_config.read_key); 238 | 239 | if (params && params.limit) { 240 | endpoint += "&limit=".concat(params.limit); 241 | } 242 | 243 | if (params && params.skip) { 244 | endpoint += "&skip=".concat(params.skip); 245 | } 246 | 247 | if (params && params.query) { 248 | endpoint += "&query=".concat(encodeURI(JSON.stringify(params.query))); 249 | } 250 | 251 | if (params && params.props) { 252 | endpoint += "&props=".concat(params.props); 253 | } 254 | 255 | return requestHandler(HTTP_METHODS.GET, endpoint); 256 | }, 257 | getSingleMedia: function getSingleMedia(params) { 258 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media/").concat(params.id, "?read_key=").concat(bucket_config.read_key); 259 | 260 | if (params && params.props) { 261 | endpoint += "&props=".concat(params.props); 262 | } 263 | 264 | return requestHandler(HTTP_METHODS.GET, endpoint); 265 | }, 266 | deleteMedia: function deleteMedia(params) { 267 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/media/").concat(params.id).concat(params.trigger_webhook ? '?trigger_webhook=true' : ''); 268 | var headers; 269 | 270 | if (bucket_config.write_key) { 271 | headers = { 272 | Authorization: "Bearer ".concat(bucket_config.write_key) 273 | }; 274 | } 275 | 276 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers); 277 | } 278 | }; 279 | }; 280 | 281 | module.exports = mediaMethods; 282 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvbWVkaWEuanMiXSwibmFtZXMiOlsicmVxdWlyZSIsIkZvcm1EYXRhIiwiVVJJIiwiVVBMT0FEX0FQSV9VUkwiLCJBUElfVkVSU0lPTiIsIkhUVFBfTUVUSE9EUyIsInJlcXVlc3RIYW5kbGVyIiwicHJvbWlzZXIiLCJtZWRpYUNoYWluTWV0aG9kcyIsImJ1Y2tldF9jb25maWciLCJmaW5kIiwicXVlcnkiLCJlbmRwb2ludCIsInNsdWciLCJyZWFkX2tleSIsImVuY29kZVVSSSIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaW5kT25lIiwiaWQiLCJwcm9wcyIsInNvcnQiLCJsaW1pdCIsInNraXAiLCJpbnNlcnRPbmUiLCJwYXJhbXMiLCJkYXRhIiwibWVkaWEiLCJidWZmZXIiLCJhcHBlbmQiLCJvcmlnaW5hbG5hbWUiLCJuYW1lIiwid3JpdGVfa2V5IiwiZm9sZGVyIiwibWV0YWRhdGEiLCJ0cmlnZ2VyX3dlYmhvb2siLCJ0b1N0cmluZyIsImdldEhlYWRlcnMiLCJmb3JtIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJnZXRMZW5ndGgiLCJlcnIiLCJsZW5ndGgiLCJoZWFkZXJzIiwidGhlbiIsIkF1dGhvcml6YXRpb24iLCJQT1NUIiwiZXJyb3IiLCJyZXNwb25zZSIsImRlbGV0ZU9uZSIsIkRFTEVURSIsInJlcyIsIm1lZGlhTWV0aG9kcyIsImFkZE1lZGlhIiwiZ2V0TWVkaWEiLCJHRVQiLCJnZXRTaW5nbGVNZWRpYSIsImRlbGV0ZU1lZGlhIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUFBLE9BQU8sQ0FBQyw2QkFBRCxDQUFQOztBQUVBLElBQU1DLFFBQVEsR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBeEI7O2VBQzZDQSxPQUFPLENBQUMsc0JBQUQsQztJQUE1Q0UsRyxZQUFBQSxHO0lBQUtDLGMsWUFBQUEsYztJQUFnQkMsVyxZQUFBQSxXOztBQUM3QixJQUFNQyxZQUFZ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LENBQUNMLEtBQXJCLENBQVI7QUFDRDs7QUFDRCxhQUFPZCxjQUFjLENBQUNELFlBQVksQ0FBQ29ELEdBQWQsRUFBbUI3QyxRQUFuQixDQUFyQjtBQUNELEtBaEVzQztBQWlFdkMrQyxJQUFBQSxXQUFXLEVBQUUscUJBQUNsQyxNQUFELEVBQVk7QUFDdkIsVUFBTWIsUUFBUSxhQUFNVixHQUFOLHNCQUFxQk8sYUFBYSxDQUFDSSxJQUFuQyxvQkFBaURZLE1BQU0sQ0FBQ04sRUFBeEQsU0FBNkRNLE1BQU0sQ0FBQ1UsZUFBUCxHQUF5Qix1QkFBekIsR0FBbUQsRUFBaEgsQ0FBZDtBQUNBLFVBQUlVLE9BQUo7O0FBQ0EsVUFBSXBDLGFBQWEsQ0FBQ3VCLFNBQWxCLEVBQTZCO0FBQzNCYSxRQUFBQSxPQUFPLEdBQUc7QUFDUkUsVUFBQUEsYUFBYSxtQkFBWXRDLGFBQWEsQ0FBQ3VCLFNBQTFCO0FBREwsU0FBVjtBQUdEOztBQUNELGFBQU8xQixjQUFjLENBQUNELFlBQVksQ0FBQytDLE1BQWQsRUFBc0J4QyxRQUF0QixFQUFnQyxJQUFoQyxFQUFzQ2lDLE9BQXRDLENBQXJCO0FBQ0Q7QUExRXNDLEdBQXBCO0FBQUEsQ0FBckI7O0FBNkVBZSxNQUFNLENBQUNDLE9BQVAsR0FBaUJQLFlBQWpCIiwic291cmNlc0NvbnRlbnQiOlsicmVxdWlyZSgncmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lJylcblxuY29uc3QgRm9ybURhdGEgPSByZXF1aXJlKCdmb3JtLWRhdGEnKVxuY29uc3QgeyBVUkksIFVQTE9BRF9BUElfVVJMLCBBUElfVkVSU0lPTiB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuY29uc3QgcHJvbWlzZXIgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3Byb21pc2VyJylcblxuY29uc3QgbWVkaWFDaGFpbk1ldGhvZHMgPSAoYnVja2V0X2NvbmZpZykgPT4gKHtcbiAgLy8gR2V0XG4gIGZpbmQocXVlcnkpIHtcbiAgICB0aGlzLmVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9tZWRpYT9yZWFkX2tleT0ke2J1Y2tldF9jb25maWcucmVhZF9rZXl9JHtxdWVyeSA/IGAmcXVlcnk9JHtlbmNvZGVVUkkoSlNPTi5zdHJpbmdpZnkocXVlcnkpKX1gIDogJyd9YFxuICAgIHJldHVybiB0aGlzXG4gIH0sXG4gIC8vIGZpbmRPbmVcbiAgZmluZE9uZShxdWVyeSkge1xuICAgIHRoaXMuZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L21lZGlhLyR7cXVlcnkuaWR9P3JlYWRfa2V5PSR7YnVja2V0X2NvbmZpZy5yZWFkX2tleX1gXG4gICAgcmV0dXJuIHRoaXNcbiAgfSxcbiAgcHJvcHMocHJvcHMpIHtcbiAgICB0aGlzLmVuZHBvaW50ICs9IGAmcHJvcHM9JHtwcm9wc31gXG4gICAgcmV0dXJuIHRoaXNcbiAgfSxcbiAgc29ydChzb3J0KSB7XG4gICAgdGhpcy5lbmRwb2ludCArPSBgJnNvcnQ9JHtzb3J0fWBcbiAgICByZXR1cm4gdGhpc1xuICB9LFxuICBsaW1pdChsaW1pdCkge1xuICAgIHRoaXMuZW5kcG9pbnQgKz0gYCZsaW1pdD0ke2xpbWl0fWBcbiAgICByZXR1cm4gdGhpc1xuICB9LFxuICBza2lwKHNraXApIHtcbiAgICB0aGlzLmVuZHBvaW50ICs9IGAmc2tpcD0ke3NraXB9YFxuICAgIHJldHVybiB0aGlzXG4gIH0sXG4gIC8vIGluc2VydE9uZVxuICBhc3luYyBpbnNlcnRPbmUocGFyYW1zKSB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUExPQURfQVBJX1VSTH0vJHtBUElfVkVSU0lPTn0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vbWVkaWFgXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgaWYgKHBhcmFtcy5tZWRpYS5idWZmZXIpIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZWRpYScsIHBhcmFtcy5tZWRpYS5idWZmZXIsIHBhcmFtcy5tZWRpYS5vcmlnaW5hbG5hbWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZWRpYScsIHBhcmFtcy5tZWRpYSwgcGFyYW1zLm1lZGlhLm5hbWUpXG4gICAgfVxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgZGF0YS5hcHBlbmQoJ3dyaXRlX2tleScsIGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KVxuICAgIH1cbiAgICBpZiAocGFyYW1zLmZvbGRlcikge1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZvbGRlcicsIHBhcmFtcy5mb2xkZXIpXG4gICAgfVxuICAgIGlmIChwYXJhbXMubWV0YWRhdGEpIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZXRhZGF0YScsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5tZXRhZGF0YSkpXG4gICAgfVxuICAgIGlmIChwYXJhbXMudHJpZ2dlcl93ZWJob29rKSB7XG4gICAgICBkYXRhLmFwcGVuZCgndHJpZ2dlcl93ZWJob29rJywgcGFyYW1zLnRyaWdnZXJfd2ViaG9vay50b1N0cmluZygpKVxuICAgIH1cbiAgICBjb25zdCBnZXRIZWFkZXJzID0gKChmb3JtKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLm1lZGlhLmJ1ZmZlcikge1xuICAgICAgICBmb3JtLmdldExlbmd0aCgoZXJyLCBsZW5ndGgpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKVxuICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7ICdDb250ZW50LUxlbmd0aCc6IGxlbmd0aCwgLi4uZm9ybS5nZXRIZWFkZXJzKCkgfVxuICAgICAgICAgIHJlc29sdmUoaGVhZGVycylcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoeyAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnIH0pXG4gICAgICB9XG4gICAgfSlcbiAgICApXG4gICAgcmV0dXJuIGdldEhlYWRlcnMoZGF0YSlcbiAgICAgIC50aGVuKChoZWFkZXJzKSA9PiB7XG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUE9TVCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3IucmVzcG9uc2UuZGF0YVxuICAgICAgfSlcbiAgfSxcbiAgLy8gRGVsZXRlXG4gIGFzeW5jIGRlbGV0ZU9uZShwYXJhbXMpIHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vbWVkaWEvJHtwYXJhbXMuaWR9JHtwYXJhbXMudHJpZ2dlcl93ZWJob29rID8gJz90cmlnZ2VyX3dlYmhvb2s9dHJ1ZScgOiAnJ31gXG4gICAgbGV0IGhlYWRlcnNcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuREVMRVRFLCBlbmRwb2ludCwgbnVsbCwgaGVhZGVycylcbiAgfSxcbiAgYXN5bmMgdGhlbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICBwcm9taXNlcih0aGlzLmVuZHBvaW50KS50aGVuKChyZXMpID0+IHJlc29sdmUocmVzLCBudWxsKSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiByZWplY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVqZWN0KGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUobnVsbCwgZXJyKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn0pXG5cbmNvbnN0IG1lZGlhTWV0aG9kcyA9IChidWNrZXRfY29uZmlnKSA9PiAoe1xuICBtZWRpYTogbWVkaWFDaGFpbk1ldGhvZHMoYnVja2V0X2NvbmZpZyksXG4gIGFkZE1lZGlhOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUExPQURfQVBJX1VSTH0vJHtBUElfVkVSU0lPTn0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vbWVkaWFgXG4gICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgaWYgKHBhcmFtcy5tZWRpYS5idWZmZXIpIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZWRpYScsIHBhcmFtcy5tZWRpYS5idWZmZXIsIHBhcmFtcy5tZWRpYS5vcmlnaW5hbG5hbWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZWRpYScsIHBhcmFtcy5tZWRpYSwgcGFyYW1zLm1lZGlhLm5hbWUpXG4gICAgfVxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgZGF0YS5hcHBlbmQoJ3dyaXRlX2tleScsIGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KVxuICAgIH1cbiAgICBpZiAocGFyYW1zLmZvbGRlcikge1xuICAgICAgZGF0YS5hcHBlbmQoJ2ZvbGRlcicsIHBhcmFtcy5mb2xkZXIpXG4gICAgfVxuICAgIGlmIChwYXJhbXMubWV0YWRhdGEpIHtcbiAgICAgIGRhdGEuYXBwZW5kKCdtZXRhZGF0YScsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5tZXRhZGF0YSkpXG4gICAgfVxuICAgIGlmIChwYXJhbXMudHJpZ2dlcl93ZWJob29rKSB7XG4gICAgICBkYXRhLmFwcGVuZCgndHJpZ2dlcl93ZWJob29rJywgcGFyYW1zLnRyaWdnZXJfd2ViaG9vay50b1N0cmluZygpKVxuICAgIH1cbiAgICBjb25zdCBnZXRIZWFkZXJzID0gKChmb3JtKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAocGFyYW1zLm1lZGlhLmJ1ZmZlcikge1xuICAgICAgICBmb3JtLmdldExlbmd0aCgoZXJyLCBsZW5ndGgpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKVxuICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7ICdDb250ZW50LUxlbmd0aCc6IGxlbmd0aCwgLi4uZm9ybS5nZXRIZWFkZXJzKCkgfVxuICAgICAgICAgIHJlc29sdmUoaGVhZGVycylcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoeyAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnIH0pXG4gICAgICB9XG4gICAgfSlcbiAgICApXG4gICAgcmV0dXJuIGdldEhlYWRlcnMoZGF0YSlcbiAgICAgIC50aGVuKChoZWFkZXJzKSA9PiB7XG4gICAgICAgIGhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUE9TVCwgZW5kcG9pbnQsIGRhdGEsIGhlYWRlcnMpXG4gICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgZXJyb3IucmVzcG9uc2UuZGF0YVxuICAgICAgfSlcbiAgfSxcbiAgZ2V0TWVkaWE6IChwYXJhbXMpID0+IHtcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L21lZGlhP3JlYWRfa2V5PSR7YnVja2V0X2NvbmZpZy5yZWFkX2tleX1gXG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMubGltaXQpIHtcbiAgICAgIGVuZHBvaW50ICs9IGAmbGltaXQ9JHtwYXJhbXMubGltaXR9YFxuICAgIH1cbiAgICBpZiAocGFyYW1zICYmIHBhcmFtcy5za2lwKSB7XG4gICAgICBlbmRwb2ludCArPSBgJnNraXA9JHtwYXJhbXMuc2tpcH1gXG4gICAgfVxuICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLnF1ZXJ5KSB7XG4gICAgICBlbmRwb2ludCArPSBgJnF1ZXJ5PSR7ZW5jb2RlVVJJKEpTT04uc3RyaW5naWZ5KHBhcmFtcy5xdWVyeSkpfWBcbiAgICB9XG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMucHJvcHMpIHtcbiAgICAgIGVuZHBvaW50ICs9IGAmcHJvcHM9JHtwYXJhbXMucHJvcHN9YFxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQpXG4gIH0sXG4gIGdldFNpbmdsZU1lZGlhOiAocGFyYW1zKSA9PiB7XG4gICAgbGV0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9tZWRpYS8ke3BhcmFtcy5pZH0/cmVhZF9rZXk9JHtidWNrZXRfY29uZmlnLnJlYWRfa2V5fWBcbiAgICBpZiAocGFyYW1zICYmIHBhcmFtcy5wcm9wcykge1xuICAgICAgZW5kcG9pbnQgKz0gYCZwcm9wcz0ke3BhcmFtcy5wcm9wc31gXG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludClcbiAgfSxcbiAgZGVsZXRlTWVkaWE6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vbWVkaWEvJHtwYXJhbXMuaWR9JHtwYXJhbXMudHJpZ2dlcl93ZWJob29rID8gJz90cmlnZ2VyX3dlYmhvb2s9dHJ1ZScgOiAnJ31gXG4gICAgbGV0IGhlYWRlcnNcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuREVMRVRFLCBlbmRwb2ludCwgbnVsbCwgaGVhZGVycylcbiAgfVxufSlcblxubW9kdWxlLmV4cG9ydHMgPSBtZWRpYU1ldGhvZHNcbiJdfQ== -------------------------------------------------------------------------------- /dist/bucket/object.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } 4 | 5 | function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } 6 | 7 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 8 | 9 | function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 10 | 11 | function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 12 | 13 | require('regenerator-runtime/runtime'); 14 | 15 | var _require = require('../helpers/constants'), 16 | URI = _require.URI; 17 | 18 | var HTTP_METHODS = require('../helpers/http_methods'); 19 | 20 | var _require2 = require('../helpers/request_handler'), 21 | requestHandler = _require2.requestHandler; 22 | 23 | var promiser = require('../helpers/promiser'); 24 | 25 | var headers; 26 | 27 | var addParamsToObjectsEndpoint = function addParamsToObjectsEndpoint(endpoint, params) { 28 | var ep = endpoint; 29 | 30 | if (params && params.limit) { 31 | ep += "&limit=".concat(params.limit); 32 | } 33 | 34 | if (params && params.skip) { 35 | ep += "&skip=".concat(params.skip); 36 | } 37 | 38 | if (params && params.status) { 39 | ep += "&status=".concat(params.status); 40 | } 41 | 42 | if (params && params.after) { 43 | ep += "&after=".concat(params.after); 44 | } 45 | 46 | if (params && params.sort) { 47 | ep += "&sort=".concat(params.sort); 48 | } 49 | 50 | if (params && params.show_metafields) { 51 | ep += "&show_metafields=".concat(params.show_metafields); 52 | } 53 | 54 | if (params && params.pretty) { 55 | ep += "&pretty=".concat(params.pretty); 56 | } 57 | 58 | if (params && params.props) { 59 | ep += "&props=".concat(params.props); 60 | } 61 | 62 | if (params && params.query) { 63 | ep += "&query=".concat(encodeURI(JSON.stringify(params.query))); 64 | } 65 | 66 | if (params && typeof params.use_cache !== 'undefined') { 67 | ep += "&use_cache=".concat(params.use_cache); 68 | } 69 | 70 | return ep; 71 | }; 72 | 73 | var FindChaining = /*#__PURE__*/function () { 74 | function FindChaining(endpoint) { 75 | _classCallCheck(this, FindChaining); 76 | 77 | this.endpoint = endpoint; 78 | } 79 | 80 | _createClass(FindChaining, [{ 81 | key: "props", 82 | value: function props(_props) { 83 | this.endpoint += "&props=".concat(_props); 84 | return this; 85 | } 86 | }, { 87 | key: "depth", 88 | value: function depth(_depth) { 89 | this.endpoint += "&depth=".concat(_depth); 90 | return this; 91 | } 92 | }, { 93 | key: "sort", 94 | value: function sort(_sort) { 95 | this.endpoint += "&sort=".concat(_sort); 96 | return this; 97 | } 98 | }, { 99 | key: "limit", 100 | value: function limit(_limit) { 101 | this.endpoint += "&limit=".concat(_limit); 102 | return this; 103 | } 104 | }, { 105 | key: "skip", 106 | value: function skip(_skip) { 107 | this.endpoint += "&skip=".concat(_skip); 108 | return this; 109 | } 110 | }, { 111 | key: "status", 112 | value: function status(_status) { 113 | this.endpoint += "&status=".concat(_status); 114 | return this; 115 | } 116 | }, { 117 | key: "after", 118 | value: function after(_after) { 119 | this.endpoint += "&after=".concat(_after); 120 | return this; 121 | } 122 | }, { 123 | key: "showMetafields", 124 | value: function showMetafields(show_metafields) { 125 | this.endpoint += "&show_metafields=".concat(show_metafields); 126 | return this; 127 | } 128 | }, { 129 | key: "useCache", 130 | value: function useCache(use_cache) { 131 | this.endpoint += "&use_cache=".concat(use_cache); 132 | return this; 133 | } 134 | }, { 135 | key: "then", 136 | value: function () { 137 | var _then = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(resolve, reject) { 138 | return regeneratorRuntime.wrap(function _callee$(_context) { 139 | while (1) { 140 | switch (_context.prev = _context.next) { 141 | case 0: 142 | promiser(this.endpoint).then(function (res) { 143 | return resolve(res, null); 144 | })["catch"](function (err) { 145 | if (typeof reject === 'function') { 146 | reject(err); 147 | } else { 148 | resolve(null, err); 149 | } 150 | }); 151 | 152 | case 1: 153 | case "end": 154 | return _context.stop(); 155 | } 156 | } 157 | }, _callee, this); 158 | })); 159 | 160 | function then(_x, _x2) { 161 | return _then.apply(this, arguments); 162 | } 163 | 164 | return then; 165 | }() 166 | }]); 167 | 168 | return FindChaining; 169 | }(); 170 | 171 | var objectsChainMethods = function objectsChainMethods(bucket_config) { 172 | return { 173 | // Get 174 | find: function find(query) { 175 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects?read_key=").concat(bucket_config.read_key).concat(query ? "&query=".concat(encodeURI(JSON.stringify(query))) : ''); 176 | return new FindChaining(endpoint); 177 | }, 178 | // findOne 179 | findOne: function findOne(query) { 180 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(query.id, "?read_key=").concat(bucket_config.read_key); 181 | return new FindChaining(endpoint); 182 | }, 183 | // Add 184 | insertOne: function insertOne(params) { 185 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { 186 | var endpoint; 187 | return regeneratorRuntime.wrap(function _callee2$(_context2) { 188 | while (1) { 189 | switch (_context2.prev = _context2.next) { 190 | case 0: 191 | endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects"); 192 | 193 | if (bucket_config.write_key) { 194 | headers = { 195 | Authorization: "Bearer ".concat(bucket_config.write_key) 196 | }; 197 | } 198 | 199 | return _context2.abrupt("return", requestHandler(HTTP_METHODS.POST, endpoint, params, headers)); 200 | 201 | case 3: 202 | case "end": 203 | return _context2.stop(); 204 | } 205 | } 206 | }, _callee2); 207 | }))(); 208 | }, 209 | // Edit 210 | updateOne: function updateOne(params, set) { 211 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() { 212 | var endpoint, updates; 213 | return regeneratorRuntime.wrap(function _callee3$(_context3) { 214 | while (1) { 215 | switch (_context3.prev = _context3.next) { 216 | case 0: 217 | endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id); 218 | updates = set.$set; 219 | 220 | if (bucket_config.write_key) { 221 | headers = { 222 | Authorization: "Bearer ".concat(bucket_config.write_key) 223 | }; 224 | } 225 | 226 | return _context3.abrupt("return", requestHandler(HTTP_METHODS.PATCH, endpoint, updates, headers)); 227 | 228 | case 4: 229 | case "end": 230 | return _context3.stop(); 231 | } 232 | } 233 | }, _callee3); 234 | }))(); 235 | }, 236 | // Delete 237 | deleteOne: function deleteOne(params) { 238 | return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() { 239 | var endpoint; 240 | return regeneratorRuntime.wrap(function _callee4$(_context4) { 241 | while (1) { 242 | switch (_context4.prev = _context4.next) { 243 | case 0: 244 | endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id).concat(params.trigger_webhook ? '?trigger_webhook=true' : ''); 245 | 246 | if (bucket_config.write_key) { 247 | headers = { 248 | Authorization: "Bearer ".concat(bucket_config.write_key) 249 | }; 250 | } 251 | 252 | return _context4.abrupt("return", requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers)); 253 | 254 | case 3: 255 | case "end": 256 | return _context4.stop(); 257 | } 258 | } 259 | }, _callee4); 260 | }))(); 261 | } 262 | }; 263 | }; 264 | 265 | var objectMethods = function objectMethods(bucket_config) { 266 | return { 267 | objects: objectsChainMethods(bucket_config), 268 | getObjects: function getObjects(params) { 269 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects?read_key=").concat(bucket_config.read_key); 270 | endpoint = addParamsToObjectsEndpoint(endpoint, params); 271 | return requestHandler(HTTP_METHODS.GET, endpoint); 272 | }, 273 | getObject: function getObject(params) { 274 | if (!params) { 275 | throw new Error('Must supply params object with object id'); 276 | } 277 | 278 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "?read_key=").concat(bucket_config.read_key); 279 | 280 | if (params && params.status) { 281 | endpoint += "&status=".concat(params.status); 282 | } 283 | 284 | if (params && params.props) { 285 | endpoint += "&props=".concat(params.props); 286 | } 287 | 288 | if (params && typeof params.use_cache !== 'undefined') { 289 | endpoint += "&use_cache=".concat(params.use_cache); 290 | } 291 | 292 | return requestHandler(HTTP_METHODS.GET, endpoint); 293 | }, 294 | getObjectRevisions: function getObjectRevisions(params) { 295 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "/revisions?read_key=").concat(bucket_config.read_key); 296 | endpoint = addParamsToObjectsEndpoint(endpoint, params); 297 | return requestHandler(HTTP_METHODS.GET, endpoint); 298 | }, 299 | getMergeRequestObjects: function getMergeRequestObjects(params) { 300 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/merge-requests/").concat(params.id, "/objects?read_key=").concat(bucket_config.read_key); 301 | endpoint = addParamsToObjectsEndpoint(endpoint, params); 302 | return requestHandler(HTTP_METHODS.GET, endpoint); 303 | }, 304 | addObject: function addObject(params) { 305 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects"); 306 | 307 | if (bucket_config.write_key) { 308 | headers = { 309 | Authorization: "Bearer ".concat(bucket_config.write_key) 310 | }; 311 | } 312 | 313 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers); 314 | }, 315 | addObjectRevision: function addObjectRevision(params) { 316 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "/revisions"); 317 | delete params.id; 318 | delete params.type; 319 | 320 | if (bucket_config.write_key) { 321 | headers = { 322 | Authorization: "Bearer ".concat(bucket_config.write_key) 323 | }; 324 | } 325 | 326 | return requestHandler(HTTP_METHODS.POST, endpoint, params, headers); 327 | }, 328 | editObject: function editObject(params) { 329 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id); 330 | 331 | if (bucket_config.write_key) { 332 | headers = { 333 | Authorization: "Bearer ".concat(bucket_config.write_key) 334 | }; 335 | } // Remove id 336 | 337 | 338 | delete params.id; 339 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers); 340 | }, 341 | getObjectMetafields: function getObjectMetafields(params) { 342 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "/metafields?read_key=").concat(bucket_config.read_key); 343 | return requestHandler(HTTP_METHODS.GET, endpoint); 344 | }, 345 | /// DEPRECATED 346 | editObjectMetafields: function editObjectMetafields(params) { 347 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "/metafields"); 348 | 349 | if (bucket_config.write_key) { 350 | headers = { 351 | Authorization: "Bearer ".concat(bucket_config.write_key) 352 | }; 353 | } // Remove id 354 | 355 | 356 | delete params.id; 357 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers); 358 | }, 359 | editObjectMetafield: function editObjectMetafield(params) { 360 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id, "/metafields/").concat(params.key); 361 | 362 | if (bucket_config.write_key) { 363 | headers = { 364 | Authorization: "Bearer ".concat(bucket_config.write_key) 365 | }; 366 | } // Remove id 367 | 368 | 369 | delete params.id; 370 | delete params.key; 371 | return requestHandler(HTTP_METHODS.PATCH, endpoint, params, headers); 372 | }, 373 | deleteObject: function deleteObject(params) { 374 | var endpoint = "".concat(URI, "/buckets/").concat(bucket_config.slug, "/objects/").concat(params.id); 375 | 376 | if (bucket_config.write_key) { 377 | headers = { 378 | Authorization: "Bearer ".concat(bucket_config.write_key) 379 | }; 380 | } 381 | 382 | return requestHandler(HTTP_METHODS.DELETE, endpoint, null, headers); 383 | } 384 | }; 385 | }; 386 | 387 | module.exports = objectMethods; 388 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWNrZXQvb2JqZWN0LmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJVUkkiLCJIVFRQX01FVEhPRFMiLCJyZXF1ZXN0SGFuZGxlciIsInByb21pc2VyIiwiaGVhZGVycyIsImFkZFBhcmFtc1RvT2JqZWN0c0VuZHBvaW50IiwiZW5kcG9pbnQiLCJwYXJhbXMiLCJlcCIsImxpbWl0Iiwic2tpcCIsInN0YXR1cyIsImFmdGVyIiwic29ydCIsInNob3dfbWV0YWZpZWxkcyIsInByZXR0eSIsInByb3BzIiwicXVlcnkiLCJlbmNvZGVVUkkiLCJKU09OIiwic3RyaW5naWZ5IiwidXNlX2NhY2hlIiwiRmluZENoYWluaW5nIiwiZGVwdGgiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInJlcyIsImVyciIsIm9iamVjdHNDaGFpbk1ldGhvZHMiLCJidWNrZXRfY29uZmlnIiwiZmluZCIsInNsdWciLCJyZWFkX2tleSIsImZpbmRPbmUiLCJpZCIsImluc2VydE9uZSIsIndyaXRlX2tleSIsIkF1dGhvcml6YXRpb24iLCJQT1NUIiwidXBkYXRlT25lIiwic2V0IiwidXBkYXRlcyIsIiRzZXQiLCJQQVRDSCIsImRlbGV0ZU9uZSIsInRyaWdnZXJfd2ViaG9vayIsIkRFTEVURSIsIm9iamVjdE1ldGhvZHMiLCJvYmplY3RzIiwiZ2V0T2JqZWN0cyIsIkdFVCIsImdldE9iamVjdCIsIkVycm9yIiwiZ2V0T2JqZWN0UmV2aXNpb25zIiwiZ2V0TWVyZ2VSZXF1ZXN0T2JqZWN0cyIsImFkZE9iamVjdCIsImFkZE9iamVjdFJldmlzaW9uIiwidHlwZSIsImVkaXRPYmplY3QiLCJnZXRPYmplY3RNZXRhZmllbGRzIiwiZWRpdE9iamVjdE1ldGFmaWVsZHMiLCJlZGl0T2JqZWN0TWV0YWZpZWxkIiwia2V5IiwiZGVsZXRlT2JqZWN0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUFBLE9BQU8sQ0FBQyw2QkFBRCxDQUFQ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QzRCLEVBQTFELENBQWQ7O0FBQ0EsVUFBSUwsYUFBYSxDQUFDTyxTQUFsQixFQUE2QjtBQUMzQmpDLFFBQUFBLE9BQU8sR0FBRztBQUNSa0MsVUFBQUEsYUFBYSxtQkFBWVIsYUFBYSxDQUFDTyxTQUExQjtBQURMLFNBQVY7QUFHRDs7QUFDRCxhQUFPbkMsY0FBYyxDQUFDRCxZQUFZLENBQUM4QyxNQUFkLEVBQXNCekMsUUFBdEIsRUFBZ0MsSUFBaEMsRUFBc0NGLE9BQXRDLENBQXJCO0FBQ0Q7QUFwR3VDLEdBQXBCO0FBQUEsQ0FBdEI7O0FBdUdBNkQsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbEIsYUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJyZXF1aXJlKCdyZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUnKVxuXG5jb25zdCB7IFVSSSB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9jb25zdGFudHMnKVxuY29uc3QgSFRUUF9NRVRIT0RTID0gcmVxdWlyZSgnLi4vaGVscGVycy9odHRwX21ldGhvZHMnKVxuY29uc3QgeyByZXF1ZXN0SGFuZGxlciB9ID0gcmVxdWlyZSgnLi4vaGVscGVycy9yZXF1ZXN0X2hhbmRsZXInKVxuY29uc3QgcHJvbWlzZXIgPSByZXF1aXJlKCcuLi9oZWxwZXJzL3Byb21pc2VyJylcblxubGV0IGhlYWRlcnNcblxuY29uc3QgYWRkUGFyYW1zVG9PYmplY3RzRW5kcG9pbnQgPSAoZW5kcG9pbnQsIHBhcmFtcykgPT4ge1xuICBsZXQgZXAgPSBlbmRwb2ludFxuICBpZiAocGFyYW1zICYmIHBhcmFtcy5saW1pdCkge1xuICAgIGVwICs9IGAmbGltaXQ9JHtwYXJhbXMubGltaXR9YFxuICB9XG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLnNraXApIHtcbiAgICBlcCArPSBgJnNraXA9JHtwYXJhbXMuc2tpcH1gXG4gIH1cbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMuc3RhdHVzKSB7XG4gICAgZXAgKz0gYCZzdGF0dXM9JHtwYXJhbXMuc3RhdHVzfWBcbiAgfVxuICBpZiAocGFyYW1zICYmIHBhcmFtcy5hZnRlcikge1xuICAgIGVwICs9IGAmYWZ0ZXI9JHtwYXJhbXMuYWZ0ZXJ9YFxuICB9XG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLnNvcnQpIHtcbiAgICBlcCArPSBgJnNvcnQ9JHtwYXJhbXMuc29ydH1gXG4gIH1cbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMuc2hvd19tZXRhZmllbGRzKSB7XG4gICAgZXAgKz0gYCZzaG93X21ldGFmaWVsZHM9JHtwYXJhbXMuc2hvd19tZXRhZmllbGRzfWBcbiAgfVxuICBpZiAocGFyYW1zICYmIHBhcmFtcy5wcmV0dHkpIHtcbiAgICBlcCArPSBgJnByZXR0eT0ke3BhcmFtcy5wcmV0dHl9YFxuICB9XG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLnByb3BzKSB7XG4gICAgZXAgKz0gYCZwcm9wcz0ke3BhcmFtcy5wcm9wc31gXG4gIH1cbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMucXVlcnkpIHtcbiAgICBlcCArPSBgJnF1ZXJ5PSR7ZW5jb2RlVVJJKEpTT04uc3RyaW5naWZ5KHBhcmFtcy5xdWVyeSkpfWBcbiAgfVxuICBpZiAocGFyYW1zICYmIHR5cGVvZiBwYXJhbXMudXNlX2NhY2hlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGVwICs9IGAmdXNlX2NhY2hlPSR7cGFyYW1zLnVzZV9jYWNoZX1gXG4gIH1cbiAgcmV0dXJuIGVwXG59XG5cbmNsYXNzIEZpbmRDaGFpbmluZyB7XG4gIGNvbnN0cnVjdG9yKGVuZHBvaW50KSB7XG4gICAgdGhpcy5lbmRwb2ludCA9IGVuZHBvaW50XG4gIH1cblxuICBwcm9wcyhwcm9wcykge1xuICAgIHRoaXMuZW5kcG9pbnQgKz0gYCZwcm9wcz0ke3Byb3BzfWBcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZGVwdGgoZGVwdGgpIHtcbiAgICB0aGlzLmVuZHBvaW50ICs9IGAmZGVwdGg9JHtkZXB0aH1gXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHNvcnQoc29ydCkge1xuICAgIHRoaXMuZW5kcG9pbnQgKz0gYCZzb3J0PSR7c29ydH1gXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGxpbWl0KGxpbWl0KSB7XG4gICAgdGhpcy5lbmRwb2ludCArPSBgJmxpbWl0PSR7bGltaXR9YFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBza2lwKHNraXApIHtcbiAgICB0aGlzLmVuZHBvaW50ICs9IGAmc2tpcD0ke3NraXB9YFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGF0dXMoc3RhdHVzKSB7XG4gICAgdGhpcy5lbmRwb2ludCArPSBgJnN0YXR1cz0ke3N0YXR1c31gXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGFmdGVyKGFmdGVyKSB7XG4gICAgdGhpcy5lbmRwb2ludCArPSBgJmFmdGVyPSR7YWZ0ZXJ9YFxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzaG93TWV0YWZpZWxkcyhzaG93X21ldGFmaWVsZHMpIHtcbiAgICB0aGlzLmVuZHBvaW50ICs9IGAmc2hvd19tZXRhZmllbGRzPSR7c2hvd19tZXRhZmllbGRzfWBcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgdXNlQ2FjaGUodXNlX2NhY2hlKSB7XG4gICAgdGhpcy5lbmRwb2ludCArPSBgJnVzZV9jYWNoZT0ke3VzZV9jYWNoZX1gXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGFzeW5jIHRoZW4ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcHJvbWlzZXIodGhpcy5lbmRwb2ludCkudGhlbigocmVzKSA9PiByZXNvbHZlKHJlcywgbnVsbCkpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgcmVqZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKG51bGwsIGVycilcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG5cbmNvbnN0IG9iamVjdHNDaGFpbk1ldGhvZHMgPSAoYnVja2V0X2NvbmZpZykgPT4gKHtcbiAgLy8gR2V0XG4gIGZpbmQocXVlcnkpIHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0cz9yZWFkX2tleT0ke2J1Y2tldF9jb25maWcucmVhZF9rZXl9JHtxdWVyeSA/IGAmcXVlcnk9JHtlbmNvZGVVUkkoSlNPTi5zdHJpbmdpZnkocXVlcnkpKX1gIDogJyd9YFxuICAgIHJldHVybiBuZXcgRmluZENoYWluaW5nKGVuZHBvaW50KVxuICB9LFxuICAvLyBmaW5kT25lXG4gIGZpbmRPbmUocXVlcnkpIHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0cy8ke3F1ZXJ5LmlkfT9yZWFkX2tleT0ke2J1Y2tldF9jb25maWcucmVhZF9rZXl9YFxuICAgIHJldHVybiBuZXcgRmluZENoYWluaW5nKGVuZHBvaW50KVxuICB9LFxuICAvLyBBZGRcbiAgYXN5bmMgaW5zZXJ0T25lKHBhcmFtcykge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzYFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5QT1NULCBlbmRwb2ludCwgcGFyYW1zLCBoZWFkZXJzKVxuICB9LFxuICAvLyBFZGl0XG4gIGFzeW5jIHVwZGF0ZU9uZShwYXJhbXMsIHNldCkge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzLyR7cGFyYW1zLmlkfWBcbiAgICBjb25zdCB1cGRhdGVzID0gc2V0LiRzZXRcbiAgICBpZiAoYnVja2V0X2NvbmZpZy53cml0ZV9rZXkpIHtcbiAgICAgIGhlYWRlcnMgPSB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtidWNrZXRfY29uZmlnLndyaXRlX2tleX1gXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUEFUQ0gsIGVuZHBvaW50LCB1cGRhdGVzLCBoZWFkZXJzKVxuICB9LFxuICAvLyBEZWxldGVcbiAgYXN5bmMgZGVsZXRlT25lKHBhcmFtcykge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzLyR7cGFyYW1zLmlkfSR7cGFyYW1zLnRyaWdnZXJfd2ViaG9vayA/ICc/dHJpZ2dlcl93ZWJob29rPXRydWUnIDogJyd9YFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5ERUxFVEUsIGVuZHBvaW50LCBudWxsLCBoZWFkZXJzKVxuICB9XG59KVxuXG5jb25zdCBvYmplY3RNZXRob2RzID0gKGJ1Y2tldF9jb25maWcpID0+ICh7XG4gIG9iamVjdHM6IG9iamVjdHNDaGFpbk1ldGhvZHMoYnVja2V0X2NvbmZpZyksXG4gIGdldE9iamVjdHM6IChwYXJhbXMpID0+IHtcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdHM/cmVhZF9rZXk9JHtidWNrZXRfY29uZmlnLnJlYWRfa2V5fWBcbiAgICBlbmRwb2ludCA9IGFkZFBhcmFtc1RvT2JqZWN0c0VuZHBvaW50KGVuZHBvaW50LCBwYXJhbXMpXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBnZXRPYmplY3Q6IChwYXJhbXMpID0+IHtcbiAgICBpZiAoIXBhcmFtcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHN1cHBseSBwYXJhbXMgb2JqZWN0IHdpdGggb2JqZWN0IGlkJylcbiAgICB9XG4gICAgbGV0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzLyR7cGFyYW1zLmlkfT9yZWFkX2tleT0ke2J1Y2tldF9jb25maWcucmVhZF9rZXl9YFxuICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLnN0YXR1cykge1xuICAgICAgZW5kcG9pbnQgKz0gYCZzdGF0dXM9JHtwYXJhbXMuc3RhdHVzfWBcbiAgICB9XG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMucHJvcHMpIHtcbiAgICAgIGVuZHBvaW50ICs9IGAmcHJvcHM9JHtwYXJhbXMucHJvcHN9YFxuICAgIH1cbiAgICBpZiAocGFyYW1zICYmIHR5cGVvZiBwYXJhbXMudXNlX2NhY2hlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZW5kcG9pbnQgKz0gYCZ1c2VfY2FjaGU9JHtwYXJhbXMudXNlX2NhY2hlfWBcbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICBnZXRPYmplY3RSZXZpc2lvbnM6IChwYXJhbXMpID0+IHtcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdHMvJHtwYXJhbXMuaWR9L3JldmlzaW9ucz9yZWFkX2tleT0ke2J1Y2tldF9jb25maWcucmVhZF9rZXl9YFxuICAgIGVuZHBvaW50ID0gYWRkUGFyYW1zVG9PYmplY3RzRW5kcG9pbnQoZW5kcG9pbnQsIHBhcmFtcylcbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLkdFVCwgZW5kcG9pbnQpXG4gIH0sXG4gIGdldE1lcmdlUmVxdWVzdE9iamVjdHM6IChwYXJhbXMpID0+IHtcbiAgICBsZXQgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L21lcmdlLXJlcXVlc3RzLyR7cGFyYW1zLmlkfS9vYmplY3RzP3JlYWRfa2V5PSR7YnVja2V0X2NvbmZpZy5yZWFkX2tleX1gXG4gICAgZW5kcG9pbnQgPSBhZGRQYXJhbXNUb09iamVjdHNFbmRwb2ludChlbmRwb2ludCwgcGFyYW1zKVxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuR0VULCBlbmRwb2ludClcbiAgfSxcbiAgYWRkT2JqZWN0OiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdHNgXG4gICAgaWYgKGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KSB7XG4gICAgICBoZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YnVja2V0X2NvbmZpZy53cml0ZV9rZXl9YFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMsIGhlYWRlcnMpXG4gIH0sXG4gIGFkZE9iamVjdFJldmlzaW9uOiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdHMvJHtwYXJhbXMuaWR9L3JldmlzaW9uc2BcbiAgICBkZWxldGUgcGFyYW1zLmlkXG4gICAgZGVsZXRlIHBhcmFtcy50eXBlXG4gICAgaWYgKGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KSB7XG4gICAgICBoZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YnVja2V0X2NvbmZpZy53cml0ZV9rZXl9YFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdEhhbmRsZXIoSFRUUF9NRVRIT0RTLlBPU1QsIGVuZHBvaW50LCBwYXJhbXMsIGhlYWRlcnMpXG4gIH0sXG4gIGVkaXRPYmplY3Q6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0cy8ke3BhcmFtcy5pZH1gXG4gICAgaWYgKGJ1Y2tldF9jb25maWcud3JpdGVfa2V5KSB7XG4gICAgICBoZWFkZXJzID0ge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YnVja2V0X2NvbmZpZy53cml0ZV9rZXl9YFxuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgaWRcbiAgICBkZWxldGUgcGFyYW1zLmlkXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5QQVRDSCwgZW5kcG9pbnQsIHBhcmFtcywgaGVhZGVycylcbiAgfSxcbiAgZ2V0T2JqZWN0TWV0YWZpZWxkczogKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzLyR7cGFyYW1zLmlkfS9tZXRhZmllbGRzP3JlYWRfa2V5PSR7YnVja2V0X2NvbmZpZy5yZWFkX2tleX1gXG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5HRVQsIGVuZHBvaW50KVxuICB9LFxuICAvLy8gREVQUkVDQVRFRFxuICBlZGl0T2JqZWN0TWV0YWZpZWxkczogKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7VVJJfS9idWNrZXRzLyR7YnVja2V0X2NvbmZpZy5zbHVnfS9vYmplY3RzLyR7cGFyYW1zLmlkfS9tZXRhZmllbGRzYFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIGlkXG4gICAgZGVsZXRlIHBhcmFtcy5pZFxuICAgIHJldHVybiByZXF1ZXN0SGFuZGxlcihIVFRQX01FVEhPRFMuUEFUQ0gsIGVuZHBvaW50LCBwYXJhbXMsIGhlYWRlcnMpXG4gIH0sXG4gIGVkaXRPYmplY3RNZXRhZmllbGQ6IChwYXJhbXMpID0+IHtcbiAgICBjb25zdCBlbmRwb2ludCA9IGAke1VSSX0vYnVja2V0cy8ke2J1Y2tldF9jb25maWcuc2x1Z30vb2JqZWN0cy8ke3BhcmFtcy5pZH0vbWV0YWZpZWxkcy8ke3BhcmFtcy5rZXl9YFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmVtb3ZlIGlkXG4gICAgZGVsZXRlIHBhcmFtcy5pZFxuICAgIGRlbGV0ZSBwYXJhbXMua2V5XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5QQVRDSCwgZW5kcG9pbnQsIHBhcmFtcywgaGVhZGVycylcbiAgfSxcbiAgZGVsZXRlT2JqZWN0OiAocGFyYW1zKSA9PiB7XG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHtVUkl9L2J1Y2tldHMvJHtidWNrZXRfY29uZmlnLnNsdWd9L29iamVjdHMvJHtwYXJhbXMuaWR9YFxuICAgIGlmIChidWNrZXRfY29uZmlnLndyaXRlX2tleSkge1xuICAgICAgaGVhZGVycyA9IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2J1Y2tldF9jb25maWcud3JpdGVfa2V5fWBcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcXVlc3RIYW5kbGVyKEhUVFBfTUVUSE9EUy5ERUxFVEUsIGVuZHBvaW50LCBudWxsLCBoZWFkZXJzKVxuICB9XG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdE1ldGhvZHNcbiJdfQ== --------------------------------------------------------------------------------