From 6fec6be409d5fc877b65889babbe9a3630fe719b Mon Sep 17 00:00:00 2001 From: kuniteru Date: Mon, 23 Sep 2013 17:58:45 +0900 Subject: [PATCH 1/4] I changes SimpleDB access library to official AWS SDK for Node.js from livelycode/aws-lib --- LICENSE.txt | 202 + README.ja-JP.md | 72 +- README.md | 59 +- node_modules/async/package.json | 2 +- node_modules/aws-sdk/.jshintignore | 1 + node_modules/aws-sdk/.jshintrc | 28 + node_modules/aws-sdk/.travis.yml | 9 + node_modules/aws-sdk/.yardopts | 13 + node_modules/aws-sdk/.yardopts_guide | 14 + node_modules/aws-sdk/LICENSE.txt | 12 + node_modules/aws-sdk/README.md | 246 + node_modules/aws-sdk/Rakefile | 55 + node_modules/aws-sdk/UPGRADING.md | 124 + node_modules/aws-sdk/configuration.sample | 5 + .../aws-sdk/doc-src/guide/Configuring.md | 196 + .../aws-sdk/doc-src/guide/Examples.md | 305 + .../aws-sdk/doc-src/guide/Installing.md | 55 + .../aws-sdk/doc-src/guide/Introduction.md | 32 + .../aws-sdk/doc-src/guide/MakingRequests.md | 309 + .../aws-sdk/doc-src/guide/Services.md | 158 + .../templates/default/layout/html/footer.erb | 44 + .../fulldoc/html/css/highlight.github.css | 127 + .../fulldoc/html/css/style.css | 1151 ++ .../fulldoc/html/img/file.png | Bin 0 -> 392 bytes .../fulldoc/html/img/logo.png | Bin 0 -> 4031 bytes .../fulldoc/html/js/app.js | 33 + .../fulldoc/html/js/doctools.js | 247 + .../fulldoc/html/js/highlight.pack.js | 1 + .../fulldoc/html/js/searchtools.js | 568 + .../fulldoc/html/js/underscore.js | 23 + .../fulldoc/html/search.erb | 29 + .../fulldoc/html/search_index.erb | 1 + .../flasky_sphinx_guide/fulldoc/html/setup.rb | 75 + .../layout/html/layout.erb | 90 + .../flasky_sphinx_guide/layout/html/setup.rb | 9 + .../layout/html/sidebar.erb | 45 + .../onefile/html/layout.erb | 51 + .../flasky_sphinx_guide/onefile/html/setup.rb | 1 + .../features/autoscaling/autoscaling.feature | 34 + .../step_definitions/autoscaling.js | 64 + .../cloudformation/cloudformation.feature | 35 + .../step_definitions/cloudformation.js | 41 + .../cloudfront/cloudfront-2012-05-05.feature | 41 + .../cloudfront/cloudfront-2013-05-12.feature | 41 + .../step_definitions/cloudfront-2012-05-05.js | 66 + .../step_definitions/cloudfront-2013-05-12.js | 69 + .../cloudfront/step_definitions/cloudfront.js | 36 + .../features/cloudsearch/cloudsearch.feature | 33 + .../step_definitions/cloudsearch.js | 52 + .../features/cloudwatch/cloudwatch.feature | 28 + .../cloudwatch/step_definitions/cloudwatch.js | 63 + .../datapipeline/datapipeline.feature | 36 + .../step_definitions/datapipeline.js | 94 + .../directconnect/directconnect.feature | 36 + .../step_definitions/directconnect.js | 76 + .../aws-sdk/features/dynamodb/crc32.feature | 31 + .../dynamodb/step_definitions/dynamodb.js | 183 + .../aws-sdk/features/dynamodb/tables.feature | 63 + node_modules/aws-sdk/features/ec2/ec2.feature | 37 + .../features/ec2/step_definitions/ec2.js | 37 + .../features/elasticache/elasticache.feature | 33 + .../step_definitions/elasticache.js | 49 + .../elasticbeanstalk/elasticbeanstalk.feature | 35 + .../step_definitions/elasticbeanstalk.js | 53 + .../elastictranscoder.feature | 37 + .../step_definitions/elastictranscoder.js | 71 + node_modules/aws-sdk/features/elb/elb.feature | 32 + .../features/elb/step_definitions/elb.js | 52 + node_modules/aws-sdk/features/emr/emr.feature | 29 + .../features/emr/step_definitions/emr.js | 60 + .../aws-sdk/features/extra/assertions.js | 44 + .../aws-sdk/features/extra/dummy.feature | 13 + .../features/extra/fixtures/testfile.txt | 1 + .../aws-sdk/features/extra/helpers.js | 128 + node_modules/aws-sdk/features/extra/hooks.js | 66 + node_modules/aws-sdk/features/extra/world.js | 25 + .../aws-sdk/features/glacier/glacier.feature | 60 + .../glacier/step_definitions/glacier.js | 127 + node_modules/aws-sdk/features/iam/iam.feature | 37 + .../features/iam/step_definitions/iam.js | 81 + .../importexport/importexport.feature | 65 + .../step_definitions/importexport.js | 57 + .../features/opsworks/opsworks.feature | 39 + .../opsworks/step_definitions/opsworks.js | 57 + node_modules/aws-sdk/features/rds/rds.feature | 40 + .../features/rds/step_definitions/rds.js | 100 + .../features/redshift/redshift.feature | 33 + .../redshift/step_definitions/redshift.js | 48 + .../aws-sdk/features/route53/route53.feature | 55 + .../route53/step_definitions/route53.js | 112 + .../aws-sdk/features/s3/buckets.feature | 53 + .../aws-sdk/features/s3/objects.feature | 109 + .../features/s3/step_definitions/buckets.js | 159 + .../features/s3/step_definitions/hooks.js | 54 + .../features/s3/step_definitions/objects.js | 168 + .../features/s3/step_definitions/proxy.js | 59 + node_modules/aws-sdk/features/ses/ses.feature | 33 + .../features/ses/step_definitions/ses.js | 37 + .../features/simpledb/simpledb.feature | 42 + .../simpledb/step_definitions/simpledb.js | 61 + .../simpleworkflow/simpleworkflow.feature | 28 + .../step_definitions/simpleworkflow.js | 49 + node_modules/aws-sdk/features/sns/sns.feature | 28 + .../features/sns/step_definitions/sns.js | 48 + .../aws-sdk/features/sqs/messages.feature | 26 + .../aws-sdk/features/sqs/queues.feature | 31 + .../features/sqs/step_definitions/messages.js | 41 + .../features/sqs/step_definitions/queues.js | 48 + .../features/sqs/step_definitions/sqs.js | 22 + .../step_definitions/storagegateway.js | 31 + .../storagegateway/storagegateway.feature | 26 + .../features/sts/step_definitions/sts.js | 38 + node_modules/aws-sdk/features/sts/sts.feature | 28 + .../support/step_definitions/support.js | 50 + .../aws-sdk/features/support/support.feature | 31 + node_modules/aws-sdk/lib/aws.js | 48 + node_modules/aws-sdk/lib/config.js | 764 ++ node_modules/aws-sdk/lib/core.js | 72 + node_modules/aws-sdk/lib/event_listeners.js | 326 + node_modules/aws-sdk/lib/http.js | 256 + node_modules/aws-sdk/lib/json/builder.js | 82 + node_modules/aws-sdk/lib/metadata_service.js | 112 + node_modules/aws-sdk/lib/param_validator.js | 154 + node_modules/aws-sdk/lib/request.js | 753 ++ .../aws-sdk/lib/sequential_executor.js | 272 + node_modules/aws-sdk/lib/service.js | 293 + .../aws-sdk/lib/service_interface/json.js | 66 + .../aws-sdk/lib/service_interface/query.js | 179 + .../aws-sdk/lib/service_interface/rest.js | 142 + .../lib/service_interface/rest_json.js | 92 + .../aws-sdk/lib/service_interface/rest_xml.js | 110 + .../services/api/autoscaling-2011-01-01.js | 1409 ++ .../services/api/cloudformation-2010-05-15.js | 601 + .../lib/services/api/cloudfront-2012-05-05.js | 2816 ++++ .../lib/services/api/cloudfront-2013-05-12.js | 3247 +++++ .../services/api/cloudsearch-2011-02-01.js | 1388 ++ .../lib/services/api/cloudwatch-2010-08-01.js | 704 + .../services/api/datapipeline-2012-10-29.js | 689 + .../services/api/directconnect-2012-10-25.js | 567 + .../lib/services/api/dynamodb-2011-12-05.js | 2047 +++ .../lib/services/api/dynamodb-2012-08-10.js | 2172 +++ .../lib/services/api/ec2-2013-06-15.js | 11103 ++++++++++++++++ .../services/api/elasticache-2012-11-15.js | 2004 +++ .../api/elasticbeanstalk-2010-12-01.js | 1470 ++ .../api/elastictranscoder-2012-09-25.js | 2220 +++ .../lib/services/api/elb-2012-06-01.js | 934 ++ .../lib/services/api/emr-2009-03-31.js | 633 + .../lib/services/api/glacier-2012-06-01.js | 862 ++ .../lib/services/api/iam-2010-05-08.js | 2180 +++ .../services/api/importexport-2010-06-01.js | 231 + .../lib/services/api/opsworks-2013-02-18.js | 2208 +++ .../lib/services/api/rds-2013-01-10.js | 4525 +++++++ .../lib/services/api/rds-2013-02-12.js | 4783 +++++++ .../lib/services/api/rds-2013-05-15.js | 4957 +++++++ .../lib/services/api/redshift-2012-12-01.js | 2835 ++++ .../lib/services/api/route53-2012-12-12.js | 814 ++ .../aws-sdk/lib/services/api/s3-2006-03-01.js | 3051 +++++ .../lib/services/api/ses-2010-12-01.js | 535 + .../lib/services/api/simpledb-2009-04-15.js | 445 + .../services/api/simpleworkflow-2012-01-25.js | 3490 +++++ .../lib/services/api/sns-2010-03-31.js | 660 + .../lib/services/api/sqs-2012-11-05.js | 574 + .../services/api/storagegateway-2012-06-30.js | 1079 ++ .../lib/services/api/sts-2011-06-15.js | 236 + .../lib/services/api/support-2013-04-15.js | 597 + .../aws-sdk/lib/services/autoscaling.js | 20 + .../aws-sdk/lib/services/cloudformation.js | 20 + .../aws-sdk/lib/services/cloudfront.js | 20 + .../aws-sdk/lib/services/cloudsearch.js | 20 + .../aws-sdk/lib/services/cloudwatch.js | 20 + .../aws-sdk/lib/services/datapipeline.js | 20 + .../aws-sdk/lib/services/directconnect.js | 20 + node_modules/aws-sdk/lib/services/dynamodb.js | 69 + node_modules/aws-sdk/lib/services/ec2.js | 44 + .../aws-sdk/lib/services/elasticache.js | 20 + .../aws-sdk/lib/services/elasticbeanstalk.js | 20 + .../aws-sdk/lib/services/elastictranscoder.js | 35 + node_modules/aws-sdk/lib/services/elb.js | 20 + node_modules/aws-sdk/lib/services/emr.js | 20 + node_modules/aws-sdk/lib/services/glacier.js | 115 + node_modules/aws-sdk/lib/services/iam.js | 20 + .../aws-sdk/lib/services/importexport.js | 20 + node_modules/aws-sdk/lib/services/opsworks.js | 20 + node_modules/aws-sdk/lib/services/rds.js | 20 + node_modules/aws-sdk/lib/services/redshift.js | 20 + node_modules/aws-sdk/lib/services/route53.js | 38 + node_modules/aws-sdk/lib/services/s3.js | 349 + node_modules/aws-sdk/lib/services/ses.js | 42 + node_modules/aws-sdk/lib/services/simpledb.js | 32 + .../aws-sdk/lib/services/simpleworkflow.js | 20 + node_modules/aws-sdk/lib/services/sns.js | 20 + node_modules/aws-sdk/lib/services/sqs.js | 125 + .../aws-sdk/lib/services/storagegateway.js | 20 + node_modules/aws-sdk/lib/services/sts.js | 20 + node_modules/aws-sdk/lib/services/support.js | 20 + .../aws-sdk/lib/signers/cloudfront.js | 32 + .../aws-sdk/lib/signers/request_signer.js | 46 + node_modules/aws-sdk/lib/signers/s3.js | 176 + node_modules/aws-sdk/lib/signers/v2.js | 60 + node_modules/aws-sdk/lib/signers/v3.js | 90 + node_modules/aws-sdk/lib/signers/v3https.js | 37 + node_modules/aws-sdk/lib/signers/v4.js | 128 + node_modules/aws-sdk/lib/util.js | 497 + node_modules/aws-sdk/lib/xml/builder.js | 93 + node_modules/aws-sdk/lib/xml/parser.js | 214 + .../aws-sdk/node_modules/xml2js/.npmignore | 2 + .../aws-sdk/node_modules/xml2js/.travis.yml | 5 + .../aws-sdk/node_modules/xml2js/Cakefile | 12 + .../aws-sdk/node_modules/xml2js/LICENSE | 19 + .../aws-sdk/node_modules/xml2js/README.md | 228 + .../aws-sdk/node_modules/xml2js/lib/xml2js.js | 250 + .../xml2js/node_modules/sax/AUTHORS | 10 + .../xml2js/node_modules/sax/LICENSE | 32 + .../xml2js/node_modules/sax/LICENSE-W3C.html | 188 + .../xml2js/node_modules/sax/README.md | 216 + .../xml2js/node_modules/sax/component.json | 12 + .../sax/examples/big-not-pretty.xml | 8002 +++++++++++ .../node_modules/sax/examples/example.js | 29 + .../node_modules/sax/examples/get-products.js | 58 + .../node_modules/sax/examples/hello-world.js | 4 + .../node_modules/sax/examples/not-pretty.xml | 8 + .../node_modules/sax/examples/pretty-print.js | 74 + .../node_modules/sax/examples/shopping.xml | 2 + .../node_modules/sax/examples/strict.dtd | 870 ++ .../node_modules/sax/examples/test.html | 15 + .../xml2js/node_modules/sax/examples/test.xml | 1254 ++ .../xml2js/node_modules/sax/lib/sax.js | 1329 ++ .../xml2js/node_modules/sax/package.json | 68 + .../node_modules/sax/test/attribute-name.js | 33 + .../node_modules/sax/test/buffer-overrun.js | 26 + .../xml2js/node_modules/sax/test/case.js | 50 + .../node_modules/sax/test/cdata-chunked.js | 11 + .../node_modules/sax/test/cdata-end-split.js | 15 + .../node_modules/sax/test/cdata-fake-end.js | 28 + .../node_modules/sax/test/cdata-multiple.js | 15 + .../xml2js/node_modules/sax/test/cdata.js | 10 + .../xml2js/node_modules/sax/test/cyrillic.js | 8 + .../sax/test/duplicate-attribute.js | 13 + .../xml2js/node_modules/sax/test/entities.js | 10 + .../node_modules/sax/test/entity-mega.js | 16 + .../xml2js/node_modules/sax/test/index.js | 86 + .../xml2js/node_modules/sax/test/issue-23.js | 43 + .../xml2js/node_modules/sax/test/issue-30.js | 24 + .../xml2js/node_modules/sax/test/issue-35.js | 15 + .../xml2js/node_modules/sax/test/issue-47.js | 12 + .../xml2js/node_modules/sax/test/issue-49.js | 31 + .../xml2js/node_modules/sax/test/issue-84.js | 13 + .../node_modules/sax/test/parser-position.js | 28 + .../sax/test/script-close-better.js | 12 + .../xml2js/node_modules/sax/test/script.js | 12 + .../sax/test/self-closing-child-strict.js | 44 + .../sax/test/self-closing-child.js | 44 + .../node_modules/sax/test/self-closing-tag.js | 25 + .../node_modules/sax/test/stray-ending.js | 17 + .../sax/test/trailing-attribute-no-value.js | 10 + .../sax/test/trailing-non-whitespace.js | 18 + .../node_modules/sax/test/unclosed-root.js | 11 + .../xml2js/node_modules/sax/test/unquoted.js | 18 + .../node_modules/sax/test/utf8-split.js | 32 + .../node_modules/sax/test/xmlns-issue-41.js | 68 + .../node_modules/sax/test/xmlns-rebinding.js | 63 + .../node_modules/sax/test/xmlns-strict.js | 74 + .../sax/test/xmlns-unbound-element.js | 33 + .../node_modules/sax/test/xmlns-unbound.js | 15 + .../sax/test/xmlns-xml-default-ns.js | 31 + .../xmlns-xml-default-prefix-attribute.js | 36 + .../sax/test/xmlns-xml-default-prefix.js | 21 + .../sax/test/xmlns-xml-default-redefine.js | 41 + .../aws-sdk/node_modules/xml2js/package.json | 105 + .../node_modules/xml2js/src/xml2js.coffee | 198 + .../xml2js/test/fixtures/sample.xml | 50 + .../xml2js/test/xml2js.test.coffee | 233 + .../node_modules/xmlbuilder/.npmignore | 8 + .../aws-sdk/node_modules/xmlbuilder/README.md | 73 + .../node_modules/xmlbuilder/lib/XMLBuilder.js | 119 + .../xmlbuilder/lib/XMLFragment.js | 422 + .../node_modules/xmlbuilder/lib/index.js | 15 + .../node_modules/xmlbuilder/package.json | 41 + node_modules/aws-sdk/package.json | 58 + node_modules/aws-sdk/scripts/console | 91 + node_modules/aws-sdk/scripts/coverage | 140 + node_modules/aws-sdk/test/config.spec.coffee | 214 + .../credential_provider_chain.spec.coffee | 102 + .../aws-sdk/test/credentials.spec.coffee | 173 + .../aws-sdk/test/endpoint.spec.coffee | 93 + .../aws-sdk/test/event_listeners.spec.coffee | 409 + node_modules/aws-sdk/test/helpers.coffee | 113 + .../aws-sdk/test/http_request.spec.coffee | 60 + .../aws-sdk/test/json/builder.spec.coffee | 78 + .../aws-sdk/test/metadata_service.spec.coffee | 66 + .../aws-sdk/test/node_http_client.spec.coffee | 44 + .../aws-sdk/test/param_validator.spec.coffee | 415 + node_modules/aws-sdk/test/request.spec.coffee | 219 + .../aws-sdk/test/response.spec.coffee | 97 + .../test/sequential_executor.spec.coffee | 104 + node_modules/aws-sdk/test/service.spec.coffee | 229 + .../test/service_interface/json.spec.coffee | 154 + .../test/service_interface/query.spec.coffee | 199 + .../query_param_serializer.spec.coffee | 290 + .../test/service_interface/rest.spec.coffee | 297 + .../service_interface/rest_json.spec.coffee | 304 + .../service_interface/rest_xml.spec.coffee | 306 + .../test/services/cloudfront.spec.coffee | 52 + .../test/services/dynamodb.spec.coffee | 45 + .../aws-sdk/test/services/ec2.spec.coffee | 67 + .../services/elastictranscoder.spec.coffee | 47 + .../aws-sdk/test/services/glacier.spec.coffee | 74 + .../aws-sdk/test/services/route53.spec.coffee | 90 + .../aws-sdk/test/services/s3.spec.coffee | 499 + .../test/services/simpledb.spec.coffee | 30 + .../aws-sdk/test/services/sqs.spec.coffee | 134 + .../aws-sdk/test/signers/s3.spec.coffee | 296 + .../aws-sdk/test/signers/v2.spec.coffee | 83 + .../aws-sdk/test/signers/v4.spec.coffee | 116 + node_modules/aws-sdk/test/util.spec.coffee | 482 + .../aws-sdk/test/xml/builder.spec.coffee | 395 + .../aws-sdk/test/xml/parser.spec.coffee | 576 + node_modules/azure/ChangeLog.txt | 6 + node_modules/azure/lib/azure.js | 35 +- .../lib/services/core/servicebussettings.js | 2 +- .../services/core/serviceclientconstants.js | 5 +- .../lib/services/core/storageserviceclient.js | 64 +- .../services/core/storageservicesettings.js | 176 +- .../websitemanagementservice.js | 712 + .../lib/services/table/batchserviceclient.js | 10 +- node_modules/azure/lib/util/constants.js | 2 +- node_modules/azure/lib/util/sdkconfig.js | 2 + .../azure/node_modules/envconf/package.json | 2 +- .../azure/node_modules/request/.npmignore | 1 + .../azure/node_modules/request/README.md | 8 +- .../azure/node_modules/request/index.js | 27 +- .../request/node_modules/form-data/Readme.md | 12 +- .../node_modules/form-data/lib/form_data.js | 53 +- .../form-data/node_modules/async/LICENSE | 19 + .../form-data/node_modules/async/README.md | 1414 ++ .../node_modules/async/component.json | 11 + .../form-data/node_modules/async/lib/async.js | 955 ++ .../form-data/node_modules/async/package.json | 42 + .../node_modules/form-data/package.json | 20 +- .../request/node_modules/hawk/Makefile | 9 +- .../request/node_modules/hawk/README.md | 15 +- .../request/node_modules/hawk/lib/browser.js | 115 +- .../request/node_modules/hawk/lib/client.js | 82 + .../request/node_modules/hawk/lib/crypto.js | 4 +- .../request/node_modules/hawk/lib/server.js | 104 +- .../request/node_modules/hawk/lib/utils.js | 23 +- .../hawk/node_modules/hoek/Makefile | 10 +- .../hawk/node_modules/hoek/lib/index.js | 47 +- .../hawk/node_modules/hoek/package.json | 6 +- .../hawk/node_modules/hoek/test/index.js | 9 + .../request/node_modules/hawk/package.json | 10 +- .../request/node_modules/hawk/test/browser.js | 48 + .../request/node_modules/hawk/test/message.js | 246 + .../request/node_modules/hawk/test/server.js | 50 +- .../request/node_modules/hawk/test/utils.js | 38 + .../json-stringify-safe/README.md | 22 + .../json-stringify-safe/package.json | 8 +- .../json-stringify-safe/stringify.js | 20 +- .../node_modules/json-stringify-safe/test.js | 38 +- .../node_modules/json-stringify-safe/x.js | 11 + .../azure/node_modules/request/package.json | 12 +- .../request/tests/test-follow-all.js | 1 + .../validator/lib/defaultError.js | 2 + .../node_modules/validator/lib/validators.js | 8 +- .../azure/node_modules/validator/lib/xss.js | 2 +- .../azure/node_modules/validator/package.json | 4 +- .../validator/test/validator.test.js | 59 + node_modules/azure/package.json | 12 +- .../azure/scripts/filter-testresults.js | 229 + node_modules/optimist/.travis.yml | 4 + node_modules/optimist/README.markdown | 26 + node_modules/optimist/example/bool.js | 10 + .../optimist/example/boolean_double.js | 7 + .../optimist/example/boolean_single.js | 7 + node_modules/optimist/example/default_hash.js | 8 + .../optimist/example/default_singles.js | 7 + node_modules/optimist/example/divide.js | 8 + node_modules/optimist/example/line_count.js | 20 + .../optimist/example/line_count_options.js | 29 + .../optimist/example/line_count_wrap.js | 29 + node_modules/optimist/example/nonopt.js | 4 + node_modules/optimist/example/reflect.js | 2 + node_modules/optimist/example/short.js | 3 + node_modules/optimist/example/string.js | 11 + .../optimist/example/usage-options.js | 19 + node_modules/optimist/example/xup.js | 10 + node_modules/optimist/index.js | 188 +- .../node_modules/minimist/.travis.yml | 4 + .../optimist/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../optimist/node_modules/minimist/index.js | 170 + .../node_modules/minimist/package.json | 50 + .../node_modules/minimist/readme.markdown | 73 + .../node_modules/minimist/test/dash.js | 17 + .../minimist/test/default_bool.js | 20 + .../node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/parse.js | 297 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/whitespace.js | 8 + .../node_modules/wordwrap/package.json | 2 +- node_modules/optimist/package.json | 24 +- node_modules/optimist/test/_.js | 91 +- node_modules/optimist/test/dash.js | 31 + node_modules/optimist/test/parse.js | 432 +- node_modules/optimist/test/parse_modified.js | 14 + node_modules/optimist/test/short.js | 16 + node_modules/optimist/test/usage.js | 180 +- node_modules/optimist/test/whitespace.js | 8 + node_modules/sprintf-js/LICENSE | 24 + node_modules/sprintf-js/README.md | 53 + node_modules/sprintf-js/package.json | 29 + node_modules/sprintf-js/src/sprintf.js | 134 + node_modules/sprintf-js/src/sprintf.min.js | 1 + node_modules/sprintf-js/test/test.html | 124 + node_modules/sprintf-js/test/test.js | 4 + node_modules/sprintf-js/test/test.php | 4 + .../util/node_modules/events.node/events.js | 209 + .../node_modules/events.node/package.json | 39 + node_modules/util/package.json | 40 + node_modules/util/util.js | 439 + package.json | 19 +- sdb2aztbl.js | 312 +- settings.json | 123 +- 424 files changed, 112723 insertions(+), 869 deletions(-) create mode 100644 LICENSE.txt create mode 100644 node_modules/aws-sdk/.jshintignore create mode 100644 node_modules/aws-sdk/.jshintrc create mode 100644 node_modules/aws-sdk/.travis.yml create mode 100644 node_modules/aws-sdk/.yardopts create mode 100644 node_modules/aws-sdk/.yardopts_guide create mode 100644 node_modules/aws-sdk/LICENSE.txt create mode 100644 node_modules/aws-sdk/README.md create mode 100644 node_modules/aws-sdk/Rakefile create mode 100644 node_modules/aws-sdk/UPGRADING.md create mode 100644 node_modules/aws-sdk/configuration.sample create mode 100644 node_modules/aws-sdk/doc-src/guide/Configuring.md create mode 100644 node_modules/aws-sdk/doc-src/guide/Examples.md create mode 100644 node_modules/aws-sdk/doc-src/guide/Installing.md create mode 100644 node_modules/aws-sdk/doc-src/guide/Introduction.md create mode 100644 node_modules/aws-sdk/doc-src/guide/MakingRequests.md create mode 100644 node_modules/aws-sdk/doc-src/guide/Services.md create mode 100644 node_modules/aws-sdk/doc-src/templates/default/layout/html/footer.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/file.png create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/logo.png create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/app.js create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/doctools.js create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/highlight.pack.js create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/searchtools.js create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/js/underscore.js create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/search_index.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/setup.rb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/layout/html/layout.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/layout/html/setup.rb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/layout/html/sidebar.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/onefile/html/layout.erb create mode 100644 node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/onefile/html/setup.rb create mode 100644 node_modules/aws-sdk/features/autoscaling/autoscaling.feature create mode 100644 node_modules/aws-sdk/features/autoscaling/step_definitions/autoscaling.js create mode 100644 node_modules/aws-sdk/features/cloudformation/cloudformation.feature create mode 100644 node_modules/aws-sdk/features/cloudformation/step_definitions/cloudformation.js create mode 100644 node_modules/aws-sdk/features/cloudfront/cloudfront-2012-05-05.feature create mode 100644 node_modules/aws-sdk/features/cloudfront/cloudfront-2013-05-12.feature create mode 100644 node_modules/aws-sdk/features/cloudfront/step_definitions/cloudfront-2012-05-05.js create mode 100644 node_modules/aws-sdk/features/cloudfront/step_definitions/cloudfront-2013-05-12.js create mode 100644 node_modules/aws-sdk/features/cloudfront/step_definitions/cloudfront.js create mode 100644 node_modules/aws-sdk/features/cloudsearch/cloudsearch.feature create mode 100644 node_modules/aws-sdk/features/cloudsearch/step_definitions/cloudsearch.js create mode 100644 node_modules/aws-sdk/features/cloudwatch/cloudwatch.feature create mode 100644 node_modules/aws-sdk/features/cloudwatch/step_definitions/cloudwatch.js create mode 100644 node_modules/aws-sdk/features/datapipeline/datapipeline.feature create mode 100644 node_modules/aws-sdk/features/datapipeline/step_definitions/datapipeline.js create mode 100644 node_modules/aws-sdk/features/directconnect/directconnect.feature create mode 100644 node_modules/aws-sdk/features/directconnect/step_definitions/directconnect.js create mode 100644 node_modules/aws-sdk/features/dynamodb/crc32.feature create mode 100644 node_modules/aws-sdk/features/dynamodb/step_definitions/dynamodb.js create mode 100644 node_modules/aws-sdk/features/dynamodb/tables.feature create mode 100644 node_modules/aws-sdk/features/ec2/ec2.feature create mode 100644 node_modules/aws-sdk/features/ec2/step_definitions/ec2.js create mode 100644 node_modules/aws-sdk/features/elasticache/elasticache.feature create mode 100644 node_modules/aws-sdk/features/elasticache/step_definitions/elasticache.js create mode 100644 node_modules/aws-sdk/features/elasticbeanstalk/elasticbeanstalk.feature create mode 100644 node_modules/aws-sdk/features/elasticbeanstalk/step_definitions/elasticbeanstalk.js create mode 100644 node_modules/aws-sdk/features/elastictranscoder/elastictranscoder.feature create mode 100644 node_modules/aws-sdk/features/elastictranscoder/step_definitions/elastictranscoder.js create mode 100644 node_modules/aws-sdk/features/elb/elb.feature create mode 100644 node_modules/aws-sdk/features/elb/step_definitions/elb.js create mode 100644 node_modules/aws-sdk/features/emr/emr.feature create mode 100644 node_modules/aws-sdk/features/emr/step_definitions/emr.js create mode 100644 node_modules/aws-sdk/features/extra/assertions.js create mode 100644 node_modules/aws-sdk/features/extra/dummy.feature create mode 100644 node_modules/aws-sdk/features/extra/fixtures/testfile.txt create mode 100644 node_modules/aws-sdk/features/extra/helpers.js create mode 100644 node_modules/aws-sdk/features/extra/hooks.js create mode 100644 node_modules/aws-sdk/features/extra/world.js create mode 100644 node_modules/aws-sdk/features/glacier/glacier.feature create mode 100644 node_modules/aws-sdk/features/glacier/step_definitions/glacier.js create mode 100644 node_modules/aws-sdk/features/iam/iam.feature create mode 100644 node_modules/aws-sdk/features/iam/step_definitions/iam.js create mode 100644 node_modules/aws-sdk/features/importexport/importexport.feature create mode 100644 node_modules/aws-sdk/features/importexport/step_definitions/importexport.js create mode 100644 node_modules/aws-sdk/features/opsworks/opsworks.feature create mode 100644 node_modules/aws-sdk/features/opsworks/step_definitions/opsworks.js create mode 100644 node_modules/aws-sdk/features/rds/rds.feature create mode 100644 node_modules/aws-sdk/features/rds/step_definitions/rds.js create mode 100644 node_modules/aws-sdk/features/redshift/redshift.feature create mode 100644 node_modules/aws-sdk/features/redshift/step_definitions/redshift.js create mode 100644 node_modules/aws-sdk/features/route53/route53.feature create mode 100644 node_modules/aws-sdk/features/route53/step_definitions/route53.js create mode 100644 node_modules/aws-sdk/features/s3/buckets.feature create mode 100644 node_modules/aws-sdk/features/s3/objects.feature create mode 100644 node_modules/aws-sdk/features/s3/step_definitions/buckets.js create mode 100644 node_modules/aws-sdk/features/s3/step_definitions/hooks.js create mode 100644 node_modules/aws-sdk/features/s3/step_definitions/objects.js create mode 100644 node_modules/aws-sdk/features/s3/step_definitions/proxy.js create mode 100644 node_modules/aws-sdk/features/ses/ses.feature create mode 100644 node_modules/aws-sdk/features/ses/step_definitions/ses.js create mode 100644 node_modules/aws-sdk/features/simpledb/simpledb.feature create mode 100644 node_modules/aws-sdk/features/simpledb/step_definitions/simpledb.js create mode 100644 node_modules/aws-sdk/features/simpleworkflow/simpleworkflow.feature create mode 100644 node_modules/aws-sdk/features/simpleworkflow/step_definitions/simpleworkflow.js create mode 100644 node_modules/aws-sdk/features/sns/sns.feature create mode 100644 node_modules/aws-sdk/features/sns/step_definitions/sns.js create mode 100644 node_modules/aws-sdk/features/sqs/messages.feature create mode 100644 node_modules/aws-sdk/features/sqs/queues.feature create mode 100644 node_modules/aws-sdk/features/sqs/step_definitions/messages.js create mode 100644 node_modules/aws-sdk/features/sqs/step_definitions/queues.js create mode 100644 node_modules/aws-sdk/features/sqs/step_definitions/sqs.js create mode 100644 node_modules/aws-sdk/features/storagegateway/step_definitions/storagegateway.js create mode 100644 node_modules/aws-sdk/features/storagegateway/storagegateway.feature create mode 100644 node_modules/aws-sdk/features/sts/step_definitions/sts.js create mode 100644 node_modules/aws-sdk/features/sts/sts.feature create mode 100644 node_modules/aws-sdk/features/support/step_definitions/support.js create mode 100644 node_modules/aws-sdk/features/support/support.feature create mode 100644 node_modules/aws-sdk/lib/aws.js create mode 100644 node_modules/aws-sdk/lib/config.js create mode 100644 node_modules/aws-sdk/lib/core.js create mode 100644 node_modules/aws-sdk/lib/event_listeners.js create mode 100644 node_modules/aws-sdk/lib/http.js create mode 100644 node_modules/aws-sdk/lib/json/builder.js create mode 100644 node_modules/aws-sdk/lib/metadata_service.js create mode 100644 node_modules/aws-sdk/lib/param_validator.js create mode 100644 node_modules/aws-sdk/lib/request.js create mode 100644 node_modules/aws-sdk/lib/sequential_executor.js create mode 100644 node_modules/aws-sdk/lib/service.js create mode 100644 node_modules/aws-sdk/lib/service_interface/json.js create mode 100644 node_modules/aws-sdk/lib/service_interface/query.js create mode 100644 node_modules/aws-sdk/lib/service_interface/rest.js create mode 100644 node_modules/aws-sdk/lib/service_interface/rest_json.js create mode 100644 node_modules/aws-sdk/lib/service_interface/rest_xml.js create mode 100644 node_modules/aws-sdk/lib/services/api/autoscaling-2011-01-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/cloudformation-2010-05-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/cloudfront-2012-05-05.js create mode 100644 node_modules/aws-sdk/lib/services/api/cloudfront-2013-05-12.js create mode 100644 node_modules/aws-sdk/lib/services/api/cloudsearch-2011-02-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/cloudwatch-2010-08-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/datapipeline-2012-10-29.js create mode 100644 node_modules/aws-sdk/lib/services/api/directconnect-2012-10-25.js create mode 100644 node_modules/aws-sdk/lib/services/api/dynamodb-2011-12-05.js create mode 100644 node_modules/aws-sdk/lib/services/api/dynamodb-2012-08-10.js create mode 100644 node_modules/aws-sdk/lib/services/api/ec2-2013-06-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/elasticache-2012-11-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/elasticbeanstalk-2010-12-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/elastictranscoder-2012-09-25.js create mode 100644 node_modules/aws-sdk/lib/services/api/elb-2012-06-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/emr-2009-03-31.js create mode 100644 node_modules/aws-sdk/lib/services/api/glacier-2012-06-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/iam-2010-05-08.js create mode 100644 node_modules/aws-sdk/lib/services/api/importexport-2010-06-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/opsworks-2013-02-18.js create mode 100644 node_modules/aws-sdk/lib/services/api/rds-2013-01-10.js create mode 100644 node_modules/aws-sdk/lib/services/api/rds-2013-02-12.js create mode 100644 node_modules/aws-sdk/lib/services/api/rds-2013-05-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/redshift-2012-12-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/route53-2012-12-12.js create mode 100644 node_modules/aws-sdk/lib/services/api/s3-2006-03-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/ses-2010-12-01.js create mode 100644 node_modules/aws-sdk/lib/services/api/simpledb-2009-04-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/simpleworkflow-2012-01-25.js create mode 100644 node_modules/aws-sdk/lib/services/api/sns-2010-03-31.js create mode 100644 node_modules/aws-sdk/lib/services/api/sqs-2012-11-05.js create mode 100644 node_modules/aws-sdk/lib/services/api/storagegateway-2012-06-30.js create mode 100644 node_modules/aws-sdk/lib/services/api/sts-2011-06-15.js create mode 100644 node_modules/aws-sdk/lib/services/api/support-2013-04-15.js create mode 100644 node_modules/aws-sdk/lib/services/autoscaling.js create mode 100644 node_modules/aws-sdk/lib/services/cloudformation.js create mode 100644 node_modules/aws-sdk/lib/services/cloudfront.js create mode 100644 node_modules/aws-sdk/lib/services/cloudsearch.js create mode 100644 node_modules/aws-sdk/lib/services/cloudwatch.js create mode 100644 node_modules/aws-sdk/lib/services/datapipeline.js create mode 100644 node_modules/aws-sdk/lib/services/directconnect.js create mode 100644 node_modules/aws-sdk/lib/services/dynamodb.js create mode 100644 node_modules/aws-sdk/lib/services/ec2.js create mode 100644 node_modules/aws-sdk/lib/services/elasticache.js create mode 100644 node_modules/aws-sdk/lib/services/elasticbeanstalk.js create mode 100644 node_modules/aws-sdk/lib/services/elastictranscoder.js create mode 100644 node_modules/aws-sdk/lib/services/elb.js create mode 100644 node_modules/aws-sdk/lib/services/emr.js create mode 100644 node_modules/aws-sdk/lib/services/glacier.js create mode 100644 node_modules/aws-sdk/lib/services/iam.js create mode 100644 node_modules/aws-sdk/lib/services/importexport.js create mode 100644 node_modules/aws-sdk/lib/services/opsworks.js create mode 100644 node_modules/aws-sdk/lib/services/rds.js create mode 100644 node_modules/aws-sdk/lib/services/redshift.js create mode 100644 node_modules/aws-sdk/lib/services/route53.js create mode 100644 node_modules/aws-sdk/lib/services/s3.js create mode 100644 node_modules/aws-sdk/lib/services/ses.js create mode 100644 node_modules/aws-sdk/lib/services/simpledb.js create mode 100644 node_modules/aws-sdk/lib/services/simpleworkflow.js create mode 100644 node_modules/aws-sdk/lib/services/sns.js create mode 100644 node_modules/aws-sdk/lib/services/sqs.js create mode 100644 node_modules/aws-sdk/lib/services/storagegateway.js create mode 100644 node_modules/aws-sdk/lib/services/sts.js create mode 100644 node_modules/aws-sdk/lib/services/support.js create mode 100644 node_modules/aws-sdk/lib/signers/cloudfront.js create mode 100644 node_modules/aws-sdk/lib/signers/request_signer.js create mode 100644 node_modules/aws-sdk/lib/signers/s3.js create mode 100644 node_modules/aws-sdk/lib/signers/v2.js create mode 100644 node_modules/aws-sdk/lib/signers/v3.js create mode 100644 node_modules/aws-sdk/lib/signers/v3https.js create mode 100644 node_modules/aws-sdk/lib/signers/v4.js create mode 100644 node_modules/aws-sdk/lib/util.js create mode 100644 node_modules/aws-sdk/lib/xml/builder.js create mode 100644 node_modules/aws-sdk/lib/xml/parser.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/xml2js/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/Cakefile create mode 100644 node_modules/aws-sdk/node_modules/xml2js/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/xml2js/README.md create mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/AUTHORS create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/LICENSE-W3C.html create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/README.md create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/component.json create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/big-not-pretty.xml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/example.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/get-products.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/hello-world.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/not-pretty.xml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/pretty-print.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/shopping.xml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/strict.dtd create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/test.html create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/examples/test.xml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/lib/sax.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/package.json create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/attribute-name.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/buffer-overrun.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/case.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cdata-chunked.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cdata-end-split.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cdata-fake-end.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cdata-multiple.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cdata.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/cyrillic.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/duplicate-attribute.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/entities.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/entity-mega.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/index.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-23.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-30.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-35.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-47.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-49.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/issue-84.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/parser-position.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/script-close-better.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/script.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/self-closing-child-strict.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/self-closing-child.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/self-closing-tag.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/stray-ending.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/trailing-attribute-no-value.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/trailing-non-whitespace.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/unclosed-root.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/unquoted.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/utf8-split.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-issue-41.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-rebinding.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-strict.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-unbound-element.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-unbound.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-ns.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-prefix-attribute.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-prefix.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/node_modules/sax/test/xmlns-xml-default-redefine.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/package.json create mode 100644 node_modules/aws-sdk/node_modules/xml2js/src/xml2js.coffee create mode 100644 node_modules/aws-sdk/node_modules/xml2js/test/fixtures/sample.xml create mode 100644 node_modules/aws-sdk/node_modules/xml2js/test/xml2js.test.coffee create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/README.md create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLFragment.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/index.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/package.json create mode 100644 node_modules/aws-sdk/package.json create mode 100644 node_modules/aws-sdk/scripts/console create mode 100644 node_modules/aws-sdk/scripts/coverage create mode 100644 node_modules/aws-sdk/test/config.spec.coffee create mode 100644 node_modules/aws-sdk/test/credential_provider_chain.spec.coffee create mode 100644 node_modules/aws-sdk/test/credentials.spec.coffee create mode 100644 node_modules/aws-sdk/test/endpoint.spec.coffee create mode 100644 node_modules/aws-sdk/test/event_listeners.spec.coffee create mode 100644 node_modules/aws-sdk/test/helpers.coffee create mode 100644 node_modules/aws-sdk/test/http_request.spec.coffee create mode 100644 node_modules/aws-sdk/test/json/builder.spec.coffee create mode 100644 node_modules/aws-sdk/test/metadata_service.spec.coffee create mode 100644 node_modules/aws-sdk/test/node_http_client.spec.coffee create mode 100644 node_modules/aws-sdk/test/param_validator.spec.coffee create mode 100644 node_modules/aws-sdk/test/request.spec.coffee create mode 100644 node_modules/aws-sdk/test/response.spec.coffee create mode 100644 node_modules/aws-sdk/test/sequential_executor.spec.coffee create mode 100644 node_modules/aws-sdk/test/service.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/json.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/query.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/query_param_serializer.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/rest.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/rest_json.spec.coffee create mode 100644 node_modules/aws-sdk/test/service_interface/rest_xml.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/cloudfront.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/dynamodb.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/ec2.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/elastictranscoder.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/glacier.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/route53.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/s3.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/simpledb.spec.coffee create mode 100644 node_modules/aws-sdk/test/services/sqs.spec.coffee create mode 100644 node_modules/aws-sdk/test/signers/s3.spec.coffee create mode 100644 node_modules/aws-sdk/test/signers/v2.spec.coffee create mode 100644 node_modules/aws-sdk/test/signers/v4.spec.coffee create mode 100644 node_modules/aws-sdk/test/util.spec.coffee create mode 100644 node_modules/aws-sdk/test/xml/builder.spec.coffee create mode 100644 node_modules/aws-sdk/test/xml/parser.spec.coffee create mode 100644 node_modules/azure/lib/services/serviceManagement/websitemanagementservice.js create mode 100644 node_modules/azure/node_modules/request/.npmignore create mode 100644 node_modules/azure/node_modules/request/node_modules/form-data/node_modules/async/LICENSE create mode 100644 node_modules/azure/node_modules/request/node_modules/form-data/node_modules/async/README.md create mode 100644 node_modules/azure/node_modules/request/node_modules/form-data/node_modules/async/component.json create mode 100644 node_modules/azure/node_modules/request/node_modules/form-data/node_modules/async/lib/async.js create mode 100644 node_modules/azure/node_modules/request/node_modules/form-data/node_modules/async/package.json create mode 100644 node_modules/azure/node_modules/request/node_modules/hawk/test/message.js create mode 100644 node_modules/azure/node_modules/request/node_modules/json-stringify-safe/x.js create mode 100644 node_modules/azure/scripts/filter-testresults.js create mode 100644 node_modules/optimist/.travis.yml create mode 100644 node_modules/optimist/example/bool.js create mode 100644 node_modules/optimist/example/boolean_double.js create mode 100644 node_modules/optimist/example/boolean_single.js create mode 100644 node_modules/optimist/example/default_hash.js create mode 100644 node_modules/optimist/example/default_singles.js create mode 100644 node_modules/optimist/example/divide.js create mode 100644 node_modules/optimist/example/line_count.js create mode 100644 node_modules/optimist/example/line_count_options.js create mode 100644 node_modules/optimist/example/line_count_wrap.js create mode 100644 node_modules/optimist/example/nonopt.js create mode 100644 node_modules/optimist/example/reflect.js create mode 100644 node_modules/optimist/example/short.js create mode 100644 node_modules/optimist/example/string.js create mode 100644 node_modules/optimist/example/usage-options.js create mode 100644 node_modules/optimist/example/xup.js create mode 100644 node_modules/optimist/node_modules/minimist/.travis.yml create mode 100644 node_modules/optimist/node_modules/minimist/LICENSE create mode 100644 node_modules/optimist/node_modules/minimist/example/parse.js create mode 100644 node_modules/optimist/node_modules/minimist/index.js create mode 100644 node_modules/optimist/node_modules/minimist/package.json create mode 100644 node_modules/optimist/node_modules/minimist/readme.markdown create mode 100644 node_modules/optimist/node_modules/minimist/test/dash.js create mode 100644 node_modules/optimist/node_modules/minimist/test/default_bool.js create mode 100644 node_modules/optimist/node_modules/minimist/test/long.js create mode 100644 node_modules/optimist/node_modules/minimist/test/parse.js create mode 100644 node_modules/optimist/node_modules/minimist/test/parse_modified.js create mode 100644 node_modules/optimist/node_modules/minimist/test/short.js create mode 100644 node_modules/optimist/node_modules/minimist/test/whitespace.js create mode 100644 node_modules/optimist/test/dash.js create mode 100644 node_modules/optimist/test/parse_modified.js create mode 100644 node_modules/optimist/test/short.js create mode 100644 node_modules/optimist/test/whitespace.js create mode 100644 node_modules/sprintf-js/LICENSE create mode 100644 node_modules/sprintf-js/README.md create mode 100644 node_modules/sprintf-js/package.json create mode 100644 node_modules/sprintf-js/src/sprintf.js create mode 100644 node_modules/sprintf-js/src/sprintf.min.js create mode 100644 node_modules/sprintf-js/test/test.html create mode 100644 node_modules/sprintf-js/test/test.js create mode 100644 node_modules/sprintf-js/test/test.php create mode 100644 node_modules/util/node_modules/events.node/events.js create mode 100644 node_modules/util/node_modules/events.node/package.json create mode 100644 node_modules/util/package.json create mode 100644 node_modules/util/util.js diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..e9a6c0e --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2013 pnop.inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.ja-JP.md b/README.ja-JP.md index 82d5117..d6ea206 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -20,23 +20,28 @@ Apache License Version 2.0 ## USAGE ## - node sdb2aztbl.js --config settings.json [ --tables table1,table2...] [--awsKey aws_access_key] [--awsSecret aws_secret_key] - [--sdbHostName sdb.ap-northeast-1.amazonaws.com] [--azureAccount azure_account] + node sdb2aztbl.js [-s] --config settings.json [ --tables table1,table2...] [--awsKey aws_access_key] [--awsSecret aws_secret_key] + [--sdbHostName us-east-1] [--azureAccount azure_account] [--azureSecret azure_secret] [--partitionKey azure_storage_partition_key_template] [--rowKey azure_storage_partition_key_template] ### 引数 ### - config 設定ファイル - tables 移行するドメイン名(テーブル名)カンマ区切りで複数指定可能 - awsKey AWSのキー - awsSecret AWSシークレットキー - sdbHostName 移行元のAmazon SimpleDBのリージョンエンドポイント デフォルトは東京リージョン - azureAccount Windows Azure Storage アカウント名 - azureSecret Windows Azure Storage シークレットキー - partitionKey "%Attribute1%-%Attribute2%" - rowKey "%Attribute1%-%Attribute2%" - -PartitionKey、RowKeyの値文字列のフォーマットが可能です、後述のPartitionKeyとRowKeyについてを確認してください。 + + +| Arg | Description | Example | +|:---------------|:--------------------------------------------------------------------------------------|:------------------------------| +| *s* | インポート時にエラーがある場合、エラーのレコードを表示し、その後インポートを継続します。 | | +| **config** | sdb2aztblの設定ファイル | `settings.json` | +| *sdbHostName* | 移行元のAmazon SimpleDBのリージョンエンドポイント、デフォルトはUS Eastリージョン | `sdb.us-east-1.amazonaws.com` | +| *awsKey* | AWSのキー | | +| *awsSecret* | AWSシークレットキー | | +| *tables* | 移行するドメイン名(テーブル名)カンマ区切りで複数指定可能 | `table1,table2` | +| *azureAccount* | Windows Azure Storage アカウント名. | | +| *azureSecret* | Windows Azure Storage シークレットキー | | +| *partitionKey* | Windows Azure TableのPartition keyフォーマット文字列 | `"%Attribute1%-%Attribute2%"` | +| *rowKey* | Windows Azure TableのRow keyフォーマット文字列. | `"%Attribute1%-%Attribute2%"` | + +`PartitionKey`と`RowKey`は、値のフォーマットが可能です。詳しくはPartitionKeyとRowKeyについてを確認してください。 ## 設定ファイル ## 引数に指定する他にsetting.jsonに指定する事も可能です。引数が指定されている場合は、引数の値が優先されます。 @@ -44,15 +49,20 @@ PartitionKey、RowKeyの値文字列のフォーマットが可能です、後 { "awsKey": "AWSのキー", "awsSecret": "AWSシークレットキー", - "sdbHostName": "移行元のAmazon SimpleDBのリージョンエンドポイント デフォルトはsdb.ap-northeast-1.amazonaws.com", + "sdbHostName": "移行元のAmazon SimpleDBのリージョンエンドポイント デフォルトはus-east-1", "azureAccount": "Windows Azure Storage アカウント名", "azureSecret": "Windows Azure Storage シークレットキー", "tables": { - "移行元のAmazon SimpleDBのドメイン名": { - "replace": { - "PartitionKey": "%Attribute1%-%Attribute2%", - "RowKey": "%Attribute1%-%Attribute2%" - }, + "Amazon SimpleDB's domain name or table name": { + "replace" : { + "PartitionKey" : { + "Value" : "%$Identity%", + "Padding" : "10" + }, + "RowKey" : { + "Value" : "%$Identity%", + } + }, "type": { "StringAttribute":"Edm.String", "IntAttribute": "Edm.Int32", @@ -81,9 +91,11 @@ SimpleDBのAttribute FirstNameとLastNameをスペースで結合して出力し ### 特殊識別子について ### - "%$ItemName%" AWS SimpleDB のItemName()列を出力します - "%$Identity%" 連番 0開始で1行づつインクリメントします - "%$Guid%" GUID値を生成します +| Identifier | Value | +|:--------------|:----------------------------------| +| "%$ItemName%" | AWS SimpleDB の`ItemName()`列を出力します. | +| "%$Identity%" | 連番 0開始で1行づつインクリメントします | +| "%$Guid%" | GUID値を生成します | これらの機能を複数組み合わせて使う事も可能です。 @@ -95,6 +107,20 @@ SimpleDBのAttribute FirstNameの値が**PNOP**であった場合、以下のよ "Azure_ACBB16CA-E78D-3B13-041-3CD2-8CC57221_PNOP_0" +### `partitionKey`と`rowKey`のゼロ埋めについて + +`PartitionKey`と`RowKey`がの場合、指定した桁数でゼロ埋めが可能です。 + + "PartitionKey" : { + "Value" : "%$Identity%", + "Padding" : "10" + }, + + +`PartitionKey`の値が1で、`Padding`の値が10の場合は以下の文字列を出力します。 + + "0000000001" + ## typeについて ## インポートする際に、明示的に型を指定する事ができます。指定が無い場合はEdm.Stringであるとしてインポートします。 @@ -136,7 +162,7 @@ SimpleDBのAttribute FirstNameの値が**PNOP**であった場合、以下のよ } ## エラー時 ## -エラー出力にエラーの内容を出力します。また、インポート時に使えない文字列や最大入力から溢れた場合や例外発生時は、その場でエラーとして停止します。 +エラー出力にエラーの内容を出力します。また、インポート時に使えない文字列や最大入力から溢れた場合や例外発生時は、その場でエラーとして停止します。`[ -s ]`が引数に指定されている場合は、エラーを出力後、処理を継続します。 ## Windows / Max OS Xのnode.jsインストール## diff --git a/README.md b/README.md index 908da94..afbbe27 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ Apache License Version 2.0 ## Usage - node sdb2aztbl.js --config settings.json [--tables table1,table2...] [--awsKey aws_access_key] [--awsSecret aws_secret_key] - [--sdbHostName sdb.ap-northeast-1.amazonaws.com] [--azureAccount azure_account] + node sdb2aztbl.js [-s] --config settings.json [--tables table1,table2...] [--awsKey aws_access_key] [--awsSecret aws_secret_key] + [--sdbHostName us-east-1] [--azureAccount azure_account] [--azureSecret azure_secret] [--partitionKey azure_storage_partition_key_template] [--rowKey azure_storage_partition_key_template] @@ -29,11 +29,12 @@ Apache License Version 2.0 | Arg | Description | Example | |:---------------|:--------------------------------------------------------------------------------------|:------------------------------| -| **config** | Configration file of sdb2aztbl. | | -| *sdbHostName* | Migration source AWS SimpleDB's region endpoint. The default value are Tokyo region. | `sdb.ap-northeast-1.amazonaws.com` | +| *s* | Import error skip mode.It does not stop when an error occurs | | +| **config** | Configration file of sdb2aztbl. | `settings.json` | +| *sdbHostName* | Migration source AWS SimpleDB's region endpoint. The default value are Tokyo region. | `us-east-1` | | *awsKey* | Key of AWS | | | *awsSecret* | Sercret key of AWS | | -| *tables* | Migration source domain name (or table name) to be migrated, comma delimited. | | +| *tables* | Migration source domain name (or table name) to be migrated, comma delimited. | `name1,name2` | | *azureAccount* | Migration destination Windows Azure Table storage account name. | | | *azureSecret* | Migration destination Windows Azure Table storage account sercret key. | | | *partitionKey* | Format string of the Windows Azure Table's partition key. | `"%Attribute1%-%Attribute2%"` | @@ -49,15 +50,20 @@ The sdb2aztbl can configured other details from `setting.json`. If you configure { "awsKey": "", "awsSecret": "", - "sdbHostName": "sdb.ap-northeast-1.amazonaws.com", + "sdbHostName": "us-east-1", "azureAccount": "", "azureSecret": "", "tables": { "Amazon SimpleDB's domain name or table name": { - "replace": { - "PartitionKey": "%Attribute1%-%Attribute2%", - "RowKey": "%Attribute1%-%Attribute2%" - }, + "replace" : { + "PartitionKey" : { + "Value" : "%$Identity%", + "Padding" : "10" + }, + "RowKey" : { + "Value" : "%$Identity%", + } + }, "type": { "StringAttribute":"Edm.String", "IntAttribute": "Edm.Int32", @@ -67,7 +73,7 @@ The sdb2aztbl can configured other details from `setting.json`. If you configure "GUIDAttribute": "Edm.Guid", "DateTimeAttribute": "Edm.DateTime" }, - "where": "`BoolTest` = '1'" + "where": "`BoolAttribute` = '1'" } } } @@ -76,11 +82,11 @@ The sdb2aztbl can configured other details from `setting.json`. If you configure You can formatting value of `partitionKey` and `rowKey`. - "partitionKey": "Any value of the fixed" + "partitionKey": { "value":"Any value of the fixed"} You will output the value of any directly. In the following example, The `partitionKey` combined FirstName and LastName attribute of SimpleDB. - "partitionKey": "%FirstName% %LastName%" + "partitionKey": {"Value":"%FirstName% %LastName%"} ### Special identifier @@ -98,6 +104,19 @@ If the value of the Attribute FirstName of SimpleDB was ** PNOP **, PartitionKey "Azure_ACBB16CA-E78D-3B13-041-3CD2-8CC57221_PNOP_0" +### About `partitionKey` and `rowKey` padding + +If RowKey and PartitionKey is numeric, Zero Padding of digits that you specify is possible. + + "PartitionKey" : { + "Value" : "%$Identity%", + "Padding" : "10" + }, + +PartitionKey similar to the following is generated. + + "0000000001" + ### About `type` key When you import, you can specify the type explicitly. The sdb2aztbl will import as a Edm.String If not specified. The type can be one of the following types that can be specified in the Windows Azure. @@ -116,10 +135,15 @@ Notes: You do not designate type a `partitionKey` and `rowKey`. "tables": { "Migration source Amazon SimpleDB's domain name": { - "replace": { - "PartitionKey": "%Attribute1%-%Attribute2%", - "RowKey": "%Attribute1%-%Attribute2%" - }, + "replace" : { + "PartitionKey" : { + "Value" : "%Attribute1%-%Attribute2%", + }, + "RowKey" : { + "Value" : "%$Identity%", + "Padding" : "10" + } + }, "type": { "PartitionKey": "Edm.String", "RowKey": "Edm.String", @@ -137,6 +161,7 @@ Notes: You do not designate type a `partitionKey` and `rowKey`. ## Errors The sdb2aztbl's error detail output to standard error output. And sdb2aztbl stop immediately when caught the exception. (ex: string cannot be used for import) +[ -s ] argument is specified, it does not stop when an error occurs. ## How to install node.js on Windows / Max OS X diff --git a/node_modules/async/package.json b/node_modules/async/package.json index 379c42c..94a9863 100644 --- a/node_modules/async/package.json +++ b/node_modules/async/package.json @@ -38,5 +38,5 @@ "readme": "# Async.js\n\nAsync is a utility module which provides straight-forward, powerful functions\nfor working with asynchronous JavaScript. Although originally designed for\nuse with [node.js](http://nodejs.org), it can also be used directly in the\nbrowser. Also supports [component](https://github.com/component/component).\n\nAsync provides around 20 functions that include the usual 'functional'\nsuspects (map, reduce, filter, each…) as well as some common patterns\nfor asynchronous control flow (parallel, series, waterfall…). All these\nfunctions assume you follow the node.js convention of providing a single\ncallback as the last argument of your async function.\n\n\n## Quick Examples\n\n```javascript\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n\nasync.parallel([\n function(){ ... },\n function(){ ... }\n], callback);\n\nasync.series([\n function(){ ... },\n function(){ ... }\n]);\n```\n\nThere are many more functions available so take a look at the docs below for a\nfull list. This module aims to be comprehensive, so if you feel anything is\nmissing please create a GitHub issue for it.\n\n## Common Pitfalls\n\n### Binding a context to an iterator\n\nThis section is really about bind, not about async. If you are wondering how to\nmake async execute your iterators in a given context, or are confused as to why\na method of another library isn't working as an iterator, study this example:\n\n```js\n// Here is a simple object with an (unnecessarily roundabout) squaring method\nvar AsyncSquaringLibrary = {\n squareExponent: 2,\n square: function(number, callback){ \n var result = Math.pow(number, this.squareExponent);\n setTimeout(function(){\n callback(null, result);\n }, 200);\n }\n};\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square, function(err, result){\n // result is [NaN, NaN, NaN]\n // This fails because the `this.squareExponent` expression in the square\n // function is not evaluated in the context of AsyncSquaringLibrary, and is\n // therefore undefined.\n});\n\nasync.map([1, 2, 3], AsyncSquaringLibrary.square.bind(AsyncSquaringLibrary), function(err, result){\n // result is [1, 4, 9]\n // With the help of bind we can attach a context to the iterator before\n // passing it to async. Now the square function will be executed in its \n // 'home' AsyncSquaringLibrary context and the value of `this.squareExponent`\n // will be as expected.\n});\n```\n\n## Download\n\nThe source is available for download from\n[GitHub](http://github.com/caolan/async).\nAlternatively, you can install using Node Package Manager (npm):\n\n npm install async\n\n__Development:__ [async.js](https://github.com/caolan/async/raw/master/lib/async.js) - 29.6kb Uncompressed\n\n## In the Browser\n\nSo far it's been tested in IE6, IE7, IE8, FF3.6 and Chrome 5. Usage:\n\n```html\n\n\n```\n\n## Documentation\n\n### Collections\n\n* [each](#each)\n* [map](#map)\n* [filter](#filter)\n* [reject](#reject)\n* [reduce](#reduce)\n* [detect](#detect)\n* [sortBy](#sortBy)\n* [some](#some)\n* [every](#every)\n* [concat](#concat)\n\n### Control Flow\n\n* [series](#series)\n* [parallel](#parallel)\n* [whilst](#whilst)\n* [doWhilst](#doWhilst)\n* [until](#until)\n* [doUntil](#doUntil)\n* [forever](#forever)\n* [waterfall](#waterfall)\n* [compose](#compose)\n* [applyEach](#applyEach)\n* [queue](#queue)\n* [cargo](#cargo)\n* [auto](#auto)\n* [iterator](#iterator)\n* [apply](#apply)\n* [nextTick](#nextTick)\n* [times](#times)\n* [timesSeries](#timesSeries)\n\n### Utils\n\n* [memoize](#memoize)\n* [unmemoize](#unmemoize)\n* [log](#log)\n* [dir](#dir)\n* [noConflict](#noConflict)\n\n\n## Collections\n\n\n\n### each(arr, iterator, callback)\n\nApplies an iterator function to each item in an array, in parallel.\nThe iterator is called with an item from the list and a callback for when it\nhas finished. If the iterator passes an error to this callback, the main\ncallback for the each function is immediately called with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n```js\n// assuming openFiles is an array of file names and saveFile is a function\n// to save the modified contents of that file:\n\nasync.each(openFiles, saveFile, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n\n\n### eachSeries(arr, iterator, callback)\n\nThe same as each only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. This means the iterator functions will complete in order.\n\n\n---------------------------------------\n\n\n\n### eachLimit(arr, limit, iterator, callback)\n\nThe same as each only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err) which must be called once it has \n completed. If no error has occured, the callback should be run without \n arguments or with an explicit null argument.\n* callback(err) - A callback which is called after all the iterator functions\n have finished, or an error has occurred.\n\n__Example__\n\n```js\n// Assume documents is an array of JSON objects and requestApi is a\n// function that interacts with a rate-limited REST api.\n\nasync.eachLimit(documents, 20, requestApi, function(err){\n // if any of the saves produced an error, err would equal that error\n});\n```\n\n---------------------------------------\n\n\n### map(arr, iterator, callback)\n\nProduces a new array of values by mapping each value in the given array through\nthe iterator function. The iterator is called with an item from the array and a\ncallback for when it has finished processing. The callback takes 2 arguments, \nan error and the transformed item from the array. If the iterator passes an\nerror to this callback, the main callback for the map function is immediately\ncalled with the error.\n\nNote, that since this function applies the iterator to each item in parallel\nthere is no guarantee that the iterator functions will complete in order, however\nthe results array will be in the same order as the original array.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, transformed) which must be called once \n it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n### mapSeries(arr, iterator, callback)\n\nThe same as map only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n---------------------------------------\n\n\n### mapLimit(arr, limit, iterator, callback)\n\nThe same as map only no more than \"limit\" iterators will be simultaneously \nrunning at any time.\n\nNote that the items are not processed in batches, so there is no guarantee that\n the first \"limit\" iterator functions will complete before any others are \nstarted.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* limit - The maximum number of iterators to run at any time.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, transformed) which must be called once \n it has completed with an error (which can be null) and a transformed item.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array of the\n transformed items from the original array.\n\n__Example__\n\n```js\nasync.map(['file1','file2','file3'], 1, fs.stat, function(err, results){\n // results is now an array of stats for each file\n});\n```\n\n---------------------------------------\n\n\n### filter(arr, iterator, callback)\n\n__Alias:__ select\n\nReturns a new array of all the values which pass an async truth test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. This operation is\nperformed in parallel, but the results array will be in the same order as the\noriginal.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(results) - A callback which is called after all the iterator\n functions have finished.\n\n__Example__\n\n```js\nasync.filter(['file1','file2','file3'], fs.exists, function(results){\n // results now equals an array of the existing files\n});\n```\n\n---------------------------------------\n\n\n### filterSeries(arr, iterator, callback)\n\n__alias:__ selectSeries\n\nThe same as filter only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n---------------------------------------\n\n\n### reject(arr, iterator, callback)\n\nThe opposite of filter. Removes values that pass an async truth test.\n\n---------------------------------------\n\n\n### rejectSeries(arr, iterator, callback)\n\nThe same as reject, only the iterator is applied to each item in the array\nin series.\n\n\n---------------------------------------\n\n\n### reduce(arr, memo, iterator, callback)\n\n__aliases:__ inject, foldl\n\nReduces a list of values into a single value using an async iterator to return\neach successive step. Memo is the initial state of the reduction. This\nfunction only operates in series. For performance reasons, it may make sense to\nsplit a call to this function into a parallel map, then use the normal\nArray.prototype.reduce on the results. This function is for situations where\neach step in the reduction needs to be async, if you can get the data before\nreducing it then it's probably a good idea to do so.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* memo - The initial state of the reduction.\n* iterator(memo, item, callback) - A function applied to each item in the\n array to produce the next step in the reduction. The iterator is passed a\n callback(err, reduction) which accepts an optional error as its first \n argument, and the state of the reduction as the second. If an error is \n passed to the callback, the reduction is stopped and the main callback is \n immediately called with the error.\n* callback(err, result) - A callback which is called after all the iterator\n functions have finished. Result is the reduced value.\n\n__Example__\n\n```js\nasync.reduce([1,2,3], 0, function(memo, item, callback){\n // pointless async:\n process.nextTick(function(){\n callback(null, memo + item)\n });\n}, function(err, result){\n // result is now equal to the last value of memo, which is 6\n});\n```\n\n---------------------------------------\n\n\n### reduceRight(arr, memo, iterator, callback)\n\n__Alias:__ foldr\n\nSame as reduce, only operates on the items in the array in reverse order.\n\n\n---------------------------------------\n\n\n### detect(arr, iterator, callback)\n\nReturns the first value in a list that passes an async truth test. The\niterator is applied in parallel, meaning the first iterator to return true will\nfire the detect callback with that result. That means the result might not be\nthe first item in the original array (in terms of order) that passes the test.\n\nIf order within the original array is important then look at detectSeries.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n the first item in the array that passes the truth test (iterator) or the\n value undefined if none passed.\n\n__Example__\n\n```js\nasync.detect(['file1','file2','file3'], fs.exists, function(result){\n // result now equals the first file in the list that exists\n});\n```\n\n---------------------------------------\n\n\n### detectSeries(arr, iterator, callback)\n\nThe same as detect, only the iterator is applied to each item in the array\nin series. This means the result is always the first in the original array (in\nterms of array order) that passes the truth test.\n\n\n---------------------------------------\n\n\n### sortBy(arr, iterator, callback)\n\nSorts a list by the results of running each value through an async iterator.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, sortValue) which must be called once it\n has completed with an error (which can be null) and a value to use as the sort\n criteria.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is the items from\n the original array sorted by the values returned by the iterator calls.\n\n__Example__\n\n```js\nasync.sortBy(['file1','file2','file3'], function(file, callback){\n fs.stat(file, function(err, stats){\n callback(err, stats.mtime);\n });\n}, function(err, results){\n // results is now the original array of files sorted by\n // modified date\n});\n```\n\n---------------------------------------\n\n\n### some(arr, iterator, callback)\n\n__Alias:__ any\n\nReturns true if at least one element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists. Once any iterator\ncall returns true, the main callback is immediately called.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called as soon as any iterator returns\n true, or after all the iterator functions have finished. Result will be\n either true or false depending on the values of the async tests.\n\n__Example__\n\n```js\nasync.some(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then at least one of the files exists\n});\n```\n\n---------------------------------------\n\n\n### every(arr, iterator, callback)\n\n__Alias:__ all\n\nReturns true if every element in the array satisfies an async test.\n_The callback for each iterator call only accepts a single argument of true or\nfalse, it does not accept an error argument first!_ This is in-line with the\nway node libraries work with truth tests like fs.exists.\n\n__Arguments__\n\n* arr - An array to iterate over.\n* iterator(item, callback) - A truth test to apply to each item in the array.\n The iterator is passed a callback(truthValue) which must be called with a \n boolean argument once it has completed.\n* callback(result) - A callback which is called after all the iterator\n functions have finished. Result will be either true or false depending on\n the values of the async tests.\n\n__Example__\n\n```js\nasync.every(['file1','file2','file3'], fs.exists, function(result){\n // if result is true then every file exists\n});\n```\n\n---------------------------------------\n\n\n### concat(arr, iterator, callback)\n\nApplies an iterator to each item in a list, concatenating the results. Returns the\nconcatenated list. The iterators are called in parallel, and the results are\nconcatenated as they return. There is no guarantee that the results array will\nbe returned in the original order of the arguments passed to the iterator function.\n\n__Arguments__\n\n* arr - An array to iterate over\n* iterator(item, callback) - A function to apply to each item in the array.\n The iterator is passed a callback(err, results) which must be called once it \n has completed with an error (which can be null) and an array of results.\n* callback(err, results) - A callback which is called after all the iterator\n functions have finished, or an error has occurred. Results is an array containing\n the concatenated results of the iterator function.\n\n__Example__\n\n```js\nasync.concat(['dir1','dir2','dir3'], fs.readdir, function(err, files){\n // files is now a list of filenames that exist in the 3 directories\n});\n```\n\n---------------------------------------\n\n\n### concatSeries(arr, iterator, callback)\n\nSame as async.concat, but executes in series instead of parallel.\n\n\n## Control Flow\n\n\n### series(tasks, [callback])\n\nRun an array of functions in series, each one running once the previous\nfunction has completed. If any functions in the series pass an error to its\ncallback, no more functions are run and the callback for the series is\nimmediately called with the value of the error. Once the tasks have completed,\nthe results are passed to the final callback as an array.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.series.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed\n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.series([\n function(callback){\n // do some stuff ...\n callback(null, 'one');\n },\n function(callback){\n // do some more stuff ...\n callback(null, 'two');\n }\n],\n// optional callback\nfunction(err, results){\n // results is now equal to ['one', 'two']\n});\n\n\n// an example using an object instead of an array\nasync.series({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equal to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallel(tasks, [callback])\n\nRun an array of functions in parallel, without waiting until the previous\nfunction has completed. If any of the functions pass an error to its\ncallback, the main callback is immediately called with the value of the error.\nOnce the tasks have completed, the results are passed to the final callback as an\narray.\n\nIt is also possible to use an object instead of an array. Each property will be\nrun as a function and the results will be passed to the final callback as an object\ninstead of an array. This can be a more readable way of handling results from\nasync.parallel.\n\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n__Example__\n\n```js\nasync.parallel([\n function(callback){\n setTimeout(function(){\n callback(null, 'one');\n }, 200);\n },\n function(callback){\n setTimeout(function(){\n callback(null, 'two');\n }, 100);\n }\n],\n// optional callback\nfunction(err, results){\n // the results array will equal ['one','two'] even though\n // the second function had a shorter timeout.\n});\n\n\n// an example using an object instead of an array\nasync.parallel({\n one: function(callback){\n setTimeout(function(){\n callback(null, 1);\n }, 200);\n },\n two: function(callback){\n setTimeout(function(){\n callback(null, 2);\n }, 100);\n }\n},\nfunction(err, results) {\n // results is now equals to: {one: 1, two: 2}\n});\n```\n\n---------------------------------------\n\n\n### parallelLimit(tasks, limit, [callback])\n\nThe same as parallel only the tasks are executed in parallel with a maximum of \"limit\" \ntasks executing at any time.\n\nNote that the tasks are not executed in batches, so there is no guarantee that \nthe first \"limit\" tasks will complete before any others are started.\n\n__Arguments__\n\n* tasks - An array or object containing functions to run, each function is passed \n a callback(err, result) it must call on completion with an error (which can\n be null) and an optional result value.\n* limit - The maximum number of tasks to run at any time.\n* callback(err, results) - An optional callback to run once all the functions\n have completed. This function gets a results array (or object) containing all \n the result arguments passed to the task callbacks.\n\n---------------------------------------\n\n\n### whilst(test, fn, callback)\n\nRepeatedly call fn, while test returns true. Calls the callback when stopped,\nor an error occurs.\n\n__Arguments__\n\n* test() - synchronous truth test to perform before each execution of fn.\n* fn(callback) - A function to call each time the test passes. The function is\n passed a callback(err) which must be called once it has completed with an \n optional error argument.\n* callback(err) - A callback which is called after the test fails and repeated\n execution of fn has stopped.\n\n__Example__\n\n```js\nvar count = 0;\n\nasync.whilst(\n function () { return count < 5; },\n function (callback) {\n count++;\n setTimeout(callback, 1000);\n },\n function (err) {\n // 5 seconds have passed\n }\n);\n```\n\n---------------------------------------\n\n\n### doWhilst(fn, test, callback)\n\nThe post check version of whilst. To reflect the difference in the order of operations `test` and `fn` arguments are switched. `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n\n---------------------------------------\n\n\n### until(test, fn, callback)\n\nRepeatedly call fn, until test returns true. Calls the callback when stopped,\nor an error occurs.\n\nThe inverse of async.whilst.\n\n---------------------------------------\n\n\n### doUntil(fn, test, callback)\n\nLike doWhilst except the test is inverted. Note the argument ordering differs from `until`.\n\n---------------------------------------\n\n\n### forever(fn, callback)\n\nCalls the asynchronous function 'fn' repeatedly, in series, indefinitely.\nIf an error is passed to fn's callback then 'callback' is called with the\nerror, otherwise it will never be called.\n\n---------------------------------------\n\n\n### waterfall(tasks, [callback])\n\nRuns an array of functions in series, each passing their results to the next in\nthe array. However, if any of the functions pass an error to the callback, the\nnext function is not executed and the main callback is immediately called with\nthe error.\n\n__Arguments__\n\n* tasks - An array of functions to run, each function is passed a \n callback(err, result1, result2, ...) it must call on completion. The first\n argument is an error (which can be null) and any further arguments will be \n passed as arguments in order to the next task.\n* callback(err, [results]) - An optional callback to run once all the functions\n have completed. This will be passed the results of the last task's callback.\n\n\n\n__Example__\n\n```js\nasync.waterfall([\n function(callback){\n callback(null, 'one', 'two');\n },\n function(arg1, arg2, callback){\n callback(null, 'three');\n },\n function(arg1, callback){\n // arg1 now equals 'three'\n callback(null, 'done');\n }\n], function (err, result) {\n // result now equals 'done' \n});\n```\n\n---------------------------------------\n\n### compose(fn1, fn2...)\n\nCreates a function which is a composition of the passed asynchronous\nfunctions. Each function consumes the return value of the function that\nfollows. Composing functions f(), g() and h() would produce the result of\nf(g(h())), only this version uses callbacks to obtain the return values.\n\nEach function is executed with the `this` binding of the composed function.\n\n__Arguments__\n\n* functions... - the asynchronous functions to compose\n\n\n__Example__\n\n```js\nfunction add1(n, callback) {\n setTimeout(function () {\n callback(null, n + 1);\n }, 10);\n}\n\nfunction mul3(n, callback) {\n setTimeout(function () {\n callback(null, n * 3);\n }, 10);\n}\n\nvar add1mul3 = async.compose(mul3, add1);\n\nadd1mul3(4, function (err, result) {\n // result now equals 15\n});\n```\n\n---------------------------------------\n\n### applyEach(fns, args..., callback)\n\nApplies the provided arguments to each function in the array, calling the\ncallback after all functions have completed. If you only provide the first\nargument then it will return a function which lets you pass in the\narguments as if it were a single function call.\n\n__Arguments__\n\n* fns - the asynchronous functions to all call with the same arguments\n* args... - any number of separate arguments to pass to the function\n* callback - the final argument should be the callback, called when all\n functions have completed processing\n\n\n__Example__\n\n```js\nasync.applyEach([enableSearch, updateSchema], 'bucket', callback);\n\n// partial application example:\nasync.each(\n buckets,\n async.applyEach([enableSearch, updateSchema]),\n callback\n);\n```\n\n---------------------------------------\n\n\n### applyEachSeries(arr, iterator, callback)\n\nThe same as applyEach only the functions are applied in series.\n\n---------------------------------------\n\n\n### queue(worker, concurrency)\n\nCreates a queue object with the specified concurrency. Tasks added to the\nqueue will be processed in parallel (up to the concurrency limit). If all\nworkers are in progress, the task is queued until one is available. Once\na worker has completed a task, the task's callback is called.\n\n__Arguments__\n\n* worker(task, callback) - An asynchronous function for processing a queued\n task, which must call its callback(err) argument when finished, with an \n optional error as an argument.\n* concurrency - An integer for determining how many worker functions should be\n run in parallel.\n\n__Queue objects__\n\nThe queue object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* concurrency - an integer for determining how many worker functions should be\n run in parallel. This property can be changed after a queue is created to\n alter the concurrency on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* unshift(task, [callback]) - add a new task to the front of the queue.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a queue object with concurrency 2\n\nvar q = async.queue(function (task, callback) {\n console.log('hello ' + task.name);\n callback();\n}, 2);\n\n\n// assign a callback\nq.drain = function() {\n console.log('all items have been processed');\n}\n\n// add some items to the queue\n\nq.push({name: 'foo'}, function (err) {\n console.log('finished processing foo');\n});\nq.push({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the queue (batch-wise)\n\nq.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function (err) {\n console.log('finished processing bar');\n});\n\n// add some items to the front of the queue\n\nq.unshift({name: 'bar'}, function (err) {\n console.log('finished processing bar');\n});\n```\n\n---------------------------------------\n\n\n### cargo(worker, [payload])\n\nCreates a cargo object with the specified payload. Tasks added to the\ncargo will be processed altogether (up to the payload limit). If the\nworker is in progress, the task is queued until it is available. Once\nthe worker has completed some tasks, each callback of those tasks is called.\n\n__Arguments__\n\n* worker(tasks, callback) - An asynchronous function for processing an array of\n queued tasks, which must call its callback(err) argument when finished, with \n an optional error as an argument.\n* payload - An optional integer for determining how many tasks should be\n processed per round; if omitted, the default is unlimited.\n\n__Cargo objects__\n\nThe cargo object returned by this function has the following properties and\nmethods:\n\n* length() - a function returning the number of items waiting to be processed.\n* payload - an integer for determining how many tasks should be\n process per round. This property can be changed after a cargo is created to\n alter the payload on-the-fly.\n* push(task, [callback]) - add a new task to the queue, the callback is called\n once the worker has finished processing the task.\n instead of a single task, an array of tasks can be submitted. the respective callback is used for every task in the list.\n* saturated - a callback that is called when the queue length hits the concurrency and further tasks will be queued\n* empty - a callback that is called when the last item from the queue is given to a worker\n* drain - a callback that is called when the last item from the queue has returned from the worker\n\n__Example__\n\n```js\n// create a cargo object with payload 2\n\nvar cargo = async.cargo(function (tasks, callback) {\n for(var i=0; i\n### auto(tasks, [callback])\n\nDetermines the best order for running functions based on their requirements.\nEach function can optionally depend on other functions being completed first,\nand each function is run as soon as its requirements are satisfied. If any of\nthe functions pass an error to their callback, that function will not complete\n(so any other functions depending on it will not run) and the main callback\nwill be called immediately with the error. Functions also receive an object\ncontaining the results of functions which have completed so far.\n\nNote, all functions are called with a results object as a second argument, \nso it is unsafe to pass functions in the tasks object which cannot handle the\nextra argument. For example, this snippet of code:\n\n```js\nasync.auto({\n readData: async.apply(fs.readFile, 'data.txt', 'utf-8');\n}, callback);\n```\n\nwill have the effect of calling readFile with the results object as the last\nargument, which will fail:\n\n```js\nfs.readFile('data.txt', 'utf-8', cb, {});\n```\n\nInstead, wrap the call to readFile in a function which does not forward the \nresults object:\n\n```js\nasync.auto({\n readData: function(cb, results){\n fs.readFile('data.txt', 'utf-8', cb);\n }\n}, callback);\n```\n\n__Arguments__\n\n* tasks - An object literal containing named functions or an array of\n requirements, with the function itself the last item in the array. The key\n used for each function or array is used when specifying requirements. The \n function receives two arguments: (1) a callback(err, result) which must be \n called when finished, passing an error (which can be null) and the result of \n the function's execution, and (2) a results object, containing the results of\n the previously executed functions.\n* callback(err, results) - An optional callback which is called when all the\n tasks have been completed. The callback will receive an error as an argument\n if any tasks pass an error to their callback. Results will always be passed\n\tbut if an error occurred, no other tasks will be performed, and the results\n\tobject will only contain partial results.\n \n\n__Example__\n\n```js\nasync.auto({\n get_data: function(callback){\n // async code to get some data\n },\n make_folder: function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n },\n write_file: ['get_data', 'make_folder', function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n callback(null, filename);\n }],\n email_link: ['write_file', function(callback, results){\n // once the file is written let's email a link to it...\n // results.write_file contains the filename returned by write_file.\n }]\n});\n```\n\nThis is a fairly trivial example, but to do this using the basic parallel and\nseries functions would look like this:\n\n```js\nasync.parallel([\n function(callback){\n // async code to get some data\n },\n function(callback){\n // async code to create a directory to store a file in\n // this is run at the same time as getting the data\n }\n],\nfunction(err, results){\n async.series([\n function(callback){\n // once there is some data and the directory exists,\n // write the data to a file in the directory\n },\n function(callback){\n // once the file is written let's email a link to it...\n }\n ]);\n});\n```\n\nFor a complicated series of async tasks using the auto function makes adding\nnew tasks much easier and makes the code more readable.\n\n\n---------------------------------------\n\n\n### iterator(tasks)\n\nCreates an iterator function which calls the next function in the array,\nreturning a continuation to call the next one after that. It's also possible to\n'peek' the next iterator by doing iterator.next().\n\nThis function is used internally by the async module but can be useful when\nyou want to manually control the flow of functions in series.\n\n__Arguments__\n\n* tasks - An array of functions to run.\n\n__Example__\n\n```js\nvar iterator = async.iterator([\n function(){ sys.p('one'); },\n function(){ sys.p('two'); },\n function(){ sys.p('three'); }\n]);\n\nnode> var iterator2 = iterator();\n'one'\nnode> var iterator3 = iterator2();\n'two'\nnode> iterator3();\n'three'\nnode> var nextfn = iterator2.next();\nnode> nextfn();\n'three'\n```\n\n---------------------------------------\n\n\n### apply(function, arguments..)\n\nCreates a continuation function with some arguments already applied, a useful\nshorthand when combined with other control flow functions. Any arguments\npassed to the returned function are added to the arguments originally passed\nto apply.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to automatically apply when the\n continuation is called.\n\n__Example__\n\n```js\n// using apply\n\nasync.parallel([\n async.apply(fs.writeFile, 'testfile1', 'test1'),\n async.apply(fs.writeFile, 'testfile2', 'test2'),\n]);\n\n\n// the same process without using apply\n\nasync.parallel([\n function(callback){\n fs.writeFile('testfile1', 'test1', callback);\n },\n function(callback){\n fs.writeFile('testfile2', 'test2', callback);\n }\n]);\n```\n\nIt's possible to pass any number of additional arguments when calling the\ncontinuation:\n\n```js\nnode> var fn = async.apply(sys.puts, 'one');\nnode> fn('two', 'three');\none\ntwo\nthree\n```\n\n---------------------------------------\n\n\n### nextTick(callback)\n\nCalls the callback on a later loop around the event loop. In node.js this just\ncalls process.nextTick, in the browser it falls back to setImmediate(callback)\nif available, otherwise setTimeout(callback, 0), which means other higher priority\nevents may precede the execution of the callback.\n\nThis is used internally for browser-compatibility purposes.\n\n__Arguments__\n\n* callback - The function to call on a later loop around the event loop.\n\n__Example__\n\n```js\nvar call_order = [];\nasync.nextTick(function(){\n call_order.push('two');\n // call_order now equals ['one','two']\n});\ncall_order.push('one')\n```\n\n\n### times(n, callback)\n\nCalls the callback n times and accumulates results in the same manner\nyou would use with async.map.\n\n__Arguments__\n\n* n - The number of times to run the function.\n* callback - The function to call n times.\n\n__Example__\n\n```js\n// Pretend this is some complicated async factory\nvar createUser = function(id, callback) {\n callback(null, {\n id: 'user' + id\n })\n}\n// generate 5 users\nasync.times(5, function(n, next){\n createUser(n, function(err, user) {\n next(err, user)\n })\n}, function(err, users) {\n // we should now have 5 users\n});\n```\n\n\n### timesSeries(n, callback)\n\nThe same as times only the iterator is applied to each item in the array in\nseries. The next iterator is only called once the current one has completed\nprocessing. The results array will be in the same order as the original.\n\n\n## Utils\n\n\n### memoize(fn, [hasher])\n\nCaches the results of an async function. When creating a hash to store function\nresults against, the callback is omitted from the hash and an optional hash\nfunction can be used.\n\nThe cache of results is exposed as the `memo` property of the function returned\nby `memoize`.\n\n__Arguments__\n\n* fn - the function you to proxy and cache results from.\n* hasher - an optional function for generating a custom hash for storing\n results, it has all the arguments applied to it apart from the callback, and\n must be synchronous.\n\n__Example__\n\n```js\nvar slow_fn = function (name, callback) {\n // do something\n callback(null, result);\n};\nvar fn = async.memoize(slow_fn);\n\n// fn can now be used as if it were slow_fn\nfn('some name', function () {\n // callback\n});\n```\n\n\n### unmemoize(fn)\n\nUndoes a memoized function, reverting it to the original, unmemoized\nform. Comes handy in tests.\n\n__Arguments__\n\n* fn - the memoized function\n\n\n### log(function, arguments)\n\nLogs the result of an async function to the console. Only works in node.js or\nin browsers that support console.log and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.log is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, 'hello ' + name);\n }, 1000);\n};\n```\n```js\nnode> async.log(hello, 'world');\n'hello world'\n```\n\n---------------------------------------\n\n\n### dir(function, arguments)\n\nLogs the result of an async function to the console using console.dir to\ndisplay the properties of the resulting object. Only works in node.js or\nin browsers that support console.dir and console.error (such as FF and Chrome).\nIf multiple arguments are returned from the async function, console.dir is\ncalled on each argument in order.\n\n__Arguments__\n\n* function - The function you want to eventually apply all arguments to.\n* arguments... - Any number of arguments to apply to the function.\n\n__Example__\n\n```js\nvar hello = function(name, callback){\n setTimeout(function(){\n callback(null, {hello: name});\n }, 1000);\n};\n```\n```js\nnode> async.dir(hello, 'world');\n{hello: 'world'}\n```\n\n---------------------------------------\n\n\n### noConflict()\n\nChanges the value of async back to its original value, returning a reference to the\nasync object.\n", "readmeFilename": "README.md", "_id": "async@0.2.9", - "_from": "async@~0.2.9" + "_from": "async@" } diff --git a/node_modules/aws-sdk/.jshintignore b/node_modules/aws-sdk/.jshintignore new file mode 100644 index 0000000..8971657 --- /dev/null +++ b/node_modules/aws-sdk/.jshintignore @@ -0,0 +1 @@ +lib/services/api/*.js diff --git a/node_modules/aws-sdk/.jshintrc b/node_modules/aws-sdk/.jshintrc new file mode 100644 index 0000000..30ebd9d --- /dev/null +++ b/node_modules/aws-sdk/.jshintrc @@ -0,0 +1,28 @@ +{ + "node": true, + "bitwise": true, + "camelcase": true, + "curly": false, + "eqeqeq": false, + "forin": true, + "immed": true, + "indent": 2, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "nonew": true, + "plusplus": false, + "quotmark": "single", + "regexp": true, + "undef": true, + "unused": true, + "strict": false, + "trailing": true, + "maxparams": false, + "maxdepth": false, + "maxstatements": 40, + "maxcomplexity": 5, + "sub": true, + "indent": false +} diff --git a/node_modules/aws-sdk/.travis.yml b/node_modules/aws-sdk/.travis.yml new file mode 100644 index 0000000..171bcca --- /dev/null +++ b/node_modules/aws-sdk/.travis.yml @@ -0,0 +1,9 @@ +language: node_js +node_js: + - "0.8" + - "0.10" + - "0.11" + +branches: + only: + - master diff --git a/node_modules/aws-sdk/.yardopts b/node_modules/aws-sdk/.yardopts new file mode 100644 index 0000000..e317470 --- /dev/null +++ b/node_modules/aws-sdk/.yardopts @@ -0,0 +1,13 @@ +-m markdown +--markup-provider rdiscount +--exclude /api/ +--no-api private +--api experimental +--no-highlight +--title "AWS SDK for Node.js" +--template-path doc-src/templates +doc-src/*.docs.js +lib/**/*.js +- +README.md +UPGRADING.md diff --git a/node_modules/aws-sdk/.yardopts_guide b/node_modules/aws-sdk/.yardopts_guide new file mode 100644 index 0000000..ad52226 --- /dev/null +++ b/node_modules/aws-sdk/.yardopts_guide @@ -0,0 +1,14 @@ +-t flasky_sphinx_guide +-p doc-src/templates +--title "AWS SDK for Node.js" +--no-highlight +-o doc-guide +--readme doc-src/guide/Introduction.md +- +doc-src/guide/Introduction.md +doc-src/guide/Installing.md +doc-src/guide/Configuring.md +doc-src/guide/Services.md +doc-src/guide/MakingRequests.md +doc-src/guide/Examples.md +UPGRADING.md \ No newline at end of file diff --git a/node_modules/aws-sdk/LICENSE.txt b/node_modules/aws-sdk/LICENSE.txt new file mode 100644 index 0000000..a412edb --- /dev/null +++ b/node_modules/aws-sdk/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"). You +may not use this file except in compliance with the License. A copy of +the License is located at + + http://aws.amazon.com/apache2.0/ + +or in the "license" file accompanying this file. This file is +distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +ANY KIND, either express or implied. See the License for the specific +language governing permissions and limitations under the License. diff --git a/node_modules/aws-sdk/README.md b/node_modules/aws-sdk/README.md new file mode 100644 index 0000000..75b932e --- /dev/null +++ b/node_modules/aws-sdk/README.md @@ -0,0 +1,246 @@ +# AWS SDK for Node.js [![Build Status](https://travis-ci.org/aws/aws-sdk-js.png?branch=master)](https://travis-ci.org/aws/aws-sdk-js) + +The official JavaScript implementation of the AWS SDK for Node.js. + +## Installing + +The preferred way to install the AWS SDK for Node.js is to use the +[npm](http://npmjs.org) package manager for Node.js. Simply type the following +into a terminal window: + +```sh +npm install aws-sdk +``` + +## Usage + +After you've installed the SDK, you can require the AWS package in your node +application using `require`: + +```js +var AWS = require('aws-sdk'); +``` + +Here is a quick example that makes some requests against Amazon S3 with the SDK: + +```js +// Load the AWS SDK for Node.js +var AWS = require('aws-sdk'); + +/** + * Don't hard-code your credentials! + * Load them from disk or your environment instead. + */ +// AWS.config.update({accessKeyId: 'AKID', secretAccessKey: 'SECRET'}); + +// Instead, do this: +AWS.config.loadFromPath('./path/to/credentials.json'); + +// Set your region for future requests. +AWS.config.update({region: 'us-east-1'}); + +// Create a bucket using bound parameters and put something in it. +// Make sure to change the bucket name from "myBucket" to something unique. +var s3bucket = new AWS.S3({params: {Bucket: 'myBucket'}}); +s3bucket.createBucket(function() { + var data = {Key: 'myKey', Body: 'Hello!'}; + s3bucket.putObject(data, function(err, data) { + if (err) { + console.log("Error uploading data: ", err); + } else { + console.log("Successfully uploaded data to myBucket/myKey"); + } + }); +}); +``` + +## Getting Started Guide + +You can find a getting started guide at: + +http://docs.amazonwebservices.com/nodejs/latest/dg/ + +## Supported Services + +The SDK currently supports the following services: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service NameAPI VersionClass Name
Auto Scaling2011-01-01AWS.AutoScaling
AWS CloudFormation2010-05-15AWS.CloudFormation
Amazon CloudFront2013-05-12
2012-05-05
AWS.CloudFront
Amazon CloudWatch2010-08-01AWS.CloudWatch
Amazon CloudSearch2011-02-01AWS.CloudSearch
AWS Data Pipeline2012-10-29AWS.DataPipeline
AWS Direct Connect2012-10-25AWS.DirectConnect
Amazon DynamoDB2012-08-10
2011-12-05
AWS.DynamoDB
Amazon Elastic Compute Cloud2012-12-01AWS.EC2
Amazon ElastiCache2012-11-15AWS.ElastiCache
Amazon Glacier2012-06-01AWS.Glacier
Amazon Route 532012-12-12AWS.Route53
AWS Elastic Beanstalk2010-12-01AWS.ElasticBeanstalk
Elastic Load Balancing2012-06-01AWS.ELB
Amazon Elastic MapReduce2009-03-31AWS.EMR
Amazon Elastic Transcoder2012-09-25AWS.ElasticTranscoder
AWS Identity and Access Management2010-05-08AWS.IAM
AWS Import/Export2010-06-01AWS.ImportExport
AWS OpsWorks2013-02-18AWS.OpsWorks
Amazon Relational Database Service2013-05-15
2013-02-12
2013-01-10
AWS.RDS
Amazon Redshift2012-12-01AWS.Redshift
Amazon Simple Storage Service2006-03-01AWS.S3
Amazon SimpleDB2009-04-15AWS.SimpleDB
Amazon Simple Workflow Service2012-01-25AWS.SimpleWorkflow
Amazon Simple Email Service2010-12-01AWS.SES
Amazon Simple Notification Service2010-03-31AWS.SNS
Amazon Simple Queue Service2012-11-05AWS.SQS
AWS Storage Gateway2012-06-30AWS.StorageGateway
AWS Security Token Service2011-06-15AWS.STS
AWS Support2013-04-15AWS.Support
+ +## License + +This SDK is distributed under the +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). + +```no-highlight +Copyright 2012. Amazon Web Services, Inc. All Rights Reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/node_modules/aws-sdk/Rakefile b/node_modules/aws-sdk/Rakefile new file mode 100644 index 0000000..7099305 --- /dev/null +++ b/node_modules/aws-sdk/Rakefile @@ -0,0 +1,55 @@ +# Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. + +LOGLEVEL = ($DEBUG || ENV['DEBUG']) ? '' : '-s' + +task :default => 'test:all' + +desc 'Build dependencies' +task :build do + system "npm #{LOGLEVEL} install" +end + +namespace :test do + desc "Runs all tests" + task :all => :build do + sh "npm #{LOGLEVEL} test" + end + + desc "Runs unit tests" + task :unit => :build do + sh "npm #{LOGLEVEL} run-script unit" + end + + desc "Runs integration tests" + task :integration => :build do + sh "npm #{LOGLEVEL} run-script integration" + end + +end + +desc 'Runs JSHint' +task :lint do + sh "npm #{LOGLEVEL} run-script lint" +end + +desc 'Interactive console' +task :console do + system './scripts/console' +end + +# Vendor tasks +root = File.dirname(__FILE__) +Dir[File.join(root, 'vendor', '*', 'Rakefile')].each do |vendor_rakefile| + load vendor_rakefile +end diff --git a/node_modules/aws-sdk/UPGRADING.md b/node_modules/aws-sdk/UPGRADING.md new file mode 100644 index 0000000..a49893e --- /dev/null +++ b/node_modules/aws-sdk/UPGRADING.md @@ -0,0 +1,124 @@ +# @title Upgrading Notes + +# Upgrading Notes + +## v0.9.7-pre.8 to v0.9.8-pre.9 + +### `AWS.Request.client` renamed to `AWS.Request.service` + +This is a backward incompatible change that is scoped to the `AWS.Request` +class. If you use this propertry, you can upgrade with the following change: + +`request.client.someProperty` to `request.service.someProperty` + +### `.Client` and `.client` properties deprecated: + +`SERVICE.Client` and `service.client` properties remain for +backward-compatibility, but are now **deprecated** and no longer documented. +They may be removed in a 1.0 release. To migrate these properties, change: + +`new AWS.S3.Client(...)` to `new AWS.S3(...)` + +and/or: + +`s3.client.listObjects(...)` to `s3.listObjects(...)` + +### New DynamoDB API version + +Version 0.9.8-pre.9 of the AWS SDK for Node.js includes a new API version +(2012-08-10) that contains backward-incompatible changes from the previous API +version (2011-12-05). By default, the SDK will load the **latest** available +API version for a service. + +#### Migrating operations + +In general, the API changes mostly affect the way you create and get items +from a table, however other operations are also affected. For a more in-depth +look at the new API, please see the +[DynamoDB API reference](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html). + +##### Creating tables + +Creating a table changes from passing these parameters (with `id` as the string +hash key): + +```js +db.createTable({ + TableName: 'myTable', + KeySchema: { + HashKeyElement: { AttributeName: 'id', AttributeType: 'S' } + }, + ... +}, function() { ... }); +``` + +Into the following: + +```js +db.createTable({ + TableName: 'myTable', + AttributeDefinitions: [ + { AttributeName: 'id', AttributeType: 'S' } + ], + KeySchema:[ + { AttributeName: 'id', KeyType: 'HASH' } + ], + ... +}, function() { ... }); +``` + +##### Getting items + +For the `getItem` operation, the arguments mostly change by dropping the +`HashKeyElement` and `RangeKeyElement` arguments, instead replacing them with +the actual hash key name in the schema. For example, the following getItem +call: + +```js +db.getItem({TableName: 'myTable', Key: {HashKeyElement: {S: key}}}, ...); +``` + +Turns into this, where `id` is our hash key: + +```js +db.getItem({TableName: 'myTable', Key: {id: {S: key}}}, ...); +``` + +Output from these requests will similarly drop `HashKeyElement` parameters +from output, replacing with the actual hash key name. + +#### Locking into the 2011-12-05 API + +If you want to continue using the DynamoDB 2011-12-05 API, you can lock your +API version in your global configuration with `apiVersions`, or directly when +constructing a service object with the `apiVersion` option: + +```js +// Locking DynamoDB globally in AWS.config +AWS.config.apiVersions = { + dynamodb: '2011-12-05' +}; + +// Directly on a service object +var db = new AWS.DynamoDB({apiVersion: '2011-12-05'}); +``` + +The `apiVersions` option can also be loaded from an external JSON configuration +file with `AWS.config.loadFromPath()`: + +```js +{ + "region": "us-west-2", + "accessKeyId": "", + "secretAccessKey": "", + "apiVersions": { + "dynamodb": "2011-12-05" + } +} +``` + +This file can be loaded with: + +```js +AWS.config.loadFromPath('path/to/config.json'); +``` diff --git a/node_modules/aws-sdk/configuration.sample b/node_modules/aws-sdk/configuration.sample new file mode 100644 index 0000000..1e8b809 --- /dev/null +++ b/node_modules/aws-sdk/configuration.sample @@ -0,0 +1,5 @@ +{ + "accessKeyId": "YOUR_ACCESS_KEY_ID", + "secretAccessKey": "YOUR_SECRET_ACCESS_KEY", + "region": "us-west-1" +} diff --git a/node_modules/aws-sdk/doc-src/guide/Configuring.md b/node_modules/aws-sdk/doc-src/guide/Configuring.md new file mode 100644 index 0000000..be1e84b --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/Configuring.md @@ -0,0 +1,196 @@ +# @title Configuring the SDK + +# Configuring the SDK + +## The Configuration Object + +Configuration in the SDK can be done in two ways: + +1. Global configuration on `AWS.config`, or, +2. Passing extra configuration to a service object + +Setting global configuration with `AWS.config` is often easier to get up +and running with, but service level configuration can provide much more control +over your requests. Both of these configuration mechanisms are discussed. + +## Global Configuration (`AWS.config`) + +By default, you can set global configuration by updating the `AWS.config` object with +new settings. The most common settings are: + +1. `accessKeyId`, `secretAccessKey`, `sessionToken` — for credential management +2. `region` — to set the region for requests +3. `sslEnabled` — whether SSL is enabled or not +4. `maxRetries` — to control the number of retries for a request + +More configuration settings can be found in the +[API reference documentation](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html). + +The only things you *need* to set in order to use the SDK are credentials and +the region value. Let's discuss how to do that. + +### Setting AWS Credentials + +

