Comparing version 0.0.9 to 1.0.0
@@ -6,2 +6,3 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var Helpers; | ||
@@ -13,2 +14,5 @@ | ||
exports.default = Helpers; | ||
var _default = Helpers; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImhlbHBlcnMvaW5kZXguY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUEsT0FBQTs7QUFBQSxPQUFBLEdBQVUsVUFBQSxHQUFBLEVBQUE7U0FBUyxFO0FBQVQsQ0FBVjs7ZUFFZSxPIiwic291cmNlc0NvbnRlbnQiOlsiSGVscGVycyA9IChBV1MpIC0+IHt9XG5cbmV4cG9ydCBkZWZhdWx0IEhlbHBlcnNcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=helpers/index.coffee |
@@ -6,18 +6,13 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _lifted = require("./lifted"); | ||
var _liftAll = _interopRequireDefault(require("./lift-all")); | ||
var _lifted2 = _interopRequireDefault(_lifted); | ||
var _primitives = _interopRequireDefault(require("./primitives")); | ||
var _primitives = require("./primitives"); | ||
var _primitives2 = _interopRequireDefault(_primitives); | ||
var _helpers = require("./helpers"); | ||
var _helpers2 = _interopRequireDefault(_helpers); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
//import Engine from "./engine" | ||
// Sundog | ||
// Base is a super thin wrapper around the AWS SDK, lifting each service module so you may use them with promises rather than callbacks. | ||
// Primatives is a slightly higher level wrapper - still promise based - to give the SDK a more functional flavor. | ||
var start; | ||
@@ -30,3 +25,3 @@ | ||
get: function () { | ||
return (0, _lifted2.default)(engine); | ||
return (0, _liftAll.default)(engine); | ||
} | ||
@@ -37,10 +32,4 @@ }, | ||
get: function () { | ||
return (0, _primitives2.default)(this._AWS); | ||
return (0, _primitives.default)(this._AWS); | ||
} | ||
}, | ||
Helpers: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _helpers2.default)(this.AWS); | ||
} | ||
} | ||
@@ -50,2 +39,5 @@ }); | ||
exports.default = start; | ||
var _default = start; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUE7O0FBQ0E7Ozs7QUFMQTs7O0FBQUEsSUFBQSxLQUFBOztBQU9BLEtBQUEsR0FBUSxVQUFBLE1BQUEsRUFBQTtTQUNOLE1BQU0sQ0FBTixnQkFBQSxDQUFBLEVBQUEsRUFDRTtBQUFBLElBQUEsSUFBQSxFQUNFO0FBQUEsTUFBQSxVQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUEsR0FBQSxFQUFLLFlBQUE7ZUFBRyxzQkFBQSxNQUFBLEM7QUFBSDtBQURMLEtBREY7QUFHQSxJQUFBLEdBQUEsRUFDRTtBQUFBLE1BQUEsVUFBQSxFQUFBLElBQUE7QUFDQSxNQUFBLEdBQUEsRUFBSyxZQUFBO2VBQUcseUJBQVcsS0FBWCxJQUFBLEM7QUFBSDtBQURMO0FBSkYsR0FERixDO0FBRE0sQ0FBUjs7ZUFTZSxLIiwic291cmNlc0NvbnRlbnQiOlsiIyBTdW5kb2dcbiMgQmFzZSBpcyBhIHN1cGVyIHRoaW4gd3JhcHBlciBhcm91bmQgdGhlIEFXUyBTREssIGxpZnRpbmcgZWFjaCBzZXJ2aWNlIG1vZHVsZSBzbyB5b3UgbWF5IHVzZSB0aGVtIHdpdGggcHJvbWlzZXMgcmF0aGVyIHRoYW4gY2FsbGJhY2tzLlxuIyBQcmltYXRpdmVzIGlzIGEgc2xpZ2h0bHkgaGlnaGVyIGxldmVsIHdyYXBwZXIgLSBzdGlsbCBwcm9taXNlIGJhc2VkIC0gdG8gZ2l2ZSB0aGUgU0RLIGEgbW9yZSBmdW5jdGlvbmFsIGZsYXZvci5cblxuaW1wb3J0IEJhc2UgZnJvbSBcIi4vbGlmdC1hbGxcIlxuaW1wb3J0IFByaW1hdGl2ZXMgZnJvbSBcIi4vcHJpbWl0aXZlc1wiXG5cbnN0YXJ0ID0gKGVuZ2luZSkgLT5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMge30sXG4gICAgX0FXUzpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gQmFzZSBlbmdpbmVcbiAgICBBV1M6XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IFByaW1hdGl2ZXMgQF9BV1NcblxuZXhwb3J0IGRlZmF1bHQgc3RhcnRcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=index.coffee |
@@ -6,138 +6,162 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _fairmont = require("fairmont"); | ||
var _pandaParchment = require("panda-parchment"); | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _pandaRiver = require("panda-river"); | ||
var _utils = require("./utils"); | ||
var _lift = require("../lift"); | ||
// Primitives for the service Cognito. The base entity is the "user". Methods that act on other entities, like pools or clients are prefixed as such. | ||
var cognitoPrimative; | ||
var cognitoPrimitive; | ||
cognitoPrimative = function (_AWS) { | ||
var clientGet, clientHead, clientList, cog, poolGet, poolHead, poolList; | ||
cog = _AWS.CognitoIdentityServiceProvider; | ||
poolList = (() => { | ||
var _ref = _asyncToGenerator(function* (current = [], token) { | ||
var NextToken, UserPools, params; | ||
params = { | ||
MaxResults: 60 | ||
}; | ||
if (token) { | ||
params.NextToken = token; | ||
} | ||
({ UserPools, NextToken } = yield cog.listUserPools(params)); | ||
current = (0, _fairmont.cat)(current, UserPools); | ||
if (NextToken) { | ||
return yield poolList(current, NextToken); | ||
} else { | ||
return current; | ||
} | ||
}); | ||
cognitoPrimitive = function (SDK) { | ||
var clientGet, clientHead, clientList, poolGet, poolHead, poolList; | ||
return function poolList() { | ||
return _ref.apply(this, arguments); | ||
}; | ||
})(); | ||
poolHead = (() => { | ||
var _ref2 = _asyncToGenerator(function* (name) { | ||
var pool; | ||
[pool] = (0, _fairmont.collect)((0, _fairmont.where)({ | ||
Name: name | ||
}, (yield poolList()))); | ||
if (pool) { | ||
return pool; | ||
} else { | ||
return false; | ||
} | ||
}); | ||
(function (configuration) { | ||
var cog; | ||
return cog = (0, _lift.applyConfiguration)(configuration, SDK.CognitoIdentityServiceProvider); | ||
}); | ||
return function poolHead(_x) { | ||
return _ref2.apply(this, arguments); | ||
poolList = async function (current = [], token) { | ||
var NextToken, UserPools, params; | ||
params = { | ||
MaxResults: 60 | ||
}; | ||
})(); | ||
poolGet = (() => { | ||
var _ref3 = _asyncToGenerator(function* (name) { | ||
var Id, UserPool; | ||
({ Id } = yield poolHead(name)); | ||
if (!Id) { | ||
return false; | ||
} else { | ||
({ UserPool } = yield cog.describeUserPool({ | ||
UserPoolId: Id | ||
})); | ||
return UserPool; | ||
} | ||
}); | ||
return function poolGet(_x2) { | ||
return _ref3.apply(this, arguments); | ||
}; | ||
})(); | ||
clientList = (() => { | ||
var _ref4 = _asyncToGenerator(function* (UserPoolId, current = [], token) { | ||
var NextToken, UserPoolClients, params; | ||
params = { | ||
UserPoolId, | ||
MaxResults: 60 | ||
}; | ||
if (token) { | ||
params.NextToken = token; | ||
} | ||
({ UserPoolClients, NextToken } = yield cog.listUserPoolClients(params)); | ||
current = (0, _fairmont.cat)(current, UserPoolClients); | ||
if (NextToken) { | ||
return yield clientList(UserPoolId, current, NextToken); | ||
} else { | ||
return current; | ||
} | ||
}); | ||
if (token) { | ||
params.NextToken = token; | ||
} | ||
return function clientList(_x3) { | ||
return _ref4.apply(this, arguments); | ||
({ | ||
UserPools, | ||
NextToken | ||
} = await cog.listUserPools(params)); | ||
current = (0, _pandaParchment.cat)(current, UserPools); | ||
if (NextToken) { | ||
return await poolList(current, NextToken); | ||
} else { | ||
return current; | ||
} | ||
}; | ||
poolHead = async function (name) { | ||
var pool; | ||
[pool] = (0, _pandaRiver.collect)((0, _utils.where)({ | ||
Name: name | ||
}, (await poolList()))); | ||
if (pool) { | ||
return pool; | ||
} else { | ||
return false; | ||
} | ||
}; | ||
poolGet = async function (name) { | ||
var Id, UserPool; | ||
({ | ||
Id | ||
} = await poolHead(name)); | ||
if (!Id) { | ||
return false; | ||
} else { | ||
({ | ||
UserPool | ||
} = await cog.describeUserPool({ | ||
UserPoolId: Id | ||
})); | ||
return UserPool; | ||
} | ||
}; | ||
clientList = async function (UserPoolId, current = [], token) { | ||
var NextToken, UserPoolClients, params; | ||
params = { | ||
UserPoolId, | ||
MaxResults: 60 | ||
}; | ||
})(); | ||
clientHead = (() => { | ||
var _ref5 = _asyncToGenerator(function* (UserPoolOverload, ClientName) { | ||
var Id, UserPoolName, client; | ||
if (ClientName) { | ||
Id = UserPoolOverload; | ||
} else { | ||
ClientName = UserPoolName = UserPoolOverload; | ||
({ Id } = yield poolHead(UserPoolName)); | ||
} | ||
if (!Id) { | ||
return false; | ||
} else { | ||
[client] = (0, _fairmont.collect)((0, _fairmont.where)({ ClientName }, (yield clientList(Id)))); | ||
if (client) { | ||
return client; | ||
} else { | ||
return false; | ||
} | ||
} | ||
}); | ||
return function clientHead(_x4, _x5) { | ||
return _ref5.apply(this, arguments); | ||
}; | ||
})(); | ||
clientGet = (() => { | ||
var _ref6 = _asyncToGenerator(function* (userPoolName, clientName) { | ||
var ClientId, UserPoolClient, UserPoolId; | ||
clientName || (clientName = userPoolName); | ||
({ UserPoolId, ClientId } = yield clientHead(userPoolName, clientName)); | ||
if (ClientId) { | ||
({ UserPoolClient } = yield cog.describeUserPoolClient({ UserPoolId, ClientId })); | ||
return UserPoolClient; | ||
if (token) { | ||
params.NextToken = token; | ||
} | ||
({ | ||
UserPoolClients, | ||
NextToken | ||
} = await cog.listUserPoolClients(params)); | ||
current = (0, _pandaParchment.cat)(current, UserPoolClients); | ||
if (NextToken) { | ||
return await clientList(UserPoolId, current, NextToken); | ||
} else { | ||
return current; | ||
} | ||
}; | ||
clientHead = async function (UserPoolOverload, ClientName) { | ||
var Id, UserPoolName, client; | ||
if (ClientName) { | ||
Id = UserPoolOverload; | ||
} else { | ||
ClientName = UserPoolName = UserPoolOverload; | ||
({ | ||
Id | ||
} = await poolHead(UserPoolName)); | ||
} | ||
if (!Id) { | ||
return false; | ||
} else { | ||
[client] = (0, _pandaRiver.collect)((0, _utils.where)({ | ||
ClientName | ||
}, (await clientList(Id)))); | ||
if (client) { | ||
return client; | ||
} else { | ||
return false; | ||
} | ||
}); | ||
} | ||
}; | ||
return function clientGet(_x6, _x7) { | ||
return _ref6.apply(this, arguments); | ||
}; | ||
})(); | ||
return { poolList, poolHead, poolGet, clientList, clientHead, clientGet }; | ||
clientGet = async function (userPoolName, clientName) { | ||
var ClientId, UserPoolClient, UserPoolId; | ||
clientName || (clientName = userPoolName); | ||
({ | ||
UserPoolId, | ||
ClientId | ||
} = await clientHead(userPoolName, clientName)); | ||
if (ClientId) { | ||
({ | ||
UserPoolClient | ||
} = await cog.describeUserPoolClient({ | ||
UserPoolId, | ||
ClientId | ||
})); | ||
return UserPoolClient; | ||
} else { | ||
return false; | ||
} | ||
}; | ||
return { | ||
poolList, | ||
poolHead, | ||
poolGet, | ||
clientList, | ||
clientHead, | ||
clientGet | ||
}; | ||
}; | ||
exports.default = cognitoPrimative; | ||
var _default = cognitoPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvY29nbml0by5jb2ZmZWUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUxBO0FBQUEsSUFBQSxnQkFBQTs7QUFPQSxnQkFBQSxHQUFtQixVQUFBLEdBQUEsRUFBQTtBQUNqQixNQUFBLFNBQUEsRUFBQSxVQUFBLEVBQUEsVUFBQSxFQUFBLE9BQUEsRUFBQSxRQUFBLEVBQUEsUUFBQTs7QUFBQSxHQUFBLFVBQUEsYUFBQSxFQUFBO0FBQ0UsUUFBQSxHQUFBO1dBQUEsR0FBQSxHQUFNLDhCQUFBLGFBQUEsRUFBa0MsR0FBRyxDQUFyQyw4QkFBQSxDO0FBRFIsR0FBQTs7QUFHQSxFQUFBLFFBQUEsR0FBVyxnQkFBQyxPQUFBLEdBQUQsRUFBQSxFQUFBLEtBQUEsRUFBQTtBQUNULFFBQUEsU0FBQSxFQUFBLFNBQUEsRUFBQSxNQUFBO0FBQUEsSUFBQSxNQUFBLEdBQVM7QUFBQSxNQUFBLFVBQUEsRUFBWTtBQUFaLEtBQVQ7O0FBQ0EsUUFBQSxLQUFBLEVBQUE7QUFBQSxNQUFBLE1BQU0sQ0FBTixTQUFBLEdBQUEsS0FBQTs7O0FBQ0EsS0FBQTtBQUFBLE1BQUEsU0FBQTtBQUFBLE1BQUE7QUFBQSxRQUF5QixNQUFNLEdBQUcsQ0FBSCxhQUFBLENBQS9CLE1BQStCLENBQS9CO0FBQ0EsSUFBQSxPQUFBLEdBQVUseUJBQUEsT0FBQSxFQUFBLFNBQUEsQ0FBVjs7QUFDQSxRQUFBLFNBQUEsRUFBQTtBQUNFLGFBQUEsTUFBTSxRQUFBLENBQUEsT0FBQSxFQURSLFNBQ1EsQ0FBTjtBQURGLEtBQUEsTUFBQTthQUFBLE87O0FBTFMsR0FBWDs7QUFVQSxFQUFBLFFBQUEsR0FBVyxnQkFBQSxJQUFBLEVBQUE7QUFDVCxRQUFBLElBQUE7QUFBQSxLQUFBLElBQUEsSUFBUyx5QkFBUSxrQkFBTTtBQUFBLE1BQUEsSUFBQSxFQUFNO0FBQU4sS0FBTixHQUFrQixNQUFNLFFBQWhDLEVBQVEsRUFBUixD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ZSBzZXJ2aWNlIENvZ25pdG8uICBUaGUgYmFzZSBlbnRpdHkgaXMgdGhlIFwidXNlclwiLiAgTWV0aG9kcyB0aGF0IGFjdCBvbiBvdGhlciBlbnRpdGllcywgbGlrZSBwb29scyBvciBjbGllbnRzIGFyZSBwcmVmaXhlZCBhcyBzdWNoLlxuXG5pbXBvcnQge2NhdH0gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5pbXBvcnQge2NvbGxlY3R9IGZyb20gXCJwYW5kYS1yaXZlclwiXG5pbXBvcnQge3doZXJlfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQge2FwcGx5Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL2xpZnRcIlxuXG5jb2duaXRvUHJpbWl0aXZlID0gKFNESykgLT5cbiAgKGNvbmZpZ3VyYXRpb24pIC0+XG4gICAgY29nID0gYXBwbHlDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFNESy5Db2duaXRvSWRlbnRpdHlTZXJ2aWNlUHJvdmlkZXJcblxuICBwb29sTGlzdCA9IChjdXJyZW50PVtdLCB0b2tlbikgLT5cbiAgICBwYXJhbXMgPSBNYXhSZXN1bHRzOiA2MFxuICAgIHBhcmFtcy5OZXh0VG9rZW4gPSB0b2tlbiBpZiB0b2tlblxuICAgIHtVc2VyUG9vbHMsIE5leHRUb2tlbn0gPSBhd2FpdCBjb2cubGlzdFVzZXJQb29scyBwYXJhbXNcbiAgICBjdXJyZW50ID0gY2F0IGN1cnJlbnQsIFVzZXJQb29sc1xuICAgIGlmIE5leHRUb2tlblxuICAgICAgYXdhaXQgcG9vbExpc3QgY3VycmVudCwgTmV4dFRva2VuXG4gICAgZWxzZVxuICAgICAgY3VycmVudFxuXG4gIHBvb2xIZWFkID0gKG5hbWUpIC0+XG4gICAgW3Bvb2xdID0gY29sbGVjdCB3aGVyZSBOYW1lOiBuYW1lLCBhd2FpdCBwb29sTGlzdCgpXG4gICAgaWYgcG9vbCB0aGVuIHBvb2wgZWxzZSBmYWxzZVxuXG4gIHBvb2xHZXQgPSAobmFtZSkgLT5cbiAgICB7SWR9ID0gYXdhaXQgcG9vbEhlYWQgbmFtZVxuICAgIGlmICFJZFxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgZWxzZVxuICAgICAge1VzZXJQb29sfSA9IGF3YWl0IGNvZy5kZXNjcmliZVVzZXJQb29sIFVzZXJQb29sSWQ6IElkXG4gICAgICBVc2VyUG9vbFxuXG4gIGNsaWVudExpc3QgPSAoVXNlclBvb2xJZCwgY3VycmVudD1bXSwgdG9rZW4pIC0+XG4gICAgcGFyYW1zID0ge1xuICAgICAgVXNlclBvb2xJZFxuICAgICAgTWF4UmVzdWx0czogNjBcbiAgICB9XG4gICAgcGFyYW1zLk5leHRUb2tlbiA9IHRva2VuIGlmIHRva2VuXG4gICAge1VzZXJQb29sQ2xpZW50cywgTmV4dFRva2VufSA9IGF3YWl0IGNvZy5saXN0VXNlclBvb2xDbGllbnRzIHBhcmFtc1xuICAgIGN1cnJlbnQgPSBjYXQgY3VycmVudCwgVXNlclBvb2xDbGllbnRzXG4gICAgaWYgTmV4dFRva2VuXG4gICAgICBhd2FpdCBjbGllbnRMaXN0IFVzZXJQb29sSWQsIGN1cnJlbnQsIE5leHRUb2tlblxuICAgIGVsc2VcbiAgICAgIGN1cnJlbnRcblxuICBjbGllbnRIZWFkID0gKFVzZXJQb29sT3ZlcmxvYWQsIENsaWVudE5hbWUpIC0+XG4gICAgaWYgQ2xpZW50TmFtZVxuICAgICAgSWQgPSBVc2VyUG9vbE92ZXJsb2FkXG4gICAgZWxzZVxuICAgICAgQ2xpZW50TmFtZSA9IFVzZXJQb29sTmFtZSA9IFVzZXJQb29sT3ZlcmxvYWRcbiAgICAgIHtJZH0gPSBhd2FpdCBwb29sSGVhZCBVc2VyUG9vbE5hbWVcblxuICAgIGlmICFJZFxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgZWxzZVxuICAgICAgW2NsaWVudF0gPSBjb2xsZWN0IHdoZXJlIHtDbGllbnROYW1lfSwgYXdhaXQgY2xpZW50TGlzdChJZClcbiAgICAgIGlmIGNsaWVudCB0aGVuIGNsaWVudCBlbHNlIGZhbHNlXG5cbiAgY2xpZW50R2V0ID0gKHVzZXJQb29sTmFtZSwgY2xpZW50TmFtZSkgLT5cbiAgICBjbGllbnROYW1lIHx8PSB1c2VyUG9vbE5hbWVcbiAgICB7VXNlclBvb2xJZCwgQ2xpZW50SWR9ID0gYXdhaXQgY2xpZW50SGVhZCB1c2VyUG9vbE5hbWUsIGNsaWVudE5hbWVcbiAgICBpZiBDbGllbnRJZFxuICAgICAge1VzZXJQb29sQ2xpZW50fSA9IGF3YWl0IGNvZy5kZXNjcmliZVVzZXJQb29sQ2xpZW50IHtVc2VyUG9vbElkLCBDbGllbnRJZH1cbiAgICAgIFVzZXJQb29sQ2xpZW50XG4gICAgZWxzZVxuICAgICAgZmFsc2VcblxuXG4gIHtwb29sTGlzdCwgcG9vbEhlYWQsIHBvb2xHZXQsIGNsaWVudExpc3QsIGNsaWVudEhlYWQsIGNsaWVudEdldH1cblxuXG5leHBvcnQgZGVmYXVsdCBjb2duaXRvUHJpbWl0aXZlXG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceURL=primitives/cognito.coffee |
@@ -6,8 +6,15 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _fairmont = require("fairmont"); | ||
var _pandaGarden = require("panda-garden"); | ||
var _pandaParchment = require("panda-parchment"); | ||
var _pandaGenerics = require("panda-generics"); | ||
var _pandaRiver = require("panda-river"); | ||
var _utils = require("./utils"); | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _lift = require("../lift"); | ||
@@ -18,18 +25,20 @@ // Primitives for the service DynamoDB. | ||
// prefixed "table*", whereas item methods will have no prefix. | ||
var dynamodbPrimative, | ||
var dynamodbPrimitive, | ||
indexOf = [].indexOf; | ||
dynamodbPrimative = function (_AWS) { | ||
var _areIndexesReady, _catCurrent, _delimiter, _isTableReady, _mark, _parseConditional, _parseName, _parseQuery, _qv, _setupCurrent, _transform, db, del, get, keysFilter, parse, put, query, qv, scan, tableCreate, tableDel, tableEmpty, tableGet, tableUpdate, tableWaitForDeleted, tableWaitForReady, to, update; | ||
({ | ||
DynamoDB: db | ||
} = _AWS); | ||
//=========================================================================== | ||
// Tables | ||
//=========================================================================== | ||
tableGet = (() => { | ||
var _ref = _asyncToGenerator(function* (name) { | ||
dynamodbPrimitive = function (SDK) { | ||
return function (configuration) { | ||
var _areIndexesReady, _catCurrent, _delimiter, _isTableReady, _mark, _parseConditional, _parseName, _parseQuery, _qv, _setupCurrent, _transform, db, del, get, keysFilter, parse, put, query, qv, scan, tableCreate, tableDel, tableEmpty, tableGet, tableUpdate, tableWaitForDeleted, tableWaitForReady, to, update; | ||
db = (0, _lift.applyConfiguration)(configuration, SDK.DynamoDB); //=========================================================================== | ||
// Tables | ||
//=========================================================================== | ||
tableGet = async function (name) { | ||
var Table, e; | ||
try { | ||
({ Table } = yield db.describeTable({ | ||
({ | ||
Table | ||
} = await db.describeTable({ | ||
TableName: name | ||
@@ -42,10 +51,5 @@ })); | ||
} | ||
}); | ||
}; | ||
return function tableGet(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
})(); | ||
tableCreate = (() => { | ||
var _ref2 = _asyncToGenerator(function* (name, keys, attributes, throughput, options = {}) { | ||
tableCreate = async function (name, keys, attributes, throughput, options = {}) { | ||
var TableDescription, p; | ||
@@ -58,12 +62,9 @@ p = { | ||
}; | ||
({ TableDescription } = yield db.createTable((0, _fairmont.merge)(p, options))); | ||
({ | ||
TableDescription | ||
} = await db.createTable((0, _pandaParchment.merge)(p, options))); | ||
return TableDescription; | ||
}); | ||
}; | ||
return function tableCreate(_x2, _x3, _x4, _x5) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
})(); | ||
tableUpdate = (() => { | ||
var _ref3 = _asyncToGenerator(function* (name, attributes, throughput, options = {}) { | ||
tableUpdate = async function (name, attributes, throughput, options = {}) { | ||
var TableDescription, p; | ||
@@ -74,18 +75,18 @@ p = { | ||
}; | ||
if (throughput) { | ||
p.ProvisionedThroughput = throughput; | ||
} | ||
({ TableDescription } = yield db.updateTable((0, _fairmont.merge)(p, options))); | ||
({ | ||
TableDescription | ||
} = await db.updateTable((0, _pandaParchment.merge)(p, options))); | ||
return TableDescription; | ||
}); | ||
}; | ||
return function tableUpdate(_x6, _x7, _x8) { | ||
return _ref3.apply(this, arguments); | ||
}; | ||
})(); | ||
tableDel = (() => { | ||
var _ref4 = _asyncToGenerator(function* (name) { | ||
tableDel = async function (name) { | ||
var e; | ||
try { | ||
return yield db.deleteTable({ | ||
return await db.deleteTable({ | ||
TableName: name | ||
@@ -97,17 +98,16 @@ }); | ||
} | ||
}); | ||
}; | ||
return function tableDel(_x9) { | ||
return _ref4.apply(this, arguments); | ||
}; | ||
})(); | ||
_isTableReady = (() => { | ||
var _ref5 = _asyncToGenerator(function* (name) { | ||
_isTableReady = async function (name) { | ||
var TableStatus; | ||
while (true) { | ||
({ TableStatus } = yield tableGet(name)); | ||
({ | ||
TableStatus | ||
} = await tableGet(name)); | ||
if (!TableStatus) { | ||
throw new Error(`Cannot find table ${name}`); | ||
} else if (TableStatus !== "ACTIVE") { | ||
yield (0, _fairmont.sleep)(5000); | ||
await (0, _pandaParchment.sleep)(5000); | ||
} else { | ||
@@ -117,252 +117,277 @@ return true; | ||
} | ||
}); | ||
}; | ||
return function _isTableReady(_x10) { | ||
return _ref5.apply(this, arguments); | ||
}; | ||
})(); | ||
_areIndexesReady = (() => { | ||
var _ref6 = _asyncToGenerator(function* (name) { | ||
_areIndexesReady = async function (name) { | ||
var indexes, statuses; | ||
while (true) { | ||
({ | ||
GlobalSecondaryIndexes: indexes | ||
} = yield tableGet(name)); | ||
} = await tableGet(name)); | ||
if (!indexes) { | ||
return true; | ||
} | ||
statuses = (0, _fairmont.collect)((0, _fairmont.project)("IndexStatus", indexes)); | ||
if ((0, _fairmont.empty)((0, _fairmont.difference)(statuses, ["ACTIVE"]))) { | ||
statuses = (0, _pandaRiver.collect)((0, _pandaRiver.project)("IndexStatus", indexes)); | ||
if ((0, _pandaParchment.empty)((0, _pandaParchment.difference)(statuses, ["ACTIVE"]))) { | ||
return true; | ||
} else { | ||
yield (0, _fairmont.sleep)(5000); | ||
await (0, _pandaParchment.sleep)(5000); | ||
} | ||
} | ||
}); | ||
}; // The optional second parameter allows the developer to also wait on all global secondary indexes to also be ready. | ||
return function _areIndexesReady(_x11) { | ||
return _ref6.apply(this, arguments); | ||
}; | ||
})(); | ||
// The optional second parameter allows the developer to also wait on all global secondary indexes to also be ready. | ||
tableWaitForReady = (() => { | ||
var _ref7 = _asyncToGenerator(function* (name, indexWait) { | ||
tableWaitForReady = async function (name, indexWait) { | ||
var checks; | ||
checks = [_isTableReady(name)]; | ||
if (indexWait) { | ||
checks.push(_areIndexesReady(name)); | ||
} | ||
return yield Promise.all(checks); | ||
}); | ||
return function tableWaitForReady(_x12, _x13) { | ||
return _ref7.apply(this, arguments); | ||
return await Promise.all(checks); | ||
}; | ||
})(); | ||
tableWaitForDeleted = (() => { | ||
var _ref8 = _asyncToGenerator(function* (name) { | ||
tableWaitForDeleted = async function (name) { | ||
var TableStatus; | ||
while (true) { | ||
({ TableStatus } = yield tableGet(name)); | ||
({ | ||
TableStatus | ||
} = await tableGet(name)); | ||
if (!TableStatus) { | ||
return true; | ||
} else { | ||
yield (0, _fairmont.sleep)(5000); | ||
await (0, _pandaParchment.sleep)(5000); | ||
} | ||
} | ||
}; // TODO: make this more efficient by throttling to X connections at once. AWS | ||
// only supports N requests per second from an account, and I don't want this | ||
// to violate that limit, but we can do better than one at a time. | ||
keysFilter = (0, _pandaGarden.curry)(function (keys, item) { | ||
var f; | ||
f = function (key) { | ||
return indexOf.call(keys, key) >= 0; | ||
}; | ||
return (0, _pandaParchment.pick)(f, item); | ||
}); | ||
return function tableWaitForDeleted(_x14) { | ||
return _ref8.apply(this, arguments); | ||
}; | ||
})(); | ||
// TODO: make this more efficient by throttling to X connections at once. AWS | ||
// only supports N requests per second from an account, and I don't want this | ||
// to violate that limit, but we can do better than one at a time. | ||
keysFilter = (0, _fairmont.curry)(function (keys, item) { | ||
var f; | ||
f = function (key) { | ||
return indexOf.call(keys, key) >= 0; | ||
}; | ||
return (0, _fairmont.pick)(f, item); | ||
}); | ||
tableEmpty = (() => { | ||
var _ref9 = _asyncToGenerator(function* (name) { | ||
tableEmpty = async function (name) { | ||
var Items, KeySchema, filter, i, j, len, results1; | ||
({ KeySchema } = yield tableGet(name)); | ||
filter = keysFilter((0, _fairmont.collect)((0, _fairmont.project)("AttributeName", KeySchema))); | ||
({ Items } = yield scan(name)); | ||
({ | ||
KeySchema | ||
} = await tableGet(name)); | ||
filter = keysFilter((0, _pandaRiver.collect)((0, _pandaRiver.project)("AttributeName", KeySchema))); | ||
({ | ||
Items | ||
} = await scan(name)); | ||
results1 = []; | ||
for (j = 0, len = Items.length; j < len; j++) { | ||
i = Items[j]; | ||
results1.push((yield del(name, filter(i)))); | ||
results1.push((await del(name, filter(i)))); | ||
} | ||
return results1; | ||
}); | ||
}; //=========================================================================== | ||
// Type Helpers | ||
//=========================================================================== | ||
// DynamoDB includes type information mapped into its data strctures. | ||
// It expects data to be input that way, and includes it when fetched. | ||
// These helpers write and parse that type system. | ||
return function tableEmpty(_x15) { | ||
return _ref9.apply(this, arguments); | ||
}; | ||
})(); | ||
//=========================================================================== | ||
// Type Helpers | ||
//=========================================================================== | ||
// DynamoDB includes type information mapped into its data strctures. | ||
// It expects data to be input that way, and includes it when fetched. | ||
// These helpers write and parse that type system. | ||
_transform = function (f) { | ||
return function (x) { | ||
var k, out, v; | ||
if ((0, _fairmont.isObject)(x)) { | ||
out = {}; | ||
for (k in x) { | ||
v = x[k]; | ||
out[k] = _mark("anyonymousDynamodbValue", f(v)); | ||
_transform = function (f) { | ||
return function (x) { | ||
var k, out, v; | ||
if ((0, _pandaParchment.isObject)(x)) { | ||
out = {}; | ||
for (k in x) { | ||
v = x[k]; | ||
out[k] = _mark("anyonymousDynamodbValue", f(v)); | ||
} | ||
return _mark("namedDynamodbValue", out); | ||
} else { | ||
return _mark("anyonymousDynamodbValue", f(x)); | ||
} | ||
return _mark("namedDynamodbValue", out); | ||
} else { | ||
return _mark("anyonymousDynamodbValue", f(x)); | ||
} | ||
}; | ||
}; | ||
}; | ||
_mark = function (name, object) { | ||
return Object.defineProperty(object, "name", { | ||
value: name | ||
}); | ||
}; | ||
to = { | ||
S: _transform(function (s) { | ||
return { | ||
S: s.toString() | ||
}; | ||
}), | ||
N: _transform(function (n) { | ||
return { | ||
N: n.toString() | ||
}; | ||
}), | ||
B: _transform(function (b) { | ||
return { | ||
B: b.toString("base64") | ||
}; | ||
}), | ||
SS: _transform(function (a) { | ||
var i; | ||
return { | ||
SS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString()); | ||
} | ||
return results1; | ||
}() | ||
}; | ||
}), | ||
NS: _transform(function (a) { | ||
var i; | ||
return { | ||
NS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString()); | ||
} | ||
return results1; | ||
}() | ||
}; | ||
}), | ||
BS: _transform(function (a) { | ||
var i; | ||
return { | ||
BS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString("base64")); | ||
} | ||
return results1; | ||
}() | ||
}; | ||
}), | ||
M: _transform(function (m) { | ||
return { | ||
M: m | ||
}; | ||
}), | ||
L: _transform(function (l) { | ||
return { | ||
L: l | ||
}; | ||
}), | ||
Null: _transform(function (n) { | ||
return { | ||
NULL: n | ||
}; | ||
}), | ||
Bool: _transform(function (b) { | ||
return { | ||
BOOL: b | ||
}; | ||
}) | ||
}; | ||
parse = function (attributes) { | ||
var dataType, i, name, result, typeObj, v; | ||
result = {}; | ||
for (name in attributes) { | ||
typeObj = attributes[name]; | ||
dataType = (0, _fairmont.first)((0, _fairmont.keys)(typeObj)); | ||
v = (0, _fairmont.first)((0, _fairmont.values)(typeObj)); | ||
result[name] = function () { | ||
var j, len, len1, q, results1, results2; | ||
switch (dataType) { | ||
case "S": | ||
case "SS": | ||
case "L": | ||
case "BOOL": | ||
return v; | ||
case "N": | ||
return new Number(v); | ||
case "B": | ||
return Buffer.from(v, "base64"); | ||
case "NS": | ||
_mark = function (name, object) { | ||
return Object.defineProperty(object, "name", { | ||
value: name | ||
}); | ||
}; | ||
to = { | ||
S: _transform(function (s) { | ||
return { | ||
S: s.toString() | ||
}; | ||
}), | ||
N: _transform(function (n) { | ||
return { | ||
N: n.toString() | ||
}; | ||
}), | ||
B: _transform(function (b) { | ||
return { | ||
B: b.toString("base64") | ||
}; | ||
}), | ||
SS: _transform(function (a) { | ||
var i; | ||
return { | ||
SS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = v.length; j < len; j++) { | ||
i = v[j]; | ||
results1.push(new Number(i)); | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString()); | ||
} | ||
return results1; | ||
case "BS": | ||
results2 = []; | ||
for (q = 0, len1 = v.length; q < len1; q++) { | ||
i = v[q]; | ||
results2.push(Buffer.from(i, "base64")); | ||
}() | ||
}; | ||
}), | ||
NS: _transform(function (a) { | ||
var i; | ||
return { | ||
NS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString()); | ||
} | ||
return results2; | ||
case "NULL": | ||
if (v) { | ||
return null; | ||
} else { | ||
return void 0; | ||
return results1; | ||
}() | ||
}; | ||
}), | ||
BS: _transform(function (a) { | ||
var i; | ||
return { | ||
BS: function () { | ||
var j, len, results1; | ||
results1 = []; | ||
for (j = 0, len = a.length; j < len; j++) { | ||
i = a[j]; | ||
results1.push(i.toString("base64")); | ||
} | ||
break; | ||
case "M": | ||
return parse(v); | ||
default: | ||
throw new Error(`Unable to parse object for DynamoDB attribute type. ${dataType}`); | ||
} | ||
}(); | ||
} | ||
return result; | ||
}; | ||
//=========================================================================== | ||
// Items | ||
//=========================================================================== | ||
get = (() => { | ||
var _ref10 = _asyncToGenerator(function* (name, key, options = {}) { | ||
return results1; | ||
}() | ||
}; | ||
}), | ||
M: _transform(function (m) { | ||
return { | ||
M: m | ||
}; | ||
}), | ||
L: _transform(function (l) { | ||
return { | ||
L: l | ||
}; | ||
}), | ||
Null: _transform(function (n) { | ||
return { | ||
NULL: n | ||
}; | ||
}), | ||
Bool: _transform(function (b) { | ||
return { | ||
BOOL: b | ||
}; | ||
}) | ||
}; | ||
parse = function (attributes) { | ||
var dataType, i, name, result, typeObj, v; | ||
result = {}; | ||
for (name in attributes) { | ||
typeObj = attributes[name]; | ||
dataType = (0, _pandaParchment.first)((0, _pandaParchment.keys)(typeObj)); | ||
v = (0, _pandaParchment.first)((0, _pandaParchment.values)(typeObj)); | ||
result[name] = function () { | ||
var j, len, len1, q, results1, results2; | ||
switch (dataType) { | ||
case "S": | ||
case "SS": | ||
case "L": | ||
case "BOOL": | ||
return v; | ||
case "N": | ||
return new Number(v); | ||
case "B": | ||
return Buffer.from(v, "base64"); | ||
case "NS": | ||
results1 = []; | ||
for (j = 0, len = v.length; j < len; j++) { | ||
i = v[j]; | ||
results1.push(new Number(i)); | ||
} | ||
return results1; | ||
case "BS": | ||
results2 = []; | ||
for (q = 0, len1 = v.length; q < len1; q++) { | ||
i = v[q]; | ||
results2.push(Buffer.from(i, "base64")); | ||
} | ||
return results2; | ||
case "NULL": | ||
if (v) { | ||
return null; | ||
} else { | ||
return void 0; | ||
} | ||
break; | ||
case "M": | ||
return parse(v); | ||
default: | ||
throw new Error(`Unable to parse object for DynamoDB attribute type. ${dataType}`); | ||
} | ||
}(); | ||
} | ||
return result; | ||
}; //=========================================================================== | ||
// Items | ||
//=========================================================================== | ||
get = async function (name, key, options = {}) { | ||
var ConsumedCapacity, Item, ReturnConsumedCapacity, p; | ||
({ ReturnConsumedCapacity } = options); | ||
({ | ||
ReturnConsumedCapacity | ||
} = options); | ||
p = { | ||
@@ -372,16 +397,18 @@ TableName: name, | ||
}; | ||
({ Item, ConsumedCapacity } = yield db.getItem((0, _fairmont.merge)(p, options))); | ||
({ | ||
Item, | ||
ConsumedCapacity | ||
} = await db.getItem((0, _pandaParchment.merge)(p, options))); | ||
if (ReturnConsumedCapacity) { | ||
return { Item, ConsumedCapacity }; | ||
return { | ||
Item, | ||
ConsumedCapacity | ||
}; | ||
} else { | ||
return Item; | ||
} | ||
}); | ||
}; | ||
return function get(_x16, _x17) { | ||
return _ref10.apply(this, arguments); | ||
}; | ||
})(); | ||
put = (() => { | ||
var _ref11 = _asyncToGenerator(function* (name, item, options = {}) { | ||
put = async function (name, item, options = {}) { | ||
var p; | ||
@@ -392,11 +419,6 @@ p = { | ||
}; | ||
return yield db.putItem((0, _fairmont.merge)(p, options)); | ||
}); | ||
return await db.putItem((0, _pandaParchment.merge)(p, options)); | ||
}; | ||
return function put(_x18, _x19) { | ||
return _ref11.apply(this, arguments); | ||
}; | ||
})(); | ||
del = (() => { | ||
var _ref12 = _asyncToGenerator(function* (name, key, options = {}) { | ||
del = async function (name, key, options = {}) { | ||
var p; | ||
@@ -407,132 +429,161 @@ p = { | ||
}; | ||
return yield db.deleteItem((0, _fairmont.merge)(p, options)); | ||
}); | ||
return await db.deleteItem((0, _pandaParchment.merge)(p, options)); | ||
}; //=========================================================================== | ||
// Queries and Scans against Tables and Indexes | ||
//=========================================================================== | ||
return function del(_x20, _x21) { | ||
return _ref12.apply(this, arguments); | ||
_delimiter = "<###SUNDOGDYNAMODB###>"; | ||
_setupCurrent = function () { | ||
return { | ||
Items: [], | ||
Count: 0, | ||
ScannedCount: 0, | ||
LastEvaluatedKey: false, | ||
ConsumedCapacity: [] | ||
}; | ||
}; | ||
})(); | ||
//=========================================================================== | ||
// Queries and Scans against Tables and Indexes | ||
//=========================================================================== | ||
_delimiter = "<###SUNDOGDYNAMODB###>"; | ||
_setupCurrent = function () { | ||
return { | ||
Items: [], | ||
Count: 0, | ||
ScannedCount: 0, | ||
LastEvaluatedKey: false, | ||
ConsumedCapacity: [] | ||
_catCurrent = function (current, results) { | ||
var ConsumedCapacity, Count, Items, LastEvaluatedKey, ScannedCount; | ||
({ | ||
Items, | ||
Count, | ||
ScannedCount, | ||
LastEvaluatedKey, | ||
ConsumedCapacity | ||
} = results); | ||
current.Items = (0, _pandaParchment.cat)(current.Items, Items); | ||
current.Count += Count; | ||
current.ScannedCount += ScannedCount; | ||
if (LastEvaluatedKey) { | ||
current.LastEvaluatedKey = LastEvaluatedKey; | ||
} | ||
current.ConsumedCapacity = current.ConsumedCapacity.push(ConsumedCapacity); | ||
return current; | ||
}; | ||
}; | ||
_catCurrent = function (current, results) { | ||
var ConsumedCapacity, Count, Items, LastEvaluatedKey, ScannedCount; | ||
({ Items, Count, ScannedCount, LastEvaluatedKey, ConsumedCapacity } = results); | ||
current.Items = (0, _fairmont.cat)(current.Items, Items); | ||
current.Count += Count; | ||
current.ScannedCount += ScannedCount; | ||
if (LastEvaluatedKey) { | ||
current.LastEvaluatedKey = LastEvaluatedKey; | ||
} | ||
current.ConsumedCapacity = current.ConsumedCapacity.push(ConsumedCapacity); | ||
return current; | ||
}; | ||
_parseName = function (name) { | ||
var parts; | ||
if (!name) { | ||
throw new Error("Must provide table name."); | ||
} | ||
parts = name.split(":"); | ||
if (parts.length > 1) { | ||
_parseName = function (name) { | ||
var parts; | ||
if (!name) { | ||
throw new Error("Must provide table name."); | ||
} | ||
parts = name.split(":"); | ||
if (parts.length > 1) { | ||
return { | ||
tableName: parts[0], | ||
indexName: parts[1] | ||
}; | ||
} else { | ||
return { | ||
tableName: name, | ||
indexName: false | ||
}; | ||
} | ||
}; | ||
_parseConditional = function (ex, count = 0) { | ||
var Values, re, result; | ||
if (!ex) { | ||
return { | ||
result: false, | ||
values: false, | ||
count | ||
}; | ||
} | ||
Values = {}; | ||
re = new RegExp(`${_delimiter}.+?${_delimiter}`, "g"); | ||
result = ex.replace(re, function (match) { | ||
var obj, placeholder; | ||
[, obj] = match.split(_delimiter); | ||
placeholder = `:param${count}`; | ||
count++; | ||
Values[placeholder] = JSON.parse(obj); | ||
return placeholder; // Return placeholder to the expression we are processing. | ||
}); | ||
return { | ||
tableName: parts[0], | ||
indexName: parts[1] | ||
result, | ||
values: Values, | ||
count | ||
}; | ||
} else { | ||
return { | ||
tableName: name, | ||
indexName: false | ||
}; | ||
} | ||
}; | ||
_parseConditional = function (ex, count = 0) { | ||
var Values, re, result; | ||
if (!ex) { | ||
return { | ||
result: false, | ||
values: false, | ||
}; | ||
_parseQuery = function (options, name, keyEx, filterEx) { | ||
var count, filter, filterValues, indexName, key, keyValues, out, tableName; | ||
({ | ||
tableName, | ||
indexName | ||
} = _parseName(name)); | ||
({ | ||
result: key, | ||
values: keyValues, | ||
count | ||
} = _parseConditional(keyEx)); | ||
({ | ||
result: filter, | ||
values: filterValues | ||
} = _parseConditional(filterEx, count)); | ||
out = options; | ||
out.TableName = tableName; | ||
if (indexName) { | ||
out.IndexName = indexName; | ||
} | ||
if (key) { | ||
out.KeyConditionExpression = key; | ||
} | ||
if (filter) { | ||
out.FilterExpression = filter; | ||
} | ||
if (keyValues || filterValues) { | ||
out.ExpressionAttributeValues = (0, _pandaParchment.merge)(keyValues || {}, filterValues || {}); | ||
} | ||
return out; | ||
}; // qv produces query strings with delimited values SunDog can parse. | ||
_qv = function (o) { | ||
var delimit; | ||
delimit = function (s) { | ||
return `${_delimiter}${s}${_delimiter}`; | ||
}; // Determine if this is a DynamoDB value, and whether is anyonymous or named. | ||
if (o.name === "anyonymousDynamodbValue") { | ||
return delimit(JSON.stringify(o)); | ||
} else if (o.name === "namedDynamodbValue") { | ||
return delimit(JSON.stringify((0, _pandaParchment.first)((0, _pandaParchment.values)(o)))); | ||
} else { | ||
throw new Error(`Unable to create stringified query value for unrecongied object ${JSON.stringify(o)}`); | ||
} | ||
}; | ||
qv = _pandaGenerics.Method.create(); | ||
_pandaGenerics.Method.define(qv, _pandaParchment.isFunction, function (f) { | ||
return function (x) { | ||
return _qv(f(x)); | ||
}; | ||
} | ||
Values = {}; | ||
re = new RegExp(`${_delimiter}.+?${_delimiter}`, "g"); | ||
result = ex.replace(re, function (match) { | ||
var obj, placeholder; | ||
[, obj] = match.split(_delimiter); | ||
placeholder = `:param${count}`; | ||
count++; | ||
Values[placeholder] = JSON.parse(obj); | ||
return placeholder; // Return placeholder to the expression we are processing. | ||
}); | ||
return { | ||
result, | ||
values: Values, | ||
count | ||
}; | ||
}; | ||
_parseQuery = function (options, name, keyEx, filterEx) { | ||
var count, filter, filterValues, indexName, key, keyValues, out, tableName; | ||
({ tableName, indexName } = _parseName(name)); | ||
({ | ||
result: key, | ||
values: keyValues, | ||
count | ||
} = _parseConditional(keyEx)); | ||
({ | ||
result: filter, | ||
values: filterValues | ||
} = _parseConditional(filterEx, count)); | ||
out = options; | ||
out.TableName = tableName; | ||
if (indexName) { | ||
out.IndexName = indexName; | ||
} | ||
if (key) { | ||
out.KeyConditionExpression = key; | ||
} | ||
if (filter) { | ||
out.FilterExpression = filter; | ||
} | ||
if (keyValues || filterValues) { | ||
out.ExpressionAttributeValues = (0, _fairmont.merge)(keyValues || {}, filterValues || {}); | ||
} | ||
return out; | ||
}; | ||
// qv produces query strings with delimited values SunDog can parse. | ||
_qv = function (o) { | ||
var delimit; | ||
delimit = function (s) { | ||
return `${_delimiter}${s}${_delimiter}`; | ||
}; | ||
// Determine if this is a DynamoDB value, and whether is anyonymous or named. | ||
if (o.name === "anyonymousDynamodbValue") { | ||
return delimit(JSON.stringify(o)); | ||
} else if (o.name === "namedDynamodbValue") { | ||
return delimit(JSON.stringify((0, _fairmont.first)((0, _fairmont.values)(o)))); | ||
} else { | ||
throw new Error(`Unable to create stringified query value for unrecongied object ${JSON.stringify(o)}`); | ||
} | ||
}; | ||
qv = _fairmont.Method.create(); | ||
_fairmont.Method.define(qv, _fairmont.isFunction, function (f) { | ||
return function (x) { | ||
return _qv(f(x)); | ||
}; | ||
}); | ||
_fairmont.Method.define(qv, _fairmont.isObject, function (o) { | ||
return _qv(o); | ||
}); | ||
update = (() => { | ||
var _ref13 = _asyncToGenerator(function* (name, key, updateEx, options = {}) { | ||
var p, result; | ||
_pandaGenerics.Method.define(qv, _pandaParchment.isObject, function (o) { | ||
return _qv(o); | ||
}); | ||
update = async function (name, key, updateEx, options = {}) { | ||
var _values, p, result; | ||
p = { | ||
@@ -542,75 +593,106 @@ TableName: name, | ||
}; | ||
({ result, values: _fairmont.values } = _parseConditional(updateEx)); | ||
({ | ||
result, | ||
values: _values | ||
} = _parseConditional(updateEx)); | ||
if (result) { | ||
options.UpdateExpression = result; | ||
} | ||
if (_fairmont.values) { | ||
options.ExpressionAttributeValues = _fairmont.values; | ||
if (_values) { | ||
options.ExpressionAttributeValues = _values; | ||
} | ||
return yield db.updateItem((0, _fairmont.merge)(p, options)); | ||
}); | ||
return function update(_x22, _x23, _x24) { | ||
return _ref13.apply(this, arguments); | ||
return await db.updateItem((0, _pandaParchment.merge)(p, options)); | ||
}; | ||
})(); | ||
query = (() => { | ||
var _ref14 = _asyncToGenerator(function* (name, keyEx, filterEx, options = {}, current) { | ||
query = async function (name, keyEx, filterEx, options = {}, current) { | ||
var p, results; | ||
if (!current) { | ||
current = _setupCurrent(); | ||
} | ||
if (!current.options) { | ||
current.options = options = _parseQuery(options, name, keyEx, filterEx); | ||
} else { | ||
({ options } = current); | ||
({ | ||
options | ||
} = current); | ||
} | ||
p = {}; | ||
if (current.LastEvaluatedKey) { | ||
p.ExclusiveStartKey = current.LastEvaluatedKey; | ||
} | ||
results = yield db.query((0, _fairmont.merge)(p, options)); | ||
results = await db.query((0, _pandaParchment.merge)(p, options)); | ||
current = _catCurrent(current, results); | ||
if (!results.LastEvaluatedKey || options.Limit) { | ||
return current; | ||
} else { | ||
return yield query(name, keyEx, filterEx, options, current); | ||
return await query(name, keyEx, filterEx, options, current); | ||
} | ||
}); | ||
}; | ||
return function query(_x25, _x26, _x27) { | ||
return _ref14.apply(this, arguments); | ||
}; | ||
})(); | ||
scan = (() => { | ||
var _ref15 = _asyncToGenerator(function* (name, filterEx, options = {}, current) { | ||
scan = async function (name, filterEx, options = {}, current) { | ||
var p, results; | ||
if (!current) { | ||
current = _setupCurrent(); | ||
} | ||
if (!current.options) { | ||
current.options = options = _parseQuery(options, name, false, filterEx); | ||
} else { | ||
({ options } = current); | ||
({ | ||
options | ||
} = current); | ||
} | ||
p = {}; | ||
if (current.LastEvaluatedKey) { | ||
p.ExclusiveStartKey = current.LastEvaluatedKey; | ||
} | ||
results = yield db.scan((0, _fairmont.merge)(p, options)); | ||
results = await db.scan((0, _pandaParchment.merge)(p, options)); | ||
current = _catCurrent(current, results); | ||
if (!results.LastEvaluatedKey || options.Limit) { | ||
return current; | ||
} else { | ||
return yield scan(name, filterEx, options, current); | ||
return await scan(name, filterEx, options, current); | ||
} | ||
}); | ||
}; | ||
return function scan(_x28, _x29) { | ||
return _ref15.apply(this, arguments); | ||
return { | ||
tableGet, | ||
tableCreate, | ||
tableUpdate, | ||
tableDel, | ||
tableWaitForReady, | ||
tableWaitForDeleted, | ||
tableEmpty, | ||
keysFilter, | ||
to, | ||
parse, | ||
merge: _pandaParchment.merge, | ||
get, | ||
put, | ||
del, | ||
qv, | ||
update, | ||
query, | ||
scan | ||
}; | ||
})(); | ||
return { tableGet, tableCreate, tableUpdate, tableDel, tableWaitForReady, tableWaitForDeleted, tableEmpty, keysFilter, to, parse, merge: _fairmont.merge, get, put, del, qv, update, query, scan }; | ||
}; | ||
}; | ||
exports.default = dynamodbPrimative; | ||
var _default = dynamodbPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvZHluYW1vZGIuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFWQTs7OztBQUFBLElBQUEsaUJBQUE7QUFBQSxJQUFBLE9BQUEsR0FBQSxHQUFBLE9BQUE7O0FBWUEsaUJBQUEsR0FBb0IsVUFBQSxHQUFBLEVBQUE7U0FDbEIsVUFBQSxhQUFBLEVBQUE7QUFDRSxRQUFBLGdCQUFBLEVBQUEsV0FBQSxFQUFBLFVBQUEsRUFBQSxhQUFBLEVBQUEsS0FBQSxFQUFBLGlCQUFBLEVBQUEsVUFBQSxFQUFBLFdBQUEsRUFBQSxHQUFBLEVBQUEsYUFBQSxFQUFBLFVBQUEsRUFBQSxFQUFBLEVBQUEsR0FBQSxFQUFBLEdBQUEsRUFBQSxVQUFBLEVBQUEsS0FBQSxFQUFBLEdBQUEsRUFBQSxLQUFBLEVBQUEsRUFBQSxFQUFBLElBQUEsRUFBQSxXQUFBLEVBQUEsUUFBQSxFQUFBLFVBQUEsRUFBQSxRQUFBLEVBQUEsV0FBQSxFQUFBLG1CQUFBLEVBQUEsaUJBQUEsRUFBQSxFQUFBLEVBQUEsTUFBQTs7QUFBQSxJQUFBLEVBQUEsR0FBSyw4QkFBQSxhQUFBLEVBQWtDLEdBQUcsQ0FBMUMsUUFBSyxDQUFMLENBREYsQzs7OztBQU1FLElBQUEsUUFBQSxHQUFXLGdCQUFBLElBQUEsRUFBQTtBQUNULFVBQUEsS0FBQSxFQUFBLENBQUE7O0FBQUEsVUFBQTtBQUNFLFNBQUE7QUFBQSxVQUFBO0FBQUEsWUFBVSxNQUFNLEVBQUUsQ0FBRixhQUFBLENBQWlCO0FBQUEsVUFBQSxTQUFBLEVBQVc7QUFBWCxTQUFqQixDQUFoQjtlQURGLEs7QUFBQSxPQUFBLENBQUEsT0FBQSxLQUFBLEVBQUE7QUFHTSxRQUFBLENBQUEsR0FBQSxLQUFBO2VBQ0oscUJBQUEsQ0FBQSxFQUFBLEdBQUEsRUFKRiwyQkFJRSxDOztBQUxPLEtBQVg7O0FBT0EsSUFBQSxXQUFBLEdBQWMsZ0JBQUEs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QUFVLFdBQUEsQ0FBQSxPQUFBLEVBQUEsSUFBQSxFQUFBLEtBQUEsRUFEOUIsUUFDOEIsQ0FBNUI7QUFERixPQUFBLE1BQUE7QUFHRSxTQUFBO0FBQUEsVUFBQTtBQUFBLFlBSEYsT0FHRTs7O0FBRUYsTUFBQSxDQUFBLEdBQUksRUFBSjs7QUFDQSxVQUFrRCxPQUFPLENBQXpELGdCQUFBLEVBQUE7QUFBQSxRQUFBLENBQUMsQ0FBRCxpQkFBQSxHQUFzQixPQUFPLENBQTdCLGdCQUFBOzs7QUFDQSxNQUFBLE9BQUEsR0FBVSxNQUFNLEVBQUUsQ0FBRixJQUFBLENBQVEsMkJBQUEsQ0FBQSxFQUFkLE9BQWMsQ0FBUixDQUFoQjtBQUVBLE1BQUEsT0FBQSxHQUFVLFdBQUEsQ0FBQSxPQUFBLEVBQUEsT0FBQSxDQUFWOztBQUNBLFVBQUcsQ0FBQyxPQUFPLENBQVIsZ0JBQUEsSUFBNkIsT0FBTyxDQUF2QyxLQUFBLEVBQUE7ZUFBQSxPO0FBQUEsT0FBQSxNQUFBO0FBR0UsZUFBQSxNQUFNLElBQUEsQ0FBQSxJQUFBLEVBQUEsUUFBQSxFQUFBLE9BQUEsRUFIUixPQUdRLENBQU47O0FBZkcsS0FBUDs7V0FtQkE7QUFBQSxNQUFBLFFBQUE7QUFBQSxNQUFBLFdBQUE7QUFBQSxNQUFBLFdBQUE7QUFBQSxNQUFBLFFBQUE7QUFBQSxNQUFBLGlCQUFBO0FBQUEsTUFBQSxtQkFBQTtBQUFBLE1BQUEsVUFBQTtBQUFBLE1BQUEsVUFBQTtBQUFBLE1BQUEsRUFBQTtBQUFBLE1BQUEsS0FBQTtBQUEwSCxNQUFBLEtBQTFILEVBQTBILHFCQUExSDtBQUFBLE1BQUEsR0FBQTtBQUFBLE1BQUEsR0FBQTtBQUFBLE1BQUEsR0FBQTtBQUFBLE1BQUEsRUFBQTtBQUFBLE1BQUEsTUFBQTtBQUFBLE1BQUEsS0FBQTtBQUFBLE1BQUE7QUFBQSxLO0FBM1FGLEc7QUFEa0IsQ0FBcEI7O2VBOFFlLGlCIiwic291cmNlc0NvbnRlbnQiOlsiIyBQcmltaXRpdmVzIGZvciB0aGUgc2VydmljZSBEeW5hbW9EQi5cbiMgVGhlIG1haW4gZW50aXRpZXMgYXJlIFRhYmxlcyBhbmQgSXRlbXMuXG4jIFRoaXMgZm9sbG93cyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gdGhhdCBtZXRob2RzIHRoYXQgd29yayBvbiBUYWJsZXMgd2lsbCBiZVxuIyBwcmVmaXhlZCBcInRhYmxlKlwiLCB3aGVyZWFzIGl0ZW0gbWV0aG9kcyB3aWxsIGhhdmUgbm8gcHJlZml4LlxuXG5pbXBvcnQge2N1cnJ5fSBmcm9tIFwicGFuZGEtZ2FyZGVuXCJcbmltcG9ydCB7bWVyZ2UsIHNsZWVwLCBlbXB0eSwgY2F0LCBkaWZmZXJlbmNlLCBmaXJzdCwga2V5cywgdmFsdWVzLCBpc0Z1bmN0aW9uLCBpc09iamVjdCwgcGlja30gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5pbXBvcnQge01ldGhvZH0gZnJvbSBcInBhbmRhLWdlbmVyaWNzXCJcbmltcG9ydCB7Y29sbGVjdCwgcHJvamVjdH0gZnJvbSBcInBhbmRhLXJpdmVyXCJcbmltcG9ydCB7bm90Rm91bmR9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7YXBwbHlDb25maWd1cmF0aW9ufSBmcm9tIFwiLi4vbGlmdFwiXG5cbmR5bmFtb2RiUHJpbWl0aXZlID0gKFNESykgLT5cbiAgKGNvbmZpZ3VyYXRpb24pIC0+XG4gICAgZGIgPSBhcHBseUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgU0RLLkR5bmFtb0RCXG5cbiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIyBUYWJsZXNcbiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgdGFibGVHZXQgPSAobmFtZSkgLT5cbiAgICAgIHRyeVxuICAgICAgICB7VGFibGV9ID0gYXdhaXQgZGIuZGVzY3JpYmVUYWJsZSBUYWJsZU5hbWU6IG5hbWVcbiAgICAgICAgVGFibGVcbiAgICAgIGNhdGNoIGVcbiAgICAgICAgbm90Rm91bmQgZSwgNDAwLCBcIlJlc291cmNlTm90Rm91bmRFeGNlcHRpb25cIlxuXG4gICAgdGFibGVDcmVhdGUgPSAobmFtZSwga2V5cywgYXR0cmlidXRlcywgdGhyb3VnaHB1dCwgb3B0aW9ucz17fSkgLT5cbiAgICAgIHAgPVxuICAgICAgICBUYWJsZU5hbWU6IG5hbWVcbiAgICAgICAgS2V5U2NoZW1hOiBrZXlzXG4gICAgICAgIEF0dHJpYnV0ZURlZmluaXRpb25zOiBhdHRyaWJ1dGVzXG4gICAgICAgIFByb3Zpc2lvbmVkVGhyb3VnaHB1dDogdGhyb3VnaHB1dFxuXG4gICAgICB7VGFibGVEZXNjcmlwdGlvbn09IGF3YWl0IGRiLmNyZWF0ZVRhYmxlIG1lcmdlIHAsIG9wdGlvbnNcbiAgICAgIFRhYmxlRGVzY3JpcHRpb25cblxuICAgIHRhYmxlVXBkYXRlID0gKG5hbWUsIGF0dHJpYnV0ZXMsIHRocm91Z2hwdXQsIG9wdGlvbnM9e30pIC0+XG4gICAgICBwID1cbiAgICAgICAgVGFibGVOYW1lOiBuYW1lXG4gICAgICAgIEF0dHJpYnV0ZURlZmluaXRpb25zOiBhdHRyaWJ1dGVzXG4gICAgICBwLlByb3Zpc2lvbmVkVGhyb3VnaHB1dCA9IHRocm91Z2hwdXQgaWYgdGhyb3VnaHB1dFxuXG4gICAgICB7VGFibGVEZXNjcmlwdGlvbn09IGF3YWl0IGRiLnVwZGF0ZVRhYmxlIG1lcmdlIHAsIG9wdGlvbnNcbiAgICAgIFRhYmxlRGVzY3JpcHRpb25cblxuICAgIHRhYmxlRGVsID0gKG5hbWUpIC0+XG4gICAgICB0cnlcbiAgICAgICAgYXdhaXQgZGIuZGVsZXRlVGFibGUgVGFibGVOYW1lOiBuYW1lXG4gICAgICBjYXRjaCBlXG4gICAgICAgIG5vdEZvdW5kIGVcblxuXG4gICAgX2lzVGFibGVSZWFkeSA9IChuYW1lKSAtPlxuICAgICAgd2hpbGUgdHJ1ZVxuICAgICAgICB7VGFibGVTdGF0dXN9ID0gYXdhaXQgdGFibGVHZXQgbmFtZVxuICAgICAgICBpZiAhVGFibGVTdGF0dXNcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IgXCJDYW5ub3QgZmluZCB0YWJsZSAje25hbWV9XCJcbiAgICAgICAgZWxzZSBpZiBUYWJsZVN0YXR1cyAhPSBcIkFDVElWRVwiXG4gICAgICAgICAgYXdhaXQgc2xlZXAgNTAwMFxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmV0dXJuIHRydWVcblxuICAgIF9hcmVJbmRleGVzUmVhZHkgPSAobmFtZSkgLT5cbiAgICAgIHdoaWxlIHRydWVcbiAgICAgICAge0dsb2JhbFNlY29uZGFyeUluZGV4ZXM6IGluZGV4ZXN9ID0gYXdhaXQgdGFibGVHZXQgbmFtZVxuICAgICAgICByZXR1cm4gdHJ1ZSBpZiAhaW5kZXhlc1xuICAgICAgICBzdGF0dXNlcyA9IGNvbGxlY3QgcHJvamVjdCBcIkluZGV4U3RhdHVzXCIsIGluZGV4ZXNcbiAgICAgICAgaWYgZW1wdHkgZGlmZmVyZW5jZSBzdGF0dXNlcywgW1wiQUNUSVZFXCJdXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF3YWl0IHNsZWVwIDUwMDBcblxuICAgICMgVGhlIG9wdGlvbmFsIHNlY29uZCBwYXJhbWV0ZXIgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gYWxzbyB3YWl0IG9uIGFsbCBnbG9iYWwgc2Vjb25kYXJ5IGluZGV4ZXMgdG8gYWxzbyBiZSByZWFkeS5cbiAgICB0YWJsZVdhaXRGb3JSZWFkeSA9IChuYW1lLCBpbmRleFdhaXQpIC0+XG4gICAgICBjaGVja3MgPSBbX2lzVGFibGVSZWFkeSBuYW1lXVxuICAgICAgY2hlY2tzLnB1c2ggX2FyZUluZGV4ZXNSZWFkeSBuYW1lIGlmIGluZGV4V2FpdFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwgY2hlY2tzXG5cbiAgICB0YWJsZVdhaXRGb3JEZWxldGVkID0gKG5hbWUpIC0+XG4gICAgICB3aGlsZSB0cnVlXG4gICAgICAgIHtUYWJsZVN0YXR1c30gPSBhd2FpdCB0YWJsZUdldCBuYW1lXG4gICAgICAgIGlmICFUYWJsZVN0YXR1c1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhd2FpdCBzbGVlcCA1MDAwXG5cbiAgICAjIFRPRE86IG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudCBieSB0aHJvdHRsaW5nIHRvIFggY29ubmVjdGlvbnMgYXQgb25jZS4gQVdTXG4gICAgIyBvbmx5IHN1cHBvcnRzIE4gcmVxdWVzdHMgcGVyIHNlY29uZCBmcm9tIGFuIGFjY291bnQsIGFuZCBJIGRvbid0IHdhbnQgdGhpc1xuICAgICMgdG8gdmlvbGF0ZSB0aGF0IGxpbWl0LCBidXQgd2UgY2FuIGRvIGJldHRlciB0aGFuIG9uZSBhdCBhIHRpbWUuXG4gICAga2V5c0ZpbHRlciA9IGN1cnJ5IChrZXlzLCBpdGVtKSAtPlxuICAgICAgZiA9IChrZXkpIC0+IGtleSBpbiBrZXlzXG4gICAgICBwaWNrIGYsIGl0ZW1cblxuICAgIHRhYmxlRW1wdHkgPSAobmFtZSkgLT5cbiAgICAgIHtLZXlTY2hlbWF9ID0gYXdhaXQgdGFibGVHZXQgbmFtZVxuICAgICAgZmlsdGVyID0ga2V5c0ZpbHRlciBjb2xsZWN0IHByb2plY3QgXCJBdHRyaWJ1dGVOYW1lXCIsIEtleVNjaGVtYVxuXG4gICAgICB7SXRlbXN9ID0gYXdhaXQgc2NhbiBuYW1lXG4gICAgICBhd2FpdCBkZWwgbmFtZSwgZmlsdGVyKGkpIGZvciBpIGluIEl0ZW1zXG5cbiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIyBUeXBlIEhlbHBlcnNcbiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgIyBEeW5hbW9EQiBpbmNsdWRlcyB0eXBlIGluZm9ybWF0aW9uIG1hcHBlZCBpbnRvIGl0cyBkYXRhIHN0cmN0dXJlcy5cbiAgICAjIEl0IGV4cGVjdHMgZGF0YSB0byBiZSBpbnB1dCB0aGF0IHdheSwgYW5kIGluY2x1ZGVzIGl0IHdoZW4gZmV0Y2hlZC5cbiAgICAjIFRoZXNlIGhlbHBlcnMgd3JpdGUgYW5kIHBhcnNlIHRoYXQgdHlwZSBzeXN0ZW0uXG4gICAgX3RyYW5zZm9ybSA9IChmKSAtPlxuICAgICAgKHgpIC0+XG4gICAgICAgIGlmIGlzT2JqZWN0IHhcbiAgICAgICAgICBvdXQgPSB7fVxuICAgICAgICAgIG91dFtrXSA9IF9tYXJrKFwiYW55b255bW91c0R5bmFtb2RiVmFsdWVcIiwgZiB2KSBmb3IgaywgdiBvZiB4XG4gICAgICAgICAgX21hcmsgXCJuYW1lZER5bmFtb2RiVmFsdWVcIiwgb3V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBfbWFyayBcImFueW9ueW1vdXNEeW5hbW9kYlZhbHVlXCIsIGYgeFxuXG4gICAgX21hcmsgPSAobmFtZSwgb2JqZWN0KSAtPiBPYmplY3QuZGVmaW5lUHJvcGVydHkgb2JqZWN0LCBcIm5hbWVcIiwgdmFsdWU6IG5hbWVcblxuICAgIHRvID1cbiAgICAgIFM6IF90cmFuc2Zvcm0gKHMpIC0+IFM6IHMudG9TdHJpbmcoKVxuICAgICAgTjogX3RyYW5zZm9ybSAobikgLT4gTjogbi50b1N0cmluZygpXG4gICAgICBCOiBfdHJhbnNmb3JtIChiKSAtPiBCOiBiLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICBTUzogX3RyYW5zZm9ybSAoYSkgLT4gU1M6IChpLnRvU3RyaW5nKCkgZm9yIGkgaW4gYSlcbiAgICAgIE5TOiBfdHJhbnNmb3JtIChhKSAtPiBOUzogKGkudG9TdHJpbmcoKSBmb3IgaSBpbiBhKVxuICAgICAgQlM6IF90cmFuc2Zvcm0gKGEpIC0+IEJTOiAoaS50b1N0cmluZyhcImJhc2U2NFwiKSBmb3IgaSBpbiBhKVxuICAgICAgTTogX3RyYW5zZm9ybSAobSkgLT4gTTogbVxuICAgICAgTDogX3RyYW5zZm9ybSAobCkgLT4gTDogbFxuICAgICAgTnVsbDogX3RyYW5zZm9ybSAobikgLT4gTlVMTDogblxuICAgICAgQm9vbDogX3RyYW5zZm9ybSAoYikgLT4gQk9PTDogYlxuXG4gICAgcGFyc2UgPSAoYXR0cmlidXRlcykgLT5cbiAgICAgIHJlc3VsdCA9IHt9XG4gICAgICBmb3IgbmFtZSwgdHlwZU9iaiBvZiBhdHRyaWJ1dGVzXG4gICAgICAgIGRhdGFUeXBlID0gZmlyc3Qga2V5cyB0eXBlT2JqXG4gICAgICAgIHYgPSBmaXJzdCB2YWx1ZXMgdHlwZU9ialxuICAgICAgICByZXN1bHRbbmFtZV0gPSBzd2l0Y2ggZGF0YVR5cGVcbiAgICAgICAgICB3aGVuIFwiU1wiLCBcIlNTXCIsIFwiTFwiLCBcIkJPT0xcIiB0aGVuIHZcbiAgICAgICAgICB3aGVuIFwiTlwiIHRoZW4gbmV3IE51bWJlciB2XG4gICAgICAgICAgd2hlbiBcIkJcIiB0aGVuIEJ1ZmZlci5mcm9tIHYsIFwiYmFzZTY0XCJcbiAgICAgICAgICB3aGVuIFwiTlNcIiB0aGVuIChuZXcgTnVtYmVyIGkgZm9yIGkgaW4gdilcbiAgICAgICAgICB3aGVuIFwiQlNcIiB0aGVuIChCdWZmZXIuZnJvbSBpLCBcImJhc2U2NFwiIGZvciBpIGluIHYpXG4gICAgICAgICAgd2hlbiBcIk5VTExcIlxuICAgICAgICAgICAgaWYgdiB0aGVuIG51bGwgZWxzZSB1bmRlZmluZWRcbiAgICAgICAgICB3aGVuIFwiTVwiIHRoZW4gcGFyc2UgdlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvciBcIlVuYWJsZSB0byBwYXJzZSBvYmplY3QgZm9yIER5bmFtb0RCIGF0dHJpYnV0ZSB0eXBlLiAje2RhdGFUeXBlfVwiXG4gICAgICByZXN1bHRcblxuXG4gICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgICMgSXRlbXNcbiAgICAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgZ2V0ID0gKG5hbWUsIGtleSwgb3B0aW9ucz17fSkgLT5cbiAgICAgIHtSZXR1cm5Db25zdW1lZENhcGFjaXR5fSA9IG9wdGlvbnNcbiAgICAgIHAgPSB7VGFibGVOYW1lOiBuYW1lLCBLZXk6IGtleX1cbiAgICAgIHtJdGVtLCBDb25zdW1lZENhcGFjaXR5fSA9IGF3YWl0IGRiLmdldEl0ZW0gbWVyZ2UgcCwgb3B0aW9uc1xuICAgICAgaWYgUmV0dXJuQ29uc3VtZWRDYXBhY2l0eSB0aGVuIHtJdGVtLCBDb25zdW1lZENhcGFjaXR5fSBlbHNlIEl0ZW1cblxuICAgIHB1dCA9IChuYW1lLCBpdGVtLCBvcHRpb25zPXt9KSAtPlxuICAgICAgcCA9IHtUYWJsZU5hbWU6IG5hbWUsIEl0ZW06IGl0ZW19XG4gICAgICBhd2FpdCBkYi5wdXRJdGVtIG1lcmdlIHAsIG9wdGlvbnNcblxuICAgIGRlbCA9IChuYW1lLCBrZXksIG9wdGlvbnM9e30pIC0+XG4gICAgICBwID0ge1RhYmxlTmFtZTogbmFtZSwgS2V5OiBrZXl9XG4gICAgICBhd2FpdCBkYi5kZWxldGVJdGVtIG1lcmdlIHAsIG9wdGlvbnNcblxuICAgICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAjIFF1ZXJpZXMgYW5kIFNjYW5zIGFnYWluc3QgVGFibGVzIGFuZCBJbmRleGVzXG4gICAgIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIF9kZWxpbWl0ZXIgPSBcIjwjIyNTVU5ET0dEWU5BTU9EQiMjIz5cIlxuICAgIF9zZXR1cEN1cnJlbnQgPSAtPlxuICAgICAgSXRlbXM6IFtdXG4gICAgICBDb3VudDogMFxuICAgICAgU2Nhbm5lZENvdW50OiAwXG4gICAgICBMYXN0RXZhbHVhdGVkS2V5OiBmYWxzZVxuICAgICAgQ29uc3VtZWRDYXBhY2l0eTogW11cblxuICAgIF9jYXRDdXJyZW50ID0gKGN1cnJlbnQsIHJlc3VsdHMpIC0+XG4gICAgICB7SXRlbXMsIENvdW50LCBTY2FubmVkQ291bnQsIExhc3RFdmFsdWF0ZWRLZXksIENvbnN1bWVkQ2FwYWNpdHl9ID0gcmVzdWx0c1xuICAgICAgY3VycmVudC5JdGVtcyA9IGNhdCBjdXJyZW50Lkl0ZW1zLCBJdGVtc1xuICAgICAgY3VycmVudC5Db3VudCArPSBDb3VudFxuICAgICAgY3VycmVudC5TY2FubmVkQ291bnQgKz0gU2Nhbm5lZENvdW50XG4gICAgICBjdXJyZW50Lkxhc3RFdmFsdWF0ZWRLZXkgPSBMYXN0RXZhbHVhdGVkS2V5IGlmIExhc3RFdmFsdWF0ZWRLZXlcbiAgICAgIGN1cnJlbnQuQ29uc3VtZWRDYXBhY2l0eSA9IGN1cnJlbnQuQ29uc3VtZWRDYXBhY2l0eS5wdXNoIENvbnN1bWVkQ2FwYWNpdHlcbiAgICAgIGN1cnJlbnRcblxuICAgIF9wYXJzZU5hbWUgPSAobmFtZSkgLT5cbiAgICAgIHRocm93IG5ldyBFcnJvciBcIk11c3QgcHJvdmlkZSB0YWJsZSBuYW1lLlwiIGlmICFuYW1lXG4gICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQgXCI6XCJcbiAgICAgIGlmIHBhcnRzLmxlbmd0aCA+IDFcbiAgICAgICAge3RhYmxlTmFtZTogcGFydHNbMF0sIGluZGV4TmFtZTogcGFydHNbMV19XG4gICAgICBlbHNlXG4gICAgICAgIHt0YWJsZU5hbWU6IG5hbWUsIGluZGV4TmFtZTogZmFsc2V9XG5cbiAgICBfcGFyc2VDb25kaXRpb25hbCA9IChleCwgY291bnQ9MCkgLT5cbiAgICAgIHJldHVybiB7cmVzdWx0OmZhbHNlLCB2YWx1ZXM6ZmFsc2UsIGNvdW50fSBpZiAhZXhcbiAgICAgIFZhbHVlcyA9IHt9XG4gICAgICByZSA9IG5ldyBSZWdFeHAgXCIje19kZWxpbWl0ZXJ9Lis/I3tfZGVsaW1pdGVyfVwiLCBcImdcIlxuXG4gICAgICByZXN1bHQgPSBleC5yZXBsYWNlIHJlLCAobWF0Y2gpIC0+XG4gICAgICAgIFssIG9ial0gPSBtYXRjaC5zcGxpdCBfZGVsaW1pdGVyXG4gICAgICAgIHBsYWNlaG9sZGVyID0gXCI6cGFyYW0je2NvdW50fVwiXG4gICAgICAgIGNvdW50KytcbiAgICAgICAgVmFsdWVzW3BsYWNlaG9sZGVyXSA9IEpTT04ucGFyc2Ugb2JqXG4gICAgICAgIHBsYWNlaG9sZGVyICMgUmV0dXJuIHBsYWNlaG9sZGVyIHRvIHRoZSBleHByZXNzaW9uIHdlIGFyZSBwcm9jZXNzaW5nLlxuXG4gICAgICB7cmVzdWx0LCB2YWx1ZXM6VmFsdWVzLCBjb3VudH1cblxuICAgIF9wYXJzZVF1ZXJ5ID0gKG9wdGlvbnMsIG5hbWUsIGtleUV4LCBmaWx0ZXJFeCkgLT5cbiAgICAgIHt0YWJsZU5hbWUsIGluZGV4TmFtZX0gPSBfcGFyc2VOYW1lIG5hbWVcbiAgICAgIHtyZXN1bHQ6a2V5LCB2YWx1ZXM6a2V5VmFsdWVzLCBjb3VudH0gPSBfcGFyc2VDb25kaXRpb25hbCBrZXlFeFxuICAgICAge3Jlc3VsdDpmaWx0ZXIsIHZhbHVlczpmaWx0ZXJWYWx1ZXN9ID0gX3BhcnNlQ29uZGl0aW9uYWwgZmlsdGVyRXgsIGNvdW50XG5cbiAgICAgIG91dCA9IG9wdGlvbnNcbiAgICAgIG91dC5UYWJsZU5hbWUgPSB0YWJsZU5hbWVcbiAgICAgIG91dC5JbmRleE5hbWUgPSBpbmRleE5hbWUgaWYgaW5kZXhOYW1lXG4gICAgICBvdXQuS2V5Q29uZGl0aW9uRXhwcmVzc2lvbiA9IGtleSBpZiBrZXlcbiAgICAgIG91dC5GaWx0ZXJFeHByZXNzaW9uID0gZmlsdGVyIGlmIGZpbHRlclxuICAgICAgaWYga2V5VmFsdWVzIHx8IGZpbHRlclZhbHVlc1xuICAgICAgICBvdXQuRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyA9XG4gICAgICAgICAgbWVyZ2UgKGtleVZhbHVlcyB8fCB7fSksIChmaWx0ZXJWYWx1ZXMgfHwge30pXG4gICAgICBvdXRcblxuICAgICMgcXYgcHJvZHVjZXMgcXVlcnkgc3RyaW5ncyB3aXRoIGRlbGltaXRlZCB2YWx1ZXMgU3VuRG9nIGNhbiBwYXJzZS5cbiAgICBfcXYgPSAobykgLT5cbiAgICAgIGRlbGltaXQgPSAocykgLT4gXCIje19kZWxpbWl0ZXJ9I3tzfSN7X2RlbGltaXRlcn1cIlxuICAgICAgIyBEZXRlcm1pbmUgaWYgdGhpcyBpcyBhIER5bmFtb0RCIHZhbHVlLCBhbmQgd2hldGhlciBpcyBhbnlvbnltb3VzIG9yIG5hbWVkLlxuICAgICAgaWYgby5uYW1lID09IFwiYW55b255bW91c0R5bmFtb2RiVmFsdWVcIlxuICAgICAgICBkZWxpbWl0IEpTT04uc3RyaW5naWZ5IG9cbiAgICAgIGVsc2UgaWYgby5uYW1lID09IFwibmFtZWREeW5hbW9kYlZhbHVlXCJcbiAgICAgICAgZGVsaW1pdCBKU09OLnN0cmluZ2lmeSBmaXJzdCB2YWx1ZXMgb1xuICAgICAgZWxzZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IgXCJVbmFibGUgdG8gY3JlYXRlIHN0cmluZ2lmaWVkIHF1ZXJ5IHZhbHVlIGZvciB1bnJlY29uZ2llZCBvYmplY3QgI3tKU09OLnN0cmluZ2lmeSBvfVwiXG5cbiAgICBxdiA9IE1ldGhvZC5jcmVhdGUoKVxuICAgIE1ldGhvZC5kZWZpbmUgcXYsIGlzRnVuY3Rpb24sIChmKSAtPiAoeCkgLT4gX3F2IGYgeFxuICAgIE1ldGhvZC5kZWZpbmUgcXYsIGlzT2JqZWN0LCAobykgLT4gX3F2IG9cblxuICAgIHVwZGF0ZSA9IChuYW1lLCBrZXksIHVwZGF0ZUV4LCBvcHRpb25zPXt9KSAtPlxuICAgICAgcCA9IHtUYWJsZU5hbWU6IG5hbWUsIEtleToga2V5fVxuICAgICAge3Jlc3VsdCwgdmFsdWVzOl92YWx1ZXN9ID0gX3BhcnNlQ29uZGl0aW9uYWwgdXBkYXRlRXhcbiAgICAgIG9wdGlvbnMuVXBkYXRlRXhwcmVzc2lvbiA9IHJlc3VsdCBpZiByZXN1bHRcbiAgICAgIG9wdGlvbnMuRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyA9IF92YWx1ZXMgaWYgX3ZhbHVlc1xuICAgICAgYXdhaXQgZGIudXBkYXRlSXRlbSBtZXJnZSBwLCBvcHRpb25zXG5cbiAgICBxdWVyeSA9IChuYW1lLCBrZXlFeCwgZmlsdGVyRXgsIG9wdGlvbnM9e30sIGN1cnJlbnQpIC0+XG4gICAgICBjdXJyZW50ID0gX3NldHVwQ3VycmVudCgpIGlmICFjdXJyZW50XG4gICAgICBpZiAhY3VycmVudC5vcHRpb25zXG4gICAgICAgIGN1cnJlbnQub3B0aW9ucyA9IG9wdGlvbnMgPSBfcGFyc2VRdWVyeSBvcHRpb25zLCBuYW1lLCBrZXlFeCwgZmlsdGVyRXhcbiAgICAgIGVsc2VcbiAgICAgICAge29wdGlvbnN9ID0gY3VycmVudFxuXG4gICAgICBwID0ge31cbiAgICAgIHAuRXhjbHVzaXZlU3RhcnRLZXkgPSBjdXJyZW50Lkxhc3RFdmFsdWF0ZWRLZXkgaWYgY3VycmVudC5MYXN0RXZhbHVhdGVkS2V5XG4gICAgICByZXN1bHRzID0gYXdhaXQgZGIucXVlcnkgbWVyZ2UgcCwgb3B0aW9uc1xuXG4gICAgICBjdXJyZW50ID0gX2NhdEN1cnJlbnQgY3VycmVudCwgcmVzdWx0c1xuICAgICAgaWYgIXJlc3VsdHMuTGFzdEV2YWx1YXRlZEtleSB8fCBvcHRpb25zLkxpbWl0XG4gICAgICAgIGN1cnJlbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYXdhaXQgcXVlcnkgbmFtZSwga2V5RXgsIGZpbHRlckV4LCBvcHRpb25zLCBjdXJyZW50XG5cbiAgICBzY2FuID0gKG5hbWUsIGZpbHRlckV4LCBvcHRpb25zPXt9LCBjdXJyZW50KSAtPlxuICAgICAgY3VycmVudCA9IF9zZXR1cEN1cnJlbnQoKSBpZiAhY3VycmVudFxuICAgICAgaWYgIWN1cnJlbnQub3B0aW9uc1xuICAgICAgICBjdXJyZW50Lm9wdGlvbnMgPSBvcHRpb25zID0gX3BhcnNlUXVlcnkgb3B0aW9ucywgbmFtZSwgZmFsc2UsIGZpbHRlckV4XG4gICAgICBlbHNlXG4gICAgICAgIHtvcHRpb25zfSA9IGN1cnJlbnRcblxuICAgICAgcCA9IHt9XG4gICAgICBwLkV4Y2x1c2l2ZVN0YXJ0S2V5ID0gY3VycmVudC5MYXN0RXZhbHVhdGVkS2V5IGlmIGN1cnJlbnQuTGFzdEV2YWx1YXRlZEtleVxuICAgICAgcmVzdWx0cyA9IGF3YWl0IGRiLnNjYW4gbWVyZ2UgcCwgb3B0aW9uc1xuXG4gICAgICBjdXJyZW50ID0gX2NhdEN1cnJlbnQgY3VycmVudCwgcmVzdWx0c1xuICAgICAgaWYgIXJlc3VsdHMuTGFzdEV2YWx1YXRlZEtleSB8fCBvcHRpb25zLkxpbWl0XG4gICAgICAgIGN1cnJlbnRcbiAgICAgIGVsc2VcbiAgICAgICAgYXdhaXQgc2NhbiBuYW1lLCBmaWx0ZXJFeCwgb3B0aW9ucywgY3VycmVudFxuXG5cblxuICAgIHt0YWJsZUdldCwgdGFibGVDcmVhdGUsIHRhYmxlVXBkYXRlLCB0YWJsZURlbCwgdGFibGVXYWl0Rm9yUmVhZHksIHRhYmxlV2FpdEZvckRlbGV0ZWQsIHRhYmxlRW1wdHksIGtleXNGaWx0ZXIsIHRvLCBwYXJzZSwgbWVyZ2UsIGdldCwgcHV0LCBkZWwsIHF2LCB1cGRhdGUsIHF1ZXJ5LCBzY2FufVxuXG5leHBvcnQgZGVmYXVsdCBkeW5hbW9kYlByaW1pdGl2ZVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceURL=primitives/dynamodb.coffee |
@@ -6,31 +6,34 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _cognito = require("./cognito"); | ||
var _acm = _interopRequireDefault(require("./acm")); | ||
var _cognito2 = _interopRequireDefault(_cognito); | ||
var _cloudformation = _interopRequireDefault(require("./cloudformation")); | ||
var _dynamodb = require("./dynamodb"); | ||
var _cloudfront = _interopRequireDefault(require("./cloudfront")); | ||
var _dynamodb2 = _interopRequireDefault(_dynamodb); | ||
var _cloudwatchlogs = _interopRequireDefault(require("./cloudwatchlogs")); | ||
var _kms = require("./kms"); | ||
var _cognito = _interopRequireDefault(require("./cognito")); | ||
var _kms2 = _interopRequireDefault(_kms); | ||
var _dynamodb = _interopRequireDefault(require("./dynamodb")); | ||
var _s = require("./s3"); | ||
var _ec = _interopRequireDefault(require("./ec2")); | ||
var _s2 = _interopRequireDefault(_s); | ||
var _kms = _interopRequireDefault(require("./kms")); | ||
var _ses = require("./ses"); | ||
var _lambda = _interopRequireDefault(require("./lambda")); | ||
var _ses2 = _interopRequireDefault(_ses); | ||
var _route = _interopRequireDefault(require("./route53")); | ||
var _sns = require("./sns"); | ||
var _s = _interopRequireDefault(require("./s3")); | ||
var _sns2 = _interopRequireDefault(_sns); | ||
var _ses = _interopRequireDefault(require("./ses")); | ||
var _sts = require("./sts"); | ||
var _sns = _interopRequireDefault(require("./sns")); | ||
var _sts2 = _interopRequireDefault(_sts); | ||
var _sts = _interopRequireDefault(require("./sts")); | ||
var _url = _interopRequireDefault(require("./url")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
@@ -42,6 +45,30 @@ | ||
return Object.defineProperties({}, { | ||
ACM: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _acm.default)(_AWS.SDK); | ||
} | ||
}, | ||
CloudFormation: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _cloudformation.default)(_AWS.SDK); | ||
} | ||
}, | ||
CloudFront: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _cloudfront.default)(_AWS.SDK); | ||
} | ||
}, | ||
CloudWatchLogs: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _cloudwatchlogs.default)(_AWS.SDK); | ||
} | ||
}, | ||
Cognito: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _cognito2.default)(_AWS); | ||
return (0, _cognito.default)(_AWS.SDK); | ||
} | ||
@@ -52,15 +79,33 @@ }, | ||
get: function () { | ||
return (0, _dynamodb2.default)(_AWS); | ||
return (0, _dynamodb.default)(_AWS.SDK); | ||
} | ||
}, | ||
EC2: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _ec.default)(_AWS.SDK); | ||
} | ||
}, | ||
KMS: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _kms2.default)(_AWS); | ||
return (0, _kms.default)(_AWS.SDK); | ||
} | ||
}, | ||
Lambda: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _lambda.default)(_AWS.SDK); | ||
} | ||
}, | ||
Route53: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _route.default)(_AWS.SDK); | ||
} | ||
}, | ||
S3: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _s2.default)(_AWS); | ||
return (0, _s.default)(_AWS.SDK); | ||
} | ||
@@ -71,3 +116,3 @@ }, | ||
get: function () { | ||
return (0, _ses2.default)(_AWS); | ||
return (0, _ses.default)(_AWS.SDK); | ||
} | ||
@@ -78,3 +123,3 @@ }, | ||
get: function () { | ||
return (0, _sns2.default)(_AWS); | ||
return (0, _sns.default)(_AWS.SDK); | ||
} | ||
@@ -85,4 +130,10 @@ }, | ||
get: function () { | ||
return (0, _sts2.default)(_AWS); | ||
return (0, _sts.default)(_AWS.SDK); | ||
} | ||
}, | ||
URL: { | ||
enumerable: true, | ||
get: function () { | ||
return (0, _url.default)(); | ||
} | ||
} | ||
@@ -92,2 +143,5 @@ }); | ||
exports.default = Primitives; | ||
var _default = Primitives; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,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QUEsRUFBSyxZQUFBO2VBQUcsa0JBQUksSUFBSSxDQUFSLEdBQUEsQztBQUFIO0FBREwsS0F4Q0Y7QUEwQ0EsSUFBQSxHQUFBLEVBQ0U7QUFBQSxNQUFBLFVBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQSxHQUFBLEVBQUssWUFBQTtlQUFHLG1CO0FBQUg7QUFETDtBQTNDRixHQURGLEM7QUFEVyxDQUFiOztlQWdEZSxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFjbSBmcm9tIFwiLi9hY21cIlxuaW1wb3J0IGNsb3VkZm9ybWF0aW9uIGZyb20gXCIuL2Nsb3VkZm9ybWF0aW9uXCJcbmltcG9ydCBjbG91ZGZyb250IGZyb20gXCIuL2Nsb3VkZnJvbnRcIlxuaW1wb3J0IGNsb3Vkd2F0Y2hsb2dzIGZyb20gXCIuL2Nsb3Vkd2F0Y2hsb2dzXCJcbmltcG9ydCBjb2duaXRvIGZyb20gXCIuL2NvZ25pdG9cIlxuaW1wb3J0IGR5bmFtb2RiIGZyb20gXCIuL2R5bmFtb2RiXCJcbmltcG9ydCBlYzIgZnJvbSBcIi4vZWMyXCJcbmltcG9ydCBrbXMgZnJvbSBcIi4va21zXCJcbmltcG9ydCBsYW1iZGEgZnJvbSBcIi4vbGFtYmRhXCJcbmltcG9ydCByb3V0ZTUzIGZyb20gXCIuL3JvdXRlNTNcIlxuaW1wb3J0IHMzIGZyb20gXCIuL3MzXCJcbmltcG9ydCBzZXMgZnJvbSBcIi4vc2VzXCJcbmltcG9ydCBzbnMgZnJvbSBcIi4vc25zXCJcbmltcG9ydCBzdHMgZnJvbSBcIi4vc3RzXCJcbmltcG9ydCB1cmwgZnJvbSBcIi4vdXJsXCIgICMgVVJMIHBhcnNpbmcgLyBmb3JtYXR0aW5nIGhlbHBlcnNcblxuUHJpbWl0aXZlcyA9IChfQVdTKSAtPlxuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyB7fSxcbiAgICBBQ006XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IGFjbSBfQVdTLlNES1xuICAgIENsb3VkRm9ybWF0aW9uOlxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgZ2V0OiAtPiBjbG91ZGZvcm1hdGlvbiBfQVdTLlNES1xuICAgIENsb3VkRnJvbnQ6XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IGNsb3VkZnJvbnQgX0FXUy5TREtcbiAgICBDbG91ZFdhdGNoTG9nczpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gY2xvdWR3YXRjaGxvZ3MgX0FXUy5TREtcbiAgICBDb2duaXRvOlxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgZ2V0OiAtPiBjb2duaXRvIF9BV1MuU0RLXG4gICAgRHluYW1vREI6XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IGR5bmFtb2RiIF9BV1MuU0RLXG4gICAgRUMyOlxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgZ2V0OiAtPiBlYzIgX0FXUy5TREtcbiAgICBLTVM6XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IGttcyBfQVdTLlNES1xuICAgIExhbWJkYTpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gbGFtYmRhIF9BV1MuU0RLXG4gICAgUm91dGU1MzpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gcm91dGU1MyBfQVdTLlNES1xuICAgIFMzOlxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgZ2V0OiAtPiBzMyBfQVdTLlNES1xuICAgIFNFUzpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gc2VzIF9BV1MuU0RLXG4gICAgU05TOlxuICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgZ2V0OiAtPiBzbnMgX0FXUy5TREtcbiAgICBTVFM6XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICBnZXQ6IC0+IHN0cyBfQVdTLlNES1xuICAgIFVSTDpcbiAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgIGdldDogLT4gdXJsKClcblxuZXhwb3J0IGRlZmF1bHQgUHJpbWl0aXZlc1xuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceURL=primitives/index.coffee |
@@ -6,19 +6,22 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _fairmont = require("fairmont"); | ||
var _pandaParchment = require("panda-parchment"); | ||
var _utils = require("./utils"); | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _lift = require("../lift"); | ||
// Primitives for the service KMS. | ||
// NOTE: In KMS methods besides "create" and "delete" and "addAlias": ID can be key ID, key ARN, or key alias name. | ||
var cognitoPrimative; | ||
var cognitoPrimitive; | ||
cognitoPrimative = function (_AWS) { | ||
var addAlias, create, decrypt, encrypt, get, kms, randomKey, reEncrypt, removeAlias, scheduleDelete; | ||
kms = _AWS.KMS; | ||
get = (() => { | ||
var _ref = _asyncToGenerator(function* (id, tokens) { | ||
cognitoPrimitive = function (SDK) { | ||
return function (configuration) { | ||
var addAlias, create, decrypt, encrypt, get, kms, randomKey, reEncrypt, removeAlias, scheduleDelete; | ||
kms = (0, _lift.applyConfiguration)(configuration, SDK.KMS); | ||
get = async function (id, tokens) { | ||
var KeyMetadata, e, params; | ||
try { | ||
@@ -28,6 +31,10 @@ params = { | ||
}; | ||
if (tokens) { | ||
params.GrantTokens = tokens; | ||
} | ||
({ KeyMetadata } = yield kms.describeKey(params)); | ||
({ | ||
KeyMetadata | ||
} = await kms.describeKey(params)); | ||
return KeyMetadata; | ||
@@ -38,21 +45,13 @@ } catch (error) { | ||
} | ||
}); | ||
}; | ||
return function get(_x, _x2) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
})(); | ||
create = (() => { | ||
var _ref2 = _asyncToGenerator(function* (params = {}) { | ||
create = async function (params = {}) { | ||
var KeyMetadata; | ||
({ KeyMetadata } = yield kms.createKey(params)); | ||
({ | ||
KeyMetadata | ||
} = await kms.createKey(params)); | ||
return KeyMetadata; | ||
}); | ||
}; | ||
return function create() { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
})(); | ||
scheduleDelete = (() => { | ||
var _ref3 = _asyncToGenerator(function* (id, delay) { | ||
scheduleDelete = async function (id, delay) { | ||
var params; | ||
@@ -62,39 +61,35 @@ params = { | ||
}; | ||
if (delay) { | ||
params.PendingWindowInDays = delay; | ||
} | ||
return yield kms.deleteKey(params); | ||
}); | ||
return function scheduleDelete(_x3, _x4) { | ||
return _ref3.apply(this, arguments); | ||
return await kms.deleteKey(params); | ||
}; | ||
})(); | ||
addAlias = (() => { | ||
var _ref4 = _asyncToGenerator(function* (TargetKeyId, AliasName) { | ||
return yield kms.createAlias({ TargetKeyId, AliasName }); | ||
}); | ||
return function addAlias(_x5, _x6) { | ||
return _ref4.apply(this, arguments); | ||
addAlias = async function (TargetKeyId, AliasName) { | ||
return await kms.createAlias({ | ||
TargetKeyId, | ||
AliasName | ||
}); | ||
}; | ||
})(); | ||
removeAlias = (() => { | ||
var _ref5 = _asyncToGenerator(function* (AliasName) { | ||
return yield kms.deleteAlias({ AliasName }); | ||
}); | ||
return function removeAlias(_x7) { | ||
return _ref5.apply(this, arguments); | ||
removeAlias = async function (AliasName) { | ||
return await kms.deleteAlias({ | ||
AliasName | ||
}); | ||
}; | ||
})(); | ||
randomKey = (() => { | ||
var _ref6 = _asyncToGenerator(function* (size, encoding = "hex") { | ||
randomKey = async function (size, encoding = "hex") { | ||
var Plaintext; | ||
({ Plaintext } = yield kms.generateRandom({ | ||
({ | ||
Plaintext | ||
} = await kms.generateRandom({ | ||
NumberOfBytes: size | ||
})); | ||
switch (encoding) { | ||
case "buffer": | ||
return Plaintext; | ||
case "ascii": | ||
@@ -109,2 +104,3 @@ case "hex": | ||
return Plaintext.toString(encoding); | ||
case "base64": | ||
@@ -114,4 +110,6 @@ // Omitting padding characters, per: | ||
return Plaintext.toString("base64").replace(/\=+$/, ''); | ||
case "base64padded": | ||
return Plaintext.toString("base64"); | ||
case "base64url": | ||
@@ -121,14 +119,11 @@ // Based on RFC 4648's "base64url" mapping: | ||
return Plaintext.toString("base64").replace(/\+/g, '-').replace(/\//g, '_').replace(/\=+$/, ''); | ||
default: | ||
throw new Error(`Unknown encoding ${encoding}.`); | ||
} | ||
}); | ||
}; | ||
return function randomKey(_x8) { | ||
return _ref6.apply(this, arguments); | ||
}; | ||
})(); | ||
encrypt = (() => { | ||
var _ref7 = _asyncToGenerator(function* (id, plaintext, encoding = "utf8", options = {}) { | ||
encrypt = async function (id, plaintext, encoding = "utf8", options = {}) { | ||
var CiphertextBlob, input, params; | ||
switch (encoding) { | ||
@@ -145,8 +140,11 @@ case "utf8": | ||
break; | ||
case "buffer": | ||
input = plaintext; | ||
break; | ||
default: | ||
throw new Error(`Unknown encoding ${encoding}.`); | ||
} | ||
params = { | ||
@@ -156,13 +154,10 @@ KeyId: id, | ||
}; | ||
params = (0, _fairmont.merge)(params, options); | ||
({ CiphertextBlob } = yield kms.encrypt(params)); | ||
params = (0, _pandaParchment.merge)(params, options); | ||
({ | ||
CiphertextBlob | ||
} = await kms.encrypt(params)); | ||
return CiphertextBlob.toString("base64"); | ||
}); | ||
}; | ||
return function encrypt(_x9, _x10) { | ||
return _ref7.apply(this, arguments); | ||
}; | ||
})(); | ||
decrypt = (() => { | ||
var _ref8 = _asyncToGenerator(function* (blob, encoding = "utf8", options = {}) { | ||
decrypt = async function (blob, encoding = "utf8", options = {}) { | ||
var Plaintext, params; | ||
@@ -172,4 +167,7 @@ params = { | ||
}; | ||
params = (0, _fairmont.merge)(params, options); | ||
({ Plaintext } = yield kms.decrypt(params)); | ||
params = (0, _pandaParchment.merge)(params, options); | ||
({ | ||
Plaintext | ||
} = await kms.decrypt(params)); | ||
switch (encoding) { | ||
@@ -185,15 +183,12 @@ case "utf8": | ||
return Plaintext.toString(encoding); | ||
case "buffer": | ||
return Plaintext; | ||
default: | ||
throw new Error(`Unknown encoding ${encoding}.`); | ||
} | ||
}); | ||
}; | ||
return function decrypt(_x11) { | ||
return _ref8.apply(this, arguments); | ||
}; | ||
})(); | ||
reEncrypt = (() => { | ||
var _ref9 = _asyncToGenerator(function* (id, blob, options = {}) { | ||
reEncrypt = async function (id, blob, options = {}) { | ||
var CiphertextBlob, params; | ||
@@ -204,14 +199,26 @@ params = { | ||
}; | ||
params = (0, _fairmont.merge)(params, options); | ||
({ CiphertextBlob } = yield kms.reEncrypt(params)); | ||
params = (0, _pandaParchment.merge)(params, options); | ||
({ | ||
CiphertextBlob | ||
} = await kms.reEncrypt(params)); | ||
return CiphertextBlob.toString("base64"); | ||
}); | ||
}; | ||
return function reEncrypt(_x12, _x13) { | ||
return _ref9.apply(this, arguments); | ||
return { | ||
get, | ||
create, | ||
scheduleDelete, | ||
addAlias, | ||
removeAlias, | ||
randomKey, | ||
decrypt, | ||
encrypt, | ||
reEncrypt | ||
}; | ||
})(); | ||
return { get, create, scheduleDelete, addAlias, removeAlias, randomKey, decrypt, encrypt, reEncrypt }; | ||
}; | ||
}; | ||
exports.default = cognitoPrimative; | ||
var _default = cognitoPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,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QUFjLENBQWQsUUFBQSxDQUFBLFFBQUEsQztBQU5VLEtBQVo7O1dBU0E7QUFBQSxNQUFBLEdBQUE7QUFBQSxNQUFBLE1BQUE7QUFBQSxNQUFBLGNBQUE7QUFBQSxNQUFBLFFBQUE7QUFBQSxNQUFBLFdBQUE7QUFBQSxNQUFBLFNBQUE7QUFBQSxNQUFBLE9BQUE7QUFBQSxNQUFBLE9BQUE7QUFBQSxNQUFBO0FBQUEsSztBQXZGRixHO0FBRGlCLENBQW5COztlQTJGZSxnQiIsInNvdXJjZXNDb250ZW50IjpbIiMgUHJpbWl0aXZlcyBmb3IgdGhlIHNlcnZpY2UgS01TLlxuIyBOT1RFOiBJbiBLTVMgbWV0aG9kcyBiZXNpZGVzIFwiY3JlYXRlXCIgYW5kIFwiZGVsZXRlXCIgYW5kIFwiYWRkQWxpYXNcIjogSUQgY2FuIGJlIGtleSBJRCwga2V5IEFSTiwgb3Iga2V5IGFsaWFzIG5hbWUuXG5cbmltcG9ydCB7Y2F0LCBtZXJnZX0gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5pbXBvcnQge25vdEZvdW5kfSBmcm9tIFwiLi91dGlsc1wiXG5pbXBvcnQge2FwcGx5Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL2xpZnRcIlxuXG5jb2duaXRvUHJpbWl0aXZlID0gKFNESykgLT5cbiAgKGNvbmZpZ3VyYXRpb24pIC0+XG4gICAga21zID0gYXBwbHlDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFNESy5LTVNcblxuICAgIGdldCA9IChpZCwgdG9rZW5zKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIHBhcmFtcyA9IHtLZXlJZDogaWR9XG4gICAgICAgIHBhcmFtcy5HcmFudFRva2VucyA9IHRva2VucyBpZiB0b2tlbnNcbiAgICAgICAge0tleU1ldGFkYXRhfSA9IGF3YWl0IGttcy5kZXNjcmliZUtleSBwYXJhbXNcbiAgICAgICAgS2V5TWV0YWRhdGFcbiAgICAgIGNhdGNoIGVcbiAgICAgICAgbm90Rm91bmQgZSwgNDAwLCBcIk5vdEZvdW5kRXhjZXB0aW9uXCJcblxuICAgIGNyZWF0ZSA9IChwYXJhbXM9e30pIC0+XG4gICAgICB7S2V5TWV0YWRhdGF9ID0gYXdhaXQga21zLmNyZWF0ZUtleSBwYXJhbXNcbiAgICAgIEtleU1ldGFkYXRhXG5cbiAgICBzY2hlZHVsZURlbGV0ZSA9IChpZCwgZGVsYXkpIC0+XG4gICAgICBwYXJhbXMgPSBLZXlJZDogaWRcbiAgICAgIHBhcmFtcy5QZW5kaW5nV2luZG93SW5EYXlzID0gZGVsYXkgaWYgZGVsYXlcbiAgICAgIGF3YWl0IGttcy5kZWxldGVLZXkgcGFyYW1zXG5cbiAgICBhZGRBbGlhcyA9IChUYXJnZXRLZXlJZCwgQWxpYXNOYW1lKSAtPlxuICAgICAgYXdhaXQga21zLmNyZWF0ZUFsaWFzIHtUYXJnZXRLZXlJZCwgQWxpYXNOYW1lfVxuXG4gICAgcmVtb3ZlQWxpYXMgPSAoQWxpYXNOYW1lKSAtPlxuICAgICAgYXdhaXQga21zLmRlbGV0ZUFsaWFzIHtBbGlhc05hbWV9XG5cbiAgICByYW5kb21LZXkgPSAoc2l6ZSwgZW5jb2Rpbmc9XCJoZXhcIikgLT5cbiAgICAgIHtQbGFpbnRleHR9ID0gYXdhaXQga21zLmdlbmVyYXRlUmFuZG9tIHtOdW1iZXJPZkJ5dGVzOiBzaXplfVxuICAgICAgc3dpdGNoIGVuY29kaW5nXG4gICAgICAgIHdoZW4gXCJidWZmZXJcIlxuICAgICAgICAgIFBsYWludGV4dFxuICAgICAgICB3aGVuIFwiYXNjaWlcIiwgXCJoZXhcIiwgXCJ1dGY4XCIsIFwidXRmMTZsZVwiLCBcInVjczJcIiwgXCJsYXRpbjFcIiwgXCJiaW5hcnlcIiwgXCJoZXhcIlxuICAgICAgICAgIFBsYWludGV4dC50b1N0cmluZyBlbmNvZGluZ1xuICAgICAgICB3aGVuIFwiYmFzZTY0XCJcbiAgICAgICAgICAjIE9taXR0aW5nIHBhZGRpbmcgY2hhcmFjdGVycywgcGVyOlxuICAgICAgICAgICMgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ2NDgjc2VjdGlvbi0zLjJcbiAgICAgICAgICBQbGFpbnRleHQudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICAucmVwbGFjZSgvXFw9KyQvLCAnJylcbiAgICAgICAgd2hlbiBcImJhc2U2NHBhZGRlZFwiXG4gICAgICAgICAgUGxhaW50ZXh0LnRvU3RyaW5nKFwiYmFzZTY0XCIpXG4gICAgICAgIHdoZW4gXCJiYXNlNjR1cmxcIlxuICAgICAgICAgICMgQmFzZWQgb24gUkZDIDQ2NDgncyBcImJhc2U2NHVybFwiIG1hcHBpbmc6XG4gICAgICAgICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNDY0OCNzZWN0aW9uLTVcbiAgICAgICAgICBQbGFpbnRleHQudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICAucmVwbGFjZSgvXFwrL2csICctJylcbiAgICAgICAgICAucmVwbGFjZSgvXFwvL2csICdfJylcbiAgICAgICAgICAucmVwbGFjZSgvXFw9KyQvLCAnJylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvciBcIlVua25vd24gZW5jb2RpbmcgI3tlbmNvZGluZ30uXCJcblxuICAgIGVuY3J5cHQgPSAoaWQsIHBsYWludGV4dCwgZW5jb2Rpbmc9XCJ1dGY4XCIsIG9wdGlvbnM9e30pIC0+XG4gICAgICBzd2l0Y2ggZW5jb2RpbmdcbiAgICAgICAgd2hlbiBcInV0ZjhcIiwgXCJiYXNlNjRcIiwgXCJoZXhcIiwgXCJhc2NpaVwiLCBcInV0ZjE2bGVcIiwgXCJ1Y3MyXCIsIFwibGF0aW4xXCIsIFwiYmluYXJ5XCJcbiAgICAgICAgICBpbnB1dCA9IEJ1ZmZlci5mcm9tIHBsYWludGV4dCwgZW5jb2RpbmdcbiAgICAgICAgd2hlbiBcImJ1ZmZlclwiXG4gICAgICAgICAgaW5wdXQgPSBwbGFpbnRleHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvciBcIlVua25vd24gZW5jb2RpbmcgI3tlbmNvZGluZ30uXCJcbiAgICAgIHBhcmFtcyA9XG4gICAgICAgIEtleUlkOiBpZFxuICAgICAgICBQbGFpbnRleHQ6IGlucHV0XG4gICAgICBwYXJhbXMgPSBtZXJnZSBwYXJhbXMsIG9wdGlvbnNcbiAgICAgIHtDaXBoZXJ0ZXh0QmxvYn0gPSBhd2FpdCBrbXMuZW5jcnlwdCBwYXJhbXNcbiAgICAgIENpcGhlcnRleHRCbG9iLnRvU3RyaW5nKFwiYmFzZTY0XCIpXG5cbiAgICBkZWNyeXB0ID0gKGJsb2IsIGVuY29kaW5nPVwidXRmOFwiLCBvcHRpb25zPXt9KSAtPlxuICAgICAgcGFyYW1zID0gQ2lwaGVydGV4dEJsb2I6IEJ1ZmZlci5mcm9tKGJsb2IsIFwiYmFzZTY0XCIpXG4gICAgICBwYXJhbXMgPSBtZXJnZSBwYXJhbXMsIG9wdGlvbnNcbiAgICAgIHtQbGFpbnRleHR9ID0gYXdhaXQga21zLmRlY3J5cHQgcGFyYW1zXG4gICAgICBzd2l0Y2ggZW5jb2RpbmdcbiAgICAgICAgd2hlbiBcInV0ZjhcIiwgXCJiYXNlNjRcIiwgXCJoZXhcIiwgXCJhc2NpaVwiLCBcInV0ZjE2bGVcIiwgXCJ1Y3MyXCIsIFwibGF0aW4xXCIsIFwiYmluYXJ5XCJcbiAgICAgICAgICBQbGFpbnRleHQudG9TdHJpbmcgZW5jb2RpbmdcbiAgICAgICAgd2hlbiBcImJ1ZmZlclwiXG4gICAgICAgICAgUGxhaW50ZXh0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IgXCJVbmtub3duIGVuY29kaW5nICN7ZW5jb2Rpbmd9LlwiXG5cbiAgICByZUVuY3J5cHQgPSAoaWQsIGJsb2IsIG9wdGlvbnM9e30pIC0+XG4gICAgICBwYXJhbXMgPVxuICAgICAgICBEZXN0aW5hdGlvbktleUlkOiBpZFxuICAgICAgICBDeXBoZXJ0ZXh0QmxvYjogQnVmZmVyLmZyb20oYmxvYiwgXCJiYXNlNjRcIilcbiAgICAgIHBhcmFtcyA9IG1lcmdlIHBhcmFtcywgb3B0aW9uc1xuICAgICAge0NpcGhlcnRleHRCbG9ifSA9IGF3YWl0IGttcy5yZUVuY3J5cHQgcGFyYW1zXG4gICAgICBDaXBoZXJ0ZXh0QmxvYi50b1N0cmluZyhcImJhc2U2NFwiKVxuXG5cbiAgICB7Z2V0LCBjcmVhdGUsIHNjaGVkdWxlRGVsZXRlLCBhZGRBbGlhcywgcmVtb3ZlQWxpYXMsIHJhbmRvbUtleSwgZGVjcnlwdCwgZW5jcnlwdCwgcmVFbmNyeXB0fVxuXG5cbmV4cG9ydCBkZWZhdWx0IGNvZ25pdG9QcmltaXRpdmVcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=primitives/kms.coffee |
@@ -6,31 +6,43 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _fs = require("fs"); | ||
var _fairmont = require("fairmont"); | ||
var _crypto = _interopRequireDefault(require("crypto")); | ||
var _mime = require("mime"); | ||
var _pandaGarden = require("panda-garden"); | ||
var _mime2 = _interopRequireDefault(_mime); | ||
var _pandaParchment = require("panda-parchment"); | ||
var _pandaQuill = require("panda-quill"); | ||
var _mime = _interopRequireDefault(require("mime")); | ||
var _utils = require("./utils"); | ||
var _lift = require("../lift"); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
// Primitives for the service S3. The main entities are buckets and objects. | ||
// This follows the naming convention that methods that work on buckets will be | ||
// prefixed "bucket*", whereas object methods will have no prefix. | ||
var s3Primative, | ||
var md5, | ||
s3Primitive, | ||
indexOf = [].indexOf; | ||
s3Primative = function (_AWS) { | ||
var bucketDel, bucketEmpty, bucketExists, bucketTouch, del, exists, get, list, put, s3; | ||
s3 = _AWS.S3; | ||
bucketExists = (() => { | ||
var _ref = _asyncToGenerator(function* (name) { | ||
md5 = function (string) { | ||
return _crypto.default.createHash('md5').update(string, 'utf-8').digest("hex"); | ||
}; | ||
s3Primitive = function (SDK) { | ||
return function (configuration) { | ||
var bucketDel, bucketEmpty, bucketExists, bucketPutACL, bucketTouch, del, exists, get, list, multipartAbort, multipartComplete, multipartPut, multipartStart, put, s3, sign, signPost; | ||
s3 = (0, _lift.applyConfiguration)(configuration, SDK.S3); | ||
bucketExists = async function (name) { | ||
var e; | ||
try { | ||
yield s3.headBucket({ | ||
await s3.headBucket({ | ||
Bucket: name | ||
@@ -43,13 +55,9 @@ }); | ||
} | ||
}); | ||
}; | ||
return function bucketExists(_x) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
})(); | ||
exists = (0, _fairmont.curry)((() => { | ||
var _ref2 = _asyncToGenerator(function* (name, key) { | ||
exists = (0, _pandaGarden.curry)(async function (name, key) { | ||
var e; | ||
try { | ||
yield s3.headObject({ | ||
await s3.headObject({ | ||
Bucket: name, | ||
@@ -65,52 +73,41 @@ Key: key | ||
return function (_x2, _x3) { | ||
return _ref2.apply(this, arguments); | ||
}; | ||
})()); | ||
bucketTouch = (() => { | ||
var _ref3 = _asyncToGenerator(function* (name) { | ||
if (yield bucketExists(name)) { | ||
bucketTouch = async function (name) { | ||
if (await bucketExists(name)) { | ||
return true; | ||
} | ||
yield s3.createBucket({ | ||
await s3.createBucket({ | ||
Bucket: name | ||
}); | ||
return yield (0, _fairmont.sleep)(15000); // race condition with S3 API. Wait to be available. | ||
}); | ||
return await (0, _pandaParchment.sleep)(15000); // race condition with S3 API. Wait to be available. | ||
}; | ||
return function bucketTouch(_x4) { | ||
return _ref3.apply(this, arguments); | ||
}; | ||
})(); | ||
put = (0, _fairmont.curry)((() => { | ||
var _ref4 = _asyncToGenerator(function* (name, key, data, filetype) { | ||
var body, content, params; | ||
put = (0, _pandaGarden.curry)(async function (Bucket, Key, data, filetype) { | ||
var body, content; | ||
if (filetype) { | ||
// here, data is stringified data. | ||
content = body = new Buffer(data); | ||
content = body = Buffer.from(data); | ||
} else { | ||
// here, data is a path to file. | ||
filetype = _mime2.default.lookup(data); | ||
filetype = _mime.default.getType(data); | ||
body = (0, _fs.createReadStream)(data); | ||
content = indexOf.call(_mime2.default.lookup(data), "text") >= 0 ? yield (0, _fairmont.read)(data) : yield (0, _fairmont.read)(data, "buffer"); | ||
content = indexOf.call(_mime.default.getType(data), "text") >= 0 ? await (0, _pandaQuill.read)(data) : await (0, _pandaQuill.read)(data, "buffer"); | ||
} | ||
params = { | ||
Bucket: name, | ||
Key: key, | ||
return await s3.putObject({ | ||
Bucket, | ||
Key, | ||
ContentType: filetype, | ||
ContentMD5: new Buffer((0, _fairmont.md5)(content), "hex").toString('base64'), | ||
ContentMD5: Buffer.from(md5(content), "hex").toString('base64'), | ||
Body: body | ||
}; | ||
return yield s3.putObject(params); | ||
}); | ||
}); | ||
get = (0, _pandaGarden.curry)(async function (name, key, encoding = "utf8") { | ||
var Body, e; | ||
return function (_x5, _x6, _x7, _x8) { | ||
return _ref4.apply(this, arguments); | ||
}; | ||
})()); | ||
get = (0, _fairmont.curry)((() => { | ||
var _ref5 = _asyncToGenerator(function* (name, key, encoding = "utf8") { | ||
var Body, e; | ||
try { | ||
({ Body } = yield s3.getObject({ | ||
({ | ||
Body | ||
} = await s3.getObject({ | ||
Bucket: name, | ||
@@ -125,12 +122,7 @@ Key: key | ||
}); | ||
del = (0, _pandaGarden.curry)(async function (name, key) { | ||
var e; | ||
return function (_x9, _x10) { | ||
return _ref5.apply(this, arguments); | ||
}; | ||
})()); | ||
del = (0, _fairmont.curry)((() => { | ||
var _ref6 = _asyncToGenerator(function* (name, key) { | ||
var e; | ||
try { | ||
return yield s3.deleteObject({ | ||
return await s3.deleteObject({ | ||
Bucket: name, | ||
@@ -145,11 +137,7 @@ Key: key | ||
return function (_x11, _x12) { | ||
return _ref6.apply(this, arguments); | ||
}; | ||
})()); | ||
bucketDel = (() => { | ||
var _ref7 = _asyncToGenerator(function* (name) { | ||
bucketDel = async function (name) { | ||
var e; | ||
try { | ||
return yield s3.deleteBucket({ | ||
return await s3.deleteBucket({ | ||
Bucket: name | ||
@@ -161,10 +149,5 @@ }); | ||
} | ||
}); | ||
}; | ||
return function bucketDel(_x13) { | ||
return _ref7.apply(this, arguments); | ||
}; | ||
})(); | ||
list = (0, _fairmont.curry)((() => { | ||
var _ref8 = _asyncToGenerator(function* (name, items = [], marker) { | ||
list = (0, _pandaGarden.curry)(async function (name, items = [], marker) { | ||
var Contents, IsTruncated, NextContinuationToken, p; | ||
@@ -175,40 +158,124 @@ p = { | ||
}; | ||
if (marker) { | ||
p.ContinuationToken = marker; | ||
} | ||
({ IsTruncated, Contents, NextContinuationToken } = yield s3.listObjectsV2(p)); | ||
({ | ||
IsTruncated, | ||
Contents, | ||
NextContinuationToken | ||
} = await s3.listObjectsV2(p)); | ||
if (IsTruncated) { | ||
items = (0, _fairmont.cat)(items, Contents); | ||
return yield list(name, items, NextContinuationToken); | ||
items = (0, _pandaParchment.cat)(items, Contents); | ||
return await list(name, items, NextContinuationToken); | ||
} else { | ||
return (0, _fairmont.cat)(items, Contents); | ||
return (0, _pandaParchment.cat)(items, Contents); | ||
} | ||
}); | ||
}); // TODO: make this more efficient by throttling to X connections at once. AWS | ||
// only supports N requests per second from an account, and I don't want this | ||
// to violate that limit, but we can do better than one at a time. | ||
return function (_x14) { | ||
return _ref8.apply(this, arguments); | ||
}; | ||
})()); | ||
// TODO: make this more efficient by throttling to X connections at once. AWS | ||
// only supports N requests per second from an account, and I don't want this | ||
// to violate that limit, but we can do better than one at a time. | ||
bucketEmpty = (() => { | ||
var _ref9 = _asyncToGenerator(function* (name) { | ||
bucketEmpty = async function (name) { | ||
var i, items, j, len, results; | ||
items = yield list(name); | ||
items = await list(name); | ||
results = []; | ||
for (j = 0, len = items.length; j < len; j++) { | ||
i = items[j]; | ||
results.push((yield del(name, i.Key))); | ||
results.push((await del(name, i.Key))); | ||
} | ||
return results; | ||
}); | ||
}; | ||
return function bucketEmpty(_x15) { | ||
return _ref9.apply(this, arguments); | ||
bucketPutACL = async function (parameters) { | ||
return await s3.putBucketAcl(parameters); | ||
}; //#### | ||
// Multipart upload functions | ||
//#### | ||
multipartStart = async function (Bucket, Key, ContentType, options = {}) { | ||
return await s3.createMultipartUpload((0, _pandaParchment.merge)({ | ||
Bucket, | ||
Key, | ||
ContentType | ||
}, options)); | ||
}; | ||
})(); | ||
return { bucketExists, exists, bucketTouch, put, get, del, bucketDel, list, bucketEmpty }; | ||
multipartAbort = async function (Bucket, Key, UploadId) { | ||
return await s3.abortMultipartUpload({ | ||
Bucket, | ||
Key, | ||
UploadId | ||
}); | ||
}; | ||
multipartComplete = async function (Bucket, Key, UploadId, MultipartUpload) { | ||
return await s3.completeMultipartUpload({ | ||
Bucket, | ||
Key, | ||
UploadId, | ||
MultipartUpload | ||
}); | ||
}; | ||
multipartPut = async function (Bucket, Key, UploadId, PartNumber, part, filetype) { | ||
var body, content; | ||
if (filetype) { | ||
// here, data is stringified data. | ||
content = body = Buffer.from(part); | ||
} else { | ||
// here, data is a path to file. | ||
filetype = _mime.default.getType(part); | ||
body = (0, _fs.createReadStream)(part); | ||
content = indexOf.call(filetype, "text") >= 0 ? await (0, _pandaQuill.read)(part) : await (0, _pandaQuill.read)(part, "buffer"); | ||
} | ||
return await s3.uploadPart({ | ||
Bucket, | ||
Key, | ||
UploadId, | ||
PartNumber, | ||
ContentType: filetype, | ||
ContentMD5: Buffer.from(md5(content), "hex").toString('base64'), | ||
Body: body | ||
}); | ||
}; // Signing a URL grants the bearer the ability to perform the given action against an S3 object, even if they are not you. | ||
sign = async function (action, parameters) { | ||
return await s3.getSignedUrl(action, parameters); | ||
}; | ||
signPost = async function (parameters) { | ||
return await s3.createPresignedPost(parameters); | ||
}; | ||
return { | ||
bucketExists, | ||
exists, | ||
bucketTouch, | ||
put, | ||
get, | ||
del, | ||
bucketDel, | ||
list, | ||
bucketEmpty, | ||
multipartStart, | ||
multipartAbort, | ||
multipartPut, | ||
multipartComplete, | ||
sign, | ||
signPost | ||
}; | ||
}; | ||
}; | ||
exports.default = s3Primative; | ||
var _default = s3Primitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,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QUFBLGNBQUE7QUFBQSxNQUFBLGNBQUE7QUFBQSxNQUFBLFlBQUE7QUFBQSxNQUFBLGlCQUFBO0FBQUEsTUFBQSxJQUFBO0FBQUEsTUFBQTtBQUFBLEs7QUE3SEYsRztBQURZLENBQWQ7O2VBaUllLFciLCJzb3VyY2VzQ29udGVudCI6WyIjIFByaW1pdGl2ZXMgZm9yIHRoZSBzZXJ2aWNlIFMzLiAgVGhlIG1haW4gZW50aXRpZXMgYXJlIGJ1Y2tldHMgYW5kIG9iamVjdHMuXG4jIFRoaXMgZm9sbG93cyB0aGUgbmFtaW5nIGNvbnZlbnRpb24gdGhhdCBtZXRob2RzIHRoYXQgd29yayBvbiBidWNrZXRzIHdpbGwgYmVcbiMgcHJlZml4ZWQgXCJidWNrZXQqXCIsIHdoZXJlYXMgb2JqZWN0IG1ldGhvZHMgd2lsbCBoYXZlIG5vIHByZWZpeC5cblxuaW1wb3J0IHtjcmVhdGVSZWFkU3RyZWFtfSBmcm9tIFwiZnNcIlxuaW1wb3J0IENyeXB0byBmcm9tIFwiY3J5cHRvXCJcbmltcG9ydCB7Y3Vycnl9IGZyb20gXCJwYW5kYS1nYXJkZW5cIlxuaW1wb3J0IHtzbGVlcCwgY2F0LCBtZXJnZX0gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5pbXBvcnQge3JlYWR9IGZyb20gXCJwYW5kYS1xdWlsbFwiXG5pbXBvcnQgbWltZSBmcm9tIFwibWltZVwiXG5cbmltcG9ydCB7bm90Rm91bmR9IGZyb20gXCIuL3V0aWxzXCJcbmltcG9ydCB7YXBwbHlDb25maWd1cmF0aW9ufSBmcm9tIFwiLi4vbGlmdFwiXG5cbm1kNSA9IChzdHJpbmcpIC0+XG4gIENyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUoc3RyaW5nLCAndXRmLTgnKS5kaWdlc3QoXCJoZXhcIilcblxuczNQcmltaXRpdmUgPSAoU0RLKSAtPlxuICAoY29uZmlndXJhdGlvbikgLT5cbiAgICBzMyA9IGFwcGx5Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBTREsuUzNcblxuICAgIGJ1Y2tldEV4aXN0cyA9IChuYW1lKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGF3YWl0IHMzLmhlYWRCdWNrZXQgQnVja2V0OiBuYW1lXG4gICAgICAgIHRydWVcbiAgICAgIGNhdGNoIGVcbiAgICAgICAgbm90Rm91bmQgZVxuXG4gICAgZXhpc3RzID0gY3VycnkgKG5hbWUsIGtleSkgLT5cbiAgICAgIHRyeVxuICAgICAgICBhd2FpdCBzMy5oZWFkT2JqZWN0IHtCdWNrZXQ6IG5hbWUsIEtleToga2V5fVxuICAgICAgICB0cnVlXG4gICAgICBjYXRjaCBlXG4gICAgICAgIG5vdEZvdW5kIGVcblxuICAgIGJ1Y2tldFRvdWNoID0gKG5hbWUpIC0+XG4gICAgICByZXR1cm4gdHJ1ZSBpZiBhd2FpdCBidWNrZXRFeGlzdHMgbmFtZVxuICAgICAgYXdhaXQgczMuY3JlYXRlQnVja2V0IHtCdWNrZXQ6IG5hbWV9XG4gICAgICBhd2FpdCBzbGVlcCAxNTAwMCAjIHJhY2UgY29uZGl0aW9uIHdpdGggUzMgQVBJLiAgV2FpdCB0byBiZSBhdmFpbGFibGUuXG5cbiAgICBwdXQgPSBjdXJyeSAoQnVja2V0LCBLZXksIGRhdGEsIGZpbGV0eXBlKSAtPlxuICAgICAgaWYgZmlsZXR5cGVcbiAgICAgICAgIyBoZXJlLCBkYXRhIGlzIHN0cmluZ2lmaWVkIGRhdGEuXG4gICAgICAgIGNvbnRlbnQgPSBib2R5ID0gQnVmZmVyLmZyb20gZGF0YVxuICAgICAgZWxzZVxuICAgICAgICAjIGhlcmUsIGRhdGEgaXMgYSBwYXRoIHRvIGZpbGUuXG4gICAgICAgIGZpbGV0eXBlID0gbWltZS5nZXRUeXBlIGRhdGFcbiAgICAgICAgYm9keSA9IGNyZWF0ZVJlYWRTdHJlYW0gZGF0YVxuICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICBpZiBcInRleHRcIiBpbiBtaW1lLmdldFR5cGUoZGF0YSlcbiAgICAgICAgICAgIGF3YWl0IHJlYWQgZGF0YVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGF3YWl0IHJlYWQgZGF0YSwgXCJidWZmZXJcIlxuXG4gICAgICBhd2FpdCBzMy5wdXRPYmplY3Qge1xuICAgICAgICBCdWNrZXQsIEtleSxcbiAgICAgICAgQ29udGVudFR5cGU6IGZpbGV0eXBlXG4gICAgICAgIENvbnRlbnRNRDU6IEJ1ZmZlci5mcm9tKG1kNShjb250ZW50KSwgXCJoZXhcIikudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIEJvZHk6IGJvZHlcbiAgICAgIH1cblxuICAgIGdldCA9IGN1cnJ5IChuYW1lLCBrZXksIGVuY29kaW5nPVwidXRmOFwiKSAtPlxuICAgICAgdHJ5XG4gICAgICAgIHtCb2R5fSA9IGF3YWl0IHMzLmdldE9iamVjdCB7QnVja2V0OiBuYW1lLCBLZXk6IGtleX1cbiAgICAgICAgQm9keS50b1N0cmluZyBlbmNvZGluZ1xuICAgICAgY2F0Y2ggZVxuICAgICAgICBub3RGb3VuZCBlXG5cbiAgICBkZWwgPSBjdXJyeSAobmFtZSwga2V5KSAtPlxuICAgICAgdHJ5XG4gICAgICAgIGF3YWl0IHMzLmRlbGV0ZU9iamVjdCB7QnVja2V0OiBuYW1lLCBLZXk6IGtleX1cbiAgICAgIGNhdGNoIGVcbiAgICAgICAgbm90Rm91bmQgZVxuXG4gICAgYnVja2V0RGVsID0gKG5hbWUpIC0+XG4gICAgICB0cnlcbiAgICAgICAgYXdhaXQgczMuZGVsZXRlQnVja2V0IEJ1Y2tldDogbmFtZVxuICAgICAgY2F0Y2ggZVxuICAgICAgICBub3RGb3VuZCBlXG5cbiAgICBsaXN0ID0gY3VycnkgKG5hbWUsIGl0ZW1zPVtdLCBtYXJrZXIpIC0+XG4gICAgICBwID0ge0J1Y2tldDogbmFtZSwgTWF4S2V5czogMTAwMH1cbiAgICAgIHAuQ29udGludWF0aW9uVG9rZW4gPSBtYXJrZXIgaWYgbWFya2VyXG5cbiAgICAgIHtJc1RydW5jYXRlZCwgQ29udGVudHMsIE5leHRDb250aW51YXRpb25Ub2tlbn0gPSBhd2FpdCBzMy5saXN0T2JqZWN0c1YyIHBcbiAgICAgIGlmIElzVHJ1bmNhdGVkXG4gICAgICAgIGl0ZW1zID0gY2F0IGl0ZW1zLCBDb250ZW50c1xuICAgICAgICBhd2FpdCBsaXN0IG5hbWUsIGl0ZW1zLCBOZXh0Q29udGludWF0aW9uVG9rZW5cbiAgICAgIGVsc2VcbiAgICAgICAgY2F0IGl0ZW1zLCBDb250ZW50c1xuXG4gICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSBlZmZpY2llbnQgYnkgdGhyb3R0bGluZyB0byBYIGNvbm5lY3Rpb25zIGF0IG9uY2UuIEFXU1xuICAgICMgb25seSBzdXBwb3J0cyBOIHJlcXVlc3RzIHBlciBzZWNvbmQgZnJvbSBhbiBhY2NvdW50LCBhbmQgSSBkb24ndCB3YW50IHRoaXNcbiAgICAjIHRvIHZpb2xhdGUgdGhhdCBsaW1pdCwgYnV0IHdlIGNhbiBkbyBiZXR0ZXIgdGhhbiBvbmUgYXQgYSB0aW1lLlxuICAgIGJ1Y2tldEVtcHR5ID0gKG5hbWUpIC0+XG4gICAgICBpdGVtcyA9IGF3YWl0IGxpc3QgbmFtZVxuICAgICAgYXdhaXQgZGVsIG5hbWUsIGkuS2V5IGZvciBpIGluIGl0ZW1zXG5cbiAgICBidWNrZXRQdXRBQ0wgPSAocGFyYW1ldGVycykgLT5cbiAgICAgIGF3YWl0IHMzLnB1dEJ1Y2tldEFjbCBwYXJhbWV0ZXJzXG5cbiAgICAjIyMjI1xuICAgICMgTXVsdGlwYXJ0IHVwbG9hZCBmdW5jdGlvbnNcbiAgICAjIyMjI1xuICAgIG11bHRpcGFydFN0YXJ0ID0gKEJ1Y2tldCwgS2V5LCBDb250ZW50VHlwZSwgb3B0aW9ucz17fSkgLT5cbiAgICAgIGF3YWl0IHMzLmNyZWF0ZU11bHRpcGFydFVwbG9hZCBtZXJnZSB7QnVja2V0LCBLZXksIENvbnRlbnRUeXBlfSwgb3B0aW9uc1xuXG4gICAgbXVsdGlwYXJ0QWJvcnQgPSAoQnVja2V0LCBLZXksIFVwbG9hZElkKSAtPlxuICAgICAgYXdhaXQgczMuYWJvcnRNdWx0aXBhcnRVcGxvYWQge0J1Y2tldCwgS2V5LCBVcGxvYWRJZH1cblxuICAgIG11bHRpcGFydENvbXBsZXRlID0gKEJ1Y2tldCwgS2V5LCBVcGxvYWRJZCwgTXVsdGlwYXJ0VXBsb2FkKSAtPlxuICAgICAgYXdhaXQgczMuY29tcGxldGVNdWx0aXBhcnRVcGxvYWQge0J1Y2tldCwgS2V5LCBVcGxvYWRJZCwgTXVsdGlwYXJ0VXBsb2FkfVxuXG4gICAgbXVsdGlwYXJ0UHV0ID0gKEJ1Y2tldCwgS2V5LCBVcGxvYWRJZCwgUGFydE51bWJlciwgcGFydCwgZmlsZXR5cGUpIC0+XG4gICAgICBpZiBmaWxldHlwZVxuICAgICAgICAjIGhlcmUsIGRhdGEgaXMgc3RyaW5naWZpZWQgZGF0YS5cbiAgICAgICAgY29udGVudCA9IGJvZHkgPSBCdWZmZXIuZnJvbSBwYXJ0XG4gICAgICBlbHNlXG4gICAgICAgICMgaGVyZSwgZGF0YSBpcyBhIHBhdGggdG8gZmlsZS5cbiAgICAgICAgZmlsZXR5cGUgPSBtaW1lLmdldFR5cGUgcGFydFxuICAgICAgICBib2R5ID0gY3JlYXRlUmVhZFN0cmVhbSBwYXJ0XG4gICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgIGlmIFwidGV4dFwiIGluIGZpbGV0eXBlXG4gICAgICAgICAgICBhd2FpdCByZWFkIHBhcnRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCByZWFkIHBhcnQsIFwiYnVmZmVyXCJcblxuICAgICAgYXdhaXQgczMudXBsb2FkUGFydCB7XG4gICAgICAgIEJ1Y2tldCwgS2V5LCBVcGxvYWRJZCwgUGFydE51bWJlcixcbiAgICAgICAgQ29udGVudFR5cGU6IGZpbGV0eXBlXG4gICAgICAgIENvbnRlbnRNRDU6IEJ1ZmZlci5mcm9tKG1kNShjb250ZW50KSwgXCJoZXhcIikudG9TdHJpbmcoJ2Jhc2U2NCcpXG4gICAgICAgIEJvZHk6IGJvZHlcbiAgICAgIH1cblxuXG4gICAgIyBTaWduaW5nIGEgVVJMIGdyYW50cyB0aGUgYmVhcmVyIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gdGhlIGdpdmVuIGFjdGlvbiBhZ2FpbnN0IGFuIFMzIG9iamVjdCwgZXZlbiBpZiB0aGV5IGFyZSBub3QgeW91LlxuICAgIHNpZ24gPSAoYWN0aW9uLCBwYXJhbWV0ZXJzKSAtPlxuICAgICAgYXdhaXQgczMuZ2V0U2lnbmVkVXJsIGFjdGlvbiwgcGFyYW1ldGVyc1xuXG4gICAgc2lnblBvc3QgPSAocGFyYW1ldGVycykgLT5cbiAgICAgIGF3YWl0IHMzLmNyZWF0ZVByZXNpZ25lZFBvc3QgcGFyYW1ldGVyc1xuXG5cbiAgICB7YnVja2V0RXhpc3RzLCBleGlzdHMsIGJ1Y2tldFRvdWNoLCBwdXQsIGdldCwgZGVsLCBidWNrZXREZWwsIGxpc3QsIGJ1Y2tldEVtcHR5LCBtdWx0aXBhcnRTdGFydCwgbXVsdGlwYXJ0QWJvcnQsIG11bHRpcGFydFB1dCwgbXVsdGlwYXJ0Q29tcGxldGUsIHNpZ24sIHNpZ25Qb3N0fVxuXG5cbmV4cG9ydCBkZWZhdWx0IHMzUHJpbWl0aXZlXG4iXSwic291cmNlUm9vdCI6IiJ9 | ||
//# sourceURL=primitives/s3.coffee |
@@ -6,22 +6,25 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
var _fairmont = require("fairmont"); | ||
var _pandaParchment = require("panda-parchment"); | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _lift = require("../lift"); | ||
// Primitives for the service SES (simple email service). | ||
var sesPrimative; | ||
var sesPrimitive; | ||
sesPrimative = function (_AWS) { | ||
var sendEmail, ses; | ||
ses = _AWS.SES; | ||
sendEmail = (() => { | ||
var _ref = _asyncToGenerator(function* (src, dest, subject, body, format = "text", opts = {}) { | ||
sesPrimitive = function (SDK) { | ||
return function (configuration) { | ||
var sendEmail, ses; | ||
ses = (0, _lift.applyConfiguration)(configuration, SDK.SES); | ||
sendEmail = async function (src, dest, subject, body, format = "text", opts = {}) { | ||
var Body, Destination, Source, Subject, params; | ||
Source = src; | ||
if ((0, _fairmont.isArray)(dest)) { | ||
if ((0, _pandaParchment.isArray)(dest)) { | ||
Destination = { | ||
ToAddresses: dest | ||
}; | ||
} else if ((0, _fairmont.isObject)(dest)) { | ||
} else if ((0, _pandaParchment.isObject)(dest)) { | ||
Destination = dest; | ||
@@ -33,5 +36,7 @@ } else { | ||
} | ||
Subject = { | ||
Data: subject | ||
}; | ||
if (format === "text") { | ||
@@ -52,18 +57,24 @@ Body = { | ||
} | ||
params = { | ||
Source, | ||
Destination, | ||
Message: { Subject, Body } | ||
Message: { | ||
Subject, | ||
Body | ||
} | ||
}; | ||
params = (0, _fairmont.merge)(params, opts); | ||
return yield ses.sendEmail(params); | ||
}); | ||
params = (0, _pandaParchment.merge)(params, opts); | ||
return await ses.sendEmail(params); | ||
}; | ||
return function sendEmail(_x, _x2, _x3, _x4) { | ||
return _ref.apply(this, arguments); | ||
return { | ||
sendEmail | ||
}; | ||
})(); | ||
return { sendEmail }; | ||
}; | ||
}; | ||
exports.default = sesPrimative; | ||
var _default = sesPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvc2VzLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBQ0E7O0FBRkE7QUFBQSxJQUFBLFlBQUE7O0FBSUEsWUFBQSxHQUFlLFVBQUEsR0FBQSxFQUFBO1NBQ2IsVUFBQSxhQUFBLEVBQUE7QUFDRSxRQUFBLFNBQUEsRUFBQSxHQUFBO0FBQUEsSUFBQSxHQUFBLEdBQU0sOEJBQUEsYUFBQSxFQUFrQyxHQUFHLENBQXJDLEdBQUEsQ0FBTjs7QUFFQSxJQUFBLFNBQUEsR0FBWSxnQkFBQSxHQUFBLEVBQUEsSUFBQSxFQUFBLE9BQUEsRUFBQSxJQUFBLEVBQTJCLE1BQUEsR0FBM0IsTUFBQSxFQUEwQyxJQUFBLEdBQTFDLEVBQUEsRUFBQTtBQUNWLFVBQUEsSUFBQSxFQUFBLFdBQUEsRUFBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLE1BQUE7QUFBQSxNQUFBLE1BQUEsR0FBUyxHQUFUOztBQUNBLFVBQUcsNkJBQUgsSUFBRyxDQUFILEVBQUE7QUFDRSxRQUFBLFdBQUEsR0FBYztBQUFBLFVBQUEsV0FBQSxFQUFhO0FBQWIsU0FBZDtBQURGLE9BQUEsTUFFSyxJQUFHLDhCQUFILElBQUcsQ0FBSCxFQUFBO0FBQ0gsUUFBQSxXQUFBLEdBREcsSUFDSDtBQURHLE9BQUEsTUFBQTtBQUdILFFBQUEsV0FBQSxHQUFjO0FBQUEsVUFBQSxXQUFBLEVBQWEsQ0FBQSxJQUFBO0FBQWIsU0FBZDs7O0FBRUYsTUFBQSxPQUFBLEdBQVU7QUFBQSxRQUFBLElBQUEsRUFBTTtBQUFOLE9BQVY7O0FBQ0EsVUFBRyxNQUFBLEtBQUgsTUFBQSxFQUFBO0FBQ0UsUUFBQSxJQUFBLEdBQU87QUFBQSxVQUFBLElBQUEsRUFBTTtBQUFBLFlBQUEsSUFBQSxFQUFNO0FBQU47QUFBTixTQUFQO0FBREYsT0FBQSxNQUVLLElBQUcsTUFBQSxLQUFILE1BQUEsRUFBQTtBQUNILFFBQUEsSUFBQSxHQUFPO0FBQUEsVUFBQSxJQUFBLEVBQU07QUFBQSxZQUFBLElBQUEsRUFBTTtBQUFOO0FBQU4sU0FBUDtBQURHLE9BQUEsTUFBQTtBQUdILGNBQU0sSUFBQSxLQUFBLENBSEgscUJBR0csQ0FBTjs7O0FBRUYsTUFBQSxNQUFBLEdBQVM7QUFBQSxRQUFBLE1BQUE7QUFBQSxRQUFBLFdBQUE7QUFHUCxRQUFBLE9BQUEsRUFBUztBQUFBLFVBQUEsT0FBQTtBQUFBLFVBQUE7QUFBQTtBQUhGLE9BQVQ7QUFNQSxNQUFBLE1BQUEsR0FBUywyQkFBQSxNQUFBLEVBQUEsSUFBQSxDQUFUO0FBQ0EsYUFBQSxNQUFNLEdBQUcsQ0FBSCxTQUFBLENBQU4sTUFBTSxDQUFOO0FBeEJVLEtBQVo7O1dBMEJBO0FBQUEsTUFBQTtBQUFBLEs7QUE3QkYsRztBQURhLENBQWY7O2VBaUNlLFkiLCJzb3VyY2VzQ29udGVudCI6WyIjIFByaW1pdGl2ZXMgZm9yIHRoZSBzZXJ2aWNlIFNFUyAoc2ltcGxlIGVtYWlsIHNlcnZpY2UpLlxuaW1wb3J0IHtpc09iamVjdCwgaXNBcnJheSwgbWVyZ2V9IGZyb20gXCJwYW5kYS1wYXJjaG1lbnRcIlxuaW1wb3J0IHthcHBseUNvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9saWZ0XCJcblxuc2VzUHJpbWl0aXZlID0gKFNESykgLT5cbiAgKGNvbmZpZ3VyYXRpb24pIC0+XG4gICAgc2VzID0gYXBwbHlDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFNESy5TRVNcblxuICAgIHNlbmRFbWFpbCA9IChzcmMsIGRlc3QsIHN1YmplY3QsIGJvZHksIGZvcm1hdD1cInRleHRcIiwgb3B0cz17fSkgLT5cbiAgICAgIFNvdXJjZSA9IHNyY1xuICAgICAgaWYgaXNBcnJheSBkZXN0XG4gICAgICAgIERlc3RpbmF0aW9uID0gVG9BZGRyZXNzZXM6IGRlc3RcbiAgICAgIGVsc2UgaWYgaXNPYmplY3QgZGVzdFxuICAgICAgICBEZXN0aW5hdGlvbiA9IGRlc3RcbiAgICAgIGVsc2VcbiAgICAgICAgRGVzdGluYXRpb24gPSBUb0FkZHJlc3NlczogW2Rlc3RdXG5cbiAgICAgIFN1YmplY3QgPSBEYXRhOiBzdWJqZWN0XG4gICAgICBpZiBmb3JtYXQgPT0gXCJ0ZXh0XCJcbiAgICAgICAgQm9keSA9IFRleHQ6IERhdGE6IGJvZHlcbiAgICAgIGVsc2UgaWYgZm9ybWF0ID09IFwiaHRtbFwiXG4gICAgICAgIEJvZHkgPSBIdG1sOiBEYXRhOiBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIHRocm93IG5ldyBFcnJvciBcIlVua25vd24gYm9keSBmb3JtYXRcIlxuXG4gICAgICBwYXJhbXMgPSB7XG4gICAgICAgIFNvdXJjZVxuICAgICAgICBEZXN0aW5hdGlvblxuICAgICAgICBNZXNzYWdlOiB7U3ViamVjdCwgQm9keX1cbiAgICAgIH1cblxuICAgICAgcGFyYW1zID0gbWVyZ2UgcGFyYW1zLCBvcHRzXG4gICAgICBhd2FpdCBzZXMuc2VuZEVtYWlsIHBhcmFtc1xuXG4gICAge3NlbmRFbWFpbH1cblxuXG5leHBvcnQgZGVmYXVsdCBzZXNQcmltaXRpdmVcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=primitives/ses.coffee |
@@ -6,23 +6,30 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _lift = require("../lift"); | ||
// Primitives for the service SNS (simple notificaiton service). | ||
var snsPrimative; | ||
var snsPrimitive; | ||
snsPrimative = function (_AWS) { | ||
var sendSMS, sns; | ||
sns = _AWS.SNS; | ||
sendSMS = (() => { | ||
var _ref = _asyncToGenerator(function* (PhoneNumber, Message) { | ||
return yield sns.publish({ PhoneNumber, Message }); | ||
}); | ||
snsPrimitive = function (SDK) { | ||
return function (configuration) { | ||
var sendSMS, sns; | ||
sns = (0, _lift.applyConfiguration)(configuration, SDK.SNS); | ||
return function sendSMS(_x, _x2) { | ||
return _ref.apply(this, arguments); | ||
sendSMS = async function (PhoneNumber, Message) { | ||
return await sns.publish({ | ||
PhoneNumber, | ||
Message | ||
}); | ||
}; | ||
})(); | ||
return { sendSMS }; | ||
return { | ||
sendSMS | ||
}; | ||
}; | ||
}; | ||
exports.default = snsPrimative; | ||
var _default = snsPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvc25zLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBREE7QUFBQSxJQUFBLFlBQUE7O0FBR0EsWUFBQSxHQUFlLFVBQUEsR0FBQSxFQUFBO1NBQ2IsVUFBQSxhQUFBLEVBQUE7QUFDRSxRQUFBLE9BQUEsRUFBQSxHQUFBO0FBQUEsSUFBQSxHQUFBLEdBQU0sOEJBQUEsYUFBQSxFQUFrQyxHQUFHLENBQXJDLEdBQUEsQ0FBTjs7QUFFQSxJQUFBLE9BQUEsR0FBVSxnQkFBQSxXQUFBLEVBQUEsT0FBQSxFQUFBO0FBQ1IsYUFBQSxNQUFNLEdBQUcsQ0FBSCxPQUFBLENBQVk7QUFBQSxRQUFBLFdBQUE7QUFBbEIsUUFBQTtBQUFrQixPQUFaLENBQU47QUFEUSxLQUFWOztXQUdBO0FBQUEsTUFBQTtBQUFBLEs7QUFORixHO0FBRGEsQ0FBZjs7ZUFTZSxZIiwic291cmNlc0NvbnRlbnQiOlsiIyBQcmltaXRpdmVzIGZvciB0aGUgc2VydmljZSBTTlMgKHNpbXBsZSBub3RpZmljYWl0b24gc2VydmljZSkuXG5pbXBvcnQge2FwcGx5Q29uZmlndXJhdGlvbn0gZnJvbSBcIi4uL2xpZnRcIlxuXG5zbnNQcmltaXRpdmUgPSAoU0RLKSAtPlxuICAoY29uZmlndXJhdGlvbikgLT5cbiAgICBzbnMgPSBhcHBseUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgU0RLLlNOU1xuXG4gICAgc2VuZFNNUyA9IChQaG9uZU51bWJlciwgTWVzc2FnZSkgLT5cbiAgICAgIGF3YWl0IHNucy5wdWJsaXNoIHtQaG9uZU51bWJlciwgTWVzc2FnZX1cblxuICAgIHtzZW5kU01TfVxuXG5leHBvcnQgZGVmYXVsdCBzbnNQcmltaXRpdmVcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=primitives/sns.coffee |
@@ -6,23 +6,27 @@ "use strict"; | ||
}); | ||
exports.default = void 0; | ||
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; } | ||
var _lift = require("../lift"); | ||
// Primitives for the service Cognito. The base entity is the "user". Methods that act on other entities, like pools or clients are prefixed as such. | ||
var stsPrimative; | ||
var stsPrimitive; | ||
stsPrimative = function (_AWS) { | ||
var sts, whoAmI; | ||
sts = _AWS.STS; | ||
whoAmI = (() => { | ||
var _ref = _asyncToGenerator(function* () { | ||
return yield sts.getCallerIdentity(); | ||
}); | ||
stsPrimitive = function (SDK) { | ||
return function (configuration) { | ||
var sts, whoAmI; | ||
sts = (0, _lift.applyConfiguration)(configuration, SDK.STS); | ||
return function whoAmI() { | ||
return _ref.apply(this, arguments); | ||
whoAmI = async function () { | ||
return await sts.getCallerIdentity(); | ||
}; | ||
})(); | ||
return { whoAmI }; | ||
return { | ||
whoAmI | ||
}; | ||
}; | ||
}; | ||
exports.default = stsPrimative; | ||
var _default = stsPrimitive; | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvc3RzLmNvZmZlZSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQ0E7O0FBREE7QUFBQSxJQUFBLFlBQUE7O0FBR0EsWUFBQSxHQUFlLFVBQUEsR0FBQSxFQUFBO1NBQ2IsVUFBQSxhQUFBLEVBQUE7QUFDRSxRQUFBLEdBQUEsRUFBQSxNQUFBO0FBQUEsSUFBQSxHQUFBLEdBQU0sOEJBQUEsYUFBQSxFQUFrQyxHQUFHLENBQXJDLEdBQUEsQ0FBTjs7QUFFQSxJQUFBLE1BQUEsR0FBUyxrQkFBQTtBQUFHLGFBQUEsTUFBTSxHQUFHLENBQVQsaUJBQU0sRUFBTjtBQUFILEtBQVQ7O1dBRUE7QUFBQSxNQUFBO0FBQUEsSztBQUxGLEc7QUFEYSxDQUFmOztlQVFlLFkiLCJzb3VyY2VzQ29udGVudCI6WyIjIFByaW1pdGl2ZXMgZm9yIHRoZSBzZXJ2aWNlIENvZ25pdG8uICBUaGUgYmFzZSBlbnRpdHkgaXMgdGhlIFwidXNlclwiLiAgTWV0aG9kcyB0aGF0IGFjdCBvbiBvdGhlciBlbnRpdGllcywgbGlrZSBwb29scyBvciBjbGllbnRzIGFyZSBwcmVmaXhlZCBhcyBzdWNoLlxuaW1wb3J0IHthcHBseUNvbmZpZ3VyYXRpb259IGZyb20gXCIuLi9saWZ0XCJcblxuc3RzUHJpbWl0aXZlID0gKFNESykgLT5cbiAgKGNvbmZpZ3VyYXRpb24pIC0+XG4gICAgc3RzID0gYXBwbHlDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFNESy5TVFNcblxuICAgIHdob0FtSSA9IC0+IGF3YWl0IHN0cy5nZXRDYWxsZXJJZGVudGl0eSgpXG5cbiAgICB7d2hvQW1JfVxuXG5leHBvcnQgZGVmYXVsdCBzdHNQcmltaXRpdmVcbiJdLCJzb3VyY2VSb290IjoiIn0= | ||
//# sourceURL=primitives/sts.coffee |
@@ -6,6 +6,16 @@ "use strict"; | ||
}); | ||
exports.where = exports.notFound = void 0; | ||
var _pandaGarden = require("panda-garden"); | ||
var _pandaParchment = require("panda-parchment"); | ||
var _pandaRiver = require("panda-river"); | ||
var notFound, where; | ||
exports.where = where; | ||
exports.notFound = notFound; | ||
// Some SunDog methods return false when a resource cannot be found instead | ||
// of throwing the raw AWS error. In custom cases, that's not always 404. | ||
var notFound; | ||
exports.notFound = notFound = function (e, status = 404, code) { | ||
@@ -16,2 +26,3 @@ if ((e != null ? e.statusCode : void 0) === status) { | ||
} | ||
return false; | ||
@@ -23,2 +34,6 @@ } else { | ||
exports.notFound = notFound; | ||
exports.where = where = (0, _pandaGarden.curry)(function (example, i) { | ||
return (0, _pandaRiver.select)((0, _pandaParchment.query)(example), i); | ||
}); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByaW1pdGl2ZXMvdXRpbHMuY29mZmVlIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFGQSxJQUFBLFFBQUEsRUFBQSxLQUFBOzs7Ozs7QUFPQSxtQkFBQSxRQUFBLEdBQVcsVUFBQSxDQUFBLEVBQUksTUFBQSxHQUFKLEdBQUEsRUFBQSxJQUFBLEVBQUE7QUFDVCxNQUFBLENBQUEsQ0FBQSxJQUFBLElBQUEsR0FBRyxDQUFDLENBQUUsVUFBTixHQUFNLEtBQUgsQ0FBSCxNQUFBLE1BQUEsRUFBQTtBQUNFLFFBQVcsSUFBQSxJQUFRLENBQUMsQ0FBRCxJQUFBLEtBQW5CLElBQUEsRUFBQTtBQUFBLFlBQUEsQ0FBQTs7O1dBREYsSztBQUFBLEdBQUEsTUFBQTtBQUlFLFVBSkYsQ0FJRTs7QUFMTyxDQUFYOztBQU9BLGdCQUFBLEtBQUEsR0FBUSx3QkFBTSxVQUFBLE9BQUEsRUFBQSxDQUFBLEVBQUE7U0FBZ0Isd0JBQVEsMkJBQVIsT0FBUSxDQUFSLEVBQUEsQ0FBQSxDO0FBQXRCLENBQUEsQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Y3Vycnl9IGZyb20gXCJwYW5kYS1nYXJkZW5cIlxuaW1wb3J0IHtxdWVyeX0gZnJvbSBcInBhbmRhLXBhcmNobWVudFwiXG5pbXBvcnQge3NlbGVjdH0gZnJvbSBcInBhbmRhLXJpdmVyXCJcblxuXG4jIFNvbWUgU3VuRG9nIG1ldGhvZHMgcmV0dXJuIGZhbHNlIHdoZW4gYSByZXNvdXJjZSBjYW5ub3QgYmUgZm91bmQgaW5zdGVhZFxuIyBvZiB0aHJvd2luZyB0aGUgcmF3IEFXUyBlcnJvci4gIEluIGN1c3RvbSBjYXNlcywgdGhhdCdzIG5vdCBhbHdheXMgNDA0Llxubm90Rm91bmQgPSAoZSwgc3RhdHVzPTQwNCwgY29kZSkgLT5cbiAgaWYgZT8uc3RhdHVzQ29kZSA9PSBzdGF0dXNcbiAgICB0aHJvdyBlIGlmIGNvZGUgJiYgZS5jb2RlICE9IGNvZGVcbiAgICBmYWxzZVxuICBlbHNlXG4gICAgdGhyb3cgZVxuXG53aGVyZSA9IGN1cnJ5IChleGFtcGxlLCBpKSAtPiBzZWxlY3QgKHF1ZXJ5IGV4YW1wbGUpLCBpXG5cbmV4cG9ydCB7bm90Rm91bmQsIHdoZXJlfVxuIl0sInNvdXJjZVJvb3QiOiIifQ== | ||
//# sourceURL=primitives/utils.coffee |
{ | ||
"name": "sundog", | ||
"version": "0.0.9", | ||
"version": "1.0.0", | ||
"description": "Wrapper for the JavaScript AWS SDK, powered by Fairmont to give it a functional boost", | ||
@@ -10,3 +10,5 @@ "main": "build/npm/src/index.js", | ||
], | ||
"scripts": {}, | ||
"scripts": { | ||
"test": "gulp npm:test" | ||
}, | ||
"repository": { | ||
@@ -38,11 +40,18 @@ "type": "git", | ||
"dependencies": { | ||
"fairmont": "2.0.1", | ||
"mime": "^2.0.3" | ||
"mime": "^2.0.3", | ||
"panda-garden": "^3.0.4", | ||
"panda-generics": "^4.0.2", | ||
"panda-parchment": "^4.0.4", | ||
"panda-quill": "^3.1.1", | ||
"panda-river": "^4.3.0" | ||
}, | ||
"devDependencies": { | ||
"coffeescript": "2.1.0", | ||
"gulp": "github:gulpjs/gulp#4.0", | ||
"panda-builder": "1.1.1", | ||
"@babel/core": "^7.1.2", | ||
"@babel/preset-env": "^7.1.0", | ||
"amen": "^2.1.0", | ||
"coffeescript": "^2.3.2", | ||
"gulp": "github:gulpjs/gulp#v4.0.0", | ||
"panda-builder": "^2.4.1", | ||
"source-map-support": "^0.5.0" | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
187937
25
2646
0
6
7
2
+ Addedpanda-garden@^3.0.4
+ Addedpanda-generics@^4.0.2
+ Addedpanda-parchment@^4.0.4
+ Addedpanda-quill@^3.1.1
+ Addedpanda-river@^4.3.0
+ Addedminimatch@3.1.2(transitive)
+ Addedpanda-garden@1.0.03.5.0(transitive)
+ Addedpanda-generics@4.3.0(transitive)
+ Addedpanda-parchment@4.2.1(transitive)
+ Addedpanda-quill@3.4.5(transitive)
+ Addedpanda-river@4.4.2(transitive)
- Removedfairmont@2.0.1
- Removedbase64-words@0.2.0(transitive)
- Removedfairmont@2.0.1(transitive)
- Removedfairmont-core@1.0.1(transitive)
- Removedfairmont-filesystem@2.0.0(transitive)
- Removedfairmont-helpers@2.0.1(transitive)
- Removedfairmont-multimethods@1.0.1(transitive)
- Removedfairmont-process@2.0.0(transitive)
- Removedfairmont-reactive@2.0.0(transitive)
- Removedminimatch@2.0.10(transitive)