sundog
Wrapper for the JavaScript AWS SDK, powered by Fairmont to give it a functional boost
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:
_AWS
Lifted AWS SDK, 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
AWS "Primitives", 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.
Helpers
AWS 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.