Remember, if you set your AWS credentials in your environment + variables, the AWS SDK for Node.js will automatically detect them, and you + will not need to perform any manual credential configuration in your + application. +

+ +Credentials are the most important thing you need to set when using any AWS SDK. +Credentials can be set globally on the `AWS.config` object or per service by +passing the credential information to the service object directly. + +There are a few ways to load credentials. Here they are, in order of +recommendation: + +1. Loaded from environment variables, +2. Loaded from a JSON file on disk, +3. Loaded from EC2 metadata service, +4. Hardcoded in your application + +We recommend you not hard-code your AWS credentials in your application; +however, it is reasonable to temporarily hard-code credential information +in small personal scripts or for testing purposes. + +#### Credentials from Environment Variables + +By default, the AWS SDK for Node.js will automatically detect AWS credentials +set in your environment and use them for requests. This means that if you +properly set your environment variables, you do not need to manage credentials +in your application at all. + +The keys that the SDK looks for are as follows: + +```plain +AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN (optional) +``` + +Alternately, the SDK can accept the `AMAZON_` prefix instead: + +```plain +AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_ACCESS_KEY, AMAZON_SESSION_TOKEN (optional) +``` + +#### Credentials from Disk + +You can also load configuration and credentials from disk using +`AWS.config.loadFromPath` by passing a file to a JSON document +containing the configuration data. For example, if you had a file +named 'config.json' with the contents: + +```js +{ "accessKeyId": "akid", "secretAccessKey": "secret", "region": "us-east-1" } +``` + +You can load the JSON data using the command: + +```js +AWS.config.loadFromPath('./config.json'); +``` + +Note that the `loadFromPath` method clobbers all existing configuration on +the object. If you are adding extra configuration, make sure you add it +after this call. + +#### Hard-Coding Credentials + +

