Wrapper for the JavaScript AWS SDK, powered by Fairmont to give it a functional boost
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build/npm
src
tasks
test
.gitignore
LICENSE
README.md
gulpfile.js
package-lock.json
package.json

README.md

sundog

Wrapper for the JavaScript AWS SDK, powered by Fairmont to give it a functional boost

API

SunDog's API is divided into three pillars:

Lifted AWS SDK, _AWS

This collection is the raw SDK methods lifted from the original object. This frees them from the callback structure and wraps them in promises that we can await on. This will always have the most detailed API because we can lift them programmatically with just a little code.

AWS "Primitives", AWS

This collection is filled with relatively simple convenience methods that wrap a given AWS method. For example, S3.putObject is wrapped by put(bucketName, key, content, options). This is curried, easier to compose, and easier to work with than its object-oriented ancestor. This collection will slowly build as we have more need to write more wrappers.

AWS Helpers, Helpers

This is an class-based collection built on top of the AWS Primitives collection. There is a tension between functional and object-oriented styles. Functional forms are easier to compose, but it can be useful to map class structures to entities. SunDog uses both to achieve expressive power in this pillar. For example, Bucket is an instantiated collection of S3 "Primitives" curried on the bucket name. This organization also lets us compose novel functionality, like Bucket::selfDestruct(). This deletes a bucket and takes care of emptying for you, first. We can compose the functionality not provided directly by AWS and make it available in a portable form.