We recommend you not hard-code + credentials inside an application. Use this method only for + small personal scripts or for testing purposes. +

+ +You can hard-code credentials by passing the credential information to the +configuration object using `AWS.config.update()`: + +```js +AWS.config.update({accessKeyId: 'akid', secretAccessKey: 'secret'}); +``` + +### Setting the Region + +The AWS SDK for Node.js doesn't select the region by default. You can choose +a region similarly to setting credentials by either loading from disk or +using `AWS.config.update()`: + +```js +AWS.config.update({region: 'us-west-1'}); +``` + +### Locking API Versions + +

For more information on API version locking in the SDK, see the +{file:Services.md} section +

+ +You can globally configure a set of API versions to use for each service by +specifying the `apiVersions` parameter in `AWS.config`. For example, +you can choose to set specific versions of the DynamoDB and EC2 services, +while selecting the "latest" version of Redshift: + +```js +AWS.config.apiVersions = { + dynamodb: '2011-12-05', + ec2: '2013-02-01', + redshift: 'latest' +} +``` + +Note that by default, the SDK will use the "latest" available API version +when constructing a service. + +You can also lock all services at a specific point in time by using a "fuzzy +version": + +```js +// Try to use latest available APIs before this date +AWS.config.apiVersion = '2012-05-04'; +``` + +### Configuring a Proxy + +If you cannot connect to the internet directly, the SDK supports the use of +HTTP or HTTPS proxies through global or per-service configuration options. To +set a proxy, pass the `proxy` option to the `httpOptions` setting of your +config object. This is how you could set a global proxy: + +```js +AWS.config.update({ + httpOptions: { + proxy: 'http://localhost:8080' + } +}); + +var s3 = new AWS.S3(); +s3.getObject({Bucket: 'bucket', Key: 'key'}, function (err, data) { + console.log(err, data); +}); +``` + +## Service-Specific Configuration + +Occasionally, you might want to apply configuration only to one service. +For instance, you want to use multiple EC2 objects in different regions. +You can do this by passing configuration data directly to the service object +constructor: + +```js +var ec2 = new AWS.EC2({region: 'ap-southeast-2', maxRetries: 15}); +``` + +Note that the constructor takes all of the same configuration data as the +`AWS.config` object described above, including credential information. + +## Immutable Configuration Data + +Global configuration changes apply to all requests for all *newly* created +services. Any newly created service will merge its local options on top of +the global configuration data at the time of creation. This means that any +future updates to the global `AWS.config` object will *not* apply to existing +service objects. These services would have to be manually updated with the new +configuration data, or recreated using the following command (assuming an +existing `s3` service object): + +```js +s3 = new AWS.S3(s3.config); +``` diff --git a/node_modules/aws-sdk/doc-src/guide/Examples.md b/node_modules/aws-sdk/doc-src/guide/Examples.md new file mode 100644 index 0000000..074c118 --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/Examples.md @@ -0,0 +1,305 @@ +# Examples + +All of these examples assume that the AWS library is required, +credentials are loaded via environment variables (`AWS_ACCESS_KEY_ID` +and `AWS_SECRET_ACCESS_KEY`), and the region is set via +`AWS.config.update({region: 'us-west-2'});` or the `AWS_REGION` environment +variable. + +The common preamble code can be summarized as follows: + +```js +var AWS = require('aws-sdk'); +AWS.config.update({region: 'us-west-2'}); +``` + +## Amazon Elastic Compute Cloud (Amazon EC2) + +### Amazon EC2: Creating an Instance with Tags (`runInstances`, `createTags`) + +The Amazon EC2 API has two distinct operations for creating instances and +attaching tags to instances. In order to create an instance with tags, you can +call both of these operations in series. The following example adds a "Name" +tag to a new instance, which the Amazon EC2 console recognizes and displays +in the Name field of the instance list. + +```js +var ec2 = new AWS.EC2(); + +var params = { + ImageId: 'ami-1624987f', // Amazon Linux AMI x86_64 EBS + InstanceType: 't1.micro', + MinCount: 1, MaxCount: 1 +}; + +// Create the instance +ec2.runInstances(params, function(err, data) { + if (err) { console.log("Could not create instance", err); return; } + + var instanceId = data.Instances[0].InstanceId; + console.log("Created instance", instanceId); + + // Add tags to the instance + params = {Resources: [instanceId], Tags: [ + {Key: 'Name', Value: instanceName} + ]}; + ec2.createTags(params, function(err) { + console.log("Tagging instance", err ? "failure" : "success"); + }); +}); +``` + +Note that you can add up to 10 tags to an instance, and they can be all added +in a single call to `createTags`. + +## Amazon Simple Storage Service (Amazon S3) + +### Amazon S3: List All of Your Buckets (listBuckets) + +The following example lists all buckets associated with your AWS account: + +```js +var s3 = new AWS.S3(); +s3.listBuckets(function(err, data) { + for (var index in data.Buckets) { + var bucket = data.Buckets[index]; + console.log("Bucket: ", bucket.Name, ' : ', bucket.CreationDate); + } +}); +``` + +### Amazon S3: Create a New Bucket and Object (createBucket, putObject) + +The following example puts the string 'Hello!' inside the +object 'myKey' of bucket 'myBucket': + +```js +var s3 = new AWS.S3({params: {Bucket: 'myBucket', Key: 'myKey'}}); +s3.createBucket(function() { + s3.putObject({Body: 'Hello!'}, function() { + console.log("Successfully uploaded data to myBucket/myKey"); + }); +}); +``` + +### Amazon S3: Streaming Objects to Files on Disk (getObject) + +You can use the `createReadStream()` method on a request object to +get a handle to a stream object which supports piping raw HTTP +body data to a file. This is especially useful when streaming +objects to streams like filesystem objects. The following example +shows how you can stream an object from Amazon S3 directly to a file +on disk: + +```js +var s3 = new AWS.S3(); +var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'}; +var file = require('fs').createWriteStream('/path/to/file.jpg'); +s3.getObject(params).createReadStream().pipe(file); +``` + +Alternatively, you can register an 'httpData' event listener on +the request object to access each chunk of data received across +the wire (as Buffer objects): + +```js +var s3 = new AWS.S3(); +var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'}; +var file = require('fs').createWriteStream('/path/to/file.jpg'); + +s3.getObject(params). +on('httpData', function(chunk) { file.write(chunk); }). +on('httpDone', function() { file.end(); }). +send(); +``` + +### Amazon S3: Getting a pre-signed URL for a getObject operation (getSignedUrl) + +A pre-signed URL allows you to give one-off access to other users who may not +have direct access to execute the operations. Pre-signing generates a valid +URL signed with your credentials that any user can access. By default, the SDK +sets all URLs to expire within 15 minutes, but this value can be adjusted. + +To generate a simple pre-signed URL that allows any user to view the contents +of a private object in a bucket you own, you can use the following call to +`getSignedUrl()`: + +```js +var params = {Bucket: 'myBucket', Key: 'myKey'}; +s3.getSignedUrl('getObject', params, function (err, url) { + console.log("The URL is", url); +}); +``` + +The `getSignedUrl()` operation can also be called synchronously, when the +callback is omitted. When it is called without a callback, the return value is +the pre-signed URL. The above example can be re-written synchronously as: + +```js +var params = {Bucket: 'myBucket', Key: 'myKey'}; +var url = s3.getSignedUrl('getObject', params); +console.log("The URL is", url); +``` + +Note that this method should only be called synchronously if you can guarantee +that your credentials are already loaded (or defined statically). In general, +it is safe to use this method synchronously unless you are using EC2 IAM roles +or another custom asynchronous credential provider. + +### Amazon S3: Getting a pre-signed URL for a PUT operation with a specific payload + +If a Body parameter is passed to the payload of a pre-signed PUT object +operation and checksums are being computed, the SDK will generate the URL +with a Content-MD5 representing the expected payload contents. You can use +this functionality to generate pre-signed PUT operations that require a specific +payload to be uploaded by the consumer of the URL. To generate such a URL, +simply provide a Body property to the parameter list: + +```js +var s3 = new AWS.S3({computeChecksums: true}); // this is the default setting +var params = {Bucket: 'myBucket', Key: 'myKey', Body: 'EXPECTED CONTENTS'}; +var url = s3.getSignedUrl('putObject', params); +console.log("The URL is", url); +``` + +You can also omit the Body parameter to generate a URL that allows a user to +write any contents to the given object: + +```js +var params = {Bucket: 'myBucket', Key: 'myKey'}; +var url = s3.getSignedUrl('putObject', params); +console.log("The URL is", url); +``` + +### Amazon S3: Controlling Expires time with pre-signed URLs + +As mentioned above, pre-signed URLs will expire in 15 minutes by default +when generated by the SDK. This value is adjustable with the `Expires` +parameter, an integer representing the number of seconds that the URL will be +valid, and can be set with any call to `getSignedUrl()`: + +```js +// This URL will expire in one minute (60 seconds) +var params = {Bucket: 'myBucket', Key: 'myKey', Expires: 60}; +var url = s3.getSignedUrl('getObject', params); +console.log("The URL is", url); +``` + +## Amazon DynamoDB + +### Amazon DynamoDB: Listing Tables (listTables) + +The following example will list all tables in a DynamoDB instance: + +```js +var db = new AWS.DynamoDB(); +db.listTables(function(err, data) { + console.log(data.TableNames); +}); +``` + +## Amazon Glacier + +### Amazon Glacier: Creating a Vault + +The following example creates a vault named "YOUR_VAULT_NAME": + +```js +var glacier = new AWS.Glacier(); +glacier.createVault({vaultName: 'YOUR_VAULT_NAME'}, function(err) { + if (!err) console.log("Created vault!") +}); +``` + +### Amazon Glacier: Uploading an Archive + +

Note: this example assumes you have already created a vault +named "YOUR_VAULT_NAME". +

+ +The following example will upload a single Buffer object as an entire archive. +The SDK will automatically compute the tree hash checksum for the data being +uploaded, though you can override it by passing your own `checksum` parameter. + +```js +var glacier = new AWS.Glacier(), + vaultName = 'YOUR_VAULT_NAME', + buffer = new Buffer(2.5 * 1024 * 1024); // 2.5MB buffer + +var params = {vaultName: vaultName, body: buffer}; +glacier.uploadArchive(params, function(err, data) { + if (err) console.log("Error uploading archive!", err); + else console.log("Archive ID", data.archiveId); +}); +``` + +### Amazon Glacier: Multi-part Upload + +

+ Note: this example assumes you have already created a vault +named "YOUR_VAULT_NAME". +

+ +The following example will create a multi-part upload out of 1MB chunks of a +Buffer object. Note that a complete SHA-256 tree hash is manually computed +using the `computeChecksums` method: + +```js +var glacier = new AWS.Glacier(), + vaultName = 'YOUR_VAULT_NAME', + buffer = new Buffer(2.5 * 1024 * 1024), // 2.5MB buffer + partSize = 1024 * 1024, // 1MB chunks, + numPartsLeft = Math.ceil(buffer.length / partSize), + startTime = new Date(), + params = {vaultName: vaultName, partSize: partSize.toString()}; + +// Compute the complete SHA-256 tree hash so we can pass it +// to completeMultipartUpload request at the end +var treeHash = glacier.computeChecksums(buffer).treeHash; + +// Initiate the multi-part upload +console.log('Initiating upload to', vaultName); +glacier.initiateMultipartUpload(params, function (mpErr, multipart) { + if (mpErr) { console.log('Error!', mpErr.stack); return; } + console.log("Got upload ID", multipart.uploadId); + + // Grab each partSize chunk and upload it as a part + for (var i = 0; i < buffer.length; i += partSize) { + var end = Math.min(i + partSize, buffer.length), + partParams = { + vaultName: vaultName, + uploadId: multipart.uploadId, + range: 'bytes ' + i + '-' + (end-1) + '/*', + body: buffer.slice(i, end) + }; + + // Send a single part + console.log('Uploading part', i, '=', partParams.range); + glacier.uploadMultipartPart(partParams, function(multiErr, mData) { + if (multiErr) return; + console.log("Completed part", this.request.params.range); + if (--numPartsLeft > 0) return; // complete only when all parts uploaded + + var doneParams = { + vaultName: vaultName, + uploadId: multipart.uploadId, + archiveSize: buffer.length.toString(), + checksum: treeHash // the computed tree hash + }; + + console.log("Completing upload..."); + glacier.completeMultipartUpload(doneParams, function(err, data) { + if (err) { + console.log("An error occurred while uploading the archive"); + console.log(err); + } else { + var delta = (new Date() - startTime) / 1000; + console.log('Completed upload in', delta, 'seconds'); + console.log('Archive ID:', data.archiveId); + console.log('Checksum: ', data.checksum); + } + }); + }); + } +}); +``` diff --git a/node_modules/aws-sdk/doc-src/guide/Installing.md b/node_modules/aws-sdk/doc-src/guide/Installing.md new file mode 100644 index 0000000..2bea89d --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/Installing.md @@ -0,0 +1,55 @@ +# @title Installing the SDK + +# Installing the SDK + +## NPM Installation + +The preferred way to install the AWS SDK for Node.js is to use the +[npm](http://npmjs.org) package manager for Node.js. To install the SDK, +simply type the following into a terminal window: + +```sh +npm install aws-sdk +``` + +## Verifying the Installation + +After you've installed the SDK, you can require the AWS package in your node +application using `require`: + +```js +var AWS = require('aws-sdk'); +``` + +Here is a quick example that makes some requests against Amazon S3 with the SDK: + +```js +// Load the AWS SDK for Node.js +var AWS = require('aws-sdk'); + +/** + * Don't hard-code your credentials! + * Load them from disk or your environment instead. + */ +// AWS.config.update({accessKeyId: 'AKID', secretAccessKey: 'SECRET'}); + +// Instead, do this: +AWS.config.loadFromPath('./path/to/credentials.json'); + +// Set your region for future requests. +AWS.config.update({region: 'us-east-1'}); + +// Create a bucket using bound parameters and put something in it. +// Make sure to change the bucket name from "myBucket" to something unique. +var s3bucket = new AWS.S3({params: {Bucket: 'myBucket'}}); +s3bucket.createBucket(function() { + var data = {Key: 'myKey', Body: 'Hello!'}; + s3bucket.putObject(data, function(err, data) { + if (err) { + console.log("Error uploading data: ", err); + } else { + console.log("Successfully uploaded data to myBucket/myKey"); + } + }); +}); +``` diff --git a/node_modules/aws-sdk/doc-src/guide/Introduction.md b/node_modules/aws-sdk/doc-src/guide/Introduction.md new file mode 100644 index 0000000..00f8285 --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/Introduction.md @@ -0,0 +1,32 @@ +# AWS SDK for Node.js + +## Developer Guide + +The **AWS SDK for Node.js** allows JavaScript developers to build libraries or +applications that make use of AWS services using a simple and easy-to-use +API. The SDK is available as the [aws-sdk](http://npmjs.org/package/aws-sdk) +package for easy installation through [npm](http://npmjs.org). + +## Overview + +This guide will walk developers through many of the high level concepts +that the SDK provides, as well as provide example code to get started with +some services. For a more complete look at the classes and methods provided by +the library, it is recommended to look at the SDK's +[API reference documentation](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html). + +## Sections + +* {file:Installing.md Installing the SDK} +* {file:Configuring.md Configuring the SDK} +* {file:Services.md Working with Services} +* {file:MakingRequests.md Making Requests} +* {file:Examples.md Common Examples} +* {file:UPGRADING.md Upgrading Notes} + +
+ +## License + +This SDK is distributed under the +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0). diff --git a/node_modules/aws-sdk/doc-src/guide/MakingRequests.md b/node_modules/aws-sdk/doc-src/guide/MakingRequests.md new file mode 100644 index 0000000..fc4c0ca --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/MakingRequests.md @@ -0,0 +1,309 @@ +# @title Making Requests + +# Making Requests + +A "request" to an AWS service includes the full request and response lifecycle +of a call to an operation on a service object, including any retries that are +transparently attempted on your behalf. A request is encapsulated in the SDK by +the `AWS.Request` object. The semantics of a request are described below, +specifically, the support for callbacks, events, and streaming of raw HTTP +response data. + +## Asynchronous Callbacks + +All requests made through the SDK are asynchronous and use a +callback interface. Each service method that kicks off a request +can accept a callback as the last parameter with the signature +`function(error, data) { ... }`. This callback will be called when +the response or error data is available. + +For example, the following service method can be called with +a standard callback to retrieve the response data or error: + +```js +new AWS.EC2().describeInstances(function(error, data) { + if (error) { + console.log(error); // an error occurred + } else { + console.log(data); // request succeeded + } +}); +``` + +The `error` and `data` parameters are described in the "Response Object" +section below. + +Note that if you do not specify a callback, the operation will +return an `AWS.Request` object that must be manually sent using +the `send()` method: + +```js +// create the AWS.Request object +var request = new AWS.EC2().describeInstances(); + +// register a callback to report on the data +request.on('success', function(resp) { + console.log(resp.data); // log the successful data response +}); + +// send the request +request.send(); +``` + +### The Response Object (`AWS.Response`) + +The response object is passed into each callback function so +that you can access response data. The `AWS.Response` object that +is passed in contains two important properties to get at this data: + +When using the standard callback mechanism, the two properties will +be made available as parameters on the callback method in the form: +`function(error, data) { ... }` + +#### The `data` property + +The `response.data` property contains the serialized object data +retrieved from the service request. For instance, for an +Amazon DynamoDB `listTables` method call, the response data might +look like this: + +```js +> response.data +{ TableNames: + [ 'table1', 'table2', ... ] } +``` + +The `data` property can be null if an error occurs (see below). + +#### The `error` property + +In the event of a service error (or transfer error), the +`response.error` property will be filled with the given +error data in the form: + +```js +{ code: 'SHORT_UNIQUE_ERROR_CODE', + message: 'Some human readable error message' } +``` + +In the case of an error, the `data` property will be null. +Note that if you handle events that can be in a failure state, +you should always check whether `response.error` is set +before attempting to access the `response.data` property. + +#### The `request` property + +Access to the originating request object is available through this +property. For example, to access the parameters that were sent +with a request: + +```js +s3.getObject({Bucket: 'bucket', Key: 'key'}).on('success', function(response) { + console.log("Key was", response.request.params.Key); +}).send(); +``` + +### Simplified Callback Method + +Each operation supports a simplified callback that can be passed as the last +parameter to any service operation. The callback function should +accept an `error` parameter, followed by the `data` from the response. + +For example: + +```js +s3.listBuckets(function(error, data) { + if (err) { + console.log(error); // error is Response.error + } else { + console.log(data); // data is Response.data + } +}); +``` + +Prints (assuming the request succeeded): + +```js +{ Owner: { ID: '...', DisplayName: '...' }, + Buckets: + [ { Name: 'someBucketName', CreationDate: someCreationDate }, + { Name: 'otherBucketName', CreationDate: otherCreationDate } ], + RequestId: '...' } +``` + +The error and data parameters accepted are equivalent to the `error` and +`data` properties discussed in the `AWS.Response` response object section +above. + +If you are passing parameters to the operation, the callback should be placed +after the parameters: + +``` +s3.getObject({Bucket: 'bucket', Key: 'key'}, function(err, data) { + // ... +}); +``` + +### AWS.Request Events + +You can alternatively register callbacks on events provided by the +`AWS.Request` object returned by each service operation method. +This request object exposes the `success`, `error`, `complete`, and `httpData` +events, each taking a callback that accepts the response object. + +Note that if you omit the simplified callback parameter on the operation +method, you must call `send()` on the returned request object in order to +kick off the request to the remote server. + +#### Event: 'success' + +```js +req.on('success', function(response) { ... }); +``` + +This event triggers when a successful response +from the server is returned. The response contains a `.data` field +with the serialized response data from the service. + +For example: + +```js +s3.listBuckets().done(function(response) { + console.log(response.data); +}).send(); +``` + +Prints: + +```js +{ Owner: { ID: '...', DisplayName: '...' }, + Buckets: + [ { Name: 'someBucketName', CreationDate: someCreationDate }, + { Name: 'otherBucketName', CreationDate: otherCreationDate } ], + RequestId: '...' } +``` + +#### Event: 'error' + +```js +req.on('error', function(error, response) { ... }); +``` + +The `error` event works similarly to the `success` event, except that it +triggers in the case of a request failure. In this case, `response.data` +will be `null` and the `response.error` field will be filled with +the error data. Note that the `error` object is also passed directly +as the first parameter to the event: + +```js +s3.config.credentials.accessKeyId = 'invalid'; +s3.listBuckets().fail(function(error, response) { + console.log(error); + // or: + console.log(response.error); +}).send(); +``` + +Prints: + +```js +{ code: 'Forbidden', message: null } +``` + +#### Event: 'complete' + +```js +req.on('complete', function(response) { ... }); +``` + +The `complete` event triggers a callback in any final state of a request, i.e., +both `success` and `error`. Use this callback to handle any request cleanup +that must be executed regardless of the success state. Note that if you +do intend to use response data inside of this callback, you must check +for the presence of `response.data` or `response.error` before attempting +to access either property. For example: + +```js +request.on('complete', function(response) { + if (response.error) { + // an error occurred, handle it + } else { + // we can use response.data here + } +}).send(); +``` + +#### Event: 'httpData' + +```js +req.on('httpData', function(chunk, response) { ... }); +``` + +

If you register a httpData callback, + response.data will still contain serialized output + for the entire request. It will be your responsibility to remove + the default 'httpData' listener if you do not wish to have the + extra parsing and memory overhead from the built-in handlers. +

+ +The `httpData` event is used to stream response data from the +service packet-by-packet. This event is mostly used for large responses, +when it is inefficient (or impossible) to load the entire response into +memory. + +Note that this event contains an extra `chunk` parameter containing the +actual data passed on by the server. + +## Multiple Callbacks and Chaining + +You can register multiple callbacks on any request object. The +callbacks can be registered for different events, or all for the +same event. In addition, you can chain callback registration, for +example: + +```js +request. + on('success', function(response) { + console.log("Success!"); + }). + on('error', function(response) { + console.log("Error!"); + }). + on('complete', function() { + console.log("Always!"); + }). + send(); +``` + +The above example will print either "Success! Always!", or "Error! Always!", +depending on whether the request succeeded or not. + +## Streaming Requests + +It is possible to stream a request directly to a Node.js Stream object by +calling the `createReadStream()` method on a request. This returns a wrapper +to the raw HTTP stream used to manage the request, and this data can be piped +into any other Node.js stream. This is mostly useful for service operations +that return raw data in the payload, like Amazon S3's `getObject` operation, +which can be used to stream data directly into a file with this functionality: + +```js +var s3 = new AWS.S3(); +var params = {Bucket: 'myBucket', Key: 'myImageFile.jpg'}; +var file = require('fs').createWriteStream('/path/to/file.jpg'); +s3.getObject(params).createReadStream().pipe(file); +``` + +The stream object can be used interchangeably as any other Node.js readable +Stream object. + +### Limitations of Streaming + +When streaming data from a request using `createReadStream()`, only the raw +HTTP data will be returned (the SDK will not do any post-processing on the +data). Additionally, if the request initially succeeds, retry logic will be +disabled for the rest of the response due to Node.js inability to rewind most +streams. This means that in the event of a socket failure in the middle of a +connection, the SDK will not attempt to retry and send more data to the stream. +It will be your responsibility to manage this logic in your library or +application. diff --git a/node_modules/aws-sdk/doc-src/guide/Services.md b/node_modules/aws-sdk/doc-src/guide/Services.md new file mode 100644 index 0000000..45ccd78 --- /dev/null +++ b/node_modules/aws-sdk/doc-src/guide/Services.md @@ -0,0 +1,158 @@ +# @title Working with Services + +# Working with Services + +## Supported Services + +The SDK currently supports all available AWS services. Each service object +in the SDK currently provides low-level access to every API call in the +respective AWS service. The full list of methods and their parameters are +documented in the complete API reference documentation (linked from each +service name in the list below). + +The supported services are: + +* [AWS.AutoScaling](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/AutoScaling_20110101.html) +* [AWS.CloudFormation](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFormation_20100515.html) +* [AWS.CloudFront](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudFront_20120505.html) +* [AWS.CloudSearch](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudSearch_20110201.html) +* [AWS.CloudWatch](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch_20100801.html) +* [AWS.DataPipeline](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DataPipeline_20121029.html) +* [AWS.DirectConnect](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DirectConnect_20121025.html) +* [AWS.DynamoDB](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB_20120810.html) +* [AWS.EC2](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EC2_20130201.html) +* [AWS.ElastiCache](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElastiCache_20121115.html) +* [AWS.ElasticBeanstalk](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElasticBeanstalk_20101201.html) +* [AWS.ElasticTranscoder](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ElasticTranscoder_20120925.html) +* [AWS.ELB](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ELB_20120601.html) +* [AWS.EMR](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/EMR_20090331.html) +* [AWS.Glacier](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Glacier_20120601.html) +* [AWS.IAM](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/IAM_20100508.html) +* [AWS.ImportExport](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/ImportExport_20100601.html) +* [AWS.OpsWorks](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/OpsWorks_20130218.html) +* [AWS.RDS](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/RDS_20130212.html) +* [AWS.Redshift](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Redshift_20121201.html) +* [AWS.Route53](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Route53_20121212.html) +* [AWS.S3](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3_20060301.html) +* [AWS.SES](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES_20101201.html) +* [AWS.SimpleDB](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SimpleDB_20090415.html) +* [AWS.SimpleWorkflow](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SimpleWorkflow_20120125.html) +* [AWS.SNS](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS_20100331.html) +* [AWS.SQS](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SQS_20121105.html) +* [AWS.StorageGateway](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/StorageGateway_20120630.html) +* [AWS.STS](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/STS_20110615.html) +* [AWS.Support](http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Support_20130415.html) + +
+ +## Constructing a Service + +Each service can be constructed with runtime configuration data that is +specific to that service object. The service-specific configuration data +will be merged on top of global configuration, so there is no need to +re-specify any global settings. For example, an EC2 object can be created +for a specific region: + +```js +var ec2 = new AWS.EC2({region: 'us-west-2'}); +``` + +This object will continue to use the globally provided credentials. + +## Locking API Versions + +Services released by AWS use API versions to keep track of API compatibility. +API versions in AWS services can be identified by a `YYYY-mm-dd` formatted +date string, i.e., 2006-03-01 for Amazon S3. It is recommended to lock into +an API version for a service if you are relying on it for production code. +This way, you can isolate yourself from service changes in updates of the +SDK. + +In order to lock into an API version of a given service, simply pass the +`apiVersion` parameter when constructing the object, for example: + +```js +var dynamodb = new AWS.DynamoDB({apiVersion: '2011-12-05'}); +``` + +Note that versions can also be locked globally by specifying the `apiVersion` +or `apiVersions` global configuration parameters. This is documented with +more detail in the {file:Configuring.md} file. + +### Using the Latest Version + +By default, the SDK will select the **latest** available service API version +when constructing a service object (unless overridden globally). You can +also force the latest API version to be used by passing the "latest" value +as the `apiVersion` parameter like so: + +```js +var ec2 = new AWS.EC2({apiVersion: 'latest'}); +``` + +### Fuzzy Versions and Date Locking + +Since AWS has many services with many different API versions, the SDK allows +for the specification of "fuzzy versions" instead of exact API version +matches. This allows you to specify any date after the API version date, +and the SDK will look for the *last* available matching API version when +loading the service object. For instance, you can also load the 2011-12-05 +DynamoDB API by using the following code: + +```js +var dynamodb = new AWS.DynamoDB({apiVersion: '2012-04-04'}); +``` + +Note that 2012-04-04 is later than the first API release (2011-12-05) +but earlier than the next revision of the API (2012-08-10), so the *first* +revision will be used. + +You can also use this strategy to globally lock your application to a point +in time. For instance, if you begin developing your application on 2012-07-05, +you can add the following global `apiVersion` lock value: + +```js +AWS.config.apiVersion = '2012-07-05'; +``` + +This will allow *all* created service objects to use the latest available +API versions at the specified lock time. You can override any API versions +if you need a newer version, or if the service had not yet been released, +by adding the `apiVersion` parameter to the constructor call as normal: + +```js +// Amazon Redshift was not yet released in 2012-07-05 +var redshift = new AWS.Redshift({apiVersion: '2012-12-01'}); +``` + +## Passing Parameters to a Service Operation + +When calling a method to a service, you should pass parameters in as +option values, similar to the way configuration is passed. +For example, to read an object for a given bucket and key in S3, you +can pass the following parameters to the `getObject` method: + +```js +s3.getObject({Bucket: 'bucketName', Key: 'keyName'}); +``` + +Note that the full parameter documentation for each method is found +in each service page in the complete API reference documentation. + +## Bound Parameters + +Parameters can be automatically passed to service operations by binding them +directly when constructing the service object. To do this, pass the `params` +parameter to your constructed service with the map of default parameter +values like so: + +```js +var s3bucket = new AWS.S3({ params: {Bucket: 'myBucket'} }); +``` + +The `s3bucket` object will now represent an S3 service object bound to a bucket +named 'myBucket'. Any operation that takes the `Bucket` parameter will now +have it auto-filled with this value. This value can be overridden by passing +a new value in the service operation. Additionally, operations that do not +require a `Bucket` parameter will automatically ignore this bound parameter, +so the `s3bucket` object can still be used to call `listBuckets`, for instance. diff --git a/node_modules/aws-sdk/doc-src/templates/default/layout/html/footer.erb b/node_modules/aws-sdk/doc-src/templates/default/layout/html/footer.erb new file mode 100644 index 0000000..fe39f38 --- /dev/null +++ b/node_modules/aws-sdk/doc-src/templates/default/layout/html/footer.erb @@ -0,0 +1,44 @@ +<% +# Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. +%> + +
+ + + + + + + + + diff --git a/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css new file mode 100644 index 0000000..e534e87 --- /dev/null +++ b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/highlight.github.css @@ -0,0 +1,127 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +pre code { + display: block; padding: 0.5em; + color: #333; + /*background: #f8f8ff*/ +} + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .javadoc { + color: #998; + font-style: italic +} + +pre .keyword, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .nginx .title, +pre .subst, +pre .request, +pre .status { + color: #333; + font-weight: bold +} + +pre .number, +pre .hexcolor, +pre .ruby .constant { + color: #099; +} + +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula { + color: #d14 +} + +pre .title, +pre .id { + color: #900; + font-weight: bold +} + +pre .javascript .title, +pre .lisp .title, +pre .clojure .title, +pre .subst { + font-weight: normal +} + +pre .class .title, +pre .haskell .type, +pre .vhdl .literal, +pre .tex .command { + color: #458; + font-weight: bold +} + +pre .tag, +pre .tag .title, +pre .rules .property, +pre .django .tag .keyword { + color: #000080; + font-weight: normal +} + +pre .attribute, +pre .variable, +pre .lisp .body { + color: #008080 +} + +pre .regexp { + color: #009926 +} + +pre .class { + color: #458; + font-weight: bold +} + +pre .symbol, +pre .ruby .symbol .string, +pre .lisp .keyword, +pre .tex .special, +pre .prompt { + color: #990073 +} + +pre .built_in, +pre .lisp .title, +pre .clojure .built_in { + color: #0086b3 +} + +pre .preprocessor, +pre .pi, +pre .doctype, +pre .shebang, +pre .cdata { + color: #999; + font-weight: bold +} + +pre .deletion { + background: #fdd +} + +pre .addition { + background: #dfd +} + +pre .diff .change { + background: #0086b3 +} + +pre .chunk { + color: #aaa +} diff --git a/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css new file mode 100644 index 0000000..ce0c5bd --- /dev/null +++ b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/css/style.css @@ -0,0 +1,1151 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} + +/* + * flasky.css_t + * ~~~~~~~~~~~~ + * + * :copyright: Copyright 2010 by Armin Ronacher. + * :license: Flask Design License, see LICENSE for details. + */ + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Helvetica, arial, freesans, clean, sans-serif; + font-size: 15px; + background-color: white; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + width: 960px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #ffffff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +img.floatingflask { + padding: 0 0 10px 10px; + float: right; +} + +div.footer { + width: 960px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +div.related { + display: none; +} + +div.sphinxsidebar a { + color: #444; + text-decoration: none; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebar { + font-size: 14px; + line-height: 1.5; +} + +div.sphinxsidebarwrapper { + padding: 0 10px 18px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0 0 8px 0; + margin: 0; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Helvetica, arial, freesans, clean, sans-serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebarwrapper h3.logo { + margin: 0; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: Helvetica, arial, freesans, clean, sans-serif; + font-size: 1em; +} + +p.feedback a { + color: rgb(0, 89, 160); +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: rgb(0, 89, 160); + text-decoration: none; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Helvetica, arial, freesans, clean, sans-serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + + + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; font-weight: bold; } +div.body h2 { font-size: 180%; border-bottom: 1px solid #ccc; padding-bottom: 6px; font-weight: bold; } +div.body h3 { font-size: 150%; font-weight: bold; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #ddd; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #eaeaea; +} + +div.body p, div.body dd, div.body li { + line-height: 1.5em; +} + +div.admonition { + background: #fafafa; + margin: 20px 0; + padding: 10px 30px; + border-top: 1px solid #ccc; + border-bottom: 1px solid #ccc; +} + +div.admonition tt.xref, div.admonition a tt { + border-bottom: 1px solid #fafafa; +} + +dd div.admonition { + margin-left: -60px; + padding-left: 60px; +} + +div.admonition p.admonition-title { + font-family: Helvetica, arial, freesans, clean, sans-serif; + font-weight: normal; + font-size: 22px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: white; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.note { + background-color: #f8f8f8; + border: 1px solid #ccc; + border-radius: 3px; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #f8f8f8; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt { + font-family: 'Consolas', 'Menlo', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +img.screenshot { +} + +tt.descname, tt.descclassname { + font-size: 0.95em; +} + +tt.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #eee; + -webkit-box-shadow: 2px 2px 4px #eee; + box-shadow: 2px 2px 4px #eee; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #eee; + background: #fdfdfd; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.footnote td.label { + width: 0px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background-color: #f8f8f8; + border: 1px solid #ccc; + font-size: 13px; + line-height: 19px; + overflow: auto; + padding: 6px 10px; + border-radius: 3px; +} + +dl pre, blockquote pre, li pre { + +} + +dl dl pre { + margin-left: -90px; + padding-left: 90px; +} + +tt { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid white; +} + +a.reference { + text-decoration: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt { + background: #EEE; +} + +.logo img { + margin: 0 0 24px 0; + padding: 0; +} + +#menu { + padding: 12px; + margin: 0 0 24 px; + height: 19px; + background: rgb(244, 248, 250); + border-bottom: 1px solid rgb(206, 221, 230); +} + +.width-wrapper { + width: 960px; + margin: 0 auto; +} + +#menu #left-logo { + float: left; + margin-right: 85px; + font-weight: bold; + margin-left: 20px; +} +#menu #main-menu { + float: left; + margin: 0; + padding: 0; +} +#menu #main-menu li { + display: block; + margin: 0 30px 0 0; + padding: 0; + float: left; + font-weight: bold; +} +#menu a { + text-decoration: none; +} + +#footer-links { + border-top: 1px solid #ccc; + padding-top: 12px; + margin-top: 30px; + height: 30px; +} + +#footer-links a { + padding: 0 24px 0 0; + display: block; + padding: 0 0 0 20px; + float: right; +} + +.inline-toc { + background-color: #fff !important; + border: none !important; + padding: 0 0 0 14px !important; +} + +div .warning { + background: rgb(255, 242, 242); +} + +table.api-operations { + width: 100%; + border: none; + border-width: 0; + -webkit-box-shadow: none; + box-shadow: none; + -moz-box-shadow: none; +} + +table.api-operations tbody td { + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #eee; +} + +#github-stars { + float: right; + margin: 0; + padding: 0; +} + +#github-stars iframe { + margin: 0; + padding: 0; +} + +.internal em { + text-decoration: none !important; + font-style: none !important; +} + +/* + * small_flask.css_t + * ~~~~~~~~~~~~~~~~~ + * + * :copyright: Copyright 2010 by Armin Ronacher. + * :license: Flask Design License, see LICENSE for details. + */ + +@media only screen and (max-device-width: 480px) +{ + +body { + margin: 0; + padding: 20px 30px; +} + +div.documentwrapper { + float: none; + background: white; +} + +div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: white; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, +div.sphinxsidebar h3 a { + color: white; +} + +div.sphinxsidebar a { + color: #aaa; +} + +div.sphinxsidebar p.logo { + display: none; +} + +div.document { + width: 100%; + margin: 0; +} + +div.related { + display: block; + margin: 0; + padding: 10px 0 20px 0; +} + +div.related ul, +div.related ul li { + margin: 0; + padding: 0; +} + +div.footer { + display: none; +} + +div.bodywrapper { + margin: 0; +} + +div.body { + min-height: 0; + padding: 0; +} + +} /* end @media */ + +/* + * yard customizations + */ + +table { border-collapse: collapse; } +table th, table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } +table tr:nth-child(odd) { background: #eee; } +table tr:nth-child(even) { background: #fff; } +table th { background: #fff; } + +#search-results .search li { display: block; } + +div.body ul { + list-style: none; padding: 0; margin: 0; font-size: 1.1em; clear: both; + margin-bottom: 12px; +} +div.body ul li { + border-bottom: 1px solid #ccc; padding-bottom: 5px; + margin-bottom: 7px; width: 47%; float: left; margin-right: 7px; +} +div.body ul li em { font-size: 0.9em; } + +div.body .clear { clear: both; } + +div.body p.note { background: #f5f5f5; padding: 14px; } +div.body p.note:before { content: "Note: "; font-weight: bold; } + +#toc.one-file { margin-bottom: 2em; border-bottom: 1px #ccc solid; } +div.body #toc.one-file ul, +div.body ul.search { + padding-left: 12px; + margin-left: 12px; + margin-top: 0; list-style: disc; font-size: 1em; +} +div.body #toc.one-file ul li, +div.body ul.search li { + padding-bottom: 0; border: 0; float: none; width: inherit; + margin-bottom: 4px; +} + +@media print { + #menu, + #footer-links { + display: none; + } +} diff --git a/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/file.png b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/file.png new file mode 100644 index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$HyOL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1 zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@PmdKI;Vst0PQB6!2kdN literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/logo.png b/node_modules/aws-sdk/doc-src/templates/flasky_sphinx_guide/fulldoc/html/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..684f30f92deaa5b1e363a31a0d8de40704ab33e3 GIT binary patch literal 4031 zcmV;w4?ysVP)002J-0ssI2=$%yT0004WX+uL$Nkc;* zP;zf(X>4Tx02mpqkugidKorOSiIplA+M!4XhXX|%5{Y$ai&NTy6&y-cP`C6NTcK%> zBt`uWE;@*lpneBk92~_#2f;za&ma`KNQv)~p;K}3;O_n2yFc&ly$7hiB}6+0!0GsI zZN12L_x4%*11e^bKoWV2d%~<%H%T&P4c?*1t2bTd8Y3DPo@v+~2b3ui@P@}7VwpqZ z!u5$SiS;92NPZ$tyYxZgPsz=Qza`g0R%Iz^ce_>s)C_T|9`TaoX2f~Pyk#{=Qz6!( zKM(=al`_j21>Fq2e>|LakLnDU>{i0=>}-)u(VjyEWiaGmpa31FZy!^=K&dNE+{0$e zXC`&lW~HtpdcN&yY@@@MHI_A245^bdlNRXL!dWP@ucKJ^8Ys*I6Q`qC{Q|gu05Z>` z*uoW%Tm$Z2gymXMK01{_>@VLtSj~odB~b(>zk;B@2*l5U;aL#;+yue!mfokCJ+^-V za13JN-*nJb000gKNklA7%6~~{esOct-#3Bna5#gg!ZA6@IY9k0p6bFdu zqK#1!Dgh26p_@h&lC~;Af>5cABdEJ-DiU|oIN+pRl%T{eNEC!^R!v2mN)(8Q%@QT) zrtK#EJ^%5^nfu<1XWko6#^V`1J)e8-x#ym9&pr3!-22>i_3G8A^=sZ1SaID{`{Lbb z=5+MwiCBPJ`lG^w(T(?3Cro}0)z!BosoU!6!T-A)&5TDE{v2IA9sT#qu)$W|5UqPK zy174EdtdbR)nTsE`8lNXZCY%-41DFY=+oDu*>|GZ@rB!RZEtMp_1}-$Z@xyHpTjj? z%LuBMfz_n{`7-+Ao#>O-<9DhD-*{hi>$a%SThfE`b67^kja99SfscPPo@Mb%#$Nj| zR`Yx|HwQB;V^kjd$=8{ow|^Yt@^diG%M7TCfq&ojRjV?~V&-^BmFAzAKHh4nTaSzRJo)@qyu5sy@~naDFg zAIahjSdnVp-?+gF6#@A<6tQdmL!ehy2s5gS?RIRodvERml>BRA4gmd$x^{>u{iIV|O-Y)skPu8!Q+fY&WfjE??w ze0*|p^50jksNuSMdOABhpBNY@tXt=s@}9fz_Q}7!|2|2I|LNpO;R}VrkN51cQf0C{ zA2F#=28eH6zdk6Qn*8L#1&_aS`SRG<7`0rPQ?tFj{r=wG&6_v3uMY1VdNo(BTsi*s z+wiGGm$s{i=WA??>lV}J&ON<*_w3BfyjVqlSGBi4zkh%KBaaw1XjxkD>0P_V$Ht5R zfKtasMzHjwJ9eC(p7vS5zaAX)48c?@14RNcf+{TO4Lmt9v2X9*q^4^Ng@c2GJ$K$| zrIP&N^YE4}mFVIO?D<`%>lU;uHZZUC5_$NKBO|7N(6TuC)a0Zm77QK(pFA;l1*|w5 z^S^oOl(~2Y8Q>R)QC!2dlo=T7{&2^RYZ(d1>qut6zm%GRE)*;g$zr!UwePD+0a7p1 zBxEW=Wa9AhfdhecJ32cNx`=ZW{b6`Gz*sWXy5xdSwJurI$T(>n^2=bX0syNB!^q4i z732m<2p|iPmMo=apbPYMiDa2vWdU5r%gspjyTgY&Z@-;F`<{Ewn}@l%ET@R3oSB(P zj((J)$1vdqS^qqLUJNtKz%(C-G(0>UbXKDoK6=z=ArhKW9HZK(3jt(%o_Qu<>yzbm z5oHMv_H60}YoTGa(Hyca80KBW1NheQc)@=;b?Vsh;Scr*FO=Ot4c#+kU7mTXSeHkSD_<^a+@Bk#O zXFvwAspA>;^P693meNJ^4P;;hQb(3#%s{L}rl+S-cy@Nyt5*i@nV;ukZiRxUWE0|( zrQrNBU|lnkYGGAueH4v+)pW=p={qIFsRm{@|$*;DkFU|Yt^b% zNu)5{-QA_KlK9LrP|#Zl&VH^T>D@P3Z-A+aI4G-RV;LB)P2H-dioQt5JTfq%{_?;9 zFBt29@(U$Tyclp}891;m6B0A=ce=Y7Y|HN&YuGe-WC*5SkxiQoq;mwSz(bpG7P=?s+XS{u`V-ug;g&S*@`ItWr_S8=9D8O>y-?qE}yk{aAp}; z5B_#&$O{(7lplD&V+6CJ_Q+sk79;~=U$8=WMYQ_1Xyeb~CwW=I^C)xOB0q<@ipnf6 zX+AFtFf*mCOM|RD$!szpOfWbj1KTjg7nz3rF-fp&#_3HLfM5&=h%>0>0v+6v;p6Mx z(ddaw(U!4j!~9MTfFww=AkbwRE^K`G^Z2t}9srX3s^X9kHrQJDwho+wqCU8o;FKMa zO@_xGd#ucImqj%(se3nVA|8ii4BCNTo|uo28z2QB%Rj=Gn1lTV8r`a)&QcdP{{E|o zC-@H=sT|6-JU!iSFfb}>D>ko0o;_YXh#0fw&98qTQ8pR=arSJ$CpAg5_28jHWD%P9 zsf&c5srKkWKZY!oPgTeg1`c>sa$$o{w*Pf3emIFr{)df#VOo;m$Qu%8`cdhKJh?dW z&L^KtTn0uMjkXsqx*Y*Z#1izfC($OD=?~vrCBm0&hp!bHd7nV1Wx7#S?*3& zl2(|y|9=eD%r<<{{Vf)cIK=VUNYr6-TsIleh`C0KI|cyuR<&JNRAXS@1FE|6;S09l zxhp|+=%Z?Bw@s?5=`&r}sH%oM#E)*@&K@+md(OkNR%Hp6eXp;NcdZzf=abdI<+-+U z8>R&+SY$Pftj!?^i+?s_eqphwdNscXvx?yqZ&4euTIO}LE`l|Xfj4g0z{8G0?S)}T zGMifS3B$E#VYv3qb#Ufd9smw=j8XvWZ7vTJBV^8lRjFx@f&m|sL3}&`49Cu#v5JU3 zzWmZl&?6OMPz4h|0M#L_kpXB~Kv#oCl**+nOu(pApoMbbCIV{lofTO1Di_(3%Z>&z zFo8+Mr=+<)Yhb@*EhP-c!w}G{M1P0?6IkFr8@43Q2U2DAW|zs`E^?uPGe_}B8&iaW z6o-aKeEgkO3?l;Z;V^*sn%S7>BO6?H=eC`-dsY7GCn}%_8+sPc+7aoE{U{3)vJ?-Y zF6+VM-m_^Fxom9}FrgOc)gZi8FHsS4c_SOA=An)Gf6)v44o7_bkp8G-sa){Y{0_YM z;w?AbwD;L(RS1A2&*&R(2($aCr%0ar=%b6Df37TGWdU^Eaffoj?AW#q7>p4ddF?e} zL~rj>e5e8%s#dAXmoBM@VU$#H-biaSk{oHR7S)b|V1Dz;E70>cxbLBdRF?OqyY3=) z;)4&!6(4jlKAy99`do2_#^?bW$b)r}%sRdSc18<^PykLqH^)bDINMDEaL*8=c@i)f zBVcJmS^OsK;B(Gy(I4pf%7M$BiZ3S%x8Ulb4iaGK*Eo!gRP=CPA0eb~bzr-q^{q~4 zKb)F^#@I591A9Kfu@3=DbtXbobO=lZAC1q(1OU9)`T(ca*oa}Lr82WG2uyA~qz?^Y zY^L7c-riXBV&PS!0t46R!bTusYLd7l63e0x$U?D=Cnn^_nt;KO%UghF<$JWpmx77u zEBbBih;0T22Ji;+b<6ThAhV?JF+wtUFgGJJ2G-Fv9mwbfmCxLK}-tAGYI8EjY< z#3AnKX>~+sFf$%+;})0-3|ylN8-a+aNi2$i@fhW*QLrK{C9Bf|$dcOypJ$~qTo6fH z@Sy{?q!tbXsD*KYHl+&H1qb_LY(Z{Dz-UaY;8F)aohB)ZDJuja zF(WlHVSl@;%kM{xp$9blXn;+Q&!SXs^HYFbU%~vE1-wR7ijHiHDUR3(k6u=(+RBmw zvKlyGQ@f;DQPVAqlNe?=`3D<8jD(VMJ6gmyB^DI{ArWnDnOwc+VQh-vVH6i1DETUo zN;RUgz6BNmwLk+y*wPD=9vQTOIB2bFx&$=hPba{N(t=UPv`{YFch-{RA{({CLHh-D zMD$XwimMab*brCe_e_ldvjx=VQae#ZI&=E8FkU=1xY{x*i?`qPvO8oOsy(X_1RF$g zvkkP70eDK7XoqbCwrz!jkX|qkOG1i!q~8aF*LK#Jdo9RSY`}5>yllzbpg0^VI1dhb z-Qp)TDA|o1Mnx7ZIE~*'); + var show = false; + var toc = _toc; + var counter = 0; + var tags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; + for (i in tags) { tags[i] = '#filecontents > ' + tags[i] } + var lastTag = parseInt(tags[0][1]); + $(tags.join(', ')).each(function() { + if (this.id == "filecontents") return; + show = true; + var thisTag = parseInt(this.tagName[1]); + if (this.id.length == 0) { + var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); + if ($('#' + proposedId).length > 0) proposedId += counter++; + this.id = proposedId; + } + if (thisTag > lastTag) { + for (var i = 0; i < thisTag - lastTag; i++) { + var tmp = $('